diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Masterarbeit/thesis | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Master/Masterarbeit/thesis')
103 files changed, 20259 insertions, 0 deletions
diff --git a/Master/Masterarbeit/thesis/Anleitung_Plakattemplate.doc b/Master/Masterarbeit/thesis/Anleitung_Plakattemplate.doc Binary files differnew file mode 100644 index 0000000..f5ff84a --- /dev/null +++ b/Master/Masterarbeit/thesis/Anleitung_Plakattemplate.doc diff --git a/Master/Masterarbeit/thesis/FBI_Richtlinien_Masterarbeit_2007-09-20.pdf b/Master/Masterarbeit/thesis/FBI_Richtlinien_Masterarbeit_2007-09-20.pdf Binary files differnew file mode 100644 index 0000000..6934204 --- /dev/null +++ b/Master/Masterarbeit/thesis/FBI_Richtlinien_Masterarbeit_2007-09-20.pdf diff --git a/Master/Masterarbeit/thesis/cd-label.sla b/Master/Masterarbeit/thesis/cd-label.sla new file mode 100644 index 0000000..5d7fb37 --- /dev/null +++ b/Master/Masterarbeit/thesis/cd-label.sla @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8"?> +<SCRIBUSUTF8NEW Version="1.4.0rc1"> + <DOCUMENT ANZPAGES="1" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779527" BORDERLEFT="0" BORDERRIGHT="0" BORDERTOP="0" BORDERBOTTOM="0" PRESET="-7960954" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" ORIENTATION="0" PAGESIZE="Custom" FIRSTNUM="1" BOOK="0" AUTOSPALTEN="0" ABSTSPALTEN="0" UNITS="0" DFONT="Arial Regular" DSIZE="12" DCOL="1" DGAP="0" TabFill="" TabWidth="36" AUTHOR="Sven Eisenhauer" COMMENTS="Avery/Zweckform L6015 and similar, two labels on DIN A$ The Initial Developer of the Original Code is: Sven Vermeulen (Siboy@openoffice.org) Copyrigt: 2003 by Sven Vermeulen Copyrigt: 2003 by Sun Microsystems, Inc. All Rights Reserved. Lizenz: LGPL " KEYWORDS="" PUBLISHER="" DOCDATE="2011-12-31T14:55:13.40" DOCTYPE="" DOCFORMAT="" DOCIDENT="" DOCSOURCE="" DOCLANGINFO="de-DE" DOCRELATION="" DOCCOVER="" DOCRIGHTS="" DOCCONTRIB="" TITLE="CD Labels Avery L6015" VHOCH="33" VHOCHSC="66" VTIEF="33" VTIEFSC="66" VKAPIT="75" BASEGRID="14.4" BASEO="0" AUTOL="20" UnderlinePos="-1" UnderlineWidth="-1" StrikeThruPos="-1" StrikeThruWidth="-1" GROUPC="2" HCMS="0" DPSo="0" DPSFo="0" DPuse="0" DPgam="0" DPbla="1" DPMo="KODAK DC Series Digital Camera" DPPr="Fogra27L CMYK Coated Press" DPIn="KODAK DC Series Digital Camera" DPInCMYK="Fogra27L CMYK Coated Press" DPIn2="KODAK DC Series Digital Camera" DPIn3="Fogra27L CMYK Coated Press" DISc="1" DIIm="0" ALAYER="0" LANGUAGE="German" MINWORDLEN="3" HYCOUNT="2" AUTOMATIC="1" AUTOCHECK="0" GUIDELOCK="0" SnapToGuides="0" SnapToGrid="0" MINGRID="20" MAJGRID="100" SHOWGRID="0" SHOWGUIDES="1" showcolborders="1" SHOWFRAME="1" SHOWLAYERM="0" SHOWMARGIN="1" SHOWBASE="0" SHOWPICT="1" SHOWControl="0" SHOWLINK="0" rulerMode="1" showrulers="1" showBleed="1" rulerXoffset="0" rulerYoffset="0" GuideRad="10" GRAB="4" POLYC="4" POLYF="0.5" POLYR="0" POLYCUR="0" POLYFD="0" POLYS="0" AutoSave="1" AutoSaveTime="600000" ScratchBottom="20" ScratchLeft="100" ScratchRight="100" ScratchTop="20" GapHorizontal="0" GapVertical="40" StartArrow="0" EndArrow="0" PEN="Black" BRUSH="Black" PENLINE="Black" PENTEXT="Black" StrokeText="Black" TextBackGround="None" TextLineColor="None" TextBackGroundShade="100" TextLineShade="100" TextPenShade="100" TextStrokeShade="100" STIL="1" STILLINE="1" WIDTH="0" WIDTHLINE="1" PENSHADE="100" LINESHADE="100" BRUSHSHADE="100" MAGMIN="10" MAGMAX="3200" MAGSTEP="200" CPICT="None" PICTSHADE="100" PICTSCX="1" PICTSCY="1" PSCALE="1" PASPECT="1" EmbeddedPath="0" HalfRes="1" dispX="10" dispY="10" constrain="15" MINORC="#00ff00" MAJORC="#00ff00" GuideC="#000080" BaseC="#c0c0c0" GuideZ="10" BACKG="1" PAGEC="#ffffff" MARGC="#0000ff" RANDF="0" currentProfile="PostScript"> + <CheckProfile Name="PDF 1.3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PDF 1.4" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PDF 1.5" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PDF/X-3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PostScript" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <COLOR NAME="Black" CMYK="#000000ff" Spot="0" Register="0"/> + <COLOR NAME="FromOODraw#000000" RGB="#000000" Spot="0" Register="0"/> + <COLOR NAME="FromOODraw#808080" RGB="#808080" Spot="0" Register="0"/> + <COLOR NAME="FromOODraw#f0f0f0" RGB="#f0f0f0" Spot="0" Register="0"/> + <COLOR NAME="Registration" CMYK="#ffffffff" Spot="0" Register="1"/> + <COLOR NAME="White" CMYK="#00000000" Spot="0" Register="0"/> + <HYPHEN/> + <STYLE NAME="Default Paragraph Style" DefaultStyle="1" ALIGN="0" LINESPMode="0" LINESP="15" INDENT="0" RMARGIN="0" FIRST="0" VOR="0" NACH="0" DROP="0" DROPLIN="2" DROPDIST="0"/> + <CHARSTYLE CNAME="Default Character Style" DefaultStyle="1" FONT="Arial Regular" FONTSIZE="12" FEATURES="inherit" FCOLOR="Black" FSHADE="100" SCOLOR="Black" SSHADE="100" TXTSHX="5" TXTSHY="-5" TXTOUT="1" TXTULP="-0.1" TXTULW="-0.1" TXTSTP="-0.1" TXTSTW="-0.1" SCALEH="100" SCALEV="100" BASEO="0" KERN="0" LANGUAGE="German"/> + <LAYERS NUMMER="0" LEVEL="0" NAME="Hintergrund" SICHTBAR="1" DRUCKEN="1" EDIT="1" FLOW="1" TRANS="1" BLEND="0" OUTL="0" LAYERC="#000000"/> + <Printer firstUse="0" toFile="0" useAltPrintCommand="0" outputSeparations="0" useSpotColors="1" useColor="1" mirrorH="0" mirrorV="0" useICC="0" doGCR="0" doClip="0" setDevParam="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" includePDFMarks="1" PSLevel="3" PDLanguage="3" markOffset="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" printer="HP Officejet J6400 series" filename="" separationName="Alle" printerCommand=""> + <Separation Name="Cyan"/> + <Separation Name="Magenta"/> + <Separation Name="Gelb"/> + <Separation Name="Schwarz"/> + </Printer> + <PDF firstUse="1" Thumbnails="0" Articles="0" Bookmarks="0" Compress="1" CMethod="0" Quality="0" MirrorH="0" MirrorV="0" Clip="0" RotateDeg="0" PresentMode="0" RecalcPic="0" Grayscale="0" RGBMode="1" UseProfiles="0" UseProfiles2="0" Binding="0" PicRes="300" Resolution="300" Version="14" Intent="1" Intent2="0" SolidP="KODAK DC Series Digital Camera" ImageP="KODAK DC Series Digital Camera" PrintP="Fogra27L CMYK Coated Press" InfoString="" BTop="0" BLeft="0" BRight="0" BBottom="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" docInfoMarks="0" markOffset="0" ImagePr="0" PassOwner="" PassUser="" Permissions="-4" Encrypt="0" UseLayers="0" UseLpi="0" UseSpotColors="1" doMultiFile="0" displayBookmarks="0" displayFullscreen="0" displayLayers="0" displayThumbs="0" hideMenuBar="0" hideToolBar="0" fitWindow="0" PageLayout="0" openAction=""> + <LPI Color="Black" Frequency="133" Angle="45" SpotFunction="3"/> + <LPI Color="Cyan" Frequency="133" Angle="105" SpotFunction="3"/> + <LPI Color="Magenta" Frequency="133" Angle="75" SpotFunction="3"/> + <LPI Color="Yellow" Frequency="133" Angle="90" SpotFunction="3"/> + </PDF> + <DocItemAttributes/> + <TablesOfContents/> + <PageSets> + <Set Name="Single Page" FirstPage="0" Rows="1" Columns="1"/> + <Set Name="Double Sided" FirstPage="1" Rows="1" Columns="2"> + <PageNames Name="Left Page"/> + <PageNames Name="Right Page"/> + </Set> + <Set Name="3-Fold" FirstPage="0" Rows="1" Columns="3"> + <PageNames Name="Left Page"/> + <PageNames Name="Middle"/> + <PageNames Name="Right Page"/> + </Set> + <Set Name="4-Fold" FirstPage="0" Rows="1" Columns="4"> + <PageNames Name="Left Page"/> + <PageNames Name="Middle Left"/> + <PageNames Name="Middle Right"/> + <PageNames Name="Right Page"/> + </Set> + </PageSets> + <Sections> + <Section Number="0" Name="0" From="0" To="0" Type="Type_1_2_3" Start="1" Reversed="0" Active="1"/> + </Sections> + <MASTERPAGE PAGEXPOS="100" PAGEYPOS="20" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779527" BORDERLEFT="0" BORDERRIGHT="0" BORDERTOP="0" BORDERBOTTOM="0" NUM="0" NAM="Normal" MNAM="" Size="Custom" Orientation="0" LEFT="0" PRESET="-7960954" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/> + <PAGE PAGEXPOS="100" PAGEYPOS="20" PAGEWIDTH="595.275590551181" PAGEHEIGHT="841.889763779527" BORDERLEFT="0" BORDERRIGHT="0" BORDERTOP="0" BORDERBOTTOM="0" NUM="0" NAM="" MNAM="" Size="Custom" Orientation="0" LEFT="0" PRESET="-7960954" VerticalGuides="" HorizontalGuides="183.25 " AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/> + <PAGEOBJECT OwnPage="0" PTYPE="6" XPOS="230.393700787402" YPOS="79.244094488189" WIDTH="334.488188976378" HEIGHT="722.834645669291" RADRECT="0" FRTYPE="0" CLIPEDIT="0" PWIDTH="0" PCOLOR="None" PCOLOR2="None" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="Gruppe1" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="1" groupsLastItem="4" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 334.488 0 334.488 0 334.488 0 334.488 0 334.488 722.835 334.488 722.835 334.488 722.835 334.488 722.835 0 722.835 0 722.835 0 722.835 0 722.835 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 0 0 0 " NUMGROUP="1" GROUPS="1 " startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="6" XPOS="339.527559055118" YPOS="576.724409448819" WIDTH="116.220472440945" HEIGHT="116.220472440945" RADRECT="0" FRTYPE="1" CLIPEDIT="0" PWIDTH="1" PCOLOR="FromOODraw#f0f0f0" PCOLOR2="FromOODraw#000000" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="116.22 58.1102 116.22 90.2048 58.1102 116.22 90.2048 116.22 58.1102 116.22 26.0168 116.22 0 58.1102 0 90.2048 0 58.1102 0 26.0168 58.1102 0 26.0168 0 58.1102 0 90.2048 0 116.22 58.1102 116.22 26.0168 " NUMCO="16" COCOOR="116.22 58.1102 116.22 90.2048 58.1102 116.22 90.2048 116.22 58.1102 116.22 26.0168 116.22 0 58.1102 0 90.2048 0 58.1102 0 26.0168 58.1102 0 26.0168 0 58.1102 0 90.2048 0 116.22 58.1102 116.22 26.0168 " NUMGROUP="1" GROUPS="1 " startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="6" XPOS="339.527559055118" YPOS="188.377952755906" WIDTH="116.220472440945" HEIGHT="116.220472440945" RADRECT="0" FRTYPE="1" CLIPEDIT="0" PWIDTH="2.83464566929134" PCOLOR="FromOODraw#f0f0f0" PCOLOR2="FromOODraw#808080" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="116.22 58.1102 116.22 90.2048 58.1102 116.22 90.2048 116.22 58.1102 116.22 26.0168 116.22 0 58.1102 0 90.2048 0 58.1102 0 26.0168 58.1102 0 26.0168 0 58.1102 0 90.2048 0 116.22 58.1102 116.22 26.0168 " NUMCO="16" COCOOR="116.22 58.1102 116.22 90.2048 58.1102 116.22 90.2048 116.22 58.1102 116.22 26.0168 116.22 0 58.1102 0 90.2048 0 58.1102 0 26.0168 58.1102 0 26.0168 0 58.1102 0 90.2048 0 116.22 58.1102 116.22 26.0168 " NUMGROUP="1" GROUPS="1 " startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="6" XPOS="231.811023622047" YPOS="80.6614173228347" WIDTH="331.653543307087" HEIGHT="331.653543307087" RADRECT="0" FRTYPE="1" CLIPEDIT="0" PWIDTH="2.83464566929134" PCOLOR="None" PCOLOR2="FromOODraw#808080" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="331.654 165.827 331.654 257.414 165.827 331.654 257.414 331.654 165.827 331.654 74.2432 331.654 0 165.827 0 257.414 0 165.827 0 74.2432 165.827 0 74.2432 0 165.827 0 257.414 0 331.654 165.827 331.654 74.2432 " NUMCO="16" COCOOR="331.654 165.827 331.654 257.414 165.827 331.654 257.414 331.654 165.827 331.654 74.2432 331.654 0 165.827 0 257.414 0 165.827 0 74.2432 165.827 0 74.2432 0 165.827 0 257.414 0 331.654 165.827 331.654 74.2432 " NUMGROUP="1" GROUPS="1 " startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="6" XPOS="231.811023622047" YPOS="469.007874015748" WIDTH="331.653543307087" HEIGHT="331.653543307087" RADRECT="0" FRTYPE="1" CLIPEDIT="0" PWIDTH="2.83464566929134" PCOLOR="None" PCOLOR2="FromOODraw#808080" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="331.654 165.827 331.654 257.414 165.827 331.654 257.414 331.654 165.827 331.654 74.2432 331.654 0 165.827 0 257.414 0 165.827 0 74.2432 165.827 0 74.2432 0 165.827 0 257.414 0 331.654 165.827 331.654 74.2432 " NUMCO="16" COCOOR="331.654 165.827 331.654 257.414 165.827 331.654 257.414 331.654 165.827 331.654 74.2432 331.654 0 165.827 0 257.414 0 165.827 0 74.2432 165.827 0 74.2432 0 165.827 0 257.414 0 331.654 165.827 331.654 74.2432 " NUMGROUP="1" GROUPS="1 " startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="2" XPOS="313" YPOS="107.75" WIDTH="167" HEIGHT="78.5" RADRECT="0" FRTYPE="0" CLIPEDIT="0" PWIDTH="0" PCOLOR="None" PCOLOR2="None" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="0.0436111111111111" LOCALSCY="0.0436111111111111" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="0" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="img/logo_hda_fbi.png" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="0" EMBEDDED="0" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 167 0 167 0 167 0 167 0 167 78.5 167 78.5 167 78.5 167 78.5 0 78.5 0 78.5 0 78.5 0 78.5 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 167 0 167 0 167 0 167 0 167 78.5 167 78.5 167 78.5 167 78.5 0 78.5 0 78.5 0 78.5 0 78.5 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="244.5" YPOS="204" WIDTH="89.25" HEIGHT="66.75" RADRECT="0" FRTYPE="0" CLIPEDIT="0" PWIDTH="0" PCOLOR="None" PCOLOR2="None" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 89.25 0 89.25 0 89.25 0 89.25 0 89.25 66.75 89.25 66.75 89.25 66.75 89.25 66.75 0 66.75 0 66.75 0 66.75 0 66.75 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 89.25 0 89.25 0 89.25 0 89.25 0 89.25 66.75 89.25 66.75 89.25 66.75 89.25 66.75 0 66.75 0 66.75 0 66.75 0 66.75 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <ITEXT CH="Masterarbeit"/> + <para/> + <para/> + <ITEXT CH="Sven Eisenhauer"/> + <para/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="457.5" YPOS="203" WIDTH="105" HEIGHT="89.75" RADRECT="0" FRTYPE="0" CLIPEDIT="0" PWIDTH="0" PCOLOR="None" PCOLOR2="None" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 105 0 105 0 105 0 105 0 105 89.75 105 89.75 105 89.75 105 89.75 0 89.75 0 89.75 0 89.75 0 89.75 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 105 0 105 0 105 0 105 0 105 89.75 105 89.75 105 89.75 105 89.75 0 89.75 0 89.75 0 89.75 0 89.75 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <ITEXT CH="CD-ROM"/> + <para/> + <ITEXT CH="\src"/> + <tab FONTSIZE="10"/> + <ITEXT FONTSIZE="10" CH="Quellcode"/> + <para/> + <ITEXT CH="\lit"/> + <tab FONTSIZE="10"/> + <ITEXT FONTSIZE="10" CH="Literatur"/> + <para/> + <ITEXT CH="\doc"/> + <tab FONTSIZE="10"/> + <ITEXT FONTSIZE="10" CH="Dokumentation"/> + <para/> + <ITEXT FONTSIZE="12" CH="\thesis"/> + <tab FONTSIZE="10"/> + <ITEXT FONTSIZE="10" CH="Masterarbeit"/> + <trail/> + <PageItemAttributes/> + </PAGEOBJECT> + <PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="295.75" YPOS="306.5" WIDTH="207.5" HEIGHT="64.5" RADRECT="0" FRTYPE="0" CLIPEDIT="0" PWIDTH="0" PCOLOR="None" PCOLOR2="None" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 207.5 0 207.5 0 207.5 0 207.5 0 207.5 64.5 207.5 64.5 207.5 64.5 207.5 64.5 0 64.5 0 64.5 0 64.5 0 64.5 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 207.5 0 207.5 0 207.5 0 207.5 0 207.5 64.5 207.5 64.5 207.5 64.5 207.5 64.5 0 64.5 0 64.5 0 64.5 0 64.5 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <ITEXT CH="Konzeptionierung und prototypische Umsetzung einer Echtzeitbasierten"/> + <para ALIGN="1"/> + <ITEXT CH="Restbussimulation mittels Mikrocontrollerunterstützung"/> + <trail ALIGN="1"/> + <PageItemAttributes/> + </PAGEOBJECT> + </DOCUMENT> +</SCRIBUSUTF8NEW> diff --git a/Master/Masterarbeit/thesis/img/architecture.png b/Master/Masterarbeit/thesis/img/architecture.png Binary files differnew file mode 100644 index 0000000..958d450 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/architecture.png diff --git a/Master/Masterarbeit/thesis/img/at32uc3c-ek.jpg b/Master/Masterarbeit/thesis/img/at32uc3c-ek.jpg Binary files differnew file mode 100644 index 0000000..5e475ad --- /dev/null +++ b/Master/Masterarbeit/thesis/img/at32uc3c-ek.jpg diff --git a/Master/Masterarbeit/thesis/img/bitstuffing.eps b/Master/Masterarbeit/thesis/img/bitstuffing.eps new file mode 100644 index 0000000..8320d33 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/bitstuffing.eps @@ -0,0 +1,1069 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.10.2 (http://cairographics.org) +%%CreationDate: Fri Dec 23 11:22:12 2011 +%%Pages: 1 +%%BoundingBox: 0 -1 674 325 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +11 dict begin +/FontType 42 def +/FontName /ArialMT def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 1 /uni0044 put +Encoding 2 /uni004C put +Encoding 3 /uni0043 put +Encoding 4 /uni0031 put +Encoding 5 /uni0030 put +Encoding 6 /uni0041 put +Encoding 7 /uni0054 put +Encoding 8 /uni0042 put +Encoding 9 /uni0059 put +Encoding 10 /uni0045 put +Encoding 11 /uni0020 put +Encoding 12 /uni0032 put +Encoding 13 /uni0076 put +Encoding 14 /uni006F put +Encoding 15 /uni0072 put +Encoding 16 /uni0064 put +Encoding 17 /uni0065 put +Encoding 18 /uni006D put +Encoding 19 /uni0069 put +Encoding 20 /uni0074 put +Encoding 21 /uni0073 put +Encoding 22 /uni0070 put +Encoding 23 /uni0066 put +Encoding 24 /uni006E put +Encoding 25 /uni0061 put +Encoding 26 /uni0063 put +Encoding 27 /uni0068 put +Encoding 28 /uni0053 put +Encoding 29 /uni0062 put +/CharStrings 30 dict dup begin +/.notdef 0 def +/uni0044 1 def +/uni004C 2 def +/uni0043 3 def +/uni0031 4 def +/uni0030 5 def +/uni0041 6 def +/uni0054 7 def +/uni0042 8 def +/uni0059 9 def +/uni0045 10 def +/uni0020 11 def +/uni0032 12 def +/uni0076 13 def +/uni006F 14 def +/uni0072 15 def +/uni0064 16 def +/uni0065 17 def +/uni006D 18 def +/uni0069 19 def +/uni0074 20 def +/uni0073 21 def +/uni0070 22 def +/uni0066 23 def +/uni006E 24 def +/uni0061 25 def +/uni0063 26 def +/uni0068 27 def +/uni0053 28 def +/uni0062 29 def +end readonly def +/sfnts [ +<00010000000a008000030020636d61700111f1a400002ef40000007a63767420962ad2760000 +2f70000006306670676dcc79599a000035a00000066e676c79660d3d6ec1000000ac00002e48 +68656164ce98269200003c10000000366868656112330c9300003c4800000024686d7478844a +0b7f00003c6c000000786c6f63610002638800003ce40000007c6d61787004db0ca800003d60 +000000207072657052fec4e900003d8000000aff000201000000050005000003000700002111 +21112521112101000400fc2003c0fc400500fb002004c00000000002009e0000055a05ba000f +001d00e5402f201f0143081c1d1e02010211101e0f000817262009011f400d0d025509201010 +0255090a0f0f025509180d0d025509b8fff440150c0c0655091a1f1d10200120000100201010 +025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffab40c0c025500b8fff7b40c0c0655 +00b8fff8400a0d0d0655005d1e3b5c182b10f62b2b2b2b2b2b5d3cfd3c10f62b2b2b2b2b5ded +003f3cfd3c3f3cfd3c313043794036031b0708060805080408040619181a1802060b0a0c0a0d +0a030615161416131603061b03172101120e17210118081c2101160a1121002b2b012b2b2a2a +2a2a81015d3311213217161716121514020e022325213236373636353426272623219e01f9ab +5a7e5974734e7a91cd85feb1013991a531454d976c4eadfecc05ba151d4c62fecfc4a7fefea9 +6132ad363145e9a6e6f72a1e000100960000042a05ba0005006d400c010204031e0500082004 +0104b802a7400f070203200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d02 +5500b8fffab40c0c025500b8fff6b40c0c065500b8fff8400a0d0d0655005d063b5c182b10f6 +2b2b2b2b2b2b5d3cfd3c10e65d003f3cfd3c3f313033113311211596c202d205bafaf3ad0000 +00010066ffe7057605d3001d00d3b563026a1d0201b8ffe8b40b0b065500b8ffe8405f0b0b06 +552000320d63007000741d8000841d90009a05ab03a50db903b40dc70dd000e41df31d110e12 +1d111d1d032a0628112a1c201f470d56145715561968056b1d7b128b129a03990e9a1ca801a4 +02a811d50e130014001a1014101a0402b8ffdeb2283901b8ffc0402d2839100f0001041b131e +0c031b1e040910260f4a0026200101011a1f1726200801080c0b0b065508191e635c182b4e10 +f42b5d4ded4e10f65d4dedf4ed003fed3fed1117393130012b2b5d5d71005d2b2b0172011706 +04232224023534122433320417072626232206021514121633323604b4c23dfec3e5edfed79b +af0143c2dc012c3bbf33c293a9e35c6de686a3e2020231effbc1016ed2e50155b1e0cb2da092 +a2feef91bbfee98abc000000000100df000002fb05c0000a00af402003400d11346b047f028f +02990804ac04010900060502030905010c0201ca0a00b8ffc0400a21233430000120000100b8 +ffe0b41010025500b8ffea40110f0f0255001c0c0c0255000e0d0d025500b8fff040190f0f06 +5500100c0c065500100d0d0655001a0c05400d0f3405b8ffc0400e2123343005012005400502 +05190bba013c018500182b4e10e45d712b2b10f62b2b2b2b2b2b2b5d712b3c4dfd3c003f3f17 +390111393130015d005d2b212311060607353636373302fbb441d35497e22f74047b3e7c1fae +47ca5f0000020055ffe7041105c00010001d0155b10202435458400a1a1e0405141e0d0d1709 +b8ffe8b40f0f025509b8ffe840190d0d02550911000c0f0f025500160c0c0255000c0d0d0255 +002f2b2b2bcd2f2b2bcd003fed3fed31301bb10602435458400a1a1e0405141e0d0d1709b8ff +f4b40f0f065509b8ffe6b40d0d065509b8ffee40190b0b0655091100100d0d065500100c0c06 +5500100b0b0655002f2b2b2bcd2f2b2b2bcd003fed3fed31301bb4062019101cb8fff0b20220 +0bbeffe00016ffe00012ffe0000fffe0406204068702880b880fc90e0509070b180245134c15 +4a19431b54135c155c19521b6b076b0b63136c156b19601b79027706760b7a0f870698079610 +c918da02d606d60bdb0f1a1a1e0405141e0d0d17730940212334300901000910090209901f11 +7300b8ffc0400e212334200040000200901ec78b182b10f65d2bed10f65d712bed003fed3fed +3130015d71005d00383838383801383838595913101236333216161215100206232227261310 +1633323611102623220706556bd3a076b274426ad3a1d47991b9a97c7ca9a97e7c4a5d02d301 +04013dac5fb3feffdafefefec3ad98b7019dfe97eff00168016aee6986000002fffd00000559 +05ba0007000e0167b6010e0f10025502b8fff2b40f10025502b8fff8b40d0d065502b8fff440 +590c0c0655090c0c0c0655050c0c0c06552f10301067086809601088039010c905c606c010f0 +100b0805590156025010680bb010f30cf30df30e09040c040d040e030b0a090504040c0d0e08 +0607070c09050408060c07010000b8fff8400f0c0c02550020070c1407070c020303b8fff840 +150c0c02550320040c1404040c091e0505081e060306b80270400900080ce94002010202ba01 +0b0001010b40120c2000650703525004cf04df040390040104b80101400b500cc007df0c0390 +0c010cb8010140100f07cf07027f0780070207930fd6d7182b10f45d7119f45d71f45d7118ed +10ed1a1910eded00183f3c1aed3fe43c10ed3c10ed87052e2b2b7d10c4872e182b2b7d10c401 +111239391139398710c4c40ec4c4870510c4c40ec4c43130014bb00b534bb01e515a58b4040f +030807bafff00000fff838383838590172715d2b2b2b2b2b2b23013301230321031321032627 +0607030233d10258ddabfd9ba1d901f19946221c3305bafa4601bcfe44025a0196b9778d8b00 +000000010030000004ba05ba00070089400d05021e04030200080706050409b80273b3200401 +04b80101b7062001022f030103b80101b5010120000100b8ffe8400b1010025500080f0f0255 +00b8fff2b40c0c025500b8ffe2b40d0d025500b8fffcb40c0c065500b8fffeb40d0d065500b8 +0273b308b699182b10f62b2b2b2b2b2b5d3c10f45d3c10fde45de6103c103c003f3f3cfd3c31 +3021112135211521110213fe1d048afe1b050dadadfaf300000000030096000004e905ba0011 +001d002a0113b90004fff440470b0b065504044623562366237309840906691a75057009730b +8305830b062716090318272a1e161d090913121e2a2a2929001c1d1e0201021f1e1e11000818 +26060c1010025506b8ffe640330f0f025506120d0d025506060c0c025506080b0b0655060c0c +0c065506140d0d0655065425260c1c101002550c0a0d0d02550cb8fff440150b0b06550c1a2c +1d1e200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffab40c0c +025500b8fffab40c0c065500b8fff0400a0d0d0655005d2b3b5c182b10f62b2b2b2b2b2b5d3c +fd3c4e10f62b2b2b4dedf42b2b2b2b2b2b2bed003f3cfd3c3f3cfd3c12392f3c10fd3c392f11 +39111239011217393130015d005d2b33112132161615140607161615140e0223012132373636 +353426262321112132373e02353426262321960226a8cb736667858f5780c18cfe93013d8138 +4a4b46829efedb016d5e26435a3a54958cfead05ba59b9655ea63327bc8067b1603103521116 +664d496f29fba0070c386b4652793100000100060000054605ba000c016ab608093a03043b09 +b8ffe7b312173408b8ffe7400e1217340419121734031912173409b8ffd8b318213408b8ffd8 +403b182134042818213412260429082a0a2f0e0468016806680bde0604050403030608070906 +06090603090a0c10025509200a0b140a0a0b0603060903b8fff640160c100255032002011402 +0201060c0b0601030200010bb8021940090a0a0903020200080eb8021840090c0952400a800a +020ab801b5400d0b0b0c200003524f028f020202b801b54009010100141010025500b8fff640 +0b0f0f0255000c0d0d025500b8ffe2b40c0c025500b80218b60d0ec22160a8182b2bf62b2b2b +2b3c10f45ded10fd3c10f45ded10e6003f3f3c3c3c10f43c11121739011239872e2b2b087d10 +c405872e182b2b087d10c4870ec4c487100ec4c44bb017534bb01c515a58b4080c090c04baff +f40003fff40138383838593130005d015d435c584009092219390822193904b8ffdeb119392b +2b2b592b2b2b2b2b2b2b2b2b21110133011617363701330111023bfdcbec01215045425e011c +e2fdb7026d034dfe467c7c739001affcb3fd93000000000100a2000004e805ba000b00954015 +06051e080807070003041e0201020a091e0b000807b8ffc0401d1012340754034a200a200d02 +0a1a0d0409200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffa +b40c0c025500b8fffab40c0c065500b8fff0400a0d0d0655005d0c3b5b182b4e10f42b2b2b2b +2b2b5d3c4dfd3c4e10f65d4df4e42b003f3cfd3c3f3cfd3c12392f3c10fd3c31303311211521 +11211521112115a20424fc9e032bfcd5038405baadfe3facfe0dad000001003c0000040705c0 +001e01c7b10602435458400911100d18131306550db8fff4b4111106550db8ffee4009101006 +550d1e14051eb8ffe84017131306551e1e111106551e1c0e1006551e0c0d0d06551eb802bb40 +0c020a1717201f10110202201f1112392fd4cd1112392fcd002fed2b2b2b2b3fed2b2b2bc432 +31301bb10202435458400911100d0c121202550db8fff440090f1102550d1e14051eb8ffe040 +0b121302551e140f1102551eb802bbb2020a17b8ffe8b40b0b025517b8ffec400e0d0d025517 +17201f10110202201f1112392fd4cd1112392f2b2bcd002fed2b2b3fed2b2bc43231301b4036 +3b053b06bb05bf06bb07c708c91c07490c590c540e6b0c640e7a127a138912bc12e51ae51bf0 +1a0cbf0bb713021b101c101d101e1006befff00007ffe00008fff00009fff0401a1e0a100806 +06ca1c1a141c1c1a081c1a030102081a1c030d1e10b802a4b34f110111b80118b50d1e140500 +1eb802bb400f01020c0a7317d30000014021233401bb0281002000100138400c11b53f025f02 +6f027f020402ba0224001f018fb18b182b10f65df4ed10f62b3c10f4ed003f3cfd3c3fedfd5d +e4111217390111121739870e2e2b0e7d10c401111239313000383838380138383838005d015d +725959251521263736363736363534262322060727363633321615140606070606070407fc37 +021725a39aefa8997b829c01b913f8d1d3f648a7c2a25c1eadad413c63c07ec4e5666b939c8a +13cfd9eaad58aabca488613100000001001a000003e80426000a01eab1020243545840170508 +000a080601060a0005090805010205240f0f0255052f2bddcd10ddcd113333003f3f3f123931 +301bb7350501002211390ab8ffde400d11390916121c340816121c3402b8ffeab3121c3401b8 +ffeab3121c340ab8ffd840091e213400281e21340ab8ffe8400922253400162225340ab8ffda +407e282e340020282e340f0c29002809260a3900350a4800470a560156025908580966016602 +6908690978007701770279087809770a870187028603890788088a099d009809910aac00a20a +bd00b707b10ac900c50ada00d50aec00e30afb00f40a2c0a00050a1800160a2800260a370a4f +00400a09054012163405400b0d34b10602435458400905010008060106000ab8fff4400f0d0d +06550a000c0d0d065500050908b8fff440120d0d0655080501020c0d0d06550205050c0b1112 +392fdd2bcd10dd2bcd10cd2bcd2b002f3f3f11123931301b40370a07080825090a1409090a00 +03020225010014010100050a0a000a09080802020106070a09030001052f0c010c2208404040 +0980090209b8011bb5400580050205b8011b400920024001220bead2182b10f6ed1a19fd5dfd +5d1a18ede45d11123939123939003f3c103c103c3f3c113987052e2b877dc4872e182b877dc4 +593130002b2b01715d2b2b2b2b2b2b2b2b2b2b2b2b005d59210133131617363713330101aefe +6cbee4251f182becb9fe6e0426fd84676f54760288fbda00000000020044ffe80427043e000d +0019016bb615180d0d065513b8ffe8b40d0d06550fb8ffe840730d0d065519180d0d06551207 +0a190c4706480856065908670669080834103a123a16351845104b124b1645185c055c095210 +5d125d1652186d056d0964106d126d1664187701150906050d5b035405540a5b0c6c03650565 +0a6c0c0a171c0407111c0b0b14241b400d0d02551b400b0b025507b8ffea40110f0f02550718 +0d0d025507100b0b025507b8fff0b40b0b065507b8fff0b40d0d065507b8fff0b40f0f065507 +b8fff0b40c0c065507b8ffc04013242534300701000710072007030731df1b011bb8ffc04049 +1e2334301b011b0e24000c0e0f025500120d0d0255000c0c0c0255001c0b0b0255000e0b0b06 +55000e0d0d0655000c1010065500160c0c065500402425341f003f000200311a3437182b10f6 +5d2b2b2b2b2b2b2b2b2bed10712b5df65d5d2b2b2b2b2b2b2b2b2b2bed003fed3fed31300171 +5d0071435c584009530553096205620904015d59002b2b2b2b13103736333200151406062322 +0013141633323635342623220644a489c5db01167beb8bdffeedb9b28786b2b38587b2021301 +278e76fee1fdcdeb82011e010dcccbccd1c5cbca000000010085000002c6043e001100c9403b +2f1301100401230434044304530466047404060911080908090d1311090d000308010b1c0607 +0106000a0928900801082220130113022211250100b8ffc04010333634f0000100002000d000 +e0000400b8fff8b41010025500b8fff840110e0e025500040c0c025500060b0b025500b8fffc +b41010065500b8fff440160f0f065500060c0c065500080d0d0655004e1247c4182b10f62b2b +2b2b2b2b2b2b5d712b3cfde4105df472e4003f3f3fed11393911393901111239390010c9870e +7dc43130005d72015d33113315363633321707262322060706151185a23e693f5b5e3e42423b +5e141e0426a171483aa727473f6072fdd400000000020046ffe803df05ba0011001d015540a4 +0a02040d250d340d440d053514351c5702540a5214531c6702640565096314601cc01fd405d5 +13dd19e513e514ef17eb19e51de01fff1f161f1f2b1a3c163c1a4b1a701f901f072e02240d2e +163a02350d4b02450d4614491c570a560d670de506e716fa01f40e100115030e0b100f001b1c +0b0711000a151c030b1833010025110f251010d011011011401160118011041f400b0b02551f +400d0d025511121010025511b8fff440110f0f025511060e0e025511180d0d025511b8fff240 +0b0b0b0655110e1010065511b8ffeeb40c0c065511b8fff840420d0d065511741224bf07cf07 +df07ff07041f073f074f0703071e0b0b025507180c0c0255071e0d0d0255070c0b0b0655070c +0d0d0655071a0c0c065507191e3450182b4e10f42b2b2b2b2b2b5d714dedfd2b2b2b2b2b2b2b +2b2b2b5d713c10ed10fd3ce4003fed3f3c3fed3f3c11391112393130005d01715d0071213506 +232226263534123633321617113311011416333236353426232206033865c47fd5756ad48360 +962fb3fd20ac7576a5a87b78a1869e8cfba39f01038a5141020efa460212cccac1c6daccc400 +0002004bffe8041e043e0015001d015340171f001c150255035d055d09550b65036b056f0965 +0b0815b8ffe4b40d0d065511b8ffe440520d0d06551d1c0d0d06552712d905fa14f61a043112 +3a19311c41124d1a411c51125c19521c61126d1a611c78067815f602f618100016010f0d1717 +50166016701603161c0f9010a010021010041b1c0a0700ba02aa0001ffc0b41010025501b8ff +c04010101006551001010195131c040b17400db8ffdcb40d0d02550db8ffeeb40d0d06550db8 +ffeab40c0c06550db8ffc04009272a34b00d010d1a1fb8ffc0b32526341fb8ffc040411e2334 +301f011f163310240740242a341f073f074f070307200b0b025507180c0c0255071c0d0d0255 +070e0b0b0655071c0c0c065507160d0d065507191e3437182b4e10f42b2b2b2b2b2b5d2b4dfd +e44e10712b2bf6712b2b2b2b4ded003fedfd5d2b2be43fed12392f5d3cfd713c011112393912 +393130015d005d2b2b2b01717201170606232200111000333200111407211616333236012126 +2726232206035eba2ceeb9e9feef0114dcd5010e01fce80ab285638cfdda02510c3856897ca9 +015617a3b4011f0103010c0128fedefef91020afba680195864368a600000001008700000626 +043e002301c7b9000dfff4b40d0d065508b8fff4b40d0d065509b8ffd8404d0b0d342504e404 +e409e117e52005d505f620021708202309181b20090303231e1c06151c0b0b06070106231a19 +100ad025019025a025022517171a0e2590110111041010025511180f0f025511b8ffec400b0e +0e025511140c0c025511b8ffe840170b0b025511020b0b0655110c1010065511060f0f065511 +b8fffab40c0c065511b8fff8b40d0d065511b8015d400c1825901b011b180f0f02551bb8ffec +400b0e0e02551b140c0c02551bb8ffee40110b0b02551b040b0b06551b0a101006551bb8fffe +400b0d0d06551b0c0f0f06551bb8fffcb40c0c06551bb8015d4016000233232501d000019000 +a000021f003f004f000300b8fffe401d0e0e025500100d0d025500100c0c0255000c0b0b0255 +00160b0b065500b8fffcb41010065500b8fff440140f0f0655000a0c0c0655000e0d0d065500 +192425b80178b3214750182b2b4ef42b2b2b2b2b2b2b2b2b5d71723c4dfde410f42b2b2b2b2b +2b2b2b2b5dedf42b2b2b2b2b2b2b2b2b2b5dfd4e456544e67172003f3c3c3c3f3f3c4d10ed10 +ed11173901111239123931304379400e0c141326140c111b01120d151b01002b012b2b81015d +005d2b2b2b331133153636333216173633321615112311342626232206151123113426232206 +06151187a132a66a76971f7eca9eaab3235c3e7094b458644c813a0426954e5f6258baafb6fd +27029d6c5f3a95a4fd9702b27878509a91fdd900000200880000013c05ba0003000700cd405e +09360b0b02554f099009a009b009c009df09f0090700091f09700980099f09b009c009df09e0 +09ff090a1f09010001070402030906037e0100060506040a0607250500049f04a004b004c004 +e00406c004f0040200042004d004e0040404b8fff8b41010025504b8fffa40170e0e02550404 +0c0c0255040a0b0b025504140b0b065504b8ffeab41010065504b8fffeb40d0d065504b8fffc +400a0c0c0655044e084750182b10f62b2b2b2b2b2b2b2b5d71723cfd3c003f3f3c3fed011112 +3939111239393130015d72712b133533150311331188b4b4b404ebcfcffb150426fbda000001 +0024fff2022a0599001700d8b9000affc0b323263409b8ffc0404123263480190100010c0d0a +0103001610092b0f0a06161c030b0f10220022010d12250c01ff070845094560077007800790 +070400072007a007b007c007d0070607b8ffeeb41010025507b8fff4b40f0f025507b8fff2b4 +0e0e025507b8fff8b40d0d025507b8fff8b40c0c025507b8fffab41010065507b8fff0400b0f +0f065507060c0c065507b8ffe8b40d0d065507ba026a00180136b166182b10f62b2b2b2b2b2b +2b2b2b5d71f4e410ed3cfd3c10e4f43c003fed3f3cfd3c1139123911333310c93130015d2b2b +25170623222626351123353311371133152311141616333202101a4c3c626c2c8484b3b5b513 +2b281ea19f103e65a202638c01076cfe8d8cfd934d2c1a000001003fffe803b1043e00300317 +407b042214223a094a094424562265227c098e098424a613ab2cc2030d09171a1817304b2cd6 +17051b025502021032010a185c085c095c0a5c0b5c0c5c0d6a086a096a0a6a0b6a0c6a0db426 +b4270f27262427242936245a0a590b64266428742374248024930a9c0c9228972c9530a40aa9 +0ca327a428b326c5261628b8fff4b40d0d065522b8fff4b40d0d065523b8fff4b40d0d065524 +b8fff4b40d0d065528b8fff4b40c0c065522b8fff4b40c0c065523b8fff4b40c0c065524b8ff +f4b40c0c06551db8ffde40121e395a0827250c0a041a202615040b2e1d1ab802aa4022192c0b +0b02551f193f194f195f19af19cf19060f191f196f19df19041f198f190219bd025500150000 +02aa0001ffc040140b0b025510014001021001d00102000110010201b8ffc0b314163401b8ff +c040100e113401012e5c1d6c1d021d1c150704b8fff4b40b0b025504b8ffe6b41010065504b8 +ffe640130f0f0655041c2e0b1f1a011a24194013183432b8ffc0402f0f0f025519180f0f0255 +19180d0d025519160c0c025519201010065519200f0f065519100c0c065519160d0d065519b8 +025bb207242ab8ffc0b51c39d02a012ab8ffe6b40c0c02552ab8ffe8b40f0f02552ab8ffe8b4 +0c0c06552ab8ffeab60d0d06552a1a32b8ffc04021272a346032c032023f3280320232100101 +012400180d0d025500100d0d06550020b8fff4b40d0d025520b8fff4b41010065520b8fff440 +190f0f065520240f100b0b02550f160c0c02550f200d0d02550fb8fffa40200f0f02550f0e0c +0c06550f0c0d0d06550f22df00013f004f00020019313437182b4e10f45d714df42b2b2b2b2b +2bed2b2b2b102b2bed724e105d712bf62b2b2b2b712b4dedf42b2b2b2b2b2b2b2b2bed72003f +ed2b2b2b3fed7112392f2b2b5d71722be410fd5d71722be41112391112390111121739313043 +794040272d1e2305142c261110121013100306220d201b000928071b01052d071b011e14201b +00210e231b0022230d0c08290a1b012827090a062b041b001f101d1b01002b2b103c103c2b10 +3c103c2b012b2b2b2b2a2b818181002b2b2b2b2b2b2b2b2b5d71015d72715d13371616333236 +35342726272e023534363736363332161617072626232206151417161716171e021514060623 +22263fb20f897b7c78352593c6994f41382a91537dbd5a11b00c73697c6a16162f1b84bf9756 +69c67dcfd9013d1c6b7265443d2318253249814e4779281f2b487b6718525c5237231c1d130a +2433417c5c5a9f57ac0000020087fe690421043e0012001e0162408e0c102d103d104b10043f +20b020021f20290c231d3215321d421d70209020083a173a1b4a174a1b59085b0c5c175c1b6a +086b0c69106d176b1bc020d314dd18dd1ad31ee414e41ee020ff201623042b102b1535043a10 +46044a105a10e50beb1dfe100b110e03161c1c06070106161c0e0b000e1924d00a01100a400a +600a800a0420400b0b025520400d0d02550ab8ffe6400b0f0f02550a180d0d02550ab8fffab4 +0c0c02550ab8ffeeb40b0b06550ab8fff4b40f0f06550ab8ffe840230c0c06550a7401133302 +3312250000c001019001a001b001f001041f013f014f010301b8fffc401d0e0e025501100d0d +025501100c0c025501100b0b0255010c0b0b065501b8fff6b41010065501b8fffc40160f0f06 +55010c0c0c065501120d0d065501191f473718012b4e10f42b2b2b2b2b2b2b2b2b5d71723c4d +10fdf4e410fd2b2b2b2b2b2b2b2b5d71ed003f3fed3f3fed113912393130005d015d71720071 +1311331536363332161615140206232226271103141633323635342623220687a43a926888d0 +6a75df7b5a8f2e11a67678aba77473b1fe6905bd8a51518cff98a3fefb8b4c3afdfb03a4cdc4 +cbd5cbcad700000100130000028005d30017010d401e1409010f192f193019401970199b0c9c +0da90d081a0d280db019c0190419b8ffc040281a1f341d080d030c0f1c0a0115022b14130403 +06000a9f140114ff13400417250400030292010100b8ffc0b331383400b8ffc0402b1c1f3490 +000119400f0f025519400d0e025500141010025500280f0f025500220e0e0255002c0d0d0255 +00b8fff2400b0c0c025500140b0b065500b8ffeab41010065500b8ffe6b40f0f065500b8fffa +b70c0c065500a31819bc01ba002100f6010a00182b2bf62b2b2b2b2b2b2b2b2b2b2b5d2b2b3c +10f43c103ced10eded5d003f3f3c3c3cfd3c3fed391139313043794014101106090706080602 +061009121b0011060f1b012b012b2a8181012b715d0072331123353335343736363332170726 +232206151533152311b29f9f131a83764c5c1b38325244cfcf039a8c716b344657129d0a4660 +628cfc6600010087000003e6043e0016017d40130503061302a810b810e303e713f003f61306 +04b8fff0403c0b0d347910019810d018e018ff18042008140e1416121c05070106160d0a0d0e +0c0e2418401010025518400b0b02550b28101002550b140e0e02550bb8ffec40110d0d02550b +040c0c02550b220b0b02550bb8fff4400b0b0b06550b14101006550bb8fff9400b0d0d06550b +0a0f0f06550bb8fff640120c0c06550b40333634ff0b01ff0b010b4e18b8ffc0401a343634b0 +18f018027018a018b018c01804180302331516250100b8fff6b41111025500b8fffab4101002 +5500b8fffa40170e0e025500040c0c0255000a0b0b025500040b0b065500b8fffa40110f0f06 +5500020c0c065500040d0d065500b8ffc04012333634f0000100002000d000e00004004e1710 +f65d712b2b2b2b2b2b2b2b2b2b3cfd3cf43c105d712bf65d712b2b2b2b2b2b2b2b2b2b2b2b2b +ed3c103c003f3c3f3fed11390112393130437940160611090a080a070a0306102611060e1b01 +0f0a121b01002b012b2b2a81015d71002b5d7133113315363332161617161511231134262623 +2206151187a275dd60a150100ab42a6b4873a7042697af45704d327dfd7302866e6d4192ccfd +bc0000000002004affe8041c043e00280037022d402c090d092a190d1a2a290d2a2a390d3615 +371b3a2a492a5d0d5d2a6a0d692a60308a0d86299a169b1aa90d1528b8ffe8b40b0b065527b8 +ffe840190b0b0655a619aa28b619bb28c419cf28d215dd28084416011eb8fff440110c0c0655 +12120c0c0655050c0c0c065535b8ffe040550c0c06551f171f182b2c2a343904392c4904482c +5608592b6608692b760c870cc90cf90df92b1137340e0104102f243417322114185f296f2902 +291c2f0e3f0e8f0e9f0eff0e059f0eaf0eef0e030e0c0f0f02550eb8ffeab4101002550eb8ff +f44015101006550e0c0d0d06550e060f0f06550e0e1c0317b802aab61895141c1c0700b8fff4 +401a0c0c06550045270a321c030b2961106100060d0d025500252124b8ffecb41010025524b8 +ffec400b0d0d025524040c0c025524b8ffe4b40b0b025524b8fff4b40b0b065524b8ffdc400b +1010065524060f0f065524b8fffcb40c0c065524b8025b400e27400026102620263026af2605 +39b8ffc0b40e0e025526b8ffd6b60e0e0255263139b8ffc0400d1e23343039c03902a0390139 +17b8fff4404110100655172518222f24bf06cf06021f063f0602060e0f0f0255060c0d0d0255 +06180c0c0255060c0b0b0255060c0b0b0655060e0d0d065506100c0c065506313810f62b2b2b +2b2b2b2b5d71edf4ed2b105d712bf62b2b5dedf42b2b2b2b2b2b2b2b3cfd2be5e5003fed3fe4 +2b3fedfde41112392f2b2b2b2b2b5d71ed711112391112393901111217393130005d2b2b2b2b +01715d2b2b0071250606232226353436363736373637363534272623220607273e0233321616 +1716151514161723260306070e02151416333236373635033c64b96aafbc477348356bda6701 +3345887f791db0186ed08988aa5010091722bc1c1762c46f5c326d6968a2261d835546ab854e +814e140e0d1a24250a6e2d3d597118718b4b40614a2e78f0fb853d3801dd281c10284d2f4860 +5b4f3d77000000010050ffe803ed043e001a015ab1020243545840340e7f0f010f0b01400050 +007000030004121c0b07181c040b010e1507080e0e0255070c0d0d0255070c0c0c025507100b +0b0255072f2b2b2b2bcdd4c6003fed3fed10c45d3210c45d3231301b4047090c011f1c431343 +1753135317601360179b029b039a0da410a41a0c080d190a6a0269036a05750c700d800da60c +b509b60ab50c0c160c860ce302030e225f0f6f0f7f0f030f01b802aa40793000400050006000 +70009000a000e000f00009000f0f0b000004121c0b07181c040b1c0f010f240e080d0d06550e +221b000100240b2b1f010100010101400b0b065501401010065501480c0c0655011a0d0d0655 +01491c1524cf07011f073f0702070e0b0b0655070a1010065507120c0c065507311b34c4182b +10f62b2b2b5d71ed10f62b2b2b2b5d724b53234b515a58b90001ffc03859ed72f42bed72003f +ed3fed12392f11392f105de4105de43130005d71015d71590117060623220011341236333216 +17072626232206151416333236033cb11defaedafef772e989addc1faf197f5a88aaa4846a8e +018517b7cf011d010aac010281afa11b6b6cc3d3d6c2820000010087000003e805ba00140161 +b90016ffc0b315173403b8ffe0400e0d0d0655250435034503ba0d0403b8ffe0403a17193417 +08110c1114030501000f1c0507140b0a0c250940333634ff0901c0090116400b0b0255164010 +10025509281010025509140e0e025509b8ffec40110d0d025509040c0c0255091a0b0b025509 +b8fff6400b0b0b065509141010065509b8fff8400b0d0d0655090a0f0f065509b8fff6b60c0c +0655094e16b8ffc04017343634b016f016027016a016b016ff1604160214250100b8ffc04010 +333634f0000100002000d000e0000400b8fffab41010025500b8fffa40170e0e025500040c0c +025500080b0b025500040b0b065500b8fffa40160f0f065500020c0c065500020d0d0655004e +154750182b10f62b2b2b2b2b2b2b2b5d712b3cfd3c105d712bf42b2b2b2b2b2b2b2b2b2b2b2b +5d712bed003f3c3fed3f1139113901123931304379400e060e07250e060c1b010d080f1b0100 +2b012b2b81002b5d2b012b33113311363332161615112311342623220606151187b47ec076ae +4bb4756b508d3c05bafdf2925da49cfd5f02a1877b538e7dfdbb0001005cffe704eb05d30030 +0215402763036304730374040425273503391c430349074c1d451f44244627530359075c1d57 +2889130e23b8fff2b41010025524b8fff2b41010025525b8fff2b41010025526b8fff2b41010 +025527b8fff2b41010025523b8fff6b40d10025524b8fff6b40d10025525b8fff6b40d100255 +26b8fff6b40d10025527b8fff640460d100255280d26240224032725360f34234425452f5a20 +562355256c0b6a0d6b0e66146518790b7a0d7a0f7d107524732586038a0b890d8a0f8d108524 +8325920d960f96151eb10602435458402d2126121b261a09262901260000291a120432312600 +650002000d2d791b891b021b25160d2d1e27250125051605b8fff4400c0c0c0655051e2d091e +1e1603003fed3fed2b1112395d1112391112395d1112395d01111217392fed2fed2fed2fed1b +402d25240e0d0b05211c1d1e1b08070604030206012524220e0d0b06051e1b2d1a400c0c0255 +8f1a011aed16002d01b8ffc040120c0c02551001200150016001700190010601b801b040132d +1e1e1603051e2d091b261a4a092600290129b8ffeab40e0e025529b8fff4400d0c0c0255291a +32212612012612b8ffecb40e0e025512b8fff6b40d0d025512b8fff8400f0c0c025512542000 +01001931635b182b4e10f45d4de42b2b2bed10ed4e10f62b2b5d4dedf4ed003fed3fed10fd5d +2be410fd5d2bf4111217391117391112393901121739593130005d712b2b2b2b2b2b2b2b2b2b +015d7113371e0233323636353426272624272626353436363332161617072626232206151417 +160417161615140606232224265cb70d5fc87d6faa53505c3bfe6c5169677ef294a3f98605ba +0fada9b0a1393801d958807a86fb9dc7fef39901d7106e8d5742734445672317612b37a3656f +c16469cc810e8b8e815b4f33336b283bb57675cf7374e900000000020086ffe8041f05ba0010 +001d0180409b01050c0f240535054505053f1fb01f021f1f221c331c421c701f901f063a133c +163c1a4c164c1a5d085d0d580f5d165e1a6a086c0d680f6e166e1ac01fd90cda17da19e213ec +17ec19e31de01fff1f1920052f0f2f1430053f0f40054c0f50056605da1df504fa100c10150e +040602001b1c0607010a151c0e0b1824d00b01100b400b600b800b041f400d0d02550b0c0f0f +02550b180d0d02550bb8fff6b40c0c02550bb8fff0b40b0b06550bb8fff4b40f0f06550bb8ff +e0b40c0c06550bb8fff4402f0d0d06550b7401113300040c0c025500040d0d06550033032502 +02c001019001a001b001f001041f013f014f010301b8fffeb41010025501b8fffc401d0e0e02 +55010c0d0d025501100c0c025501120b0b0255010c0b0b065501b8fff8b41010065501b8fffc +40160f0f065501180c0c065501140d0d065501191e4737182b4e10f42b2b2b2b2b2b2b2b2b2b +5d71723c4d10fdf42b2be410fd2b2b2b2b2b2b2b2b5d71ed003fed3f3fed3f11391112393130 +005d015d7172007121231133113633321e021510002322270314171633323635342623220601 +2da7b472b162af7140fef2bdbc6b0234559176aca57576ac05bafdf58f4f8fca73feeffed69d +0196bf558bcdcbd0c6cd00000000000200030000000000140001000000000034000400200000 +0004000400010000f01dffff0000f000ffff10000001000000000006004600000000001e0000 +000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013 +001400150016001700180019001a001b001c001d000005ba001905ba001a05a7001904260018 +0000ffe70000ffe80000ffe7fe69ffe805ba0019fe69ffe802ea000000b8000000b800000000 +00a800ad016900ad00bf00c201f0001800af00b900b400c800170044009c007c009400870006 +005a00c80089005200520005004400940119ffb4002f00a1000300a100cd00170057007e00ba +00160118ffe9007f008503d300870085000d002200410050006f008d014cff75005c00df0483 +0037004c006e00700180ff58ff8eff92ffa400a500b903c8fffd000b001a0063006300cdffee +05d8ffdc002d005c0095009900df019209b500400057008000b9039d0072009a035d0401ff67 +fffa00030021007700cd0004004d00cd01c0022b004c006500e70118017c034305d8ffa3ffb0 +ffc40003001c005d0068009a00ba013501470221055cff4dffcd0016002d00780080009900b2 +00b600b600b800bd00da010c05f0ffa4fff00019002c0049007f00b400ce01c003fefd81fe3f +000000050018002900390049006f00be00c700d0012301c1026f050c05320540057affd40014 +00310055005700a700b400e601f7027e027e027f03c60446ff42000e0085009100bf00c200c5 +00e1011a012f014f01560229026f029e03720008002c00310031006400690089009800c700de +012b01b6020c02cf03a304ab04fb061dfee0ff0e00060026009b009d00c1010d011801200173 +018201d601e30243025f029b02e2039404a904d20761001c005e006d008d00ab00f701120138 +0151015b0168017c01870191019901cd01d001e802410254026b02ef0368037103bd04420442 +0453047304830586058b06e8fe58fec4fed1fef7ff32ff860051007c008100910095009e00b4 +00b900cf00d900d900df00e20105010b010e010e012001210155017b017b017e018d01a201a8 +01a901b401d001d001e201e901f201f501fb020002000206021b022102220222022302720277 +0294029c02cf02cf02d002ec02f903170322032b0335033c0359036f037103870390039003b5 +03e1041a04cf04ff053205320596059f05a805ab05c205f0060c0782080008ccfca3fd2afdde +fe00fe88fe96feb2feb4ffe100150019001a001c001f003c005100610061006a0078009600a5 +00af00d3010c0118011a012a013e014c0151015f016a0171017801820184019a01a501a801a9 +01ae01bc01cd01d701ef0200020d021c02210222022e02350242024f024f025e026502710290 +029202b402d602fa0307030b030f0315032a0347035d036503740379039603b003cc03dd03e2 +03f603fc03fc03ff040a041f04220426042b0447045f0475049e04e704e7055c05cb05e5060a +066d068606b806f10736073e07500751075d078f07b607d4086000b600c300b500b700000000 +000000000000000001e00381034503b5008e0233041902ce02ce002d005f0064034d023f0000 +02a80188027d01b402240578063b023b014e00f00426029402c6029f02f6023b034d014b0153 +006a0231000000000000061404aa0000003c04c300ed04bc026502ce03b50078060c017e02ef +060c00b201000239000001c50330042b03cb00da03df010704a100db040a011701ed02a70350 +010b01bd043e05580021039c00ae0371017d00b5024500000afb088c012b014e01aa00870054 +013201f803ff0003024e00b4003703e30083006b02d800ed00770088009701640467008e0033 +017c00e700a6029e0329056e062a061501c90269048a021301b4000204a90000023901240103 +05140084015d039a06ef02d9007500cf040a00de03ac04bc02cf02ae034d04f005520168006d +007d00860071ff810079055804d2016700030156002504e00094007c033204210094007f0072 +005c002f00b6001800ba00b80041034d00720018001f004c016a01550099009a009a009800b2 +00040078006900140057006e00ce00b4065402b80067050e016500e7000004cbfe52005affa6 +0099ff67006eff92002dffd40087ff7c00b800a800e5008f00a80185fe7b0070001e00d900de +014c054602cf0546ff2d028a02d90253029600b7000000000000000000000000000001250118 +00ea00ea00ae0000003e05bb008a04d70053003fff8cffd500150028002200990062004a00e4 +006d00ee00e5004803c00033fe4e02b1ff460370007905df0051ffa7ff1f010a0068ff6c004f +00bc00a507050061072b4043555441403f3e3d3c3b3a3938373534333231302f2e2d2c2b2a29 +2827262524232221201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403 +0201002c4523466020b02660b004262348482d2c452346236120b02661b004262348482d2c45 +234660b0206120b04660b004262348482d2c4523462361b0206020b02661b02061b004262348 +482d2c45234660b0406120b06660b004262348482d2c4523462361b0406020b02661b04061b0 +04262348482d2c0110203c003c2d2c20452320b0cd442320b8015a51582320b08d44235920b0 +ed51582320b04d44235920b09051582320b00d44235921212d2c20204518684420b001602045 +b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b0172370b101 +173e01b0172370b10217453ab10200080d2d2c45b01a234445b01923442d2c2045b003254561 +64b050515845441b2121592d2cb00143632362b0002342b00f2b2d2c2045b0004360442d2c01 +b00643b00743650a2d2c2069b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b0 +0361592d2c45b0112bb0172344b0177ae4182d2c45b0112bb01723442d2cb01243588745b011 +2bb0172344b0177ae41b038a45186920b01723448a8a8720b0a05158b0112bb0172344b0177a +e41b21b0177ae45959182d2c2d2cb0022546608a46b040618c482d2c4b53205c58b002855958 +b00185592d2c20b0032545b019234445b01a23444565234520b00325606a20b009234223688a +6a606120b01a8ab000527921b21a1a40b9ffe0001a45208a54582321b03f1b235961441cb114 +008a5279b31940201945208a54582321b03f1b235961442d2cb110114323430b2d2cb10e0f43 +23430b2d2cb10c0d4323430b2d2cb10c0d432343650b2d2cb10e0f432343650b2d2cb1101143 +2343650b2d2c4b525845441b2121592d2c0120b003252349b04060b0206320b000525823b002 +253823b002256538008a63381b212121212159012d2c4bb06451584569b00943608a103a1b21 +2121592d2c01b005251023208af500b0016023edec2d2c01b005251023208af500b0016123ed +ec2d2c01b0062510f500edec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2c +b02b2bb02a2a2d2c00b00743b006430b2d2c3eb02a2a2d2c352d2c76b8022323701020b80223 +4520b0005058b00161593a2f182d2c21210c6423648bb84000622d2c21b08051580c6423648b +b82000621bb200402f2b59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b0 +02602d2c0c6423648bb84000626023212d2cb4000100000015b00826b00826b00826b008260f +10161345683ab001162d2cb4000100000015b00826b00826b00826b008260f1016134568653a +b001162d2c4b53234b515a5820458a60441b2121592d2c4b545820458a60441b2121592d2c4b +53234b515a58381b2121592d2c4b5458381b2121592d2cb0134358031b02592d2cb013435802 +1b03592d2c4b54b012435c5a58381b2121592d2cb012435c580cb00425b00425060c64236461 +64b807085158b00425b00425012046b01060482046b0106048590a21211b2121592d2cb01243 +5c580cb00425b00425060c6423646164b807085158b00425b00425012046b8fff060482046b8 +fff06048590a21211b2121592d2c4b53234b515a58b03a2b1b2121592d2c4b53234b515a58b0 +3b2b1b2121592d2c4b53234b515ab012435c5a58381b2121592d2c0c8a034b54b00426024b54 +5a8a8a0ab012435c5a58381b2121592d2c4b5258b00425b0042549b00425b00425496120b000 +5458212043b0005558b00325b00325b8ffc038b8ffc038591bb04054582043b0005458b00225 +b8ffc038591b2043b0005458b00325b00325b8ffc038b8ffc0381bb00325b8ffc03859595959 +212121212d2c462346608a8a462320468a608a61b8ff8062232010238ab902c202c28a704560 +20b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2cb1020042b123018851b1400188 +535a58b910000020885458b202010243604259b12401885158b920000040885458b202020243 +6042b12401885458b2022002436042004b014b5258b2020802436042591bb940000080885458 +b202040243604259b94000008063b80100885458b202080243604259b94000010063b8020088 +5458b202100243604259b94000020063b80400885458b202400243604259595959592d2cb002 +4354584b53234b515a58381b2121591b21212121592d000000010000000300003d9732d05f0f +3cf5081b080000000000a2e3272a00000000b9d5b4f6faaffd671000080c0000000900010001 +0000000000010000073efe4e00431000faaffe26100000010000000000000000000000000000 +001e0600010005c7009e0473009605c70066047300df047300550556fffd04e3003005560096 +05560006055600a2023900000473003c0400001a0473004402aa0085047300460473004b06aa +008701c70088023900240400003f0473008702390013047300870473004a0400005004730087 +0556005c04730086000000000000002c00000174000002000000033c00000418000005d40000 +078000000830000009c800000b7000000c3400000c3400000e6000001080000012440000134c +00001500000016c0000018f0000019e400001b0800001eb000002074000021c8000023900000 +266400002818000029bc00002c6800002e4800010000001e0100003f0076000700020010002f +00560000040d0aff00030002b1540f4122031700ef031700ff03170003001f0317002f031700 +4f0317005f0317008f0317009f03170006000f0317005f0317006f0317007f031700bf031700 +f00317000600400317b2923340b80317b28b3340b80317b36a6c3240b80317b2613340b80317 +b35c5d3240b80317b357593240b80317b34d513240b80317b344493240b80317b23a3340b803 +17b331343240b80317b32e423240b80317b3272c3240b80317b312253280b80317b30a0d32c0 +4116031600d00316000200700316000102c4000f0101001f00a0031500b0031500020306000f +0101001f00400312b32426329fbf03040001030203010064001fffc00301b20d1132410a02ff +02ef0012001f02ee02ed0064001fffc002edb30e11329f414a02e200af02e200bf02e2000302 +e202e202e102e1007f02e00001001002e0003f02e0009f02e000bf02e000cf02e000ef02e000 +0602e002e002df02df02de02de000f02dd002f02dd003f02dd005f02dd009f02dd00bf02dd00 +ef02dd000702dd02dd001002dc0001000002dc0001001002dc003f02dc000202dc02dc001002 +db000102db02db000f02da000102da02daffc002d3b2373932b9ffc002d3b22b2f32b9ffc002 +d3b21f2532b9ffc002d3b2171b32b9ffc002d3b2121632b802d2b2f9291fb802e3b3202b1fa0 +413002d400b002d40002000002d4001002d4002002d4005002d4006002d4007002d400060060 +02d6007002d6008002d6009002d600a002d600b002d60006000002d6001002d6002002ca0020 +02cc002002d6003002d6004002d6005002d6000802d0b2202b1fb802cfb226421f411602ce02 +c70017001f02cd02c80017001f02cc02c60017001f02cb02c50017001f02c902c5001e001f02 +ca02c6b21e1f00410b02c6000002c7001002c6001002c7002f02c5000502c1b324121fff4111 +02bf0001001f02bf002f02bf003f02bf004f02bf005f02bf008f02bf000602bf0222b2641f12 +410b02bb00ca0800001f02b200e90800001f02a600a20800406a1f4026434932402043493240 +263a3d3240203a3d329f209f26024026969932402096993240268e923240208e92324026848c +324020848c3240267a813240207a813240266c763240206c76324026646a324020646a324026 +5a5f3240205a5f3240264f543240204f5432b8029eb724271f374f6b0120410f027700300277 +0040027700500277000402770277027700f90400001f029bb22a2a1fb8029a402b292a1f80ba +0180bc0180520180a201806501807e01808101803c01805e01802b01801c01801e0180400180 +bb0138000100800140b40180400180bb013800010080013940180180ca0180ad018073018026 +018025018024018020013740b80221b2493340b80221b2453340b80221b341423240b80221b3 +3d3e320f410f0221003f0221007f0221000300bf022100cf022100ff0221000300400221b320 +223240b80221b3191e3240b80222b32a3f3240b80221b32e3a326f414802c3007f02c3008f02 +c300df02c30004002f02c3006002c300cf02c30003000f02c3003f02c3005f02c300c002c300 +ef02c300ff02c3000600df02220001008f02220001000f0222002f0222003f0222005f022200 +7f022200ef0222000600bf022100ef02210002006f0221007f022100af02210003002f022100 +3f0221004f0221000302c302c30222022202210221401d101c102b1048038f1c010f1e014f1e +ff1e023700161600000012110811b8010db6f70df8f70d00094109028e028f001d001f029002 +8f001d001f028fb2f91d1fb80198b226bb1f41150197001e0401001f013900260125001f0138 +00730401001f0135001c0801001f0134001c02ab001f0132b21c561fb8010fb2262c1fba010e +001e0401b61ff91ce41fe91cb80201b61fe81cbb1fd720b80401b21fd51cb802abb61fd41c89 +1fc92fb80801b21fbc26b80101b21fba20b80201b61fb91c381fadcab80401b21f8126b8019a +b21f7e26b8019ab61f7d1c471f6b1cb80401b21f6526b8019ab21f5e73b80401400f1f52265a +1f481c891f441c621f4073b80801b61f3f1c5e1f3c26b8019ab21f351cb80401b61f301cbb1f +2b1cb80401b61f2a1c561f291cb80101b21f231eb80401b21f5537b80168402c07960758074f +07360732072c0721071f071d071b071408120810080e080c080a080808060804080208000814 +b8ffe0402b000001001406100000010006040000010004100000010010020000010002000000 +01000002010802004a00b013034b024b5342014bb0c063004b6220b0f65323b8010a515ab005 +234201b0124b004b5442b0382b4bb807ff52b0372b4bb007505b58b101018e59b0382bb00288 +b801005458b801ffb101018e851bb0124358b900010111858d1bb900010128858d5959001816 +763f183f123e113946443e113946443e113946443e113946443e11394660443e11394660442b +2b2b2b2b2b2b2b2b2b2b182b2b2b2b2b2b2b2b2b2b2b182b1db0964b5358b0aa1d59b0324b53 +58b0ff1d594bb09353205c58b901f201f04544b901f101f045445958b9033e01f2455258b901 +f2033e4459594bb8015653205c58b9002001f14544b9002601f145445958b9081e0020455258 +b90020081e4459594bb8019a53205c58b9002501f24544b9002401f245445958b90909002545 +5258b9002509094459594bb8040153205c58b173244544b1242445445958b917200073455258 +b9007317204459594bb8040153205c58b1ca254544b1252545445958b9168000ca455258b900 +ca16804459594bb03e53205c58b11c1c4544b11e1c45445958b9011a001c455258b9001c011a +4459594bb05653205c58b11c1c4544b12f1c45445958b90189001c455258b9001c0189445959 +4bb8030153205c58b11c1c4544b11c1c45445958b90de0001c455258b9001c0de04459592b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b65422b2b01b33b59635c456523456023456560234560b08b766818b080622020b163594565 +234520b003266062636820b003266165b059236544b063234420b13b5c4565234520b0032660 +62636820b003266165b05c236544b03b2344b1005c455458b15c406544b23b403b4523614459 +b347503437456523456023456560234560b089766818b080622020b134504565234520b00326 +6062636820b003266165b050236544b034234420b147374565234520b003266062636820b003 +266165b037236544b0472344b10037455458b137406544b24740474523614459004b5342014b +5058b108004259435c58b108004259b3020b0a124358601b2159421610703eb0124358b93b21 +187e1bba040001a8000b2b59b00c2342b00d2342b0124358b92d412d411bba04000400000b2b +59b00e2342b00f2342b0124358b9187e3b211bba01a80400000b2b59b0102342b0112342002b +7475737500184569444569444569447373737374757374752b2b2b2b74752b2b2b2b2b737373 +737373737373737373737373737373737373737373732b2b2b45b0406144737400004bb02a53 +4bb03f515a58b1070745b040604459004bb03a534bb03f515a58b10b0b45b8ffc0604459004b +b02e534bb03a515a58b1030345b040604459004bb02e534bb03c515a58b1090945b8ffc06044 +592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b752b2b2b2b2b2b2b435c58b9008002bbb30140 +1e017400735903b01e4b5402b0124b545ab012435c5a58ba009f02220001007359002b747301 +2b01732b2b2b2b2b2b2b2b737373732b002b2b2b2b2b2b004569447345694473456944737475 +456944734569444569444569447374456944456944732b2b2b2b2b732b002b732b74752b2b2b +2b2b2b2b2b2b2b2b2b2b2b7374752b0000> +] def +/f-0-0 currentdict end definefont pop +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 674 325 +%%EndPageSetup +q 0 -1 674 326 rectclip q +0 324.336 674 -325 re W n +0.8 g +0.398 282.504 112 -28.145 re f +0 g +0.8 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 324.336121 cm +0.398 41.832 112 28.145 re S Q +BT +32 0 0 32 23.775006 256.759375 Tm +/f-0-0 1 Tf +<010203>Tj +ET +BT +32 0 0 31.085715 5.603123 229.77767 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +0.398 69.977 28 28 re S Q +BT +32 0 0 32 33.603125 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +28.398 69.977 28 28 re S Q +0.8 g +112.398 282.504 224 -28.145 re f +0 g +0.801528 w +q 1 0 0 -1 0 324.336121 cm +112.398 41.832 224 28.145 re S Q +BT +32 0 0 32 129.804688 256.90625 Tm +/f-0-0 1 Tf +[<0106>-1<07>-1<06>-1<08>-1<09>-1<070a>-1<0b04>]TJ +ET +BT +32 0 0 32 61.620142 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +56.418 69.977 28 28 re S Q +BT +32 0 0 32 89.603122 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +84.398 69.977 28 28 re S Q +BT +32 0 0 32 117.620136 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +112.418 69.977 28 28 re S Q +BT +32 0 0 32 145.603126 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +140.398 69.977 28 28 re S Q +BT +32 0 0 32 173.508278 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +168.305 69.977 28 28 re S Q +BT +32 0 0 32 201.525286 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +196.32 69.977 28 28 re S Q +BT +32 0 0 32 229.541038 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +224.34 69.977 28 28 re S Q +BT +32 0 0 32 257.52403 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +252.32 69.977 28 28 re S Q +BT +32 0 0 32 285.429182 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +280.227 69.977 28 28 re S Q +BT +32 0 0 32 313.603126 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +308.398 69.977 28 28 re S Q +0.8 g +336.398 282.504 224 -28.145 re f +0 g +0.801528 w +q 1 0 0 -1 0 324.336121 cm +336.398 41.832 224 28.145 re S Q +BT +32 0 0 32 353.804688 256.90625 Tm +/f-0-0 1 Tf +[<0106>-1<07>-1<06>-1<08>-1<09>-1<070a>-1<0b0c>]TJ +ET +BT +32 0 0 32 341.620134 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +336.418 69.977 28 28 re S Q +BT +32 0 0 32 369.603126 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +364.398 69.977 28 28 re S Q +BT +32 0 0 32 397.508278 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +392.305 69.977 28 28 re S Q +BT +32 0 0 32 425.525286 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +420.32 69.977 28 28 re S Q +BT +32 0 0 32 453.541038 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +448.34 69.977 28 28 re S Q +BT +32 0 0 32 481.52403 229.054688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +476.32 69.977 28 28 re S Q +BT +32 0 0 32 509.429182 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +504.227 69.977 28 28 re S Q +BT +32 0 0 32 537.603126 229.054688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +532.398 69.977 28 28 re S Q +BT +32 0 0 31.085715 5.603123 143.37767 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +0.398 156.375 28 28 re S Q +BT +32 0 0 32 33.603125 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +28.398 156.375 28 28 re S Q +BT +32 0 0 32 61.620142 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +56.418 156.375 28 28 re S Q +BT +32 0 0 32 89.603122 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +84.398 156.375 28 28 re S Q +BT +32 0 0 32 117.620136 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +112.418 156.375 28 28 re S Q +BT +32 0 0 32 145.603126 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +140.398 156.375 28 28 re S Q +BT +32 0 0 32 201.525286 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +196.32 156.375 28 28 re S Q +0.8 g +168.305 167.961 28 -28 re f +0.501961 0 0 rg +1.6 w +q 1 0 0 -1 0 324.336121 cm +168.305 156.375 28 28 re S Q +BT +32 0 0 32 173.508276 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +185.43 181.68 m 182.617 181.68 l 182.617 163.758 l 181.938 164.406 +181.051 165.051 179.953 165.695 c 178.852 166.344 177.863 166.828 +176.992 167.148 c 176.992 164.43 l 178.563 163.691 179.938 162.797 +181.117 161.742 c 182.293 160.691 183.125 159.672 183.617 158.68 c +185.43 158.68 l h +185.43 181.68 m S Q +0 g +BT +32 0 0 32 229.541038 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +224.34 156.375 28 28 re S Q +BT +32 0 0 32 257.52403 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +252.32 156.375 28 28 re S Q +BT +32 0 0 32 285.429175 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +280.227 156.375 28 28 re S Q +0.8 g +308.398 167.961 28 -28 re f +0.501961 0 0 rg +1.6 w +q 1 0 0 -1 0 324.336121 cm +308.398 156.375 28 28 re S Q +BT +32 0 0 32 313.603125 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0 g +BT +32 0 0 32 341.620134 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +336.418 156.375 28 28 re S Q +BT +32 0 0 32 369.603126 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +364.398 156.375 28 28 re S Q +BT +32 0 0 32 397.508278 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +392.305 156.375 28 28 re S Q +BT +32 0 0 32 425.525286 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +q 1 0 0 -1 0 324.336121 cm +420.32 156.375 28 28 re S Q +0.8 g +448.336 167.961 28 -28 re f +0.501961 0 0 rg +1.6 w +q 1 0 0 -1 0 324.336121 cm +448.336 156.375 28 28 re S Q +BT +32 0 0 32 453.541016 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +0 g +BT +32 0 0 32 481.52403 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +476.32 156.375 28 28 re S Q +BT +32 0 0 32 509.429182 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +504.227 156.375 28 28 re S Q +BT +32 0 0 32 537.603126 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +532.398 156.375 28 28 re S Q +BT +32 0 0 32 565.587198 142.654688 Tm +/f-0-0 1 Tf +<04>Tj +ET +q 1 0 0 -1 0 324.336121 cm +560.383 156.375 28 28 re S Q +0.8 g +588.559 167.961 28 -28 re f +0.501961 0 0 rg +1.6 w +q 1 0 0 -1 0 324.336121 cm +588.559 156.375 28 28 re S Q +BT +32 0 0 32 593.761133 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0 g +BT +32 0 0 32 621.743238 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +616.539 156.375 28 28 re S Q +BT +32 0 0 32 0.661328 301.039246 Tm +/f-0-0 1 Tf +[<0d0e0f>-1<0b1011>-1<12>-1<0b>1<08>-1<13>-1<14>1<15140e16>-1<17>1<11>-1<18>]TJ +ET +BT +32 0 0 32 -1.866864 184.901172 Tm +/f-0-0 1 Tf +[<1819>-1<1a1b0b1011>-1<12>-1<0b>1<08>-1<13>-1<14>1<15140e16>-1<17>1<11>-1<18>]TJ +ET +q 1 0 0 -1 0 324.336121 cm +316.398 285.977 m 316.398 197.977 l S Q +316.398 118.36 m 319.602 115.16 l 316.398 126.36 l 313.199 115.16 l h +316.398 118.36 m f* +0.8 w +q 0.000000000000000061 -1 -1 -0.000000000000000061 0 324.336121 cm +205.977 -316.398 m 209.176 -319.602 l 197.977 -316.398 l 209.176 +-313.199 l h +205.977 -316.398 m S Q +0.8 w +q 1 0 0 -1 0 324.336121 cm +324.398 285.977 m 460.398 197.977 l S Q +453.684 122.012 m 452.734 117.59 l 460.398 126.36 l 449.258 122.961 l h +453.684 122.012 m f* +0.671656 w +q -1 -0.647059 -0.647059 1 0 324.336121 cm +-227.512 -349.538 m -224.826 -352.222 l -234.228 -349.536 l -224.825 +-346.85 l h +-227.512 -349.538 m S Q +0.8 w +q 1 0 0 -1 0 324.336121 cm +308.398 285.977 m 180.398 197.977 l S Q +186.992 121.828 m 191.441 122.653 l 180.398 126.36 l 187.816 117.379 l +h +186.992 121.828 m f* +0.659234 w +q 1 -0.6875 -0.6875 -1 0 324.336121 cm +221.516 50.216 m 224.152 47.579 l 214.923 50.217 l 224.152 52.852 l h +221.516 50.216 m S Q +BT +32 0 0 32 252.4 6.359375 Tm +/f-0-0 1 Tf +[<1c>-1<14>1<0e>-1<16171d13>-1<14>1<15>]TJ +ET +BT +32 0 0 32 649.837094 142.654688 Tm +/f-0-0 1 Tf +<05>Tj +ET +0.8 w +q 1 0 0 -1 0 324.336121 cm +644.633 156.375 28 28 re S Q +q 1 0 0 -1 0 324.336121 cm +332.398 285.977 m 596.398 197.977 l S Q +588.809 123.828 m 586.785 119.781 l 596.398 126.36 l 584.762 125.852 l +h +588.809 123.828 m f* +0.758947 w +q -1 -0.333333 -0.333333 1 0 324.336121 cm +-469.775 -357.1 m -466.74 -360.135 l -477.366 -357.098 l -466.74 +-354.064 l h +-469.775 -357.1 m S Q +Q Q +showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore +%%EOF diff --git a/Master/Masterarbeit/thesis/img/bitstuffing.svg b/Master/Masterarbeit/thesis/img/bitstuffing.svg new file mode 100644 index 0000000..d4bbc53 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/bitstuffing.svg @@ -0,0 +1,1158 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="bitstuffing.eps"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path4338" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.44750099" + inkscape:cx="475.41607" + inkscape:cy="650.21541" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1166" + inkscape:window-height="856" + inkscape:window-x="1288" + inkscape:window-y="26" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid2987" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g3944"> + <rect + y="197.17914" + x="85.000008" + height="35.183594" + width="140" + id="rect2985" + style="fill:#cccccc;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text2989" + y="229.36218" + x="114.21876" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="229.36218" + x="114.21876" + id="tspan2991" + sodipodi:role="line">DLC</tspan></text> + </g> + <rect + style="fill:none" + id="rect2993" + width="20" + height="20" + x="85" + y="232.36218" /> + <rect + style="fill:none" + id="rect2999" + width="35" + height="35" + x="85" + y="232.36218" /> + <g + id="g3939"> + <text + transform="scale(1.0145993,0.98561076)" + sodipodi:linespacing="125%" + id="text2995" + y="266.93024" + x="90.187233" + style="font-size:39.42443085px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="266.93024" + x="90.187233" + id="tspan2997" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3782" + width="35" + height="35" + x="85" + y="232.36218" /> + </g> + <g + id="g3949"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="126.50391" + y="263.99304" + id="text3791" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3793" + x="126.50391" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="120" + height="35" + width="35" + id="rect3795" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <rect + y="197.18008" + x="225" + height="35.182095" + width="280" + id="rect3901" + style="fill:#cccccc;stroke:#000000;stroke-width:1.00190961;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text3903" + y="229.17859" + x="246.75586" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="229.17859" + x="246.75586" + id="tspan3905" + sodipodi:role="line">DATABYTE 1</tspan></text> + <g + id="g3965"> + <text + sodipodi:linespacing="125%" + id="text3956" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan3958" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3960" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g3970" + transform="translate(34.978726,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text3972" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3974" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect3976" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(69.999993,0)" + id="g3978"> + <text + sodipodi:linespacing="125%" + id="text3980" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan3982" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3984" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g3986" + transform="translate(104.97873,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text3988" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3990" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect3992" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(139.86017,0)" + id="g3994"> + <text + sodipodi:linespacing="125%" + id="text3996" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan3998" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4000" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4002" + transform="translate(174.88143,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4004" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4006" + x="161.52518" + y="263.99304">1</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4008" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="g4010" + transform="translate(209.90112,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4012" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4014" + x="161.52518" + y="263.99304">1</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4016" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(244.87986,0)" + id="g4018"> + <text + sodipodi:linespacing="125%" + id="text4020" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4022" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4024" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4026" + transform="translate(279.7613,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4028" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4030" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4032" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(314.97873,0)" + id="g4034"> + <text + sodipodi:linespacing="125%" + id="text4036" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4038" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4040" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <rect + style="fill:#cccccc;stroke:#000000;stroke-width:1.00190961;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4042" + width="280" + height="35.182095" + x="505" + y="197.18008" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="526.75586" + y="229.17859" + id="text4044" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4046" + x="526.75586" + y="229.17859">DATABYTE 2</tspan></text> + <g + id="g4048" + transform="translate(349.99999,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4050" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4052" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4054" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(384.97873,0)" + id="g4056"> + <text + sodipodi:linespacing="125%" + id="text4058" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4060" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4062" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4064" + transform="translate(419.86017,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4066" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4068" + x="161.52518" + y="263.99304">1</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4070" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(454.88143,0)" + id="g4072"> + <text + sodipodi:linespacing="125%" + id="text4074" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4076" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4078" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + transform="translate(489.90112,0)" + id="g4080"> + <text + sodipodi:linespacing="125%" + id="text4082" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4084" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4086" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4088" + transform="translate(524.87986,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4090" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4092" + x="161.52518" + y="263.99304">1</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4094" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(559.7613,0)" + id="g4096"> + <text + sodipodi:linespacing="125%" + id="text4098" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4100" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4102" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4104" + transform="translate(594.97873,0)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4106" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4108" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4110" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <rect + y="340.36218" + x="85" + height="20" + width="20" + id="rect4112" + style="fill:none" /> + <rect + y="340.36218" + x="85" + height="35" + width="35" + id="rect4114" + style="fill:none" /> + <g + id="g4116" + transform="translate(0,108)"> + <text + xml:space="preserve" + style="font-size:39.42443085px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="90.187233" + y="266.93024" + id="text4118" + sodipodi:linespacing="125%" + transform="scale(1.0145993,0.98561076)"><tspan + sodipodi:role="line" + id="tspan4120" + x="90.187233" + y="266.93024">1</tspan></text> + <rect + y="232.36218" + x="85" + height="35" + width="35" + id="rect4122" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + id="g4124" + transform="translate(0,108)"> + <text + sodipodi:linespacing="125%" + id="text4126" + y="263.99304" + x="126.50391" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="126.50391" + id="tspan4128" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4130" + width="35" + height="35" + x="120" + y="232.36218" /> + </g> + <g + id="g4132" + transform="translate(0,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4134" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4136" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4138" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(34.978726,108)" + id="g4140"> + <text + sodipodi:linespacing="125%" + id="text4142" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4144" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4146" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4148" + transform="translate(69.999993,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4150" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4152" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4154" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(104.97873,108)" + id="g4156"> + <text + sodipodi:linespacing="125%" + id="text4158" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4160" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4162" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + transform="translate(174.88143,108)" + id="g4172"> + <text + sodipodi:linespacing="125%" + id="text4174" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4176" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4178" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <rect + style="fill:#cccccc;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4170" + width="35" + height="35" + x="294.88144" + y="340.36218" /> + <text + sodipodi:linespacing="125%" + id="text4166" + y="371.99304" + x="301.38535" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:#800000;font-family:Sans" + xml:space="preserve"><tspan + y="371.99304" + x="301.38535" + id="tspan4168" + sodipodi:role="line">1</tspan></text> + <g + transform="translate(209.90112,108)" + id="g4180"> + <text + sodipodi:linespacing="125%" + id="text4182" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4184" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4186" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4188" + transform="translate(244.87986,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4190" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4192" + x="161.52518" + y="263.99304">1</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4194" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="441.28647" + y="371.99304" + id="text4198" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4200" + x="441.28647" + y="371.99304">1</tspan></text> + <rect + y="340.36218" + x="434.78256" + height="35" + width="35" + id="rect4202" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <rect + style="fill:#cccccc;fill-opacity:1;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4210" + width="35" + height="35" + x="470" + y="340.36218" /> + <text + sodipodi:linespacing="125%" + id="text4206" + y="371.99304" + x="476.50391" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="371.99304" + x="476.50391" + id="tspan4208" + sodipodi:role="line">0</tspan></text> + <g + transform="translate(349.99999,108)" + id="g4212"> + <text + sodipodi:linespacing="125%" + id="text4214" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4216" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4218" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4220" + transform="translate(384.97873,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4222" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4224" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4226" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(419.86017,108)" + id="g4228"> + <text + sodipodi:linespacing="125%" + id="text4230" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4232" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4234" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4236" + transform="translate(454.88143,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4238" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4240" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4242" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <rect + style="fill:#cccccc;fill-opacity:1;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4250" + width="35" + height="35" + x="644.92236" + y="340.36218" /> + <text + sodipodi:linespacing="125%" + id="text4246" + y="371.99304" + x="651.42627" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="371.99304" + x="651.42627" + id="tspan4248" + sodipodi:role="line">1</tspan></text> + <g + transform="translate(524.87986,108)" + id="g4252"> + <text + sodipodi:linespacing="125%" + id="text4254" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4256" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4258" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + id="g4260" + transform="translate(559.7613,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text4262" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4264" + x="161.52518" + y="263.99304">1</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect4266" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(594.97873,108)" + id="g4268"> + <text + sodipodi:linespacing="125%" + id="text4270" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4272" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4274" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <g + transform="translate(629.95882,108)" + id="g4276"> + <text + sodipodi:linespacing="125%" + id="text4278" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4280" + sodipodi:role="line">1</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4282" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <rect + style="fill:#cccccc;stroke:#800000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" + id="rect4290" + width="35" + height="35" + x="820.19751" + y="340.36218" /> + <text + sodipodi:linespacing="125%" + id="text4286" + y="371.99304" + x="826.70142" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#800000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="371.99304" + x="826.70142" + id="tspan4288" + sodipodi:role="line">0</tspan></text> + <g + transform="translate(700.15387,108)" + id="g4304"> + <text + sodipodi:linespacing="125%" + id="text4306" + y="263.99304" + x="161.52518" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="263.99304" + x="161.52518" + id="tspan4308" + sodipodi:role="line">0</tspan></text> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect4310" + width="35" + height="35" + x="155.02127" + y="232.36218" /> + </g> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="85.32666" + y="174.01234" + id="text4312" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4314" + x="85.32666" + y="174.01234">vor dem Bitstopfen</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="82.16642" + y="319.18494" + id="text4316" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4318" + x="82.16642" + y="319.18494">nach dem Bitstopfen</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 480,502.36218 0,-110" + id="path4326" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 490,502.36218 170,-110" + id="path4328" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 470,502.36218 -160,-110" + id="path4330" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="400" + y="542.36218" + id="text5140" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5142" + x="400" + y="542.36218">Stopfbits</tspan></text> + <g + id="g5144" + transform="translate(735.27119,108)"> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="161.52518" + y="263.99304" + id="text5146" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5148" + x="161.52518" + y="263.99304">0</tspan></text> + <rect + y="232.36218" + x="155.02127" + height="35" + width="35" + id="rect5150" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 500,502.36218 330,-110" + id="path5155" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/Master/Masterarbeit/thesis/img/can-ecu-network.PNG b/Master/Masterarbeit/thesis/img/can-ecu-network.PNG Binary files differnew file mode 100644 index 0000000..b85f5c0 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/can-ecu-network.PNG diff --git a/Master/Masterarbeit/thesis/img/cancasexl_burst_rx.PNG b/Master/Masterarbeit/thesis/img/cancasexl_burst_rx.PNG Binary files differnew file mode 100644 index 0000000..e259d01 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/cancasexl_burst_rx.PNG diff --git a/Master/Masterarbeit/thesis/img/caneasy_hw_cancasexl_timestamp.eps b/Master/Masterarbeit/thesis/img/caneasy_hw_cancasexl_timestamp.eps new file mode 100644 index 0000000..629d138 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/caneasy_hw_cancasexl_timestamp.eps @@ -0,0 +1,1143 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/caneasy_hw_cancasexl_timestamp.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/caneasy_hw_cancasexl_timestamp.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1678 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1678 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 10)] +] -80.0 MCshow +1.000 UL +LTb +2237 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2237 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 20)] +] -80.0 MCshow +1.000 UL +LTb +2795 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2795 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 30)] +] -80.0 MCshow +1.000 UL +LTb +3353 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3353 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 40)] +] -80.0 MCshow +1.000 UL +LTb +3911 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3911 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 50)] +] -80.0 MCshow +1.000 UL +LTb +4470 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4470 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 60)] +] -80.0 MCshow +1.000 UL +LTb +5028 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5028 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 70)] +] -80.0 MCshow +1.000 UL +LTb +5586 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5586 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 80)] +] -80.0 MCshow +1.000 UL +LTb +6145 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6145 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 90)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (Empfangsgenauigkeit vector CANcaseXL)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +28 0 V +-28 0 V +Z stroke +1204 1860 N +56 0 V +-56 0 V +Z stroke +1260 1860 N +56 0 V +-56 0 V +Z stroke +1316 1860 N +55 0 V +-55 0 V +Z stroke +1371 1860 N +56 0 V +-56 0 V +Z stroke +1427 1860 N +56 0 V +-56 0 V +Z stroke +1483 1860 N +56 0 V +-56 0 V +Z stroke +1539 1860 N +56 0 V +-56 0 V +Z stroke +1595 1860 N +56 0 V +-56 0 V +Z stroke +1651 1860 N +55 0 V +-55 0 V +Z stroke +1706 1860 N +56 0 V +-56 0 V +Z stroke +1762 1860 N +56 0 V +-56 0 V +Z stroke +1818 1860 N +56 0 V +-56 0 V +Z stroke +1874 1860 N +56 0 V +-56 0 V +Z stroke +1930 1860 N +55 0 V +-55 0 V +Z stroke +1985 1860 N +56 0 V +-56 0 V +Z stroke +2041 1860 N +56 0 V +-56 0 V +Z stroke +2097 1860 N +56 0 V +-56 0 V +Z stroke +2153 1860 N +56 0 V +-56 0 V +Z stroke +2209 1860 N +56 0 V +-56 0 V +Z stroke +2265 1860 N +55 0 V +-55 0 V +Z stroke +2320 1860 N +56 0 V +-56 0 V +Z stroke +2376 1860 N +56 0 V +-56 0 V +Z stroke +2432 1860 N +56 0 V +-56 0 V +Z stroke +2488 1860 N +56 0 V +-56 0 V +Z stroke +2544 1860 N +56 0 V +-56 0 V +Z stroke +2600 1860 N +55 0 V +-55 0 V +Z stroke +2655 1860 N +56 0 V +-56 0 V +Z stroke +2711 1860 N +56 0 V +-56 0 V +Z stroke +2767 1860 N +56 0 V +-56 0 V +Z stroke +2823 1860 N +56 0 V +-56 0 V +Z stroke +2879 1860 N +56 0 V +-56 0 V +Z stroke +2935 1860 N +55 0 V +-55 0 V +Z stroke +2990 1860 N +56 0 V +-56 0 V +Z stroke +3046 1860 N +56 0 V +-56 0 V +Z stroke +3102 1860 N +56 0 V +-56 0 V +Z stroke +3158 1860 N +56 0 V +-56 0 V +Z stroke +3214 1860 N +55 0 V +-55 0 V +Z stroke +3269 1860 N +56 0 V +-56 0 V +Z stroke +3325 1860 N +56 0 V +-56 0 V +Z stroke +3381 1860 N +56 0 V +-56 0 V +Z stroke +3437 1860 N +56 0 V +-56 0 V +Z stroke +3493 1860 N +56 0 V +-56 0 V +Z stroke +3549 1860 N +55 0 V +-55 0 V +Z stroke +3604 1860 N +56 0 V +-56 0 V +Z stroke +3660 1860 N +56 0 V +-56 0 V +Z stroke +3716 1860 N +56 0 V +-56 0 V +Z stroke +3772 1860 N +56 0 V +-56 0 V +Z stroke +3828 1860 N +56 0 V +-56 0 V +Z stroke +3884 1860 N +55 0 V +-55 0 V +Z stroke +3939 1860 N +56 0 V +-56 0 V +Z stroke +3995 1860 N +56 0 V +-56 0 V +Z stroke +4051 1860 N +56 0 V +-56 0 V +Z stroke +4107 1860 N +56 0 V +-56 0 V +Z stroke +4163 1860 N +56 0 V +-56 0 V +Z stroke +4219 1860 N +55 0 V +-55 0 V +Z stroke +4274 1860 N +56 0 V +-56 0 V +Z stroke +4330 1860 N +56 0 V +-56 0 V +Z stroke +4386 1860 N +56 0 V +-56 0 V +Z stroke +4442 1860 N +56 0 V +-56 0 V +Z stroke +4498 1860 N +56 0 V +-56 0 V +Z stroke +4554 1860 N +55 0 V +-55 0 V +Z stroke +4609 1860 N +56 0 V +-56 0 V +Z stroke +4665 1860 N +56 0 V +-56 0 V +Z stroke +4721 1860 N +56 0 V +-56 0 V +Z stroke +4777 1860 N +56 0 V +-56 0 V +Z stroke +4833 1860 N +55 0 V +-55 0 V +Z stroke +4888 1860 N +56 0 V +-56 0 V +Z stroke +4944 1860 N +56 0 V +-56 0 V +Z stroke +5000 1860 N +56 0 V +-56 0 V +Z stroke +5056 1860 N +56 0 V +-56 0 V +Z stroke +5112 1860 N +56 0 V +-56 0 V +Z stroke +5168 1860 N +55 0 V +-55 0 V +Z stroke +5223 1860 N +56 0 V +-56 0 V +Z stroke +5279 1860 N +56 0 V +-56 0 V +Z stroke +5335 1860 N +56 0 V +-56 0 V +Z stroke +5391 1860 N +56 0 V +-56 0 V +Z stroke +5447 1860 N +56 0 V +-56 0 V +Z stroke +5503 1860 N +55 0 V +-55 0 V +Z stroke +5558 1860 N +56 0 V +-56 0 V +Z stroke +5614 1860 N +56 0 V +-56 0 V +Z stroke +5670 1860 N +56 0 V +-56 0 V +Z stroke +5726 1860 N +56 0 V +-56 0 V +Z stroke +5782 1860 N +56 0 V +-56 0 V +Z stroke +5838 1860 N +55 0 V +-55 0 V +Z stroke +5893 1860 N +56 0 V +-56 0 V +Z stroke +5949 1860 N +56 0 V +-56 0 V +Z stroke +6005 1860 N +56 0 V +-56 0 V +Z stroke +6061 1860 N +56 0 V +-56 0 V +Z stroke +6117 1860 N +55 0 V +-55 0 V +Z stroke +6172 1860 N +56 0 V +-56 0 V +Z stroke +6228 1860 N +56 0 V +-56 0 V +Z stroke +6284 1860 N +56 0 V +-56 0 V +Z stroke +6340 1860 N +56 0 V +-56 0 V +Z stroke +6396 1860 N +56 0 V +-56 0 V +Z stroke +6452 1860 N +55 0 V +-55 0 V +Z stroke +6507 1860 N +56 0 V +-56 0 V +Z stroke +6563 1860 N +56 0 V +-56 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/img/caneasy_hw_mhs_timestamp.eps b/Master/Masterarbeit/thesis/img/caneasy_hw_mhs_timestamp.eps new file mode 100644 index 0000000..383c24b --- /dev/null +++ b/Master/Masterarbeit/thesis/img/caneasy_hw_mhs_timestamp.eps @@ -0,0 +1,1245 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/caneasy_hw_mhs_timestamp.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/caneasy_hw_mhs_timestamp.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1678 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1678 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 10)] +] -80.0 MCshow +1.000 UL +LTb +2237 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2237 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 20)] +] -80.0 MCshow +1.000 UL +LTb +2795 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2795 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 30)] +] -80.0 MCshow +1.000 UL +LTb +3353 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3353 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 40)] +] -80.0 MCshow +1.000 UL +LTb +3911 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3911 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 50)] +] -80.0 MCshow +1.000 UL +LTb +4470 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4470 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 60)] +] -80.0 MCshow +1.000 UL +LTb +5028 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5028 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 70)] +] -80.0 MCshow +1.000 UL +LTb +5586 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5586 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 80)] +] -80.0 MCshow +1.000 UL +LTb +6145 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6145 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 90)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (Empfangsgenauigkeit MHS Tiny-CAN II)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +0 684 V +28 0 V +0 -684 V +-28 0 V +Z stroke +1204 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1260 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1316 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +1371 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1427 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1483 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1539 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1595 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1651 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +1706 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1762 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1818 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1874 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1930 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +1985 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2041 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2097 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2153 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2209 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2265 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +2320 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2376 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2432 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2488 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2544 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2600 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2655 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2711 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2767 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2823 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2879 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2935 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +2990 1860 N +56 0 V +-56 0 V +Z stroke +3046 1860 N +56 0 V +-56 0 V +Z stroke +3102 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3158 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3214 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +3269 1860 N +56 0 V +-56 0 V +Z stroke +3325 1860 N +56 0 V +-56 0 V +Z stroke +3381 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3437 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3493 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3549 1860 N +55 0 V +-55 0 V +Z stroke +3604 1860 N +56 0 V +-56 0 V +Z stroke +3660 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3716 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3772 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3828 1860 N +56 0 V +-56 0 V +Z stroke +3884 1860 N +55 0 V +-55 0 V +Z stroke +3939 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3995 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4051 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4107 1860 N +56 0 V +-56 0 V +Z stroke +4163 1860 N +56 0 V +-56 0 V +Z stroke +4219 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +4274 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4330 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4386 1860 N +56 0 V +-56 0 V +Z stroke +4442 1860 N +56 0 V +-56 0 V +Z stroke +4498 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4554 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +4609 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4665 1860 N +56 0 V +-56 0 V +Z stroke +4721 1860 N +56 0 V +-56 0 V +Z stroke +4777 1860 N +56 0 V +-56 0 V +Z stroke +4833 1860 N +55 0 V +-55 0 V +Z stroke +4888 1860 N +56 0 V +-56 0 V +Z stroke +4944 1860 N +56 0 V +-56 0 V +Z stroke +5000 1860 N +56 0 V +-56 0 V +Z stroke +5056 1860 N +56 0 V +-56 0 V +Z stroke +5112 1860 N +56 0 V +-56 0 V +Z stroke +5168 1860 N +55 0 V +-55 0 V +Z stroke +5223 1860 N +56 0 V +-56 0 V +Z stroke +5279 1860 N +56 0 V +-56 0 V +Z stroke +5335 1860 N +56 0 V +-56 0 V +Z stroke +5391 1860 N +56 0 V +-56 0 V +Z stroke +5447 1860 N +56 0 V +-56 0 V +Z stroke +5503 1860 N +55 0 V +-55 0 V +Z stroke +5558 1860 N +56 0 V +-56 0 V +Z stroke +5614 1860 N +56 0 V +-56 0 V +Z stroke +5670 1860 N +56 0 V +-56 0 V +Z stroke +5726 1860 N +56 0 V +-56 0 V +Z stroke +5782 1860 N +56 0 V +-56 0 V +Z stroke +5838 1860 N +55 0 V +-55 0 V +Z stroke +5893 1860 N +56 0 V +-56 0 V +Z stroke +5949 1860 N +56 0 V +-56 0 V +Z stroke +6005 1860 N +56 0 V +-56 0 V +Z stroke +6061 1860 N +56 0 V +-56 0 V +Z stroke +6117 1860 N +55 0 V +-55 0 V +Z stroke +6172 1860 N +56 0 V +-56 0 V +Z stroke +6228 1860 N +56 0 V +-56 0 V +Z stroke +6284 1860 N +56 0 V +-56 0 V +Z stroke +6340 1860 N +56 0 V +-56 0 V +Z stroke +6396 1860 N +56 0 V +-56 0 V +Z stroke +6452 1860 N +55 0 V +-55 0 V +Z stroke +6507 1860 N +56 0 V +-56 0 V +Z stroke +6563 1860 N +56 0 V +-56 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/img/caneasy_mainscreen.PNG b/Master/Masterarbeit/thesis/img/caneasy_mainscreen.PNG Binary files differnew file mode 100644 index 0000000..8402f28 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/caneasy_mainscreen.PNG diff --git a/Master/Masterarbeit/thesis/img/caneasy_plugin.PNG b/Master/Masterarbeit/thesis/img/caneasy_plugin.PNG Binary files differnew file mode 100644 index 0000000..190e9bd --- /dev/null +++ b/Master/Masterarbeit/thesis/img/caneasy_plugin.PNG diff --git a/Master/Masterarbeit/thesis/img/caneasy_sw_timestamp.eps b/Master/Masterarbeit/thesis/img/caneasy_sw_timestamp.eps new file mode 100644 index 0000000..1a3c37f --- /dev/null +++ b/Master/Masterarbeit/thesis/img/caneasy_sw_timestamp.eps @@ -0,0 +1,2163 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/caneasy_sw_timestamp.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/caneasy_sw_timestamp.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1678 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1678 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 10)] +] -80.0 MCshow +1.000 UL +LTb +2237 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2237 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 20)] +] -80.0 MCshow +1.000 UL +LTb +2795 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2795 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 30)] +] -80.0 MCshow +1.000 UL +LTb +3353 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3353 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 40)] +] -80.0 MCshow +1.000 UL +LTb +3911 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3911 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 50)] +] -80.0 MCshow +1.000 UL +LTb +4470 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4470 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 60)] +] -80.0 MCshow +1.000 UL +LTb +5028 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5028 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 70)] +] -80.0 MCshow +1.000 UL +LTb +5586 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5586 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 80)] +] -80.0 MCshow +1.000 UL +LTb +6145 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6145 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 90)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (Empfangsgenauigkeit CanEasy Software-Zeitstempel)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +0 684 V +28 0 V +0 -684 V +-28 0 V +Z stroke +1204 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1260 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1316 1860 N +55 0 V +-55 0 V +Z stroke +1371 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1427 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1483 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1539 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1595 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1651 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +1706 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1762 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1818 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1874 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1930 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +1985 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2041 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2097 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2153 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2209 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2265 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2320 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2376 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2432 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2488 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2544 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2600 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2655 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2711 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2767 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2823 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2879 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2935 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2990 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3046 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3102 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3158 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3214 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +3269 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3325 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3381 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3437 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3493 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3549 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +3604 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3660 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3716 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3772 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3828 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3884 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +3939 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3995 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4051 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4107 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4163 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4219 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +4274 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4330 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4386 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4442 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4498 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4554 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +4609 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4665 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4721 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4777 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4833 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +4888 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4944 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5000 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5056 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5112 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5168 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +5223 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5279 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5335 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5391 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5447 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5503 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +5558 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5614 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5670 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5726 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5782 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5838 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +5893 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5949 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6005 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6061 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +6117 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +6172 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6228 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6284 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6340 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +6396 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +6452 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +6507 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6563 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1678 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1678 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 10)] +] -80.0 MCshow +1.000 UL +LTb +2237 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2237 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 20)] +] -80.0 MCshow +1.000 UL +LTb +2795 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2795 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 30)] +] -80.0 MCshow +1.000 UL +LTb +3353 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3353 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 40)] +] -80.0 MCshow +1.000 UL +LTb +3911 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3911 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 50)] +] -80.0 MCshow +1.000 UL +LTb +4470 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4470 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 60)] +] -80.0 MCshow +1.000 UL +LTb +5028 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5028 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 70)] +] -80.0 MCshow +1.000 UL +LTb +5586 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5586 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 80)] +] -80.0 MCshow +1.000 UL +LTb +6145 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6145 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 90)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (Empfangsgenauigkeit CanEasy Software-Zeitstempel)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +0 684 V +28 0 V +0 -684 V +-28 0 V +Z stroke +1204 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1260 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1316 1860 N +55 0 V +-55 0 V +Z stroke +1371 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1427 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1483 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1539 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1595 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1651 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +1706 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1762 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1818 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +1874 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +1930 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +1985 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2041 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2097 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2153 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2209 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2265 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2320 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2376 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2432 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2488 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2544 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2600 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2655 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2711 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2767 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +2823 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2879 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +2935 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +2990 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3046 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3102 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3158 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3214 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +3269 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3325 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3381 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3437 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3493 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3549 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +3604 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3660 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3716 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3772 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3828 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +3884 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +3939 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +3995 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4051 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4107 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4163 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4219 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +4274 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4330 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4386 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4442 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4498 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4554 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +4609 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4665 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4721 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +4777 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4833 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +4888 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +4944 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5000 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5056 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5112 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5168 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +5223 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5279 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5335 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5391 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5447 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5503 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +5558 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5614 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5670 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5726 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5782 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +5838 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +5893 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +5949 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6005 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6061 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +6117 1860 N +0 684 V +55 0 V +0 -684 V +-55 0 V +Z stroke +6172 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6228 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6284 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6340 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +6396 1860 N +0 684 V +56 0 V +0 -684 V +-56 0 V +Z stroke +6452 1860 N +0 1367 V +55 0 V +0 -1367 V +-55 0 V +Z stroke +6507 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +6563 1860 N +0 1367 V +56 0 V +0 -1367 V +-56 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/img/factorypattern.png b/Master/Masterarbeit/thesis/img/factorypattern.png Binary files differnew file mode 100644 index 0000000..cba26a0 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/factorypattern.png diff --git a/Master/Masterarbeit/thesis/img/logo_hda_fbi.png b/Master/Masterarbeit/thesis/img/logo_hda_fbi.png Binary files differnew file mode 100644 index 0000000..cea43d7 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/logo_hda_fbi.png diff --git a/Master/Masterarbeit/thesis/img/prio_inv.eps b/Master/Masterarbeit/thesis/img/prio_inv.eps new file mode 100644 index 0000000..58de6c3 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/prio_inv.eps @@ -0,0 +1,838 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.10.2 (http://cairographics.org) +%%CreationDate: Tue Dec 27 13:46:08 2011 +%%Pages: 1 +%%BoundingBox: 0 -1 672 453 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +11 dict begin +/FontType 42 def +/FontName /ArialMT def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 1 /uni0074 put +Encoding 2 /uni0054 put +Encoding 3 /uni0061 put +Encoding 4 /uni0073 put +Encoding 5 /uni006B put +Encoding 6 /uni0020 put +Encoding 7 /uni004C put +Encoding 8 /uni0048 put +Encoding 9 /uni004D put +Encoding 10 /uni0041 put +Encoding 11 /uni002E put +Encoding 12 /uni0070 put +Encoding 13 /uni0065 put +Encoding 14 /uni0072 put +Encoding 15 /uni0043 put +Encoding 16 /uni0062 put +Encoding 17 /uni006C put +Encoding 18 /uni006F put +Encoding 19 /uni0063 put +Encoding 20 /uni0044 put +Encoding 21 /uni0064 put +Encoding 22 /uni0069 put +Encoding 23 /uni006E put +Encoding 24 /uni0050 put +Encoding 25 /uni00E4 put +Encoding 26 /uni0068 put +Encoding 27 /uni0067 put +Encoding 28 /uni006D put +Encoding 29 /uni0077 put +/CharStrings 30 dict dup begin +/.notdef 0 def +/uni0074 1 def +/uni0054 2 def +/uni0061 3 def +/uni0073 4 def +/uni006B 5 def +/uni0020 6 def +/uni004C 7 def +/uni0048 8 def +/uni004D 9 def +/uni0041 10 def +/uni002E 11 def +/uni0070 12 def +/uni0065 13 def +/uni0072 14 def +/uni0043 15 def +/uni0062 16 def +/uni006C 17 def +/uni006F 18 def +/uni0063 19 def +/uni0044 20 def +/uni0064 21 def +/uni0069 22 def +/uni006E 23 def +/uni0050 24 def +/uni00E4 25 def +/uni0068 26 def +/uni0067 27 def +/uni006D 28 def +/uni0077 29 def +end readonly def +/sfnts [ +<00010000000a008000030020636d61700112f1c5000030240000007c63767420962ad2760000 +30a0000006306670676dcc79599a000036d00000066e676c7966f005fb5f000000ac00002f78 +68656164ce98269200003d40000000366868656112330c9400003d7800000024686d7478867e +0cb600003d9c0000007c6c6f63610002dd6c00003e18000000806d61787004dc0ca800003e98 +000000207072657052fec4e900003eb800000aff000201000000050005000003000700002111 +21112521112101000400fc2003c0fc400500fb002004c000000000010024fff2022a05990017 +00d8b9000affc0b323263409b8ffc0404123263480190100010c0d0a0103001610092b0f0a06 +161c030b0f10220022010d12250c01ff070845094560077007800790070400072007a007b007 +c007d0070607b8ffeeb41010025507b8fff4b40f0f025507b8fff2b40e0e025507b8fff8b40d +0d025507b8fff8b40c0c025507b8fffab41010065507b8fff0400b0f0f065507060c0c065507 +b8ffe8b40d0d065507ba026a00180136b166182b10f62b2b2b2b2b2b2b2b2b5d71f4e410ed3c +fd3c10e4f43c003fed3f3cfd3c1139123911333310c93130015d2b2b25170623222626351123 +353311371133152311141616333202101a4c3c626c2c8484b3b5b5132b281ea19f103e65a202 +638c01076cfe8d8cfd934d2c1a0000010030000004ba05ba00070089400d05021e0403020008 +0706050409b80273b320040104b80101b7062001022f030103b80101b5010120000100b8ffe8 +400b1010025500080f0f025500b8fff2b40c0c025500b8ffe2b40d0d025500b8fffcb40c0c06 +5500b8fffeb40d0d065500b80273b308b699182b10f62b2b2b2b2b2b5d3c10f45d3c10fde45d +e6103c103c003f3f3cfd3c313021112135211521110213fe1d048afe1b050dadadfaf3000000 +0002004affe8041c043e00280037022d402c090d092a190d1a2a290d2a2a390d3615371b3a2a +492a5d0d5d2a6a0d692a60308a0d86299a169b1aa90d1528b8ffe8b40b0b065527b8ffe84019 +0b0b0655a619aa28b619bb28c419cf28d215dd28084416011eb8fff440110c0c065512120c0c +0655050c0c0c065535b8ffe040550c0c06551f171f182b2c2a343904392c4904482c5608592b +6608692b760c870cc90cf90df92b1137340e0104102f243417322114185f296f2902291c2f0e +3f0e8f0e9f0eff0e059f0eaf0eef0e030e0c0f0f02550eb8ffeab4101002550eb8fff4401510 +1006550e0c0d0d06550e060f0f06550e0e1c0317b802aab61895141c1c0700b8fff4401a0c0c +06550045270a321c030b2961106100060d0d025500252124b8ffecb41010025524b8ffec400b +0d0d025524040c0c025524b8ffe4b40b0b025524b8fff4b40b0b065524b8ffdc400b10100655 +24060f0f065524b8fffcb40c0c065524b8025b400e27400026102620263026af260539b8ffc0 +b40e0e025526b8ffd6b60e0e0255263139b8ffc0400d1e23343039c03902a039013917b8fff4 +404110100655172518222f24bf06cf06021f063f0602060e0f0f0255060c0d0d025506180c0c +0255060c0b0b0255060c0b0b0655060e0d0d065506100c0c065506313810f62b2b2b2b2b2b2b +5d71edf4ed2b105d712bf62b2b5dedf42b2b2b2b2b2b2b2b3cfd2be5e5003fed3fe42b3fedfd +e41112392f2b2b2b2b2b5d71ed711112391112393901111217393130005d2b2b2b2b01715d2b +2b0071250606232226353436363736373637363534272623220607273e023332161617161515 +14161723260306070e02151416333236373635033c64b96aafbc477348356bda67013345887f +791db0186ed08988aa5010091722bc1c1762c46f5c326d6968a2261d835546ab854e814e140e +0d1a24250a6e2d3d597118718b4b40614a2e78f0fb853d3801dd281c10284d2f48605b4f3d77 +00000001003fffe803b1043e00300317407b042214223a094a094424562265227c098e098424 +a613ab2cc2030d09171a1817304b2cd617051b025502021032010a185c085c095c0a5c0b5c0c +5c0d6a086a096a0a6a0b6a0c6a0db426b4270f27262427242936245a0a590b64266428742374 +248024930a9c0c9228972c9530a40aa90ca327a428b326c5261628b8fff4b40d0d065522b8ff +f4b40d0d065523b8fff4b40d0d065524b8fff4b40d0d065528b8fff4b40c0c065522b8fff4b4 +0c0c065523b8fff4b40c0c065524b8fff4b40c0c06551db8ffde40121e395a0827250c0a041a +202615040b2e1d1ab802aa4022192c0b0b02551f193f194f195f19af19cf19060f191f196f19 +df19041f198f190219bd02550015000002aa0001ffc040140b0b025510014001021001d00102 +000110010201b8ffc0b314163401b8ffc040100e113401012e5c1d6c1d021d1c150704b8fff4 +b40b0b025504b8ffe6b41010065504b8ffe640130f0f0655041c2e0b1f1a011a241940131834 +32b8ffc0402f0f0f025519180f0f025519180d0d025519160c0c025519201010065519200f0f +065519100c0c065519160d0d065519b8025bb207242ab8ffc0b51c39d02a012ab8ffe6b40c0c +02552ab8ffe8b40f0f02552ab8ffe8b40c0c06552ab8ffeab60d0d06552a1a32b8ffc0402127 +2a346032c032023f3280320232100101012400180d0d025500100d0d06550020b8fff4b40d0d +025520b8fff4b41010065520b8fff440190f0f065520240f100b0b02550f160c0c02550f200d +0d02550fb8fffa40200f0f02550f0e0c0c06550f0c0d0d06550f22df00013f004f0002001931 +3437182b4e10f45d714df42b2b2b2b2b2bed2b2b2b102b2bed724e105d712bf62b2b2b2b712b +4dedf42b2b2b2b2b2b2b2b2bed72003fed2b2b2b3fed7112392f2b2b5d71722be410fd5d7172 +2be41112391112390111121739313043794040272d1e2305142c261110121013100306220d20 +1b000928071b01052d071b011e14201b00210e231b0022230d0c08290a1b012827090a062b04 +1b001f101d1b01002b2b103c103c2b103c103c2b012b2b2b2b2a2b818181002b2b2b2b2b2b2b +2b2b5d71015d72715d1337161633323635342726272e02353436373636333216161707262623 +2206151417161716171e02151406062322263fb20f897b7c78352593c6994f41382a91537dbd +5a11b00c73697c6a16162f1b84bf975669c67dcfd9013d1c6b7265443d2318253249814e4779 +281f2b487b6718525c5237231c1d130a2433417c5c5a9f57ac0000010088000003f805ba000b +0261401b060c0d0d0655070656065a09030f0df305f60603090c1010025506b8fff4b40c0c02 +550ab8fff4b40c0c025509b8fff4b40c0c025503b8ffe840100d0d06555503770a0212062013 +213408b8fff0b312273409b8fff0b41227341205b8fff0b312213409b8fff040841227340604 +04050406370947040525062d0a580a7703750ada03e30607a60601230626072508390638093f +0d4f0d59045906580759097d0479059909c606d204d606e406e907f706f90815120a0a050303 +04020606070909080a0a050908082507061407070603040425050a1405050a0a090603040801 +02000405060708080b0b000a04b8010f400905040c0c0655052208b8010f402120073f070207 +100c0c0655071a900d010d0b2500022501019000013f004f000200b8fffe40310e0e02550010 +0d0d025500100c0c0255000a0b0b025500120b0b065500120c0c065500080d0d065500190c0d +e1214766182b2b4ef42b2b2b2b2b2b2b5d713c4d10ed10ed4e1071f62b5d4dedf42bed003f3c +103c103c3f3c3f3c11173987052e2b047d10c487052e182b0e7d10c40710083c083c0310083c +083cb10602435458400d4b09011f0984030209180d1134002b5d7159313001435c58400a092c +1d3909081d1d3c06b8ffdeb21d3906b8ffd4b2203906b8ffd4b121392b2b2b2b2b595d00715d +0171002b2b435c58b90006ffc0b2213903b8ffc0b2163903b8ffdeb2103906b8ffdeb2103903 +b8ffdeb20c3903b8ffdeb10b392b2b2b2b2b2b59012b2b2b435c584012dd0401081416390908 +14143c090814143c06b8fff6b2183906b8ffecb11b392b2b2b2b2b015d59005d2b2b2b2b2b01 +5d712b33113311013301012301071188b401aae9fe6a01bfdefea17f05bafcbc01b0fe76fd64 +021f7afe5b00000100960000042a05ba0005006d400c010204031e05000820040104b802a740 +0f070203200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffab4 +0c0c025500b8fff6b40c0c065500b8fff8400a0d0d0655005d063b5c182b10f62b2b2b2b2b2b +5d3cfd3c10e65d003f3cfd3c3f313033113311211596c202d205bafaf3ad0000000100a40000 +052205ba000b00d8b9000dffc0401a13153404031e090aa00ad00a020a0502020b0808050820 +070706b8ffeeb40f0f025506b8fff2400b0d0d025506100c0c025506b8ffe040180b0b065506 +010c0c0655065d800d010d020b200120000100b8ffc0400a13153400201010025500b8fff6b4 +0f0f025500b8fff6b40d0d025500b8fffa400b0c0c025500080b0b065500b8fff7b40c0c0655 +00b8fff840160d0d0655005d0c200d01200d500d600d700d043b59182b5d7110f62b2b2b2b2b +2b2b2b5d3cfd3c105df62b2b2b2b2b3c10fd3c003f3c3f3c395d2f3cfd3c3130012b33113311 +2111331123112111a4c202fac2c2fd0605bafda6025afa4602b3fd4d0000000100980000060f +05ba001002e4b10202435458b90008fff6400b0c0c0255080e0d11025502b8ffeeb40d110255 +05b8ffee40280d1102550c120c0c0255050f0c030900010208090b0e000809020a0b06101002 +550b100d0d02550bb8fffab60c0c02550b1000b8ffe6b41010025500b8fff8b40f0f025500b8 +fffcb40d0d0255002f2b2b2bcd2f2b2b2bcd003f3fc0c010d0d0c0111217392b2b3130012b2b +2b001bb10602435458401f07200b0b065506200b0b065503200b0b065504200b0b065505200b +0b065508b8fff240230b0b0655020c0b0b065503060c0c0655020e0c0c0655090c0c0c06550a +0c0c0c065507b8fff8b40d0d065508b8fff8401f0d0d06552605010c200a12340f200a12340f +050c0300010e0b00080801020ab8ffeeb40b0b06550ab8ffeeb40c0c06550abb025600120010 +0256400d000c0b0b065500060c0c065500b8fff8b40d0d065500012f2b2b2bf42ff42b2b003f +3c3f3c3c111217392b2b5d3130012b2b2b2b2b2b2b2b002b2b2b2b2b1b407f00020f0814021b +0804760c860cc80c03090c490c490f032904250d2c0e58035b04760d780e870d080b02050839 +0d360e4f024b03440740084d0d420e0a9802990396079608a803a7070612020f0e0e30050214 +050502080c0d0d300508140505080c520f5201400102020808090a0b0b0d0d0e0e1000080902 +601280120212ba02a8000d0131b2052008b80131400a0c090a20400c7f0b010bba0256000e01 +0bb2052002b8010b40090f0100200f70100110b80256b72005600580050305b802a8b3113b59 +182b1910f45df45d3c18fd3c10ed1a1910edf45d3c1a18fd3c10ed1a1910ede45d00183f3f3c +3c103c103c103c103c103c103c1a10eded87052e2b877dc4872e182b877dc43130004bb00b53 +4bb01e515a58bd000cfffb0008ffd60002ffd638383859014bb00c534bb028515a58b9000dff +f8b10e0a38385901435c58b9000dffd4b621390e2c21390db8ffd4b637390e3237390db8ffd4 +b52d390e2c2d392b2b2b2b2b2b5972715d00715d015d59593311210116173637012111231101 +230111980124015b30161935015f0105bbfe56affe5805bafbf29148509b03fcfa4604cbfb35 +04e0fb2000000002fffd0000055905ba0007000e0167b6010e0f10025502b8fff2b40f100255 +02b8fff8b40d0d065502b8fff440590c0c0655090c0c0c0655050c0c0c06552f103010670868 +09601088039010c905c606c010f0100b0805590156025010680bb010f30cf30df30e09040c04 +0d040e030b0a090504040c0d0e080607070c09050408060c07010000b8fff8400f0c0c025500 +20070c1407070c020303b8fff840150c0c02550320040c1404040c091e0505081e060306b802 +70400900080ce94002010202ba010b0001010b40120c2000650703525004cf04df0403900401 +04b80101400b500cc007df0c03900c010cb8010140100f07cf07027f0780070207930fd6d718 +2b10f45d7119f45d71f45d7118ed10ed1a1910eded00183f3c1aed3fe43c10ed3c10ed87052e +2b2b7d10c4872e182b2b7d10c401111239391139398710c4c40ec4c4870510c4c40ec4c43130 +014bb00b534bb01e515a58b4040f030807bafff00000fff838383838590172715d2b2b2b2b2b +2b230133012303210313210326270607030233d10258ddabfd9ba1d901f19946221c3305bafa +4601bcfe44025a0196b9778d8b000000000100ba0000018700cd000300254018023c000a023c +5f006f007f00af0004a0000100a004a198182b10f65d5ded003fed313033353315bacdcdcd00 +00020087fe690421043e0012001e0162408e0c102d103d104b10043f20b020021f20290c231d +3215321d421d70209020083a173a1b4a174a1b59085b0c5c175c1b6a086b0c69106d176b1bc0 +20d314dd18dd1ad31ee414e41ee020ff201623042b102b1535043a1046044a105a10e50beb1d +fe100b110e03161c1c06070106161c0e0b000e1924d00a01100a400a600a800a0420400b0b02 +5520400d0d02550ab8ffe6400b0f0f02550a180d0d02550ab8fffab40c0c02550ab8ffeeb40b +0b06550ab8fff4b40f0f06550ab8ffe840230c0c06550a74011333023312250000c001019001 +a001b001f001041f013f014f010301b8fffc401d0e0e025501100d0d025501100c0c02550110 +0b0b0255010c0b0b065501b8fff6b41010065501b8fffc40160f0f0655010c0c0c065501120d +0d065501191f473718012b4e10f42b2b2b2b2b2b2b2b2b5d71723c4d10fdf4e410fd2b2b2b2b +2b2b2b2b5d71ed003f3fed3f3fed113912393130005d015d7172007113113315363633321616 +15140206232226271103141633323635342623220687a43a926888d06a75df7b5a8f2e11a676 +78aba77473b1fe6905bd8a51518cff98a3fefb8b4c3afdfb03a4cdc4cbd5cbcad7000002004b +ffe8041e043e0015001d015340171f001c150255035d055d09550b65036b056f09650b0815b8 +ffe4b40d0d065511b8ffe440520d0d06551d1c0d0d06552712d905fa14f61a0431123a19311c +41124d1a411c51125c19521c61126d1a611c78067815f602f618100016010f0d171750166016 +701603161c0f9010a010021010041b1c0a0700ba02aa0001ffc0b41010025501b8ffc0401010 +1006551001010195131c040b17400db8ffdcb40d0d02550db8ffeeb40d0d06550db8ffeab40c +0c06550db8ffc04009272a34b00d010d1a1fb8ffc0b32526341fb8ffc040411e2334301f011f +163310240740242a341f073f074f070307200b0b025507180c0c0255071c0d0d0255070e0b0b +0655071c0c0c065507160d0d065507191e3437182b4e10f42b2b2b2b2b2b5d2b4dfde44e1071 +2b2bf6712b2b2b2b4ded003fedfd5d2b2be43fed12392f5d3cfd713c01111239391239313001 +5d005d2b2b2b0171720117060623220011100033320011140721161633323601212627262322 +06035eba2ceeb9e9feef0114dcd5010e01fce80ab285638cfdda02510c3856897ca9015617a3 +b4011f0103010c0128fedefef91020afba680195864368a6000000010085000002c6043e0011 +00c9403b2f1301100401230434044304530466047404060911080908090d1311090d00030801 +0b1c06070106000a0928900801082220130113022211250100b8ffc04010333634f000010000 +2000d000e0000400b8fff8b41010025500b8fff840110e0e025500040c0c025500060b0b0255 +00b8fffcb41010065500b8fff440160f0f065500060c0c065500080d0d0655004e1247c4182b +10f62b2b2b2b2b2b2b2b5d712b3cfde4105df472e4003f3f3fed113939113939011112393900 +10c9870e7dc43130005d72015d33113315363633321707262322060706151185a23e693f5b5e +3e42423b5e141e0426a171483aa727473f6072fdd400000000010066ffe7057605d3001d00d3 +b563026a1d0201b8ffe8b40b0b065500b8ffe8405f0b0b06552000320d63007000741d800084 +1d90009a05ab03a50db903b40dc70dd000e41df31d110e121d111d1d032a0628112a1c201f47 +0d56145715561968056b1d7b128b129a03990e9a1ca801a402a811d50e130014001a1014101a +0402b8ffdeb2283901b8ffc0402d2839100f0001041b131e0c031b1e040910260f4a00262001 +01011a1f1726200801080c0b0b065508191e635c182b4e10f42b5d4ded4e10f65d4dedf4ed00 +3fed3fed1117393130012b2b5d5d71005d2b2b01720117060423222402353412243332041707 +2626232206021514121633323604b4c23dfec3e5edfed79baf0143c2dc012c3bbf33c293a9e3 +5c6de686a3e2020231effbc1016ed2e50155b1e0cb2da092a2feef91bbfee98abc0000000002 +0086ffe8041f05ba0010001d0180409b01050c0f240535054505053f1fb01f021f1f221c331c +421c701f901f063a133c163c1a4c164c1a5d085d0d580f5d165e1a6a086c0d680f6e166e1ac0 +1fd90cda17da19e213ec17ec19e31de01fff1f1920052f0f2f1430053f0f40054c0f50056605 +da1df504fa100c10150e040602001b1c0607010a151c0e0b1824d00b01100b400b600b800b04 +1f400d0d02550b0c0f0f02550b180d0d02550bb8fff6b40c0c02550bb8fff0b40b0b06550bb8 +fff4b40f0f06550bb8ffe0b40c0c06550bb8fff4402f0d0d06550b7401113300040c0c025500 +040d0d0655003303250202c001019001a001b001f001041f013f014f010301b8fffeb4101002 +5501b8fffc401d0e0e0255010c0d0d025501100c0c025501120b0b0255010c0b0b065501b8ff +f8b41010065501b8fffc40160f0f065501180c0c065501140d0d065501191e4737182b4e10f4 +2b2b2b2b2b2b2b2b2b2b5d71723c4d10fdf42b2be410fd2b2b2b2b2b2b2b2b5d71ed003fed3f +3fed3f11391112393130005d015d7172007121231133113633321e0215100023222703141716 +333236353426232206012da7b472b162af7140fef2bdbc6b0234559176aca57576ac05bafdf5 +8f4f8fca73feeffed69d0196bf558bcdcbd0c6cd0000000100830000013705ba000300e3b605 +360b0b025505b8ffc0b337383405b8ffc0b334353405b8ffc0b330313405b8ffc0b322253405 +b8ffc040251517340f051f059f05df05044f05df05f005031f0570058005ff05040100000a02 +03250100b8ffc0b337383400b8ffc040153335349f0001c000f0000200002000d000e0000400 +b8fff8b41010025500b8fffa401d0e0e025500040c0c0255000a0b0b025500140b0b06550008 +1010065500b8fffeb40d0d065500b8ffffb40c0c065500b8fffc400a0c0c0655004e04475018 +2b10f62b2b2b2b2b2b2b2b2b5d71722b2b3cfd3c003f3f3130015d71722b2b2b2b2b2b331133 +1183b405bafa460000020044ffe80427043e000d0019016bb615180d0d065513b8ffe8b40d0d +06550fb8ffe840730d0d065519180d0d065512070a190c470648085606590867066908083410 +3a123a16351845104b124b1645185c055c0952105d125d1652186d056d0964106d126d166418 +7701150906050d5b035405540a5b0c6c036505650a6c0c0a171c0407111c0b0b14241b400d0d +02551b400b0b025507b8ffea40110f0f025507180d0d025507100b0b025507b8fff0b40b0b06 +5507b8fff0b40d0d065507b8fff0b40f0f065507b8fff0b40c0c065507b8ffc0401324253430 +0701000710072007030731df1b011bb8ffc040491e2334301b011b0e24000c0e0f025500120d +0d0255000c0c0c0255001c0b0b0255000e0b0b0655000e0d0d0655000c1010065500160c0c06 +5500402425341f003f000200311a3437182b10f65d2b2b2b2b2b2b2b2b2bed10712b5df65d5d +2b2b2b2b2b2b2b2b2b2bed003fed3fed313001715d0071435c58400953055309620562090401 +5d59002b2b2b2b131037363332001514060623220013141633323635342623220644a489c5db +01167beb8bdffeedb9b28786b2b38587b2021301278e76fee1fdcdeb82011e010dcccbccd1c5 +cbca000000010050ffe803ed043e001a015ab1020243545840340e7f0f010f0b014000500070 +00030004121c0b07181c040b010e1507080e0e0255070c0d0d0255070c0c0c025507100b0b02 +55072f2b2b2b2bcdd4c6003fed3fed10c45d3210c45d3231301b4047090c011f1c4313431753 +135317601360179b029b039a0da410a41a0c080d190a6a0269036a05750c700d800da60cb509 +b60ab50c0c160c860ce302030e225f0f6f0f7f0f030f01b802aa407930004000500060007000 +9000a000e000f00009000f0f0b000004121c0b07181c040b1c0f010f240e080d0d06550e221b +000100240b2b1f010100010101400b0b065501401010065501480c0c0655011a0d0d06550149 +1c1524cf07011f073f0702070e0b0b0655070a1010065507120c0c065507311b34c4182b10f6 +2b2b2b5d71ed10f62b2b2b2b5d724b53234b515a58b90001ffc03859ed72f42bed72003fed3f +ed12392f11392f105de4105de43130005d71015d715901170606232200113412363332161707 +2626232206151416333236033cb11defaedafef772e989addc1faf197f5a88aaa4846a8e0185 +17b7cf011d010aac010281afa11b6b6cc3d3d6c282000002009e0000055a05ba000f001d00e5 +402f201f0143081c1d1e02010211101e0f000817262009011f400d0d0255092010100255090a +0f0f025509180d0d025509b8fff440150c0c0655091a1f1d10200120000100201010025500b8 +fff6b40f0f025500b8fff6b40d0d025500b8fffab40c0c025500b8fff7b40c0c065500b8fff8 +400a0d0d0655005d1e3b5c182b10f62b2b2b2b2b2b5d3cfd3c10f62b2b2b2b2b5ded003f3cfd +3c3f3cfd3c313043794036031b0708060805080408040619181a1802060b0a0c0a0d0a030615 +161416131603061b03172101120e17210118081c2101160a1121002b2b012b2b2a2a2a2a8101 +5d3311213217161716121514020e022325213236373636353426272623219e01f9ab5a7e5974 +734e7a91cd85feb1013991a531454d976c4eadfecc05ba151d4c62fecfc4a7fefea96132ad36 +3145e9a6e6f72a1e00020046ffe803df05ba0011001d015540a40a02040d250d340d440d0535 +14351c5702540a5214531c6702640565096314601cc01fd405d513dd19e513e514ef17eb19e5 +1de01fff1f161f1f2b1a3c163c1a4b1a701f901f072e02240d2e163a02350d4b02450d461449 +1c570a560d670de506e716fa01f40e100115030e0b100f001b1c0b0711000a151c030b183301 +0025110f251010d011011011401160118011041f400b0b02551f400d0d025511121010025511 +b8fff440110f0f025511060e0e025511180d0d025511b8fff2400b0b0b0655110e1010065511 +b8ffeeb40c0c065511b8fff840420d0d065511741224bf07cf07df07ff07041f073f074f0703 +071e0b0b025507180c0c0255071e0d0d0255070c0b0b0655070c0d0d0655071a0c0c06550719 +1e3450182b4e10f42b2b2b2b2b2b5d714dedfd2b2b2b2b2b2b2b2b2b2b5d713c10ed10fd3ce4 +003fed3f3c3fed3f3c11391112393130005d01715d0071213506232226263534123633321617 +113311011416333236353426232206033865c47fd5756ad48360962fb3fd20ac7576a5a87b78 +a1869e8cfba39f01038a5141020efa460212cccac1c6daccc400000200880000013c05ba0003 +000700cd405e09360b0b02554f099009a009b009c009df09f0090700091f09700980099f09b0 +09c009df09e009ff090a1f09010001070402030906037e0100060506040a0607250500049f04 +a004b004c004e00406c004f0040200042004d004e0040404b8fff8b41010025504b8fffa4017 +0e0e025504040c0c0255040a0b0b025504140b0b065504b8ffeab41010065504b8fffeb40d0d +065504b8fffc400a0c0c0655044e084750182b10f62b2b2b2b2b2b2b2b5d71723cfd3c003f3f +3c3fed0111123939111239393130015d72712b133533150311331188b4b4b404ebcfcffb1504 +26fbda0000010087000003e6043e0016017d40130503061302a810b810e303e713f003f61306 +04b8fff0403c0b0d347910019810d018e018ff18042008140e1416121c05070106160d0a0d0e +0c0e2418401010025518400b0b02550b28101002550b140e0e02550bb8ffec40110d0d02550b +040c0c02550b220b0b02550bb8fff4400b0b0b06550b14101006550bb8fff9400b0d0d06550b +0a0f0f06550bb8fff640120c0c06550b40333634ff0b01ff0b010b4e18b8ffc0401a343634b0 +18f018027018a018b018c01804180302331516250100b8fff6b41111025500b8fffab4101002 +5500b8fffa40170e0e025500040c0c0255000a0b0b025500040b0b065500b8fffa40110f0f06 +5500020c0c065500040d0d065500b8ffc04012333634f0000100002000d000e00004004e1710 +f65d712b2b2b2b2b2b2b2b2b2b3cfd3cf43c105d712bf65d712b2b2b2b2b2b2b2b2b2b2b2b2b +ed3c103c003f3c3f3fed11390112393130437940160611090a080a070a0306102611060e1b01 +0f0a121b01002b012b2b2a81015d71002b5d7133113315363332161617161511231134262623 +2206151187a275dd60a150100ab42a6b4873a7042697af45704d327dfd7302866e6d4192ccfd +bc0000000002009e000004fd05ba000d001800b2402c65116b14024b104b145b105b14040b0c +1e0f0e0e0017181e02010200081226080a0d0d025508100b0b065508b8fff4401b0c0c065508 +1a201a01201a011a180d200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d02 +5500b8fffa400b0c0c0255000c0b0b065500b8fffab40c0c065500b8fff0400a0d0d0655005d +193b5c182b10f62b2b2b2b2b2b2b5d3cfd3c4e10715df62b2b2b4ded003f3f3cfd3c12392f3c +fd3c3130015d005d33112132171e0215140221211111213236353426272623219e0229924d6c +9259eefec9fe88017bbc9e5d4c3184fe8905ba0e1265b66dbbfefdfdac03018c7f5c83150d00 +0000ffff004affe8041c05c30226000300000107001e00de00000027401803023c400a0a0655 +703c803cf03c033c1c62482b0203023fb902220029002b012b5d2b3535000000000100870000 +03e805ba00140161b90016ffc0b315173403b8ffe0400e0d0d0655250435034503ba0d0403b8 +ffe0403a1719341708110c1114030501000f1c0507140b0a0c250940333634ff0901c0090116 +400b0b025516401010025509281010025509140e0e025509b8ffec40110d0d025509040c0c02 +55091a0b0b025509b8fff6400b0b0b065509141010065509b8fff8400b0d0d0655090a0f0f06 +5509b8fff6b60c0c0655094e16b8ffc04017343634b016f016027016a016b016ff1604160214 +250100b8ffc04010333634f0000100002000d000e0000400b8fffab41010025500b8fffa4017 +0e0e025500040c0c025500080b0b025500040b0b065500b8fffa40160f0f065500020c0c0655 +00020d0d0655004e154750182b10f62b2b2b2b2b2b2b2b5d712b3cfd3c105d712bf42b2b2b2b +2b2b2b2b2b2b2b2b5d712bed003f3c3fed3f1139113901123931304379400e060e07250e060c +1b010d080f1b01002b012b2b81002b5d2b012b33113311363332161615112311342623220606 +151187b47ec076ae4bb4756b508d3c05bafdf2925da49cfd5f02a1877b538e7dfdbb00020042 +fe5103ea043e001e002a016f40600b0b05142c0b25144c0b451406091d191d2c0b26142c2339 +0b36144a0b46145607580b680bfa0af5150e2e232c273e233e274c27902ca02c07362136293f +2c460b4621452954215429690763216329602c802cda27e821ee23ef271117160615b802b1b4 +281c130701b802aa401020003000600070008000c000d0000700b8027d4032051c1c0f0a4522 +1c0c0a16153325330a251818d017011017401760178017042c400b0c02552c400d0d02551712 +1010025517b8fff440110f0f025517060e0e025517160d0d025517b8ffea400b0b0b06551712 +1010065517b8ffeeb40c0c065517b8fffc404a0d0d065517740f012500221f24bf0fcf0fdf0f +ff0f041f0f3f0f4f0f030f200b0b02550f1a0c0c02550f220d0d02550f1c0b0b06550f0c0d0d +06550f1a0c0c06550f192b2c74213450182b2b4ef42b2b2b2b2b2b5d714dedf4ed10fd2b2b2b +2b2b2b2b2b2b2b5d713c10fde4f63c003fede43fedfd5de43fede43f3c3130015d71005d7117 +1716171633323637362706232202353412363332173533111406062322261314163332363534 +2623220666af0b3243747d88180e0176b0dbf06ed18dbc7aa665dba0beea99a67d7ca8ad7a78 +a8581a512532645a37b08b013cdd9801018c9880fc6af8cf78ab032ad1c0bfccc3c6c3000001 +008700000626043e002301c7b9000dfff4b40d0d065508b8fff4b40d0d065509b8ffd8404d0b +0d342504e404e409e117e52005d505f620021708202309181b20090303231e1c06151c0b0b06 +070106231a19100ad025019025a025022517171a0e2590110111041010025511180f0f025511 +b8ffec400b0e0e025511140c0c025511b8ffe840170b0b025511020b0b0655110c1010065511 +060f0f065511b8fffab40c0c065511b8fff8b40d0d065511b8015d400c1825901b011b180f0f +02551bb8ffec400b0e0e02551b140c0c02551bb8ffee40110b0b02551b040b0b06551b0a1010 +06551bb8fffe400b0d0d06551b0c0f0f06551bb8fffcb40c0c06551bb8015d40160002332325 +01d000019000a000021f003f004f000300b8fffe401d0e0e025500100d0d025500100c0c0255 +000c0b0b025500160b0b065500b8fffcb41010065500b8fff440140f0f0655000a0c0c065500 +0e0d0d065500192425b80178b3214750182b2b4ef42b2b2b2b2b2b2b2b2b5d71723c4dfde410 +f42b2b2b2b2b2b2b2b2b5dedf42b2b2b2b2b2b2b2b2b2b5dfd4e456544e67172003f3c3c3c3f +3f3c4d10ed10ed11173901111239123931304379400e0c141326140c111b01120d151b01002b +012b2b81015d005d2b2b2b331133153636333216173633321615112311342626232206151123 +11342623220606151187a132a66a76971f7eca9eaab3235c3e7094b458644c813a0426954e5f +6258baafb6fd27029d6c5f3a95a4fd9702b27878509a91fdd90000010006000005b704260012 +041db10202435458b90012fff440110d0d025507060d0d025500060d0d02550ab8ffd4b40c0d +025504b8ffe8400b0c0d025511200c0d02550ab8ffc0b40e10025504b8ffc0402f0e10025511 +400e100255040a110301000c06070601060f0a000a0d0c060c0c02550c110102040a04110a0c +0c025511b8fff8b40d0d0255112f2b2bcdcd10d6cd10d42bcd003f3f3f3f3f11121739313000 +2b2b2b2b2b2b012b2b2b1b40160f14012a04290a024a115b118e110311200d0d06550ab8ffe0 +b40d0d065504b8ffe0b40d0d065511b8fff040091f2134101c1d273409b8fff040b71f243404 +060c0913061b09191205040004060b090b0e08121000130314071c081b0b1d0e240025072a08 +2b0e340035073a083b0e4403470640074d084b0b430f47114a125b0f52126b07640867127906 +7a077408b906ba0fb612f506fb09280b112800280d270e280f27122f14380037127708860898 +03970ca701a802a80ba60cb500b606ba0ec804d606d909e804e80fe712f406fa091c0b060d0d +06550c060d0d065510060d0d06550e060d0d06550f060d0d065512b10602435458401b0a0e0f +0412001108070825070f250e122500000e07030d010c250db8ffd640370b0b06550d0225012a +0b0b0655010d011413060a0b11260a2b115404520a5c116c117c118a110a110a040300010f0a +000a0c0607060106003f3f3f3f3f111217395d01111239392f2bf42f2bf41112173910e410e4 +10e41112391112391112391b40140305050206070705090a0a080b0c0c0a1011110fb8ff4bb3 +05001220b8ff4940660a0f0e20c311070820071112122b0507140505070e0a0c0c250d0e140d +0d0e08110f0f2b0a08140a0a080005020225010014010100000201071204080f110c0e0d0a11 +0a0403120d0c0c0808070702020106120f0f0e0e000a14f6100d01600d700d800d030db801a7 +400a204f0a016f0a7f0a020ab8025540094f11016f117f110211b80255400b10050160057005 +80050305b801a7b501f613f666182b4e10f4194df45d5d18fd5d71fd5d711a19fd5d5d18e600 +3f3c103c103c3f3c103c103c103c103c1217390111123939123939113939123939874d2e2b87 +7dc4872e182b877dc4872e182b877dc4872e182b877dc42b2b2b870e10c4070e103c070e103c +870e10c4870e10c44bb01f5358b40d200c2002bcffe00001ffe0000effd0b400300f2012b8ff +e0013838383838383838594bb0345358b90008ffd0b10730013838594bb021534bb033515a58 +b90008ffe0b10720013838594bb012534bb01e515a58b9000effd0b60f200d200c2008b8ffd0 +b2073012b8ffe0b2003802baffe00001ffe00138383838383838383838594bb012534bb01751 +5a58b90011ffe0b30a200420003838385959313001435c58b9000effd4b61239002c123900b8 +ffd4b113392b2b2b592b2b2b2b2b5d71722b2b2b002b2b2b715d015d59210133131736371333 +13173713330123032703014bfebbbaa93f0433a9b99f353db6affeb4bba929d70426fd9be411 +ca026efd98cbcd0266fbda027cb5fccf00000002003d04f6026e05c300030007004840230003 +02073c050502000607050402030100073c049f033c5f006f008f009000a0000500b80224b308 +708d182b4e10f45d4dfdf6fd103c103c103c103c003f3c10ed11393931301335331533353315 +3dbcb9bc04f6cdcdcdcd00000000000200030000000000140001000000000034000400200000 +0004000400010000f01effff0000f000ffff10000001000000000006004800000000001f0000 +000100020003000400050006000700080009000a000b000c000d000e000f0010001100120013 +001400150016001700180019001a001b001c001d001e05ba001905ba001a05a7001904260018 +0000ffe70000ffe80000ffe7fe69ffe805ba0019fe69ffe802ea000000b8000000b800000000 +00a800ad016900ad00bf00c201f0001800af00b900b400c800170044009c007c009400870006 +005a00c80089005200520005004400940119ffb4002f00a1000300a100cd00170057007e00ba +00160118ffe9007f008503d300870085000d002200410050006f008d014cff75005c00df0483 +0037004c006e00700180ff58ff8eff92ffa400a500b903c8fffd000b001a0063006300cdffee +05d8ffdc002d005c0095009900df019209b500400057008000b9039d0072009a035d0401ff67 +fffa00030021007700cd0004004d00cd01c0022b004c006500e70118017c034305d8ffa3ffb0 +ffc40003001c005d0068009a00ba013501470221055cff4dffcd0016002d00780080009900b2 +00b600b600b800bd00da010c05f0ffa4fff00019002c0049007f00b400ce01c003fefd81fe3f +000000050018002900390049006f00be00c700d0012301c1026f050c05320540057affd40014 +00310055005700a700b400e601f7027e027e027f03c60446ff42000e0085009100bf00c200c5 +00e1011a012f014f01560229026f029e03720008002c00310031006400690089009800c700de +012b01b6020c02cf03a304ab04fb061dfee0ff0e00060026009b009d00c1010d011801200173 +018201d601e30243025f029b02e2039404a904d20761001c005e006d008d00ab00f701120138 +0151015b0168017c01870191019901cd01d001e802410254026b02ef0368037103bd04420442 +0453047304830586058b06e8fe58fec4fed1fef7ff32ff860051007c008100910095009e00b4 +00b900cf00d900d900df00e20105010b010e010e012001210155017b017b017e018d01a201a8 +01a901b401d001d001e201e901f201f501fb020002000206021b022102220222022302720277 +0294029c02cf02cf02d002ec02f903170322032b0335033c0359036f037103870390039003b5 +03e1041a04cf04ff053205320596059f05a805ab05c205f0060c0782080008ccfca3fd2afdde +fe00fe88fe96feb2feb4ffe100150019001a001c001f003c005100610061006a0078009600a5 +00af00d3010c0118011a012a013e014c0151015f016a0171017801820184019a01a501a801a9 +01ae01bc01cd01d701ef0200020d021c02210222022e02350242024f024f025e026502710290 +029202b402d602fa0307030b030f0315032a0347035d036503740379039603b003cc03dd03e2 +03f603fc03fc03ff040a041f04220426042b0447045f0475049e04e704e7055c05cb05e5060a +066d068606b806f10736073e07500751075d078f07b607d4086000b600c300b500b700000000 +000000000000000001e00381034503b5008e0233041902ce02ce002d005f0064034d023f0000 +02a80188027d01b402240578063b023b014e00f00426029402c6029f02f6023b034d014b0153 +006a0231000000000000061404aa0000003c04c300ed04bc026502ce03b50078060c017e02ef +060c00b201000239000001c50330042b03cb00da03df010704a100db040a011701ed02a70350 +010b01bd043e05580021039c00ae0371017d00b5024500000afb088c012b014e01aa00870054 +013201f803ff0003024e00b4003703e30083006b02d800ed00770088009701640467008e0033 +017c00e700a6029e0329056e062a061501c90269048a021301b4000204a90000023901240103 +05140084015d039a06ef02d9007500cf040a00de03ac04bc02cf02ae034d04f005520168006d +007d00860071ff810079055804d2016700030156002504e00094007c033204210094007f0072 +005c002f00b6001800ba00b80041034d00720018001f004c016a01550099009a009a009800b2 +00040078006900140057006e00ce00b4065402b80067050e016500e7000004cbfe52005affa6 +0099ff67006eff92002dffd40087ff7c00b800a800e5008f00a80185fe7b0070001e00d900de +014c054602cf0546ff2d028a02d90253029600b7000000000000000000000000000001250118 +00ea00ea00ae0000003e05bb008a04d70053003fff8cffd500150028002200990062004a00e4 +006d00ee00e5004803c00033fe4e02b1ff460370007905df0051ffa7ff1f010a0068ff6c004f +00bc00a507050061072b4043555441403f3e3d3c3b3a3938373534333231302f2e2d2c2b2a29 +2827262524232221201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403 +0201002c4523466020b02660b004262348482d2c452346236120b02661b004262348482d2c45 +234660b0206120b04660b004262348482d2c4523462361b0206020b02661b02061b004262348 +482d2c45234660b0406120b06660b004262348482d2c4523462361b0406020b02661b04061b0 +04262348482d2c0110203c003c2d2c20452320b0cd442320b8015a51582320b08d44235920b0 +ed51582320b04d44235920b09051582320b00d44235921212d2c20204518684420b001602045 +b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b0172370b101 +173e01b0172370b10217453ab10200080d2d2c45b01a234445b01923442d2c2045b003254561 +64b050515845441b2121592d2cb00143632362b0002342b00f2b2d2c2045b0004360442d2c01 +b00643b00743650a2d2c2069b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b0 +0361592d2c45b0112bb0172344b0177ae4182d2c45b0112bb01723442d2cb01243588745b011 +2bb0172344b0177ae41b038a45186920b01723448a8a8720b0a05158b0112bb0172344b0177a +e41b21b0177ae45959182d2c2d2cb0022546608a46b040618c482d2c4b53205c58b002855958 +b00185592d2c20b0032545b019234445b01a23444565234520b00325606a20b009234223688a +6a606120b01a8ab000527921b21a1a40b9ffe0001a45208a54582321b03f1b235961441cb114 +008a5279b31940201945208a54582321b03f1b235961442d2cb110114323430b2d2cb10e0f43 +23430b2d2cb10c0d4323430b2d2cb10c0d432343650b2d2cb10e0f432343650b2d2cb1101143 +2343650b2d2c4b525845441b2121592d2c0120b003252349b04060b0206320b000525823b002 +253823b002256538008a63381b212121212159012d2c4bb06451584569b00943608a103a1b21 +2121592d2c01b005251023208af500b0016023edec2d2c01b005251023208af500b0016123ed +ec2d2c01b0062510f500edec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2c +b02b2bb02a2a2d2c00b00743b006430b2d2c3eb02a2a2d2c352d2c76b8022323701020b80223 +4520b0005058b00161593a2f182d2c21210c6423648bb84000622d2c21b08051580c6423648b +b82000621bb200402f2b59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b0 +02602d2c0c6423648bb84000626023212d2cb4000100000015b00826b00826b00826b008260f +10161345683ab001162d2cb4000100000015b00826b00826b00826b008260f1016134568653a +b001162d2c4b53234b515a5820458a60441b2121592d2c4b545820458a60441b2121592d2c4b +53234b515a58381b2121592d2c4b5458381b2121592d2cb0134358031b02592d2cb013435802 +1b03592d2c4b54b012435c5a58381b2121592d2cb012435c580cb00425b00425060c64236461 +64b807085158b00425b00425012046b01060482046b0106048590a21211b2121592d2cb01243 +5c580cb00425b00425060c6423646164b807085158b00425b00425012046b8fff060482046b8 +fff06048590a21211b2121592d2c4b53234b515a58b03a2b1b2121592d2c4b53234b515a58b0 +3b2b1b2121592d2c4b53234b515ab012435c5a58381b2121592d2c0c8a034b54b00426024b54 +5a8a8a0ab012435c5a58381b2121592d2c4b5258b00425b0042549b00425b00425496120b000 +5458212043b0005558b00325b00325b8ffc038b8ffc038591bb04054582043b0005458b00225 +b8ffc038591b2043b0005458b00325b00325b8ffc038b8ffc0381bb00325b8ffc03859595959 +212121212d2c462346608a8a462320468a608a61b8ff8062232010238ab902c202c28a704560 +20b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2cb1020042b123018851b1400188 +535a58b910000020885458b202010243604259b12401885158b920000040885458b202020243 +6042b12401885458b2022002436042004b014b5258b2020802436042591bb940000080885458 +b202040243604259b94000008063b80100885458b202080243604259b94000010063b8020088 +5458b202100243604259b94000020063b80400885458b202400243604259595959592d2cb002 +4354584b53234b515a58381b2121591b21212121592d000000010000000300007399171c5f0f +3cf5081b080000000000a2e3272a00000000b9d5b4f6faaffd671000080c0000000900010001 +0000000000010000073efe4e00431000faaffe26100000010000000000000000000000000000 +001f060001000239002404e300300473004a0400003f04000088023900000473009605c700a4 +06aa00980556fffd023900ba047300870473004b02aa008505c700660473008601c700830473 +00440400005005c7009e0473004601c70088047300870556009e0473004a0473008704730042 +06aa008705c7000602aa003d000000000000002c0000015000000200000004d40000087c0000 +0b1400000b1400000ba000000ca800000fd400001180000011bc000013800000154000001648 +000017840000196400001a6000001c2400001dd800001f20000020d4000021c8000023900000 +2498000024dc000026800000287000002aa000002f0c00002f7800010000001f0100003f0076 +000700020010002f00560000040d0aff00030002b1540f4122031700ef031700ff0317000300 +1f0317002f0317004f0317005f0317008f0317009f03170006000f0317005f0317006f031700 +7f031700bf031700f00317000600400317b2923340b80317b28b3340b80317b36a6c3240b803 +17b2613340b80317b35c5d3240b80317b357593240b80317b34d513240b80317b344493240b8 +0317b23a3340b80317b331343240b80317b32e423240b80317b3272c3240b80317b312253280 +b80317b30a0d32c04116031600d00316000200700316000102c4000f0101001f00a0031500b0 +031500020306000f0101001f00400312b32426329fbf03040001030203010064001fffc00301 +b20d1132410a02ff02ef0012001f02ee02ed0064001fffc002edb30e11329f414a02e200af02 +e200bf02e2000302e202e202e102e1007f02e00001001002e0003f02e0009f02e000bf02e000 +cf02e000ef02e0000602e002e002df02df02de02de000f02dd002f02dd003f02dd005f02dd00 +9f02dd00bf02dd00ef02dd000702dd02dd001002dc0001000002dc0001001002dc003f02dc00 +0202dc02dc001002db000102db02db000f02da000102da02daffc002d3b2373932b9ffc002d3 +b22b2f32b9ffc002d3b21f2532b9ffc002d3b2171b32b9ffc002d3b2121632b802d2b2f9291f +b802e3b3202b1fa0413002d400b002d40002000002d4001002d4002002d4005002d4006002d4 +007002d40006006002d6007002d6008002d6009002d600a002d600b002d60006000002d60010 +02d6002002ca002002cc002002d6003002d6004002d6005002d6000802d0b2202b1fb802cfb2 +26421f411602ce02c70017001f02cd02c80017001f02cc02c60017001f02cb02c50017001f02 +c902c5001e001f02ca02c6b21e1f00410b02c6000002c7001002c6001002c7002f02c5000502 +c1b324121fff411102bf0001001f02bf002f02bf003f02bf004f02bf005f02bf008f02bf0006 +02bf0222b2641f12410b02bb00ca0800001f02b200e90800001f02a600a20800406a1f402643 +4932402043493240263a3d3240203a3d329f209f26024026969932402096993240268e923240 +208e92324026848c324020848c3240267a813240207a813240266c763240206c76324026646a +324020646a3240265a5f3240205a5f3240264f543240204f5432b8029eb724271f374f6b0120 +410f0277003002770040027700500277000402770277027700f90400001f029bb22a2a1fb802 +9a402b292a1f80ba0180bc0180520180a201806501807e01808101803c01805e01802b01801c +01801e0180400180bb0138000100800140b40180400180bb013800010080013940180180ca01 +80ad018073018026018025018024018020013740b80221b2493340b80221b2453340b80221b3 +41423240b80221b33d3e320f410f0221003f0221007f0221000300bf022100cf022100ff0221 +000300400221b320223240b80221b3191e3240b80222b32a3f3240b80221b32e3a326f414802 +c3007f02c3008f02c300df02c30004002f02c3006002c300cf02c30003000f02c3003f02c300 +5f02c300c002c300ef02c300ff02c3000600df02220001008f02220001000f0222002f022200 +3f0222005f0222007f022200ef0222000600bf022100ef02210002006f0221007f022100af02 +210003002f0221003f0221004f0221000302c302c30222022202210221401d101c102b104803 +8f1c010f1e014f1eff1e023700161600000012110811b8010db6f70df8f70d00094109028e02 +8f001d001f0290028f001d001f028fb2f91d1fb80198b226bb1f41150197001e0401001f0139 +00260125001f013800730401001f0135001c0801001f0134001c02ab001f0132b21c561fb801 +0fb2262c1fba010e001e0401b61ff91ce41fe91cb80201b61fe81cbb1fd720b80401b21fd51c +b802abb61fd41c891fc92fb80801b21fbc26b80101b21fba20b80201b61fb91c381fadcab804 +01b21f8126b8019ab21f7e26b8019ab61f7d1c471f6b1cb80401b21f6526b8019ab21f5e73b8 +0401400f1f52265a1f481c891f441c621f4073b80801b61f3f1c5e1f3c26b8019ab21f351cb8 +0401b61f301cbb1f2b1cb80401b61f2a1c561f291cb80101b21f231eb80401b21f5537b80168 +402c07960758074f07360732072c0721071f071d071b071408120810080e080c080a08080806 +0804080208000814b8ffe0402b00000100140610000001000604000001000410000001001002 +000001000200000001000002010802004a00b013034b024b5342014bb0c063004b6220b0f653 +23b8010a515ab005234201b0124b004b5442b0382b4bb807ff52b0372b4bb007505b58b10101 +8e59b0382bb00288b801005458b801ffb101018e851bb0124358b900010111858d1bb9000101 +28858d5959001816763f183f123e113946443e113946443e113946443e113946443e11394660 +443e11394660442b2b2b2b2b2b2b2b2b2b2b182b2b2b2b2b2b2b2b2b2b2b182b1db0964b5358 +b0aa1d59b0324b5358b0ff1d594bb09353205c58b901f201f04544b901f101f045445958b903 +3e01f2455258b901f2033e4459594bb8015653205c58b9002001f14544b9002601f145445958 +b9081e0020455258b90020081e4459594bb8019a53205c58b9002501f24544b9002401f24544 +5958b909090025455258b9002509094459594bb8040153205c58b173244544b1242445445958 +b917200073455258b9007317204459594bb8040153205c58b1ca254544b1252545445958b916 +8000ca455258b900ca16804459594bb03e53205c58b11c1c4544b11e1c45445958b9011a001c +455258b9001c011a4459594bb05653205c58b11c1c4544b12f1c45445958b90189001c455258 +b9001c01894459594bb8030153205c58b11c1c4544b11c1c45445958b90de0001c455258b900 +1c0de04459592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b65422b2b01b33b59635c456523456023456560234560b08b766818b080 +622020b163594565234520b003266062636820b003266165b059236544b063234420b13b5c45 +65234520b003266062636820b003266165b05c236544b03b2344b1005c455458b15c406544b2 +3b403b4523614459b347503437456523456023456560234560b089766818b080622020b13450 +4565234520b003266062636820b003266165b050236544b034234420b147374565234520b003 +266062636820b003266165b037236544b0472344b10037455458b137406544b2474047452361 +4459004b5342014b5058b108004259435c58b108004259b3020b0a124358601b215942161070 +3eb0124358b93b21187e1bba040001a8000b2b59b00c2342b00d2342b0124358b92d412d411b +ba04000400000b2b59b00e2342b00f2342b0124358b9187e3b211bba01a80400000b2b59b010 +2342b0112342002b7475737500184569444569444569447373737374757374752b2b2b2b7475 +2b2b2b2b2b737373737373737373737373737373737373737373737373732b2b2b45b0406144 +737400004bb02a534bb03f515a58b1070745b040604459004bb03a534bb03f515a58b10b0b45 +b8ffc0604459004bb02e534bb03a515a58b1030345b040604459004bb02e534bb03c515a58b1 +090945b8ffc06044592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b752b2b2b2b2b2b2b435c58 +b9008002bbb301401e017400735903b01e4b5402b0124b545ab012435c5a58ba009f02220001 +007359002b7473012b01732b2b2b2b2b2b2b2b737373732b002b2b2b2b2b2b00456944734569 +4473456944737475456944734569444569444569447374456944456944732b2b2b2b2b732b00 +2b732b74752b2b2b2b2b2b2b2b2b2b2b2b2b2b7374752b0000> +] def +/f-0-0 currentdict end definefont pop +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 672 453 +%%EndPageSetup +q 0 -1 672 454 rectclip q +0 452.063 672 -453 re W n +0 g +0.8 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 452.0625 cm +111.25 419.844 m 495.25 419.844 l S Q +487.25 32.219 m 484.051 29.02 l 495.25 32.219 l 484.051 35.418 l h +487.25 32.219 m f* +0.8 w +q -1 -0.000000000000000122 -0.000000000000000122 1 0 452.0625 cm +-487.25 -419.844 m -484.051 -423.043 l -495.25 -419.844 l -484.051 +-416.645 l h +-487.25 -419.844 m S Q +BT +32 0 0 32 487.25 0.21875 Tm +/f-0-0 1 Tf +<01>Tj +ET +BT +32 0 0 32 -0.75 80.21875 Tm +/f-0-0 1 Tf +<020304050607>Tj +ET +BT +32 0 0 32 -0.75 208.21875 Tm +/f-0-0 1 Tf +<020304050608>Tj +ET +BT +32 0 0 32 -0.75 144.21875 Tm +/f-0-0 1 Tf +<020304050609>Tj +ET +1 1 0 rg +111.25 112.219 112 -32 re f +0 0.501961 0 rg +223.25 240.219 80 -32 re f +1 1 0 rg +303.25 112.219 16 -32 re f +0.501961 0 0 rg +319.25 176.219 168 -32 re f +0 g +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 452.0625 cm +223.25 195.844 m 223.25 435.844 l S Q +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 452.0625 cm +303.25 195.844 m 303.25 435.844 l S Q +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 452.0625 cm +319.25 195.844 m 319.25 435.844 l S Q +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 452.0625 cm +111.25 195.844 m 111.25 435.844 l S Q +[] 0.0 d +q 1 0 0 -1 0 452.0625 cm +111.25 163.844 m 111.25 187.844 l S Q +111.25 272.219 m 108.051 275.418 l 111.25 264.219 l 114.449 275.418 l h +111.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 452.0625 cm +-179.844 111.25 m -176.645 108.051 l -187.844 111.25 l -176.645 114.449 +l h +-179.844 111.25 m S Q +BT +0 32 -32 0 119.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0607>Tj +ET +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 452.0625 cm +183.25 195.844 m 183.25 435.844 l S Q +[] 0.0 d +q 1 0 0 -1 0 452.0625 cm +183.25 163.844 m 183.25 187.844 l S Q +183.25 272.219 m 180.051 275.418 l 183.25 264.219 l 186.449 275.418 l h +183.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 452.0625 cm +-179.844 183.25 m -176.645 180.051 l -187.844 183.25 l -176.645 186.449 +l h +-179.844 183.25 m S Q +BT +0 32 -32 0 191.25 296.21875 Tm +/f-0-0 1 Tf +[<0706040c0d>-1<0e>-1<0e>-1<01>1<060f>]TJ +ET +0.8 w +q 1 0 0 -1 0 452.0625 cm +223.25 163.844 m 223.25 187.844 l S Q +223.25 272.219 m 220.051 275.418 l 223.25 264.219 l 226.449 275.418 l h +223.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 452.0625 cm +-179.844 223.25 m -176.645 220.051 l -187.844 223.25 l -176.645 226.449 +l h +-179.844 223.25 m S Q +BT +0 32 -32 0 231.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0608>Tj +ET +0.8 w +q 1 0 0 -1 0 452.0625 cm +303.25 163.844 m 303.25 187.844 l S Q +303.25 272.219 m 300.051 275.418 l 303.25 264.219 l 306.449 275.418 l h +303.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 452.0625 cm +-179.844 303.25 m -176.645 300.051 l -187.844 303.25 l -176.645 306.449 +l h +-179.844 303.25 m S Q +BT +0 32 -32 0 311.25 296.21875 Tm +/f-0-0 1 Tf +[<08061011>-1<1213050b06>1<0f>]TJ +ET +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 452.0625 cm +431.25 195.844 m 431.25 435.844 l S Q +BT +0 32 -32 0 231.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0608>Tj +ET +[] 0.0 d +q 1 0 0 -1 0 452.0625 cm +431.25 163.844 m 431.25 187.844 l S Q +431.25 272.219 m 428.051 275.418 l 431.25 264.219 l 434.449 275.418 l h +431.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 452.0625 cm +-179.844 431.25 m -176.645 428.051 l -187.844 431.25 l -176.645 434.449 +l h +-179.844 431.25 m S Q +BT +0 32 -32 0 439.25 296.21875 Tm +/f-0-0 1 Tf +[<140d>-1<0315>-1<1116>-1<170d>-1<06>1<08>]TJ +ET +0.8 w +q 1 0 0 -1 0 452.0625 cm +343.25 163.844 m 319.25 187.844 l S Q +324.906 269.875 m 324.906 274.402 l 319.25 264.219 l 329.434 269.875 l +h +324.906 269.875 m f* +0.565685 w +q 1 1 1 -1 0 452.0625 cm +71.359 253.547 m 73.623 251.283 l 65.703 253.547 l 73.623 255.811 l h +71.359 253.547 m S Q +BT +0 32 -32 0 351.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0609>Tj +ET +0.8 w +q 1 0 0 -1 0 452.0625 cm +495.25 67.844 176 192 re S Q +BT +32 0 0 32 503.25 352.21875 Tm +/f-0-0 1 Tf +[<18>-1<0e>-1<1612>-1<0e>-1<160119010d17>]TJ +ET +BT +32 0 0 32 503.25 312.21875 Tm +/f-0-0 1 Tf +[<1a16>-1<1b1a>]TJ +ET +0 0.501961 0 rg +583.25 344.219 80 -32 re f +1.6 w +q 1 0 0 -1 0 452.0625 cm +583.25 107.844 80 32 re S Q +0 g +BT +32 0 0 32 503.25 264.21875 Tm +/f-0-0 1 Tf +[<1c>-1<1615>-1<0b>]TJ +ET +0.501961 0 0 rg +583.25 296.219 80 -32 re f +0 g +BT +32 0 0 32 503.25 216.21875 Tm +/f-0-0 1 Tf +<11121d>Tj +ET +1 1 0 rg +583.25 248.219 80 -32 re f +Q Q +showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore +%%EOF diff --git a/Master/Masterarbeit/thesis/img/prio_inv.svg b/Master/Masterarbeit/thesis/img/prio_inv.svg new file mode 100644 index 0000000..aab3d57 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/prio_inv.svg @@ -0,0 +1,370 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="prio_inv.svg"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path3763" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.2399315" + inkscape:cx="242.67625" + inkscape:cy="720.67314" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + showguides="false" + inkscape:snap-page="false" + inkscape:window-width="1240" + inkscape:window-height="968" + inkscape:window-x="1286" + inkscape:window-y="4" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid2985" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 20,512.36218 480,0" + id="path2987" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="490" + y="552.36218" + id="text4201" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4203" + x="490" + y="552.36218">t</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-120" + y="452.36218" + id="text4205" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4207" + x="-120" + y="452.36218">Task L</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4209" + y="292.36218" + x="-120" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="292.36218" + x="-120" + id="tspan4211" + sodipodi:role="line">Task H</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-120" + y="372.36218" + id="text4213" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4215" + x="-120" + y="372.36218">Task M</tspan></text> + <rect + style="fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect4217" + width="140" + height="40" + x="20" + y="412.36218" /> + <rect + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect4219" + width="100" + height="40" + x="160" + y="252.36218" /> + <rect + style="fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect4221" + width="20" + height="40" + x="260" + y="412.36218" /> + <rect + style="fill:#800000;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect4223" + width="210" + height="40" + x="280" + y="332.36218" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0" + d="m 160,232.36218 0,300" + id="path4227" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0" + d="m 260,232.36218 0,300" + id="path4229" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0" + d="m 280,232.36218 0,300" + id="path4231" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4233" + d="m 20,232.36218 0,300" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 20,192.36218 0,30" + id="path4235" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="30" + id="text4419" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + x="-182.36218" + y="30" + id="tspan4423">Akt. L</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" + d="m 110,232.36218 0,300" + id="path4427" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)" + d="m 110,192.36218 0,30" + id="path4431" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="120" + id="text4979" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + id="tspan4981" + x="-182.36218" + y="120">L sperrt C</tspan></text> + <path + inkscape:connector-curvature="0" + id="path4983" + d="m 160,192.36218 0,30" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text4985" + y="170" + x="-182.36218" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan4987" + y="170" + x="-182.36218" + sodipodi:role="line">Akt. H</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 260,192.36218 0,30" + id="path4989" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="270" + id="text4991" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + x="-182.36218" + y="270" + id="tspan4993">H block. C</tspan></text> + <path + inkscape:connector-curvature="0" + id="path5006" + d="m 420,232.36218 0,300" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="170" + id="text5008" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + x="-182.36218" + y="170" + id="tspan5010">Akt. H</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 420,192.36218 0,30" + id="path5012" + inkscape:connector-curvature="0" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text5014" + y="430" + x="-182.36218" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan5016" + y="430" + x="-182.36218" + sodipodi:role="line">Deadline H</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 310,192.36218 -30,30" + id="path5018" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text5020" + y="320" + x="-182.36218" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan5022" + y="320" + x="-182.36218" + sodipodi:role="line">Akt. M</tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3032" + width="220" + height="240" + x="500" + y="72.362183" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="510" + y="112.36218" + id="text3808" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3810" + x="510" + y="112.36218">Prioritäten</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="510" + y="162.36218" + id="text3812" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3814" + x="510" + y="162.36218">high</tspan></text> + <rect + y="122.36218" + x="610" + height="40" + width="100" + id="rect3816" + style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" /> + <text + sodipodi:linespacing="125%" + id="text3818" + y="222.36218" + x="510" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="222.36218" + x="510" + id="tspan3820" + sodipodi:role="line">mid.</tspan></text> + <rect + style="fill:#800000;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect3822" + width="100" + height="40" + x="610" + y="182.36218" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="510" + y="282.36218" + id="text3824" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3826" + x="510" + y="282.36218">low</tspan></text> + <rect + y="242.36218" + x="610" + height="40" + width="100" + id="rect3828" + style="fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" /> + </g> +</svg> diff --git a/Master/Masterarbeit/thesis/img/prio_pip.eps b/Master/Masterarbeit/thesis/img/prio_pip.eps new file mode 100644 index 0000000..c686e9d --- /dev/null +++ b/Master/Masterarbeit/thesis/img/prio_pip.eps @@ -0,0 +1,878 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.10.2 (http://cairographics.org) +%%CreationDate: Wed Jan 11 15:34:44 2012 +%%Pages: 1 +%%BoundingBox: 0 -1 762 537 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%EndComments +%%BeginProlog +/cairo_eps_state save def +/dict_count countdictstack def +/op_count count 1 sub def +userdict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +11 dict begin +/FontType 42 def +/FontName /ArialMT def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 1 /uni0074 put +Encoding 2 /uni0054 put +Encoding 3 /uni0061 put +Encoding 4 /uni0073 put +Encoding 5 /uni006B put +Encoding 6 /uni0020 put +Encoding 7 /uni004C put +Encoding 8 /uni0048 put +Encoding 9 /uni004D put +Encoding 10 /uni0041 put +Encoding 11 /uni002E put +Encoding 12 /uni0070 put +Encoding 13 /uni0065 put +Encoding 14 /uni0072 put +Encoding 15 /uni0043 put +Encoding 16 /uni0062 put +Encoding 17 /uni006C put +Encoding 18 /uni006F put +Encoding 19 /uni0063 put +Encoding 20 /uni0068 put +Encoding 21 /uni0069 put +Encoding 22 /uni0067 put +Encoding 23 /uni006E put +Encoding 24 /uni002C put +Encoding 25 /uni0077 put +Encoding 26 /uni0050 put +Encoding 27 /uni00E4 put +Encoding 28 /uni006D put +Encoding 29 /uni0064 put +/CharStrings 30 dict dup begin +/.notdef 0 def +/uni0074 1 def +/uni0054 2 def +/uni0061 3 def +/uni0073 4 def +/uni006B 5 def +/uni0020 6 def +/uni004C 7 def +/uni0048 8 def +/uni004D 9 def +/uni0041 10 def +/uni002E 11 def +/uni0070 12 def +/uni0065 13 def +/uni0072 14 def +/uni0043 15 def +/uni0062 16 def +/uni006C 17 def +/uni006F 18 def +/uni0063 19 def +/uni0068 20 def +/uni0069 21 def +/uni0067 22 def +/uni006E 23 def +/uni002C 24 def +/uni0077 25 def +/uni0050 26 def +/uni00E4 27 def +/uni006D 28 def +/uni0064 29 def +end readonly def +/sfnts [ +<00010000000a008000030020636d61700112f1c500002f540000007c63767420962ad2760000 +2fd0000006306670676dcc79599a000036000000066e676c79663375615d000000ac00002ea8 +68656164ce98269200003c70000000366868656112330c9400003ca800000024686d747882f0 +0cc200003ccc0000007c6c6f63610002e89000003d48000000806d61787004dc0ca800003dc8 +000000207072657052fec4e900003de800000aff000201000000050005000003000700002111 +21112521112101000400fc2003c0fc400500fb002004c000000000010024fff2022a05990017 +00d8b9000affc0b323263409b8ffc0404123263480190100010c0d0a0103001610092b0f0a06 +161c030b0f10220022010d12250c01ff070845094560077007800790070400072007a007b007 +c007d0070607b8ffeeb41010025507b8fff4b40f0f025507b8fff2b40e0e025507b8fff8b40d +0d025507b8fff8b40c0c025507b8fffab41010065507b8fff0400b0f0f065507060c0c065507 +b8ffe8b40d0d065507ba026a00180136b166182b10f62b2b2b2b2b2b2b2b2b5d71f4e410ed3c +fd3c10e4f43c003fed3f3cfd3c1139123911333310c93130015d2b2b25170623222626351123 +353311371133152311141616333202101a4c3c626c2c8484b3b5b5132b281ea19f103e65a202 +638c01076cfe8d8cfd934d2c1a0000010030000004ba05ba00070089400d05021e0403020008 +0706050409b80273b320040104b80101b7062001022f030103b80101b5010120000100b8ffe8 +400b1010025500080f0f025500b8fff2b40c0c025500b8ffe2b40d0d025500b8fffcb40c0c06 +5500b8fffeb40d0d065500b80273b308b699182b10f62b2b2b2b2b2b5d3c10f45d3c10fde45d +e6103c103c003f3f3cfd3c313021112135211521110213fe1d048afe1b050dadadfaf3000000 +0002004affe8041c043e00280037022d402c090d092a190d1a2a290d2a2a390d3615371b3a2a +492a5d0d5d2a6a0d692a60308a0d86299a169b1aa90d1528b8ffe8b40b0b065527b8ffe84019 +0b0b0655a619aa28b619bb28c419cf28d215dd28084416011eb8fff440110c0c065512120c0c +0655050c0c0c065535b8ffe040550c0c06551f171f182b2c2a343904392c4904482c5608592b +6608692b760c870cc90cf90df92b1137340e0104102f243417322114185f296f2902291c2f0e +3f0e8f0e9f0eff0e059f0eaf0eef0e030e0c0f0f02550eb8ffeab4101002550eb8fff4401510 +1006550e0c0d0d06550e060f0f06550e0e1c0317b802aab61895141c1c0700b8fff4401a0c0c +06550045270a321c030b2961106100060d0d025500252124b8ffecb41010025524b8ffec400b +0d0d025524040c0c025524b8ffe4b40b0b025524b8fff4b40b0b065524b8ffdc400b10100655 +24060f0f065524b8fffcb40c0c065524b8025b400e27400026102620263026af260539b8ffc0 +b40e0e025526b8ffd6b60e0e0255263139b8ffc0400d1e23343039c03902a039013917b8fff4 +404110100655172518222f24bf06cf06021f063f0602060e0f0f0255060c0d0d025506180c0c +0255060c0b0b0255060c0b0b0655060e0d0d065506100c0c065506313810f62b2b2b2b2b2b2b +5d71edf4ed2b105d712bf62b2b5dedf42b2b2b2b2b2b2b2b3cfd2be5e5003fed3fe42b3fedfd +e41112392f2b2b2b2b2b5d71ed711112391112393901111217393130005d2b2b2b2b01715d2b +2b0071250606232226353436363736373637363534272623220607273e023332161617161515 +14161723260306070e02151416333236373635033c64b96aafbc477348356bda67013345887f +791db0186ed08988aa5010091722bc1c1762c46f5c326d6968a2261d835546ab854e814e140e +0d1a24250a6e2d3d597118718b4b40614a2e78f0fb853d3801dd281c10284d2f48605b4f3d77 +00000001003fffe803b1043e00300317407b042214223a094a094424562265227c098e098424 +a613ab2cc2030d09171a1817304b2cd617051b025502021032010a185c085c095c0a5c0b5c0c +5c0d6a086a096a0a6a0b6a0c6a0db426b4270f27262427242936245a0a590b64266428742374 +248024930a9c0c9228972c9530a40aa90ca327a428b326c5261628b8fff4b40d0d065522b8ff +f4b40d0d065523b8fff4b40d0d065524b8fff4b40d0d065528b8fff4b40c0c065522b8fff4b4 +0c0c065523b8fff4b40c0c065524b8fff4b40c0c06551db8ffde40121e395a0827250c0a041a +202615040b2e1d1ab802aa4022192c0b0b02551f193f194f195f19af19cf19060f191f196f19 +df19041f198f190219bd02550015000002aa0001ffc040140b0b025510014001021001d00102 +000110010201b8ffc0b314163401b8ffc040100e113401012e5c1d6c1d021d1c150704b8fff4 +b40b0b025504b8ffe6b41010065504b8ffe640130f0f0655041c2e0b1f1a011a241940131834 +32b8ffc0402f0f0f025519180f0f025519180d0d025519160c0c025519201010065519200f0f +065519100c0c065519160d0d065519b8025bb207242ab8ffc0b51c39d02a012ab8ffe6b40c0c +02552ab8ffe8b40f0f02552ab8ffe8b40c0c06552ab8ffeab60d0d06552a1a32b8ffc0402127 +2a346032c032023f3280320232100101012400180d0d025500100d0d06550020b8fff4b40d0d +025520b8fff4b41010065520b8fff440190f0f065520240f100b0b02550f160c0c02550f200d +0d02550fb8fffa40200f0f02550f0e0c0c06550f0c0d0d06550f22df00013f004f0002001931 +3437182b4e10f45d714df42b2b2b2b2b2bed2b2b2b102b2bed724e105d712bf62b2b2b2b712b +4dedf42b2b2b2b2b2b2b2b2bed72003fed2b2b2b3fed7112392f2b2b5d71722be410fd5d7172 +2be41112391112390111121739313043794040272d1e2305142c261110121013100306220d20 +1b000928071b01052d071b011e14201b00210e231b0022230d0c08290a1b012827090a062b04 +1b001f101d1b01002b2b103c103c2b103c103c2b012b2b2b2b2a2b818181002b2b2b2b2b2b2b +2b2b5d71015d72715d1337161633323635342726272e02353436373636333216161707262623 +2206151417161716171e02151406062322263fb20f897b7c78352593c6994f41382a91537dbd +5a11b00c73697c6a16162f1b84bf975669c67dcfd9013d1c6b7265443d2318253249814e4779 +281f2b487b6718525c5237231c1d130a2433417c5c5a9f57ac0000010088000003f805ba000b +0261401b060c0d0d0655070656065a09030f0df305f60603090c1010025506b8fff4b40c0c02 +550ab8fff4b40c0c025509b8fff4b40c0c025503b8ffe840100d0d06555503770a0212062013 +213408b8fff0b312273409b8fff0b41227341205b8fff0b312213409b8fff040841227340604 +04050406370947040525062d0a580a7703750ada03e30607a60601230626072508390638093f +0d4f0d59045906580759097d0479059909c606d204d606e406e907f706f90815120a0a050303 +04020606070909080a0a050908082507061407070603040425050a1405050a0a090603040801 +02000405060708080b0b000a04b8010f400905040c0c0655052208b8010f402120073f070207 +100c0c0655071a900d010d0b2500022501019000013f004f000200b8fffe40310e0e02550010 +0d0d025500100c0c0255000a0b0b025500120b0b065500120c0c065500080d0d065500190c0d +e1214766182b2b4ef42b2b2b2b2b2b2b5d713c4d10ed10ed4e1071f62b5d4dedf42bed003f3c +103c103c3f3c3f3c11173987052e2b047d10c487052e182b0e7d10c40710083c083c0310083c +083cb10602435458400d4b09011f0984030209180d1134002b5d7159313001435c58400a092c +1d3909081d1d3c06b8ffdeb21d3906b8ffd4b2203906b8ffd4b121392b2b2b2b2b595d00715d +0171002b2b435c58b90006ffc0b2213903b8ffc0b2163903b8ffdeb2103906b8ffdeb2103903 +b8ffdeb20c3903b8ffdeb10b392b2b2b2b2b2b59012b2b2b435c584012dd0401081416390908 +14143c090814143c06b8fff6b2183906b8ffecb11b392b2b2b2b2b015d59005d2b2b2b2b2b01 +5d712b33113311013301012301071188b401aae9fe6a01bfdefea17f05bafcbc01b0fe76fd64 +021f7afe5b00000100960000042a05ba0005006d400c010204031e05000820040104b802a740 +0f070203200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500b8fffab4 +0c0c025500b8fff6b40c0c065500b8fff8400a0d0d0655005d063b5c182b10f62b2b2b2b2b2b +5d3cfd3c10e65d003f3cfd3c3f313033113311211596c202d205bafaf3ad0000000100a40000 +052205ba000b00d8b9000dffc0401a13153404031e090aa00ad00a020a0502020b0808050820 +070706b8ffeeb40f0f025506b8fff2400b0d0d025506100c0c025506b8ffe040180b0b065506 +010c0c0655065d800d010d020b200120000100b8ffc0400a13153400201010025500b8fff6b4 +0f0f025500b8fff6b40d0d025500b8fffa400b0c0c025500080b0b065500b8fff7b40c0c0655 +00b8fff840160d0d0655005d0c200d01200d500d600d700d043b59182b5d7110f62b2b2b2b2b +2b2b2b5d3cfd3c105df62b2b2b2b2b3c10fd3c003f3c3f3c395d2f3cfd3c3130012b33113311 +2111331123112111a4c202fac2c2fd0605bafda6025afa4602b3fd4d0000000100980000060f +05ba001002e4b10202435458b90008fff6400b0c0c0255080e0d11025502b8ffeeb40d110255 +05b8ffee40280d1102550c120c0c0255050f0c030900010208090b0e000809020a0b06101002 +550b100d0d02550bb8fffab60c0c02550b1000b8ffe6b41010025500b8fff8b40f0f025500b8 +fffcb40d0d0255002f2b2b2bcd2f2b2b2bcd003f3fc0c010d0d0c0111217392b2b3130012b2b +2b001bb10602435458401f07200b0b065506200b0b065503200b0b065504200b0b065505200b +0b065508b8fff240230b0b0655020c0b0b065503060c0c0655020e0c0c0655090c0c0c06550a +0c0c0c065507b8fff8b40d0d065508b8fff8401f0d0d06552605010c200a12340f200a12340f +050c0300010e0b00080801020ab8ffeeb40b0b06550ab8ffeeb40c0c06550abb025600120010 +0256400d000c0b0b065500060c0c065500b8fff8b40d0d065500012f2b2b2bf42ff42b2b003f +3c3f3c3c111217392b2b5d3130012b2b2b2b2b2b2b2b002b2b2b2b2b1b407f00020f0814021b +0804760c860cc80c03090c490c490f032904250d2c0e58035b04760d780e870d080b02050839 +0d360e4f024b03440740084d0d420e0a9802990396079608a803a7070612020f0e0e30050214 +050502080c0d0d300508140505080c520f5201400102020808090a0b0b0d0d0e0e1000080902 +601280120212ba02a8000d0131b2052008b80131400a0c090a20400c7f0b010bba0256000e01 +0bb2052002b8010b40090f0100200f70100110b80256b72005600580050305b802a8b3113b59 +182b1910f45df45d3c18fd3c10ed1a1910edf45d3c1a18fd3c10ed1a1910ede45d00183f3f3c +3c103c103c103c103c103c103c1a10eded87052e2b877dc4872e182b877dc43130004bb00b53 +4bb01e515a58bd000cfffb0008ffd60002ffd638383859014bb00c534bb028515a58b9000dff +f8b10e0a38385901435c58b9000dffd4b621390e2c21390db8ffd4b637390e3237390db8ffd4 +b52d390e2c2d392b2b2b2b2b2b5972715d00715d015d59593311210116173637012111231101 +230111980124015b30161935015f0105bbfe56affe5805bafbf29148509b03fcfa4604cbfb35 +04e0fb2000000002fffd0000055905ba0007000e0167b6010e0f10025502b8fff2b40f100255 +02b8fff8b40d0d065502b8fff440590c0c0655090c0c0c0655050c0c0c06552f103010670868 +09601088039010c905c606c010f0100b0805590156025010680bb010f30cf30df30e09040c04 +0d040e030b0a090504040c0d0e080607070c09050408060c07010000b8fff8400f0c0c025500 +20070c1407070c020303b8fff840150c0c02550320040c1404040c091e0505081e060306b802 +70400900080ce94002010202ba010b0001010b40120c2000650703525004cf04df0403900401 +04b80101400b500cc007df0c03900c010cb8010140100f07cf07027f0780070207930fd6d718 +2b10f45d7119f45d71f45d7118ed10ed1a1910eded00183f3c1aed3fe43c10ed3c10ed87052e +2b2b7d10c4872e182b2b7d10c401111239391139398710c4c40ec4c4870510c4c40ec4c43130 +014bb00b534bb01e515a58b4040f030807bafff00000fff838383838590172715d2b2b2b2b2b +2b230133012303210313210326270607030233d10258ddabfd9ba1d901f19946221c3305bafa +4601bcfe44025a0196b9778d8b000000000100ba0000018700cd000300254018023c000a023c +5f006f007f00af0004a0000100a004a198182b10f65d5ded003fed313033353315bacdcdcd00 +00020087fe690421043e0012001e0162408e0c102d103d104b10043f20b020021f20290c231d +3215321d421d70209020083a173a1b4a174a1b59085b0c5c175c1b6a086b0c69106d176b1bc0 +20d314dd18dd1ad31ee414e41ee020ff201623042b102b1535043a1046044a105a10e50beb1d +fe100b110e03161c1c06070106161c0e0b000e1924d00a01100a400a600a800a0420400b0b02 +5520400d0d02550ab8ffe6400b0f0f02550a180d0d02550ab8fffab40c0c02550ab8ffeeb40b +0b06550ab8fff4b40f0f06550ab8ffe840230c0c06550a74011333023312250000c001019001 +a001b001f001041f013f014f010301b8fffc401d0e0e025501100d0d025501100c0c02550110 +0b0b0255010c0b0b065501b8fff6b41010065501b8fffc40160f0f0655010c0c0c065501120d +0d065501191f473718012b4e10f42b2b2b2b2b2b2b2b2b5d71723c4d10fdf4e410fd2b2b2b2b +2b2b2b2b5d71ed003f3fed3f3fed113912393130005d015d7172007113113315363633321616 +15140206232226271103141633323635342623220687a43a926888d06a75df7b5a8f2e11a676 +78aba77473b1fe6905bd8a51518cff98a3fefb8b4c3afdfb03a4cdc4cbd5cbcad7000002004b +ffe8041e043e0015001d015340171f001c150255035d055d09550b65036b056f09650b0815b8 +ffe4b40d0d065511b8ffe440520d0d06551d1c0d0d06552712d905fa14f61a0431123a19311c +41124d1a411c51125c19521c61126d1a611c78067815f602f618100016010f0d171750166016 +701603161c0f9010a010021010041b1c0a0700ba02aa0001ffc0b41010025501b8ffc0401010 +1006551001010195131c040b17400db8ffdcb40d0d02550db8ffeeb40d0d06550db8ffeab40c +0c06550db8ffc04009272a34b00d010d1a1fb8ffc0b32526341fb8ffc040411e2334301f011f +163310240740242a341f073f074f070307200b0b025507180c0c0255071c0d0d0255070e0b0b +0655071c0c0c065507160d0d065507191e3437182b4e10f42b2b2b2b2b2b5d2b4dfde44e1071 +2b2bf6712b2b2b2b4ded003fedfd5d2b2be43fed12392f5d3cfd713c01111239391239313001 +5d005d2b2b2b0171720117060623220011100033320011140721161633323601212627262322 +06035eba2ceeb9e9feef0114dcd5010e01fce80ab285638cfdda02510c3856897ca9015617a3 +b4011f0103010c0128fedefef91020afba680195864368a6000000010085000002c6043e0011 +00c9403b2f1301100401230434044304530466047404060911080908090d1311090d00030801 +0b1c06070106000a0928900801082220130113022211250100b8ffc04010333634f000010000 +2000d000e0000400b8fff8b41010025500b8fff840110e0e025500040c0c025500060b0b0255 +00b8fffcb41010065500b8fff440160f0f065500060c0c065500080d0d0655004e1247c4182b +10f62b2b2b2b2b2b2b2b5d712b3cfde4105df472e4003f3f3fed113939113939011112393900 +10c9870e7dc43130005d72015d33113315363633321707262322060706151185a23e693f5b5e +3e42423b5e141e0426a171483aa727473f6072fdd400000000010066ffe7057605d3001d00d3 +b563026a1d0201b8ffe8b40b0b065500b8ffe8405f0b0b06552000320d63007000741d800084 +1d90009a05ab03a50db903b40dc70dd000e41df31d110e121d111d1d032a0628112a1c201f47 +0d56145715561968056b1d7b128b129a03990e9a1ca801a402a811d50e130014001a1014101a +0402b8ffdeb2283901b8ffc0402d2839100f0001041b131e0c031b1e040910260f4a00262001 +01011a1f1726200801080c0b0b065508191e635c182b4e10f42b5d4ded4e10f65d4dedf4ed00 +3fed3fed1117393130012b2b5d5d71005d2b2b01720117060423222402353412243332041707 +2626232206021514121633323604b4c23dfec3e5edfed79baf0143c2dc012c3bbf33c293a9e3 +5c6de686a3e2020231effbc1016ed2e50155b1e0cb2da092a2feef91bbfee98abc0000000002 +0086ffe8041f05ba0010001d0180409b01050c0f240535054505053f1fb01f021f1f221c331c +421c701f901f063a133c163c1a4c164c1a5d085d0d580f5d165e1a6a086c0d680f6e166e1ac0 +1fd90cda17da19e213ec17ec19e31de01fff1f1920052f0f2f1430053f0f40054c0f50056605 +da1df504fa100c10150e040602001b1c0607010a151c0e0b1824d00b01100b400b600b800b04 +1f400d0d02550b0c0f0f02550b180d0d02550bb8fff6b40c0c02550bb8fff0b40b0b06550bb8 +fff4b40f0f06550bb8ffe0b40c0c06550bb8fff4402f0d0d06550b7401113300040c0c025500 +040d0d0655003303250202c001019001a001b001f001041f013f014f010301b8fffeb4101002 +5501b8fffc401d0e0e0255010c0d0d025501100c0c025501120b0b0255010c0b0b065501b8ff +f8b41010065501b8fffc40160f0f065501180c0c065501140d0d065501191e4737182b4e10f4 +2b2b2b2b2b2b2b2b2b2b5d71723c4d10fdf42b2be410fd2b2b2b2b2b2b2b2b5d71ed003fed3f +3fed3f11391112393130005d015d7172007121231133113633321e0215100023222703141716 +333236353426232206012da7b472b162af7140fef2bdbc6b0234559176aca57576ac05bafdf5 +8f4f8fca73feeffed69d0196bf558bcdcbd0c6cd0000000100830000013705ba000300e3b605 +360b0b025505b8ffc0b337383405b8ffc0b334353405b8ffc0b330313405b8ffc0b322253405 +b8ffc040251517340f051f059f05df05044f05df05f005031f0570058005ff05040100000a02 +03250100b8ffc0b337383400b8ffc040153335349f0001c000f0000200002000d000e0000400 +b8fff8b41010025500b8fffa401d0e0e025500040c0c0255000a0b0b025500140b0b06550008 +1010065500b8fffeb40d0d065500b8ffffb40c0c065500b8fffc400a0c0c0655004e04475018 +2b10f62b2b2b2b2b2b2b2b2b5d71722b2b3cfd3c003f3f3130015d71722b2b2b2b2b2b331133 +1183b405bafa460000020044ffe80427043e000d0019016bb615180d0d065513b8ffe8b40d0d +06550fb8ffe840730d0d065519180d0d065512070a190c470648085606590867066908083410 +3a123a16351845104b124b1645185c055c0952105d125d1652186d056d0964106d126d166418 +7701150906050d5b035405540a5b0c6c036505650a6c0c0a171c0407111c0b0b14241b400d0d +02551b400b0b025507b8ffea40110f0f025507180d0d025507100b0b025507b8fff0b40b0b06 +5507b8fff0b40d0d065507b8fff0b40f0f065507b8fff0b40c0c065507b8ffc0401324253430 +0701000710072007030731df1b011bb8ffc040491e2334301b011b0e24000c0e0f025500120d +0d0255000c0c0c0255001c0b0b0255000e0b0b0655000e0d0d0655000c1010065500160c0c06 +5500402425341f003f000200311a3437182b10f65d2b2b2b2b2b2b2b2b2bed10712b5df65d5d +2b2b2b2b2b2b2b2b2b2bed003fed3fed313001715d0071435c58400953055309620562090401 +5d59002b2b2b2b131037363332001514060623220013141633323635342623220644a489c5db +01167beb8bdffeedb9b28786b2b38587b2021301278e76fee1fdcdeb82011e010dcccbccd1c5 +cbca000000010050ffe803ed043e001a015ab1020243545840340e7f0f010f0b014000500070 +00030004121c0b07181c040b010e1507080e0e0255070c0d0d0255070c0c0c025507100b0b02 +55072f2b2b2b2bcdd4c6003fed3fed10c45d3210c45d3231301b4047090c011f1c4313431753 +135317601360179b029b039a0da410a41a0c080d190a6a0269036a05750c700d800da60cb509 +b60ab50c0c160c860ce302030e225f0f6f0f7f0f030f01b802aa407930004000500060007000 +9000a000e000f00009000f0f0b000004121c0b07181c040b1c0f010f240e080d0d06550e221b +000100240b2b1f010100010101400b0b065501401010065501480c0c0655011a0d0d06550149 +1c1524cf07011f073f0702070e0b0b0655070a1010065507120c0c065507311b34c4182b10f6 +2b2b2b5d71ed10f62b2b2b2b5d724b53234b515a58b90001ffc03859ed72f42bed72003fed3f +ed12392f11392f105de4105de43130005d71015d715901170606232200113412363332161707 +2626232206151416333236033cb11defaedafef772e989addc1faf197f5a88aaa4846a8e0185 +17b7cf011d010aac010281afa11b6b6cc3d3d6c2820000010087000003e805ba00140161b900 +16ffc0b315173403b8ffe0400e0d0d0655250435034503ba0d0403b8ffe0403a171934170811 +0c1114030501000f1c0507140b0a0c250940333634ff0901c0090116400b0b02551640101002 +5509281010025509140e0e025509b8ffec40110d0d025509040c0c0255091a0b0b025509b8ff +f6400b0b0b065509141010065509b8fff8400b0d0d0655090a0f0f065509b8fff6b60c0c0655 +094e16b8ffc04017343634b016f016027016a016b016ff1604160214250100b8ffc040103336 +34f0000100002000d000e0000400b8fffab41010025500b8fffa40170e0e025500040c0c0255 +00080b0b025500040b0b065500b8fffa40160f0f065500020c0c065500020d0d0655004e1547 +50182b10f62b2b2b2b2b2b2b2b5d712b3cfd3c105d712bf42b2b2b2b2b2b2b2b2b2b2b2b5d71 +2bed003f3c3fed3f1139113901123931304379400e060e07250e060c1b010d080f1b01002b01 +2b2b81002b5d2b012b33113311363332161615112311342623220606151187b47ec076ae4bb4 +756b508d3c05bafdf2925da49cfd5f02a1877b538e7dfdbb000200880000013c05ba00030007 +00cd405e09360b0b02554f099009a009b009c009df09f0090700091f09700980099f09b009c0 +09df09e009ff090a1f09010001070402030906037e0100060506040a0607250500049f04a004 +b004c004e00406c004f0040200042004d004e0040404b8fff8b41010025504b8fffa40170e0e +025504040c0c0255040a0b0b025504140b0b065504b8ffeab41010065504b8fffeb40d0d0655 +04b8fffc400a0c0c0655044e084750182b10f62b2b2b2b2b2b2b2b5d71723cfd3c003f3f3c3f +ed0111123939111239393130015d72712b133533150311331188b4b4b404ebcfcffb150426fb +da0000020042fe5103ea043e001e002a016f40600b0b05142c0b25144c0b451406091d191d2c +0b26142c23390b36144a0b46145607580b680bfa0af5150e2e232c273e233e274c27902ca02c +07362136293f2c460b4621452954215429690763216329602c802cda27e821ee23ef27111716 +0615b802b1b4281c130701b802aa401020003000600070008000c000d0000700b8027d403205 +1c1c0f0a45221c0c0a16153325330a251818d017011017401760178017042c400b0c02552c40 +0d0d025517121010025517b8fff440110f0f025517060e0e025517160d0d025517b8ffea400b +0b0b065517121010065517b8ffeeb40c0c065517b8fffc404a0d0d065517740f012500221f24 +bf0fcf0fdf0fff0f041f0f3f0f4f0f030f200b0b02550f1a0c0c02550f220d0d02550f1c0b0b +06550f0c0d0d06550f1a0c0c06550f192b2c74213450182b2b4ef42b2b2b2b2b2b5d714dedf4 +ed10fd2b2b2b2b2b2b2b2b2b2b5d713c10fde4f63c003fede43fedfd5de43fede43f3c313001 +5d71005d71171716171633323637362706232202353412363332173533111406062322261314 +1633323635342623220666af0b3243747d88180e0176b0dbf06ed18dbc7aa665dba0beea99a6 +7d7ca8ad7a78a8581a512532645a37b08b013cdd9801018c9880fc6af8cf78ab032ad1c0bfcc +c3c6c30000010087000003e6043e0016017d40130503061302a810b810e303e713f003f61306 +04b8fff0403c0b0d347910019810d018e018ff18042008140e1416121c05070106160d0a0d0e +0c0e2418401010025518400b0b02550b28101002550b140e0e02550bb8ffec40110d0d02550b +040c0c02550b220b0b02550bb8fff4400b0b0b06550b14101006550bb8fff9400b0d0d06550b +0a0f0f06550bb8fff640120c0c06550b40333634ff0b01ff0b010b4e18b8ffc0401a343634b0 +18f018027018a018b018c01804180302331516250100b8fff6b41111025500b8fffab4101002 +5500b8fffa40170e0e025500040c0c0255000a0b0b025500040b0b065500b8fffa40110f0f06 +5500020c0c065500040d0d065500b8ffc04012333634f0000100002000d000e00004004e1710 +f65d712b2b2b2b2b2b2b2b2b2b3cfd3cf43c105d712bf65d712b2b2b2b2b2b2b2b2b2b2b2b2b +ed3c103c003f3c3f3fed11390112393130437940160611090a080a070a0306102611060e1b01 +0f0a121b01002b012b2b2a81015d71002b5d7133113315363332161617161511231134262623 +2206151187a275dd60a150100ab42a6b4873a7042697af45704d327dfd7302866e6d4192ccfd +bc000000000100aafede018300cd000a004eb50a030007ab06b80150402601033c0202010a01 +3c000a020301033c000638073a4f005f006f007f00a0000500a00ba198182b10f45df4e410ed +3c103c003fed3c103c10ed10fded0111123931303335331514060727363637b6cd5057323936 +03cdcd718b264d19615b00010006000005b704260012041db10202435458b90012fff440110d +0d025507060d0d025500060d0d02550ab8ffd4b40c0d025504b8ffe8400b0c0d025511200c0d +02550ab8ffc0b40e10025504b8ffc0402f0e10025511400e100255040a110301000c06070601 +060f0a000a0d0c060c0c02550c110102040a04110a0c0c025511b8fff8b40d0d0255112f2b2b +cdcd10d6cd10d42bcd003f3f3f3f3f111217393130002b2b2b2b2b2b012b2b2b1b40160f1401 +2a04290a024a115b118e110311200d0d06550ab8ffe0b40d0d065504b8ffe0b40d0d065511b8 +fff040091f2134101c1d273409b8fff040b71f243404060c0913061b09191205040004060b09 +0b0e08121000130314071c081b0b1d0e240025072a082b0e340035073a083b0e440347064007 +4d084b0b430f47114a125b0f52126b076408671279067a077408b906ba0fb612f506fb09280b +112800280d270e280f27122f1438003712770886089803970ca701a802a80ba60cb500b606ba +0ec804d606d909e804e80fe712f406fa091c0b060d0d06550c060d0d065510060d0d06550e06 +0d0d06550f060d0d065512b10602435458401b0a0e0f0412001108070825070f250e12250000 +0e07030d010c250db8ffd640370b0b06550d0225012a0b0b0655010d011413060a0b11260a2b +115404520a5c116c117c118a110a110a040300010f0a000a0c0607060106003f3f3f3f3f1112 +17395d01111239392f2bf42f2bf41112173910e410e410e41112391112391112391b40140305 +050206070705090a0a080b0c0c0a1011110fb8ff4bb305001220b8ff4940660a0f0e20c31107 +0820071112122b0507140505070e0a0c0c250d0e140d0d0e08110f0f2b0a08140a0a08000502 +0225010014010100000201071204080f110c0e0d0a110a0403120d0c0c080807070202010612 +0f0f0e0e000a14f6100d01600d700d800d030db801a7400a204f0a016f0a7f0a020ab8025540 +094f11016f117f110211b80255400b1005016005700580050305b801a7b501f613f666182b4e +10f4194df45d5d18fd5d71fd5d711a19fd5d5d18e6003f3c103c103c3f3c103c103c103c103c +1217390111123939123939113939123939874d2e2b877dc4872e182b877dc4872e182b877dc4 +872e182b877dc42b2b2b870e10c4070e103c070e103c870e10c4870e10c44bb01f5358b40d20 +0c2002bcffe00001ffe0000effd0b400300f2012b8ffe0013838383838383838594bb0345358 +b90008ffd0b10730013838594bb021534bb033515a58b90008ffe0b10720013838594bb01253 +4bb01e515a58b9000effd0b60f200d200c2008b8ffd0b2073012b8ffe0b2003802baffe00001 +ffe00138383838383838383838594bb012534bb017515a58b90011ffe0b30a20042000383838 +5959313001435c58b9000effd4b61239002c123900b8ffd4b113392b2b2b592b2b2b2b2b5d71 +722b2b2b002b2b2b715d015d5921013313173637133313173713330123032703014bfebbbaa9 +3f0433a9b99f353db6affeb4bba929d70426fd9be411ca026efd98cbcd0266fbda027cb5fccf +00000002009e000004fd05ba000d001800b2402c65116b14024b104b145b105b14040b0c1e0f +0e0e0017181e02010200081226080a0d0d025508100b0b065508b8fff4401b0c0c0655081a20 +1a01201a011a180d200120000100201010025500b8fff6b40f0f025500b8fff6b40d0d025500 +b8fffa400b0c0c0255000c0b0b065500b8fffab40c0c065500b8fff0400a0d0d0655005d193b +5c182b10f62b2b2b2b2b2b2b5d3cfd3c4e10715df62b2b2b4ded003f3f3cfd3c12392f3cfd3c +3130015d005d33112132171e0215140221211111213236353426272623219e0229924d6c9259 +eefec9fe88017bbc9e5d4c3184fe8905ba0e1265b66dbbfefdfdac03018c7f5c83150d000000 +ffff004affe8041c05c30226000300000107001e00de00000027401803023c400a0a0655703c +803cf03c033c1c62482b0203023fb902220029002b012b5d2b35350000000001008700000626 +043e002301c7b9000dfff4b40d0d065508b8fff4b40d0d065509b8ffd8404d0b0d342504e404 +e409e117e52005d505f620021708202309181b20090303231e1c06151c0b0b06070106231a19 +100ad025019025a025022517171a0e2590110111041010025511180f0f025511b8ffec400b0e +0e025511140c0c025511b8ffe840170b0b025511020b0b0655110c1010065511060f0f065511 +b8fffab40c0c065511b8fff8b40d0d065511b8015d400c1825901b011b180f0f02551bb8ffec +400b0e0e02551b140c0c02551bb8ffee40110b0b02551b040b0b06551b0a101006551bb8fffe +400b0d0d06551b0c0f0f06551bb8fffcb40c0c06551bb8015d4016000233232501d000019000 +a000021f003f004f000300b8fffe401d0e0e025500100d0d025500100c0c0255000c0b0b0255 +00160b0b065500b8fffcb41010065500b8fff440140f0f0655000a0c0c0655000e0d0d065500 +192425b80178b3214750182b2b4ef42b2b2b2b2b2b2b2b2b5d71723c4dfde410f42b2b2b2b2b +2b2b2b2b5dedf42b2b2b2b2b2b2b2b2b2b5dfd4e456544e67172003f3c3c3c3f3f3c4d10ed10 +ed11173901111239123931304379400e0c141326140c111b01120d151b01002b012b2b81015d +005d2b2b2b331133153636333216173633321615112311342626232206151123113426232206 +06151187a132a66a76971f7eca9eaab3235c3e7094b458644c813a0426954e5f6258baafb6fd +27029d6c5f3a95a4fd9702b27878509a91fdd90000020046ffe803df05ba0011001d015540a4 +0a02040d250d340d440d053514351c5702540a5214531c6702640565096314601cc01fd405d5 +13dd19e513e514ef17eb19e51de01fff1f161f1f2b1a3c163c1a4b1a701f901f072e02240d2e +163a02350d4b02450d4614491c570a560d670de506e716fa01f40e100115030e0b100f001b1c +0b0711000a151c030b1833010025110f251010d011011011401160118011041f400b0b02551f +400d0d025511121010025511b8fff440110f0f025511060e0e025511180d0d025511b8fff240 +0b0b0b0655110e1010065511b8ffeeb40c0c065511b8fff840420d0d065511741224bf07cf07 +df07ff07041f073f074f0703071e0b0b025507180c0c0255071e0d0d0255070c0b0b0655070c +0d0d0655071a0c0c065507191e3450182b4e10f42b2b2b2b2b2b5d714dedfd2b2b2b2b2b2b2b +2b2b2b5d713c10ed10fd3ce4003fed3f3c3fed3f3c11391112393130005d01715d0071213506 +232226263534123633321617113311011416333236353426232206033865c47fd5756ad48360 +962fb3fd20ac7576a5a87b78a1869e8cfba39f01038a5141020efa460212cccac1c6daccc400 +0002003d04f6026e05c30003000700484023000302073c050502000607050402030100073c04 +9f033c5f006f008f009000a0000500b80224b308708d182b4e10f45d4dfdf6fd103c103c103c +103c003f3c10ed113939313013353315333533153dbcb9bc04f6cdcdcdcd0000000000020003 +00000000001400010000000000340004002000000004000400010000f01effff0000f000ffff +10000001000000000006004800000000001f0000000100020003000400050006000700080009 +000a000b000c000d000e000f0010001100120013001400150016001700180019001a001b001c +001d001e05ba001905ba001a05a70019042600180000ffe70000ffe80000ffe7fe69ffe805ba +0019fe69ffe802ea000000b8000000b80000000000a800ad016900ad00bf00c201f0001800af +00b900b400c800170044009c007c009400870006005a00c80089005200520005004400940119 +ffb4002f00a1000300a100cd00170057007e00ba00160118ffe9007f008503d300870085000d +002200410050006f008d014cff75005c00df04830037004c006e00700180ff58ff8eff92ffa4 +00a500b903c8fffd000b001a0063006300cdffee05d8ffdc002d005c0095009900df019209b5 +00400057008000b9039d0072009a035d0401ff67fffa00030021007700cd0004004d00cd01c0 +022b004c006500e70118017c034305d8ffa3ffb0ffc40003001c005d0068009a00ba01350147 +0221055cff4dffcd0016002d00780080009900b200b600b600b800bd00da010c05f0ffa4fff0 +0019002c0049007f00b400ce01c003fefd81fe3f000000050018002900390049006f00be00c7 +00d0012301c1026f050c05320540057affd4001400310055005700a700b400e601f7027e027e +027f03c60446ff42000e0085009100bf00c200c500e1011a012f014f01560229026f029e0372 +0008002c00310031006400690089009800c700de012b01b6020c02cf03a304ab04fb061dfee0 +ff0e00060026009b009d00c1010d011801200173018201d601e30243025f029b02e2039404a9 +04d20761001c005e006d008d00ab00f7011201380151015b0168017c01870191019901cd01d0 +01e802410254026b02ef0368037103bd044204420453047304830586058b06e8fe58fec4fed1 +fef7ff32ff860051007c008100910095009e00b400b900cf00d900d900df00e20105010b010e +010e012001210155017b017b017e018d01a201a801a901b401d001d001e201e901f201f501fb +020002000206021b0221022202220223027202770294029c02cf02cf02d002ec02f903170322 +032b0335033c0359036f037103870390039003b503e1041a04cf04ff053205320596059f05a8 +05ab05c205f0060c0782080008ccfca3fd2afddefe00fe88fe96feb2feb4ffe100150019001a +001c001f003c005100610061006a0078009600a500af00d3010c0118011a012a013e014c0151 +015f016a0171017801820184019a01a501a801a901ae01bc01cd01d701ef0200020d021c0221 +0222022e02350242024f024f025e026502710290029202b402d602fa0307030b030f0315032a +0347035d036503740379039603b003cc03dd03e203f603fc03fc03ff040a041f04220426042b +0447045f0475049e04e704e7055c05cb05e5060a066d068606b806f10736073e07500751075d +078f07b607d4086000b600c300b500b700000000000000000000000001e00381034503b5008e +0233041902ce02ce002d005f0064034d023f000002a80188027d01b402240578063b023b014e +00f00426029402c6029f02f6023b034d014b0153006a0231000000000000061404aa0000003c +04c300ed04bc026502ce03b50078060c017e02ef060c00b201000239000001c50330042b03cb +00da03df010704a100db040a011701ed02a70350010b01bd043e05580021039c00ae0371017d +00b5024500000afb088c012b014e01aa00870054013201f803ff0003024e00b4003703e30083 +006b02d800ed00770088009701640467008e0033017c00e700a6029e0329056e062a061501c9 +0269048a021301b4000204a9000002390124010305140084015d039a06ef02d9007500cf040a +00de03ac04bc02cf02ae034d04f005520168006d007d00860071ff810079055804d201670003 +0156002504e00094007c033204210094007f0072005c002f00b6001800ba00b80041034d0072 +0018001f004c016a01550099009a009a009800b200040078006900140057006e00ce00b40654 +02b80067050e016500e7000004cbfe52005affa60099ff67006eff92002dffd40087ff7c00b8 +00a800e5008f00a80185fe7b0070001e00d900de014c054602cf0546ff2d028a02d902530296 +00b700000000000000000000000000000125011800ea00ea00ae0000003e05bb008a04d70053 +003fff8cffd500150028002200990062004a00e4006d00ee00e5004803c00033fe4e02b1ff46 +0370007905df0051ffa7ff1f010a0068ff6c004f00bc00a507050061072b4043555441403f3e +3d3c3b3a3938373534333231302f2e2d2c2b2a292827262524232221201f1e1d1c1b1a191817 +161514131211100f0e0d0c0b0a090807060504030201002c4523466020b02660b00426234848 +2d2c452346236120b02661b004262348482d2c45234660b0206120b04660b004262348482d2c +4523462361b0206020b02661b02061b004262348482d2c45234660b0406120b06660b0042623 +48482d2c4523462361b0406020b02661b04061b004262348482d2c0110203c003c2d2c204523 +20b0cd442320b8015a51582320b08d44235920b0ed51582320b04d44235920b09051582320b0 +0d44235921212d2c20204518684420b001602045b04676688a4560442d2c01b10b0a43234365 +0a2d2c00b10a0b4323430b2d2c00b0172370b101173e01b0172370b10217453ab10200080d2d +2c45b01a234445b01923442d2c2045b00325456164b050515845441b2121592d2cb001436323 +62b0002342b00f2b2d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b0008b +20b12cc08a8cb8100062602b0c642364615c58b00361592d2c45b0112bb0172344b0177ae418 +2d2c45b0112bb01723442d2cb01243588745b0112bb0172344b0177ae41b038a45186920b017 +23448a8a8720b0a05158b0112bb0172344b0177ae41b21b0177ae45959182d2c2d2cb0022546 +608a46b040618c482d2c4b53205c58b002855958b00185592d2c20b0032545b019234445b01a +23444565234520b00325606a20b009234223688a6a606120b01a8ab000527921b21a1a40b9ff +e0001a45208a54582321b03f1b235961441cb114008a5279b31940201945208a54582321b03f +1b235961442d2cb110114323430b2d2cb10e0f4323430b2d2cb10c0d4323430b2d2cb10c0d43 +2343650b2d2cb10e0f432343650b2d2cb11011432343650b2d2c4b525845441b2121592d2c01 +20b003252349b04060b0206320b000525823b002253823b002256538008a63381b2121212121 +59012d2c4bb06451584569b00943608a103a1b212121592d2c01b005251023208af500b00160 +23edec2d2c01b005251023208af500b0016123edec2d2c01b0062510f500edec2d2c20b00160 +0110203c003c2d2c20b001610110203c003c2d2cb02b2bb02a2a2d2c00b00743b006430b2d2c +3eb02a2a2d2c352d2c76b8022323701020b802234520b0005058b00161593a2f182d2c21210c +6423648bb84000622d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c21b0 +c051580c6423648bb81555621bb200802f2b59b002602d2c0c6423648bb84000626023212d2c +b4000100000015b00826b00826b00826b008260f10161345683ab001162d2cb4000100000015 +b00826b00826b00826b008260f1016134568653ab001162d2c4b53234b515a5820458a60441b +2121592d2c4b545820458a60441b2121592d2c4b53234b515a58381b2121592d2c4b5458381b +2121592d2cb0134358031b02592d2cb0134358021b03592d2c4b54b012435c5a58381b212159 +2d2cb012435c580cb00425b00425060c6423646164b807085158b00425b00425012046b01060 +482046b0106048590a21211b2121592d2cb012435c580cb00425b00425060c6423646164b807 +085158b00425b00425012046b8fff060482046b8fff06048590a21211b2121592d2c4b53234b +515a58b03a2b1b2121592d2c4b53234b515a58b03b2b1b2121592d2c4b53234b515ab012435c +5a58381b2121592d2c0c8a034b54b00426024b545a8a8a0ab012435c5a58381b2121592d2c4b +5258b00425b0042549b00425b00425496120b0005458212043b0005558b00325b00325b8ffc0 +38b8ffc038591bb04054582043b0005458b00225b8ffc038591b2043b0005458b00325b00325 +b8ffc038b8ffc0381bb00325b8ffc03859595959212121212d2c462346608a8a462320468a60 +8a61b8ff8062232010238ab902c202c28a70456020b0005058b00161b8ffba8b1bb0468c59b0 +106068013a2d2cb1020042b123018851b1400188535a58b910000020885458b2020102436042 +59b12401885158b920000040885458b2020202436042b12401885458b2022002436042004b01 +4b5258b2020802436042591bb940000080885458b202040243604259b94000008063b8010088 +5458b202080243604259b94000010063b80200885458b202100243604259b94000020063b804 +00885458b202400243604259595959592d2cb0024354584b53234b515a58381b2121591b2121 +2121592d00000001000000030000f3d63ce05f0f3cf5081b080000000000a2e3272a00000000 +b9d5b4f6faaffd671000080c00000009000100010000000000010000073efe4e00431000faaf +fe26100000010000000000000000000000000000001f060001000239002404e300300473004a +0400003f04000088023900000473009605c700a406aa00980556fffd023900ba047300870473 +004b02aa008505c700660473008601c7008304730044040000500473008701c7008804730042 +04730087023900aa05c700060556009e0473004a06aa00870473004602aa003d000000000000 +002c0000015000000200000004d40000087c00000b1400000b1400000ba000000ca800000fd4 +00001180000011bc000013800000154000001648000017840000196400001a6000001c240000 +1dd800001f7c000020700000226000002428000024a00000290c00002a1400002a5800002c88 +00002e3c00002ea800010000001f0100003f0076000700020010002f00560000040d0aff0003 +0002b1540f4122031700ef031700ff03170003001f0317002f0317004f0317005f0317008f03 +17009f03170006000f0317005f0317006f0317007f031700bf031700f00317000600400317b2 +923340b80317b28b3340b80317b36a6c3240b80317b2613340b80317b35c5d3240b80317b357 +593240b80317b34d513240b80317b344493240b80317b23a3340b80317b331343240b80317b3 +2e423240b80317b3272c3240b80317b312253280b80317b30a0d32c04116031600d003160002 +00700316000102c4000f0101001f00a0031500b0031500020306000f0101001f00400312b324 +26329fbf03040001030203010064001fffc00301b20d1132410a02ff02ef0012001f02ee02ed +0064001fffc002edb30e11329f414a02e200af02e200bf02e2000302e202e202e102e1007f02 +e00001001002e0003f02e0009f02e000bf02e000cf02e000ef02e0000602e002e002df02df02 +de02de000f02dd002f02dd003f02dd005f02dd009f02dd00bf02dd00ef02dd000702dd02dd00 +1002dc0001000002dc0001001002dc003f02dc000202dc02dc001002db000102db02db000f02 +da000102da02daffc002d3b2373932b9ffc002d3b22b2f32b9ffc002d3b21f2532b9ffc002d3 +b2171b32b9ffc002d3b2121632b802d2b2f9291fb802e3b3202b1fa0413002d400b002d40002 +000002d4001002d4002002d4005002d4006002d4007002d40006006002d6007002d6008002d6 +009002d600a002d600b002d60006000002d6001002d6002002ca002002cc002002d6003002d6 +004002d6005002d6000802d0b2202b1fb802cfb226421f411602ce02c70017001f02cd02c800 +17001f02cc02c60017001f02cb02c50017001f02c902c5001e001f02ca02c6b21e1f00410b02 +c6000002c7001002c6001002c7002f02c5000502c1b324121fff411102bf0001001f02bf002f +02bf003f02bf004f02bf005f02bf008f02bf000602bf0222b2641f12410b02bb00ca0800001f +02b200e90800001f02a600a20800406a1f4026434932402043493240263a3d3240203a3d329f +209f26024026969932402096993240268e923240208e92324026848c324020848c3240267a81 +3240207a813240266c763240206c76324026646a324020646a3240265a5f3240205a5f324026 +4f543240204f5432b8029eb724271f374f6b0120410f02770030027700400277005002770004 +02770277027700f90400001f029bb22a2a1fb8029a402b292a1f80ba0180bc0180520180a201 +806501807e01808101803c01805e01802b01801c01801e0180400180bb0138000100800140b4 +0180400180bb013800010080013940180180ca0180ad01807301802601802501802401802001 +3740b80221b2493340b80221b2453340b80221b341423240b80221b33d3e320f410f0221003f +0221007f0221000300bf022100cf022100ff0221000300400221b320223240b80221b3191e32 +40b80222b32a3f3240b80221b32e3a326f414802c3007f02c3008f02c300df02c30004002f02 +c3006002c300cf02c30003000f02c3003f02c3005f02c300c002c300ef02c300ff02c3000600 +df02220001008f02220001000f0222002f0222003f0222005f0222007f022200ef0222000600 +bf022100ef02210002006f0221007f022100af02210003002f0221003f0221004f0221000302 +c302c30222022202210221401d101c102b1048038f1c010f1e014f1eff1e0237001616000000 +12110811b8010db6f70df8f70d00094109028e028f001d001f0290028f001d001f028fb2f91d +1fb80198b226bb1f41150197001e0401001f013900260125001f013800730401001f0135001c +0801001f0134001c02ab001f0132b21c561fb8010fb2262c1fba010e001e0401b61ff91ce41f +e91cb80201b61fe81cbb1fd720b80401b21fd51cb802abb61fd41c891fc92fb80801b21fbc26 +b80101b21fba20b80201b61fb91c381fadcab80401b21f8126b8019ab21f7e26b8019ab61f7d +1c471f6b1cb80401b21f6526b8019ab21f5e73b80401400f1f52265a1f481c891f441c621f40 +73b80801b61f3f1c5e1f3c26b8019ab21f351cb80401b61f301cbb1f2b1cb80401b61f2a1c56 +1f291cb80101b21f231eb80401b21f5537b80168402c07960758074f07360732072c0721071f +071d071b071408120810080e080c080a080808060804080208000814b8ffe0402b0000010014 +0610000001000604000001000410000001001002000001000200000001000002010802004a00 +b013034b024b5342014bb0c063004b6220b0f65323b8010a515ab005234201b0124b004b5442 +b0382b4bb807ff52b0372b4bb007505b58b101018e59b0382bb00288b801005458b801ffb101 +018e851bb0124358b900010111858d1bb900010128858d5959001816763f183f123e11394644 +3e113946443e113946443e113946443e11394660443e11394660442b2b2b2b2b2b2b2b2b2b2b +182b2b2b2b2b2b2b2b2b2b2b182b1db0964b5358b0aa1d59b0324b5358b0ff1d594bb0935320 +5c58b901f201f04544b901f101f045445958b9033e01f2455258b901f2033e4459594bb80156 +53205c58b9002001f14544b9002601f145445958b9081e0020455258b90020081e4459594bb8 +019a53205c58b9002501f24544b9002401f245445958b909090025455258b900250909445959 +4bb8040153205c58b173244544b1242445445958b917200073455258b9007317204459594bb8 +040153205c58b1ca254544b1252545445958b9168000ca455258b900ca16804459594bb03e53 +205c58b11c1c4544b11e1c45445958b9011a001c455258b9001c011a4459594bb05653205c58 +b11c1c4544b12f1c45445958b90189001c455258b9001c01894459594bb8030153205c58b11c +1c4544b11c1c45445958b90de0001c455258b9001c0de04459592b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b65422b2b01b33b5963 +5c456523456023456560234560b08b766818b080622020b163594565234520b0032660626368 +20b003266165b059236544b063234420b13b5c4565234520b003266062636820b003266165b0 +5c236544b03b2344b1005c455458b15c406544b23b403b4523614459b3475034374565234560 +23456560234560b089766818b080622020b134504565234520b003266062636820b003266165 +b050236544b034234420b147374565234520b003266062636820b003266165b037236544b047 +2344b10037455458b137406544b24740474523614459004b5342014b5058b108004259435c58 +b108004259b3020b0a124358601b2159421610703eb0124358b93b21187e1bba040001a8000b +2b59b00c2342b00d2342b0124358b92d412d411bba04000400000b2b59b00e2342b00f2342b0 +124358b9187e3b211bba01a80400000b2b59b0102342b0112342002b74757375001845694445 +69444569447373737374757374752b2b2b2b74752b2b2b2b2b73737373737373737373737373 +7373737373737373737373732b2b2b45b0406144737400004bb02a534bb03f515a58b1070745 +b040604459004bb03a534bb03f515a58b10b0b45b8ffc0604459004bb02e534bb03a515a58b1 +030345b040604459004bb02e534bb03c515a58b1090945b8ffc06044592b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b752b2b2b2b2b2b2b435c58b9008002bbb301401e017400735903b01e4b +5402b0124b545ab012435c5a58ba009f02220001007359002b7473012b01732b2b2b2b2b2b2b +2b737373732b002b2b2b2b2b2b00456944734569447345694473747545694473456944456944 +4569447374456944456944732b2b2b2b2b732b002b732b74752b2b2b2b2b2b2b2b2b2b2b2b2b +2b7374752b0000> +] def +/f-0-0 currentdict end definefont pop +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 762 537 +%%EndPageSetup +q 0 -1 762 538 rectclip q +0 536.953 762 -537 re W n +0 g +0.8 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 536.953125 cm +111.25 504.734 m 495.25 504.734 l S Q +487.25 32.219 m 484.051 29.02 l 495.25 32.219 l 484.051 35.418 l h +487.25 32.219 m f* +0.8 w +q -1 -0.000000000000000122 -0.000000000000000122 1 0 536.953125 cm +-487.25 -504.734 m -484.051 -507.934 l -495.25 -504.734 l -484.051 +-501.535 l h +-487.25 -504.734 m S Q +BT +32 0 0 32 487.25 0.21875 Tm +/f-0-0 1 Tf +<01>Tj +ET +BT +32 0 0 32 -0.75 80.21875 Tm +/f-0-0 1 Tf +<020304050607>Tj +ET +BT +32 0 0 32 -0.75 208.21875 Tm +/f-0-0 1 Tf +<020304050608>Tj +ET +BT +32 0 0 32 -0.75 144.21875 Tm +/f-0-0 1 Tf +<020304050609>Tj +ET +1 1 0 rg +111.25 112.219 112 -32 re f +0 0.501961 0 rg +223.25 240.219 80 -32 re f +303.25 112.219 56 -32 re f +0.501961 0 0 rg +415.25 176.219 104 -32 re f +0 g +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +223.25 280.734 m 223.25 520.734 l S Q +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +303.25 280.734 m 303.25 520.734 l S Q +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +359.25 280.734 m 359.25 520.734 l S Q +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +111.25 280.734 m 111.25 520.734 l S Q +[] 0.0 d +q 1 0 0 -1 0 536.953125 cm +111.25 248.734 m 111.25 272.734 l S Q +111.25 272.219 m 108.051 275.418 l 111.25 264.219 l 114.449 275.418 l h +111.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 536.953125 cm +-264.734 111.25 m -261.535 108.051 l -272.734 111.25 l -261.535 114.449 +l h +-264.734 111.25 m S Q +BT +0 32 -32 0 123.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0607>Tj +ET +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +183.25 280.734 m 183.25 520.734 l S Q +[] 0.0 d +q 1 0 0 -1 0 536.953125 cm +183.25 248.734 m 183.25 272.734 l S Q +183.25 272.219 m 180.051 275.418 l 183.25 264.219 l 186.449 275.418 l h +183.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 536.953125 cm +-264.734 183.25 m -261.535 180.051 l -272.734 183.25 l -261.535 186.449 +l h +-264.734 183.25 m S Q +BT +0 32 -32 0 191.25 296.21875 Tm +/f-0-0 1 Tf +[<0706040c0d>-1<0e>-1<0e>-1<01>1<060f>]TJ +ET +0.8 w +q 1 0 0 -1 0 536.953125 cm +223.25 248.734 m 223.25 272.734 l S Q +223.25 272.219 m 220.051 275.418 l 223.25 264.219 l 226.449 275.418 l h +223.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 536.953125 cm +-264.734 223.25 m -261.535 220.051 l -272.734 223.25 l -261.535 226.449 +l h +-264.734 223.25 m S Q +BT +0 32 -32 0 231.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0608>Tj +ET +0.8 w +q 1 0 0 -1 0 536.953125 cm +303.25 248.734 m 303.25 272.734 l S Q +303.25 272.219 m 300.051 275.418 l 303.25 264.219 l 306.449 275.418 l h +303.25 272.219 m f* +0.8 w +q -0.000000000000000184 1 1 0.000000000000000184 0 536.953125 cm +-264.734 303.25 m -261.535 300.051 l -272.734 303.25 l -261.535 306.449 +l h +-264.734 303.25 m S Q +BT +0 32 -32 0 293.65 296.21875 Tm +/f-0-0 1 Tf +[<08061011>-1<1213050b06>1<0f>]TJ +ET +BT +0 32 -32 0 333.65 296.21875 Tm +/f-0-0 1 Tf +[<07061415>-1<1614>-1<06>1<0c>-1<0e>-1<1512>]TJ +ET +BT +0 32 -32 0 231.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0608>Tj +ET +0.8 w +q 1 0 0 -1 0 536.953125 cm +415.25 248.734 m 359.25 272.734 l S Q +366.602 267.371 m 368.285 271.57 l 359.25 264.219 l 370.805 265.688 l h +366.602 267.371 m f* +0.735316 w +q 1 0.428571 0.428571 -1 0 536.953125 cm +212.108 360.485 m 215.051 357.547 l 204.756 360.487 l 215.049 363.43 l +h +212.108 360.485 m S Q +BT +0 32 -32 0 413.65 296.21875 Tm +/f-0-0 1 Tf +[<07060d17>-1<01>1<040c>-1<0d0e>-1<0e>-1<0106>1<0f>]TJ +ET +BT +0 32 -32 0 453.65 296.21875 Tm +/f-0-0 1 Tf +[<0a>-1<0501>1<0b06081806>1<07>-1<06>1<11>-1<1219060c0e>-1<15>-1<12>]TJ +ET +0.8 w +q 1 0 0 -1 0 536.953125 cm +584.852 152.734 176 192 re S Q +BT +32 0 0 32 592.85 352.21875 Tm +/f-0-0 1 Tf +[<1a>-1<0e>-1<1512>-1<0e>-1<15011b010d17>]TJ +ET +BT +32 0 0 32 592.85 312.21875 Tm +/f-0-0 1 Tf +[<1415>-1<1614>]TJ +ET +0 0.501961 0 rg +672.852 344.219 80 -32 re f +1.6 w +q 1 0 0 -1 0 536.953125 cm +672.852 192.734 80 32 re S Q +0 g +BT +32 0 0 32 592.85 264.21875 Tm +/f-0-0 1 Tf +[<1c>-1<151d>-1<0b>]TJ +ET +0.501961 0 0 rg +672.852 296.219 80 -32 re f +0 g +BT +32 0 0 32 592.85 216.21875 Tm +/f-0-0 1 Tf +<111219>Tj +ET +1 1 0 rg +672.852 248.219 80 -32 re f +0 0.501961 0 rg +359.25 240.219 56 -32 re f +0 g +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +415.25 280.734 m 415.25 520.734 l S Q +[] 0.0 d +q 1 0 0 -1 0 536.953125 cm +487.25 248.734 m 415.25 272.734 l S Q +422.84 266.75 m 424.863 270.797 l 415.25 264.219 l 426.887 264.727 l h +422.84 266.75 m f* +0.758947 w +q 1 0.333333 0.333333 -1 0 536.953125 cm +299.495 370.035 m 302.53 367 l 291.905 370.036 l 302.53 373.07 l h +299.495 370.035 m S Q +BT +0 32 -32 0 495.25 296.21875 Tm +/f-0-0 1 Tf +[<0806100d>-1<0d17>-1<1d0d>-1<01>]TJ +ET +0.8 w +[ 0.8 2.4] 0 d +q 1 0 0 -1 0 536.953125 cm +327.25 280.734 m 327.25 520.734 l S Q +[] 0.0 d +q 1 0 0 -1 0 536.953125 cm +367.25 248.734 m 327.25 272.734 l S Q +334.109 268.336 m 335.207 272.727 l 327.25 264.219 l 338.5 267.238 l h +334.109 268.336 m f* +0.685994 w +q 1 0.6 0.6 -1 0 536.953125 cm +127.161 344.914 m 129.905 342.17 l 120.301 344.915 l 129.905 347.658 l +h +127.161 344.914 m S Q +BT +0 32 -32 0 375.25 296.21875 Tm +/f-0-0 1 Tf +<0a05010b0609>Tj +ET +0.8 w +q 1 0 0 -1 0 536.953125 cm +471.25 248.734 m 495.25 248.734 l S Q +q 1 0 0 -1 0 536.953125 cm +391.25 248.734 m 455.25 248.734 l S Q +q 1 0 0 -1 0 536.953125 cm +351.25 248.734 m 375.25 248.734 l S Q +q 1 0 0 -1 0 536.953125 cm +271.25 248.734 m 335.25 248.734 l S Q +q 1 0 0 -1 0 536.953125 cm +211.25 248.734 m 235.25 248.734 l S Q +q 1 0 0 -1 0 536.953125 cm +171.25 248.734 m 195.25 248.734 l S Q +q 1 0 0 -1 0 536.953125 cm +99.25 248.734 m 123.25 248.734 l S Q +Q Q +showpage +%%Trailer +count op_count sub {pop} repeat +countdictstack dict_count sub {end} repeat +cairo_eps_state restore +%%EOF diff --git a/Master/Masterarbeit/thesis/img/prio_pip.svg b/Master/Masterarbeit/thesis/img/prio_pip.svg new file mode 100644 index 0000000..f3b457e --- /dev/null +++ b/Master/Masterarbeit/thesis/img/prio_pip.svg @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + id="svg2" + version="1.1" + inkscape:version="0.48.2 r9819" + sodipodi:docname="prio_pip.eps"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;"> + <path + id="path3763" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.479863" + inkscape:cx="-61.47529" + inkscape:cy="841.72357" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + showguides="false" + inkscape:snap-page="false" + inkscape:window-width="1240" + inkscape:window-height="968" + inkscape:window-x="1286" + inkscape:window-y="4" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid2985" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 20,512.36218 480,0" + id="path2987" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="490" + y="552.36218" + id="text4201" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4203" + x="490" + y="552.36218">t</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-120" + y="452.36218" + id="text4205" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4207" + x="-120" + y="452.36218">Task L</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4209" + y="292.36218" + x="-120" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="292.36218" + x="-120" + id="tspan4211" + sodipodi:role="line">Task H</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-120" + y="372.36218" + id="text4213" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4215" + x="-120" + y="372.36218">Task M</tspan></text> + <rect + style="fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect4217" + width="140" + height="40" + x="20" + y="412.36218" /> + <rect + style="fill:#008000;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect4219" + width="100" + height="40" + x="160" + y="252.36218" /> + <rect + style="fill:#008000;fill-opacity:1;stroke:none" + id="rect4221" + width="70" + height="40" + x="260" + y="412.36218" /> + <rect + style="fill:#800000;fill-opacity:1;stroke:none" + id="rect4223" + width="130" + height="40" + x="400" + y="332.36218" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0" + d="m 160,232.36218 0,300" + id="path4227" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1,3;stroke-dashoffset:0" + d="m 260,232.36218 0,300" + id="path4229" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" + d="m 330,232.36218 0,300" + id="path4231" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4233" + d="m 20,232.36218 0,300" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 20,192.36218 0,30" + id="path4235" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="35" + id="text4419" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + x="-182.36218" + y="35" + id="tspan4423">Akt. L</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" + d="m 110,232.36218 0,300" + id="path4427" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)" + d="m 110,192.36218 0,30" + id="path4431" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="120" + id="text4979" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + id="tspan4981" + x="-182.36218" + y="120">L sperrt C</tspan></text> + <path + inkscape:connector-curvature="0" + id="path4983" + d="m 160,192.36218 0,30" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text4985" + y="170" + x="-182.36218" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan4987" + y="170" + x="-182.36218" + sodipodi:role="line">Akt. H</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 260,192.36218 0,30" + id="path4989" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="248" + id="text4991" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + x="-182.36218" + y="248" + id="tspan4993">H block. C</tspan><tspan + sodipodi:role="line" + x="-182.36218" + y="298" + id="tspan3044">L high prio</tspan></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="-182.36218" + y="170" + id="text5008" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + sodipodi:role="line" + x="-182.36218" + y="170" + id="tspan5010">Akt. H</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 400,192.36218 -70,30" + id="path5018" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text5020" + y="398" + x="-182.36218" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + id="tspan5022" + y="398" + x="-182.36218" + sodipodi:role="line">L entsperrt C</tspan><tspan + y="448" + x="-182.36218" + sodipodi:role="line" + id="tspan3050">Akt. H, L low prio</tspan><tspan + y="498" + x="-182.36218" + sodipodi:role="line" + id="tspan3048" /></text> + <g + id="g3058" + transform="translate(112,0)"> + <rect + y="72.362183" + x="500" + height="240" + width="220" + id="rect3032" + style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" /> + <text + sodipodi:linespacing="125%" + id="text3808" + y="112.36218" + x="510" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="112.36218" + x="510" + id="tspan3810" + sodipodi:role="line">Prioritäten</tspan></text> + <text + sodipodi:linespacing="125%" + id="text3812" + y="162.36218" + x="510" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="162.36218" + x="510" + id="tspan3814" + sodipodi:role="line">high</tspan></text> + <rect + style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" + id="rect3816" + width="100" + height="40" + x="610" + y="122.36218" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="510" + y="222.36218" + id="text3818" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3820" + x="510" + y="222.36218">mid.</tspan></text> + <rect + y="182.36218" + x="610" + height="40" + width="100" + id="rect3822" + style="fill:#800000;fill-opacity:1;stroke:none" /> + <text + sodipodi:linespacing="125%" + id="text3824" + y="282.36218" + x="510" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="282.36218" + x="510" + id="tspan3826" + sodipodi:role="line">low</tspan></text> + <rect + style="fill:#ffff00;fill-opacity:1;stroke:none" + id="rect3828" + width="100" + height="40" + x="610" + y="242.36218" /> + </g> + <rect + y="252.36218" + x="330" + height="40" + width="70" + id="rect3046" + style="fill:#008000;fill-opacity:1;stroke:none" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" + d="m 400,232.36218 0,300" + id="path3052" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path3072" + d="m 490,192.36218 -90,30" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;stroke-opacity:1" + x="-182.36218" + y="500" + id="text3074" + sodipodi:linespacing="125%" + transform="matrix(0,-1,1,0,0,0)"><tspan + id="tspan3080" + sodipodi:role="line" + x="-182.36218" + y="500">H beendet</tspan></text> + <path + inkscape:connector-curvature="0" + id="path3043" + d="m 290,232.36218 0,300" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 340,192.36218 -50,30" + id="path3045" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text3047" + y="350" + x="-182.36218" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + xml:space="preserve"><tspan + y="350" + x="-182.36218" + sodipodi:role="line" + id="tspan3051">Akt. M</tspan><tspan + y="400" + x="-182.36218" + sodipodi:role="line" + id="tspan3053" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 470,192.36218 30,0" + id="path3835" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3837" + d="m 370,192.36218 80,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + sodipodi:nodetypes="cc" /> + <path + inkscape:connector-curvature="0" + id="path3839" + d="m 320,192.36218 30,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 220,192.36218 80,0" + id="path3841" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 145,192.36218 30,0" + id="path3843" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path3845" + d="m 95,192.36218 30,0" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 5,192.36218 30,0" + id="path3847" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/Master/Masterarbeit/thesis/img/tinycan_burst_rx.PNG b/Master/Masterarbeit/thesis/img/tinycan_burst_rx.PNG Binary files differnew file mode 100644 index 0000000..adfcb00 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/tinycan_burst_rx.PNG diff --git a/Master/Masterarbeit/thesis/img/usecases.png b/Master/Masterarbeit/thesis/img/usecases.png Binary files differnew file mode 100644 index 0000000..e3c6162 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/usecases.png diff --git a/Master/Masterarbeit/thesis/img/wcrt_2_trace.PNG b/Master/Masterarbeit/thesis/img/wcrt_2_trace.PNG Binary files differnew file mode 100644 index 0000000..9442a46 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/wcrt_2_trace.PNG diff --git a/Master/Masterarbeit/thesis/img/wcrt_trace.PNG b/Master/Masterarbeit/thesis/img/wcrt_trace.PNG Binary files differnew file mode 100644 index 0000000..0618583 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/wcrt_trace.PNG diff --git a/Master/Masterarbeit/thesis/img/xc_burst_rx.PNG b/Master/Masterarbeit/thesis/img/xc_burst_rx.PNG Binary files differnew file mode 100644 index 0000000..a3fd70e --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xc_burst_rx.PNG diff --git a/Master/Masterarbeit/thesis/img/xc_burst_rx_cpuload.PNG b/Master/Masterarbeit/thesis/img/xc_burst_rx_cpuload.PNG Binary files differnew file mode 100644 index 0000000..e65b522 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xc_burst_rx_cpuload.PNG diff --git a/Master/Masterarbeit/thesis/img/xoraya_connect_foto.png b/Master/Masterarbeit/thesis/img/xoraya_connect_foto.png Binary files differnew file mode 100644 index 0000000..1bb54a5 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_connect_foto.png diff --git a/Master/Masterarbeit/thesis/img/xoraya_connect_front.png b/Master/Masterarbeit/thesis/img/xoraya_connect_front.png Binary files differnew file mode 100644 index 0000000..e741194 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_connect_front.png diff --git a/Master/Masterarbeit/thesis/img/xoraya_connect_rear.png b/Master/Masterarbeit/thesis/img/xoraya_connect_rear.png Binary files differnew file mode 100644 index 0000000..43cf05d --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_connect_rear.png diff --git a/Master/Masterarbeit/thesis/img/xoraya_timestamp.eps b/Master/Masterarbeit/thesis/img/xoraya_timestamp.eps new file mode 100644 index 0000000..0d407fc --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_timestamp.eps @@ -0,0 +1,1143 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/xoraya_timestamp.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/xoraya_timestamp.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1678 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1678 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 10)] +] -80.0 MCshow +1.000 UL +LTb +2237 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2237 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 20)] +] -80.0 MCshow +1.000 UL +LTb +2795 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2795 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 30)] +] -80.0 MCshow +1.000 UL +LTb +3353 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3353 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 40)] +] -80.0 MCshow +1.000 UL +LTb +3911 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3911 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 50)] +] -80.0 MCshow +1.000 UL +LTb +4470 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4470 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 60)] +] -80.0 MCshow +1.000 UL +LTb +5028 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5028 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 70)] +] -80.0 MCshow +1.000 UL +LTb +5586 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5586 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 80)] +] -80.0 MCshow +1.000 UL +LTb +6145 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6145 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 90)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (XORAYA Empfangsgenauigkeit)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +28 0 V +-28 0 V +Z stroke +1204 1860 N +56 0 V +-56 0 V +Z stroke +1260 1860 N +56 0 V +-56 0 V +Z stroke +1316 1860 N +55 0 V +-55 0 V +Z stroke +1371 1860 N +56 0 V +-56 0 V +Z stroke +1427 1860 N +56 0 V +-56 0 V +Z stroke +1483 1860 N +56 0 V +-56 0 V +Z stroke +1539 1860 N +56 0 V +-56 0 V +Z stroke +1595 1860 N +56 0 V +-56 0 V +Z stroke +1651 1860 N +55 0 V +-55 0 V +Z stroke +1706 1860 N +56 0 V +-56 0 V +Z stroke +1762 1860 N +56 0 V +-56 0 V +Z stroke +1818 1860 N +56 0 V +-56 0 V +Z stroke +1874 1860 N +56 0 V +-56 0 V +Z stroke +1930 1860 N +55 0 V +-55 0 V +Z stroke +1985 1860 N +56 0 V +-56 0 V +Z stroke +2041 1860 N +56 0 V +-56 0 V +Z stroke +2097 1860 N +56 0 V +-56 0 V +Z stroke +2153 1860 N +56 0 V +-56 0 V +Z stroke +2209 1860 N +56 0 V +-56 0 V +Z stroke +2265 1860 N +55 0 V +-55 0 V +Z stroke +2320 1860 N +56 0 V +-56 0 V +Z stroke +2376 1860 N +56 0 V +-56 0 V +Z stroke +2432 1860 N +56 0 V +-56 0 V +Z stroke +2488 1860 N +56 0 V +-56 0 V +Z stroke +2544 1860 N +56 0 V +-56 0 V +Z stroke +2600 1860 N +55 0 V +-55 0 V +Z stroke +2655 1860 N +56 0 V +-56 0 V +Z stroke +2711 1860 N +56 0 V +-56 0 V +Z stroke +2767 1860 N +56 0 V +-56 0 V +Z stroke +2823 1860 N +56 0 V +-56 0 V +Z stroke +2879 1860 N +56 0 V +-56 0 V +Z stroke +2935 1860 N +55 0 V +-55 0 V +Z stroke +2990 1860 N +56 0 V +-56 0 V +Z stroke +3046 1860 N +56 0 V +-56 0 V +Z stroke +3102 1860 N +56 0 V +-56 0 V +Z stroke +3158 1860 N +56 0 V +-56 0 V +Z stroke +3214 1860 N +55 0 V +-55 0 V +Z stroke +3269 1860 N +56 0 V +-56 0 V +Z stroke +3325 1860 N +56 0 V +-56 0 V +Z stroke +3381 1860 N +56 0 V +-56 0 V +Z stroke +3437 1860 N +56 0 V +-56 0 V +Z stroke +3493 1860 N +56 0 V +-56 0 V +Z stroke +3549 1860 N +55 0 V +-55 0 V +Z stroke +3604 1860 N +56 0 V +-56 0 V +Z stroke +3660 1860 N +56 0 V +-56 0 V +Z stroke +3716 1860 N +56 0 V +-56 0 V +Z stroke +3772 1860 N +56 0 V +-56 0 V +Z stroke +3828 1860 N +56 0 V +-56 0 V +Z stroke +3884 1860 N +55 0 V +-55 0 V +Z stroke +3939 1860 N +56 0 V +-56 0 V +Z stroke +3995 1860 N +56 0 V +-56 0 V +Z stroke +4051 1860 N +56 0 V +-56 0 V +Z stroke +4107 1860 N +56 0 V +-56 0 V +Z stroke +4163 1860 N +56 0 V +-56 0 V +Z stroke +4219 1860 N +55 0 V +-55 0 V +Z stroke +4274 1860 N +56 0 V +-56 0 V +Z stroke +4330 1860 N +56 0 V +-56 0 V +Z stroke +4386 1860 N +56 0 V +-56 0 V +Z stroke +4442 1860 N +56 0 V +-56 0 V +Z stroke +4498 1860 N +56 0 V +-56 0 V +Z stroke +4554 1860 N +55 0 V +-55 0 V +Z stroke +4609 1860 N +56 0 V +-56 0 V +Z stroke +4665 1860 N +56 0 V +-56 0 V +Z stroke +4721 1860 N +56 0 V +-56 0 V +Z stroke +4777 1860 N +56 0 V +-56 0 V +Z stroke +4833 1860 N +55 0 V +-55 0 V +Z stroke +4888 1860 N +56 0 V +-56 0 V +Z stroke +4944 1860 N +56 0 V +-56 0 V +Z stroke +5000 1860 N +56 0 V +-56 0 V +Z stroke +5056 1860 N +56 0 V +-56 0 V +Z stroke +5112 1860 N +56 0 V +-56 0 V +Z stroke +5168 1860 N +55 0 V +-55 0 V +Z stroke +5223 1860 N +56 0 V +-56 0 V +Z stroke +5279 1860 N +56 0 V +-56 0 V +Z stroke +5335 1860 N +56 0 V +-56 0 V +Z stroke +5391 1860 N +56 0 V +-56 0 V +Z stroke +5447 1860 N +56 0 V +-56 0 V +Z stroke +5503 1860 N +55 0 V +-55 0 V +Z stroke +5558 1860 N +56 0 V +-56 0 V +Z stroke +5614 1860 N +56 0 V +-56 0 V +Z stroke +5670 1860 N +56 0 V +-56 0 V +Z stroke +5726 1860 N +56 0 V +-56 0 V +Z stroke +5782 1860 N +56 0 V +-56 0 V +Z stroke +5838 1860 N +55 0 V +-55 0 V +Z stroke +5893 1860 N +56 0 V +-56 0 V +Z stroke +5949 1860 N +56 0 V +-56 0 V +Z stroke +6005 1860 N +56 0 V +-56 0 V +Z stroke +6061 1860 N +56 0 V +-56 0 V +Z stroke +6117 1860 N +55 0 V +-55 0 V +Z stroke +6172 1860 N +56 0 V +-56 0 V +Z stroke +6228 1860 N +56 0 V +-56 0 V +Z stroke +6284 1860 N +56 0 V +-56 0 V +Z stroke +6340 1860 N +56 0 V +-56 0 V +Z stroke +6396 1860 N +56 0 V +-56 0 V +Z stroke +6452 1860 N +55 0 V +-55 0 V +Z stroke +6507 1860 N +56 0 V +-56 0 V +Z stroke +6563 1860 N +56 0 V +-56 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/img/xoraya_tx_cpuload_norm.eps b/Master/Masterarbeit/thesis/img/xoraya_tx_cpuload_norm.eps new file mode 100644 index 0000000..3a70412 --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_tx_cpuload_norm.eps @@ -0,0 +1,3173 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/xoraya_tx_cpuload_norm.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/xoraya_tx_cpuload_norm.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1167 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1167 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MCshow +1.000 UL +LTb +2080 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2080 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 100)] +] -80.0 MCshow +1.000 UL +LTb +2994 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2994 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 200)] +] -80.0 MCshow +1.000 UL +LTb +3907 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3907 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 300)] +] -80.0 MCshow +1.000 UL +LTb +4820 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4820 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 400)] +] -80.0 MCshow +1.000 UL +LTb +5734 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5734 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 500)] +] -80.0 MCshow +1.000 UL +LTb +6647 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6647 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 600)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (XORAYA mit normaler Priorität unter CPU-Last)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +5 0 V +-5 0 V +Z stroke +1181 1860 N +9 0 V +-9 0 V +Z stroke +1190 1860 N +9 0 V +-9 0 V +Z stroke +1199 1860 N +9 0 V +-9 0 V +Z stroke +1208 1860 N +9 0 V +-9 0 V +Z stroke +1217 1860 N +9 0 V +-9 0 V +Z stroke +1226 1860 N +9 0 V +-9 0 V +Z stroke +1235 1860 N +10 0 V +-10 0 V +Z stroke +1245 1860 N +9 0 V +-9 0 V +Z stroke +1254 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +1263 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +1272 1860 N +9 0 V +-9 0 V +Z stroke +1281 1860 N +9 0 V +-9 0 V +Z stroke +1290 1860 N +9 0 V +-9 0 V +Z stroke +1299 1860 N +9 0 V +-9 0 V +Z stroke +1308 1860 N +10 0 V +-10 0 V +Z stroke +1318 1860 N +9 0 V +-9 0 V +Z stroke +1327 1860 N +9 0 V +-9 0 V +Z stroke +1336 1860 N +9 0 V +-9 0 V +Z stroke +1345 1860 N +9 0 V +-9 0 V +Z stroke +1354 1860 N +9 0 V +-9 0 V +Z stroke +1363 1860 N +9 0 V +-9 0 V +Z stroke +1372 1860 N +10 0 V +-10 0 V +Z stroke +1382 1860 N +9 0 V +-9 0 V +Z stroke +1391 1860 N +9 0 V +-9 0 V +Z stroke +1400 1860 N +9 0 V +-9 0 V +Z stroke +1409 1860 N +9 0 V +-9 0 V +Z stroke +1418 1860 N +9 0 V +-9 0 V +Z stroke +1427 1860 N +9 0 V +-9 0 V +Z stroke +1436 1860 N +9 0 V +-9 0 V +Z stroke +1445 1860 N +10 0 V +-10 0 V +Z stroke +1455 1860 N +9 0 V +-9 0 V +Z stroke +1464 1860 N +9 0 V +-9 0 V +Z stroke +1473 1860 N +9 0 V +-9 0 V +Z stroke +1482 1860 N +9 0 V +-9 0 V +Z stroke +1491 1860 N +9 0 V +-9 0 V +Z stroke +1500 1860 N +9 0 V +-9 0 V +Z stroke +1509 1860 N +10 0 V +-10 0 V +Z stroke +1519 1860 N +9 0 V +-9 0 V +Z stroke +1528 1860 N +9 0 V +-9 0 V +Z stroke +1537 1860 N +9 0 V +-9 0 V +Z stroke +1546 1860 N +9 0 V +-9 0 V +Z stroke +1555 1860 N +9 0 V +-9 0 V +Z stroke +1564 1860 N +9 0 V +-9 0 V +Z stroke +1573 1860 N +9 0 V +-9 0 V +Z stroke +1582 1860 N +10 0 V +-10 0 V +Z stroke +1592 1860 N +9 0 V +-9 0 V +Z stroke +1601 1860 N +9 0 V +-9 0 V +Z stroke +1610 1860 N +9 0 V +-9 0 V +Z stroke +1619 1860 N +9 0 V +-9 0 V +Z stroke +1628 1860 N +9 0 V +-9 0 V +Z stroke +1637 1860 N +9 0 V +-9 0 V +Z stroke +1646 1860 N +10 0 V +-10 0 V +Z stroke +1656 1860 N +9 0 V +-9 0 V +Z stroke +1665 1860 N +9 0 V +-9 0 V +Z stroke +1674 1860 N +9 0 V +-9 0 V +Z stroke +1683 1860 N +9 0 V +-9 0 V +Z stroke +1692 1860 N +9 0 V +-9 0 V +Z stroke +1701 1860 N +9 0 V +-9 0 V +Z stroke +1710 1860 N +9 0 V +-9 0 V +Z stroke +1719 1860 N +10 0 V +-10 0 V +Z stroke +1729 1860 N +9 0 V +-9 0 V +Z stroke +1738 1860 N +9 0 V +-9 0 V +Z stroke +1747 1860 N +9 0 V +-9 0 V +Z stroke +1756 1860 N +9 0 V +-9 0 V +Z stroke +1765 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +1774 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +1783 1860 N +10 0 V +-10 0 V +Z stroke +1793 1860 N +9 0 V +-9 0 V +Z stroke +1802 1860 N +9 0 V +-9 0 V +Z stroke +1811 1860 N +9 0 V +-9 0 V +Z stroke +1820 1860 N +9 0 V +-9 0 V +Z stroke +1829 1860 N +9 0 V +-9 0 V +Z stroke +1838 1860 N +9 0 V +-9 0 V +Z stroke +1847 1860 N +9 0 V +-9 0 V +Z stroke +1856 1860 N +10 0 V +-10 0 V +Z stroke +1866 1860 N +9 0 V +-9 0 V +Z stroke +1875 1860 N +9 0 V +-9 0 V +Z stroke +1884 1860 N +9 0 V +-9 0 V +Z stroke +1893 1860 N +9 0 V +-9 0 V +Z stroke +1902 1860 N +9 0 V +-9 0 V +Z stroke +1911 1860 N +9 0 V +-9 0 V +Z stroke +1920 1860 N +10 0 V +-10 0 V +Z stroke +1930 1860 N +9 0 V +-9 0 V +Z stroke +1939 1860 N +9 0 V +-9 0 V +Z stroke +1948 1860 N +9 0 V +-9 0 V +Z stroke +1957 1860 N +9 0 V +-9 0 V +Z stroke +1966 1860 N +9 0 V +-9 0 V +Z stroke +1975 1860 N +9 0 V +-9 0 V +Z stroke +1984 1860 N +9 0 V +-9 0 V +Z stroke +1993 1860 N +10 0 V +-10 0 V +Z stroke +2003 1860 N +9 0 V +-9 0 V +Z stroke +2012 1860 N +9 0 V +-9 0 V +Z stroke +2021 1860 N +9 0 V +-9 0 V +Z stroke +2030 1860 N +9 0 V +-9 0 V +Z stroke +2039 1860 N +9 0 V +-9 0 V +Z stroke +2048 1860 N +9 0 V +-9 0 V +Z stroke +2057 1860 N +10 0 V +-10 0 V +Z stroke +2067 1860 N +9 0 V +-9 0 V +Z stroke +2076 1860 N +9 0 V +-9 0 V +Z stroke +2085 1860 N +9 0 V +-9 0 V +Z stroke +2094 1860 N +9 0 V +-9 0 V +Z stroke +2103 1860 N +9 0 V +-9 0 V +Z stroke +2112 1860 N +9 0 V +-9 0 V +Z stroke +2121 1860 N +9 0 V +-9 0 V +Z stroke +2130 1860 N +10 0 V +-10 0 V +Z stroke +2140 1860 N +9 0 V +-9 0 V +Z stroke +2149 1860 N +9 0 V +-9 0 V +Z stroke +2158 1860 N +9 0 V +-9 0 V +Z stroke +2167 1860 N +9 0 V +-9 0 V +Z stroke +2176 1860 N +9 0 V +-9 0 V +Z stroke +2185 1860 N +9 0 V +-9 0 V +Z stroke +2194 1860 N +10 0 V +-10 0 V +Z stroke +2204 1860 N +9 0 V +-9 0 V +Z stroke +2213 1860 N +9 0 V +-9 0 V +Z stroke +2222 1860 N +9 0 V +-9 0 V +Z stroke +2231 1860 N +9 0 V +-9 0 V +Z stroke +2240 1860 N +9 0 V +-9 0 V +Z stroke +2249 1860 N +9 0 V +-9 0 V +Z stroke +2258 1860 N +9 0 V +-9 0 V +Z stroke +2267 1860 N +10 0 V +-10 0 V +Z stroke +2277 1860 N +9 0 V +-9 0 V +Z stroke +2286 1860 N +9 0 V +-9 0 V +Z stroke +2295 1860 N +9 0 V +-9 0 V +Z stroke +2304 1860 N +9 0 V +-9 0 V +Z stroke +2313 1860 N +9 0 V +-9 0 V +Z stroke +2322 1860 N +9 0 V +-9 0 V +Z stroke +2331 1860 N +10 0 V +-10 0 V +Z stroke +2341 1860 N +9 0 V +-9 0 V +Z stroke +2350 1860 N +9 0 V +-9 0 V +Z stroke +2359 1860 N +9 0 V +-9 0 V +Z stroke +2368 1860 N +9 0 V +-9 0 V +Z stroke +2377 1860 N +9 0 V +-9 0 V +Z stroke +2386 1860 N +9 0 V +-9 0 V +Z stroke +2395 1860 N +9 0 V +-9 0 V +Z stroke +2404 1860 N +10 0 V +-10 0 V +Z stroke +2414 1860 N +9 0 V +-9 0 V +Z stroke +2423 1860 N +9 0 V +-9 0 V +Z stroke +2432 1860 N +9 0 V +-9 0 V +Z stroke +2441 1860 N +9 0 V +-9 0 V +Z stroke +2450 1860 N +9 0 V +-9 0 V +Z stroke +2459 1860 N +9 0 V +-9 0 V +Z stroke +2468 1860 N +10 0 V +-10 0 V +Z stroke +2478 1860 N +9 0 V +-9 0 V +Z stroke +2487 1860 N +9 0 V +-9 0 V +Z stroke +2496 1860 N +9 0 V +-9 0 V +Z stroke +2505 1860 N +9 0 V +-9 0 V +Z stroke +2514 1860 N +9 0 V +-9 0 V +Z stroke +2523 1860 N +9 0 V +-9 0 V +Z stroke +2532 1860 N +9 0 V +-9 0 V +Z stroke +2541 1860 N +10 0 V +-10 0 V +Z stroke +2551 1860 N +9 0 V +-9 0 V +Z stroke +2560 1860 N +9 0 V +-9 0 V +Z stroke +2569 1860 N +9 0 V +-9 0 V +Z stroke +2578 1860 N +9 0 V +-9 0 V +Z stroke +2587 1860 N +9 0 V +-9 0 V +Z stroke +2596 1860 N +9 0 V +-9 0 V +Z stroke +2605 1860 N +10 0 V +-10 0 V +Z stroke +2615 1860 N +9 0 V +-9 0 V +Z stroke +2624 1860 N +9 0 V +-9 0 V +Z stroke +2633 1860 N +9 0 V +-9 0 V +Z stroke +2642 1860 N +9 0 V +-9 0 V +Z stroke +2651 1860 N +9 0 V +-9 0 V +Z stroke +2660 1860 N +9 0 V +-9 0 V +Z stroke +2669 1860 N +9 0 V +-9 0 V +Z stroke +2678 1860 N +0 684 V +10 0 V +0 -684 V +-10 0 V +Z stroke +2688 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +2697 1860 N +9 0 V +-9 0 V +Z stroke +2706 1860 N +9 0 V +-9 0 V +Z stroke +2715 1860 N +9 0 V +-9 0 V +Z stroke +2724 1860 N +9 0 V +-9 0 V +Z stroke +2733 1860 N +9 0 V +-9 0 V +Z stroke +2742 1860 N +10 0 V +-10 0 V +Z stroke +2752 1860 N +9 0 V +-9 0 V +Z stroke +2761 1860 N +9 0 V +-9 0 V +Z stroke +2770 1860 N +9 0 V +-9 0 V +Z stroke +2779 1860 N +9 0 V +-9 0 V +Z stroke +2788 1860 N +9 0 V +-9 0 V +Z stroke +2797 1860 N +9 0 V +-9 0 V +Z stroke +2806 1860 N +9 0 V +-9 0 V +Z stroke +2815 1860 N +10 0 V +-10 0 V +Z stroke +2825 1860 N +9 0 V +-9 0 V +Z stroke +2834 1860 N +9 0 V +-9 0 V +Z stroke +2843 1860 N +9 0 V +-9 0 V +Z stroke +2852 1860 N +9 0 V +-9 0 V +Z stroke +2861 1860 N +9 0 V +-9 0 V +Z stroke +2870 1860 N +9 0 V +-9 0 V +Z stroke +2879 1860 N +10 0 V +-10 0 V +Z stroke +2889 1860 N +9 0 V +-9 0 V +Z stroke +2898 1860 N +9 0 V +-9 0 V +Z stroke +2907 1860 N +9 0 V +-9 0 V +Z stroke +2916 1860 N +0 1367 V +9 0 V +0 -1367 V +-9 0 V +Z stroke +2925 1860 N +0 1367 V +9 0 V +0 -1367 V +-9 0 V +Z stroke +2934 1860 N +9 0 V +-9 0 V +Z stroke +2943 1860 N +9 0 V +-9 0 V +Z stroke +2952 1860 N +10 0 V +-10 0 V +Z stroke +2962 1860 N +9 0 V +-9 0 V +Z stroke +2971 1860 N +9 0 V +-9 0 V +Z stroke +2980 1860 N +9 0 V +-9 0 V +Z stroke +2989 1860 N +9 0 V +-9 0 V +Z stroke +2998 1860 N +9 0 V +-9 0 V +Z stroke +3007 1860 N +9 0 V +-9 0 V +Z stroke +3016 1860 N +10 0 V +-10 0 V +Z stroke +3026 1860 N +9 0 V +-9 0 V +Z stroke +3035 1860 N +9 0 V +-9 0 V +Z stroke +3044 1860 N +9 0 V +-9 0 V +Z stroke +3053 1860 N +9 0 V +-9 0 V +Z stroke +3062 1860 N +9 0 V +-9 0 V +Z stroke +3071 1860 N +9 0 V +-9 0 V +Z stroke +3080 1860 N +9 0 V +-9 0 V +Z stroke +3089 1860 N +10 0 V +-10 0 V +Z stroke +3099 1860 N +9 0 V +-9 0 V +Z stroke +3108 1860 N +9 0 V +-9 0 V +Z stroke +3117 1860 N +9 0 V +-9 0 V +Z stroke +3126 1860 N +9 0 V +-9 0 V +Z stroke +3135 1860 N +9 0 V +-9 0 V +Z stroke +3144 1860 N +9 0 V +-9 0 V +Z stroke +3153 1860 N +10 0 V +-10 0 V +Z stroke +3163 1860 N +9 0 V +-9 0 V +Z stroke +3172 1860 N +9 0 V +-9 0 V +Z stroke +3181 1860 N +9 0 V +-9 0 V +Z stroke +3190 1860 N +9 0 V +-9 0 V +Z stroke +3199 1860 N +9 0 V +-9 0 V +Z stroke +3208 1860 N +9 0 V +-9 0 V +Z stroke +3217 1860 N +9 0 V +-9 0 V +Z stroke +3226 1860 N +10 0 V +-10 0 V +Z stroke +3236 1860 N +9 0 V +-9 0 V +Z stroke +3245 1860 N +9 0 V +-9 0 V +Z stroke +3254 1860 N +9 0 V +-9 0 V +Z stroke +3263 1860 N +9 0 V +-9 0 V +Z stroke +3272 1860 N +9 0 V +-9 0 V +Z stroke +3281 1860 N +9 0 V +-9 0 V +Z stroke +3290 1860 N +10 0 V +-10 0 V +Z stroke +3300 1860 N +9 0 V +-9 0 V +Z stroke +3309 1860 N +9 0 V +-9 0 V +Z stroke +3318 1860 N +9 0 V +-9 0 V +Z stroke +3327 1860 N +9 0 V +-9 0 V +Z stroke +3336 1860 N +9 0 V +-9 0 V +Z stroke +3345 1860 N +9 0 V +-9 0 V +Z stroke +3354 1860 N +9 0 V +-9 0 V +Z stroke +3363 1860 N +10 0 V +-10 0 V +Z stroke +3373 1860 N +9 0 V +-9 0 V +Z stroke +3382 1860 N +9 0 V +-9 0 V +Z stroke +3391 1860 N +9 0 V +-9 0 V +Z stroke +3400 1860 N +9 0 V +-9 0 V +Z stroke +3409 1860 N +9 0 V +-9 0 V +Z stroke +3418 1860 N +9 0 V +-9 0 V +Z stroke +3427 1860 N +10 0 V +-10 0 V +Z stroke +3437 1860 N +9 0 V +-9 0 V +Z stroke +3446 1860 N +9 0 V +-9 0 V +Z stroke +3455 1860 N +9 0 V +-9 0 V +Z stroke +3464 1860 N +9 0 V +-9 0 V +Z stroke +3473 1860 N +9 0 V +-9 0 V +Z stroke +3482 1860 N +9 0 V +-9 0 V +Z stroke +3491 1860 N +9 0 V +-9 0 V +Z stroke +3500 1860 N +10 0 V +-10 0 V +Z stroke +3510 1860 N +9 0 V +-9 0 V +Z stroke +3519 1860 N +9 0 V +-9 0 V +Z stroke +3528 1860 N +9 0 V +-9 0 V +Z stroke +3537 1860 N +9 0 V +-9 0 V +Z stroke +3546 1860 N +9 0 V +-9 0 V +Z stroke +3555 1860 N +9 0 V +-9 0 V +Z stroke +3564 1860 N +10 0 V +-10 0 V +Z stroke +3574 1860 N +9 0 V +-9 0 V +Z stroke +3583 1860 N +9 0 V +-9 0 V +Z stroke +3592 1860 N +0 752 V +9 0 V +0 -752 V +-9 0 V +Z stroke +3601 1860 N +0 752 V +9 0 V +0 -752 V +-9 0 V +Z stroke +3610 1860 N +9 0 V +-9 0 V +Z stroke +3619 1860 N +9 0 V +-9 0 V +Z stroke +3628 1860 N +9 0 V +-9 0 V +Z stroke +3637 1860 N +10 0 V +-10 0 V +Z stroke +3647 1860 N +9 0 V +-9 0 V +Z stroke +3656 1860 N +9 0 V +-9 0 V +Z stroke +3665 1860 N +9 0 V +-9 0 V +Z stroke +3674 1860 N +9 0 V +-9 0 V +Z stroke +3683 1860 N +9 0 V +-9 0 V +Z stroke +3692 1860 N +9 0 V +-9 0 V +Z stroke +3701 1860 N +10 0 V +-10 0 V +Z stroke +3711 1860 N +9 0 V +-9 0 V +Z stroke +3720 1860 N +9 0 V +-9 0 V +Z stroke +3729 1860 N +9 0 V +-9 0 V +Z stroke +3738 1860 N +9 0 V +-9 0 V +Z stroke +3747 1860 N +9 0 V +-9 0 V +Z stroke +3756 1860 N +9 0 V +-9 0 V +Z stroke +3765 1860 N +9 0 V +-9 0 V +Z stroke +3774 1860 N +10 0 V +-10 0 V +Z stroke +3784 1860 N +9 0 V +-9 0 V +Z stroke +3793 1860 N +9 0 V +-9 0 V +Z stroke +3802 1860 N +9 0 V +-9 0 V +Z stroke +3811 1860 N +9 0 V +-9 0 V +Z stroke +3820 1860 N +9 0 V +-9 0 V +Z stroke +3829 1860 N +9 0 V +-9 0 V +Z stroke +3838 1860 N +10 0 V +-10 0 V +Z stroke +3848 1860 N +9 0 V +-9 0 V +Z stroke +3857 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +3866 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +3875 1860 N +9 0 V +-9 0 V +Z stroke +3884 1860 N +9 0 V +-9 0 V +Z stroke +3893 1860 N +9 0 V +-9 0 V +Z stroke +3902 1860 N +9 0 V +-9 0 V +Z stroke +3911 1860 N +10 0 V +-10 0 V +Z stroke +3921 1860 N +9 0 V +-9 0 V +Z stroke +3930 1860 N +9 0 V +-9 0 V +Z stroke +3939 1860 N +9 0 V +-9 0 V +Z stroke +3948 1860 N +9 0 V +-9 0 V +Z stroke +3957 1860 N +9 0 V +-9 0 V +Z stroke +3966 1860 N +9 0 V +-9 0 V +Z stroke +3975 1860 N +10 0 V +-10 0 V +Z stroke +3985 1860 N +9 0 V +-9 0 V +Z stroke +3994 1860 N +9 0 V +-9 0 V +Z stroke +4003 1860 N +9 0 V +-9 0 V +Z stroke +4012 1860 N +9 0 V +-9 0 V +Z stroke +4021 1860 N +9 0 V +-9 0 V +Z stroke +4030 1860 N +9 0 V +-9 0 V +Z stroke +4039 1860 N +10 0 V +-10 0 V +Z stroke +4049 1860 N +9 0 V +-9 0 V +Z stroke +4058 1860 N +9 0 V +-9 0 V +Z stroke +4067 1860 N +9 0 V +-9 0 V +Z stroke +4076 1860 N +9 0 V +-9 0 V +Z stroke +4085 1860 N +9 0 V +-9 0 V +Z stroke +4094 1860 N +9 0 V +-9 0 V +Z stroke +4103 1860 N +9 0 V +-9 0 V +Z stroke +4112 1860 N +10 0 V +-10 0 V +Z stroke +4122 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +4131 1860 N +0 137 V +9 0 V +0 -137 V +-9 0 V +Z stroke +4140 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +4149 1860 N +9 0 V +-9 0 V +Z stroke +4158 1860 N +9 0 V +-9 0 V +Z stroke +4167 1860 N +9 0 V +-9 0 V +Z stroke +4176 1860 N +10 0 V +-10 0 V +Z stroke +4186 1860 N +9 0 V +-9 0 V +Z stroke +4195 1860 N +9 0 V +-9 0 V +Z stroke +4204 1860 N +9 0 V +-9 0 V +Z stroke +4213 1860 N +9 0 V +-9 0 V +Z stroke +4222 1860 N +9 0 V +-9 0 V +Z stroke +4231 1860 N +9 0 V +-9 0 V +Z stroke +4240 1860 N +9 0 V +-9 0 V +Z stroke +4249 1860 N +10 0 V +-10 0 V +Z stroke +4259 1860 N +9 0 V +-9 0 V +Z stroke +4268 1860 N +9 0 V +-9 0 V +Z stroke +4277 1860 N +9 0 V +-9 0 V +Z stroke +4286 1860 N +9 0 V +-9 0 V +Z stroke +4295 1860 N +9 0 V +-9 0 V +Z stroke +4304 1860 N +9 0 V +-9 0 V +Z stroke +4313 1860 N +10 0 V +-10 0 V +Z stroke +4323 1860 N +9 0 V +-9 0 V +Z stroke +4332 1860 N +9 0 V +-9 0 V +Z stroke +4341 1860 N +9 0 V +-9 0 V +Z stroke +4350 1860 N +9 0 V +-9 0 V +Z stroke +4359 1860 N +9 0 V +-9 0 V +Z stroke +4368 1860 N +9 0 V +-9 0 V +Z stroke +4377 1860 N +9 0 V +-9 0 V +Z stroke +4386 1860 N +10 0 V +-10 0 V +Z stroke +4396 1860 N +9 0 V +-9 0 V +Z stroke +4405 1860 N +9 0 V +-9 0 V +Z stroke +4414 1860 N +9 0 V +-9 0 V +Z stroke +4423 1860 N +9 0 V +-9 0 V +Z stroke +4432 1860 N +9 0 V +-9 0 V +Z stroke +4441 1860 N +9 0 V +-9 0 V +Z stroke +4450 1860 N +10 0 V +-10 0 V +Z stroke +4460 1860 N +9 0 V +-9 0 V +Z stroke +4469 1860 N +9 0 V +-9 0 V +Z stroke +4478 1860 N +9 0 V +-9 0 V +Z stroke +4487 1860 N +9 0 V +-9 0 V +Z stroke +4496 1860 N +9 0 V +-9 0 V +Z stroke +4505 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +4514 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +4523 1860 N +10 0 V +-10 0 V +Z stroke +4533 1860 N +9 0 V +-9 0 V +Z stroke +4542 1860 N +9 0 V +-9 0 V +Z stroke +4551 1860 N +9 0 V +-9 0 V +Z stroke +4560 1860 N +9 0 V +-9 0 V +Z stroke +4569 1860 N +9 0 V +-9 0 V +Z stroke +4578 1860 N +9 0 V +-9 0 V +Z stroke +4587 1860 N +10 0 V +-10 0 V +Z stroke +4597 1860 N +9 0 V +-9 0 V +Z stroke +4606 1860 N +9 0 V +-9 0 V +Z stroke +4615 1860 N +9 0 V +-9 0 V +Z stroke +4624 1860 N +9 0 V +-9 0 V +Z stroke +4633 1860 N +9 0 V +-9 0 V +Z stroke +4642 1860 N +9 0 V +-9 0 V +Z stroke +4651 1860 N +9 0 V +-9 0 V +Z stroke +4660 1860 N +10 0 V +-10 0 V +Z stroke +4670 1860 N +9 0 V +-9 0 V +Z stroke +4679 1860 N +9 0 V +-9 0 V +Z stroke +4688 1860 N +9 0 V +-9 0 V +Z stroke +4697 1860 N +9 0 V +-9 0 V +Z stroke +4706 1860 N +9 0 V +-9 0 V +Z stroke +4715 1860 N +9 0 V +-9 0 V +Z stroke +4724 1860 N +10 0 V +-10 0 V +Z stroke +4734 1860 N +9 0 V +-9 0 V +Z stroke +4743 1860 N +9 0 V +-9 0 V +Z stroke +4752 1860 N +9 0 V +-9 0 V +Z stroke +4761 1860 N +9 0 V +-9 0 V +Z stroke +4770 1860 N +9 0 V +-9 0 V +Z stroke +4779 1860 N +9 0 V +-9 0 V +Z stroke +4788 1860 N +9 0 V +-9 0 V +Z stroke +4797 1860 N +10 0 V +-10 0 V +Z stroke +4807 1860 N +9 0 V +-9 0 V +Z stroke +4816 1860 N +9 0 V +-9 0 V +Z stroke +4825 1860 N +9 0 V +-9 0 V +Z stroke +4834 1860 N +9 0 V +-9 0 V +Z stroke +4843 1860 N +9 0 V +-9 0 V +Z stroke +4852 1860 N +9 0 V +-9 0 V +Z stroke +4861 1860 N +10 0 V +-10 0 V +Z stroke +4871 1860 N +9 0 V +-9 0 V +Z stroke +4880 1860 N +9 0 V +-9 0 V +Z stroke +4889 1860 N +9 0 V +-9 0 V +Z stroke +4898 1860 N +9 0 V +-9 0 V +Z stroke +4907 1860 N +9 0 V +-9 0 V +Z stroke +4916 1860 N +9 0 V +-9 0 V +Z stroke +4925 1860 N +9 0 V +-9 0 V +Z stroke +4934 1860 N +10 0 V +-10 0 V +Z stroke +4944 1860 N +9 0 V +-9 0 V +Z stroke +4953 1860 N +9 0 V +-9 0 V +Z stroke +4962 1860 N +9 0 V +-9 0 V +Z stroke +4971 1860 N +9 0 V +-9 0 V +Z stroke +4980 1860 N +9 0 V +-9 0 V +Z stroke +4989 1860 N +9 0 V +-9 0 V +Z stroke +4998 1860 N +10 0 V +-10 0 V +Z stroke +5008 1860 N +9 0 V +-9 0 V +Z stroke +5017 1860 N +9 0 V +-9 0 V +Z stroke +5026 1860 N +9 0 V +-9 0 V +Z stroke +5035 1860 N +9 0 V +-9 0 V +Z stroke +5044 1860 N +9 0 V +-9 0 V +Z stroke +5053 1860 N +9 0 V +-9 0 V +Z stroke +5062 1860 N +9 0 V +-9 0 V +Z stroke +5071 1860 N +10 0 V +-10 0 V +Z stroke +5081 1860 N +9 0 V +-9 0 V +Z stroke +5090 1860 N +9 0 V +-9 0 V +Z stroke +5099 1860 N +9 0 V +-9 0 V +Z stroke +5108 1860 N +9 0 V +-9 0 V +Z stroke +5117 1860 N +9 0 V +-9 0 V +Z stroke +5126 1860 N +9 0 V +-9 0 V +Z stroke +5135 1860 N +10 0 V +-10 0 V +Z stroke +5145 1860 N +9 0 V +-9 0 V +Z stroke +5154 1860 N +9 0 V +-9 0 V +Z stroke +5163 1860 N +9 0 V +-9 0 V +Z stroke +5172 1860 N +9 0 V +-9 0 V +Z stroke +5181 1860 N +9 0 V +-9 0 V +Z stroke +5190 1860 N +9 0 V +-9 0 V +Z stroke +5199 1860 N +9 0 V +-9 0 V +Z stroke +5208 1860 N +10 0 V +-10 0 V +Z stroke +5218 1860 N +9 0 V +-9 0 V +Z stroke +5227 1860 N +9 0 V +-9 0 V +Z stroke +5236 1860 N +9 0 V +-9 0 V +Z stroke +5245 1860 N +9 0 V +-9 0 V +Z stroke +5254 1860 N +9 0 V +-9 0 V +Z stroke +5263 1860 N +9 0 V +-9 0 V +Z stroke +5272 1860 N +10 0 V +-10 0 V +Z stroke +5282 1860 N +9 0 V +-9 0 V +Z stroke +5291 1860 N +9 0 V +-9 0 V +Z stroke +5300 1860 N +9 0 V +-9 0 V +Z stroke +5309 1860 N +9 0 V +-9 0 V +Z stroke +5318 1860 N +9 0 V +-9 0 V +Z stroke +5327 1860 N +9 0 V +-9 0 V +Z stroke +5336 1860 N +9 0 V +-9 0 V +Z stroke +5345 1860 N +10 0 V +-10 0 V +Z stroke +5355 1860 N +9 0 V +-9 0 V +Z stroke +5364 1860 N +9 0 V +-9 0 V +Z stroke +5373 1860 N +9 0 V +-9 0 V +Z stroke +5382 1860 N +9 0 V +-9 0 V +Z stroke +5391 1860 N +9 0 V +-9 0 V +Z stroke +5400 1860 N +9 0 V +-9 0 V +Z stroke +5409 1860 N +10 0 V +-10 0 V +Z stroke +5419 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +5428 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +5437 1860 N +9 0 V +-9 0 V +Z stroke +5446 1860 N +9 0 V +-9 0 V +Z stroke +5455 1860 N +9 0 V +-9 0 V +Z stroke +5464 1860 N +9 0 V +-9 0 V +Z stroke +5473 1860 N +9 0 V +-9 0 V +Z stroke +5482 1860 N +10 0 V +-10 0 V +Z stroke +5492 1860 N +9 0 V +-9 0 V +Z stroke +5501 1860 N +9 0 V +-9 0 V +Z stroke +5510 1860 N +9 0 V +-9 0 V +Z stroke +5519 1860 N +9 0 V +-9 0 V +Z stroke +5528 1860 N +9 0 V +-9 0 V +Z stroke +5537 1860 N +9 0 V +-9 0 V +Z stroke +5546 1860 N +10 0 V +-10 0 V +Z stroke +5556 1860 N +9 0 V +-9 0 V +Z stroke +5565 1860 N +9 0 V +-9 0 V +Z stroke +5574 1860 N +9 0 V +-9 0 V +Z stroke +5583 1860 N +9 0 V +-9 0 V +Z stroke +5592 1860 N +9 0 V +-9 0 V +Z stroke +5601 1860 N +9 0 V +-9 0 V +Z stroke +5610 1860 N +9 0 V +-9 0 V +Z stroke +5619 1860 N +10 0 V +-10 0 V +Z stroke +5629 1860 N +9 0 V +-9 0 V +Z stroke +5638 1860 N +9 0 V +-9 0 V +Z stroke +5647 1860 N +9 0 V +-9 0 V +Z stroke +5656 1860 N +9 0 V +-9 0 V +Z stroke +5665 1860 N +9 0 V +-9 0 V +Z stroke +5674 1860 N +9 0 V +-9 0 V +Z stroke +5683 1860 N +10 0 V +-10 0 V +Z stroke +5693 1860 N +9 0 V +-9 0 V +Z stroke +5702 1860 N +9 0 V +-9 0 V +Z stroke +5711 1860 N +9 0 V +-9 0 V +Z stroke +5720 1860 N +9 0 V +-9 0 V +Z stroke +5729 1860 N +9 0 V +-9 0 V +Z stroke +5738 1860 N +9 0 V +-9 0 V +Z stroke +5747 1860 N +9 0 V +-9 0 V +Z stroke +5756 1860 N +10 0 V +-10 0 V +Z stroke +5766 1860 N +9 0 V +-9 0 V +Z stroke +5775 1860 N +9 0 V +-9 0 V +Z stroke +5784 1860 N +9 0 V +-9 0 V +Z stroke +5793 1860 N +9 0 V +-9 0 V +Z stroke +5802 1860 N +9 0 V +-9 0 V +Z stroke +5811 1860 N +9 0 V +-9 0 V +Z stroke +5820 1860 N +10 0 V +-10 0 V +Z stroke +5830 1860 N +9 0 V +-9 0 V +Z stroke +5839 1860 N +9 0 V +-9 0 V +Z stroke +5848 1860 N +9 0 V +-9 0 V +Z stroke +5857 1860 N +9 0 V +-9 0 V +Z stroke +5866 1860 N +9 0 V +-9 0 V +Z stroke +5875 1860 N +9 0 V +-9 0 V +Z stroke +5884 1860 N +9 0 V +-9 0 V +Z stroke +5893 1860 N +10 0 V +-10 0 V +Z stroke +5903 1860 N +9 0 V +-9 0 V +Z stroke +5912 1860 N +9 0 V +-9 0 V +Z stroke +5921 1860 N +9 0 V +-9 0 V +Z stroke +5930 1860 N +9 0 V +-9 0 V +Z stroke +5939 1860 N +9 0 V +-9 0 V +Z stroke +5948 1860 N +9 0 V +-9 0 V +Z stroke +5957 1860 N +10 0 V +-10 0 V +Z stroke +5967 1860 N +9 0 V +-9 0 V +Z stroke +5976 1860 N +9 0 V +-9 0 V +Z stroke +5985 1860 N +9 0 V +-9 0 V +Z stroke +5994 1860 N +9 0 V +-9 0 V +Z stroke +6003 1860 N +9 0 V +-9 0 V +Z stroke +6012 1860 N +9 0 V +-9 0 V +Z stroke +6021 1860 N +9 0 V +-9 0 V +Z stroke +6030 1860 N +10 0 V +-10 0 V +Z stroke +6040 1860 N +9 0 V +-9 0 V +Z stroke +6049 1860 N +9 0 V +-9 0 V +Z stroke +6058 1860 N +9 0 V +-9 0 V +Z stroke +6067 1860 N +9 0 V +-9 0 V +Z stroke +6076 1860 N +9 0 V +-9 0 V +Z stroke +6085 1860 N +9 0 V +-9 0 V +Z stroke +6094 1860 N +10 0 V +-10 0 V +Z stroke +6104 1860 N +9 0 V +-9 0 V +Z stroke +6113 1860 N +9 0 V +-9 0 V +Z stroke +6122 1860 N +9 0 V +-9 0 V +Z stroke +6131 1860 N +9 0 V +-9 0 V +Z stroke +6140 1860 N +9 0 V +-9 0 V +Z stroke +6149 1860 N +9 0 V +-9 0 V +Z stroke +6158 1860 N +9 0 V +-9 0 V +Z stroke +6167 1860 N +10 0 V +-10 0 V +Z stroke +6177 1860 N +9 0 V +-9 0 V +Z stroke +6186 1860 N +9 0 V +-9 0 V +Z stroke +6195 1860 N +9 0 V +-9 0 V +Z stroke +6204 1860 N +9 0 V +-9 0 V +Z stroke +6213 1860 N +9 0 V +-9 0 V +Z stroke +6222 1860 N +9 0 V +-9 0 V +Z stroke +6231 1860 N +10 0 V +-10 0 V +Z stroke +6241 1860 N +9 0 V +-9 0 V +Z stroke +6250 1860 N +9 0 V +-9 0 V +Z stroke +6259 1860 N +9 0 V +-9 0 V +Z stroke +6268 1860 N +9 0 V +-9 0 V +Z stroke +6277 1860 N +9 0 V +-9 0 V +Z stroke +6286 1860 N +9 0 V +-9 0 V +Z stroke +6295 1860 N +9 0 V +-9 0 V +Z stroke +6304 1860 N +10 0 V +-10 0 V +Z stroke +6314 1860 N +9 0 V +-9 0 V +Z stroke +6323 1860 N +9 0 V +-9 0 V +Z stroke +6332 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +6341 1860 N +0 684 V +9 0 V +0 -684 V +-9 0 V +Z stroke +6350 1860 N +9 0 V +-9 0 V +Z stroke +6359 1860 N +9 0 V +-9 0 V +Z stroke +6368 1860 N +10 0 V +-10 0 V +Z stroke +6378 1860 N +9 0 V +-9 0 V +Z stroke +6387 1860 N +9 0 V +-9 0 V +Z stroke +6396 1860 N +9 0 V +-9 0 V +Z stroke +6405 1860 N +9 0 V +-9 0 V +Z stroke +6414 1860 N +9 0 V +-9 0 V +Z stroke +6423 1860 N +9 0 V +-9 0 V +Z stroke +6432 1860 N +9 0 V +-9 0 V +Z stroke +6441 1860 N +10 0 V +-10 0 V +Z stroke +6451 1860 N +9 0 V +-9 0 V +Z stroke +6460 1860 N +9 0 V +-9 0 V +Z stroke +6469 1860 N +9 0 V +-9 0 V +Z stroke +6478 1860 N +9 0 V +-9 0 V +Z stroke +6487 1860 N +9 0 V +-9 0 V +Z stroke +6496 1860 N +9 0 V +-9 0 V +Z stroke +6505 1860 N +10 0 V +-10 0 V +Z stroke +6515 1860 N +9 0 V +-9 0 V +Z stroke +6524 1860 N +9 0 V +-9 0 V +Z stroke +6533 1860 N +9 0 V +-9 0 V +Z stroke +6542 1860 N +9 0 V +-9 0 V +Z stroke +6551 1860 N +9 0 V +-9 0 V +Z stroke +6560 1860 N +9 0 V +-9 0 V +Z stroke +6569 1860 N +9 0 V +-9 0 V +Z stroke +6578 1860 N +10 0 V +-10 0 V +Z stroke +6588 1860 N +9 0 V +-9 0 V +Z stroke +6597 1860 N +9 0 V +-9 0 V +Z stroke +6606 1860 N +9 0 V +-9 0 V +Z stroke +6615 1860 N +9 0 V +-9 0 V +Z stroke +6624 1860 N +9 0 V +-9 0 V +Z stroke +6633 1860 N +9 0 V +-9 0 V +Z stroke +6642 1860 N +5 0 V +-5 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/img/xoraya_tx_cpuload_rt.eps b/Master/Masterarbeit/thesis/img/xoraya_tx_cpuload_rt.eps new file mode 100644 index 0000000..2c4deea --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_tx_cpuload_rt.eps @@ -0,0 +1,3115 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/xoraya_tx_cpuload_rt.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/xoraya_tx_cpuload_rt.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1176 1176 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1176 M +[ [(Helvetica) 240.0 0.0 true true 0 (-1)] +] -80.0 MRshow +1.000 UL +LTb +1176 1518 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1518 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 1860 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 1860 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1176 2202 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2202 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 2544 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2544 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1)] +] -80.0 MRshow +1.000 UL +LTb +1176 2885 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 2885 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 1.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3227 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3227 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2)] +] -80.0 MRshow +1.000 UL +LTb +1176 3569 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3569 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 2.5)] +] -80.0 MRshow +1.000 UL +LTb +1176 3911 M +63 0 V +5408 0 R +-63 0 V +stroke +1032 3911 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 3)] +] -80.0 MRshow +1.000 UL +LTb +1167 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +1167 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MCshow +1.000 UL +LTb +2080 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2080 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 100)] +] -80.0 MCshow +1.000 UL +LTb +2994 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +2994 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 200)] +] -80.0 MCshow +1.000 UL +LTb +3907 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +3907 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 300)] +] -80.0 MCshow +1.000 UL +LTb +4820 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +4820 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 400)] +] -80.0 MCshow +1.000 UL +LTb +5734 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +5734 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 500)] +] -80.0 MCshow +1.000 UL +LTb +6647 1176 M +0 63 V +0 2672 R +0 -63 V +stroke +6647 936 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 600)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3911 576 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3911 4271 M +[ [(Helvetica) 240.0 0.0 true true 0 (XORAYA mit RT-Priorität unter CPU-Last)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1176 1860 N +5 0 V +-5 0 V +Z stroke +1181 1860 N +9 0 V +-9 0 V +Z stroke +1190 1860 N +9 0 V +-9 0 V +Z stroke +1199 1860 N +9 0 V +-9 0 V +Z stroke +1208 1860 N +9 0 V +-9 0 V +Z stroke +1217 1860 N +9 0 V +-9 0 V +Z stroke +1226 1860 N +9 0 V +-9 0 V +Z stroke +1235 1860 N +10 0 V +-10 0 V +Z stroke +1245 1860 N +9 0 V +-9 0 V +Z stroke +1254 1860 N +9 0 V +-9 0 V +Z stroke +1263 1860 N +9 0 V +-9 0 V +Z stroke +1272 1860 N +9 0 V +-9 0 V +Z stroke +1281 1860 N +9 0 V +-9 0 V +Z stroke +1290 1860 N +9 0 V +-9 0 V +Z stroke +1299 1860 N +9 0 V +-9 0 V +Z stroke +1308 1860 N +10 0 V +-10 0 V +Z stroke +1318 1860 N +9 0 V +-9 0 V +Z stroke +1327 1860 N +9 0 V +-9 0 V +Z stroke +1336 1860 N +9 0 V +-9 0 V +Z stroke +1345 1860 N +9 0 V +-9 0 V +Z stroke +1354 1860 N +9 0 V +-9 0 V +Z stroke +1363 1860 N +9 0 V +-9 0 V +Z stroke +1372 1860 N +10 0 V +-10 0 V +Z stroke +1382 1860 N +9 0 V +-9 0 V +Z stroke +1391 1860 N +9 0 V +-9 0 V +Z stroke +1400 1860 N +9 0 V +-9 0 V +Z stroke +1409 1860 N +9 0 V +-9 0 V +Z stroke +1418 1860 N +9 0 V +-9 0 V +Z stroke +1427 1860 N +9 0 V +-9 0 V +Z stroke +1436 1860 N +9 0 V +-9 0 V +Z stroke +1445 1860 N +10 0 V +-10 0 V +Z stroke +1455 1860 N +9 0 V +-9 0 V +Z stroke +1464 1860 N +9 0 V +-9 0 V +Z stroke +1473 1860 N +9 0 V +-9 0 V +Z stroke +1482 1860 N +9 0 V +-9 0 V +Z stroke +1491 1860 N +9 0 V +-9 0 V +Z stroke +1500 1860 N +9 0 V +-9 0 V +Z stroke +1509 1860 N +10 0 V +-10 0 V +Z stroke +1519 1860 N +9 0 V +-9 0 V +Z stroke +1528 1860 N +9 0 V +-9 0 V +Z stroke +1537 1860 N +9 0 V +-9 0 V +Z stroke +1546 1860 N +9 0 V +-9 0 V +Z stroke +1555 1860 N +9 0 V +-9 0 V +Z stroke +1564 1860 N +9 0 V +-9 0 V +Z stroke +1573 1860 N +9 0 V +-9 0 V +Z stroke +1582 1860 N +10 0 V +-10 0 V +Z stroke +1592 1860 N +9 0 V +-9 0 V +Z stroke +1601 1860 N +9 0 V +-9 0 V +Z stroke +1610 1860 N +9 0 V +-9 0 V +Z stroke +1619 1860 N +9 0 V +-9 0 V +Z stroke +1628 1860 N +9 0 V +-9 0 V +Z stroke +1637 1860 N +9 0 V +-9 0 V +Z stroke +1646 1860 N +10 0 V +-10 0 V +Z stroke +1656 1860 N +9 0 V +-9 0 V +Z stroke +1665 1860 N +9 0 V +-9 0 V +Z stroke +1674 1860 N +9 0 V +-9 0 V +Z stroke +1683 1860 N +9 0 V +-9 0 V +Z stroke +1692 1860 N +9 0 V +-9 0 V +Z stroke +1701 1860 N +9 0 V +-9 0 V +Z stroke +1710 1860 N +9 0 V +-9 0 V +Z stroke +1719 1860 N +10 0 V +-10 0 V +Z stroke +1729 1860 N +9 0 V +-9 0 V +Z stroke +1738 1860 N +9 0 V +-9 0 V +Z stroke +1747 1860 N +9 0 V +-9 0 V +Z stroke +1756 1860 N +9 0 V +-9 0 V +Z stroke +1765 1860 N +9 0 V +-9 0 V +Z stroke +1774 1860 N +9 0 V +-9 0 V +Z stroke +1783 1860 N +10 0 V +-10 0 V +Z stroke +1793 1860 N +9 0 V +-9 0 V +Z stroke +1802 1860 N +9 0 V +-9 0 V +Z stroke +1811 1860 N +9 0 V +-9 0 V +Z stroke +1820 1860 N +9 0 V +-9 0 V +Z stroke +1829 1860 N +9 0 V +-9 0 V +Z stroke +1838 1860 N +9 0 V +-9 0 V +Z stroke +1847 1860 N +9 0 V +-9 0 V +Z stroke +1856 1860 N +10 0 V +-10 0 V +Z stroke +1866 1860 N +9 0 V +-9 0 V +Z stroke +1875 1860 N +9 0 V +-9 0 V +Z stroke +1884 1860 N +9 0 V +-9 0 V +Z stroke +1893 1860 N +9 0 V +-9 0 V +Z stroke +1902 1860 N +9 0 V +-9 0 V +Z stroke +1911 1860 N +9 0 V +-9 0 V +Z stroke +1920 1860 N +10 0 V +-10 0 V +Z stroke +1930 1860 N +9 0 V +-9 0 V +Z stroke +1939 1860 N +9 0 V +-9 0 V +Z stroke +1948 1860 N +9 0 V +-9 0 V +Z stroke +1957 1860 N +9 0 V +-9 0 V +Z stroke +1966 1860 N +9 0 V +-9 0 V +Z stroke +1975 1860 N +9 0 V +-9 0 V +Z stroke +1984 1860 N +9 0 V +-9 0 V +Z stroke +1993 1860 N +10 0 V +-10 0 V +Z stroke +2003 1860 N +9 0 V +-9 0 V +Z stroke +2012 1860 N +9 0 V +-9 0 V +Z stroke +2021 1860 N +9 0 V +-9 0 V +Z stroke +2030 1860 N +9 0 V +-9 0 V +Z stroke +2039 1860 N +9 0 V +-9 0 V +Z stroke +2048 1860 N +9 0 V +-9 0 V +Z stroke +2057 1860 N +10 0 V +-10 0 V +Z stroke +2067 1860 N +9 0 V +-9 0 V +Z stroke +2076 1860 N +9 0 V +-9 0 V +Z stroke +2085 1860 N +9 0 V +-9 0 V +Z stroke +2094 1860 N +9 0 V +-9 0 V +Z stroke +2103 1860 N +9 0 V +-9 0 V +Z stroke +2112 1860 N +9 0 V +-9 0 V +Z stroke +2121 1860 N +9 0 V +-9 0 V +Z stroke +2130 1860 N +10 0 V +-10 0 V +Z stroke +2140 1860 N +9 0 V +-9 0 V +Z stroke +2149 1860 N +9 0 V +-9 0 V +Z stroke +2158 1860 N +9 0 V +-9 0 V +Z stroke +2167 1860 N +9 0 V +-9 0 V +Z stroke +2176 1860 N +9 0 V +-9 0 V +Z stroke +2185 1860 N +9 0 V +-9 0 V +Z stroke +2194 1860 N +10 0 V +-10 0 V +Z stroke +2204 1860 N +9 0 V +-9 0 V +Z stroke +2213 1860 N +9 0 V +-9 0 V +Z stroke +2222 1860 N +9 0 V +-9 0 V +Z stroke +2231 1860 N +9 0 V +-9 0 V +Z stroke +2240 1860 N +9 0 V +-9 0 V +Z stroke +2249 1860 N +9 0 V +-9 0 V +Z stroke +2258 1860 N +9 0 V +-9 0 V +Z stroke +2267 1860 N +10 0 V +-10 0 V +Z stroke +2277 1860 N +9 0 V +-9 0 V +Z stroke +2286 1860 N +9 0 V +-9 0 V +Z stroke +2295 1860 N +9 0 V +-9 0 V +Z stroke +2304 1860 N +9 0 V +-9 0 V +Z stroke +2313 1860 N +9 0 V +-9 0 V +Z stroke +2322 1860 N +9 0 V +-9 0 V +Z stroke +2331 1860 N +10 0 V +-10 0 V +Z stroke +2341 1860 N +9 0 V +-9 0 V +Z stroke +2350 1860 N +9 0 V +-9 0 V +Z stroke +2359 1860 N +9 0 V +-9 0 V +Z stroke +2368 1860 N +9 0 V +-9 0 V +Z stroke +2377 1860 N +9 0 V +-9 0 V +Z stroke +2386 1860 N +9 0 V +-9 0 V +Z stroke +2395 1860 N +9 0 V +-9 0 V +Z stroke +2404 1860 N +10 0 V +-10 0 V +Z stroke +2414 1860 N +9 0 V +-9 0 V +Z stroke +2423 1860 N +9 0 V +-9 0 V +Z stroke +2432 1860 N +9 0 V +-9 0 V +Z stroke +2441 1860 N +9 0 V +-9 0 V +Z stroke +2450 1860 N +9 0 V +-9 0 V +Z stroke +2459 1860 N +9 0 V +-9 0 V +Z stroke +2468 1860 N +10 0 V +-10 0 V +Z stroke +2478 1860 N +9 0 V +-9 0 V +Z stroke +2487 1860 N +9 0 V +-9 0 V +Z stroke +2496 1860 N +9 0 V +-9 0 V +Z stroke +2505 1860 N +9 0 V +-9 0 V +Z stroke +2514 1860 N +9 0 V +-9 0 V +Z stroke +2523 1860 N +9 0 V +-9 0 V +Z stroke +2532 1860 N +9 0 V +-9 0 V +Z stroke +2541 1860 N +10 0 V +-10 0 V +Z stroke +2551 1860 N +9 0 V +-9 0 V +Z stroke +2560 1860 N +9 0 V +-9 0 V +Z stroke +2569 1860 N +9 0 V +-9 0 V +Z stroke +2578 1860 N +9 0 V +-9 0 V +Z stroke +2587 1860 N +9 0 V +-9 0 V +Z stroke +2596 1860 N +9 0 V +-9 0 V +Z stroke +2605 1860 N +10 0 V +-10 0 V +Z stroke +2615 1860 N +9 0 V +-9 0 V +Z stroke +2624 1860 N +9 0 V +-9 0 V +Z stroke +2633 1860 N +9 0 V +-9 0 V +Z stroke +2642 1860 N +9 0 V +-9 0 V +Z stroke +2651 1860 N +9 0 V +-9 0 V +Z stroke +2660 1860 N +9 0 V +-9 0 V +Z stroke +2669 1860 N +9 0 V +-9 0 V +Z stroke +2678 1860 N +10 0 V +-10 0 V +Z stroke +2688 1860 N +9 0 V +-9 0 V +Z stroke +2697 1860 N +9 0 V +-9 0 V +Z stroke +2706 1860 N +9 0 V +-9 0 V +Z stroke +2715 1860 N +9 0 V +-9 0 V +Z stroke +2724 1860 N +9 0 V +-9 0 V +Z stroke +2733 1860 N +9 0 V +-9 0 V +Z stroke +2742 1860 N +10 0 V +-10 0 V +Z stroke +2752 1860 N +9 0 V +-9 0 V +Z stroke +2761 1860 N +9 0 V +-9 0 V +Z stroke +2770 1860 N +9 0 V +-9 0 V +Z stroke +2779 1860 N +9 0 V +-9 0 V +Z stroke +2788 1860 N +9 0 V +-9 0 V +Z stroke +2797 1860 N +9 0 V +-9 0 V +Z stroke +2806 1860 N +9 0 V +-9 0 V +Z stroke +2815 1860 N +10 0 V +-10 0 V +Z stroke +2825 1860 N +9 0 V +-9 0 V +Z stroke +2834 1860 N +9 0 V +-9 0 V +Z stroke +2843 1860 N +9 0 V +-9 0 V +Z stroke +2852 1860 N +9 0 V +-9 0 V +Z stroke +2861 1860 N +9 0 V +-9 0 V +Z stroke +2870 1860 N +9 0 V +-9 0 V +Z stroke +2879 1860 N +10 0 V +-10 0 V +Z stroke +2889 1860 N +9 0 V +-9 0 V +Z stroke +2898 1860 N +9 0 V +-9 0 V +Z stroke +2907 1860 N +9 0 V +-9 0 V +Z stroke +2916 1860 N +9 0 V +-9 0 V +Z stroke +2925 1860 N +9 0 V +-9 0 V +Z stroke +2934 1860 N +9 0 V +-9 0 V +Z stroke +2943 1860 N +9 0 V +-9 0 V +Z stroke +2952 1860 N +10 0 V +-10 0 V +Z stroke +2962 1860 N +9 0 V +-9 0 V +Z stroke +2971 1860 N +9 0 V +-9 0 V +Z stroke +2980 1860 N +9 0 V +-9 0 V +Z stroke +2989 1860 N +9 0 V +-9 0 V +Z stroke +2998 1860 N +9 0 V +-9 0 V +Z stroke +3007 1860 N +9 0 V +-9 0 V +Z stroke +3016 1860 N +10 0 V +-10 0 V +Z stroke +3026 1860 N +9 0 V +-9 0 V +Z stroke +3035 1860 N +9 0 V +-9 0 V +Z stroke +3044 1860 N +9 0 V +-9 0 V +Z stroke +3053 1860 N +9 0 V +-9 0 V +Z stroke +3062 1860 N +9 0 V +-9 0 V +Z stroke +3071 1860 N +9 0 V +-9 0 V +Z stroke +3080 1860 N +9 0 V +-9 0 V +Z stroke +3089 1860 N +10 0 V +-10 0 V +Z stroke +3099 1860 N +9 0 V +-9 0 V +Z stroke +3108 1860 N +9 0 V +-9 0 V +Z stroke +3117 1860 N +9 0 V +-9 0 V +Z stroke +3126 1860 N +9 0 V +-9 0 V +Z stroke +3135 1860 N +9 0 V +-9 0 V +Z stroke +3144 1860 N +9 0 V +-9 0 V +Z stroke +3153 1860 N +10 0 V +-10 0 V +Z stroke +3163 1860 N +9 0 V +-9 0 V +Z stroke +3172 1860 N +9 0 V +-9 0 V +Z stroke +3181 1860 N +9 0 V +-9 0 V +Z stroke +3190 1860 N +9 0 V +-9 0 V +Z stroke +3199 1860 N +9 0 V +-9 0 V +Z stroke +3208 1860 N +9 0 V +-9 0 V +Z stroke +3217 1860 N +9 0 V +-9 0 V +Z stroke +3226 1860 N +10 0 V +-10 0 V +Z stroke +3236 1860 N +9 0 V +-9 0 V +Z stroke +3245 1860 N +9 0 V +-9 0 V +Z stroke +3254 1860 N +9 0 V +-9 0 V +Z stroke +3263 1860 N +9 0 V +-9 0 V +Z stroke +3272 1860 N +9 0 V +-9 0 V +Z stroke +3281 1860 N +9 0 V +-9 0 V +Z stroke +3290 1860 N +10 0 V +-10 0 V +Z stroke +3300 1860 N +9 0 V +-9 0 V +Z stroke +3309 1860 N +9 0 V +-9 0 V +Z stroke +3318 1860 N +9 0 V +-9 0 V +Z stroke +3327 1860 N +9 0 V +-9 0 V +Z stroke +3336 1860 N +9 0 V +-9 0 V +Z stroke +3345 1860 N +9 0 V +-9 0 V +Z stroke +3354 1860 N +9 0 V +-9 0 V +Z stroke +3363 1860 N +10 0 V +-10 0 V +Z stroke +3373 1860 N +9 0 V +-9 0 V +Z stroke +3382 1860 N +9 0 V +-9 0 V +Z stroke +3391 1860 N +9 0 V +-9 0 V +Z stroke +3400 1860 N +9 0 V +-9 0 V +Z stroke +3409 1860 N +9 0 V +-9 0 V +Z stroke +3418 1860 N +9 0 V +-9 0 V +Z stroke +3427 1860 N +10 0 V +-10 0 V +Z stroke +3437 1860 N +9 0 V +-9 0 V +Z stroke +3446 1860 N +9 0 V +-9 0 V +Z stroke +3455 1860 N +9 0 V +-9 0 V +Z stroke +3464 1860 N +9 0 V +-9 0 V +Z stroke +3473 1860 N +9 0 V +-9 0 V +Z stroke +3482 1860 N +9 0 V +-9 0 V +Z stroke +3491 1860 N +9 0 V +-9 0 V +Z stroke +3500 1860 N +10 0 V +-10 0 V +Z stroke +3510 1860 N +9 0 V +-9 0 V +Z stroke +3519 1860 N +9 0 V +-9 0 V +Z stroke +3528 1860 N +9 0 V +-9 0 V +Z stroke +3537 1860 N +9 0 V +-9 0 V +Z stroke +3546 1860 N +9 0 V +-9 0 V +Z stroke +3555 1860 N +9 0 V +-9 0 V +Z stroke +3564 1860 N +10 0 V +-10 0 V +Z stroke +3574 1860 N +9 0 V +-9 0 V +Z stroke +3583 1860 N +9 0 V +-9 0 V +Z stroke +3592 1860 N +9 0 V +-9 0 V +Z stroke +3601 1860 N +9 0 V +-9 0 V +Z stroke +3610 1860 N +9 0 V +-9 0 V +Z stroke +3619 1860 N +9 0 V +-9 0 V +Z stroke +3628 1860 N +9 0 V +-9 0 V +Z stroke +3637 1860 N +10 0 V +-10 0 V +Z stroke +3647 1860 N +9 0 V +-9 0 V +Z stroke +3656 1860 N +9 0 V +-9 0 V +Z stroke +3665 1860 N +9 0 V +-9 0 V +Z stroke +3674 1860 N +9 0 V +-9 0 V +Z stroke +3683 1860 N +9 0 V +-9 0 V +Z stroke +3692 1860 N +9 0 V +-9 0 V +Z stroke +3701 1860 N +10 0 V +-10 0 V +Z stroke +3711 1860 N +9 0 V +-9 0 V +Z stroke +3720 1860 N +9 0 V +-9 0 V +Z stroke +3729 1860 N +9 0 V +-9 0 V +Z stroke +3738 1860 N +9 0 V +-9 0 V +Z stroke +3747 1860 N +9 0 V +-9 0 V +Z stroke +3756 1860 N +9 0 V +-9 0 V +Z stroke +3765 1860 N +9 0 V +-9 0 V +Z stroke +3774 1860 N +10 0 V +-10 0 V +Z stroke +3784 1860 N +9 0 V +-9 0 V +Z stroke +3793 1860 N +9 0 V +-9 0 V +Z stroke +3802 1860 N +9 0 V +-9 0 V +Z stroke +3811 1860 N +9 0 V +-9 0 V +Z stroke +3820 1860 N +9 0 V +-9 0 V +Z stroke +3829 1860 N +9 0 V +-9 0 V +Z stroke +3838 1860 N +10 0 V +-10 0 V +Z stroke +3848 1860 N +9 0 V +-9 0 V +Z stroke +3857 1860 N +9 0 V +-9 0 V +Z stroke +3866 1860 N +9 0 V +-9 0 V +Z stroke +3875 1860 N +9 0 V +-9 0 V +Z stroke +3884 1860 N +9 0 V +-9 0 V +Z stroke +3893 1860 N +9 0 V +-9 0 V +Z stroke +3902 1860 N +9 0 V +-9 0 V +Z stroke +3911 1860 N +10 0 V +-10 0 V +Z stroke +3921 1860 N +9 0 V +-9 0 V +Z stroke +3930 1860 N +9 0 V +-9 0 V +Z stroke +3939 1860 N +9 0 V +-9 0 V +Z stroke +3948 1860 N +9 0 V +-9 0 V +Z stroke +3957 1860 N +9 0 V +-9 0 V +Z stroke +3966 1860 N +9 0 V +-9 0 V +Z stroke +3975 1860 N +10 0 V +-10 0 V +Z stroke +3985 1860 N +9 0 V +-9 0 V +Z stroke +3994 1860 N +9 0 V +-9 0 V +Z stroke +4003 1860 N +9 0 V +-9 0 V +Z stroke +4012 1860 N +9 0 V +-9 0 V +Z stroke +4021 1860 N +9 0 V +-9 0 V +Z stroke +4030 1860 N +9 0 V +-9 0 V +Z stroke +4039 1860 N +10 0 V +-10 0 V +Z stroke +4049 1860 N +9 0 V +-9 0 V +Z stroke +4058 1860 N +9 0 V +-9 0 V +Z stroke +4067 1860 N +9 0 V +-9 0 V +Z stroke +4076 1860 N +9 0 V +-9 0 V +Z stroke +4085 1860 N +9 0 V +-9 0 V +Z stroke +4094 1860 N +9 0 V +-9 0 V +Z stroke +4103 1860 N +9 0 V +-9 0 V +Z stroke +4112 1860 N +10 0 V +-10 0 V +Z stroke +4122 1860 N +9 0 V +-9 0 V +Z stroke +4131 1860 N +9 0 V +-9 0 V +Z stroke +4140 1860 N +9 0 V +-9 0 V +Z stroke +4149 1860 N +9 0 V +-9 0 V +Z stroke +4158 1860 N +9 0 V +-9 0 V +Z stroke +4167 1860 N +9 0 V +-9 0 V +Z stroke +4176 1860 N +10 0 V +-10 0 V +Z stroke +4186 1860 N +9 0 V +-9 0 V +Z stroke +4195 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +4204 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +4213 1860 N +9 0 V +-9 0 V +Z stroke +4222 1860 N +9 0 V +-9 0 V +Z stroke +4231 1860 N +9 0 V +-9 0 V +Z stroke +4240 1860 N +9 0 V +-9 0 V +Z stroke +4249 1860 N +10 0 V +-10 0 V +Z stroke +4259 1860 N +9 0 V +-9 0 V +Z stroke +4268 1860 N +9 0 V +-9 0 V +Z stroke +4277 1860 N +9 0 V +-9 0 V +Z stroke +4286 1860 N +9 0 V +-9 0 V +Z stroke +4295 1860 N +9 0 V +-9 0 V +Z stroke +4304 1860 N +9 0 V +-9 0 V +Z stroke +4313 1860 N +10 0 V +-10 0 V +Z stroke +4323 1860 N +9 0 V +-9 0 V +Z stroke +4332 1860 N +9 0 V +-9 0 V +Z stroke +4341 1860 N +9 0 V +-9 0 V +Z stroke +4350 1860 N +9 0 V +-9 0 V +Z stroke +4359 1860 N +9 0 V +-9 0 V +Z stroke +4368 1860 N +9 0 V +-9 0 V +Z stroke +4377 1860 N +9 0 V +-9 0 V +Z stroke +4386 1860 N +10 0 V +-10 0 V +Z stroke +4396 1860 N +9 0 V +-9 0 V +Z stroke +4405 1860 N +9 0 V +-9 0 V +Z stroke +4414 1860 N +9 0 V +-9 0 V +Z stroke +4423 1860 N +9 0 V +-9 0 V +Z stroke +4432 1860 N +9 0 V +-9 0 V +Z stroke +4441 1860 N +9 0 V +-9 0 V +Z stroke +4450 1860 N +10 0 V +-10 0 V +Z stroke +4460 1860 N +9 0 V +-9 0 V +Z stroke +4469 1860 N +9 0 V +-9 0 V +Z stroke +4478 1860 N +9 0 V +-9 0 V +Z stroke +4487 1860 N +9 0 V +-9 0 V +Z stroke +4496 1860 N +9 0 V +-9 0 V +Z stroke +4505 1860 N +9 0 V +-9 0 V +Z stroke +4514 1860 N +9 0 V +-9 0 V +Z stroke +4523 1860 N +10 0 V +-10 0 V +Z stroke +4533 1860 N +9 0 V +-9 0 V +Z stroke +4542 1860 N +9 0 V +-9 0 V +Z stroke +4551 1860 N +9 0 V +-9 0 V +Z stroke +4560 1860 N +9 0 V +-9 0 V +Z stroke +4569 1860 N +9 0 V +-9 0 V +Z stroke +4578 1860 N +9 0 V +-9 0 V +Z stroke +4587 1860 N +10 0 V +-10 0 V +Z stroke +4597 1860 N +9 0 V +-9 0 V +Z stroke +4606 1860 N +9 0 V +-9 0 V +Z stroke +4615 1860 N +9 0 V +-9 0 V +Z stroke +4624 1860 N +9 0 V +-9 0 V +Z stroke +4633 1860 N +9 0 V +-9 0 V +Z stroke +4642 1860 N +9 0 V +-9 0 V +Z stroke +4651 1860 N +9 0 V +-9 0 V +Z stroke +4660 1860 N +10 0 V +-10 0 V +Z stroke +4670 1860 N +9 0 V +-9 0 V +Z stroke +4679 1860 N +9 0 V +-9 0 V +Z stroke +4688 1860 N +9 0 V +-9 0 V +Z stroke +4697 1860 N +9 0 V +-9 0 V +Z stroke +4706 1860 N +9 0 V +-9 0 V +Z stroke +4715 1860 N +9 0 V +-9 0 V +Z stroke +4724 1860 N +10 0 V +-10 0 V +Z stroke +4734 1860 N +9 0 V +-9 0 V +Z stroke +4743 1860 N +9 0 V +-9 0 V +Z stroke +4752 1860 N +9 0 V +-9 0 V +Z stroke +4761 1860 N +9 0 V +-9 0 V +Z stroke +4770 1860 N +9 0 V +-9 0 V +Z stroke +4779 1860 N +9 0 V +-9 0 V +Z stroke +4788 1860 N +9 0 V +-9 0 V +Z stroke +4797 1860 N +10 0 V +-10 0 V +Z stroke +4807 1860 N +9 0 V +-9 0 V +Z stroke +4816 1860 N +9 0 V +-9 0 V +Z stroke +4825 1860 N +9 0 V +-9 0 V +Z stroke +4834 1860 N +9 0 V +-9 0 V +Z stroke +4843 1860 N +9 0 V +-9 0 V +Z stroke +4852 1860 N +9 0 V +-9 0 V +Z stroke +4861 1860 N +10 0 V +-10 0 V +Z stroke +4871 1860 N +9 0 V +-9 0 V +Z stroke +4880 1860 N +9 0 V +-9 0 V +Z stroke +4889 1860 N +9 0 V +-9 0 V +Z stroke +4898 1860 N +9 0 V +-9 0 V +Z stroke +4907 1860 N +9 0 V +-9 0 V +Z stroke +4916 1860 N +9 0 V +-9 0 V +Z stroke +4925 1860 N +9 0 V +-9 0 V +Z stroke +4934 1860 N +10 0 V +-10 0 V +Z stroke +4944 1860 N +9 0 V +-9 0 V +Z stroke +4953 1860 N +9 0 V +-9 0 V +Z stroke +4962 1860 N +9 0 V +-9 0 V +Z stroke +4971 1860 N +9 0 V +-9 0 V +Z stroke +4980 1860 N +9 0 V +-9 0 V +Z stroke +4989 1860 N +9 0 V +-9 0 V +Z stroke +4998 1860 N +0 68 V +10 0 V +0 -68 V +-10 0 V +Z stroke +5008 1860 N +0 68 V +9 0 V +0 -68 V +-9 0 V +Z stroke +5017 1860 N +9 0 V +-9 0 V +Z stroke +5026 1860 N +9 0 V +-9 0 V +Z stroke +5035 1860 N +9 0 V +-9 0 V +Z stroke +5044 1860 N +9 0 V +-9 0 V +Z stroke +5053 1860 N +9 0 V +-9 0 V +Z stroke +5062 1860 N +9 0 V +-9 0 V +Z stroke +5071 1860 N +10 0 V +-10 0 V +Z stroke +5081 1860 N +9 0 V +-9 0 V +Z stroke +5090 1860 N +9 0 V +-9 0 V +Z stroke +5099 1860 N +9 0 V +-9 0 V +Z stroke +5108 1860 N +9 0 V +-9 0 V +Z stroke +5117 1860 N +9 0 V +-9 0 V +Z stroke +5126 1860 N +9 0 V +-9 0 V +Z stroke +5135 1860 N +10 0 V +-10 0 V +Z stroke +5145 1860 N +9 0 V +-9 0 V +Z stroke +5154 1860 N +9 0 V +-9 0 V +Z stroke +5163 1860 N +9 0 V +-9 0 V +Z stroke +5172 1860 N +9 0 V +-9 0 V +Z stroke +5181 1860 N +9 0 V +-9 0 V +Z stroke +5190 1860 N +9 0 V +-9 0 V +Z stroke +5199 1860 N +9 0 V +-9 0 V +Z stroke +5208 1860 N +10 0 V +-10 0 V +Z stroke +5218 1860 N +9 0 V +-9 0 V +Z stroke +5227 1860 N +9 0 V +-9 0 V +Z stroke +5236 1860 N +9 0 V +-9 0 V +Z stroke +5245 1860 N +9 0 V +-9 0 V +Z stroke +5254 1860 N +9 0 V +-9 0 V +Z stroke +5263 1860 N +9 0 V +-9 0 V +Z stroke +5272 1860 N +10 0 V +-10 0 V +Z stroke +5282 1860 N +9 0 V +-9 0 V +Z stroke +5291 1860 N +9 0 V +-9 0 V +Z stroke +5300 1860 N +9 0 V +-9 0 V +Z stroke +5309 1860 N +9 0 V +-9 0 V +Z stroke +5318 1860 N +9 0 V +-9 0 V +Z stroke +5327 1860 N +9 0 V +-9 0 V +Z stroke +5336 1860 N +9 0 V +-9 0 V +Z stroke +5345 1860 N +10 0 V +-10 0 V +Z stroke +5355 1860 N +9 0 V +-9 0 V +Z stroke +5364 1860 N +9 0 V +-9 0 V +Z stroke +5373 1860 N +9 0 V +-9 0 V +Z stroke +5382 1860 N +9 0 V +-9 0 V +Z stroke +5391 1860 N +9 0 V +-9 0 V +Z stroke +5400 1860 N +9 0 V +-9 0 V +Z stroke +5409 1860 N +10 0 V +-10 0 V +Z stroke +5419 1860 N +9 0 V +-9 0 V +Z stroke +5428 1860 N +9 0 V +-9 0 V +Z stroke +5437 1860 N +9 0 V +-9 0 V +Z stroke +5446 1860 N +9 0 V +-9 0 V +Z stroke +5455 1860 N +9 0 V +-9 0 V +Z stroke +5464 1860 N +9 0 V +-9 0 V +Z stroke +5473 1860 N +9 0 V +-9 0 V +Z stroke +5482 1860 N +10 0 V +-10 0 V +Z stroke +5492 1860 N +9 0 V +-9 0 V +Z stroke +5501 1860 N +9 0 V +-9 0 V +Z stroke +5510 1860 N +9 0 V +-9 0 V +Z stroke +5519 1860 N +9 0 V +-9 0 V +Z stroke +5528 1860 N +9 0 V +-9 0 V +Z stroke +5537 1860 N +9 0 V +-9 0 V +Z stroke +5546 1860 N +10 0 V +-10 0 V +Z stroke +5556 1860 N +9 0 V +-9 0 V +Z stroke +5565 1860 N +9 0 V +-9 0 V +Z stroke +5574 1860 N +9 0 V +-9 0 V +Z stroke +5583 1860 N +9 0 V +-9 0 V +Z stroke +5592 1860 N +9 0 V +-9 0 V +Z stroke +5601 1860 N +9 0 V +-9 0 V +Z stroke +5610 1860 N +9 0 V +-9 0 V +Z stroke +5619 1860 N +10 0 V +-10 0 V +Z stroke +5629 1860 N +9 0 V +-9 0 V +Z stroke +5638 1860 N +9 0 V +-9 0 V +Z stroke +5647 1860 N +9 0 V +-9 0 V +Z stroke +5656 1860 N +9 0 V +-9 0 V +Z stroke +5665 1860 N +9 0 V +-9 0 V +Z stroke +5674 1860 N +9 0 V +-9 0 V +Z stroke +5683 1860 N +10 0 V +-10 0 V +Z stroke +5693 1860 N +9 0 V +-9 0 V +Z stroke +5702 1860 N +9 0 V +-9 0 V +Z stroke +5711 1860 N +9 0 V +-9 0 V +Z stroke +5720 1860 N +9 0 V +-9 0 V +Z stroke +5729 1860 N +9 0 V +-9 0 V +Z stroke +5738 1860 N +9 0 V +-9 0 V +Z stroke +5747 1860 N +9 0 V +-9 0 V +Z stroke +5756 1860 N +10 0 V +-10 0 V +Z stroke +5766 1860 N +9 0 V +-9 0 V +Z stroke +5775 1860 N +9 0 V +-9 0 V +Z stroke +5784 1860 N +9 0 V +-9 0 V +Z stroke +5793 1860 N +9 0 V +-9 0 V +Z stroke +5802 1860 N +9 0 V +-9 0 V +Z stroke +5811 1860 N +9 0 V +-9 0 V +Z stroke +5820 1860 N +10 0 V +-10 0 V +Z stroke +5830 1860 N +9 0 V +-9 0 V +Z stroke +5839 1860 N +9 0 V +-9 0 V +Z stroke +5848 1860 N +9 0 V +-9 0 V +Z stroke +5857 1860 N +9 0 V +-9 0 V +Z stroke +5866 1860 N +9 0 V +-9 0 V +Z stroke +5875 1860 N +9 0 V +-9 0 V +Z stroke +5884 1860 N +9 0 V +-9 0 V +Z stroke +5893 1860 N +10 0 V +-10 0 V +Z stroke +5903 1860 N +9 0 V +-9 0 V +Z stroke +5912 1860 N +9 0 V +-9 0 V +Z stroke +5921 1860 N +9 0 V +-9 0 V +Z stroke +5930 1860 N +9 0 V +-9 0 V +Z stroke +5939 1860 N +9 0 V +-9 0 V +Z stroke +5948 1860 N +9 0 V +-9 0 V +Z stroke +5957 1860 N +10 0 V +-10 0 V +Z stroke +5967 1860 N +9 0 V +-9 0 V +Z stroke +5976 1860 N +9 0 V +-9 0 V +Z stroke +5985 1860 N +9 0 V +-9 0 V +Z stroke +5994 1860 N +9 0 V +-9 0 V +Z stroke +6003 1860 N +9 0 V +-9 0 V +Z stroke +6012 1860 N +9 0 V +-9 0 V +Z stroke +6021 1860 N +9 0 V +-9 0 V +Z stroke +6030 1860 N +10 0 V +-10 0 V +Z stroke +6040 1860 N +9 0 V +-9 0 V +Z stroke +6049 1860 N +9 0 V +-9 0 V +Z stroke +6058 1860 N +9 0 V +-9 0 V +Z stroke +6067 1860 N +9 0 V +-9 0 V +Z stroke +6076 1860 N +9 0 V +-9 0 V +Z stroke +6085 1860 N +9 0 V +-9 0 V +Z stroke +6094 1860 N +10 0 V +-10 0 V +Z stroke +6104 1860 N +9 0 V +-9 0 V +Z stroke +6113 1860 N +9 0 V +-9 0 V +Z stroke +6122 1860 N +9 0 V +-9 0 V +Z stroke +6131 1860 N +9 0 V +-9 0 V +Z stroke +6140 1860 N +9 0 V +-9 0 V +Z stroke +6149 1860 N +9 0 V +-9 0 V +Z stroke +6158 1860 N +9 0 V +-9 0 V +Z stroke +6167 1860 N +10 0 V +-10 0 V +Z stroke +6177 1860 N +9 0 V +-9 0 V +Z stroke +6186 1860 N +9 0 V +-9 0 V +Z stroke +6195 1860 N +9 0 V +-9 0 V +Z stroke +6204 1860 N +9 0 V +-9 0 V +Z stroke +6213 1860 N +9 0 V +-9 0 V +Z stroke +6222 1860 N +9 0 V +-9 0 V +Z stroke +6231 1860 N +10 0 V +-10 0 V +Z stroke +6241 1860 N +9 0 V +-9 0 V +Z stroke +6250 1860 N +9 0 V +-9 0 V +Z stroke +6259 1860 N +9 0 V +-9 0 V +Z stroke +6268 1860 N +9 0 V +-9 0 V +Z stroke +6277 1860 N +9 0 V +-9 0 V +Z stroke +6286 1860 N +9 0 V +-9 0 V +Z stroke +6295 1860 N +9 0 V +-9 0 V +Z stroke +6304 1860 N +10 0 V +-10 0 V +Z stroke +6314 1860 N +9 0 V +-9 0 V +Z stroke +6323 1860 N +9 0 V +-9 0 V +Z stroke +6332 1860 N +9 0 V +-9 0 V +Z stroke +6341 1860 N +9 0 V +-9 0 V +Z stroke +6350 1860 N +9 0 V +-9 0 V +Z stroke +6359 1860 N +9 0 V +-9 0 V +Z stroke +6368 1860 N +10 0 V +-10 0 V +Z stroke +6378 1860 N +9 0 V +-9 0 V +Z stroke +6387 1860 N +9 0 V +-9 0 V +Z stroke +6396 1860 N +9 0 V +-9 0 V +Z stroke +6405 1860 N +9 0 V +-9 0 V +Z stroke +6414 1860 N +9 0 V +-9 0 V +Z stroke +6423 1860 N +9 0 V +-9 0 V +Z stroke +6432 1860 N +9 0 V +-9 0 V +Z stroke +6441 1860 N +10 0 V +-10 0 V +Z stroke +6451 1860 N +9 0 V +-9 0 V +Z stroke +6460 1860 N +9 0 V +-9 0 V +Z stroke +6469 1860 N +9 0 V +-9 0 V +Z stroke +6478 1860 N +9 0 V +-9 0 V +Z stroke +6487 1860 N +9 0 V +-9 0 V +Z stroke +6496 1860 N +9 0 V +-9 0 V +Z stroke +6505 1860 N +10 0 V +-10 0 V +Z stroke +6515 1860 N +9 0 V +-9 0 V +Z stroke +6524 1860 N +9 0 V +-9 0 V +Z stroke +6533 1860 N +9 0 V +-9 0 V +Z stroke +6542 1860 N +9 0 V +-9 0 V +Z stroke +6551 1860 N +9 0 V +-9 0 V +Z stroke +6560 1860 N +9 0 V +-9 0 V +Z stroke +6569 1860 N +9 0 V +-9 0 V +Z stroke +6578 1860 N +10 0 V +-10 0 V +Z stroke +6588 1860 N +9 0 V +-9 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1176 3911 N +0 -2735 V +5471 0 V +0 2735 V +-5471 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/img/xoraya_tx_timestamp.eps b/Master/Masterarbeit/thesis/img/xoraya_tx_timestamp.eps new file mode 100644 index 0000000..c90c20a --- /dev/null +++ b/Master/Masterarbeit/thesis/img/xoraya_tx_timestamp.eps @@ -0,0 +1,1279 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ../thesis/img/xoraya_tx_timestamp.eps +%%Creator: gnuplot 4.4 patchlevel 3 +%%CreationDate: Tue Dec 20 17:35:34 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 410 302 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -80 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (../thesis/img/xoraya_tx_timestamp.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 3) + /Author (Eisenhauer) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Tue Dec 20 17:35:34 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (August 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/g {setgray} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +3.8 setmiterlimit +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +% +% Encoding for ISO-8859-15 (also called Latin9) +% +/reencodeISO15 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { + /Encoding ISOLatin15Encoding def } if +} if +currentdict end definefont +} def +/ISOLatin15Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright +/parenleft/parenright/asterisk/plus/comma/minus/period/slash +/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon +/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve +/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut +/ogonek/caron/space/exclamdown/cent/sterling/Euro/yen/Scaron +/section/scaron/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior +/Zcaron/mu/paragraph/periodcentered/zcaron/onesuperior/ordmasculine +/guillemotright/OE/oe/Ydieresis/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute +/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis +/yacute/thorn/ydieresis +] def +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +/Helvetica reencodeISO15 def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 240 scalefont setfont +1.000 UL +LTb +1320 1212 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 1212 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.1)] +] -80.0 MRshow +1.000 UL +LTb +1320 1656 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 1656 M +[ [(Helvetica) 240.0 0.0 true true 0 (-0.05)] +] -80.0 MRshow +1.000 UL +LTb +1320 2100 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 2100 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0)] +] -80.0 MRshow +1.000 UL +LTb +1320 2543 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 2543 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.05)] +] -80.0 MRshow +1.000 UL +LTb +1320 2987 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 2987 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.1)] +] -80.0 MRshow +1.000 UL +LTb +1320 3431 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 3431 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.15)] +] -80.0 MRshow +1.000 UL +LTb +1320 3875 M +63 0 V +5264 0 R +-63 0 V +stroke +1176 3875 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 0.2)] +] -80.0 MRshow +1.000 UL +LTb +2048 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +2048 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 20)] +] -80.0 MCshow +1.000 UL +LTb +2815 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +2815 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 40)] +] -80.0 MCshow +1.000 UL +LTb +3581 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +3581 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 60)] +] -80.0 MCshow +1.000 UL +LTb +4348 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +4348 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 80)] +] -80.0 MCshow +1.000 UL +LTb +5114 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +5114 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 100)] +] -80.0 MCshow +1.000 UL +LTb +5881 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +5881 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 120)] +] -80.0 MCshow +1.000 UL +LTb +6647 1212 M +0 63 V +0 2600 R +0 -63 V +stroke +6647 972 M +[ [(Helvetica) 240.0 0.0 true true 0 ( 140)] +] -80.0 MCshow +1.000 UL +LTb +1.000 UL +LTb +1320 3875 N +0 -2663 V +5327 0 V +0 2663 V +-5327 0 V +Z stroke +LCb setrgbcolor +192 2543 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 240.0 0.0 true true 0 (Zeitstempelabweichung [ms])] +] -80.0 MCshow +grestore +LTb +LCb setrgbcolor +LTb +LCb setrgbcolor +3983 612 M +[ [(Helvetica) 240.0 0.0 true true 0 (Nachricht [#])] +] -80.0 MCshow +LTb +3983 4235 M +[ [(Helvetica) 240.0 0.0 true true 0 (XORAYA Sendegenauigkeit)] +] -80.0 MCshow +LCb setrgbcolor +LTb +1.000 UP +1.000 UL +LTb +% Begin plot #1 +1.000 UL +LT0 +/Helvetica findfont 240 scalefont setfont +1320 2100 N +19 0 V +-19 0 V +Z stroke +1339 2100 N +38 0 V +-38 0 V +Z stroke +1377 2100 N +39 0 V +-39 0 V +Z stroke +1416 2100 N +38 0 V +-38 0 V +Z stroke +1454 2100 N +38 0 V +-38 0 V +Z stroke +1492 2100 N +39 0 V +-39 0 V +Z stroke +1531 2100 N +38 0 V +-38 0 V +Z stroke +1569 2100 N +38 0 V +-38 0 V +Z stroke +1607 2100 N +39 0 V +-39 0 V +Z stroke +1646 2100 N +38 0 V +-38 0 V +Z stroke +1684 2100 N +38 0 V +-38 0 V +Z stroke +1722 2100 N +39 0 V +-39 0 V +Z stroke +1761 2100 N +38 0 V +-38 0 V +Z stroke +1799 2100 N +38 0 V +-38 0 V +Z stroke +1837 2100 N +39 0 V +-39 0 V +Z stroke +1876 2100 N +38 0 V +-38 0 V +Z stroke +1914 2100 N +38 0 V +-38 0 V +Z stroke +1952 2100 N +39 0 V +-39 0 V +Z stroke +1991 2100 N +38 0 V +-38 0 V +Z stroke +2029 2100 N +38 0 V +-38 0 V +Z stroke +2067 2100 N +39 0 V +-39 0 V +Z stroke +2106 2100 N +38 0 V +-38 0 V +Z stroke +2144 2100 N +38 0 V +-38 0 V +Z stroke +2182 2100 N +39 0 V +-39 0 V +Z stroke +2221 2100 N +38 0 V +-38 0 V +Z stroke +2259 2100 N +38 0 V +-38 0 V +Z stroke +2297 2100 N +39 0 V +-39 0 V +Z stroke +2336 2100 N +38 0 V +-38 0 V +Z stroke +2374 2100 N +38 0 V +-38 0 V +Z stroke +2412 2100 N +39 0 V +-39 0 V +Z stroke +2451 2100 N +38 0 V +-38 0 V +Z stroke +2489 2100 N +38 0 V +-38 0 V +Z stroke +2527 2100 N +39 0 V +-39 0 V +Z stroke +2566 2100 N +38 0 V +-38 0 V +Z stroke +2604 2100 N +38 0 V +-38 0 V +Z stroke +2642 2100 N +38 0 V +-38 0 V +Z stroke +2680 2100 N +39 0 V +-39 0 V +Z stroke +2719 2100 N +38 0 V +-38 0 V +Z stroke +2757 2100 N +38 0 V +-38 0 V +Z stroke +2795 2100 N +39 0 V +-39 0 V +Z stroke +2834 2100 N +38 0 V +-38 0 V +Z stroke +2872 2100 N +38 0 V +-38 0 V +Z stroke +2910 2100 N +39 0 V +-39 0 V +Z stroke +2949 2100 N +38 0 V +-38 0 V +Z stroke +2987 2100 N +38 0 V +-38 0 V +Z stroke +3025 2100 N +39 0 V +-39 0 V +Z stroke +3064 2100 N +0 887 V +38 0 V +0 -887 V +-38 0 V +Z stroke +3102 2100 N +0 887 V +38 0 V +0 -887 V +-38 0 V +Z stroke +3140 2100 N +0 887 V +39 0 V +0 -887 V +-39 0 V +Z stroke +3179 2100 N +0 887 V +38 0 V +0 -887 V +-38 0 V +Z stroke +3217 2100 N +38 0 V +-38 0 V +Z stroke +3255 2100 N +39 0 V +-39 0 V +Z stroke +3294 2100 N +38 0 V +-38 0 V +Z stroke +3332 2100 N +38 0 V +-38 0 V +Z stroke +3370 2100 N +39 0 V +-39 0 V +Z stroke +3409 2100 N +38 0 V +-38 0 V +Z stroke +3447 2100 N +38 0 V +-38 0 V +Z stroke +3485 2100 N +39 0 V +-39 0 V +Z stroke +3524 2100 N +38 0 V +-38 0 V +Z stroke +3562 2100 N +38 0 V +-38 0 V +Z stroke +3600 2100 N +39 0 V +-39 0 V +Z stroke +3639 2100 N +38 0 V +-38 0 V +Z stroke +3677 2100 N +38 0 V +-38 0 V +Z stroke +3715 2100 N +39 0 V +-39 0 V +Z stroke +3754 2100 N +38 0 V +-38 0 V +Z stroke +3792 2100 N +38 0 V +-38 0 V +Z stroke +3830 2100 N +39 0 V +-39 0 V +Z stroke +3869 2100 N +38 0 V +-38 0 V +Z stroke +3907 2100 N +38 0 V +-38 0 V +Z stroke +3945 2100 N +38 0 V +-38 0 V +Z stroke +3983 2100 N +39 0 V +-39 0 V +Z stroke +4022 2100 N +38 0 V +-38 0 V +Z stroke +4060 2100 N +38 0 V +-38 0 V +Z stroke +4098 2100 N +39 0 V +-39 0 V +Z stroke +4137 2100 N +38 0 V +-38 0 V +Z stroke +4175 2100 N +38 0 V +-38 0 V +Z stroke +4213 2100 N +39 0 V +-39 0 V +Z stroke +4252 2100 N +38 0 V +-38 0 V +Z stroke +4290 2100 N +38 0 V +-38 0 V +Z stroke +4328 2100 N +39 0 V +-39 0 V +Z stroke +4367 2100 N +38 0 V +-38 0 V +Z stroke +4405 2100 N +38 0 V +-38 0 V +Z stroke +4443 2100 N +39 0 V +-39 0 V +Z stroke +4482 2100 N +38 0 V +-38 0 V +Z stroke +4520 2100 N +38 0 V +-38 0 V +Z stroke +4558 2100 N +39 0 V +-39 0 V +Z stroke +4597 2100 N +38 0 V +-38 0 V +Z stroke +4635 2100 N +38 0 V +-38 0 V +Z stroke +4673 2100 N +39 0 V +-39 0 V +Z stroke +4712 2100 N +38 0 V +-38 0 V +Z stroke +4750 2100 N +38 0 V +-38 0 V +Z stroke +4788 2100 N +39 0 V +-39 0 V +Z stroke +4827 2100 N +38 0 V +-38 0 V +Z stroke +4865 2100 N +38 0 V +-38 0 V +Z stroke +4903 2100 N +39 0 V +-39 0 V +Z stroke +4942 2100 N +38 0 V +-38 0 V +Z stroke +4980 2100 N +38 0 V +-38 0 V +Z stroke +5018 2100 N +39 0 V +-39 0 V +Z stroke +5057 2100 N +38 0 V +-38 0 V +Z stroke +5095 2100 N +38 0 V +-38 0 V +Z stroke +5133 2100 N +39 0 V +-39 0 V +Z stroke +5172 2100 N +38 0 V +-38 0 V +Z stroke +5210 2100 N +38 0 V +-38 0 V +Z stroke +5248 2100 N +39 0 V +-39 0 V +Z stroke +5287 2100 N +38 0 V +-38 0 V +Z stroke +5325 2100 N +38 0 V +-38 0 V +Z stroke +5363 2100 N +38 0 V +-38 0 V +Z stroke +5401 2100 N +39 0 V +-39 0 V +Z stroke +5440 2100 N +38 0 V +-38 0 V +Z stroke +5478 2100 N +38 0 V +-38 0 V +Z stroke +5516 2100 N +39 0 V +-39 0 V +Z stroke +5555 2100 N +38 0 V +-38 0 V +Z stroke +5593 2100 N +38 0 V +-38 0 V +Z stroke +5631 2100 N +39 0 V +-39 0 V +Z stroke +5670 2100 N +38 0 V +-38 0 V +Z stroke +5708 2100 N +38 0 V +-38 0 V +Z stroke +5746 2100 N +39 0 V +-39 0 V +Z stroke +5785 2100 N +38 0 V +-38 0 V +Z stroke +5823 2100 N +38 0 V +-38 0 V +Z stroke +5861 2100 N +39 0 V +-39 0 V +Z stroke +5900 2100 N +38 0 V +-38 0 V +Z stroke +5938 2100 N +38 0 V +-38 0 V +Z stroke +5976 2100 N +39 0 V +-39 0 V +Z stroke +6015 2100 N +38 0 V +-38 0 V +Z stroke +6053 2100 N +38 0 V +-38 0 V +Z stroke +6091 2100 N +39 0 V +-39 0 V +Z stroke +6130 2100 N +38 0 V +-38 0 V +Z stroke +6168 2100 N +38 0 V +-38 0 V +Z stroke +6206 2100 N +39 0 V +-39 0 V +Z stroke +6245 2100 N +38 0 V +-38 0 V +Z stroke +6283 2100 N +38 0 V +-38 0 V +Z stroke +6321 2100 N +39 0 V +-39 0 V +Z stroke +6360 2100 N +38 0 V +-38 0 V +Z stroke +6398 2100 N +38 0 V +-38 0 V +Z stroke +6436 2100 N +39 0 V +-39 0 V +Z stroke +6475 2100 N +38 0 V +-38 0 V +Z stroke +6513 2100 N +38 0 V +-38 0 V +Z stroke +6551 2100 N +39 0 V +-39 0 V +Z stroke +6590 2100 N +38 0 V +-38 0 V +Z stroke +6628 2100 N +19 0 V +-19 0 V +Z stroke +% End plot #1 +1.000 UL +LTb +1320 3875 N +0 -2663 V +5327 0 V +0 2663 V +-5327 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica diff --git a/Master/Masterarbeit/thesis/label.pdf b/Master/Masterarbeit/thesis/label.pdf Binary files differnew file mode 100644 index 0000000..fb5e7bb --- /dev/null +++ b/Master/Masterarbeit/thesis/label.pdf diff --git a/Master/Masterarbeit/thesis/label.sla b/Master/Masterarbeit/thesis/label.sla new file mode 100644 index 0000000..5c19fbe --- /dev/null +++ b/Master/Masterarbeit/thesis/label.sla @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="UTF-8"?> +<SCRIBUSUTF8NEW Version="1.4.0rc1"> + <DOCUMENT ANZPAGES="1" PAGEWIDTH="595.28" PAGEHEIGHT="841.89" BORDERLEFT="40" BORDERRIGHT="40" BORDERTOP="40" BORDERBOTTOM="40" PRESET="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" ORIENTATION="0" PAGESIZE="A4" FIRSTNUM="1" BOOK="0" AUTOSPALTEN="1" ABSTSPALTEN="11" UNITS="0" DFONT="Arial Regular" DSIZE="12" DCOL="1" DGAP="0" TabFill="" TabWidth="36" AUTHOR="" COMMENTS="" KEYWORDS="" PUBLISHER="" DOCDATE="" DOCTYPE="" DOCFORMAT="" DOCIDENT="" DOCSOURCE="" DOCLANGINFO="" DOCRELATION="" DOCCOVER="" DOCRIGHTS="" DOCCONTRIB="" TITLE="" VHOCH="33" VHOCHSC="66" VTIEF="33" VTIEFSC="66" VKAPIT="75" BASEGRID="14.4" BASEO="0" AUTOL="20" UnderlinePos="-1" UnderlineWidth="-1" StrikeThruPos="-1" StrikeThruWidth="-1" GROUPC="1" HCMS="0" DPSo="0" DPSFo="0" DPuse="0" DPgam="0" DPbla="1" DPMo="KODAK DC Series Digital Camera" DPPr="Fogra27L CMYK Coated Press" DPIn="KODAK DC Series Digital Camera" DPInCMYK="Fogra27L CMYK Coated Press" DPIn2="KODAK DC Series Digital Camera" DPIn3="Fogra27L CMYK Coated Press" DISc="1" DIIm="0" ALAYER="0" LANGUAGE="German" MINWORDLEN="3" HYCOUNT="2" AUTOMATIC="1" AUTOCHECK="0" GUIDELOCK="0" SnapToGuides="0" SnapToGrid="0" MINGRID="20" MAJGRID="100" SHOWGRID="0" SHOWGUIDES="1" showcolborders="1" SHOWFRAME="1" SHOWLAYERM="0" SHOWMARGIN="1" SHOWBASE="0" SHOWPICT="1" SHOWControl="0" SHOWLINK="0" rulerMode="1" showrulers="1" showBleed="1" rulerXoffset="0" rulerYoffset="0" GuideRad="10" GRAB="4" POLYC="4" POLYF="0.5" POLYR="0" POLYCUR="0" POLYFD="0" POLYS="0" AutoSave="1" AutoSaveTime="600000" ScratchBottom="20" ScratchLeft="100" ScratchRight="100" ScratchTop="20" GapHorizontal="0" GapVertical="40" StartArrow="0" EndArrow="0" PEN="Black" BRUSH="Black" PENLINE="Black" PENTEXT="Black" StrokeText="Black" TextBackGround="None" TextLineColor="None" TextBackGroundShade="100" TextLineShade="100" TextPenShade="100" TextStrokeShade="100" STIL="1" STILLINE="1" WIDTH="0" WIDTHLINE="1" PENSHADE="100" LINESHADE="100" BRUSHSHADE="100" MAGMIN="10" MAGMAX="3200" MAGSTEP="200" CPICT="None" PICTSHADE="100" PICTSCX="1" PICTSCY="1" PSCALE="1" PASPECT="1" EmbeddedPath="0" HalfRes="1" dispX="10" dispY="10" constrain="15" MINORC="#00ff00" MAJORC="#00ff00" GuideC="#000080" BaseC="#c0c0c0" GuideZ="10" BACKG="1" PAGEC="#ffffff" MARGC="#0000ff" RANDF="0" currentProfile="PostScript"> + <CheckProfile Name="PDF 1.3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PDF 1.4" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PDF 1.5" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="0" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PDF/X-3" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="1" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <CheckProfile Name="PostScript" ignoreErrors="0" autoCheck="1" checkGlyphs="1" checkOrphans="1" checkOverflow="1" checkPictures="1" checkResolution="1" checkTransparency="1" minResolution="144" maxResolution="2400" checkAnnotations="0" checkRasterPDF="1" checkForGIF="1" ignoreOffLayers="0" checkOffConflictLayers="0"/> + <COLOR NAME="Black" CMYK="#000000ff" Spot="0" Register="0"/> + <COLOR NAME="Blue" RGB="#0000ff" Spot="0" Register="0"/> + <COLOR NAME="Cool Black" CMYK="#990000ff" Spot="0" Register="0"/> + <COLOR NAME="Cyan" CMYK="#ff000000" Spot="0" Register="0"/> + <COLOR NAME="Green" RGB="#00ff00" Spot="0" Register="0"/> + <COLOR NAME="Magenta" CMYK="#00ff0000" Spot="0" Register="0"/> + <COLOR NAME="Red" RGB="#ff0000" Spot="0" Register="0"/> + <COLOR NAME="Registration" CMYK="#ffffffff" Spot="0" Register="1"/> + <COLOR NAME="Rich Black" CMYK="#996666ff" Spot="0" Register="0"/> + <COLOR NAME="Warm Black" CMYK="#00994cff" Spot="0" Register="0"/> + <COLOR NAME="White" CMYK="#00000000" Spot="0" Register="0"/> + <COLOR NAME="Yellow" CMYK="#0000ff00" Spot="0" Register="0"/> + <HYPHEN/> + <STYLE NAME="Default Paragraph Style" DefaultStyle="1" ALIGN="0" LINESPMode="0" LINESP="15" INDENT="0" RMARGIN="0" FIRST="0" VOR="0" NACH="0" DROP="0" DROPLIN="2" DROPDIST="0"/> + <CHARSTYLE CNAME="Default Character Style" DefaultStyle="1" FONT="Arial Regular" FONTSIZE="12" FEATURES="inherit" FCOLOR="Black" FSHADE="100" SCOLOR="Black" SSHADE="100" TXTSHX="5" TXTSHY="-5" TXTOUT="1" TXTULP="-0.1" TXTULW="-0.1" TXTSTP="-0.1" TXTSTW="-0.1" SCALEH="100" SCALEV="100" BASEO="0" KERN="0" LANGUAGE="German"/> + <LAYERS NUMMER="0" LEVEL="0" NAME="Hintergrund" SICHTBAR="1" DRUCKEN="1" EDIT="1" FLOW="1" TRANS="1" BLEND="0" OUTL="0" LAYERC="#000000"/> + <Printer firstUse="1" toFile="0" useAltPrintCommand="0" outputSeparations="0" useSpotColors="1" useColor="0" mirrorH="0" mirrorV="0" useICC="1" doGCR="0" doClip="0" setDevParam="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" includePDFMarks="0" PSLevel="0" PDLanguage="0" markOffset="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" printer="" filename="" separationName="" printerCommand=""/> + <PDF firstUse="0" Thumbnails="0" Articles="0" Bookmarks="0" Compress="1" CMethod="0" Quality="0" MirrorH="0" MirrorV="0" Clip="0" RotateDeg="0" PresentMode="0" RecalcPic="0" Grayscale="0" RGBMode="1" UseProfiles="0" UseProfiles2="0" Binding="0" PicRes="300" Resolution="300" Version="14" Intent="1" Intent2="0" SolidP="KODAK DC Series Digital Camera" ImageP="KODAK DC Series Digital Camera" PrintP="Fogra27L CMYK Coated Press" InfoString="" BTop="0" BLeft="0" BRight="0" BBottom="0" useDocBleeds="1" cropMarks="0" bleedMarks="0" registrationMarks="0" colorMarks="0" docInfoMarks="0" markOffset="0" ImagePr="0" PassOwner="" PassUser="" Permissions="-4" Encrypt="0" UseLayers="0" UseLpi="0" UseSpotColors="1" doMultiFile="0" displayBookmarks="0" displayFullscreen="0" displayLayers="0" displayThumbs="0" hideMenuBar="0" hideToolBar="0" fitWindow="0" PageLayout="0" openAction=""> + <Subset Name="Arial Regular"/> + <Effekte pageEffectDuration="1" pageViewDuration="1" effectType="0" Dm="0" M="0" Di="0"/> + <LPI Color="" Frequency="133" Angle="45" SpotFunction="3"/> + <LPI Color="Black" Frequency="133" Angle="45" SpotFunction="3"/> + <LPI Color="Cyan" Frequency="133" Angle="105" SpotFunction="3"/> + <LPI Color="Magenta" Frequency="133" Angle="75" SpotFunction="3"/> + <LPI Color="Yellow" Frequency="133" Angle="90" SpotFunction="3"/> + </PDF> + <DocItemAttributes/> + <TablesOfContents/> + <PageSets> + <Set Name="Single Page" FirstPage="0" Rows="1" Columns="1"/> + <Set Name="Double Sided" FirstPage="1" Rows="1" Columns="2"> + <PageNames Name="Left Page"/> + <PageNames Name="Right Page"/> + </Set> + <Set Name="3-Fold" FirstPage="0" Rows="1" Columns="3"> + <PageNames Name="Left Page"/> + <PageNames Name="Middle"/> + <PageNames Name="Right Page"/> + </Set> + <Set Name="4-Fold" FirstPage="0" Rows="1" Columns="4"> + <PageNames Name="Left Page"/> + <PageNames Name="Middle Left"/> + <PageNames Name="Middle Right"/> + <PageNames Name="Right Page"/> + </Set> + </PageSets> + <Sections> + <Section Number="0" Name="0" From="0" To="0" Type="Type_1_2_3" Start="1" Reversed="0" Active="1"/> + </Sections> + <MASTERPAGE PAGEXPOS="100" PAGEYPOS="20" PAGEWIDTH="595.28" PAGEHEIGHT="841.89" BORDERLEFT="40" BORDERRIGHT="40" BORDERTOP="40" BORDERBOTTOM="40" NUM="0" NAM="Normal" MNAM="" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/> + <PAGE PAGEXPOS="100" PAGEYPOS="20" PAGEWIDTH="595.28" PAGEHEIGHT="841.89" BORDERLEFT="40" BORDERRIGHT="40" BORDERTOP="40" BORDERBOTTOM="40" NUM="0" NAM="" MNAM="Normal" Size="A4" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="88.25 503.75 " HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/> + <PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="188.25" YPOS="406.5" WIDTH="415.5" HEIGHT="215.25" RADRECT="0" FRTYPE="0" CLIPEDIT="0" PWIDTH="0" PCOLOR="None" PCOLOR2="Black" COLUMNS="1" COLGAP="0" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 415.5 0 415.5 0 415.5 0 415.5 0 415.5 215.25 415.5 215.25 415.5 215.25 415.5 215.25 0 215.25 0 215.25 0 215.25 0 215.25 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 415.5 0 415.5 0 415.5 0 415.5 0 415.5 215.25 415.5 215.25 415.5 215.25 415.5 215.25 0 215.25 0 215.25 0 215.25 0 215.25 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0" gWidth="0" gHeight="0" LAYER="0" BOOKMARK="0" NEXTITEM="-1" BACKITEM="-1"> + <para ALIGN="1"/> + <para ALIGN="1"/> + <ITEXT FONT="Arial Regular" FONTSIZE="16" CH="Sven Eisenhauer"/> + <para ALIGN="1"/> + <para ALIGN="1"/> + <para ALIGN="1"/> + <ITEXT FONT="Arial Regular" FONTSIZE="16" CH="Konzeptionierung und prototypische Umsetzung einer Echtzeitbasierten"/> + <para ALIGN="1"/> + <ITEXT FONT="Arial Regular" FONTSIZE="16" CH="Restbussimulation mittels Mikrocontrollerunterstützung"/> + <para ALIGN="1"/> + <para ALIGN="1"/> + <para ALIGN="1"/> + <ITEXT FONT="Arial Regular" FONTSIZE="16" CH="14.02.2012"/> + <trail ALIGN="1"/> + <PageItemAttributes/> + </PAGEOBJECT> + </DOCUMENT> +</SCRIBUSUTF8NEW> diff --git a/Master/Masterarbeit/thesis/literature/Bar99.pdf b/Master/Masterarbeit/thesis/literature/Bar99.pdf Binary files differnew file mode 100644 index 0000000..bfa001f --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Bar99.pdf diff --git a/Master/Masterarbeit/thesis/literature/Bay72.pdf b/Master/Masterarbeit/thesis/literature/Bay72.pdf Binary files differnew file mode 100644 index 0000000..da5daec --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Bay72.pdf diff --git a/Master/Masterarbeit/thesis/literature/DBBL07.pdf b/Master/Masterarbeit/thesis/literature/DBBL07.pdf Binary files differnew file mode 100644 index 0000000..794540d --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/DBBL07.pdf diff --git a/Master/Masterarbeit/thesis/literature/DW.pdf b/Master/Masterarbeit/thesis/literature/DW.pdf Binary files differnew file mode 100644 index 0000000..14b8ca4 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/DW.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/0.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/0.pdf Binary files differnew file mode 100644 index 0000000..b48768d --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/0.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/1.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/1.pdf Binary files differnew file mode 100644 index 0000000..5c38036 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/1.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/10.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/10.pdf Binary files differnew file mode 100644 index 0000000..fae1ef2 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/10.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/11.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/11.pdf Binary files differnew file mode 100644 index 0000000..6c9b3c3 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/11.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/12.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/12.pdf Binary files differnew file mode 100644 index 0000000..3ebde33 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/12.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/13.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/13.pdf Binary files differnew file mode 100644 index 0000000..c94b58f --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/13.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/14.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/14.pdf Binary files differnew file mode 100644 index 0000000..323ff3a --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/14.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/15.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/15.pdf Binary files differnew file mode 100644 index 0000000..293265b --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/15.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/16.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/16.pdf Binary files differnew file mode 100644 index 0000000..b0a3ff8 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/16.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/17.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/17.pdf Binary files differnew file mode 100644 index 0000000..c72aa3b --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/17.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/18.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/18.pdf Binary files differnew file mode 100644 index 0000000..fdf568f --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/18.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/2.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/2.pdf Binary files differnew file mode 100644 index 0000000..10f09a0 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/2.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/3.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/3.pdf Binary files differnew file mode 100644 index 0000000..50d965f --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/3.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/4.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/4.pdf Binary files differnew file mode 100644 index 0000000..f2993dc --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/4.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/5.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/5.pdf Binary files differnew file mode 100644 index 0000000..3eda604 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/5.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/6.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/6.pdf Binary files differnew file mode 100644 index 0000000..1079ef2 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/6.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/7.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/7.pdf Binary files differnew file mode 100644 index 0000000..9e10e0b --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/7.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/8.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/8.pdf Binary files differnew file mode 100644 index 0000000..3bb9080 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/8.pdf diff --git a/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/9.pdf b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/9.pdf Binary files differnew file mode 100644 index 0000000..32f93fa --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Das C++ Kompendium/9.pdf diff --git a/Master/Masterarbeit/thesis/literature/FS11.pdf b/Master/Masterarbeit/thesis/literature/FS11.pdf Binary files differnew file mode 100644 index 0000000..7d44fb8 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/FS11.pdf diff --git a/Master/Masterarbeit/thesis/literature/Gud07.pdf b/Master/Masterarbeit/thesis/literature/Gud07.pdf Binary files differnew file mode 100644 index 0000000..a3c4681 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Gud07.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/0.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/0.pdf Binary files differnew file mode 100644 index 0000000..82d7746 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/0.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/1.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/1.pdf Binary files differnew file mode 100644 index 0000000..4bc83e9 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/1.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/2.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/2.pdf Binary files differnew file mode 100644 index 0000000..3584799 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/2.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/3.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/3.pdf Binary files differnew file mode 100644 index 0000000..f38d0ae --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/3.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/4.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/4.pdf Binary files differnew file mode 100644 index 0000000..c26c0fb --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/4.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/5.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/5.pdf Binary files differnew file mode 100644 index 0000000..89644eb --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/5.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/6.pdf b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/6.pdf Binary files differnew file mode 100644 index 0000000..49fe051 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hard Real-Time Computing Systems/6.pdf diff --git a/Master/Masterarbeit/thesis/literature/Hee11.pdf b/Master/Masterarbeit/thesis/literature/Hee11.pdf Binary files differnew file mode 100644 index 0000000..bacb4d3 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Hee11.pdf diff --git a/Master/Masterarbeit/thesis/literature/JOS01.pdf b/Master/Masterarbeit/thesis/literature/JOS01.pdf Binary files differnew file mode 100644 index 0000000..4122c84 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/JOS01.pdf diff --git a/Master/Masterarbeit/thesis/literature/KG11a.pdf b/Master/Masterarbeit/thesis/literature/KG11a.pdf Binary files differnew file mode 100644 index 0000000..500dd6e --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/KG11a.pdf diff --git a/Master/Masterarbeit/thesis/literature/KG11b.pdf b/Master/Masterarbeit/thesis/literature/KG11b.pdf Binary files differnew file mode 100644 index 0000000..57ea8c1 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/KG11b.pdf diff --git a/Master/Masterarbeit/thesis/literature/Lov07_Linux System Programming.pdf b/Master/Masterarbeit/thesis/literature/Lov07_Linux System Programming.pdf Binary files differnew file mode 100644 index 0000000..d96decd --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Lov07_Linux System Programming.pdf diff --git a/Master/Masterarbeit/thesis/literature/MDP00.pdf b/Master/Masterarbeit/thesis/literature/MDP00.pdf Binary files differnew file mode 100644 index 0000000..710224b --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/MDP00.pdf diff --git a/Master/Masterarbeit/thesis/literature/MDP00a.pdf b/Master/Masterarbeit/thesis/literature/MDP00a.pdf Binary files differnew file mode 100644 index 0000000..e650b81 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/MDP00a.pdf diff --git a/Master/Masterarbeit/thesis/literature/MDP00b.pdf b/Master/Masterarbeit/thesis/literature/MDP00b.pdf Binary files differnew file mode 100644 index 0000000..c3ecdb0 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/MDP00b.pdf diff --git a/Master/Masterarbeit/thesis/literature/MSDN11a.pdf b/Master/Masterarbeit/thesis/literature/MSDN11a.pdf Binary files differnew file mode 100644 index 0000000..1f67e37 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/MSDN11a.pdf diff --git a/Master/Masterarbeit/thesis/literature/Mit07.pdf b/Master/Masterarbeit/thesis/literature/Mit07.pdf Binary files differnew file mode 100644 index 0000000..0f04221 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Mit07.pdf diff --git a/Master/Masterarbeit/thesis/literature/Ram99.pdf b/Master/Masterarbeit/thesis/literature/Ram99.pdf Binary files differnew file mode 100644 index 0000000..edbdbe4 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Ram99.pdf diff --git a/Master/Masterarbeit/thesis/literature/Ree97_What really happened on Mars.pdf b/Master/Masterarbeit/thesis/literature/Ree97_What really happened on Mars.pdf Binary files differnew file mode 100644 index 0000000..e77e93d --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Ree97_What really happened on Mars.pdf diff --git a/Master/Masterarbeit/thesis/literature/SRL90_Priority Inheritance Protocols.pdf b/Master/Masterarbeit/thesis/literature/SRL90_Priority Inheritance Protocols.pdf Binary files differnew file mode 100644 index 0000000..e9a6da3 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/SRL90_Priority Inheritance Protocols.pdf diff --git a/Master/Masterarbeit/thesis/literature/SSH11.pdf b/Master/Masterarbeit/thesis/literature/SSH11.pdf Binary files differnew file mode 100644 index 0000000..50b4206 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/SSH11.pdf diff --git a/Master/Masterarbeit/thesis/literature/Sampath.pdf b/Master/Masterarbeit/thesis/literature/Sampath.pdf Binary files differnew file mode 100644 index 0000000..6a4bdad --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/Sampath.pdf diff --git a/Master/Masterarbeit/thesis/literature/TIS95_ELF_Format.pdf b/Master/Masterarbeit/thesis/literature/TIS95_ELF_Format.pdf Binary files differnew file mode 100644 index 0000000..34b9e8c --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/TIS95_ELF_Format.pdf diff --git a/Master/Masterarbeit/thesis/literature/can2spec.pdf b/Master/Masterarbeit/thesis/literature/can2spec.pdf Binary files differnew file mode 100644 index 0000000..c195a84 --- /dev/null +++ b/Master/Masterarbeit/thesis/literature/can2spec.pdf diff --git a/Master/Masterarbeit/thesis/lst/CXorayaPlugin_WCRT.cpp b/Master/Masterarbeit/thesis/lst/CXorayaPlugin_WCRT.cpp new file mode 100644 index 0000000..c3c38aa --- /dev/null +++ b/Master/Masterarbeit/thesis/lst/CXorayaPlugin_WCRT.cpp @@ -0,0 +1,62 @@ +#include "plugin_api.h"
+#include "global.h"
+
+class CXorayaPlugin_WCRT : public IPlugin
+{
+private:
+ int32_t m_i32InterfaceHandle;
+ uint32_t m_u32PluginId;
+ tstCanTxMessage m_axCanTxMessages[7];
+public:
+CXorayaPlugin_WCRT()
+:m_i32InterfaceHandle(0),m_u32PluginId(0),m_axCanTxMessages({{ 1, 0, 1, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, { 1, 0, 2, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, { 1, 0, 3, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, { 1, 0, 4, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, { 1, 0, 5, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, { 1, 0, 6, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, { 1, 0, 7, {60, 60, 60, 60, 60, 60, 60, 60 }, 8}, })
+{
+}
+virtual ~CXorayaPlugin_WCRT()
+{
+}
+virtual void vRun()
+{
+}
+virtual tpstCanTxMessage pxGetCanTxMessage( const uint32_t u32MsgIndex )
+{
+ return &m_axCanTxMessages[u32MsgIndex];
+}
+virtual uint32_t u32GetNumOfCanTxMessages( void )
+{
+ return 7;
+}
+virtual int32_t i32GetCanInterfaceHandle( void )
+{
+ return m_i32InterfaceHandle;
+}
+virtual void vLogMessage(const tstLogMessage& stLogMessage)
+{
+}
+virtual void vInit(void* pvExecutor, void* pvIfMan, int32_t i32Interface, uint32_t u32PluginId)
+{
+ m_i32InterfaceHandle=i32Interface;
+ m_u32PluginId=u32PluginId;
+}
+virtual bool boAutoload( void)
+{
+ return false;
+}
+virtual bool boIsLogger( void)
+{
+ return false;
+}
+tenRetCodes enGetLog(const char* pcRequest, char* pcResponse)
+{
+ return nenERR_NOTIMPLEMENTED;
+}
+};
+static CXorayaPlugin_WCRT xPlugin;
+extern "C" IPlugin* pxCreatePlugin(void* pvExecutor, void* pvIfMan, int32_t i32Interface, uint32_t u32PluginId)
+{
+ xPlugin.vInit(pvExecutor,pvIfMan,i32Interface,u32PluginId);
+ return &xPlugin;
+}
+extern "C" void vDestroyPlugin(IPlugin* pxPlugin)
+{
+}
diff --git a/Master/Masterarbeit/thesis/lst/Makefile.txt b/Master/Masterarbeit/thesis/lst/Makefile.txt new file mode 100644 index 0000000..43a3a42 --- /dev/null +++ b/Master/Masterarbeit/thesis/lst/Makefile.txt @@ -0,0 +1,7 @@ +LIBS :=
+G++ := c:/programme/x2e/x2e/toolchain/bin/powerpc-linux-gnu-g++.exe
+all:
+ @echo 'Invoking cross compiler'
+ $(G++) -Ic:/programme/x2e/x2e/toolchain/powerpc-linux-gnu/libc/usr/include -I"c:\Dokumente und Einstellungen\Eisenhauer\Eigene Dateien\Masterarbeit\src\common\inc" -Os -g0 -Wall -c -fno-strict-aliasing -std=c++0x -msoft-float -mcpu=405 -fPIC -MMD -MP -o CXorayaPlugin_WCRT.o C:/temp/CXorayaPlugin_WCRT.cpp
+ @echo 'Invoking linker'
+ $(G++) -L"c:\Programme\x2e\x2e\toolchain\powerpc-linux-gnu\libc\nof\lib" -msoft-float -shared -o "C:/temp/CXorayaPlugin_WCRT.so" CXorayaPlugin_WCRT.o $(LIBS)
diff --git a/Master/Masterarbeit/thesis/masterposter-eisenhauer.doc b/Master/Masterarbeit/thesis/masterposter-eisenhauer.doc Binary files differnew file mode 100644 index 0000000..ff5defa --- /dev/null +++ b/Master/Masterarbeit/thesis/masterposter-eisenhauer.doc diff --git a/Master/Masterarbeit/thesis/masterposter-eisenhauer.pdf b/Master/Masterarbeit/thesis/masterposter-eisenhauer.pdf Binary files differnew file mode 100644 index 0000000..3ea062a --- /dev/null +++ b/Master/Masterarbeit/thesis/masterposter-eisenhauer.pdf diff --git a/Master/Masterarbeit/thesis/tex/abstract.tex b/Master/Masterarbeit/thesis/tex/abstract.tex new file mode 100644 index 0000000..5772780 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/abstract.tex @@ -0,0 +1,18 @@ +\thispagestyle{empty} +\selectlanguage{ngerman} +\section*{\abstractname} +\label{sec:abstractde} +Eingebettete Systeme nehmen einen immer größeren Stellenwert in allen Bereichen unseres täglichen Lebens, auch im Automobilbereich, ein. Die zunehmende Leistungsfähigkeit eingebetteter Systeme beflügelt hier die Entwicklung immer komplexerer Anzeige- und Assistenzsysteme. Diese Systeme bestehen aus leistungsfähiger Hardware und äußerst komplexer Software. Bei bestimmten Systemen handelt es sich sogar um sicherheitsrelevante Funktionen. Daraus ergeben sich sehr hohe Qualitätsanforderungen an die Software. Aktuell sollen sehr umfassend definierte Entwicklungsprozesse und ausgiebige Softwaretests dazu beitragen, diese Anforderungen zu erfüllen. Diese eingebetteten Systeme arbeiten dabei nicht autark, sondern benötigen oftmals Daten von anderen Systemen im Fahrzeug. Während der Entwicklungs- und Testphasen besteht häufig das Problem, dass die Steuergeräte, von denen das aktuell zu entwickelnde System abhängt, nicht verfügbar sind. Im Rahmen dieser Entwicklungs- und Testmaßnahmen einzelner Softwarekomponenten finden deshalb sehr oft sog. Restbussimulationen Verwendung, die bestimmte Komponenten eines Fahrzeugs, die aktuell physisch nicht verfügbar sind, simulieren. So lässt sich eine einzelne Komponente entwickeln und prüfen, ohne ein komplettes Fahrzeug zu benötigen. + +Diese Arbeit befasst sich mit der Integration von CanEasy, einer Restbussimulation der Firma Schleißheimer GmbH, und der Hardware \myxc~der Firma X2E. Die Integration besteht darin, die Ausführung der Restbussimulation auf die \myxc~und einen PC zu verteilen. Die Arbeit beschreibt ein Konzept zur effizienten Verteilung der notwendigen Softwarekomponenten auf die beteiligten Hardwarekomponenten, deren Interaktion und Kommunikation untereinander. Darauf basierend stellt sie eine prototypische Umsetzung des Konzepts vor. Dabei erfolgt die Definition des Busses und die Steuerung des Gesamtsystems durch den Benutzer auf seinem PC, die \myxc~steuert die Kommunikation auf den Bussen zeitlich präziser als dies der PC leisten kann. Konzept und Umsetzung orientieren sich dabei an den spezifischen Eigenschaften und Anforderungen der beteiligten Systeme. Abschließend zeigt die Arbeit anhand der Auswertung der Ergebnisse des Prototyps die Vorteile einer solchen Verteilung gegenüber einer Restbus-Simulation auf einem Allzweckbetriebssystem auf. + +\newpage +\thispagestyle{empty} +\selectlanguage{english} +\section*{\abstractname} +\label{sec:abstracten} +Embedded Systems become more important for our daily life, also in the automotive area. Their increasing performance enables the development of more complex display- and assistance-systems for in-car solutions. These solutions consist of powerful hardware and very complex software. Particular systems are even security relevant. This fact causes very high quality requirements for the software in these systems. Actually globally defined development processes and broad software tests shall help to fulfil these requirements. Most in-car systems depend on data provided by other in-car systems, so they do not work autarkically. During the development and testing of a particular system this fact imposes the need for the systems, on which the actually developed or tested system depends. These dependent systems are often not available yet. So for development and test of particular software components often so called rest-bus simulations are used. These are computer programs, who simulate the behaviour of unavailable control units. This simulation enables the development and test of particular in-car components without the need of a hole vehicle with all its control units. + +This thesis delves into the integration of the rest-bus simulation CanEasy, development by the company Schleißheimer GmbH, with \myxc, a hardware solution developed by the company X2E. The integration is done by distributing the rest-bus simulation components over the PC running CanEasy and the \myxc. This thesis describes a concept for the distributed software component among the involved hardware components. This concept includes interaction and communication between the components. Next it shows a prototype of this concept. The prototype consists of a user interaction component on the PC, a control component for the in-car data buses on the \myxc~and a network protocol for communication. The PC component is for the definition of the simulated in-car systems. The \myxc~handles the traffic on the in-car buses in a timely very precise manner. The PC cannot reach this timely precision. The concept and the prototypic implementation consider the specific characteristics and requirements of the involved systems. This thesis concludes with a measurement of the results of the prototypic implementation as a proof of concept. This shows the advantages of a distributed rest-bus simulation based on the presented concept over a rest-bus simulation on a general purpose operating system. + +\selectlanguage{ngerman}
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/app-schedtest.tex b/Master/Masterarbeit/thesis/tex/app-schedtest.tex new file mode 100644 index 0000000..7a94f1b --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/app-schedtest.tex @@ -0,0 +1,132 @@ +Zur besseren Lesbarkeit entfällt die Angabe der Zeiteinheit $\mu s$. Die Ausgangswerte für die folgenden Berechnungen sind Tabelle \ref{tab:res:startvalues} zu entnehmen.
+\section*{Berechnungen für $m_1$}
+\[ U_1=\frac{C_1}{T_1} =\frac{135}{1000}=0,135<1 \]
+\[ t^1_1=B_1+\lceil\frac{t^0_1+J_1}{T_1}\rceil C_1 =135+\lceil\frac{135+0}{1000}\rceil 135 =135+1*135=270 \]
+\[ t^2_1=B_1+\lceil\frac{t^1_1+J_1}{T_1}\rceil C_1 =135+\lceil\frac{270+0}{1000}\rceil 135 =135+1*135=270 \]
+\[ t_1=270 \]
+\[ Q_1=\lceil\frac{t_1+J_1}{T_1}\rceil = \lceil\frac{270+0}{1000}\rceil = 1 \]
+\[ \omega^0_1\left( 0\right)=B_1=135 \]
+\[ \omega^1_1\left( 0\right)=B_1+0*C_1= 135+0*135=135\]
+\[ \omega_1\left( 0\right)=135\]
+\[ R_1\left( 0\right)=J_1+ \omega_1\left( 0\right)-0*T_1+C_1=0+135-0+135=270 \]
+\[ R_1=\max\limits_{q=0\dots 1-1}\left( \{R_1\left( 0\right) \} \right) = \max\limits_{q=0\dots 0}\left( \{270\} \right)=270 \]
+\section*{Berechnungen für $m_2$}
+\[ U_2=\frac{C_1}{T_1}+\frac{C_2}{T_2} =\frac{135}{1000}+\frac{135}{1000}=0,270<1 \]
+\[ t^1_2=B_2+\lceil\frac{t^0_2+J_1}{T_1}\rceil C_1 +\lceil\frac{t^0_2+J_2}{T_2}\rceil C_2 \]
+Da in diesem Beispiel $J_1=J_2\dots =J_7$, $T_1=T_2\dots =T_7$ und $C_1=C_2\dots =C_7$, lässt sich einfacher schreiben
+\[ t^1_2=B_2+\left(\lceil\frac{t^0_2+J_2}{T_2}\rceil C_2 \right)*2 \]
+\[ t^1_2=135+\left(\lceil\frac{135+0}{1000}\rceil 135 \right)*2=135+1*135*2=405 \]
+\[ t^2_2=B_2+\left(\lceil\frac{t^1_2+J_2}{T_2}\rceil C_2\right)*2 =135+\left(\lceil\frac{405+0}{1000}\rceil 135\right)*2 =135+1*135*2=405 \]
+\[ t_2=405 \]
+\[ Q_2=\lceil\frac{t_2+J_2}{T_2}\rceil = \lceil\frac{405+0}{1000}\rceil = 1 \]
+\[ \omega^0_2\left( 0\right)=B_2=135 \]
+\[ \omega^1_2\left( 0\right)=B_2+0*C_2+\lceil\frac{\omega^0_2\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1= 135+0*135+\lceil\frac{135+0+1}{1000}\rceil *135=135+1*135=270\]
+\[ \omega^2_2\left( 0\right)=B_2+0*C_2+\lceil\frac{\omega^1_2\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1= 135+0*135+\lceil\frac{270+0+1}{1000}\rceil *135=135+1*135=270\]
+\[ \omega_2\left( 0\right)=270\]
+\[ R_2\left( 0\right)=J_2+ \omega_2\left( 0\right)-0*T_2+C_2=0+270-0+135=405 \]
+\[ R_2=\max\limits_{q=0\dots 1-1}\left( \{R_2\left( 0\right) \} \right) = \max\limits_{q=0\dots 0}\left( \{405\} \right)=405 \]
+\section*{Berechnungen für $m_3$}
+\[ U_3=\frac{C_1}{T_1}+\frac{C_2}{T_2}+\frac{C_3}{T_3} =\frac{135}{1000}*3=0,405<1 \]
+\[ t^1_3=B_3+\left(\lceil\frac{t^0_3+J_3}{T_3}\rceil C_3 \right)*3 \]
+\[ t^1_3=135+\left(\lceil\frac{135+0}{1000}\rceil 135 \right)*3=135+1*135*3=540 \]
+\[ t^2_3=B_3+\left(\lceil\frac{t^1_3+J_3}{T_3}\rceil C_3\right)*3 =135+\left(\lceil\frac{540+0}{1000}\rceil 135\right)*3 =135+1*135*3=540 \]
+\[ t_3=540 \]
+\[ Q_3=\lceil\frac{t_3+J_3}{T_3}\rceil = \lceil\frac{540+0}{1000}\rceil = 1 \]
+\[ \omega^0_3\left( 0\right)=B_3=135 \]
+\[ \omega^1_3\left( 0\right)=B_3+0*C_3+\lceil\frac{\omega^0_3\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1+\lceil\frac{\omega^0_3\left( 0\right)+J_2+\tau_{bit}}{T_2}\rceil C_2 \]
+Da in diesem Beispiel $J_1=J_2\dots =J_7$, $T_1=T_2\dots =T_7$ und $C_1=C_2\dots =C_7$, lässt sich auch hier einfacher schreiben
+\[ \omega^1_3\left( 0\right)=B_3+0*C_3+\left(\lceil\frac{\omega^0_3\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*2 \]
+\[ \omega^1_3\left( 0\right)=135+0*135+\left(\lceil\frac{135+0+1}{1000}\rceil 135\right)*2 = 135+1*135*2=405\]
+\[
+\begin{split}
+ \omega^2_3\left( 0\right)=B_3+0*C_3+\left(\lceil\frac{\omega^1_3\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*2=\\ 135+0*135+\left(\lceil\frac{270+0+1}{1000}\rceil *135\right)*2=135+1*135*2=405
+\end{split}
+\]
+\[ \omega_3\left( 0\right)=405\]
+\[ R_3\left( 0\right)=J_3+ \omega_3\left( 0\right)-0*T_3+C_3=0+405-0+135=540 \]
+\[ R_3=\max\limits_{q=0\dots 1-1}\left( \{R_3\left( 0\right) \} \right) = \max\limits_{q=0\dots 0}\left( \{540\} \right)=540 \]
+\section*{Berechnungen für $m_4$}
+\[ U_4=\frac{C_1}{T_1}*4 =\frac{135}{1000}*4=0,540<1 \]
+\[ t^1_4=B_4+\left(\lceil\frac{t^0_4+J_1}{T_1}\rceil C_1 \right)*4 \]
+\[ t^1_4=135+\left(\lceil\frac{135+0}{1000}\rceil 135 \right)*4=135+1*135*4=675 \]
+\[ t^2_4=B_4+\left(\lceil\frac{t^1_4+J_1}{T_1}\rceil C_1\right)*4 =135+\left(\lceil\frac{675+0}{1000}\rceil 135\right)*4 =135+1*135*4=675 \]
+\[ t_4=675 \]
+\[ Q_4=\lceil\frac{t_4+J_4}{T_4}\rceil = \lceil\frac{675+0}{1000}\rceil = 1 \]
+\[ \omega^0_4\left( 0\right)=B_4=135 \]
+\[ \omega^1_4\left( 0\right)=B_4+0*C_4+\left(\lceil\frac{\omega^0_4\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*3 \]
+\[ \omega^1_4\left( 0\right)=135+0*135+\left(\lceil\frac{135+0+1}{1000}\rceil 135\right)*3 = 135+1*135*3=540 \]
+\[
+\begin{split}
+\omega^2_4\left( 0\right)=B_4+0*C_4+\left(\lceil\frac{\omega^1_4\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*3=\\ 135+0*135+\left(\lceil\frac{540+0+1}{1000}\rceil *135\right)*3=135+1*135*3=540
+\end{split}
+\]
+\[ \omega_4\left( 0\right)=540\]
+\[ R_4\left( 0\right)=J_4+ \omega_4\left( 0\right)-0*T_4+C_4=0+540-0+135=675 \]
+\[ R_4=\max\limits_{q=0\dots 1-1}\left( \{R_4\left( 0\right) \} \right) = \max\limits_{q=0\dots 0}\left( \{675\} \right)=675 \]
+\section*{Berechnungen für $m_5$}
+\[ U_5=\frac{C_1}{T_1}*5 =\frac{135}{1000}*5=0,675<1 \]
+\[ t^1_5=B_5+\left(\lceil\frac{t^0_5+J_1}{T_1}\rceil C_1 \right)*5 \]
+\[ t^1_5=135+\left(\lceil\frac{135+0}{1000}\rceil 135 \right)*5=135+1*135*5=810 \]
+\[ t^2_5=B_5+\left(\lceil\frac{t^1_5+J_1}{T_1}\rceil C_1\right)*5 =135+\left(\lceil\frac{810+0}{1000}\rceil 135\right)*5 =135+1*135*5=810 \]
+\[ t_5=810 \]
+\[ Q_5=\lceil\frac{t_5+J_5}{T_5}\rceil = \lceil\frac{810+0}{1000}\rceil = 1 \]
+\[ \omega^0_5\left( 0\right)=B_5=135 \]
+\[ \omega^1_5\left( 0\right)=B_5+0*C_5+\left(\lceil\frac{\omega^0_5\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*4 \]
+\[ \omega^1_5\left( 0\right)=135+0*135+\left(\lceil\frac{135+0+1}{1000}\rceil 135\right)*4 = 135+1*135*4=675 \]
+\[
+\begin{split}
+\omega^2_5\left( 0\right)=B_5+0*C_5+\left(\lceil\frac{\omega^1_5\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*4=\\ 135+0*135+\left(\lceil\frac{675+0+1}{1000}\rceil *135\right)*4=135+1*135*4=675
+\end{split}
+\]
+\[ \omega_5\left( 0\right)=675\]
+\[ R_5\left( 0\right)=J_5+ \omega_5\left( 0\right)-0*T_5+C_5=0+675-0+135=810 \]
+\[ R_5=\max\limits_{q=0\dots 1-1}\left( \{R_5\left( 0\right) \} \right) = \max\limits_{q=0\dots 0}\left( \{810\} \right)=810 \]
+\section*{Berechnungen für $m_6$}
+\[ U_6=\frac{C_1}{T_1}*6 =\frac{135}{1000}*6=0,810<1 \]
+\[ t^1_6=B_6+\left(\lceil\frac{t^0_6+J_1}{T_1}\rceil C_1 \right)*6 \]
+\[ t^1_6=135+\left(\lceil\frac{135+0}{1000}\rceil 135 \right)*6=135+1*135*6=945 \]
+\[ t^2_6=B_6+\left(\lceil\frac{t^1_6+J_1}{T_1}\rceil C_1\right)*6 =135+\left(\lceil\frac{945+0}{1000}\rceil 135\right)*6 =135+1*135*6=945 \]
+\[ t_6=945 \]
+\[ Q_6=\lceil\frac{t_6+J_6}{T_6}\rceil = \lceil\frac{945+0}{1000}\rceil = 1 \]
+\[ \omega^0_6\left( 0\right)=B_6=135 \]
+\[ \omega^1_6\left( 0\right)=B_6+0*C_6+\left(\lceil\frac{\omega^0_6\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*5 \]
+\[ \omega^1_6\left( 0\right)=135+0*135+\left(\lceil\frac{135+0+1}{1000}\rceil 135\right)*5 = 135+1*135*5=810 \]
+\[
+\begin{split}
+\omega^2_6\left( 0\right)=B_6+0*C_6+\left(\lceil\frac{\omega^1_6\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*5=\\ 135+0*135+\left(\lceil\frac{810+0+1}{1000}\rceil *135\right)*5=135+1*135*5=810
+\end{split}
+\]
+\[ \omega_6\left( 0\right)=810\]
+\[ R_6\left( 0\right)=J_6+ \omega_6\left( 0\right)-0*T_6+C_6=0+810-0+135=945 \]
+\[ R_6=\max\limits_{q=0\dots 1-1}\left( \{R_6\left( 0\right) \} \right) = \max\limits_{q=0\dots 0}\left( \{945\} \right)=945 \]
+\section*{Berechnungen für $m_7$}
+\[ U_7=\frac{C_1}{T_1}*7 =\frac{135}{1000}*7=0,945<1 \]
+\[ t^1_7=B_7+\left(\lceil\frac{t^0_7+J_1}{T_1}\rceil C_1 \right)*7 \]
+\[ t^1_7=135+\left(\lceil\frac{135+0}{1000}\rceil 135 \right)*7=135+1*135*7=1080 \]
+\[ t^2_7=B_7+\left(\lceil\frac{t^1_7+J_1}{T_1}\rceil C_1\right)*7 =135+\left(\lceil\frac{1080+0}{1000}\rceil 135\right)*7 =135+2*135*7=2025 \]
+\[ t^3_7=B_7+\left(\lceil\frac{t^2_7+J_1}{T_1}\rceil C_1\right)*7 =135+\left(\lceil\frac{2025+0}{1000}\rceil 135\right)*7 =135+3*135*7=2970 \]
+\[ t^4_7=B_7+\left(\lceil\frac{t^3_7+J_1}{T_1}\rceil C_1\right)*7 =135+\left(\lceil\frac{2970+0}{1000}\rceil 135\right)*7 =135+3*135*7=2970 \]
+\[ t_7=2970 \]
+\[ Q_7=\lceil\frac{t_7+J_7}{T_7}\rceil = \lceil\frac{2970+0}{1000}\rceil = 3 \]
+\[ \omega^0_7\left( 0\right)=B_7=0 \]
+\[ \omega^1_7\left( 0\right)=0+0*C_7+\left(\lceil\frac{\omega^0_7\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*6 \]
+\[ \omega^1_7\left( 0\right)=0+0*135+\left(\lceil\frac{0+0+1}{1000}\rceil 135\right)*6 = 0+1*135*6=810 \]
+\[ \omega^2_7\left( 0\right)=0+0*C_7+\left(\lceil\frac{\omega^1_7\left( 0\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*6= 0+0*135+\left(\lceil\frac{810+0+1}{1000}\rceil *135\right)*5=0+1*135*6=810\]
+\[ \omega_7\left( 0\right)=810\]
+\[ R_7\left( 0\right)=J_7+ \omega_7\left( 0\right)-0*T_7+C_7=0+810-0+135=945 \]
+
+\[ \omega^0_7\left( 1\right)=\omega_7\left( 0\right)+C_7=810+135=945 \]
+\[ \omega^1_7\left( 1\right)=0+1*C_7+\left(\lceil\frac{\omega^0_7\left( 1\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*6 \]
+\[ \omega^1_7\left( 1\right)=0+1*135+\left(\lceil\frac{945+0+1}{1000}\rceil 135\right)*6 = 1*135+1*135*6=945 \]
+\[ \omega_7\left( 1\right)=945\]
+\[ R_7\left( 1\right)=J_7+ \omega_7\left( 1\right)-1*T_7+C_7=0+945-1000+135=80 \]
+
+\[ \omega^0_7\left( 2\right)=\omega_7\left( 1\right)+C_7=945+135=1080 \]
+\[ \omega^1_7\left( 2\right)=0+2*C_7+\left(\lceil\frac{\omega^0_7\left( 2\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*6 \]
+\[ \omega^1_7\left( 2\right)=0+2*135+\left(\lceil\frac{1080+0+1}{1000}\rceil 135\right)*6 = 2*135+2*135*6=1890 \]
+\[ \omega^2_7\left( 2\right)=0+2*C_7+\left(\lceil\frac{\omega^1_7\left( 2\right)+J_1+\tau_{bit}}{T_1}\rceil C_1\right)*6 \]
+\[ \omega^2_7\left( 2\right)=0+2*135+\left(\lceil\frac{1890+0+1}{1000}\rceil 135\right)*6 = 2*135+2*135*6=1890 \]
+\[ \omega_7\left( 2\right)=1890\]
+\[ R_7\left( 2\right)=J_7+ \omega_7\left( 2\right)-2*T_7+C_7=0+1890-2000+135=25 \]
+
+\[ R_7=\max\limits_{q=0\dots 3-1}\left( \{R_7\left( 0\right);R_7\left( 1\right);R_7\left( 2\right) \} \right) = \max\limits_{q=0\dots 2}\left( \{945;80;25\} \right)=945 \]
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/appendix.tex b/Master/Masterarbeit/thesis/tex/appendix.tex new file mode 100644 index 0000000..427d66a --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/appendix.tex @@ -0,0 +1,54 @@ +\chapter{Listings} +Die folgenden Listings zeigen Teile der Implementierung von besonderer Bedeutung für diese Arbeit. Alle Quellcode-Dateien befinden auf der beiliegenden CR-ROM (\ref{app:cd:src}). Die hier gezeigten Listings enthalten Kommentare zur Generierung der Quellcode-Dokumentation mit Hilfe von Doxygen. Diese Dokumentation befindet sich ebenfalls auf der beiliegenden CD-ROM (\ref{app:cd:doc}). +\section{Globale Headerdatei} +\label{lst:global} +\lstinputlisting[title=global.h]{../../src/common/inc/global.h} + +\section{Plugin API} +\label{lst:pluginapi} +\lstinputlisting[title=plugin\_api.h]{../../src/common/inc/plugin_api.h} + +\section{Skript zur Erzeugung von Systemlast auf der \myxc} +\label{lst:cpuload} +\lstinputlisting[language=bash,title=cpu\_load.sh]{../../src/common/cpu_load.sh} + +\section{Beispiel eines generierten Targetplugins} +\label{lst:targetplugin} +\lstinputlisting[title=Beispiel eines generierten Targetplugins]{../lst/CXorayaPlugin_WCRT.cpp} + +\section{Beispiel einer generierten Makedatei für ein Targetplugin} +\label{lst:targetmakefile} +\lstinputlisting[language=make,title=Beispiel Makefile]{../lst/Makefile.txt} + +\section{Serverseitige TCP-Verbindung} +\label{lst:tcpcon} +\lstinputlisting[title=TcpConnection.cpp]{../../src/XorayaPluginExecutor/TcpConnection.cpp} + +\section{Netzwerkprotokoll} +\label{lst:protocol} +\lstinputlisting[title=protocol.h]{../../src/common/inc/protocol.h} + +\section{Netzwerkdatenstrom} +\label{lst:networkstream} +\lstinputlisting[title=CNetworkStream.h]{../../src/common/inc/CNetworkStream.h} + +\section{Netzwerkdatentypen} +\label{lst:networkdatatypes} +\lstinputlisting[title=NetworkTypes.h]{../../src/common/inc/NetworkTypes.h} + +\section{Konstante Objekte zur Dekodierung der Netzwerknachrichten} +\label{lst:networkmessages} +\lstinputlisting[title=NetworkMessages.h]{../../src/common/inc/NetworkMessages.h} + +\chapter{Schedulability Test Berechnungen} +\label{app:calc} +\input{app-schedtest} + +\chapter{Inhalt der beiliegenden CD-ROM} +In den Unterverzeichnissen der CD-ROM befinden sich +\begin{description} +\item[src\phantomsection\label{app:cd:src}] Quellcode des realisierten Prototypen +\item[doc\phantomsection\label{app:cd:doc}] Dokumentation des Quellcodes im HTML-Format +\item[lit] Abzüge der verwendeten Webseiten im PDF-Format +\item[thesis] Diese Arbeit im PDF-Format +\end{description}
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/authorship.tex b/Master/Masterarbeit/thesis/tex/authorship.tex new file mode 100644 index 0000000..ce86854 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/authorship.tex @@ -0,0 +1,18 @@ +\newpage\thispagestyle{empty} +\section*{Erklärung} +\begin{flushleft} +Ich versichere hiermit, dass ich die vorliegende Arbeit selbständig verfasst und keine anderen als die im Literaturverzeichnis angegebenen Quellen benutzt habe. + +Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten oder noch nicht veröffentlichten Quellen entnommen sind, sind als solche kenntlich gemacht. + +Die Zeichnungen oder Abbildungen in dieser Arbeit sind von mir selbst erstellt worden oder mit einem entsprechenden Quellennachweis versehen. + +Diese Arbeit ist in gleicher oder ähnlicher Form noch bei keiner anderen Prüfungsbehörde eingereicht worden. +\end{flushleft} + +\vspace{2cm} +% Hier kommt die Unterschrift drüber +\begin{tabbing} +\hspace{6cm} \= \kill +\textit{Darmstadt, den {\today} } \> \textit{\myauthor} +\end{tabbing} diff --git a/Master/Masterarbeit/thesis/tex/concept.tex b/Master/Masterarbeit/thesis/tex/concept.tex new file mode 100644 index 0000000..360dba4 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/concept.tex @@ -0,0 +1,415 @@ +\setchapterpreamble[u]{% + \dictum[Linus Torvalds]{Controlling a laser with Linux is crazy, but everyone in this room is crazy in his own way. So if you want to use Linux to control an industrial welding laser, I have no problem with your using PREEMPT\_RT.}\bigskip} +\chapter{Konzept}\label{chp:concept} +Dieses Kapitel beschreibt den konzeptionellen Entwurf zur Integration von CanEasy und \myxc. Dazu stellt der erste Abschnitt die beteiligten Systeme vor, da deren Eigenschaften Einfluss auf den konzeptionellen Entwurf haben. Der folgende Abschnitt formuliert weitere Forderungen, die den Entwurf beeinflussen. Danach wird die Architektur des Gesamtsystems skizziert. Die detaillierte Beschreibung der Entwürfe der einzelnen Komponenten folgt in den weiteren Abschnitten. Der letzte Abschnitt zeigt das Konzept zur Überprüfung der einzelnen Komponenten hinsichtlich ihrer Leistungsfähigkeit und Erfüllung der Anforderungen. +%========================================================================= +\section{Technische Ausgangsbasis} +\label{sec:con:techbase} +Um einen Überblick über das technische Umfeld, in dem sich dieses Konzept befindet, zu verschaffen, stellt dieser Abschnitt nacheinander die beteiligten Komponenten vor. Merkmale, die für das Verständnis nicht relevant sind und keinen Einfluss auf das Konzept haben, werden nicht berücksichtigt. Vollständige Beschreibungen der Produkte liefern die jeweiligen Dokumentationen. +\subsection{CanEasy} +\label{sec:caneasy}\index{CanEasy} +Wie schon in Kapitel \ref{chp:introduction} erwähnt, handelt es sich bei CanEasy um eine Restbus-Simulations-Software für PCs mit dem Betriebssystem Microsoft Windows der Firma Schleißheimer GmbH. Es ist in C/C++ geschrieben und verwendet die Microsoft MFC als GUI-Framework. Zur Kommunikation mit Bus-Systemen verfügt es über Treiber für vielfältige Hardware-Adapter. Über diese Schnittstellen sendet und empfängt es Daten, die es auf vielfältige Weise anzeigen und weiterverarbeiten kann. Der Begriff \textit{Host} bezeichnet im Folgenden einen PC mit CanEasy. +\subsubsection{Datenmodell - Die Datenbasis} +Eine zentrale Komponente von CanEasy bildet die sog. Datenbasis. Hierin ist die komplette Topologie der definierten Busse hinterlegt. Dabei spielen folgenden Klassen eine wichtige Rolle: +\begin{description} +\item [Bus] Einem Bus ist ein Hardware-Adapter zugeordnet, womit Busse die obersten Knoten in der Objekthierarchie unterhalb der Wurzel darstellen. +\item [Steuergerät] Ein Steuergerät gehört zu einem Bus. Steuergeräte können als real oder simuliert definiert werden. Bei simulierten Steuergeräten versendet CanEasy die Nachrichten dieser Steuergeräte auf dem zugehörigen Bus. Bei realen empfängt es Nachrichten auf dem entsprechenden Bus und ordnet sie dem entsprechenden Steuergerät in der Datenbasis zu. +\item [Nachrichten] repräsentieren CAN-Frames mit ID, Daten und der Sendesteuerung. Diese definiert, ob die Nachricht zyklisch oder nur auf Benutzerwunsch gesendet werden soll. +\item [Signale] stellen eine Sicht auf die Daten einer Nachricht dar. Jedes Signal bezeichnet einen bestimmten Bereich von Datenbits der zugehörigen Nachricht und wie diese zu interpretieren sind. +\end{description} +Darüber hinaus lassen sich für jedes Objekt benutzerspezifische Attribute definieren. CanEasy bietet eine breite Palette an Möglichkeiten zur Integration. Es liefert einen Assistenten zur Einrichtung von Visual Studio Projekten, mit denen benutzerspezifische Plugins (siehe \ref{sec:con:caneasyplugins}) in C/C++ erstellt werden können. Weiterhin verfügt es über eine VBA-Schnittstelle mit der ebenfalls benutzerspezifische Funktionalität intergrieren lässt. Darüber hinaus bietet es Import- und Exportfunktionen verschiedener Dateiformate für Aufzeichnungen und Datenbasen. + +\subsubsection{GUI} +Die Abbildung \ref{fig:caneasy_mainscreen} zeigt den Hauptbildschirm von CanEasy mit der hierarchischen Gliederung der Elemente der Datenbasis. + +Hieran lässt sich deutlich die oben beschriebene Baumstruktur der Datenbasis erkennen. Ebenso verfügt CanEasy über die Möglichkeit Signalverläufe über die Zeit grafisch darzustellen. Sog. Plots dienen zur Analyse des zeitlichen Verlaufs von Signalwerten, wie in \cite{SSH11} gefordert (siehe Abbildung \ref{fig:burst_rx_xc}). Sog. Traces stellen die Aufzeichnung tabellarisch dar, wobei über Filter einstellbar ist, welche Daten angezeigt werden. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{caneasy_mainscreen} +\end{minipage} +\caption{CanEasy Hauptbildschirm} +\label{fig:caneasy_mainscreen} +\end{figure} + +\subsubsection{Plugin-Konzept}\label{sec:con:caneasyplugins} +Wie oben erwähnt, bietet CanEasy flexible Erweiterungsmöglichkeiten durch Plugins. Dabei handelt es sich um zur Laufzeit nachladbare Module, die dem Benutzer gewisse Funktionen bereitstellen. CanEasy unterscheidet dabei zwei Arten von Plugins: +\begin{description} +\item [System-Plugins] Teile der Grundfunktionalität von CanEasy sind in sog. Systemplugins ausgelagert. Diese werden beim Start automatisch geladen. +\item [User-Plugins] Hierbei handelt es sich um benutzerspezifische Erweiterungen für CanEasy, die separat geladen werden müssen. CanEasy bietet zur Erstellung solcher User-Plugins einen Assistenten und eine API für den Zugriff auf CanEasy durch das User-Plugin. Dabei liegen allerdings nicht alle Funktionen von CanEasy offen. +\end{description} +%========================================================================= +\subsection{\myxc} +\label{sec:con:xoraya}\index{\myxc} +Die Firma X2E GmbH bietet mit dem Produkt \myxc~eine flexible und leistungsfähige Plattform zur Anbindung von Datenbussen im Fahrzeug an. In dieser Arbeit wird der Begriff \textit{Target} als Synonym für \myxc~verwendet. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{xoraya_connect_foto} +\includegraphics[width=\linewidth]{xoraya_connect_front} +\includegraphics[width=\linewidth]{xoraya_connect_rear} +\end{minipage} +\caption{Ansichten der \myxc} +\label{fig:xoraya} +\end{figure} + +Die Abbildung \ref{fig:xoraya} aus \cite{Sch11a} zeigt verschiedene Ansichten der \myxc~und deren Anschlüsse. +%========================================================================= +\subsubsection{CPU} +Den Kern der \myxc~bildet ein FPGA, in dem die Hardwarezellen für die einzelnen Bussysteme sowie ein Hauptprozessor integriert sind. Die CPU weist folgende Eigenschaften auf: +\begin{description} +\item[Architktur] PowerPC +\item[Taktfrequenz] 500 MHz +\end{description} +Außerdem verfügt das System über 256 MB RAM, Hardware-Timer und stellt global Zeitstempel mit einer Auflösung von 100 Nanosekunden bereit. +%========================================================================= +\subsubsection{Hardware-Schnittstellen} +Das Angebot an unterstützten Schnittstellen der \myxc~umfasst zum Zeitpunkt der Erstellung der Arbeit +\begin{itemize} +\item Ethernet +\item CAN (Highspeed und Lowspeed) +\item LIN +\item FlexRay +\item MOST25 +\item MOST150 +\end{itemize} +Durch den modularen Aufbau lassen sich die Schnittstellen nahezu frei zusammenstellen. Das von der Firma X2E zur Erstellung dieser Arbeit bereit gestellte Exemplar verfügt über eine CAN Lowspeed Schnittstelle und fünf CAN Highspeed Schnittstellen. +%========================================================================= +\subsubsection{Betriebssystem} +Auf der \myxc~findet ein modifiziertes Ubuntu Linux mit Kernel 3.0 und \nameref{sec:fun:PREEMPTRT} +als Betriebssystem Verwendung. +%========================================================================= +\subsubsection{SDK} +\label{sec:con:X2Esdk} +Zur Entwicklung eigener Software stellt X2E ein SDK bereit. Es basiert auf der freien Entwicklungsumgebung Eclipse. Neben der Entwicklungsumgebung enthält es u. a. Bibliotheken für den Zugriff auf die spezielle Hardware der \myxc~mit C/C++. Darüber hinaus enthält es die C++-Bibiliothek boost in der Version 1.46.0 \cite{Boo11}. Die Toolchain des SDK umfasst alle nötigen Programme, Bibliotheken und Debugger, um Programme für die \myxc~zu erstellen und zu debuggen. Die Toolchain erfordert einen PC mit dem Betriebssystem Windows der Firma Microsoft. Die Erstellung von Programmen oder Bibliotheken auf dem Windows PC für die \myxc~trägt ab hier auch die Bezeichnung \textit{cross-compile}. +%========================================================================= +\subsection{Atmel AT32UC3C-EK} +\label{sec:con:at32uc3c} +\index{AT32UC3C} +Die Firma Atmel bietet mit dem Produkt AT32UC3C-EK eine Evaluationsplatine für ihren Mikrocontroller AT32UC3C0512C an. Dabei handelt es sich um einen 32-Bit RISC Prozessor, der unter anderem über Highspeed CAN-Schnittstellen verfügbar. Der Kern des Prozessors erlaubt gemäß Datenblatt (\cite{AT32UC3C:datasheet}) eine Taktrate bis zu 66 Mhz. Die Evaluationsplatine verfügt weiterhin u. a. über 4 LEDs und 2 Taster. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{at32uc3c-ek} +\linebreak +\tiny \centering Quelle: Atmel Corporation +\end{minipage} +\caption{Atmel AT32UC3C-EK} +\label{fig:at32uc3c-ek} +\end{figure} +%========================================================== +\section{Anforderungen} +Von Seiten der Firmen Schleißheimer GmbH und X2E GmbH bestehen folgende Forderungen, die der in Kapitel \ref{chp:prototype} vorgestellte Prototyp erfüllen soll: +\begin{itemize} +\item Die \myxc~soll autark, d. h. ohne Verbindung zu einer CanEasy-Instanz, beispielsweise im Fahrzeug, arbeiten können. Dazu soll die Definition einer Datenbasis am PC erfolgen, die \myxc~entsprechend konfiguriert und ins Fahrzeug eingebaut werden. Die \myxc~versendet alle definierten Nachrichten in ihrem jeweiligen Intervall und zeichnet alle empfangenen Botschaften zur späteren Auswertung in CanEasy auf. +\item Die kleinste definierbare Zeiteinheit in der Datenbasis von CanEasy beträgt eine Millisekunde. Alle Teile dieser Arbeit sollen mindestens diese zeitlich Genauigkeit einhalten. +\item Beim Senden und Empfangen auf dem CAN Bus darf es nicht zum Verlust von Botschaften kommen. +\item Besteht eine Verbindung zwischen CanEasy und der \myxc, sollen Änderungen an den Datenbytes einer Botschaft durch den Benutzer ohne weitere Interaktion übertragen und verarbeitet werden. +\end{itemize} +Das hier vorgestellte Konzept muss diese Anforderungen ebenfalls berücksichtigen. +%========================================================== +\section{Anwendungsfälle} +Aus Sicht des Anwenders ergeben sich die in Abbildung \ref{fig:con:usecases} gezeigten Anwendungsfälle. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.75\linewidth} +\includegraphics[width=\linewidth]{usecases} +\end{minipage} +\caption{Anwendungsfälle} +\label{fig:con:usecases} +\end{figure} +Die nachfolgende Liste erläutert die einzelnen Anwendungsfälle. +\begin{description} +\item[Connect] Dieser Anwendungsfall baut eine Netzwerkverbindung zur \myxc~auf. Alle weiteren Anwendungsfälle setzen direkt oder indirekt eine bestehende Netzwerkverbindung voraus. +\item[Disconnect] Dieser Anwendungsfall trennt die bestehende Verbindung zur \myxc. Er setzt eine bestehende Netzwerkverbindung zur \myxc~voraus. +\item[Shutdown] Dieser Anwendungsfall sendet eine Netzwerkanfrage zum Beenden zur \myxc~und trennt anschließend die Verbindung. Er setzt eine bestehende Netzwerkverbindung zur \myxc~voraus. +\item[Enumerate Interfaces] Dieser Anwendungsfall ruft eine Liste mit verfügbaren CAN-Hardwareschnittstellen der \myxc~ab. Er setzt eine bestehende Netzwerkverbindung zur \myxc~voraus. +\item[Map Bus] Dieser Anwendungsfall verknüpft einen Bus der CanEasy-Datenbasis mit einer Hardwareschnittstelle der \myxc. Er setzt eine Liste der Hardwareschnittstellen der \myxc~voraus und führt den Anwendungsfall \texttt{Stop Bus} für die neu verknüpfte Hardwareschnittstelle und den neu verknüpften Bus aus. +\item[Unmap Bus] Dieser Anwendungsfall hebt eine Verknüpfung zwischen einem Bus der CanEasy-Datenbasis und einer Hardware-Schnittstelle der \myxc~auf. Vor der Aufhebung der Verknüpfung stoppt dieser Anwendungsfall die entsprechende Hardware-Schnittstelle der \myxc. +\item[Start Bus] Dieser Anwendungsfall startet die Simulation eines Busses aus der CanEasy-Datenbasis auf der verknüpften Hardware-Schnittstelle der \myxc. Zuvor stoppt er die entsprechende Hardware-Schnittstelle der \myxc. Dieser Anwendungsfall setzt eine bestehende Netzwerkverbindung zur \myxc~voraus. +\item[Stop Bus] Dieser Anwendungsfall stoppt die Simulation eines Busses aus der CanEasy-Datenbasis auf der verknüpften Hardware-Schnittstelle der \myxc~und setzt eine bestehende Netzwerkverbindung zur \myxc~voraus. +\item[Update Message Data] Dieser Anwendungsfall überträgt geänderte Nachrichtendaten für simulierte Busse auf die \myxc. Dieser Anwendungsfall setzt eine gestartete Simulation voraus. +\item[View Log] In diesem Anwendungsfall lädt der Benutzer eine bestehende Aufzeichnungsdatei in CanEasy. Dieser Anwendungsfall setzt eine konvertierte Aufzeichnungsdatei des Anwendungsfall \texttt{Import Log} voraus. +\item[Enumerate Logs] Dieser Anwendungsfall ruft die Liste der auf der \myxc~verfügbaren Aufzeichnungsdateien ab. Dazu setzt er eine bestehende Verbindung zur \myxc~voraus. +\item[Import Log] Dieser Anwendungsfall ruft die ausgewählte Aufzeichnung der \myxc~ab und konvertiert sie in das interne Aufzeichnungsformat von CanEasy. Dazu setzt er eine bestehende Verbindung zur \myxc~und eine abgerufene Liste von verfügbaren Aufzeichnungsdateien voraus. +\end{description} +%========================================================================= +\section{Architektur des Gesamtsystems} +\label{sec:architecture} +Ausgehend von den o. g. Anforderungen und den technischen Voraussetzungen liefert eine erste Analyse eine grobe Architektur des Gesamtsystems. Die Architektur der Gesamtsystems lässt sich Abbildung \ref{fig:architecture} entnehmen. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{architecture} +\end{minipage} +\caption{Systemarchitektur} +\label{fig:architecture} +\end{figure} +Die Architektur umfasst dabei zwei Hauptkomponenten: +\begin{description} +\item[CanEasy--seitig] Zur Definition der Datenbasis und Darstellung der empfangenen Daten verwendet das Konzept die bestehenden Komponenten von CanEasy. Zur Steuerung der \myxc~muss neue Software entwickelt werden. +\item[\myxc--seitig] Für den Versand und Empfang von CAN Botschaften auf dem Target muss ebenfalls neue Software entwickelt werden. Ebenso bedarf es Komponenten zur Steuerung und Kommunikation. +\end{description} +Der Benutzer ordnet dabei einem Bus in der CanEasy--Datenbasis eine Schnittstelle der \myxc~zu. Zwischen diesen beiden Entitäten besteht eine Eins--zu--Eins--Beziehung. + +Der Datenaustausch zwischen \myxc~und CanEasy erfolgt über Ethernet mittels TCP/IP-Protokoll, Version 4. +%========================================================================= +\section{Repräsentation der Datenbasis} +\label{sec:databasetransfer} +Dieser Abschnitt beschreibt das gewählte Konzept zur Übertragung der CanEasy-Datenbasis auf die \myxc. Das Konzept beschreibt an dieser Stelle die Repräsentationsform für Objekte der CanEasy-Datenbasis zwecks der Übertragung auf die \myxc~und des Ladens ins RAM der \myxc. Der Abschnitt \ref{sec:fund:objrepr} beschreibt mehrere mögliche Repräsentationsformen, die alle prinzipiell diesen Zweck erfüllen. + +Diese Arbeit verfolgt ab hier den Ansatz \ref{sec:elf}. Diese Entscheidung basiert auf der Abwägung der Eigenschaften des Systems, den Zielen der Arbeit und den Eigenschaften der verschiedenen Objektrepräsentationen. Auf der \myxc~steht kein Webservice-Server zur Verfügung. Da es sich um ein System mit eingeschränkten Ressourcen handelt, wird auf die Installation zusätzlicher Software verzichtet. Weiterhin umfasst das Gesamtsystem nur zwei Systeme, die beide bekannt sind. Es besteht demnach kein Bedarf an einer plattformunabhängigen Objektrepräsentation und loser Kopplung. Weiterhin benötigt die hier konzipierte Lösung eine Objektrepräsentation, die neben den Daten eines Objekts auch dessen Funktionen abbilden kann. + +Das embedded SDK für die \myxc~liefert eine Toolchain für C/C++ Quellcode mit. Diese Sprache verfügt über keine integrierte Lösung zur Objektserialierung wie beispielsweise Java mit dem Serializable-Interface. Zwar bietet boost eine Bibliothek zur Objektserialisierung, allerdings fällt die Einschätzung des Implementierungsaufwands zugunsten der binären Repräsentation als shared object, im Folgenden auch Targetplugin genannt, aus. Weiterhin verursacht die Deserialisierung Rechenaufwand, da der serialisiert Bytestrom interpretiert und eine Objektinstanz mit den entsprechenden Daten erzeugt werden muss. + +Aufgrund der direkten Zuordnung eines Busobjekts der Datenbasis zu einer Hardwareschnittstelle der \myxc~ergibt sich der Ansatz, pro Busobjekt ein shared object zu erzeugen. Jedes shared object enthält alle notwendigen Informationen, um den Bus korrekt zu simulieren. Alle shared objects stellen einen Satz von Software-Schnittstellen, ein API, bereit, über die der Zugriff auf alle Daten und Funktionen durch die targetseitige Integrationskomponente auf der \myxc~erfolgt. Diese Schnittstellen kapseln die konkrete Implementierung von der Verwendung ab. Die targetseitige Integrationskomponente auf der \myxc~verwendet ausschließlich die Methoden dieser definierten Software-Schnittstellen für den Zugriff auf shared objects. + +Jedes shared object stellt eine globale Funktion zur Erzeugung eines spezifischen Targetplugin-Objekts für den Bus bereit. Diese Fabrikmethode gibt einen Schnittstellen-Zeiger auf die konkrete Instanz zurück. Über diesen Schnittstellen-Zeiger erfolgt der weitere Zugriff auf das shared object. + +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.9\linewidth} +\includegraphics[width=\linewidth]{factorypattern} +\end{minipage} +\caption{Objektfabrik für Targetplugins} +\label{fig:con:factory} +\end{figure} + +Dieser Ansatz entspricht dem gängigen Fabrikentwurfsmuster, engl. factory pattern, wie in Abbildung \ref{fig:con:factory} skizziert. Weiterhin enthält die API eine globale Funktion, die vor dem Entladen eines shared objects aufgerufen wird. Die Verwendung globaler Funktionen anstatt einer Klasse liegt in der Implementierung begründet. Wie Listing \ref{lst:pluginapi} zeigt, ist die Fabrik-Funktion als \texttt{extern "C"} deklariert, wodurch jeweils ein Symbol mit genau dem Namen der Funktion vom Linker im shared object erzeugt wird. Beim dynamischen Laden können die beiden Funktionen anhand dieser definierten Symbolnamen gefunden werden. Diese beiden Symbolnamen und die Definition der Schnittstelle reicht als gemeinsames Wissen von CanEasy-- und \myxc--Seite aus. Ohne die Deklaration \texttt{extern "C"} erstellt der Linker Symbolnamen, die u. U. zusätzliche Zeichen enthalten und somit nicht unter einem festen Namen gefundenen werden können. Dies würde den Aufwand zum Auffinden der gewünschten Funktionen erhöhen. + +Die Umwandlung der Datenbasis in ein shared object erfolgt in mehreren Schritten. +\begin{enumerate} +\item Das Verfahren beginnt mit der Generierung einer C++-Quellcodedatei pro Bus in der Datenbasis. Dieser Schritt generiert Teile des Quellcodes, der für alle shared objects ähnlich ist. Diese enthalten die Definition einer Klasse, die von der Schnittstellen-Klasse erbt und die globalen Funktionen. +\item Auf oberster Ebene erfolgt eine Iteration über alle Steuergeräte des Busses. Pro simuliertem Steuergerät iteriert das Verfahren über alle Nachrichten. Dabei erzeugt es eine Objektdefinition pro Nachricht mit der ID, den Datenbytes und dem Sendezyklus der Nachricht. +\item Aus dieser Quellcode-Datei wird anschließend mithilfe des embedded SDK ein shared object erzeugt. Beim cross-compile ist es wichtig, dass der Compiler positionsunabhängigen Code (PIC\index{PIC}) generiert, da nicht bekannt, an welche Adresse im RAM das shared object geladen werden wird. Die besondere Eigenschaft von PIC besteht darin, dass keine absoluten Adressen verwendet werden. Der Compiler arbeitet stattdessen mit relativen Adressen. +\item Das shared object wird über das Netzwerk auf die \myxc~übertragen. +\item Nach der Übertragung wird der Start des shared objects mittels eines Signals initiiert. +\end{enumerate} +%========================================================================= +\section{Netzwerkprotokolle} \label{sec:con:networkprotocol} +Die Netzwerkkommunikation zwischen CanEasy und \myxc~verwendet zwei Protokolle. Zum einen das FTP-Protokoll zur Übertragung von Targetplugins und Aufzeichnungsdateien, da auf der \myxc~bereits ein FTP-Server vorhanden ist. Zur Übermittlung der Steuerkommandos und der entsprechenden Antworten dient ein spezielles Protokoll, das die Tabellen \ref{tab:con:networkprotocol} genauer beschreiben. Es basiert soweit möglich auf binären Daten und erspart somit aufwendige Zeichenkettenverarbeitungen auf dem Target. Es basiert auf dem Request-Response-Prinzip. Jede Kommunikation beginnt mit einer Anfrage, die je nach Typ bestimmte Parameter enthält und endet mit der Antwort, die ebenfalls je nach Typ bestimmte Parameter enthält. Eine Nachricht besteht aus einem Kopf, der den Typ der Nachricht und die Gesamtlänge der Nachricht enthält. An den Kopf schließt sich der Datenteil der Nachricht an, der ggf. die entsprechenden Parameter enthält. + +Die Netzwerkübertragungen erfolgen in Bigendian-Byteorder, da dies die native Byteorder des Targets ist. + +Eine Verbindung bleibt über mehrere Request-Response-Zyklen erhalten, so dass nicht für jede Anfrage eine neue Verbindung geöffnet werden muss. + +\footnotesize +\begin{center} +\begin{longtable}{|l|l|l|l|l|l|} + +\hline \textbf{Nachrichtentyp} & \textbf{Wert} & \textbf{Byte} & \textbf{Parameter} & \textbf{Parametertyp} & \textbf{Parameterlänge} \\ +\endhead + +\hline \multicolumn{6}{c}{Fortsetzung auf nächster Seite} \\ \hline +\endfoot + +% +\endlastfoot + +%============================================================= +\hline ReqStartPlugin & 0 & 0 & & Enumaration & 4 \\ +\hline & 512 & 4 & Nachrichtenlänge & Integer & 4 \\ +\hline & & 8 & Interface & Integer & 4 \\ +%\hline & max. 496 & 12 & Länge des Pfads der Shared Object Datei & Integer & 4 \\ +\hline & & 16 & Pfad der Shared Object Datei & Zeichenkette & 500\\ +%============================================================= +\hline ReqStopPlugin & 1 & 0 & & Enumaration & 4 \\ +\hline & 12 & 4 & Nachrichtenlänge & Integer & 4 \\ +\hline & & 8 & Interface & Integer & 4 \\ +%============================================================= +\hline ReqReqShutdown & 2 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge& Integer & 4 \\ +%============================================================= +\hline ReqImportLog & 3 & 0 & & Enumaration & 4 \\ +\hline & 512 & 4 & Nachrichtenlänge & Integer & 4 \\ +%\hline & max. 500 & 8 & Länge des nachfolgenden Strings & Integer & 4 \\ +\hline & & 12 & Pfad der Aufzeichnungsdatei & Zeichenkette & 500\\ +%============================================================= +\hline ReqEnumerateLogs & 4 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge& Integer & 4 \\ +%============================================================= +\hline ReqGetInterfaces & 5 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline ReqChangeMsgData & 6 & 0 & & Enumaration & 4 \\ +\hline & 24 & 4 & Nachrichtenlänge & Integer & 4 \\ +\hline & & 8 & ID & Integer & 4 \\ +\hline & & 12 & Interface & Integer & 4 \\ +\hline & & 16 & Data 0 & Byte & 1 \\ +\hline & & 17 & Data 1 & Byte & 1 \\ +\hline & & 18 & Data 2 & Byte & 1 \\ +\hline & & 19 & Data 3 & Byte & 1 \\ +\hline & & 20 & Data 4 & Byte & 1 \\ +\hline & & 21 & Data 5 & Byte & 1 \\ +\hline & & 22 & Data 6 & Byte & 1 \\ +\hline & & 23 & Data 7 & Byte & 1 \\ +%============================================================= +\hline ReqUploadLogMsg & 7 & 0 & & Enumaration & 4 \\ +\hline & 33 & 4 & Nachrichtenlänge & Integer & 4 \\ +\hline & & 8 & Timestamp High & Integer & 4 \\ +\hline & & 12 & Timestamp Low & Integer & 4 \\ +\hline & & 16 & Interface & Integer & 4 \\ +\hline & & 20 & ID & Integer & 4 \\ +\hline & & 24 & Data 0 & Byte & 1 \\ +\hline & & 25 & Data 1 & Byte & 1 \\ +\hline & & 26 & Data 2 & Byte & 1 \\ +\hline & & 27 & Data 3 & Byte & 1 \\ +\hline & & 28 & Data 4 & Byte & 1 \\ +\hline & & 29 & Data 5 & Byte & 1 \\ +\hline & & 30 & Data 6 & Byte & 1 \\ +\hline & & 31 & Data 7 & Byte & 1 \\ +\hline & & 32 & Direction \textless RX $|$ TX\textgreater & Byte & 1 \\ +%============================================================= +\hline RespStartPlugin & 8 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline RespStopPlugin & 9 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline RespShutdown & 10 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline RespImportLog & 11 & 0 & & Enumaration & 4 \\ +\hline & 512 & 4 & Nachrichtenlänge & Integer & 4 \\ +%\hline & max. 500 & 8 & Länge des nachfolgenden Strings & Integer & 4 \\ +\hline & & 12 & Pfad der Aufzeichnungsdatei & Zeichenkette & 504 \\ +%============================================================= +\hline RespEnumerateLog & 12 & 0 & & Enumaration & 4 \\ +\hline & 512 & 4 & Nachrichtenlänge & Integer & 4 \\ +%\hline & max. 500 & 8 & Länge des nachfolgenden Strings & Integer & 4 \\ +\hline & & 12 & Pfade der Aufzeichnungsdateien & Zeichenkette & 504 \\ +%============================================================= +\hline RespInterfaces & 13 & 0 & & Enumaration & 4 \\ +\hline & 512 & 4 & Nachrichtenlänge & Integer & 4 \\ +%\hline & max. 500 & 8 & Länge des nachfolgenden Strings & Integer & 4 \\ +\hline & & 12 & Interfaces & Zeichenkette & 504 \\ +%============================================================= +\hline RespChangeMsgData & 14 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline RespUploadLogMsg & 15 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline RespUnknownReq & 16 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline RespInvalidArg & 17 & 0 & & Enumaration & 4 \\ +\hline & 8 & 4 & Nachrichtenlänge & Integer & 4 \\ +%============================================================= +\hline +\caption{Format der Netzwerknachrichten}\label{tab:con:networkprotocol} \\ + +\end{longtable} +\end{center} +%========================================================================= +\section{Targetseitige Integration} +\label{sec:targetintegration} +An dieser Stelle erfolgt eine Verfeinerung des Entwurfs der Komponenten auf der \myxc. + +\subsection{Zentrale Steuerung} +Diese Komponente verarbeitet die Steuerkommandos, die CanEasy über das Netzwerk an die \myxc~sendet. Diese umfassen +\begin{itemize} +\item das Starten eines Targetplugins +\item das Stoppen eines Targetplugins +\item die Enumeration der Highspeed CAN-Schnittstellen der \myxc +\item das Enumeration der verfügbaren Aufzeichnungsdateien +\item das Abrufen einer Aufzeichnungsdatei +\item die Änderung der Daten einer Botschaft +\item das Stoppen der targetseitigen Komponenten +\end{itemize} + +\subsection{Sendesteuerung} +Die Aufgabe dieser Komponente besteht im Versand aller Nachrichten aller Targetplugins nach ihrem jeweiligen Sendeintervall auf der entsprechenden Hardware-Schnittstelle. + +Ebenso generiert sie einen Eintrag in der Aufzeichnung für jedes Versandereignis. + +\subsection{Aufzeichnung} +Diese Komponente zeichnet alle empfangenen Botschaften auf allen Hardware-Schnittstellen der \myxc~auf. Dabei sind neben der ID, den Daten, der Richtung (gesendet oder empfangen) und dem Zeitstempel auch die Hardware-Schnittstelle, auf der die Botschaft empfangen wurde, von Interesse. Die Aufzeichnung wird als separates Targetplugin realisiert, das keine Sendebotschaften enthält. Zusätzlich stellt es eine Methode bereit, die in der \nameref{sec:con:maintask} aufgerufen wird. Diese Methode liest die Empfangswarteschlange der \myxc~aus und speichert die empfangenen Nachrichten in einem internen Ringpuffer zwischen. Diesen Ringpuffer liest eine weitere Methode in der \nameref{sec:con:logtask} aus und speichert die empfangenen Nachrichten in einer Aufzeichnungsdatei. Jede Aufzeichnungsdatei beginnt mit einem absoluten Zeitstempel, wann sie begonnen wurde. Besteht eine Netzwerkverbindung zu einer CanEasy-Instanz, schickt die Aufzeichnungskomponente in der Logtask aufgezeichnete Nachrichten an diese CanEasy-Instanz. + +\subsection{Taskmodell} +Aus den vorgenannten Komponenten und ihren Aufgaben gibt sich eine Menge an Tasks, in denen die Komponenten ihre Aufgaben abarbeiten. Dabei gilt zu beachten, dass das System nur über eine CPU verfügt. Dadurch kann zu einem Zeitpunkt nur eine Task aktiv sein und jeder Taskwechsel verursacht eine Verzögerung durch den Kontextwechsel. Ebenso kann ein Taskwechsel zu cache faults führen, da sich die Speicherseiten der neuen Task u. U. nicht im Cache befinden. Diese cache faults führen zu einer größeren Ausführungszeit. Deshalb beschränkt sich dieses Konzept auf die minimal notwendige Anzahl an Tasks. + +Diese minimale Taskmenge umfasst folgende Elemente: +\begin{description} +\item[Maintask\phantomsection\label{sec:con:maintask}] Die Maintask wird zyklisch in einem Intervall von einer Millisekunde ausgeführt. Pro Zyklus liest sie die empfangenen Botschaften und versendet alle Botschaften, deren Sendeintervall in diesem Zyklus abgelaufen ist. Sie besitzt die höchste Priorität. Pro Sendezyklus ordnet die Maintask die zu versendenden Nachrichten nach deren Priorität, die der ID entspricht. Sie speichert eine Liste mit allen aktiven Targetplugins. +\item[Netzwerktask\phantomsection\label{sec:con:networktask}] Die Netzwerktask dient zur Kommunikation über das Netzwerk. Da es hier zu Verzögerungen kommen kann, dürfen diese Aktionen nicht in der Maintask ausgeführt werden. Die Priorität der Netzwerktask liegt unterhalb der Priorität der Maintask. +\item[Logtask\phantomsection\label{sec:con:logtask}] Die Logtask besitzt die niedrigste Priorität der Taskmenge. Ihre Aufgabe besteht im Auslesen des Ringpuffers der Aufzeichnung und dem Kopieren der Daten in einen eigenen Pufferspeicher. Ist dieser Puffer voll, schreibt die Logtask den Puffer in eine Datei auf der Festplatte. Diese erneute Zwischenspeicherung der empfangenen Nachrichten soll die Anzahl langsamer Festplattenzugriffe minimieren. Die Logtask bildet einen Teil der Aufzeichnungskomponente. +\end{description} + +\subsection{Kritische Abschnitte} +Aus dem Taskkonzept lässt sich erkennen, dass die einzelnen Tasks Daten miteinander austauschen. Dieser Austausch erfolgt über gemeinsam verwendete Speicherbereiche. Diese Speicher müssen mittels Mutexen vor gleichzeitigem Zugriff geschützt werden. Ein Programmteil, in dem eine Task auf einen gemeinsamen Speicher zugreift, wird im Folgenden \textit{kritischer Abschnitt} genannt. Grundsätzlich gilt zu beachten, dass kritische Abschnitte möglichst kurz sind. Folgende kritische Abschnitte ergeben sich aus dem bisherigen Konzept: +\begin{description} +\item[Ringpuffer] Die Zugriffe auf den Ringpuffer der Aufzeichnung von der Maintask und der Logtask aus müssen geschützt werden. +\item[Targetpluginliste] Die Zugriffe auf die Liste der aktiven Targetplugins von der Maintask und der Netzwerktask aus müssen geschützt werden. +\item[Aufzeichnungsdatei] Die Zugriffe auf die Aufzeichnungsdatei von der Logtask und der Netzwerktask aus müssen geschützt werden. +\item[Uploadpuffer] Zum Versenden aufgezeichneter Busnachrichten von der \myxc~an CanEasy kommt ein Puffer für diese Nachrichten zum Einsatz. Die Zugriffe auf diesen Puffer erfolgen aus der Logtask und der Netzwerktask. Die Logtask fügt Nachrichten in den Puffer ein und startet die Übertragung, falls noch keine Übertragung stattfindet. + +Findet schon eine Übertragung statt, wird die Schreibhandler-Funktion nach Abschluß einer Übertragung aus dem Kontext der Netzwerktask aufgerufen. Dieser Handler startet die Übertragung der nächsten Nachricht im Puffer. + +Aufgrund dieser Zugriffe aus zwei Tasks muss ein Schutz dieser Ressource erfolgen. +\end{description} + +\subsection{Laufzeitabschätzung der Maintask} +\label{sec:con:wcet} +\index{WCET} +Dieser Abschnitt greift die grundlegenden Gedanken aus Abschnitt \ref{sec:fun:rta} auf und transferiert sie auf das hier vorgestellte Konzept. Die WCET bezeichnet die maximale Ausführungsdauer einer Task im schlechtesten Fall. Der schlechteste Fall bezeichnet hierbei den längsten möglichen Pfad durch den Programmcode der Task, also die maximale Ausführungszeit. Diese ergibt sich beispielsweise bei Schleifen mit einer variablen Anzahl an Durchläufen , dadurch dass die maximal möglichen Schleifendurchläufen angenommen werden. Entlang dieses längsten Pfads addieren sich die benötigten Prozessorzyklen der einzelnen Befehle des Pfads. Ist die Taktfrequenz des Prozessors bekannt lässt sich die benötigte Ausführungszeit berechnen. Allerdings verfälschen Pipelining oder Cache misses dieses Ergebnis. Aus diesem Grund verzichtet diese Arbeit auf eine genaue WCET, sondern beschränkt sich auf eine grobe Aussage zum erwarteten Laufzeitverhalten der hier entworfenen Maintask. Die Betrachtung der WCET innerhalb des Konzepts beschränkt sich auf die Maintask, da nur hier Echtzeitanforderungen bestehen. + +Die WCET der Maintask in einem Zyklus setzt sich aus der Zeit für das Auslesen der Empfangswarteschlange, falls die Aufzeichnungskomponente aktiv ist, und der benötigten Zeitspanne zum Versenden aller Nachrichten in einem Zyklus zusammen. Die Deadline entspricht dem Beginn des nächsten Zyklus, also 1 ms. + +Die benötigte Zeit zum Auslesen der Empfangswarteschlange hängt von der Anzahl der empfangenen Nachrichten seit dem vorherigen Zyklus ab. Diese Anzahl hängt von externen Systemen ab und lässt sich somit nicht allgemeingültig bestimmen. Durch die Verlagerung des Auslesens der Empfangswarteschlange in einen separaten Thread ließe sich dieses Problem umgehen. Der hohe Aufwand eines Threadwechsels, der hier auch noch sehr häufig stattfände, rechtfertigt den Verzicht darauf und die Beschränkung der WCET auf das Versenden von CAN Botschaften. + +Zur Bestimmung der Menge der in einem Zyklus zu versendenden Nachrichten iteriert die Maintask durch eine einfach verkettete Liste von aktiven Targetplugins. Als Datencontainer für die Nachrichten, die in einem Zyklus zu versenden sind, soll eine assoziative Datenstruktur dienen. Diese Datenstruktur basiert auf einem sog. Rot-Schwarz-Baum \phantomsection\label{sec:con:rbt}, engl. red-black-tree. Den Aufbau solcher Datenstrukturen zeigt \cite{springerlink:10.1007/BF00289509}. Der Vorteil einer solchen Datenstruktur liegt in der oberen Schranke $O(\log n)$ für die Operationen \textit{Einfügen}, \textit{Suchen} und \textit{Löschen}. Als Schlüssel für diese Datenstruktur dient die ID der Nachricht. Da die Datenstruktur die enthaltenen Elemente aufsteigend nach dem Schlüssel sortiert, enthält die Datenstruktur nach Abschluss der Iteration die in diesem Zyklus zu versendenden Nachrichten in der Reihenfolge ihrer Priorität. Abschließend iteriert die Maintask über diese Datenstruktur vom Anfang zum Ende, versendet jedes Element und leer die Datenstruktur nach dem Versand aller Nachrichten. + +Somit bleibt festzuhalten, dass innerhalb der Maintask nur Operationen mit linearen oder logarithmischen oberen Schranken stattfinden. Dadurch wird sich die Laufzeit der Maintask auch bei größeren Datenmengen nicht überproportional verschlechtern. +%========================================================================= +\section{Hostseitige Integration} +\label{sec:hostintegration} +\subsection{CanEasy-Plugin} +Diese Komponente stellt die Schnittstelle des Systems zum Benutzer dar. Sie orientiert sich deshalb an den in Abbildung \ref{fig:con:usecases} definierten Anwendungsfällen und stellt für diese entsprechende grafische Steuerelemente bereit: +\begin{itemize} +\item ein Feld zur Eingabe der IP-Adresse der \myxc +\item Schaltflächen zum Herstellen und Trennen der Netzwerkverbindung zur \myxc +\item eine Schaltfläche zum Abfragen der Hardware-Schnittstellen der \myxc +\item eine Auswahlliste mit den Schnittstellen der \myxc +\item eine Auswahlliste mit Busobjekten der Datenbasis +\item Schaltflächen zu Verknüpfen oder Trennen einer Busobjekt-Schnittstellen-Beziehung +\item eine Auswahlliste mit verknüpften Busobjekten +\item Schaltflächen vom Starten und Stoppen eines verknüpften Busobjekts +\item eine Schaltfläche zum Beenden der targetseitigen Komponenten +\item eine Checkbox, um ein Targetplugin automatisch beim Start der targetseitigen Komponenten zu starten +\item eine Schaltfläche zum Abrufen der Liste der verfügbaren Aufzeichnungsdateien auf der \myxc +\item eine Auswahlliste mit den verfügbaren Aufzeichnungsdateien +\item eine Schaltfläche um die ausgewählte Aufzeichnung der \myxc~zu übertragen +\end{itemize} +Zur Kommunikation mit der \myxc~über das Netzwerk startet das CanEasy-Plugin einen separaten Thread. +\subsection{Code-Generierung} +Die Generierung der Quellcode-Dateien erfolgt in Form von Zeichenketten im RAM. Nach Abschluss der Generierung werden diese Zeichenketten in einer Datei auf der Festplatte gespeichert. +\subsection{Anzeige der Aufzeichnung} +Die Anzeige der Aufzeichnung erfolgt in mehreren Schritten +\begin{enumerate} +\item Auflistung der verfügbaren Aufzeichnungsdateien auf der \myxc. +\item Auswahl einer Aufzeichnungsdatei durch den Benutzer. +\item Anforderung der ausgewählten Aufzeichnungsdatei von der \myxc. Im Falle der aktuell verwendeten Aufzeichnungsdatei, leert die targetseitige Aufzeichnungskomponente zuerst ihre Puffer und schreibt die Datei vollständig auf die Festplatte. Sie rotiert nun die Aufzeichnungsdatei, so dass ab diesem Zeitpunkt eine neue Aufzeichnung erfasst wird. Die \myxc~gibt den Namen der rotierten Datei mit der bis zu diesem Zeitpunkt erfassten Aufzeichnung über das Netzwerk zurück. +\item Das CanEasy-Plugin lädt die Datei mit dem empfangenen Namen per FTP von der \myxc. +\item Das CanEasy-Plugin konvertiert die heruntergeladene Datei aus dem Binärformat in ein Textformat, für das CanEasy Konvertierungsfunktionalität in das eigene Aufzeichnungsformat besitzt. +\item Das CanEasy-Plugin startet die CanEasy-eigenen Mechanismen zur Konvertierung der Textdatei in das CanEasy-eigene Aufzeichnungsformat. Dabei muss der Benutzer manuell die Hardware-Schnittstellen den Bussen der Datenbasis zuordnen. +\item Der Benutzer lädt die konvertierte Aufzeichnungsdatei. +\end{enumerate} +\subsection{Aktualisierung von Nachrichtendaten} +CanEasy bietet dem Benutzer verschiedene Möglichkeiten zur Änderung der Datenbytes einer Nachricht über die grafische Oberfläche. Bei einer solchen Änderung von Datenbytes einer Nachricht, die auf dem Target simuliert wird, sollen diese Änderungen auf dem Target übernommen werden. +Dazu versendet die hostseitige Integrationskomponente eine entsprechende Nachricht über das Netzwerk. Diese Nachricht enthält die Nummer der betreffenden Hardware-Schnittstelle des betroffenen Busses, die ID der Nachricht und die geänderten Werte der Datenbytes der Nachricht. +%========================================================================= +\section{Verifikation} +\label{sec:con:verification} +Das Gesamtkonzept bezieht eine Möglichkeit zur Verifikation der konzeptionellen Entscheidungen und Implementierung des Prototyps mit ein. Dies erst ermöglicht eine Bewertung der Messergebnisse in Kapitel \ref{chp:results}. + +Als technische Basis für die Verifikation dient das \nameref{sec:con:at32uc3c} mit entsprechender Software. Diese Software besteht aus Basismodulen zum Betrieb des \nameref{sec:con:at32uc3c} und für den Zugriff auf die Hardware, die von der Schleissheimer GmbH für diese Arbeit zur Verfügung gestellt wurden, und aus einem Modul, das die Verifikationsapplikation darstellt. + +Das Ziel der Verifikation besteht darin, CAN-Botschaften in einem möglichst genauen zeitlichen Kontext zu senden. Zur Beurteilung einer zeitlichen Empfangsgenauigkeit muss zuerst eine zeitliche Sendegenauigkeit sichergestellt werden. Dies leistet die Verifikation mit dem \nameref{sec:con:at32uc3c}, da es immer nur einen von zwei möglichen Sendemodi ausführt. D. h. hier findet keine parallele Abarbeitung mehrerer Tasks statt, die sich gegenseitig beeinflussen können. + +Die Verifikation benötigt zwei Sendemodi +\begin{description} + \item[Cycle] Hier verschickt das \nameref{sec:con:at32uc3c} 100 Nachrichten in einem Interval von 100 ms basierend auf einem Hardware-Timer. Der Versand einer Nachricht erfolgt dabei direkt in der ISR\index{ISR} des Timer-Interrupts. + \item[Burst] Hier verschickt das \nameref{sec:con:at32uc3c} 65535 Nachrichten so schnell wie möglich. Bei jedem Versenden wird ein 16-Bit Zähler inkrementiert und als Signal in der Nachricht verschickt. Dabei kommt aktives Polling auf den Sendestatus zum Einsatz, um die Interrupt-Latenz zu sparen. Sobald die CAN-Schnittstelle eine Nachricht verschickt hat, wird der Versand der nächsten gestartet. +\end{description} +Die Auswahl des Sendemodus erfolgt über die beiden Taster des \nameref{sec:con:at32uc3c}, wobei jeder Taster einen Sendemodus repräsentiert. Jeweils eine LED zeigt die Aktivität eines Sendemodus an. Solange ein Sendemodus aktiv ist, werden weitere Tastenereignisse ignoriert. Dieses Konzept widerspricht zwar vielen Designprinzipien, erzeugt aber ein zeitlich möglichst genaues Verhalten des Systems, was in diesem Fall die Verstöße rechtfertigt.
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/conclusion.tex b/Master/Masterarbeit/thesis/tex/conclusion.tex new file mode 100644 index 0000000..8c28957 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/conclusion.tex @@ -0,0 +1,23 @@ +\renewcommand{\raggeddictumtext}{\centering}
+\setchapterpreamble[u]{%
+ \dictum[John Milton Cage Jr.]{
+ I can't understand why people are frightened of new ideas. I'm frightened of the old ones.
+ }\bigskip}
+\chapter{Zusammenfassung und Ausblick}
+\label{chp:summarization}
+\renewcommand{\raggeddictumtext}{\raggedleft}
+Abschließend fasst dieses Kapitel zusammen, welche Punkte mit dieser Arbeit erreicht wurden und zeigt verschiedene Themen für nachfolgende Arbeiten, ausgehend von dieser, auf.
+
+Diese Arbeit präsentiert ein Konzept zur Integration von CanEasy und der \myxc--Hardware. Dieses Konzept ermöglicht die Aufzeichnung und den Versand von Botschaften auf dem CAN--Bus mithilfe der \myxc. CanEasy bildet dabei die Schnittstelle zwischen dem Anwender und der \myxc~zur Definition und Auswertung von CAN-Botschaften.
+
+Der implementierte Prototyp erfüllt alle Anforderungen, die an diese Arbeit gestellt wurden und belegt somit die Tragfähigkeit des Konzepts. Die Ergebnis zeigen, dass der Prototyp auch unter hoher Systemlast alle Anforderungen an die Echtzeitfähigkeit erfüllt.
+
+Darüber hinaus verwendet diese Arbeit einen bestehenden Schedulability Test für den CAN--Bus, um damit eine Konfiguration von CAN-Botschaften her zu leiten, die den Bus möglichst hoch auslastet. Die theoretische Berechnung dieses Schedulability Tests lässt diese Konfiguration zu und der praktische Test zeigt, dass der Prototyp auf der \myxc~auch diese Konfiguration bewältigen kann.
+
+Für nachfolgende Arbeiten bietet es sich an, weitere Hardware-Schnittstellen der \myxc~zu integrieren. Einen weiteren wichtigen Punkt im Hinblick auf die Praxis stellt die Implementierung des hier präsentierten Schedulabilty Tests dar. Dieser würde es ermöglichen, den Anwender schon bei der Definition einer nicht lauffähigen Nachrichtenkonfiguration zu informieren. Für nachfolgend integrierte Bus-Systeme könnten ebenfalls Schedulability Tests erarbeitet werden.
+
+Weiterhin verfügt das hier vorgestellte Konzept über keine Authentifizierungs- oder Autorisierungsmechanismen. In diesen Themenbereich fällt auch die Einbeziehung der \myxc--Integration in das Lizenzierungsmodell von CanEasy.
+
+Ein Ansatz für nachfolgende Grundlagenarbeit besteht in der Analyse der Eignung von binären Artefakten, wie den hier vorgestellten Target--Plugins, als Daten- und Methodentransferobjekte im Allgemeinen. Das aktuelle Modethema \textit{Cloud-Computing} bietet hierfür Anknüpfungspunkte. Mittels eines Interface-Mechanismus, ähnlich dem hier vorgestellten, wäre es möglich, in einer Cloud beliebigen Code auf passenden Cloud-Knoten auszuführen. Dies öffnet im Gegenzug große Sicherheitslücken. Auch die Definition einer gesicherten Umgebung für beliebige binäre Artefakte wäre hierfür grundlegend zu konzeptionieren.
+
+Die Verwendung der Bibliothek dl zur Verwaltung von shared objects auf dem Target stellt aufgrund der Verwendung von dynamischem Speicher einen Schwachpunkt dar. Für nachfolgende Arbeiten ergibt sich daraus die Frage, wie der Zugriff auf shared objects ohne Allokation von dynamischem Speicher erfolgen kann.
diff --git a/Master/Masterarbeit/thesis/tex/fundamentals.tex b/Master/Masterarbeit/thesis/tex/fundamentals.tex new file mode 100644 index 0000000..f5d19ec --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/fundamentals.tex @@ -0,0 +1,323 @@ +\setchapterpreamble[u]{% + \dictum[Johann Wolfgang von Goethe]{Der echte Schüler lernt aus dem Bekannten das Unbekannte entwickeln und nähert sich dem Meister.}\bigskip} +\chapter{Grundlagen} +\label{chp:fundamentals} +Dieses Kapitel beschäftigt sich mit den Grundlagen, auf denen das in Kapitel \ref{chp:concept} vorgestellte Konzept basiert. +%=============================================================================================== +\section{Multitasking} +In diesem Abschnitt erfolgt eine theoretische Betrachtung eines Allzweckbetriebssystems (engl. General-Purpose) mit Multitasking-Fähigkeit. Die Betrachtung erfolgt unabhängig von einem speziellen Betriebssystem, da die vorgestellten Konzepte in verschiedenen Systemen in ähnlicher Weise vorhanden sind. + +Der Begriff \textit{Task}\index{Task} bezeichnet hierbei eine abstrakte Ablaufeinheit oder ein abstraktes Programm. In dieser Arbeit steht Task für beliebige konkrete Implementierungen in Betriebssystemen wie Prozesse oder Threads. Er ermöglicht somit eine allgemeingültige Betrachtung der Konzepte. + +Multitasking bezeichnet hierbei die Fähigkeit eines Betriebssystems mehrere Aufgaben auf einer oder mehreren CPUs quasi-parallel auszuführen. Entscheidend ist hierbei der Begriff der Quasi-Parallelität. In einem System kann zu einem Zeitpunkt nur eine Task pro Prozessor ausgeführt werden. D. h. auf einem System mit nur einem CPU-Kern können zwei Tasks nicht gleichzeitig arbeiten. Um es dem Benutzer trotzdem zu ermöglichen, mit mehreren Programmen \textit{gleichzeitig} zu arbeiten, verfügen gängige Allzweckbetriebssysteme über Mutlitasking-Mechanismen, die den Anschein einer parallelen Verarbeitung erwecken. Diese Mechanismen sorgen dafür, dass alle Tasks in einer fairen Verteilung die CPU verwenden dürfen. Dabei erfolgt diese Zuteilung bzw. Entzug der CPU sowohl für den Benutzer als auch für die Tasks transparent durch das Betriebssystem. + +Der Begriff Allzweckbetriebssystem charakterisiert hierbei ein Betriebssystem, auf dem verschiedene Tasks arbeiten können, die unterschiedliche Aufgaben erledigen. Das Betriebssystem verfügt im voraus über keine Kenntnis darüber, zu welchem Zeitpunkt welche Task arbeiten soll. Es versucht dabei, jeder Task gleich viel Rechenzeit auf dem Prozessor zukommen zu lassen. Diese Betrachtung bleibt auch für Mehrprozessorsysteme gültig, da hier bei abstrakter Betrachtung dem Betriebssystem lediglich mehrere Prozessoren zur Verfügung stehen, auf die es Tasks verteilen kann. +%=============================================================================================== +\subsection{Taskzustände} +Aus dem vorigen Abschnitt ergeben sich schon zwei mögliche Zustände, die eine Task annehmen kann, arbeitend oder wartend. Für die Betrachtungen in dieser Arbeit ist noch ein dritter Zustand, blockiert, von Bedeutung. Hierbei hat sich die Verwendung der englischen Bezeichnungen eingebürgert. +\begin{description} +\item [Running] Genau eine Task pro CPU befindet sich im Zustand Running. Sie führt gerade ihren Programmcode auf der CPU aus. +\item [Ready] Eine Task in diesem Zustand ist bereit ihre Anweisungen auf der CPU auszuführen und wartet auf Zuteilung durch das Betriebssystem +\item [Blocked] In diesem Zustand wartet eine Task auf ein externes Ereignis, z. B. der Abschluss einer lang dauernden IO-Operation auf einem Peripheriegerät oder die Freigabe einer Ressource wie z. B. eines Mutex durch eine andere Task. Die Erläuterung des Begriffs Mutex erfolgt später in diesem Kapitel. +\end{description} +%=============================================================================================== +\subsection{Taskscheduler} +Eine Komponente des Betriebssystems, der Task-Scheduler, entscheidet, welche Task als nächste ausgeführt wird. Zum Treffen dieser Entscheidung existieren vielfältige Algorithmen. Grundsätzlich lassen sich dabei kooperative und preemptive Verfahren unterscheiden. +%=============================================================================================== +\subsubsection*{Kooperatives Scheduling} +Diese Verfahren folgen dem Ansatz \textit{run-to-completion}. Eine laufende Task bleibt solange auf der CPU aktiv, bis sie sich selbst beendet, also all ihre Operation ausgeführt hat, oder die CPU selbst mittels eines Betriebssystemaufrufs freigibt. Derartige Verfahren sind vergleichsweise einfach zu implementieren. Allerdings finden sie heute nur noch in bestimmten Nischen Verwendung. Ihr Hauptnachteil besteht darin, dass eine Task durch intensive CPU-Nutzung andere Tasks an deren Ausführung hindern kann. +%=============================================================================================== +\subsubsection*{Preemptives Scheduling} +Der Hauptunterschied zwischen preemptiven Verfahren und kooperativen liegt, dass bei preemptiven der Scheduler die aktuelle Task jederzeit von der CPU verdrängen und eine andere Task zur Ausführung bringen kann. Dazu muss der Scheduler regelmäßig aufgerufen werden, obwohl er selbst zu diesem Zeitpunkt nicht auf der CPU läuft. Um dieses Problem zu lösen, verwenden die meisten Systeme einen zyklischen Hardwaretimer. Ist der Timer abgelaufen, führt der Prozessor die entsprechende ISR aus. Diese ISR ist Teil des Betriebssystems und aktiviert den Scheduler. Dieser entscheidet nun, ob die gerade aktive Task weiter ausgeführt wird oder eine andere zur Ausführung kommt. Bei den meisten Allzweckbetriebssystemen steht jeder Tasks ein gewisses Zeitkontingent, auch \textit{quantum} nach \cite{Tan92} oder Zeitscheibe genannt, für die CPU-Nutzung zur Verfügung. + +Im einfachsten Fall verfügt der Scheduler über eine Liste der Tasks, die bereit zur Ausführung sind. Bei jedem zyklischen Aufruf des Schedulers überprüft dieser, ob die aktuell laufende Task ihr quantum erreicht hat. Falls sie es nicht erreicht hat, bleibt sie die laufende Task des Systems. Falls sie es erreicht hat, führt der Scheduler einen Wechsel der aktuell laufenden Task durch. Dazu speichert er den Kontext der aktuell laufenden Task und fügt diese an das Ende der Taskliste an. Jetzt stellt er den Kontext der vordersten Task der Taskliste wieder her und bringt diese als aktuell laufende Task zur Ausführung. Dieses Verfahren trägt auch die Bezeichnung \textit{Round-Robin}-Scheduling. + +Mittels der Erweiterung dieses Verfahrens auf mehrere Listen mit bereiten Tasks lässt sich dieses Verfahren um das Konzept der Priorität erweitern. Dazu durchläuft der Scheduler die Bereitlisten in einer festen Reihenfolge, die Liste mit den Tasks der höchsten Priorität zuerst und die Liste der Tasks mit den niedrigsten Prioritäten zuletzt. Daraus ergeben sich unterschiedliche Prioritätsklassen für Tasks, je nachdem in welcher Bereitliste sie sich befinden. Auf der Suche nach der nächsten aktiven Task durchläuft der Scheduler zuerst die höchste Prioritätsklasse. Die erste bereite Task dieser Klasse wird die aktive. Befindet sich keine bereite Task in dieser Liste, durchläuft er die Liste mit der nächst niedrigeren Priorität. Befindet sich auch in dieser Liste keine bereite Task, durchsucht er die nächst niedrigere. So durchsucht der Scheduler alle Prioritätsklassen bis er eine bereite Task findet. In der niedrigsten Prioritätsklasse befindet sich bei den meisten Betriebssystemen eine Task, die immer bereit ist, die sog. Idle-Task. Diese wird nur ausgeführt, wenn keine andere Task bereit ist. + +Die meisten Betriebssystem stellen Systemaufrufe bereit, mit denen der Programmierer festlegen kann, zu welchen Prioritätsklassen bestimmte Tasks gehören. + +Sind nun Tasks mit hoher Priorität oft bereit und nutzen die CPU sehr intensiv, entsteht daraus der Effekt, dass Tasks niedriger Priorität nicht mehr zum Zuge kommen. Für ein Allzweckbetriebssystem ist dieser Effekt unerwünscht, weshalb auch hier vielfältige Verfahren zum Einsatz kommen, um diesen zu verhindern. Hierbei kommen oftmals statistische oder Zufallsverfahren zum Einsatz, die dafür sorgen sollen, dass gelegentlich auch Tasks niedriger Priorität laufen, obwohl Tasks höherer Priorität bereit sind. Dies führt zu einem nicht deterministischen Verhalten des System. Wie der nächste Abschnitt veranschaulicht, stellt dieser Nichtdeterminismus für Systeme, bei denen es auf zeitlich präzises Verhalten der Tasks ankommt, ein Problem dar. +%=============================================================================================== +\section{Real-Time Linux} +\label{sec:realtimelinux} +\index{Real-Time Linux} +Dieser Abschnitt befasst sich mit der Eignung von Linux als Echtzeitbetriebssystem. Dazu muss vorab der Begriff \textit{Echtzeitsystem} im wissenschaftlichen Kontext definiert werden. Danach folgt eine Liste von Anforderungen, die ein Echtzeitbetriebssystem nach aktuellem Stand der Wissenschaft erfüllen muss. Abschließend werden zwei Ansätze vorgestellt, die Linux befähigen sollen, möglichst viele dieser Anforderungen zu erfüllen, die der Standard Linux Kernel als Allzweckkernel (engl. General-Purpose Kernel) bzw. andere Allzweckbetriebssysteme nicht erfüllen können. +%=============================================================================================== +\subsection{Echtzeitsysteme} +Generell unterscheidet die Literatur zwei Arten von Echtzeitsystem, weiche Echtzeitsysteme (engl. Soft Real-Time Systems) und harte Echtzeitsysteme (engl. Hard Real-Time Systems) \cite{But11}, \cite{Mantegazza:2000:RRT:348554.348564}. Weiche Echtzeitsysteme zeichnen sich dadurch aus, dass Tasks zum größten Teil nach dem vorgegebenen Plan ausgeführt werden. D. h. alle Tasks halten im Durchschnitt ihre Deadlines ein. Der Begriff \textit{Deadline} bezeichnet hierbei einen Zeitpunkt, zu dem eine Task erfolgreich abgeschlossen sein muss, um die korrekte Funktion des Gesamtsystems zu gewährleisten. Bei weichen Echtzeitsystemen stellt ein einmaliges Verpassen einer Deadline kein kritisches Ereignis dar. Als Beispiel hierfür dient die Wiedergabe von Videodaten. Der gelegentliche Verlust eines Frames im Datenstrom kann mittels Interpolation zwischen dem vorherigen und nachfolgenden Frame kompensiert werden. Solange die Verluste ein gewisses Maß nicht überschreiten, bleibt die Wiedergabe auf einem akzeptablen Niveau. + +Im Gegensatz dazu stehen harte Echtzeitsysteme, bei denen das Überschreiten der Deadline einer Task, zu katastrophalen Folgen führen kann. Zu harten Echtzeitsystemen zählen beispielsweise Steuerungen in nuklearen Anlagen, Flugzeugen oder medizinischen Anlagen. + +Daraus folgt, dass sich die Korrektheit eines Echtzeitsystems aus der Korrektheit der Berechnungen und der Korrektheit in der Zeit, in der die Berechnungen erfolgen, zusammensetzt. Die Silbe \textit{Echt--} besagt hierbei, dass das System die gleiche Zeitbasis verwendet wie seine Umwelt, mit der es interagiert. +%=============================================================================================== +\subsection{Forderungen an Echtzeitsysteme} +\label{sec:fun:rt_req} +\cite{But11} stellt folgende Anforderungen an Echtzeitsysteme +\begin{description} +\item[Rechtzeitigkeit] (engl. timeliness) bezeichnet die o. g. Einbeziehung der Zeitdomäne in die Definition von Korrektheit für ein Echtzeitsystem +\item[Vorhersagbarkeit] Das zeitliche Verhalten der Tasks eines Systems muss aus der Definition der Tasks vorhersagbar sein. +\item[Effizienz] Da die meisten Echtzeitsysteme auf Hardware mit eingeschränkten Ressourcen bzgl. Speicher und Rechenleistung basieren, ist ein effizienter Umgang mit diesen Ressourcen notwendig, um die gewünschte Verarbeitungsgeschwindigkeit zu erzielen. +\item [Robustheit] Auch unter Spitzenlast muss ein Echtzeitsystem noch funktionieren. Ggf. muss eine spezielle Behandlung von Überlastsituationen vorgesehen werden. +\item [Wartbarkeit] Eine modulare Architektur soll die Anpassung eines Echtzeitsystems an geänderte Vorgaben bzw. Anforderungen erleichtern. +\end{description} +Zur Erfüllung dieser Anforderung tragen die verwendete Hardware, der Kernel des Betriebssystems sowie die Echtzeitanwendung selbst bei. Dabei existieren auf allen drei vorgenannten Ebenen Faktoren, die der Erfüllung dieser Forderungen entgegen wirken. +Die nachfolgende Liste benennt diese Faktoren und beschreibt nach \cite{But11}, welche negativen Einflüsse sie auf das Echtzeitverhalten des Systems haben, und skizziert Ansätze zu deren Vermeidung. +\begin{description} +\item[DMA] \index{DMA} Hierbei handelt es sich um ein Verfahren, das die Gesamtperformance eines Systems verbessern soll. Dabei erhält Hardware außerhalb des Prozessors direkten Zugriff auf den Hauptspeicher, abgekürzt RAM\index{RAM}. Dadurch soll der Prozessor nicht mit dem Datenaustausch zwischen Gerät und Speicher belastet werden. In den meisten Fällen verwendet DMA eine Methode namens \textit{cycle stealing} für den Transfer von Daten. Da der Hauptspeicher nur von einem Gerät, entweder dem Prozessor oder dem externen Gerät, zu einem Zeitpunkt angesteuert werden kann, sperrt diese Methode für eine bestimmte Anzahl von Speicherzyklen den Zugriff durch den Prozessor. Innerhalb dieser Sperre greift das externe Gerät auf den Speicher zu und der Prozessor muss ggf. warten, bis der Speicherzugriff beendet ist. Da sich nicht vorhersagen lässt, wann ein externes Gerät DMA-Zugriffe durchführt und damit den Prozessor blockiert, trägt diese Methode zur Nichtvorhersagbarkeit eines Systems bei. + +Abhilfe schafft hier nur die Verwendung einer anderen Methode für den DMA-Zugriff, also die Verwendung einer anderen Hardware-Architektur. + +\item[Cache\phantomsection\label{sec:fund:cache}] \index{Cache} Auch hierbei handelt es sich um ein Hardwareelement, das die Ausführungsgeschwindigkeit des Gesamtsystems verbessern soll. Es bezeichnet einen im Vergleich zum RAM kleinen und schnellen Speicher zwischen Prozessor und RAM. Er bedient zur Zwischenspeicherung von Daten, um kürzere Zugriffszeiten auf diese Daten zu ermöglichen. Da der Cache wesentlich kleiner ist, als das RAM, kann er nicht alle Daten enthalten. Benötigt der Prozessor ein Datum, das nicht im Cache vorhanden ist, kommt es zu einem sog. \textit{cache miss}, auch \textit{cache fault} genannt. Dies verursacht eine Verzögerung, da das Datum erst aus dem RAM in den Cache geladen wird und dann in den Prozessor. Da dieses Verfahren transparent ist, lässt sich nicht feststellen oder vorhersagen, wann cache faults auftreten. Auch wenn statistische Analysen zeigen, dass die meisten Speicherzugriffe eines Programms nur einen kleinen Teil des Speichers betreffen, lässt sich der Einfluss von cache faults nur schwer bestimmen. Weiterhin führen häufige Preemptionen zu cache faults, da plötzlich auf andere Speicherbereiche zugegriffen wird, die mit geringerer Wahrscheinlichkeit im Cache vorliegen. \cite{But11} zitiert eine Ausarbeitung nach der in einem speziellen Fall die WCET durch Cache-Einflüsse im preemptiven Modus um 33\% gegenüber dem nicht-preemptiven Modus verschlechtert. + +\item[Interrupts] Auch Interrupts durch externe Geräte können unvorhersagbare Verzögerungen in einem System auslösen. In herkömmlichen Systemen unterbricht ein Interrupt die laufende Task und führt die zugehörige ISR\index{ISR} des Interrupts aus, in der alle nötigen Operationen ausgeführt werden. Dies ermöglicht die Kapselung der Details des Geräts innerhalb eines sog. Treibers. In einem Echtzeitsystem kann die Abarbeitung einer Task aber wichtiger sein als die Abarbeitung einer ISR. Da sich die Häufigkeit von Interrupts nicht vorhersagen lässt und ISRs eine höhere Priorität als Tasks besitzen, führt dies zu einem nicht vorhersagbaren Verhalten der Tasks. \cite{But11} nennt folgende drei mögliche Lösungsansätze, um diese Situation zu verbessern: +\begin{enumerate} +\item Deaktivierung aller externen Interrupts und direkter Zugriff auf die Hardware durch die Tasks. Dieses Verfahren stellt zwar die Vorhersagbarkeit des Verhaltens der Tasks sicher, bringt aber auch gravierende Nachteile mit sich. Der Zugriff auf die Hardware erfolgt im Polling-Betrieb und verbraucht damit sehr viel Rechenzeit. Weiterhin verlagern sich die Details des Hardwarezugriffs direkt in die Taskimplementierung bzw. eine separate Bibliothek. + +\item Deaktivierung aller externen Interrupts mit Ausnahme eines Timer-Interrupts. Mithilfe dieses Timers kommuniziert der Kernel in zyklischen Tasks mit der Hardware. Auch hier lässt sich der Aufwand für die Kommunikation vorher bestimmen und in die Analysen mit einbeziehen. Allerdings verbraucht auch dieser Ansatz viel Rechenzeit mit Polling. + +\item \label{sec:fun:rtintc} Aktivierung aller externen Interrupts und Minimierung der ISRs. Dabei löst die ISR eines Interrupts nur ein entsprechendes internes Event aus, das von einer separaten Task abgearbeitet wird. Diese Task unterliegt dem normalen Scheduling und besitzt eine Priotität. Somit lässt sich durch entsprechende Anpassung der Priorität das Verhalten der Interrupt-Abarbeitung in das gewünschte Verhalten des Systems integrieren und vorhersagen. +\end{enumerate} + +\item[Systemaufrufe] Auch Aufrufe von Kernel-Routinen durch Tasks tragen zur Ausführungszeit der Tasks bei. Deshalb muss das zeitliche Verhalten von Kernel-Routinen bekannt sein, um die WCET der Tasks bestimmen zu können. Ebenso verzögert jeder nicht-preemptive Teil des Kernel evtl. die Aktivierung oder Ausführung einer kritischen Task. Demnach sollte jede Kernel-Routine preemptiv sein. + +\item[Synchronisation] Da herkömmliche Semaphoren-Konzepte zu dem Problem der Prioritätsinvertierung führen können, was für Echtzeitsysteme inakzeptabel ist, fordert \cite{But11} auch hierfür eine Lösung. Der separate Abschnitt \nameref{sec:fund:pip} widmet sich der Beschreibung des Problems und einer möglichen Lösung. + +\item[Speicherverwaltung\phantomsection\label{sec:fund:swap}] Besonders negativen Einfluss auf die Vorhersagbarkeit hat das Konzept des Auslagerns von RAM auf Festplattenspeicher, engl. swapping oder paging. Auch hier können zu beliebigen Zeitpunkte sehr lange Verzögerungen durch Zugriffe auf die Festplatte entstehen, die die Abarbeitung kritischer Tasks verzögern. Diese Funktionalität stellt das Betriebssystem bereit, deshalb muss ein Echtzeitbetriebssystem Möglichkeiten zur Steuerung oder Unterdrückung von swapping bieten. + +\item[Programmierung] Die hohe Komplexität der Anwendungen erfordert in der Regel die Verwendung einer Programmiersprache. Neben speziellen Programmiersprachen für Echtzeitsysteme finden auch herkömmliche Programmiersprachen Verwendung. Da diese keine Möglichkeiten zur expliziten Formulierung des zeitlichen Verhaltens bieten, muss sich der Programmierer hier Einschränkungen unterwerfen, die Echtzeit-Programmiersprachen erzwingen. Diese Einschränkungen umfassen folgende Punkte: +\begin{description} +\item[Dynamischen Speicher] Auf die Verwendung von dynamischen Zeigern, Objekten, Arrays oder Zeichenketten (engl. strings) ist zu verzichten. +\item[Rekursion] Auch auf rekursive Aufrufe ist zu verzichten +\item[Schleifen] Echtzeit-Programmiersprachen zwingen den Programmierer zu einer Angaben der maximalen Anzahl von Durchläufen bei allen Schleifenkonstrukten. Ohne diese implizite Angabe muss der Programmierer auf die maximale Anzahl der Schleifendurchläufe achten. +\end{description} + +\end{description} +Die vorgenannten Faktoren erschweren die WCET-Analyse\index{WCET} eines Programms. Darunter versteht man die Berechnung der Zeitspanne, die ein System im ungünstigsten Fall für die Abarbeitung eines Tasks oder bestimmten Programmteils benötigt. + +An dieser Stelle folgt die Betrachtung von zwei alternativen Ansätzen, um die Echtzeitfähigkeit von Linux zu verbessern. Die Betrachtung orientiert sich an der vorhergehenden Liste zur Vermeidung negativer Einflüsse auf das Echtzeitverhalten eines Systems. +%=============================================================================================== +\subsection{RTAI} +\label{sec:fun:rtai} +\index{RTAI} +Dieser Abschnitt beschreibt RTAI, einen Ansatz, der das Betriebssystem Linux für harte Echtzeitaufgaben geeignet machen soll. Die Grundidee dabei ist, dass Linux selbst die Task mit niedrigster Priorität eines kleinen Echtzeitbetriebssystems darstellt. Linux wird dabei nur ausgeführt, wenn keine anderen Echtzeittasks mit höherer Priorität ausgeführt werden. Zur Kommunikation mit dem restlichen System ergänzt RTAI den Linux Kernel um eine Hardwareabstraktionsschicht. Unter RTAI werden Echtzeittasks als Kernelmodule implementiert und geladen. +\cite{Mit07} vergleicht die Leistungsfähigkeit von RTAI mit der von \nameref{sec:fun:PREEMPTRT} im Hinblick auf ihre jeweilige Eignung für harte Echtzeitaufgaben. Die Vorteil von RTAI liegt in kürzeren Verzögerungen und der Möglichkeit auch ausserhalb des Kernels direkt auf Interrupts zuzugreifen. Danach eignen sich beide Ansätze für die Lösung der Aufgabenstellung dieser Arbeit. RTAI findet jedoch in der weiteren Arbeit keine Beachtung mehr, da das verwendete System auf der nachfolgend vorgestellten Alternative \nameref{sec:fun:PREEMPTRT} basiert. +%=============================================================================================== +\subsection{PREEMPT\_RT} +\label{sec:fun:PREEMPTRT} +\index{PREEMPT\_RT} +Dieser Abschnitt beschreibt PREEMPT\_RT, einen Patch, der den Linux Kernel selbst echtzeitfähig macht. Die Entwicklungen im Rahmen von PREEMPT\_RT umfassen u. a. Echtzeitscheduler mit festen Prioritäten, Prioritätsvererbung und Veränderungen des Kernels, die ihn fast an jeder Stelle unterbrechbar machen. Außerdem erweitert PREEMPT\_RT den Linux Kernel um hochauflösende Timer. Eine detaillierte Beschreibung der Entwicklung von PREEMPT\_RT über die Zeit lässt sich in \cite{Dietrich_theevolution} nachlesen. Einer der wichtigsten Punkte von PREEMPT\_RT stellt dabei die Ersetzung sog. spinlocks durch Mutexe dar. Spinlocks verwenden Polling und sind damit nicht unterbrechbar. Diese Ersetzung ermöglicht die Einrichtung vieler kleiner kritischer Abschnitte im Kernel anstatt des sog. \textit{Big Kernel Lock (BKL)}. Weiterhin ermöglichen Kernel-Mutexe die Verwendung von separaten Tasks zur Interruptbehandlung wie von \cite{But11} in Alternative \ref{sec:fun:rtintc} zu echtzeitfähiger Interruptbehandlung vorgeschlagen. Diese Interrupt-Tasks nehmen am Scheduling teil und wichtige Echtzeittask können diese unterbrechen. Die hochauflösenden Timer sind mittlerweile fester Bestandteil des Linux Standardkernels. + +So erfüllt PREEMPT\_RT wichtige Anforderungen an Echtzeitsysteme auf konzeptioneller Ebene bereits im Kernel und vermeidet so eine zusätzliche Abstraktionsschicht. Alle Vorteile von PREEMPT\_RT sind über POSIX-kompatible Schnittstellen verwendbar, was ebenfalls der Forderung nach Wartbarkeit entgegenkommt. +%=============================================================================================== +\section{Prioritätsvererbung} +\label{sec:fund:pip} +Das Konzept der Prioritätsvererbung dient zur Lösung des Problems der Prioritätsinvertierung ,engl. priority inversion. Dieses Problem beschreibt ein Phänomen, bei dem eine Task mit höherer Priorität durch eine Tasks mit geringerer Priorität verzögert wird. Dies kann zur Nichteinhaltung der Deadline der Task mit höherer Priorität führen. Dies wiederum kann zur Fehlfunktion des Gesamtsystems führen. Dass dieses Phänomen in der Realität vorkommt, belegt \cite{Ree97}. Dort wird erläutert, wie eine Prioritätsinvertierung die Pathfinder Mission auf dem Mars behinderte. + +Eine zentrale Rolle bei diesem Problem spielen geteilte Ressourcen (engl. shared ressources), auf die mehrere Tasks zugreifen. Um hier die Konsistenz der Daten zu gewährleisten, muss der Zugriff auf die Ressource in sequentieller Reihenfolge ablaufen. Zur Synchronisation der Tasks beim Zugriff auf geteilte Ressourcen dienen beispielsweise sog. Semaphoren oder Mutexe, die vom Betriebssystem bereit gestellt werden. Der Zeitraum des Zugriffs einer Task auf die geteilte Ressource trägt die Bezeichnung \textit{kritischer Abschnitt} (engl. critical section). Die Synchronisationsmechanismen sollen sicherstellen, dass sich immer nur eine Task innerhalb eines kritischen Abschnitts befindet. Befindet sich eine Task innerhalb eines kritischen Abschnitts, müssen weitere Tasks, die den kritischen Abschnitt betreten wollen, warten bis die erste Task den kritischen Abschnitt verlässt. Beim Verlassen entsperrt die Task den kritischen Abschnitt. + +Allgemein lässt sich die Entstehung einer Prioritätsinvertierung wie folgt beschreiben: +\begin{enumerate} +\item Eine Task L mit niedriger Priorität ist aktiv, betritt einen kritischen Abschnitt C und sperrt ihn. +\item Eine Task H mit hoher Priorität wird aktiviert und verdrängt Task L. Task H möchte den kritischen Abschnitt C betreten, der von L gesperrt wurde. Task H wird aufgrund der Sperre von C blockiert. +\item Eine Task M mit mittlerer Priorität wird aktiviert und verhindert, dass Task L die Sperre von C freigeben kann. Task M bleibt über die Deadline von H hinaus aktiv und verursacht so die Verletzung der Deadline einer Task mit höherer Priorität. Somit wurden die Prioritäten von H und M invertiert. +\end{enumerate} +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{prio_inv.eps} +\end{minipage} +\caption{Prioritätsinvertierung} +\label{fig:fun:prioinv} +\end{figure} +Die Abbildung \ref{fig:fun:prioinv} veranschaulicht die Prioritätsinvertierung in ihrem zeitlichen Verlauf. + +Eine Lösung für dieses Problem besteht in der Prioritätsvererbung, engl. priority inheritance, nach \cite{SRL90}. Danach erbt eine Task, die sich aktuell in einem kritischen Abschnitt befindet, kurzzeitig die höchste Priorität der wartenden Tasks für diesen kritischen Abschnitt. In Abbildung \ref{fig:fun:pip} lässt sich erkennen, dass Task L in dem Moment, in dem H auf C wartet, die hohe Priorität von H erbt. Somit liegt die Priorität von L ab diesem Zeitpunkt über der von M, so dass L nicht mehr im kritischen Abschnitt C verdrängt wird. Task L beendet ihre Operationen und entsperrt C. Die auf C wartende Task H wird sofort aktiviert. Diese kann nun C betreten, ihre Operationen abarbeiten und ihre Deadline einhalten. + +Die Unterstützung von Prioritätsvererbung erfordert umfassende Änderungen an den herkömmlichen Synchronisationsmechanismen der Betriebssysteme. Mutex-Objekte benötigen eine Möglichkeit zur Speicherung der Task, die sie aktuell sperrt. Ebenso müssen sämtliche relevanten Systemaufrufe diese Funktionen unterstützen. Weiterhin muss das Betriebssystem die dynamische Prioritätsänderung einer Task unterstützen. + +Als weiteres Verfahren zur Vermeidung von Prioritätsinvertierung sei \textit{priority ceiling} genannt. Da dieses Verfahren für diese Arbeit keine Rolle spielt, beschränkt sie sich auf die Nennung. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{prio_pip.eps} +\end{minipage} +\caption{Prioritätsvererbung} +\label{fig:fun:pip} +\end{figure} +%=============================================================================================== +\section{Objektrepräsentation} +\label{sec:fund:objrepr} +Dieser Abschnitt betrachtet ausgewählte Möglichkeiten zur Repräsentation von strukturierten Daten und Objekten zwecks der Übertragung zwischen verschiedenen Rechnern. +%=============================================================================================== +\subsection{SOAP} +\label{sec:soap} +\index{SOAP} +Bei SOAP handelt es sich um ein Protokoll zur Repräsentation von strukturierten Daten im XML-Format. Es findet hauptsächlich beim Zugriff auf Webservices Verwendung. Hierbei handelt es sich um eine Schnittstellentechnik, die einen plattformunabhängigen Zugriff auf Daten oder Funktionen anderer Rechner bietet. In der Praxis verwendet SOAP oftmals HTTP als zugrundeliegendes Protokoll. Die genaue Beschreibung von SOAP findet sich in \cite{soap12}. + +Ein großer Vorteil von SOAP im Vergleich zu anderen Techniken liegt in der sog. losen Kopplung der System. Dies bedeutet, dass die Systeme, die am Datenaustausch beteiligt sind, sehr wenig Information von einander benötigen. Als Beispiel hierfür dient die sog. Endianess des jeweiligen Systems. Hierunter versteht man die Reihenfolge der einzelnen Bytes von Datenwörtern mit mehr als einem Byte im Arbeitsspeicher des Systems. Dafür existieren zwei mögliche Alternativen: +\begin{description} +\item[Big endian] Das Byte mit den höchstwertigen Bits befindet sich an der kleinsten Adresse. +\item[Little endian] Das Byte mit den kleinstwertigen Bits befindet an der kleinsten Adresse. +\end{description} +Somit ergeben sich zwei Darstellungen eines ganzzahligen Wertes mit 32 Bit, also 4 Byte: +\begin{description} +\item[Big endian] Byte4,Byte3,Byte2,Byte1 +\item[Little endian] Byte1,Byte2,Byte3,Byte4 +\end{description} +Bei der Übertragung eines Datenwortes bestehend aus mehreren Bytes muss also bekannt sein, um welche Repräsentation es sich handelt, um ggf. die Reihenfolge der Bytes zu korrigieren. + +Durch die textuelle Darstellung des Wertes im XML-Format umgeht SOAP dieses Problem. Hieraus ergeben sich allerdings auch einige Nachteile gegenüber der Darstellung in nativer Form. So steigt beispielsweise der Platzbedarf bei der Speicherung und Übertragung. Wie oben erwähnt benötigt ein Ganzzahlwert von 32 bit Breite, wie z. B. 1.000.000, 4 Byte. In diesem Beispiel 00 0F 42 40 in hexadezimaler Schreibweise. Der gleiche Werte in textueller Darstellung benötigt dagegen 7 Byte, 1 Byte pro Zeichen. Der Punkt als Trennzeichen dient hier nur der Lesbarkeit und ist nicht Bestandteil des Datums. + +Ebenso steigt der Aufwand bei der Verarbeitung des Wertes. Während bei der Verarbeitung der nativen Werte ggf. nur die Reihenfolge der Bytes anzupassen ist, erfordert die textuelle Darstellung wesentlich mehr Aufwand. Auf der Seite des Senders muss das Datum aus der nativen Darstellung in eine Zeichenkette umgewandelt werden und auf der Empfänger muss umgekehrt die Zeichenkette in eine Zahl umgewandelt werden. + +Für den Zugriff auf Funktionalität eines entfernten Rechners existiert eine Technik mit dem Namen XML-RPC \index{XML-RPC}. Hierbei handelt es sich um ein Request-Response-Verfahren bei dem der Client eine XML-Nachricht an den Server sendet, die den Funktionsaufruf und die Parameter beschreibt. Die Antwort des Servers enthält den Rückgabewert der aufgerufenen Funktion. Hierbei finden oftmals elementare und zusammengesetzte Datentypen nach dem SOAP als sog. Datentransferobjekte (DTO\index{DTO}) Verwendung. Datentransferobjekte repräsentieren allerdings nur die Daten eines Objekts, nicht aber seine Funktionalität, die in objektorientierten Entwürfen sehr oft vorhanden ist. In dieser Stelle soll nicht näher auf die Webservice-Technologie eingegangen werden. Der wichtige Aspekt für diese Arbeit liegt in der Beschränkung der Datentransferobjekte auf den Datenanteil eines Objekts. +%=============================================================================================== +\subsection{Objektserialisierung} +\label{sec:serializedobjects} +Zur Übertragung kompletter Objekte, d. h. Daten und Funktionalität, bieten viele Programmiersprachen die Möglichkeit der Serialisierung in einem Bytestrom im Gegensatz zu einem XML-Dokument. Dabei erfolgt die Speicherung des Objekts in einem Bytestrom z. B. einer Datei, aus dem es auf dem gleichen oder einem anderen Rechner wieder geladen werden kann. Hierbei geht allerdings die lose Kopplung verloren. D. h. es bestehen Einschränkungen bei der Wahl des speichernden und des ladenden Systems. Diese betreffen beispielsweise Endianess und Programmiersprache, die identisch sein müssen. Auch müssen beim Serialisieren und Deserialisieren die Klassendefinitionen überein stimmen. Besitzt die verwendete Programmiersprache keine eingebaute Objektserialisierung muss der Entwickler ggf. auf Bibliotheken zurückgreifen oder eine eigene Lösung implementieren. Die Spezifikation der Objektserialisierung der Programmiersprache Java findet sich in \cite{JOSS}. +%=============================================================================================== +\subsection{Binäre Repräsentation} +\label{sec:elf} +Bei ELF \index{ELF} handelt es sich um ein binäres Dateiformat für ausführbare Dateien oder dynamisch ladbare Bibliotheken, sog. shared objects (SO\index{shared object}). Es enthält u. a. +\begin{itemize} +\item Informationen über die Prozessorarchitektur, für die das SO erstellt wurde. +\item eine Tabelle mit Symbolen, die das SO enthält +\item die Daten in binärer Form +\item den ausführbaren Maschinencode +\end{itemize} +Aus dieser Auflistung lässt sich erkennen, dass eine ELF-Datei alle Informationen enthält, um ein Objekt zu beschreiben, nämlich Daten und Code. Eine detaillierte Beschreibung des ELF-Formats findet sich in \cite{TIS95}. + +Allerdings besteht hier eine sehr enge Kopplung zwischen beiden Systemen. Das Zielsystem muss genau mit dem System übereinstimmen, für das die ELF-Datei erzeugt wurde. Unterscheidet sich beispielsweise der Befehlssatz des Prozessors, kann der Code der ELF-Datei nicht korrekt ausgeführt werden. + +ELF-Dateien lassen sich mit dem Linker für die Zielplattform erzeugen und mit dem Laufzeitsystem des jeweiligen Zielsystems laden. Für allen gängigen Unix und Linux-Varianten, die auf ELF basieren, existieren beispielsweise Funktionen, um shared objects zur Laufzeit eines Programmes zu laden. +%=============================================================================================== +\section{CAN} +\label{sec:fun:CAN} +\index{CAN} +Dieser Abschnitt bietet zuerst eine Beschreibung des CAN Busses, die für das Verständnis der weiteren Betrachtungen in dieser Arbeit nötig ist. Die Beschreibung beschränkt sich dabei auf die für diese Arbeit relevanten Aspekte. Eine vollständige Beschreibung des CAN Busses liefert \cite{bosch91can}. + +Anschließend erfolgt eine genauere Betrachtung des Verhaltens des Busses bei möglichst großer Auslastung. +\subsection{Allgemeine Beschreibung} +Bei CAN handelt es sich um einen seriellen Bus zur Datenübertragung über drei elektrische Leitungen (CAN\_HIGH, CAN\_LOW und CAN\_GROUND). Die Firma Bosch entwickelte CAN ursprünglich zur Vernetzung von ECUs in Kraftfahrzeugen. Alle an den Bus angeschlossenen ECUs teilen sich diese Leitungen, was eine Broadcast-Übertragung ermöglicht. Das bedeutet, dass ein Teilnehmer Daten versendet und alle anderen Teilnehmer diese Daten empfangen. Zu einem Zeitpunkt kann nur ein Sender aktiv sein. + +Die Übertragungsraten reichen von 125 kBit/s (Lowspeed) bis 1 MBit/s (Highspeed), mögliche Leitungslängen betragen zwischen 40 m bei Highspeed und 500 m bei Lowspeed. + +Die Datenübertragung auf dem CAN-Bus erfolgt immer in Form eines kompletten \textit{Frames}, im weiteren Verlauf der Arbeit auch Nachricht oder engl. message genannt. Dabei handelt es sich um eine definierte Abfolge von Bits, die auf dem Bus gesendet werden. Bestimmte Bitmuster beschreiben den Beginn und das Ende eines Frames. CAN unterscheidet folgende Frametypen: +\begin{description} +\item[Datenframe] Dient zur Übertragung von Daten durch das sendende Steuergerät +\item[Remoteframe] Dient zur Anforderung von Daten durch das sendende Steuergerät +\item[Errorframe] Das sendende Steuergerät hat einen Fehler im Netzwerk festgestellt +\item[Overloadframe] Zwangspause zwischen Daten- und Remoteframes +\end{description} +Im Folgenden beschränkt sich die Betrachtung auf Datenframes. CAN unterscheidet grundsätzlich zwei Formate für Datenframes: +\begin{description} +\item[Standard] Die Länge der ID beträgt 11 Bit (siehe unten). +\item[Extended] Die Länge der ID beträgt 29 Bit (siehe unten). +\end{description} + +\begin{table}[htb] +\begin{center} +\begin{tabular}{|l|l|} +\hline \textbf{Bitlänge} & \textbf{Bezeichnung} \\ +\hline 1 & SOF \\ +\hline 11 & ID \\ +\hline 1 & RTR \\ +\hline 1 & Identifier Extension \\ +\hline 1 & reserved \\ +\hline 1 & DLC \\ +\hline 0-64 & Data \\ +\hline 15 & CRC \\ +\hline 1 & CRC delimiter \\ +\hline 1 & ACK slot \\ +\hline 1 & ACK delimiter \\ +\hline 7 & End Of Frame \\ +\hline 3 & IFS \\ +\hline +\end{tabular} +\caption{Format CAN Standarddatenframe}\label{tab:canformat} +\end{center} +\end{table} + +Das Feld ID dient dabei mehreren Zwecken. +\begin{itemize} +\item Es identifiziert einen Frame eindeutig +\item Empfänger können anhand der ID für sie uninteressante Nachrichten filtern +\item Die Priorität einer Nachricht entspricht ihrer ID +\end{itemize} +Wollen zwei Teilnehmer gleichzeitig Daten versenden, löst CAN diese Kollision mittels eines CSMA/CR\index{CSMA/CR}-Verfahrens namens Arbitrierung\index{Arbitrierung} oder auch Bit-Arbitrierung, das im Folgenden beschrieben wird. + +Sollen zu einem Zeitpunkt zwei Frames auf dem selben CAN-Bus versandt werden, stellt die Arbitrierung fest, welcher Frame die höhere Priorität besitzt und dieser höher-priore Frame wird auf dem Bus versandt. Eine numerisch kleinere ID bedeutet hierbei eine höhere Priorität. Bei der Arbitrierung senden alle Knoten, die einen Frame senden wollen, bitweise die ID des Frames auf den Bus. Sie beginnen alle mit dem MSB. Aufgrund der elektrischen Verschaltung des Bus als \textit{wired-AND}, also eine verdrahtete logische UND-Verknüpfung, liegt auf dem Bus ein logischer 0-Pegel, wenn nur ein Knoten eine 0 sendet. Stellt ein Knoten fest, dass er eine 1 gesendet hat, aber auf dem Bus ein 0-Pegel liegt, weiß er, dass die ID seiner Nachricht nicht die niedrigste ist und gibt den Sendeversuch auf. So scheiden Bit für Bit immer mehr Knoten aus, bis am Ende der Knoten mit der höchst-prioren Nachricht seinen Frame verschickt. Nach der vollständigen Übertragung des Frames beginnt eine neue Arbitrierung mit allen Knoten, die nun einen Frame senden möchten. Daraus lässt sich auch erkennen, dass der CAN-Bus nicht preemptiv ist. D. h. eine Nachricht, deren Versand begonnen wurde, wird zu Ende übertragen. Sollte während der Übertragung eine Nachricht höherer Priorität bereit zum Senden werden, muss sie die nächste Arbitrierung abwarten und verdrängt die aktuelle Übertragung nicht. + +Einen weiteren wichtigen Aspekt des CAN-Bus stellt das Bitstopfen oder engl. bit stuffing dar. Es dient zur Taktrückgewinnung bzw. Synchronisation zwischen den Knoten, da der CAN-Bus über keine Taktleitung verfügt. Deshalb müssen ausreichend oft Flankenwechsel in den Signalen vorkommen, nach denen sich die anderen Knoten synchronisieren. Um diese Flankenwechsel zu gewährleisten, wird nach 5 gleichartigen Bits ein inverses Bit in den Datenstrom eingefügt, das selbst wieder in das bit stuffing einbezogen wird. Dieser Vorgang findet im Allgemeinen direkt in der CAN-Hardware statt und ist transparent für darüber liegende Protokollschichten bzw. Applikationen. Die Abbildung \ref{fig:res:bitstuffing} zeigt ein konkretes Beispiel für dieses Verfahren. +%============================================================================================== +\subsection{Antwortzeiten} +\label{sec:fun:rta} +Dieser Abschnitt analysiert die maximalen Antwortzeiten (engl. worst case response time, WCRT\index{WCRT}) von Nachrichten auf dem CAN Bus. Diese Analyse geht von einem zyklischen Versand der Nachrichten in einem bestimmten Zeitintervall aus. Die Antwortzeit einer CAN-Nachricht bezeichnet hierbei die Zeitspanne vom Beginn eines Zyklus, also dem Zeitpunkt an dem die Nachricht versandt werden soll, bis zum vollständigen Versand der Nachricht auf dem Bus. Der Zeitpunkt, an dem eine Nachricht versandt werden soll und der Zeitpunkt, an dem sie tatsächlich auf dem Bus versendet wird, sind nicht zwangsläufig identisch. Diese Tatsache liegt darin begründet, dass CAN-Nachrichten unterschiedliche Prioritäten besitzen. Sollen zu einem Zeitpunkt zwei Nachrichten unterschiedlicher Priorität versandt werden, erfolgt zuerst der Versand der Nachricht mit höherer Priorität, danach der Versand der nieder-prioren Nachricht. Dies führt zu einer Verzögerung der nieder-prioren Nachricht, um die Zeitspanne, die der Versand der höher-prioren Nachricht benötigt. + +Wie der nachfolgende Abschnitt zeigt, hängt die Zeit, die der Versand einer CAN-Nachricht dauert, von variablen Faktoren ab, die sich nicht vorhersagen lassen. Deshalb gehen Literatur und Praxis vom schlechtesten Fall, also maximal möglicher Dauer, aus, um sichere Aussagen zu treffen. + +Die Zeitdauer für das Versenden von CAN Botschaften in einem Zyklus hängt von deren Anzahl ab. Es existiert allerdings eine Obergrenze für die Anzahl der Nachrichten, die in einem Zyklus versendet werden können. Die maximale Länge einer CAN Botschaft mit Standard Identifier beträgt 111 Bit %\ref{sec:fun:CAN} + plus stuffing Bits innerhalb der ersten 98 Bits, Start of Frame bis CRC inklusive. Diese Stopfbits stellen den variablen Anteil an der Übertragungsdauer dar. + +Nach \cite{springerlink:10.1007/s11241-007-9012-7} berechnet sich die maximale Anzahl Bits $N$ einer Nachricht nach der Formel $N=g+8*DLC+13+\lfloor \frac{g+8*DLC-1}{4} \rfloor$. $\lfloor \frac{a}{b} \rfloor$ bezeichnet hierbei einen Ganzzahloperator, der zur nächst kleineren ganzen Zahl von $\frac{a}{b}$ abrundet, also die Nachkommastellen abschneidet. Für einen Standarddatenframe mit 11 bit Identifier gilt $g=34$. Damit lässt sich die Formel zu $N=55+10*DLC$ vereinfachen. Somit ergibt sich im schlechtesten Fall eine Länge von $55+10*8=135$ Bits für eine Standarddatennachricht. Bei einer Übertragungsrate von 1 Mbit/s auf dem CAN Bus ergibt sich eine Bitdauer von 1 $\mu s$, also maximal 135 $\mu s$ für eine Standarddatennachricht. In einer Zykluszeit von 1 ms = 1000 $\mu s$ können somit im schlechtesten Fall maximal $\lfloor \frac{1000}{135} \rfloor =7$ Standarddatennachrichten mit jeweils 8 Byte Daten verschickt werden. + +Allgemein hängt die Übertragungsdauer $t_{msg}$ einer Nachricht von ihrer Länge in Bit $N$ und der Bitdauer $\tau_{bit}$ des Busses ab. Sie berechnet sich als $t_{msg}=N*\tau_{bit}$. + +Für einen Satz von $n$ Botschaften beträgt die Gesamtübertragungsdauer $t_{total}=\sum\limits_{i=1}^n t_{n}$ + +Unter der Voraussetzung, dass die Zykluszeit einer Nachricht auch ihre Deadline darstellt, ermöglicht ein Verfahren nach \cite{springerlink:10.1007/s11241-007-9012-7} eine Überprüfung im Vorfeld, ob ein Satz von CAN-Nachrichten unter Einhaltung aller Deadlines versandt werden kann. Ein solches Verfahren trägt die Bezeichnung \textit{Schedulability Test} und basiert auf einer sog. Response Time Analysis, abgekürzt RTA \index{RTA}. Der Schedulability Test nach \cite{springerlink:10.1007/s11241-007-9012-7} verbessert nach Angaben der Verfasser ein vorheriges Verfahren, das unter gewissen Umständen zu optimistische Ergebnisse liefert, da jenes die Nicht-Preemptivität des CAN-Busses nicht konsequent beachtet. + +Die WCRT eine Nachricht $m$ trägt im Folgenden die Bezeichnung $R_m$. \cite{springerlink:10.1007/s11241-007-9012-7} geben folgende Gleichung zur Berechnung von $R_m$ an: +\begin{equation} +\label{eq:rm} +R_m=\max\limits_{q=0\dots Q_{m}-1}\left( R_m\left( q\right) \right) +\end{equation} +Wobei $q$ den Index einer bestimmten Instanz von $m$ bezeichnet und $Q_m$ die Anzahl der zu betrachtenden Instanzen von $m$. Somit ist die WCRT der Nachricht $m$ das Maximum der relevanten Antwortzeiten von $m$. +Zur Bestimmung von $R_m\left( q\right) $ geben \cite{springerlink:10.1007/s11241-007-9012-7} folgende Gleichung an: +\begin{equation} +R_m\left( q\right) =J_m+\omega_m\left( q\right) -qT_m+C_m +\end{equation} +Dabei bezeichnet $J_m$ den Jitter von $m$. Damit ist die Zeitspanne vom Eintritt des Ereignisses, das den Versand von $m$ auslöst, bis zum tatsächlichen Einreihen von $m$ in die Sendewarteschlange gemeint. $\omega_m\left( q\right)$ stellt die Verzögerung dar, die die Instanz $q$ der Nachricht $m$ erfährt. $T_m$ bezeichnet die Zykluszeit von $m$ und $C_m$ die Übertragungsdauer von $m$ auf dem Bus. +$\omega_m\left( q\right)$ lässt sich nach \cite{springerlink:10.1007/s11241-007-9012-7} mit folgender rekurrenten Gleichung berechnen: +\begin{equation} +\label{eq:omega_rek} +\omega_m^{n+1}\left( q\right)=B_m+qC_m+\sum\limits_{\forall k \in hp \left( m\right) } +\lceil \frac{\omega_m^n+J_k+\tau_{bit}}{T_k}\rceil C_k +\end{equation} +$hp \left( m\right)$ bezeichnet hierbei die Menge aller Nachrichten mit höherer Priorität als $m$ und $\lceil\frac{a}{b}\rceil$ einen Aufrundungsoperator, der zur nächsten Ganzzahl größer oder gleich $\frac{a}{b}$ aufrundet. +Die Blockiert-Zeit $B_m$ einer Nachricht $m$ durch eine nieder-priore Nachricht, die gerade versandt wird, berechnet sich nach +\begin{equation} +B_m=\max\limits_{k\in lp \left( m\right) }\left( C_k\right) +\end{equation} +mit $lp\left( m\right)$ als der Menge der Nachrichten mit kleinerer Priorität als $m$. +Die Rekurrenz in Gleichung \ref{eq:omega_rek} startet mit $\omega_m^0\left( q\right) =B_m+qC_m$ für $q=0$ oder $\omega^{0}_m\left( q\right) = \omega_m \left(q-1\right)+C_m$ für $q>0$. + +Sie endet wenn $\omega_m^{n+1}\left( q\right) = \omega_m^{n}\left( q\right)$, also wenn die Verzögerung der Instanz $q$ von $m$ konvergiert. Die Rekurrenz endet auch im negativen Fall, wenn die Deadline $D_m$ von $m$ überschritten wird. In diesem Fall gilt $J_m +\omega_{m}^{n+1}\left( q\right) -qT_m+C_m > D_m$ + +Die Anzahl der Instanzen $Q_m$ von $m$, die in Gleichung \ref{eq:rm} zu beachten sind, ergibt sich ebenfalls nach \cite{springerlink:10.1007/s11241-007-9012-7} aus der Gleichung +\begin{equation} +Q_m=\lceil\frac{t_m+J_m}{T_m}\rceil +\end{equation}. +Zur Berechnung von $t_m$ geben \cite{springerlink:10.1007/s11241-007-9012-7} ebenfalls eine rekurrente Gleichung +\begin{equation} +\label{eq:tm} +t^{n+1}_m = B_m + \sum\limits_{\forall k \in hep\left( m\right) }\lceil \frac{t^n_m+J_k}{Tk} \rceil C_k +\end{equation} +an. $hep\left( m\right)$ bezeichnet die Menge aller Nachrichten mit gleicher oder höherer Priorität als $m$. Hier startet die Rekurrenz mit $t^0_m=C_m$ und endet, wenn $t^{n+1}_m=t^{n}_m$ konvergiert. Nach \cite{springerlink:10.1007/s11241-007-9012-7} konvergiert $t_m$, wenn die Busauslastung $U_m$ durch Nachrichten mit einer Priorität größer oder gleich der von $m$ kleiner als 1 ist. +\begin{equation} +U_m=\sum\limits_{\forall k \in hep \left( m\right) }\frac{C_k}{T_k}<1 +\end{equation} +$t_m$ bezeichnet hierbei die Länge einer sog. \textit{busy period} des Priotitätslevels $m$. \cite{springerlink:10.1007/s11241-007-9012-7} definieren eine busy period als eine Zeitspanne mit folgenden Eigenschaften: +\begin{enumerate} +\item Sie startet an einem Zeitpunkt $t^s$, an dem eine Nachricht mit der Priorität von $m$ oder höher in die Sendewarteschlange eingefügt wird und keine Nachricht der Priorität von $m$ oder höher vor $t^s$ in die Warteschlange eingefügt wurde. +\item Ein zusammenhängendes Zeitinterval, in dem keine Nachricht mit einer Priorität kleiner der von $m$ die Übertragung starten und die Arbitrierung gewinnen kann. +\item Sie endet zum Zeitpunk $t^e$, zu dem der Bus unbenutzt ist und die nächste Übertragung und Arbitrierung beginnt. Dies gilt unter der Voraussetzung, dass keine Nachrichten der Priorität von $m$ oder höher vor $t^e$ in die Sendewarteschlange eingefügt wurden. +\end{enumerate} +Formal lässt sich eine busy period als halboffenes Interval zwischen $t^s$ und $t^e$ darstellen: $\left[ t^s, t^e \right)$. Innerhalb einer busy period des Prioritätslevels $m$ werden also alle Nachrichten der Priorität $m$ oder höher versendet, wenn sie vor dem Ende der busy period in die Warteschlange eingefügt wurden. Diese Nachrichten stören nachfolgende Instanzen der Nachrichten nicht, die am oder nach dem Ende der busy period in die Warteschlange eingefügt werden. + +Der Schedulability Test besteht nun darin, die WCRT jeder Nachricht nach Gleichung \ref{eq:rm} zu berechnen. Er gilt für eine Nachricht $m$ als bestanden, wenn $R_m \leq D_m$, andernfalls kann die Nachricht ihre Deadline nicht einhalten. Das Gesamtsystem aller Nachrichten gilt nur dann als \textit{schedulable}, wenn alle Nachrichten ihren Test bestehen. + +Dieses Verfahren gilt als pessimistisch, d. h. dass es im Zweifelsfall eine Konfiguration verwirft, die in der Realität u. U. lauffähig wäre. Dieses Verhalten wird auch als \textit{sufficient but not necessary} bezeichnet und stellt sicher, dass nur lauffähige Konfigurationen den Test bestehen. + +Der Abschnitt \ref{sec:res:rtaexample} liefert ein Beispiel für die Berechnung dieses Schedulability tests. + diff --git a/Master/Masterarbeit/thesis/tex/glossary.tex b/Master/Masterarbeit/thesis/tex/glossary.tex new file mode 100644 index 0000000..efeb786 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/glossary.tex @@ -0,0 +1,54 @@ + +\nomenclature{API}{Application Programming Interface} +\nomenclature{CAN}{Controller Area Network} +\nomenclature{GUI}{Graphical User Interface} +\nomenclature{CPU}{Central Processing Unit} +\nomenclature{PC}{Personal Computer} +\nomenclature{MFC}{Microsoft Foundation Classes} +%\nomenclature{CSMA/CD}{Carrier Sense Multiple Access/Collision Detection} +\nomenclature{CSMA/CR}{Carrier Sense Multiple Access/Collision Resolution} +%\nomenclature{CSMA/CA}{Carrier Sense Multiple Access/Collision Avoidance} +\nomenclature{RAII}{Resource Acquisition Is Initialization} +\nomenclature{ELF}{Executable and Linkable Format} +\nomenclature{LIN}{Local Interconnect Network} +\nomenclature{MOST}{Media Oriented Systems Transport} +\nomenclature{IDE}{Integrated Development Environment} +\nomenclature{PC}{Personal Computer} +\nomenclature{ISR}{Interrupt Service Routine} +\nomenclature{SO}{Shared Object} +\nomenclature{DLL}{Dynamic Link Library} +\nomenclature{STL}{Standard Template Library} +\nomenclature{DLC}{Data Length Code} +\nomenclature{POSIX}{Portable Operating System Interface} +\nomenclature{FPGA}{Field Programmable Gate Array} +\nomenclature{XML}{Extensible Markup Language} +\nomenclature{SOAP}{Simple Object Access Protocol} +\nomenclature{DTO}{Data Transfer Object} +\nomenclature{RPC}{Remote Procidure Call} +\nomenclature{HTTP}{Hypertext Transfer Protocol} +\nomenclature{FTP}{File Transfer Protocol} +\nomenclature{DMA}{Direct Memory Access} +\nomenclature{WCRT}{Worst Case Response Time} +\nomenclature{WCET}{Worst Case Execution Time} +\nomenclature{RTAI}{Real Time Application Interface} +\nomenclature{PIC}{Position Independent Code} +\nomenclature{RISC}{Reduced Instruction Set Computer} +\nomenclature{RTA}{Response Time Analysis} +\nomenclature{CRC}{Cyclic Redundancy Check} +\nomenclature{ACK}{Acknowledge} +\nomenclature{SOF}{Start Of Frame} +\nomenclature{ID}{Identifier} +\nomenclature{RTR}{Remote Transmission Request} +\nomenclature{IFS}{Intermission Frame Space} +\nomenclature{ECU}{Electronic Control Unit} +\nomenclature{MSB}{Most Significant Bit} +\nomenclature{LSB}{Least Significant Bit} +\nomenclature{VBA}{Visual Basic for Applications} +\nomenclature{RAM}{Random Access Memory} +\nomenclature{PIP}{Priority Inversion Protocol} +\nomenclature{TCP}{Transmission Control Protocol} +\nomenclature{IP}{Internet Protocol} +\nomenclature{LED}{Light--Emitting Diode} +\nomenclature{RX}{Receive} +\nomenclature{TX}{Transmit} +\nomenclature{RT}{Real-Time}
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/introduction.tex b/Master/Masterarbeit/thesis/tex/introduction.tex new file mode 100644 index 0000000..52ffb01 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/introduction.tex @@ -0,0 +1,58 @@ +\setchapterpreamble[u]{% + \dictum[Antoine de Saint-Exupery]{Ein Text ist nicht dann vollkommen, wenn man nichts mehr hinzufügen kann, sondern dann, wenn man nichts mehr weglassen kann.}\bigskip} +\chapter{Einleitung} +\label{chp:introduction} +Dieses Kapitel beschreibt zuerst die Motivation zur Erstellung dieser Arbeit. Der anschließende Abschnitt formuliert die Problemstellung, um die sich die Arbeit dreht. Abschließend liefert dieses Kapitel eine Übersicht über die nachfolgenden Kapitel und deren Inhalt. + +\section{Motivation} +\label{sec:motivation} + +Leistungsfähige Fahrerassistenzsysteme und komplexe Anzeigeinstrumente prägen den technischen Fortschritt im Automobilbereich. Viele Hersteller sehen in diesen Systeme eine Möglichkeit, sich von der Konkurrenz ab zu heben und Alleinstellungsmerkmale zu entwickeln. Hiervon hängt der Erfolg ihrer Produkte am Markt ab. + +Den Kern solcher Systeme bildet komplexe Software, die auf leistungsfähiger Hardware läuft. Hierbei handelt es sich um Mikrocontroller mit entsprechender Rechenleistung, um die komplexe Software auszuführen. Eine solche Einheit aus Hardware und Software bezeichnet man in diesem Kontext als Steuergerät. Einem Steuergerät kommt dabei die Regelung einer oder weniger Funktionen im Fahrzeug zu. Klassische Beispiele hierfür stellen die Regelung der Motoreinspritzung oder des Antiblockiersystems dar. Ebenso erfolgt die Steuerung des Kombiinstruments in modernen Fahrzeugen durch ein Steuergerät. Dabei berechnet das Steuergerät den Drehwinkel eines Schrittmotors zur Darstellung der aktuellen Geschwindigkeit auf einem Tachometer mit mechanischem Zeiger. Daneben existieren Anzeigesysteme ohne mechanische Zeiger. Diese zeigen dem Fahrer die Nachbildung eines klassischen Zeigerinstruments auf einem Bildschirm, zum Teil in dreidimensionaler Darstellung. Ebenso sind sog. Head-Up Displays erhältlich, die ihre Informationen direkt ins Blickfeld des Fahrers auf die Innenseite der Windschutzscheibe projizieren. Da die meisten Windschutzscheiben gekrümmt sind, muss diese Krümmung bei der Berechnung der Darstellung berücksichtigt werden. + +Diese Beispiele zeigen, welche Aufgaben Steuerungssoftware im Auto heute bewältigen muss. Hinzu kommt eine vielfältige Kommunikation der Steuergeräte untereinander. So benötigt die Geschwindigkeitsanzeige eben dieses Datum von dem Steuergerät, das dafür zuständig ist. Kaum ein Steuergerät im Fahrzeug kann seine Aufgabe autark erfüllen, woraus sich die Notwendigkeit von Kommunikationsmedien zwischen den Steuergeräten ergibt. + +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{can-ecu-network} +\linebreak +\tiny \centering Quelle: Volkswagen +\end{minipage} +\caption{Beispiel vernetzter Steuergeräte} +\label{fig:canecunetwork} +\end{figure} + +Die Abbildung \ref{fig:canecunetwork} zeigt ein Beispiel für die komplexe Vernetzung von Steuergeräten in modernen Fahrzeugen. \cite{SSH11} sprechen von 70 Steuergeräten in Fahrzeugen der Premiumklasse und einem Datenaufkommen von etwa 15000 Botschaften pro Sekunde. Dieses hohe Datenaufkommen stellt die Hersteller vor neue Herausforderungen bei der Analyse und Fehlersuche. Wie \cite{SSH11} darstellen, besteht hierbei beispielsweise der Bedarf an einer grafischen Darstellung der Änderungen eines Wertes aus der Datengesamtheit über die Zeit. + +Aus der vorgestellten Komplexität der Systeme lässt sich erkennen, dass die Entwicklung und der Test dieser Systeme sehr aufwändig ist. Besonders bei sicherheitsrelevanten Funktionen kommen sehr detailliert ausgearbeitete Softwareentwicklungsprozesse zum Einsatz, um die Zuverlässigkeit der Systeme sicher zu stellen. Dazu gehören ausgiebige Tests, vom Test einzelner Softwaremodule über Integrationstests bestimmter Komponenten bis hin zu Systemtests des gesamten Systems. + +Unter Berücksichtigung der oben dargestellten Vernetzung der Steuergeräte lässt sich erkennen, dass der Test eines Steuergeräts in Isolation kaum möglich ist. Sein Verhalten hängt sehr stark vom Verhalten anderer Systeme ab. D. h. um ein Steuergerät in vollem Umfang testen zu können, besteht der Bedarf an allen anderen Steuergeräten, mit denen das zu testenden Gerät kommuniziert. In der Entwicklungspraxis lässt sich dieser Bedarf allerdings nicht decken, da sich die benötigten Geräte oft selbst noch in der Entwicklung befinden und ihrerseits das zu testende Steuergerät benötigen, um getestet zu werden. Erschwerend kommt die Verteilung der Entwicklung über mehrere Standort hinzu. +Abhilfe schafft hier die Tatsache, dass für Entwicklung und Test nicht das physische Gerät benötigt wird, sondern nur sein Verhalten und die Daten, die es versendet. Beides ist aus umfangreichen Spezifikationsdokumenten der jeweiligen Komponenten bekannt und lässt sich somit simulieren. Eine solche Simulation befreit die Entwicklung und die frühen Testphasen vom Bedarf an realen Steuergeräten. Diese Simulation von Steuergeräten erfolgt durch entsprechende Programme, sog. Restbussimulationen. + +Zur Simulation vernetzter Steuergerät hat die Schleißheimer GmbH die Software CanEasy \index{CanEasy} entwickelt. Dabei handelt es sich um eine Software für PCs mit dem Betriebssystem Microsoft Windows. Die Bedienung der Software erfolgt über eine grafischer Benutzungsschnittstelle zur Definition der Busse mit Steuergeräten. Jedes Steuergerät versendet einzelne Nachrichten mit bestimmten Daten, sog. Signalen. CanEasy versendet dabei Nachrichten von Steuergeräten, die es simuliert, und zeichnet Nachrichten von real existierenden Steuergeräten auf. Ebenso bietet es die Möglichkeit der grafischen Darstellung aufgezeichneter Daten, beispielsweise in Graphen, wie in \cite{SSH11} beschrieben. Bei Tests und der Fehleranalyse ist die zeitlich exakte Abfolge von bestimmten Ereignissen auf dem Bus besonders wichtig, um bestimmte Situationen her zu stellen. Zur Kommunikation mit den realen Steuergeräten benötigt CanEasy immer separate Hardware für die verwendete Bus-Technologie. + +Die Firma X2E stellt die Hardware \myxc \index{\myxc}, im Folgenden kurz Xoraya genannt, her, die über vielfältige Hardwareschnittstellen für alle heute in Fahrzeugen gängigen Bus-Technologien verfügt. X2E stellt dem Benutzer daneben eine Umgebung zur Entwicklung eigener Software für die Xoraya bereit. Auf diese Weise erhält der Benutzer die Möglichkeit, die vielfältigen Hardwareschnittstellen der \myxc~mit eigener Software zu bedienen und beliebige Applikationen zu entwickeln, die auf der \myxc~ausgeführt werden. Allerdings verfügt die Xoraya über keine grafische Benutzerschnittstelle. + +\section{Problemstellung und Zielsetzung} +\label{sec:goal} +Aus den vorherigen Abschnitten ergeben sich einige Schwachstellen von CanEasy und \myxc. CanEasy läuft auf einem Betriebssystems, das für die pseudoparallele Ausführung mehrerer Anwendungen konzipiert ist. Dabei versucht es, alle Anwendungen gleich zu behandeln. Diese Eigenschaft kann unter Umständen die Ausführung einer Anwendung um wenige Millisekunden verzögern. Für den Bediener einer GUI ist dies in den meisten Fällen ohne Bedeutung. Geht es allerdings um eine zeitlich präzise Steuerung im Millisekundenbereich, kann diese Verzögerung gravierende Auswirkungen haben. Aus diesem Grund lassen sich nur sehr ungenaue Aussagen über das zeitliche Verhalten von CanEasy machen, da dieses immer von der Belastung des Rechners durch andere Anwendungen abhängt. + +Im Gegensatz dazu befähigen Hardware und Betriebssystem die \myxc~zu einem zeitlich sehr präzisen Verhalten. Allerdings benötigt der Benutzer umfangreiche Kenntnisse in der Softwareentwicklung, um auch nur eine einzige Botschaft mit der \myxc~auf einem Bus zu versenden oder zu empfangen. Die Entwicklung dieser Software verursacht zusätzliche Aufwände, die Ressourcen binden, Zeit benötigen und somit Geld kosten. + +Das Ziel dieser Arbeit besteht darin, einen Synergieeffekt aus den beiden oben genannten Systemen zu schaffen. Dieser soll aus einem neuen Gesamtsystem bestehen, das sich über eine GUI bedienen lässt und gleichzeitig ein präzises zeitliches Verhalten beim Versand und Empfang von Botschaften auf Kommunikationsbussen zeigt. + +Da der CAN-Bus heute und in absehbarer Zukunft die in der Praxis verwendete Bus-Technologie zur Anbindung von Kombiinstrumenten darstellt und die Schleißheimer GmbH hauptsächlich Software für Kombiinstrumente entwickelt, liegt der Fokus der Arbeit auf der Nutzung der CAN-Schnittstellen der \myxc. + +\section{Übersicht} +\label{sec:overview} +Kapitel~\ref{chp:fundamentals} geht auf die Grundlagen, auf denen diese Arbeit basiert, ein. Die Schwerpunkte bilden hierbei die Themen Echzeit-Systeme, Repräsentation von Objekten und ein Schedulability-Test für den CAN-Bus. + +Kapitel~\ref{chp:concept} beschreibt zuerst CanEasy und \myxc~als technische Ausgangspunkte und geht auf die spezifischen Eigenschaften beider Komponenten ein. Danach beschreibt es das im Rahmen dieser Arbeit erstellte Konzept zur Erreichung des vorgenannten Ziels. Es berücksichtigt dabei die spezifischen Eigenschaften der jeweiligen Systeme. An manchen Stellen bieten sich mehrere Alternativen zur Lösung einer konzeptionellen Problemstellung. Hier erfolgt eine Abwägung der Optionen, falls sich auf konzeptioneller Ebene schon eine bestimmte Entscheidung begründen lässt. Andernfalls verlagert sich die Entscheidung in spätere Kapitel. Weiterhin stellt dieses Kapitel ein Konzept zur Bewertung der Ergebnisse der prototypischen Implementierung vor. + +Darauf erfolgt in Kapitel~\ref{chp:prototype} eine Beschreibung der Softwarekomponenten, die für die verschiedenen Systeme im Rahmen der prototypischen Implementierung entwickelt wurden. Neben einer Beschreibung des Gesamtsystems geht dieses Kapitel auf bestimmte Details der Implementierung ein. Es läutert deren besondere Bedeutung für das Gesamtsystem und verdeutlicht die Design- und Implementierungsentscheidungen. + +Kapitel~\ref{chp:results} bietet eine Auswertung der Ergebnisse des in Kapitel~\ref{chp:prototype} beschriebenen Prototyps. Ebenso beschreibt es die Metriken, anhand derer die Bewertung der Ergebnisse erfolgt und vergleicht sie mit alternativen Produktkombinationen. + +Kapitel~\ref{chp:summarization} fasst die Erkenntnisse der Arbeit zusammen und liefert eine kritische Betrachtung. Es analysiert, welche Teile der Zielsetzung diese Arbeit erreichen konnte und welche nicht. Es listet weiterhin Fragen auf, die im Rahmen dieser Arbeit nicht geklärt werden konnten oder sich erst im Verlauf der Arbeit ergaben. Abschließend betrachtet es verschiedene Richtungen, in die, basierend auf dieser Arbeit, in Zukunft weiter gearbeitet werden kann.
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/literature.bib b/Master/Masterarbeit/thesis/tex/literature.bib new file mode 100644 index 0000000..858f500 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/literature.bib @@ -0,0 +1,273 @@ +@Book{Tan92, + author = {Tanenbaum, A. S. }, + title = {Modern Operating Systems}, + publisher = {Prentice-Hall}, + year = {1992} +} +@book{Wie05, + title={Automotive Embedded Systeme: Effizientes Framework-vom Design zur Implementierung}, + author={Wietzke, J. and Tran, M.T.}, + isbn={9783540243397}, + series={Xpert. press Series}, + url={http://books.google.com/books?id=bUfQ0h8FgPoC}, + year={2005}, + publisher={Springer} +} +@book{Law97, + title={CAN Controller Area Network.: Grundlagen und Praxis.}, + author={Lawrenz, W.}, + isbn={9783778525753}, + url={http://books.google.com/books?id=\_kFSSQAACAAJ}, + year={1997}, + publisher={H{\"u}thig} +} +@Misc{Ree97, +author = {Reeves, G. E.}, +title = {What really happened on Mars ? }, +howpublished = {Website}, +month = {December}, +year = {1997}, +lastvisited = {30.11.2011}, +url={http://research.microsoft.com/en-us/um/people/mbj/Mars_Pathfinder/Authoritative_Account.html} +} +@book{Lov07, +title={Linux System Programming}, +author={Love, R.}, +year={2007}, +isbn={9780596009588}, +publisher={O'Reilly Media} +} +@Article{SRL90, +author = {Sha, L. and Rajkumar, R. and LEHOCZKY, J. P.}, +title = {Priority Inheritance Protocols: An Approach to Real-Time Synchronization}, +journal = {IEEE TRANSACTIONS ON COMPUTERS}, +year = {1990}, +volume = {39}, +number = {9}, +pages = {1175--1185}, +month = {SEPTEMBER} +} +@Book{But11, +author = {Buttazzo, G. C.}, +editor = {Stankovic, J. A.}, +title = {Hard Real-Time Computing Systems}, +publisher = {Springer}, +year = {2011}, +series = {Real-Time Systems Series}, +edition = {Third Edition} +} +@Article{SSH11, +author = {Sedlmair, M. and Schraut, M. and Hintermaier, W.}, +title = {Visualisierung von Busdaten}, +journal = {AUTOMOBIL ELEKTRONIK}, +year = {2011}, +number = {4}, +pages = {21--23}, +month = {Oktober} +} +@book{Levine:1999:LL:519563, + author = {Levine, John R.}, + title = {Linkers and Loaders}, + year = {1999}, + isbn = {1558604960}, + edition = {1st}, + publisher = {Morgan Kaufmann Publishers Inc.}, + address = {San Francisco, CA, USA}, +} +@Book{TIS95, +title = {Executable and Linkable Format ELF}, +publisher = {Tool Interface Standards TIS}, +series = {Portable Formats Specification, Version 1.1}, +year = {1995} +} +@Book{Bra10, +author = {Brands, G.}, +title = {Das C++ Kompendium}, +publisher = {Springer}, +year = {2010}, +isbn = {9783642047862}, +series = {eXamen.press Series}, +edition = {2. Auflage} +} +@Misc{Sch11b, +key = {Sch11b}, +author = {Schick, F.}, +title = {XORAYA Connect Embedded-SDK reference}, +howpublished = {Website}, +month = {November}, +year = {2011}, +note = {Last visited: 03.12.2011}, +url={http://dev.xoraya.com/embedded/index.html} +} +@Misc{Sch11a, +key = {Sch11a}, +author = {Schick, F.}, +title = {XORAYA Connect Wiki}, +howpublished = {Website}, +month = {November}, +year = {2011}, +note = {Last visited: 03.12.2011}, +url={http://wiki.kandel.x2e.de/doku.php?id=connect:public:start} +} +misc{Alt10, +author = {Altenbernd, P.}, +year = {2010}, +title = {Scriptum zur Vorlesung Real-Time Systems im Wintersemester 2010/2011 am Fachbereich Informatik der Hochschule Darmstadt} +} +@Misc{MSD11, +key = {MSD11}, +title = {Windows Dev Center -- Multitasking}, +howpublished = {Website}, +month = {9}, +year = {2011}, +note = {Last visited: 11.12.2011}, +url={http://msdn.microsoft.com/en-us/library/windows/desktop/ms684259%28v=VS.85%29.aspx} +} +@Book{RSI09, +author = {Mark E. Russinovich and David A. Solomon and Alex Ionescu}, +publisher = {Microsoft Press}, +title = {Windows Internals}, +year = {2009}, +edition = {5th Edition}, +month = {6}, +isbn= {9780735625303}, +} +@MISC{Dietrich_theevolution, +author = {Sven-Thorsten Dietrich and Daniel Walker}, +title = {The Evolution of Real-Time Linux}, +year = {}, +url = {http://www.cse.nd.edu/courses/cse40463/www/amatta2.pdf}, +note = {Last visited: 21.12.2011} +} +@article{Mantegazza:2000:RRT:348554.348564, +author = {Mantegazza, P. and Dozio, E. L. and Papacharalambous, S.}, +title = {RTAI: Real Time Application Interface}, +journal = {Linux J.}, +issue_date = {April 2000}, +volume = {2000}, +issue = {72es}, +month = apr, +year = {2000}, +issn = {1075-3583}, +articleno = {10}, +url = {http://dl.acm.org/citation.cfm?id=348554.348564}, +acmid = {348564}, +publisher = {Belltown Media}, +address = {Houston, TX}, +} +@TechReport{Mit07, +author = {Mitschang, Jonas}, +title = {Harte Echtzeit unter Linux}, +subtitle = {Fallstudie RTAI vs. RT-Preempt}, +institution = {Fraunhofer Institut Experimentelles Software Engineering}, +year = {2007}, +number = {58} +} +@article {springerlink:10.1007/s11241-007-9012-7, +author = {Davis, Robert and Burns, Alan and Bril, Reinder and Lukkien, Johan}, +affiliation = {University of York Real-Time Systems Research Group, Department of Computer Science YO10 5DD York UK YO10 5DD York UK}, +title = {Controller Area Network (CAN) schedulability analysis: Refuted, revisited and revised}, +journal = {Real-Time Systems}, +publisher = {Springer Netherlands}, +issn = {0922-6443}, +keyword = {Informatik}, +pages = {239-272}, +volume = {35}, +issue = {3}, +url = {http://dx.doi.org/10.1007/s11241-007-9012-7}, +note = {10.1007/s11241-007-9012-7}, +year = {2007} +} +@misc{bosch91can, +author = {Bosch, R.}, +citeulike-article-id = {968922}, +keywords = {specification}, +month = sep, +posted-at = {2006-11-30 16:23:42}, +priority = {0}, +title = {{CAN} specification version 2.0}, +year = {1991} +} +@misc{AT32UC3C:datasheet, +title = "{AT32UC3C} Data Sheet", +organization = "Atmel Coorpation", +address = "San Jose, California", +url = {http://www.atmel.com/dyn/resources/prod_documents/doc32117.pdf}, +note = {Last visited: 27.12.2011} +} +@article {springerlink:10.1007/BF00289509, +author = {Bayer, Rudolf}, +title = {Symmetric binary B-Trees: Data structure and maintenance algorithms}, +journal = {Acta Informatica}, +publisher = {Springer Berlin / Heidelberg}, +issn = {0001-5903}, +keyword = {Informatik}, +pages = {290-306}, +volume = {1}, +issue = {4}, +url = {http://dx.doi.org/10.1007/BF00289509}, +note = {10.1007/BF00289509}, +year = {1972} +} +@Misc{Boo11, +title = {Boost 1.46.1 Library Documentation}, +howpublished = {Website}, +month = {February}, +year = {2011}, +note = {Last visited: 29.12.2011}, +url={http://www.boost.org/doc/libs/1_46_1/} +} +@Misc{BoostIntrusive, +author = {Krzikalla, Olaf and Gaztanaga,Ion }, +title = {Boost.Intrusive}, +howpublished = {Website}, +month = {March}, +year = {2011}, +note = {Last visited: 29.12.2011}, +url={http://www.boost.org/doc/libs/1_46_1/doc/html/intrusive.html} +} +@Misc{BoostIntrusivePerformance, +author = {Krzikalla, Olaf and Gaztanaga,Ion}, +title = {Boost.Intrusive Performance}, +howpublished = {Website}, +month = {March}, +year = {2011}, +note = {Last visited: 29.12.2011}, +url={http://www.boost.org/doc/libs/1_46_1/doc/html/intrusive/performance.html} +} +@Misc{RTPREEMPTHOWTO, +author = {Fu, L. and Schwebel, R.}, +title = {RT PREEMPT HowTo}, +howpublished = {Website}, +month = {July}, +year = {2011}, +note = {Last visited: 29.12.2011}, +url={https://rt.wiki.kernel.org/articles/r/t/_/RT_PREEMPT_HOWTO_6bc9.html} +} +@Misc{soap12, +author = {Gudgin, M. and Hadley, M. and Mendelsohn, N. and Moreau, J.-J. and Nielsen, H. F. and Karmarkar, A. and Lafon, Y.}, +title = {SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)}, +howpublished = {Website}, +month = {April}, +year = {2007}, +note = {Last visited: 03.01.2012}, +organization = {W3C}, +url={http://www.w3.org/TR/soap12-part1/} +} +@Misc{JOSS, +title = {Java Object Serialization Specification}, +howpublished = {Website}, +month = {Aug.}, +year = {2001}, +note = {Last visited: 03.01.2012}, +url={http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf} +} +@Misc{Doxygen, +author = {van Heesch, Dimitri}, +title = {Doxygen Homepage}, +howpublished = {Website}, +month = {Dec.}, +year = {2011}, +note = {Last visited: 06.01.2012}, +url={http://www.stack.nl/~dimitri/doxygen/} +} diff --git a/Master/Masterarbeit/thesis/tex/master_thesis.tex b/Master/Masterarbeit/thesis/tex/master_thesis.tex new file mode 100644 index 0000000..0197200 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/master_thesis.tex @@ -0,0 +1,189 @@ +\documentclass[ + 11pt, + ,a4paper + ,ngerman + ,headings=big + ,headsepline=true + ,chapterprefix=true + ,DIV10 + ,oneside + ,titlepage + ,captions=tableheading + ,index=totoc + ,bibliography=totoc + ,listof=totoc + %,draft +]{scrreprt} +\usepackage[utf8x]{inputenc} +\usepackage{ucs} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage[pdftex]{graphicx} +\usepackage{epstopdf} +\usepackage{longtable} +\usepackage[ + automark, + headsepline, + ilines + ]{scrpage2} +\graphicspath{{..//img//}} +\usepackage[scaled]{helvet} +\usepackage[english,ngerman]{babel} +\usepackage{makeidx} +\usepackage{lmodern} +\usepackage{color} +\definecolor{darkblue}{rgb}{0,0,.5} +\definecolor{darkgreen}{rgb}{0,.5,0} +\definecolor{darkred}{rgb}{.5,0,0} +\usepackage{listings} +\lstset{ % +language=C++, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code +numbers=left, % where to put the line-numbers +numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers +stepnumber=2, % the step between two line-numbers. If it's 1, each line + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color} +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +%frame=single, % adds a frame around the code +frame=tb, % top and bottom lines +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment within your code +morekeywords={*,...}, % if you want to add more keywords to the set +keywordstyle=\color{darkblue}, % Farbe für die Keywords wie public, void, object u.s.w. +commentstyle=\color{darkgreen}, % Farbe der Kommentare +stringstyle=\color{darkred} % Farbe der Zeichenketten +} + +% Symbolverzeichnis ------------------------------------------------------------ +% Symbolverzeichnisse bequem erstellen. Beruht auf MakeIndex: +% makeindex.exe %Name%.nlo -s nomencl.ist -o %Name%.nls +% erzeugt dann das Verzeichnis. Dieser Befehl kann z.B. im TeXnicCenter +% als Postprozessor eingetragen werden, damit er nicht ständig manuell +% ausgeführt werden muss. +% Die Definitionen sind ausgegliedert in die Datei "Glossar.tex". +% ------------------------------------------------------------------------------ +\usepackage[intoc]{nomencl} +\let\abbrev\nomenclature +\renewcommand{\nomname}{Abkürzungsverzeichnis} +\setlength{\nomlabelwidth}{.25\hsize} +\renewcommand{\nomlabel}[1]{#1 \dotfill} +\setlength{\nomitemsep}{-\parsep} + +% Schusterjungen und Hurenkinder vermeiden +\clubpenalty = 10000 +\widowpenalty = 10000 +\displaywidowpenalty = 10000 + +\pagestyle{scrheadings} +\automark[chapter]{chapter} + +\usepackage[hypertexnames=TRUE]{hyperref} + +\makeindex +\makenomenclature + +\renewcommand{\familydefault}{\sfdefault} +\bibliographystyle{alphadin} + +\newcommand{\myauthor}{Sven Eisenhauer} +\newcommand{\mytitle}{Konzeptionierung und prototypische Umsetzung einer Echtzeitbasierten +Restbussimulation mittels Mikrocontrollerunterst\"utzung} +\newcommand{\myxc}{XORAYA Connect} + +\hypersetup{ + pdftitle={\mytitle}, + pdfauthor={\myauthor}, + pdfcreator={\myauthor}, + pdfsubject={\mytitle}, + pdfkeywords={\mytitle}, + colorlinks, + citecolor=darkblue, + filecolor=darkblue, + linkcolor=darkblue, + urlcolor=darkblue +} + +\begin{document} + +\newpage +\thispagestyle{empty} +\null +\newpage + +\selectlanguage{ngerman} +\begin{titlepage} +\begin{center} +\includegraphics[width=10cm]{logo_hda_fbi} \\ +\vspace*{\fill}\huge{Hochschule Darmstadt}\\ \large{-- Fachbereich Informatik --} +\vfill {{\Large \mytitle}} +\vfill { + Abschlussarbeit zur Erlangung des akademischen Grades \\ + \bf{Master of Science (M.Sc.)} +} +\vfill {vorgelegt von} +\vfill {\Large \myauthor} +\vfill{ + \makebox[3.5cm][l]{Referent} \makebox[7cm][l]{Prof. Dr. Joachim Wietzke} \\ + \makebox[3.5cm][l]{Korreferent} \makebox[7cm][l]{Prof. Dr. Ralf S. Mayer} \\ +} +\vfill{ + \makebox[3.5cm][l]{Ausgabedatum} \makebox[5cm][l]{14.08.2011} \\ + \makebox[3.5cm][l]{Abgabedatum} \makebox[5cm][l]{14.02.2012} \\ +} +\end{center} +\end{titlepage} + +\pagenumbering{Alph} +\input{abstract} +\input{authorship} +\input{thanks} + +\pagenumbering{roman} +\setcounter{page}{0} +\tableofcontents +\pagebreak +\listoffigures +\pagebreak +\listoftables + +\pagebreak +\renewcommand*{\dictumwidth}{.4\textwidth} +\pagenumbering{arabic} +\setcounter{page}{1} +\input{introduction} +\input{fundamentals} +\input{concept} +\input{prototype} +\input{results} +\input{conclusion} + +\begin{appendix} + \clearpage + \pagenumbering{Roman} + \input{appendix} +\end{appendix} + +% Abkürzungsverzeichnis -------------------------------------------------------- +\input{glossary} +% für korrekte Überschrift in der Kopfzeile +\clearpage\markboth{\nomname}{\nomname} +\printnomenclature +\label{sec:Glossar} + +\renewcommand{\indexname}{Stichwortverzeichnis} +\printindex + +\nocite{*} +\bibliography{literature} + +\end{document}
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/tex/prototype.tex b/Master/Masterarbeit/thesis/tex/prototype.tex new file mode 100644 index 0000000..752b976 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/prototype.tex @@ -0,0 +1,114 @@ +\setchapterpreamble[u]{% + \dictum[Johann Wolfgang von Goethe]{Es ist nicht genug, zu wissen, man muß auch anwenden; es ist nicht genug zu wollen, man muß auch tun.}\bigskip} +\chapter{Prototypische Implementierung} +\label{chp:prototype} +Das im vorigen Kapitel erstellte Konzept soll nun mittels einer prototypischen Implementierung realisiert werden. Sie soll als Proof Of Concept dienen und Vor- sowie Nachteile des Konzepts in der Realität ermitteln. +\section{Implementierungsgrundsätze} +\label{sec:generalimpl} +Für die Implementierung des Prototyps gelten einige Grundsätze, wie sie schon im Abschnitt \ref{sec:fun:rt_req} formuliert wurden. Besondere Bedeutung fällt dem Verzicht auf die Verwendung von dynamischem Speicher auf dem Target zu. Darüber hinaus wirken sich die technischen Voraussetzungen aus Abschnitt \ref{sec:con:techbase} auf die Implementierung aus. Als Programmiersprachen kommen sowohl für das Target als auch den Host C bzw. C++ zum Einsatz. + +Zur Generierung der Quellcode-Dokumentation (siehe \ref{app:cd:doc}) aus den Quellcode-Dateien kommt Doxygen (\cite{Doxygen}) zum Einsatz. Dazu wird der Quellcode an entsprechenden Stellen mit Kommentaren versehen, aus denen die Dokumentation entsteht. + +Auf dem Target stehen zwei Alternativen zur Realisierung der \nameref{sec:fund:pip} zur Verfügung. Zum Einen bietet die POSIX-API ein Mutexattribut PTHREAD\_PRIO\_INHERIT, zum Anderen enthält das \nameref{sec:con:X2Esdk} eine Klasse x2e::Mutex, die diese Funktionalität implizit bereit stellt. + +Da das \nameref{sec:con:X2Esdk} boost bereits enthält, verwenden die Implementierungen die boost-Bibliotheken für +\begin{description} +\item[Netzwerkkommunikation] Die Bibliothek boost.Asio stellt Mechanismen für asynchrone Netzwerkkommunikation über TCP/IP bereit. +\item[Tasks] Die Bibliothek boost.Thread stellt Mechanismen zur Verwaltung mehrerer Threads in einer Applikation bereit. Die einzelnen Tasks werden als boost-Threads implementiert. Sie kapseln transparent die nativen Thread-Konstrukte der jeweiligen Plattform, POSIX-Threads auf dem Target, Windows-Threads auf dem Host. +\item[Container] \index{boost.Intrusive}Boost bietet verschiedene Container, die entsprechende Container aus der STL ersetzen und gegenüber diesen bestimmte Vorteile bieten, die im Abschnitt \ref{sec:proto:intru} detailliert beschrieben sind. +\item[Lock] Boost bietet verschiedene Klassen zur Verwaltung von Locks. So erlaubt die Klasse boost::lock\_guard die Verwendung von Mutexen nach dem Prinzip RAII\index{RAII}. Dies stellt die korrekte Initialisierung einer Ressource sicher. Darüber hinaus erlaubt es diese Klasse, einen Mutex für den Gültigkeitsbereich eines assoziierten Lock-Objekts zu sperren, da der Destruktor des Lock-Objekts den Mutex implizit freigibt. +\end{description} + +Darüber hinaus verlagert die prototypische Implementierung alle Berechnungen, die nicht zwingend auf dem Target ausgeführt werden müssen, auf den Host. Da auf dem Host keine Echtzeitanforderungen bestehen, kann so das Target entlastet werden. + +Das Listing \ref{lst:global} zeigt eine globale Header-Datei, die bei allen host-- und targetseitigen Komponenten zum Einsatz kommt. Sie stellt Datentyp-Definitionen, Präprozessormakros und --definitionen bereit, die eventuelle Unterschiede der Entwicklungsumgebungen oder Architekturen kapseln und vor der Anwendungsebene verbergen. + +\section{Boost intrusive container} +\label{sec:proto:intru} +Der Hauptgrund für die Verwendung der intrusive Container in diesem Prototypen liegt in deren Eigenschaft, keine Kopien der in ihnen gespeicherten Objekte zu erzeugen. Die Container der STL zeigen genau diese Eigenschaft, die in diesem Fall aus zwei Gründen unerwünscht ist. Abhängig vom verwendeten Allokator, allozieren STL-Container dynamischen Speicher, was hier vermieden werden soll. Weiterhin steigt durch die Kopien der gesamte Bedarf an RAM auf dem Target. Ebenso verschlechtert sich durch den Zugriff auf Objektkopien die sog. memory locality, was zu mehr Cache faults führt. Diese beeinträchtigen das Echtzeitverhalten des Systems (siehe \ref{sec:fund:cache}). + +Darüber hinaus bieten intrusive Container eine höhere Verarbeitungsgeschwindigkeit als STL-Container, wie in \cite{BoostIntrusivePerformance} gezeigt. In einem zeitkritischen System ist jede Verbesserung der Laufzeit willkommen, besonders wenn sie praktisch ohne Mehraufwand zu erreichen ist. + +\section{Asynchrone Netzwerkkommunikation} +\label{sec:proto:asio} +Bei asynchroner Netzwerkkommunikation blockieren Lese- und Schreiboperationen nicht. Stattdessen löst das Eintreten eines Ereignisses auf einer Verbindung den Aufruf einer entsprechenden Behandlungsfunktion (engl. Handler) für das jeweilige Ereignis aus. In dieser Arbeit handelt es sich um eine Client-Server-Kommunikation, bei der die hostseitige Implementierung den Client darstellt und die targetseitige den Server. + +Die Netzwerkkommunikation für Steuerkommandos läuft nach diesem Schema ab: +\begin{enumerate} +\item Mit der Initialisierung des Targets startet die Netzwerktask mit einem halboffenen Verbindungsobjekt zu dem sich ein Client verbinden kann. Für dieses Objekt ist ein sog. AcceptHandler konfiguriert. Sobald eine neue Verbindung zu diesem Objekt aufgebaut wird, wird der AcceptHandler im Kontext der Netzwerktask ausgeführt. Er startet ein weiteres halboffenes Verbindungsobjekt zu dem sich der nächste Client verbinden kann. Auf dem Verbindungsobjekt zu dem die neue Verbindung aufgebaut wurde, findet nun eine asynchrone Leseoperation unter Verwendung eines sog. ReadHandler statt. Diese Operation blockiert nicht und kehrt sofort zurück. Treffen nun Daten auf dieser Verbindung ein, löst dies den Aufruf des ReadHandlers im Kontext der Netzwerktask aus. Clientseitig hält ebenfalls ein asynchrones Lesen mit konfiguriertem ReadHandler die Verbindung offen. +\item Eine Benutzeraktion im CanEasy-Plugin löst das Versenden einer Anfrage über das Netzwerk aus. Nach dem Versenden der Daten über das Netzwerk wird der sog. WriteHandler aufgerufen. +\item Der ReadHandler auf dem Server wird aufgerufen, sobald die Daten des Clients empfangen wurden. Er wertet die Daten aus, löst entsprechende Aktionen aus und versendet die Antwort an den Client. Der serverseitige WriteHandler der Antwort versetzt nach Versand der Antwort die Verbindung wieder in den Lesezustand mit konfiguriertem ReadHandler, so dass die nächste Anfrage empfangen werden kann. +\item Der clientseitige ReadHandler wird bei Empfang der Antwort aufgerufen. Er wertet diese aus, führt entsprechende Aktionen aus und hält die Verbindung mittels eines erneuten asynchronen Lesens mit einem ReadHandler die Verbindung offen. +\end{enumerate} + +Die Übermittlung aufgezeichneter Busnachrichten vom Server zum Client verläuft umgekehrt. Hier initiiert der Server die Datenübertragung, indem er eine Netzwerkbotschaft mit den Daten der empfangenen Busbotschaft an den Client schickt. Der Client antwortet mit einer entsprechenden Netzwerkbotschaft zur Bestätigung des Empfangs. + +Diese Abläufe sind durch die Bibliothek boost.Asio vorgegeben. Die Kernkomponente einer auf boost.Asio basierenden Implementierung bildet ein asynchrones IO-Dienst-Objekt. Dieses führt alle tiefer liegenden Operationen der Kommunikation aus und steuert die Aufrufe der Handler. Der IO-Dienst läuft im Kontext der Task, in der die Methode \texttt{run} des Objekts aufgerufen wird. Im nornmalen Betrieb kehrt dieser Aufruf nicht zurück. Alle folgenden Netzwerkoperationen erfolgen nun im Kontext des Threads der Netzwerktask durch Aufrufe der Handler durch das IO-Dienst-Objekt in diesem Thread. + +Die Implementierung hat gezeigt, dass bei der asynchronen Übertragung basierend auf boost.Asio mehrere Netzwerknachrichten auf einmal übertragen werden können. Dies bedeutet, dass der Empfangspuffer bei Aufruf des Lesehandlers mehrere Nachrichten enthalten kann. Um dies überprüfen zu können, übergibt boost.Asio beim Aufruf des Lesehandlers die Anzahl der empfangenen Bytes. Der Lesehandler ist nun dafür zuständig, alle Bytes der Übertragung zu konsumieren. Dazu versucht er solange Netzwerknachrichten aus dem Empfangspuffer zu lesen und zu verarbeiten, bis er alle empfangenen Bytes verarbeitet hat. Erst dann startet er eine erneute asynchrone Leseoperation. Ohne diese Schleife könnten Netzwerknachrichten verloren gehen. + +Der Zugriff auf die Empfangs- und Sendepuffer der Netzwerkübertragung erfolgt über Adapterklassen, die den jeweiligen Puffer als Datenstrom abbilden. Es existieren zwei Adapterklassen, eine zum Auslesen eines Datenstroms und eine zum Schreiben eines Datenstroms. Der Entwurf dieser Klassen orientiert sich an der in \cite{Wie05} vorgestellten Klasse zur Verarbeitung von MOST-Daten. Diese Klassen verbergen über entsprechende Compilermakros aus der globalen Header-Datei (\ref{lst:global}) die Endianess des jeweiligen Rechners. So können diese Datenstromklassen ohne Änderungen in den target-- und hostseitigen Softwarekomponenten verwendet werden. + +Zur Verarbeitung der Netzwerknachrichten kommen konstante Parser-Objekte zum Einsatz. Dieser Ansatz basiert auf der in \cite{Wie05} vorgestellten Methode zur Verarbeitung von MOST-Nachrichten. Zur Compilezeit werden dabei Objekte erzeugt, die eine Netzwerknachricht aus einem Netzwerkdatenstrom in einen Datencontainer lesen bzw. Netzwerknachrichten aus einem Datencontainer schreiben. Die konstanten Objekte beinhalten dabei jeweils Validierungsdaten, wie beispielsweise das zulässige Minimum oder Maximum eines Datums. Ein Datencontainer enthält die Anwendungsdaten. Konstante Parserobjekte prüfen beim Lesen oder Schreiben die Daten des Datencontainers gegen die konstanten Validierungsdaten. Von Seiten der Applikation erfolgt der Zugriff auf Netzwerkdaten über den Datencontainer. Der Datencontainer stellt dazu eine Schnittstelle bereit, die einen indexbasierten Zugriff erlaubt, so dass keine Zeigerarithmetik benötigt wird. Die Adressierung von Strukturelementen mittels Zeigerarithmetik stellt laut \cite{Wie05} immer eine kritische Fehlerquelle dar, da sie abhängig von Compiler und Plattform ist. + +\section{Targetseitige Implementierung} +\label{sec:implxoraya} +Zum Laden der Targetplugins verwendet der Prototype die vorhandene Bibliothek \textit{dl}. Sie bietet Funktionen zum Öffnen und Schließen von shared objects. Darüber hinaus liefert sie Zeiger auf Symbole in einem geladenen shared object anhand des Symbolnamens. Allerdings alloziert die Bibliothek RAM für das Laden der shared objects. Da dies innerhalb der Bibliothek geschieht, findet an dieser Stelle die einzige Nutzung von dynamischem Speicher innerhalb der Komponenten auf der \myxc~statt. Für den hier zu erstellenden Proof Of Concept wird dieser Umstand in Kauf genommen. + +\subsection{Initialisierung} +Die Initialisierung der Targetimplementierung wird nach dem Programmstart zuerst ausgeführt. Sie stellt den gewünschten Systemzustand her. Dazu zählen +\begin{description} +\item[Memory locking] Verhindert das Auslagern der RAM-Bereiche des Systems auf die Festplatte (siehe \ref{sec:fund:swap}). Der entsprechende Systemaufruf auf einem Linux-System benötigt root-Rechte. Schlägt dieser Aufruf fehl, startet das System ohne memory locking. +\item[Stack pre-faulting] Vorbelegung des Stacks nach \cite{RTPREEMPTHOWTO}. +\item[Maintask] Über einen Kommandozeilenparameter lässt sich konfigurieren, ob die Maintask mit Echtzeit-Priorität laufen soll oder als Task mit normaler Priorität. Ist Echtzeit-Priorität gewünscht, startet diese Funktion die Maintask unter Verwendung des Echtzeit-FIFO-Schedulers und mit der höchsten Priorität im Gesamtsystem, andernfalls als normalen Thread ohne weitere Parameter. +\end{description} + +\subsection{Steuerung} +Als Datencontainer für Nachrichten, die in einem Zyklus versendet werden sollen, findet boost::intrusive::multiset Verwendung. Dieser Container basiert auf einem Rot-Schwarz-Baum und bietet ein Laufzeitverhalten wie in \ref{sec:con:rbt} beschrieben. Ein Multiset kann mehrere Einträge unter dem gleichen Schlüssel ablegen. Diese Eigenschaft ist hier notwendig, da in mehreren Bussen die gleiche Nachrichten-ID vorkommen kann, die als Schlüssel dient. + +\subsection{Aufzeichnung} +Die Template-Klasse boost::circular\_buffer stellt einen Ringpuffer bereit, der zum Auslesen der Empfangswarteschlange der \myxc~dient. Die Template-Klasse bounded\_buffer kapselt den Ringpuffer und einen Mutex mit dem Attribut PTHREAD\_PRIO\_INHERIT zur Synchronisation. Der Ringpuffer bietet Platz für 8192 Nachrichten, die Größe des internen Puffers der Logtask beträgt 4096 Byte. +Das Listing \ref{lst:global} zeigt u. a. den Aufbau der Datenstruktur \texttt{tstLogMessage} zum Speichern empfangener Nachrichten ab Zeile 153. Um auf dem Target möglichst wenig Rechenzeit für das Speichern der Aufzeichnungsdatei zu verbrauchen, findet an dieser Stelle ein binäres Dateiformat Verwendung. Es enthält sequentiell die empfangenen Nachrichten im Format von \texttt{tstLogMessage} in der Bytereihenfolge des Targets. Beim Auslesen auf dem Host muss diese Tatsache Beachtung finden. + +\subsection{Netzwerk} +Es existiert eine separate Task (siehe \ref{sec:con:networktask}) zur Abwicklung der Netzwerkkommunikation. Diese Task führt ein boost::asio::io\_service-Objekt aus. Dieses verwaltet die einzelnen Verbindungen. Die Verbindungen implementieren in Lese- und Schreib-Handlern die Logik dieser Komponente. + +Um hier auf dynamischen Speicher verzichten zu können, kommt ein statisches Bytearray zum Einsatz. Mit Hilfe des Placement-new-Operators wird bei einer neuen Verbindung ein Verbindungsobjekt in diesem Speicherbereich entsprechend erzeugt. Dazu muss zuerst ein freier Speicherplatz für das neue Objekt gefunden werden. Ein Datencontainer enthält verwendete Verbindungsobjekte. Entspricht ein Speicherbereich innerhalb des Bytearrays keiner der Adressen der Objekte in diesem Container, kann dieser Speicherbereich für ein neues Verbindungsobjekt verwendet werden. Dieser Speicherbereich wird überschrieben, so dass zuvor überprüft werden muss, dass er von keinem Verbindungsobjekt verwendet wird. Das Einfügen der neuen Verbindung in den Container verhindert die Verwendung ihres Speicherbereichs für eine andere Verbindung. Tritt ein Fehler auf der Verbindung auf, beispielsweise das Trennen der Verbindung durch den Client, wird die Verbindung aus dem Datencontainer gelöscht und der Speicherbereich kann für eine neue Verbindung wiederverwendet werden. + +Das Listing \ref{lst:tcpcon} zeigt ab Zeile 51 die statische Fabrikmethode für neue Verbindungsobjekte. Sind alle Speicherslots für Verbindungen belegt, gibt die Methode einen NULL-Zeiger zurück. Aufrufende Module müssen den zurückgegebenen Zeiger also überprüfen. In Zeile 79 findet der Aufruf des Placement-new-Operators statt, um ein neues Objekt an der angegebenen Speicheradresse zu erzeugen. + +Dieses Verfahren beschränkt die Anzahl der möglichen Verbindungen entsprechend der festen Größe des Bytearrays. Für diesen Prototyp ist nur die Kommunikation mit einer CanEasy-Instanz vorgesehen, so dass maximal zwei Verbindungen, eine verwendete und eine halboffene für den nächsten Client, benötigt werden. Die zur Compilezeit konfigurierte maximale Anzahl von sechzehn Verbindungen reicht dafür zweifellos aus. + +Der Zugriff auf den Datencontainer erfolgt ausschließlich in der Netzwerktask. Dies lässt sich mittels der \texttt{post}-Methode eines asynchronen boost Io-Dienst-Objekts erreichen. Als Parameter erhält \texttt{post} eine Methode, die im Thread des asynchronen boost Io-Dienst-Objekts ausgeführt wird. Soll nun aus der Logtask eine aufgezeichnete Nachricht über des Netzwerk versendet werden, erfolgt der Versand nicht direkt. Stattdessen wird die Nachricht in einen Puffer eingefügt und ein entsprechender \texttt{post}-Aufruf durchgeführt. Die an \texttt{post} übergebene Funktion liest den Puffer im Kontext der Netzwerktask aus und versendet die entsprechende Nachricht über das Netzwerk. + +\section{Hostseitige Implementierung} +\label{sec:impl:host} +Um sicher zu stellen, dass ein geladenes shared object auf dem Target nicht überschrieben wird, löst jede Start-Aktion für ein Interface zuerst eine Stop-Aktion für dieses Interface aus. +\subsection{GUI} +Die Abbildung \ref{fig:proto:dlg} zeigt den GUI-Dialog des CanEasy-Plugins. Die Anordnung der Elemente orientiert sich an den in Abbildung \ref{fig:con:usecases} definierten Abhängigkeiten. Zusätzlich verfügt die prototypische Implementierung über einen Textbereich zur Anzeige von Trace-Meldungen. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{caneasy_plugin} +\end{minipage} +\caption{CanEasy-Plugin} +\label{fig:proto:dlg} +\end{figure} + +\subsection{Code-Generierung, Cross-Compiler} +Das Listing \ref{lst:targetplugin} zeigt den generierten Quellcode für die in Abschnitt \ref{sec:res:wcrttest} beschriebene Busdefinition. Auch an dieser Stelle kommt der Prototyp ohne Allokation zusätzlichen dynamischen Speichers aus. Der C++-Standard C++x0 erlaubt die Generierung der gezeigten Initialisierungsliste des Konstruktors mit den Werten der einzelnen Nachrichten. Darüber hinaus lässt sich eine globale Objektinstanz erkennen. Die Fabrikfunktion des Targetplugins konfiguriert diese Instanz und gibt einen Zeiger darauf zurück. + +Aus der generierten Quellcodedatei für ein Targetplugin erzeugt die Toolchain des SDK in ein shared object. Dazu generiert die hostseitige Komponente ein entsprechendes Makefile wie in \ref{lst:targetmakefile} gezeigt. Dieses Makefile steuert Compiler und Linker zur Erzeugung des Targetplugins. + +\subsection{Aufzeichnungskonvertierung} +Bei der Konvertierung der empfangenen Aufzeichnung vom Target muss im ersten Schritt die Bytereihenfolge der empfangenen Nachrichten auf die des Hosts angepasst werden. Danach erfolgt die Umwandlung der empfangenen binären Daten in ein Textformat. Für dieses Textformat besitzt CanEasy Importfunktionen. Diese wandeln die konvertierte Textdatei in eine Datei im CanEasy-Aufzeichnungsformat um. Der Anwender öffnet diese Datei, um Zugriff auf die Aufzeichnungsdaten zu erhalten. + +\subsection{Aktualisierung von Nachrichtendaten} +CanEasy verfügt über ein internes Ereignissystem. Dieses ermöglicht es Plugins, Callbackfunktionen für bestimmte Ereignisse im System zu registrieren. Tritt ein solches Ereignis ein, führt CanEasy die entsprechende Callbackfunktion aus. + +Bei der Generierung eines Plugins registriert die hostseitige Integrationskomponente eine Callbackfunktion für die Datenänderungsereignisse aller simulierten Nachrichten. Diese Callbackfunktion versendet eine entsprechende Nachricht über das Netzwerk mit den geänderten Nachrichtendaten. + +\section{Implementierung des Verifikationswerkzeug} +\label{sec:implverification} +Die Implementierung auf dem \nameref{sec:con:at32uc3c} basiert auf einem Grundsystem der Firma Schleißheimer für diesen Controller und setzt das in Abschnitt \ref{sec:con:verification} entworfene Konzept um. + diff --git a/Master/Masterarbeit/thesis/tex/results.tex b/Master/Masterarbeit/thesis/tex/results.tex new file mode 100644 index 0000000..7b4d018 --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/results.tex @@ -0,0 +1,280 @@ +\setchapterpreamble[u]{% + \dictum[Johann Wolfgang von Goethe, Faust I]{Ein jeder lernt nur, was er lernen kann;\\ + Doch der den Augenblick ergreift, das ist der rechte Mann.}\bigskip} +\chapter{Ergebnisse} +\label{chp:results} +In diesem Kapitel erfolgt eine Überprüfung der in Kapitel \ref{chp:prototype} implementierten Konzepte aus Kapitel \ref{chp:concept} im Hinblick auf ihre erwarteten Eigenschaften. Jeder Abschnitt dieses Kapitels beschreibt ein Szenario zur Überprüfung einer Eigenschaft, die verwendete Metrik, das erwartete Verhalten des Systems und das gemessene Verhalten mittels der Metrik. + +Bei allen Messungen treten außer den im Szenario beschriebenen Lasten keine Bus- oder Systemlasten auf. +\section{Genauigkeit der Zeitstempel beim Empfang}\label{sec:rxaccuracity} +Zur Beurteilung der Genauigkeit der Empfangszeitstempel des Prototyps im Vergleich zu anderen Hardware-/Software-Kombinationen wird untersucht, inwieweit tatsächlich empfangene Zeitstempel von erwarteten abweichen. Als Referenz dient hierbei das in Abschnitt \ref{sec:con:verification} konzipierte Werkzeug im zyklischen Sendemodus. Die folgenden Unterabschnitte untersuchen jeweils die Differenz zweier aufeinander folgend empfangener Nachrichten. Die Differenz zwischen dieser Zeitspanne und der erwartete Differenz dient als Metrik für die Genauigkeit der Empfangsstempel, wobei ein kleiner Wert eine hohe Genauigkeit darstellt. + +\subsection{CanEasy mit Softwarezeitstempel} +Für Hardware-Adapter, die über keine Möglichkeit verfügen, einen Zeitstempel in der Hardware zu generieren, bietet CanEasy die Möglichkeit, einen Zeitstempel zu generieren. Da dies auf der CPU des PCs passiert, unterliegt dieser Zeitstempel dem ungenauen Scheduling auf dem PC. + +Die Abbildung \ref{fig:diag_rx_ts_ce_sw} zeigt die Abweichungen der Zeitstempel über der Anzahl der empfangenen Nachrichten. Wie erwartet treten hier starke Schwankungen auf. Der Mittelwert der Abweichung liegt bei 1,58 ms, die maximale Abweichung bei 2,00 ms. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{caneasy_sw_timestamp.eps} +\end{minipage} +\caption{Abweichung der RX-Timestamps CanEasy Software} +\label{fig:diag_rx_ts_ce_sw} +\end{figure} + +\subsection{CanEasy mit Hardwarezeitstempel} +Dass Unerschiede zwischen CAN-Hardware-Adaptern bestehen zeigen die nächsten beiden Auswertungen. +\subsubsection*{MHS Tiny-CAN II} +Die Abbildung \ref{fig:diag_rx_ts_ce_hw_mhs} zeigt die Ergebnisse unter Verwendung des Adapter Tiny-CAN II des Herstellers MHS. Der Mittelwert der Abweichung liegt hier bei 0,78 ms, bei einer maximalen Abweichung 2,00 ms. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{caneasy_hw_mhs_timestamp.eps} +\end{minipage} +\caption{Abweichung der RX-Timestamps CanEasy Hardware, MHS Tiny-CAN II} +\label{fig:diag_rx_ts_ce_hw_mhs} +\end{figure} + +\subsubsection*{Vector CANcaseXL} +Deutlich bessere Ergebnisse liefert das deutlich teurere CANcaseXL des Herstellers vector. Wie in Abbildung \ref{fig:diag_rx_ts_ce_hw_cancasexl} zu erkennen, treten hier keine messbaren Abweichungen auf. Der Mittelwert der Abweichung liegt bei 0,00 ms, die maximale Abweichung ebenfalls bei 0,00 ms. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{caneasy_hw_cancasexl_timestamp.eps} +\end{minipage} +\caption{Abweichung der RX-Timestamps CanEasy Hardware, Vector CANcaseXL} +\label{fig:diag_rx_ts_ce_hw_cancasexl} +\end{figure} + +\subsection{\myxc} +Aus Abbildung \ref{fig:diag_rx_ts_xc} lässt sich entnehmen, dass die Empfangszeitstempel des Prototyps ebenfalls keine messbaren Abweichungen aufweisen. Der Mittelwert der Abweichung liegt bei 0,00 ms, die maximale Abweichung beträgt 0,00 ms. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{xoraya_timestamp.eps} +\end{minipage} +\caption{Abweichung der RX-Timestamps \myxc} +\label{fig:diag_rx_ts_xc} +\end{figure} + +\section{RX Message Burst} +Hier kommt das Verifikationswerkzeug im Burst-Modus zum Einsatz. Die Messung erfolgt anhand einer grafischen Darstellung des empfangenen Werte über die Zeit. Jeder Punkt des Graphen repräsentiert eine aufgezeichnete Botschaft. Der Zeitstempel der Nachricht bildet den x-Wert und der Signalwert die y-Koordinate. Bei korrekt empfangenen Nachrichten ergibt sich hieraus eine Gerade. Nicht oder in falscher Reihenfolge empfangene Nachrichten ändern die Steigung des Graphen, so dass es sich nicht mehr um eine Gerade handelt. +\subsection{MHS Tiny-CAN II} +In Abbildung \ref{fig:burst_rx_tinycan} lassen sich Unterschiede in der Steigung des Graphen erkennen. Vermutlich konnte CanEasy nicht alle Nachrichten auslesen, bevor sie in der Hardware überschrieben wurden. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{tinycan_burst_rx} +\end{minipage} +\caption{Message-Burst Tiny-CAN II} +\label{fig:burst_rx_tinycan} +\end{figure} + +\subsection{vector CANcaseXL} +Der Graph in Abbildung \ref{fig:burst_rx_cancase} zeigt keine erkennbaren Steigungsänderungen, was der Erwartung einer korrekten Aufzeichnung entspricht. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{cancasexl_burst_rx} +\end{minipage} +\caption{Message-Burst CANcaseXL} +\label{fig:burst_rx_cancase} +\end{figure} + +\subsection{\myxc} +Auch hier entspricht der Graph in Abbildung \ref{fig:burst_rx_xc} der erwarteten Geraden. Die Anzahl der vom Verifikationswerkzeug versendeten Nachrichten übersteigt die Größe des Ringpuffers des Aufzeichnungsplugins um ein Vielfaches. Dass trotzdem alle Nachrichten in der richtigen Reihenfolge aufgezeichnet wurden, zeigt die Leistungsfähigkeit der Lösung. + +Auch unter hoher System mit Hilfe von \ref{lst:cpuload} zeigt sich das gleiche Bild (siehe Abbildung \ref{fig:burst_rx_xc_cpuload}). +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{xc_burst_rx} +\end{minipage} +\caption{Message-Burst \myxc} +\label{fig:burst_rx_xc} +\end{figure} +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{\linewidth} +\includegraphics[width=\linewidth]{xc_burst_rx_cpuload} +\end{minipage} +\caption{Message-Burst \myxc~unter Last} +\label{fig:burst_rx_xc_cpuload} +\end{figure} + +\section{Genauigkeit der Sendesteuerung der \myxc} +\label{sec:txaccuracity} +Dieser Abschnitt zeigt, wie exakt der Prototyp in der Datenbasis definierte Sendezyklen einhält. Dazu verschickt die \myxc~eine Botschaft mit einer Zykluszeit von 100 ms aus einem entsprechenden Targetplugin. + +Zur Verifikation wird CanEasy mit angeschlossenem Vector CANcaseXL und dessen Hardwarezeitstempeln verwendet. + +Wie Abbildung \ref{fig:diag_tx_ts_xc} zeigt, liegen auch hier nur äußerst geringe Abweichungen vor. Der Mittelwert der Abweichung beträgt 0,002816901 ms, bei einer maximalen Abweichung 0,1 ms. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{xoraya_tx_timestamp.eps} +\end{minipage} +\caption{Abweichung der TX-Timestamps der \myxc} +\label{fig:diag_tx_ts_xc} +\end{figure} + +\section{Einhaltung der Antwortzeiten} +\label{sec:res:wcet} +Die Ausgangsbasis für dieses Szenario bildet die Definition von 7 Sendebotschaften mit den IDs 0x001 bis 0x007 in der Datenbasis mit einem Sendeintervall von 1 ms entsprechend der konzeptionellen Überlegungen zu den Antwortzeiten in Abschnitt \ref{sec:fun:rta}. Jede Botschaft enthält 8 Byte Daten und somit den DLC-Wert 8. Um möglichst die maximale Übertragungsdauer zu erreichen, erfolgt die Auswahl der Werte für die Datenbytes dahingehend, dass möglichst viele Stopbits entstehen. Ausgehend von einem DLC-Wert 8, in binärer Darstellung 1000, ergibt sich ein binärer Wert von 0011 1100 für das erste Datenbyte. Demnach entsteht das erste Stopfbit nach dem zweiten Bit des ersten Datenbytes und erzeugt einen Wechsel von 0 nach 1. Gefolgt von vier weiteren Bits mit dem Wert 1 entsteht ein weiteres Stopfbit, diesmal von 1 nach 0. Nun müssen 4 weitere Bits mit 0 folgen, um das nächste Stopfbit zu erzeugen. Ab hier wiederholt sich das Muster. Das Bitmuster 0011 1100 für die Datenbytes entspricht dem dezimalen Wert 60. Die Abbildung \ref{fig:res:bitstuffing} veranschaulicht diese Überlegungen. + +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{bitstuffing.eps} +\end{minipage} +\caption{Bitstopfen} +\label{fig:res:bitstuffing} +\end{figure} + +\paragraph*{Schedulability Test} +\label{sec:res:rtaexample}\index{Schedulability Test} +Vor der praktischen Ermittlung des Ergebnisses erfolgt eine theoretische Überprüfung, ob der definierte Satz an Nachrichten nach dem Schedulability Test aus \ref{sec:fun:rta} unter Einhaltung aller Deadlines überhaupt übertragen werden kann. Aus der Definition ergeben sich die in Tabelle \ref{tab:res:startvalues} angegebenen Ausgangswerte. + +\begin{table}[htb] +\begin{center} +\footnotesize +\begin{tabular}{|l|l|l|l|l|l|l|l|} +\hline $m$ & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ +\hline $T_m$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ \\ +\hline $B_m$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 0$\mu s$ \\ +\hline $t^0_m$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ \\ +\hline $D_m$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ & 1000$\mu s$ \\ +\hline $J_m$ & 0$\mu s$ & 0$\mu s$ & 0$\mu s$ & 0$\mu s$ & 0$\mu s$ & 0$\mu s$ & 0$\mu s$ \\ +\hline $hep\left( m\right)$ & $\{1\}$ & $\{1;2\}$ & $\{1;2;3\}$ & $\{1;2;3;4\}$ & $\{1;2;3;4;5\}$ & $\{1;2;3;4;5;6\}$ & $\{1;2;3;4;5;6;7\}$ \\ +\hline $hp\left( m\right)$ & $\{\}$ & $\{1\}$ & $\{1;2\}$ & $\{1;2;3\}$ & $\{1;2;3;4\}$ & $\{1;2;3;4;5\}$ & $\{1;2;3;4;5;6\}$ \\ +\hline $C_m$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ & 135$\mu s$ \\ +\hline +\end{tabular} +\caption{Ausgangswerte des Schedulability Tests für $m_{1}\dots m_7$}\label{tab:res:startvalues} +\end{center} +\end{table} + +Für den verwendeten CAN-Bus mit einer Übertragungsrate von 1 MBit/s gilt die Übertragungsdauer $\tau_{bit}=1\mu s$. + +Die ausführlichen Berechnungen der hier gezeigten Werte sind in Anhang \ref{app:calc} aufgeführt. Tabelle \ref{tab:res:m1} zeigt die berechneten Werte des Schedulability Tests für ersten sechs Nachrichten. Die Werte für $U_m$ sind alle kleiner als $1$, was garantiert, dass die Berechnung der busy periods konvergiert. Ebenso sind alle Werte für $Q_m$ gleich $1$, so dass nur jeweils eine Instanz der Nachricht betrachtet werden muss. Für alle Nachrichten liegen die WCRT-Werte $R_m$ unterhalb ihrer Deadline, so dass sie den Schedulability Test bestehen. +\begin{table}[htb] +\begin{center} +\footnotesize +\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|l|} +\hline $m$ & $U_m$ & $t^1_m$ & $t^2_m$ & $t_m$ & $Q_m$ & $\omega^0_m\left( 0\right)$ & $\omega^1_m\left( 0\right)$ & $\omega^2_m\left( 0\right)$ & $\omega_m\left( 0\right)$ & $R_m\left( 0\right)$ & $R_m$ \\ +\hline $1$ & $0,135<1$ & $270\mu s$ & $270\mu s$ & $270\mu s$ & $1$ & $135\mu s$ & $135\mu s$ & & $135\mu s$ & $270\mu s$ & $270\mu s \leq D_1$ \\ +\hline $2$ & $0,270<1$ & $405\mu s$ & $405\mu s$ & $405\mu s$ & $1$ & $135\mu s$ & $270\mu s$ & $270\mu s$ & $270\mu s$ & $405\mu s$ & $405\mu s \leq D_2$ \\ +\hline $3$ & $0,405<1$ & $540\mu s$ & $540\mu s$ & $540\mu s$ & $1$ & $135\mu s$ & $405\mu s$ & $405\mu s$ & $405\mu s$ & $540\mu s$ & $540\mu s \leq D_3$ \\ +\hline $4$ & $0,540<1$ & $675\mu s$ & $675\mu s$ & $675\mu s$ & $1$ & $135\mu s$ & $540\mu s$ & $540\mu s$ & $540\mu s$ & $675\mu s$ & $675\mu s \leq D_4$ \\ +\hline $5$ & $0,675<1$ & $810\mu s$ & $810\mu s$ & $810\mu s$ & $1$ & $135\mu s$ & $675\mu s$ & $675\mu s$ & $675\mu s$ & $810\mu s$ & $810\mu s \leq D_5$ \\ +\hline $6$ & $0,810<1$ & $945\mu s$ & $945\mu s$ & $945\mu s$ & $1$ & $135\mu s$ & $810\mu s$ & $810\mu s$ & $810\mu s$ & $945\mu s$ & $945\mu s \leq D_6$ \\ +\hline +\end{tabular} +\caption{Schedulability Test für $m_{1}\dots m_6$}\label{tab:res:m1} +\end{center} +\end{table} + +Die Berechnung des Schedulability Tests für $m=7$ gestattet sich etwas aufwendiger und wird gesondert betrachtet. + +\begin{table}[htb] +\begin{center} +\footnotesize +\begin{tabular}{|l|l|l|l|l|l|l|} +\hline $U_7$ & $t^1_7$ & $t^2_7$ & $t^3_7$ & $t^4_7$ & $t_m$ & $Q_7$ \\ +\hline $0,945<1$ & $1080\mu s$ & $2025\mu s$ & $2970\mu s$ & $2970\mu s$ & $2970\mu s$ & $3$ \\ +\hline +\end{tabular} +\caption{Schedulability Test für $m_7$, 1. Teil}\label{tab:res:m7a} +\end{center} +\end{table} + +Der erste Teil der Ergebnisse der Berechnungen ist in Tabelle \ref{tab:res:m7a} dargestellt. Die Berechnung der Länge der busy period konvergiert hier erst nach der vierten Iteration. Der Wert von $Q_7=3$ gibt an, dass im folgenden drei Instanzen von Nachricht $7$ überprüft werden müssen, um ihre tatsächliche WCRT zu bestimmen. Die Ergebnisse der Berechnungen für die Instanzen $q$ der Nachricht $7$ zeigt Tabelle \ref{tab:res:m7b}. Nach diesen Werten ergibt sich $R_7=\max\limits_{q=0\dots 2}\left(\{945;80;25\}\right)=945\mu s \leq D_7$. Somit besteht auch Nachricht $7$ den Schedulability Test. Da alle Nachrichten $m_{1}\dots m_7$ den Schedulability Test bestehen, besteht auch die Gesamtmenge der Nachrichten den Test. + +\begin{table}[htb] +\begin{center} +\footnotesize +\begin{tabular}{|l|l|l|l|l|l|} +\hline $q$ & $\omega^0_7\left( q\right)$ & $\omega^1_7\left( q\right)$ & $\omega^2_7\left( q\right)$ & $\omega_7\left( q\right)$ & $R_7\left( q\right)$ \\ +\hline $0$ & $0\mu s$ & $810\mu s$ & $810\mu s$ & $810\mu s$ & $945\mu s$ \\ +\hline $1$ & $945\mu s$ & $945\mu s$ & & $945\mu s$ & $80\mu s$ \\ +\hline $2$ & $1080\mu s$ & $1890\mu s$ & $1890\mu s$ & $1890\mu s$ & $25\mu s$ \\ +\hline +\end{tabular} +\caption{Schedulability Test für $m_7$, 2. Teil}\label{tab:res:m7b} +\end{center} +\end{table} + +\label{sec:res:wcrttest}Der praktische Test soll nun überprüfen, ob die Annahme von $J_m=0$ zu optimistisch war oder auch in der Realität gerechtfertigt ist. Dazu versendet die \myxc~die Botschaften $m_{1}\dots m_7$ aus einem entsprechend generierten SO. Als Empfänger dient CanEasy mit einem angeschlossenen CANcaseXL. + +Basierend auf dem vorhergehenden Schedulability Test besteht die Erwartung, dass jede Botschaft innerhalb einer Millisekunde genau einmal in der Aufzeichnung erscheint. Ebenso steht zu erwarten, dass die Differenz der Zeitstempel zweier aufeinander folgender Instanzen einer Botschaft $m_n$ eine Millisekunde nicht übersteigt. + +Nach den Überlegungen in Abschnitt \ref{sec:fun:rta} sollte ein CAN Bus mit 1 MBit/s Bitrate 15 Botschaften mit einem DLC von 1 innerhalb einer Millisekunde übertragen können. Somit ergibt sich im schlechtesten Fall eine Anzahl von $N=55+10=65$ Bits für pro Nachricht. Innerhalb 1000 $\mu s$ sollte der Bus demnach $n=\lfloor \frac{1000}{65} \rfloor=15$ Nachrichten übertragen können, da $t_{n}=\sum\limits_{1}^{15} 65\mu s = 15 * 65 \mu s = 975 \mu s \leq 1000 \mu s$. + +Ein Wert von 240 für das Datenbyte erzeugt ein Stopfbit im Datenbyte. Da der DLC in binärer Darstellung 0001 beträgt, erzeugt das Bitmuster 1111 0000 im ersten Datenbyte ein Stopfbit nach dem vierten Datenbit. Dieses Bitmuster entspricht 240 in dezimaler Darstellung. + +\myxc~versendet die Botschaften der Busse WCRT (8 Datenbytes) und WCRT\_2 (1 Datenbyte) auf jeweils einem Interface. CanEasy empfängt die Botschaften beider Busse, die jeweils an einen Kanal eines CANcaseXL angeschlossen sind. + +Obige Überlegung führen zu der Erwartung, dass im praktischen Test jede Botschaft innerhalb einer Millisekunde genau einmal in der Aufzeichnung erscheint. + +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.49\linewidth} +\includegraphics[width=\linewidth]{wcrt_trace} +\end{minipage} +% +\begin{minipage}[b]{.49\linewidth} +\includegraphics[width=\linewidth]{wcrt_2_trace} +\end{minipage} +\caption{Resultat WCRT-Test} +\label{fig:res:wcrt} +\end{figure} + +Die Traces in Abbildung \ref{fig:res:wcrt} erfüllen diese Erwartung exakt, CanEasy zeigt für WCRT\_2 100 \% Buslast. Rechnerisch bleibt der Bus zwar noch 25 $\mu s$ ohne Last, was einer Last von 97,5 \% entspricht. Allerdings passt in diese 25 $\mu s$ keine Nachricht mehr, womit die maximale Anzahl Nachrichten auf dem Bus erreicht ist, was sich auch als 100 \% Buslast interpretieren lässt. + +Dieser Test zeigt auch, dass der Prototyp zwei Highspeed CAN-Busse parallel maximal auslasten kann und dabei das gewünschte zeitliche Verhalten exakt einhält. + +\section{Verhalten der \myxc ~unter hoher Prozessorlast} +\label{sec:cpuload} +Die folgenden Unterabschnitte sollen zeigen, wie sich der Prototyp unter hoher Systemlast verhält, abhängig davon, ob die Maintask auf Echtzeit-Priorität läuft oder nicht. + +Zur Erzeugung der Systemlast wird das Skript \ref{lst:cpuload} als separater Prozess gestartet. + +In diesem Test verschickt die \myxc~eine Botschaft mit Zykluszeit 20 ms aus einem entsprechend generierten Targetplugin. Anschließend wird der Burst-Test noch einmal durchgeführt, um festzustellen, welchen Einfluss die Priorität der Maintask auf den Empfang hat. + +Die Verifikation erfolgt wieder mittels CanEasy und Vector CANcaseXL mit Hardwarezeitstempeln. + +\subsection{Steuerthread auf RT-Priorität} +Die Abbildung \ref{fig:cpuload_tx_ts_xc_rt} zeigt, dass eine hohe Systemlast keinen Einfluss auf das Sendeverhalten der \myxc~hat, wenn die Maintask auf Echtzeitpriorität läuft. +Der Mittelwert der Abweichung liegt bei 0,00 ms, die maximale Abweichung beträgt 0,1 ms. +Im Burst-Test hat der Prototyp alle 65535 Nachrichten korrekt empfangen. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{xoraya_tx_cpuload_rt.eps} +\end{minipage} +\caption{Abweichung der Sendezeitstempel der \myxc~mit hoher Systemlast auf Real-Time Priorität} +\label{fig:cpuload_tx_ts_xc_rt} +\end{figure} + +\subsection{Steuerthread auf normaler Priorität} +Die Abbildung \ref{fig:cpuload_tx_ts_xc_norm} zeigt, dass die Systemlast deutlichen Einfluss auf das Sendeverhalten der \myxc~hat, wenn die Maintask mit normaler Priorität läuft. +Der Mittelwert der Abweichung steigt auf 0,03 ms, bei einer maximalen Abweichung von 2 ms. +Noch gravierender wirkt sich die Systemlast auf den Burst-Test aus, den die Maintask nicht auf Echtzeit-Priorität läuft: nur 576 von 66535 Nachrichten wurden korrekt empfangen. +\begin{figure}[hbtp] +\centering +\begin{minipage}[b]{.5\linewidth} +\includegraphics[width=\linewidth]{xoraya_tx_cpuload_norm.eps} +\end{minipage} +\caption{Abweichung der Sendezeitstempel der \myxc~mit hoher Systemlast auf normaler Priorität} +\label{fig:cpuload_tx_ts_xc_norm} +\end{figure} + +\section{Bewertung der Ergebnisse} +\label{sec:resultanalysis} +Zusammenfassend lassen sich die Ergebnisse wie folgt beurteilen: +\begin{itemize} +\item Die Empfangszeitstempel der \myxc~sind präzise, vergleichbar mit dem CANcaseXL von Vector +\item Läuft die Maintask auf höchster Priorität, weist die Aufzeichnung auch bei hoher Systemlast keine Verluste auf. +\item Durch die Hardware-Timer der \myxc~werden Sendeinterval exakt eingehalten +\item Der Schedulability Test lässt Konfigurationen zu, die sehr nahe an der maximalen Busauslastung liegen, obwohl er als pessimistisch gilt. Der praktische Test zeigt, dass der Schedulability Test diese Konfiguration zurecht zulässt. Somit stellt er ein geeignetes Werkzeug zur Überprüfung von Nachrichtenkonfigurationen auf ihre Lauffähigkeit dar. +\end{itemize} diff --git a/Master/Masterarbeit/thesis/tex/thanks.tex b/Master/Masterarbeit/thesis/tex/thanks.tex new file mode 100644 index 0000000..d8520ea --- /dev/null +++ b/Master/Masterarbeit/thesis/tex/thanks.tex @@ -0,0 +1,11 @@ +\newpage\thispagestyle{empty} +\section*{Danksagung} +An dieser Stelle möchte ich mich bei allen Personen bedanken, die mich bei der Erstellung dieser Arbeit unterstützt haben. + +An erster Stelle möchte ich mich bei Herrn Wietzke und Herrn Mayer für die Betreuung und Unterstützung dieser Arbeit bedanken. + +Mein besonderer Dank gilt auch Herrn Hans-Joachim Schleißheimer, der diese Arbeit erst ermöglicht hat. Ebenfalls bedanke ich mich bei meinem Betreuer bei der Schleißheimer GmbH, Herrn Michael Gerhardt, für seine Unterstützung. Weiterhin danke ich Herrn Friedrich Schick, meinem Ansprechpartner bei der X2E GmbH, für die Bereitstellung der Hardware und seine kompetenten Antworten bei meinen Fragen dazu. + +Auch Herrn Benjamin Heckmann gilt mein Dank für seine Anregungen zum Aufbau der Arbeit. + +Abschließend danke ich auch mehr Lebensgefährtin Julia Metz und unseren Familien für Ihre Unterstützung im privaten Umfeld während meines gesamten Studiums.
\ No newline at end of file diff --git a/Master/Masterarbeit/thesis/wi_plakat_fbi_b8190.doc b/Master/Masterarbeit/thesis/wi_plakat_fbi_b8190.doc Binary files differnew file mode 100644 index 0000000..18586b1 --- /dev/null +++ b/Master/Masterarbeit/thesis/wi_plakat_fbi_b8190.doc |
