Added RoutePlanner class diagrams in media

This commit is contained in:
zwarenelle
2024-04-16 16:34:54 +02:00
parent 8b11c7c9a7
commit 68b139834d
2 changed files with 452 additions and 0 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 353 KiB

View File

@@ -0,0 +1,449 @@
<mxfile host="app.diagrams.net" modified="2024-04-16T14:33:51.997Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0" etag="kYbuGHCjWPusFo_e_r77" version="24.2.3" type="google" pages="3">
<diagram id="b2vwGh-wzOtT2GmSavQ4" name="RoutePlanner">
<mxGraphModel dx="1303" dy="811" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="oHsvzEbYLTtGPIinBxxv-1" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=none;endFill=0;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="oHsvzEbYLTtGPIinBxxv-3" target="oHsvzEbYLTtGPIinBxxv-19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="oHsvzEbYLTtGPIinBxxv-3" target="oHsvzEbYLTtGPIinBxxv-9" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="264" />
<mxPoint x="310" y="430" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-3" value="Controller" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1">
<mxGeometry x="40" y="254" width="240" height="130" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-4" value="- map: Map" style="text;strokeColor=#666666;fillColor=#f5f5f5;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontColor=#333333;" parent="oHsvzEbYLTtGPIinBxxv-3" vertex="1">
<mxGeometry y="26" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-6" value="+ getMap(): Map" style="text;strokeColor=#666666;fillColor=#f5f5f5;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontColor=#333333;" parent="oHsvzEbYLTtGPIinBxxv-3" vertex="1">
<mxGeometry y="52" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-7" value="+ fetchMap(socket: Socket): void" style="text;strokeColor=#666666;fillColor=#f5f5f5;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontColor=#333333;" parent="oHsvzEbYLTtGPIinBxxv-3" vertex="1">
<mxGeometry y="78" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-6" value="+ sendRoute(socket: Socket): void" style="text;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-3">
<mxGeometry y="104" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="oHsvzEbYLTtGPIinBxxv-9" target="oHsvzEbYLTtGPIinBxxv-22" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=diamondThin;endFill=1;endSize=14;startSize=14;" parent="1" source="oHsvzEbYLTtGPIinBxxv-15" target="oHsvzEbYLTtGPIinBxxv-19" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=diamondThin;endFill=1;endSize=14;startSize=14;" parent="1" source="oHsvzEbYLTtGPIinBxxv-15" target="oHsvzEbYLTtGPIinBxxv-22" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-15" value="Coordinate" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="390" y="80" width="120" height="104" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-16" value="- x: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-15" vertex="1">
<mxGeometry y="26" width="120" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-17" value="- y: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-15" vertex="1">
<mxGeometry y="52" width="120" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-18" value="- &lt;font&gt;accessible&lt;/font&gt;: bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-15" vertex="1">
<mxGeometry y="78" width="120" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-19" value="Map" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="150" y="93" width="160" height="78" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-20" value="- bottomLeft: Coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-19" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-21" value="- topRight: Coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-19" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-22" value="Route" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="370" y="229" width="160" height="138" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-23" value="- step: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-22" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-7" value="- direction: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-22">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-21" value="- score: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-22">
<mxGeometry y="78" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-2" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-22">
<mxGeometry y="104" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-23" value="+ calculateScore(): Object" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-22">
<mxGeometry y="112" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-24" value="1..*" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="350" y="108" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-25" value="1..*" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry x="440" y="184" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-9" value="Client" style="swimlane;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;startSize=20;" vertex="1" parent="1">
<mxGeometry x="660" y="30" width="330" height="500" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-10" value="Controller" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-9">
<mxGeometry x="47" y="200" width="213" height="86" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-11" value="+ route: Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-10">
<mxGeometry y="26" width="213" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-12" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-10">
<mxGeometry y="52" width="213" height="8" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-13" value="+ deserializeRoute(Object): Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-10">
<mxGeometry y="60" width="213" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-19" value="Host" style="swimlane;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="20" y="30" width="600" height="790" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="RGRzZt-QXR7BQQPhspF7-19" target="RGRzZt-QXR7BQQPhspF7-31">
<mxGeometry relative="1" as="geometry">
<mxPoint x="427.5" y="599" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-9" value="Routing" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="RGRzZt-QXR7BQQPhspF7-19" vertex="1">
<mxGeometry x="310" y="380" width="240" height="164" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-10" value="- route: Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-9" vertex="1">
<mxGeometry y="26" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-11" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="oHsvzEbYLTtGPIinBxxv-9" vertex="1">
<mxGeometry y="52" width="240" height="8" as="geometry" />
</mxCell>
<mxCell id="oHsvzEbYLTtGPIinBxxv-12" value="+ tryRoute(Map): Route[0..*]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="oHsvzEbYLTtGPIinBxxv-9" vertex="1">
<mxGeometry y="60" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-46" value="+ pickOptimalRoute(Route[0..*): Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-9">
<mxGeometry y="86" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-5" value="+ serializeRoute(): Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-9">
<mxGeometry y="112" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-8" value="+ sendRoute(): Object" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="oHsvzEbYLTtGPIinBxxv-9">
<mxGeometry y="138" width="240" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="RGRzZt-QXR7BQQPhspF7-19" source="RGRzZt-QXR7BQQPhspF7-31" target="RGRzZt-QXR7BQQPhspF7-39">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="257.5" y="625" />
<mxPoint x="257.5" y="625" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-31" value="ConstraintVerifier" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-19">
<mxGeometry x="312.5" y="610" width="230" height="112" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-32" value="- constraints: Constraint[0..*]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-31">
<mxGeometry y="26" width="230" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-35" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-31">
<mxGeometry y="52" width="230" height="8" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-36" value="+ calculateScore(): Object" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-31">
<mxGeometry y="60" width="230" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-45" value="+ runConstraintChecks(): Object" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-31">
<mxGeometry y="86" width="230" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-39" value="Constraint" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-19">
<mxGeometry x="57.5" y="610" width="180" height="86" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-40" value="- id: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-39">
<mxGeometry y="26" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-41" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-39">
<mxGeometry y="52" width="180" height="8" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-42" value="+ verify(Route, Constraint): bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="RGRzZt-QXR7BQQPhspF7-39">
<mxGeometry y="60" width="180" height="26" as="geometry" />
</mxCell>
<mxCell id="RGRzZt-QXR7BQQPhspF7-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="RGRzZt-QXR7BQQPhspF7-31" target="oHsvzEbYLTtGPIinBxxv-22">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="590" y="610" />
<mxPoint x="590" y="298" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Server">
<mxGraphModel dx="1042" dy="1818" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LGCF4mzd5y_TjdDjbk_y-1" target="6-V2XBTVPyV8Xc5B4nk1-9" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LGCF4mzd5y_TjdDjbk_y-1" target="6-V2XBTVPyV8Xc5B4nk1-0" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="120" y="170" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LGCF4mzd5y_TjdDjbk_y-1" target="6-V2XBTVPyV8Xc5B4nk1-5" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="120" y="170" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-33" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=none;endFill=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LGCF4mzd5y_TjdDjbk_y-1" target="6-V2XBTVPyV8Xc5B4nk1-24" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="LGCF4mzd5y_TjdDjbk_y-1" target="DnvZMUHU4IIgcFR9kaoe-0" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="490" y="170" />
<mxPoint x="490" y="250" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LGCF4mzd5y_TjdDjbk_y-1" value="Host" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="260" y="160" width="200" height="112" as="geometry" />
</mxCell>
<mxCell id="LGCF4mzd5y_TjdDjbk_y-2" value="- map: Map" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="LGCF4mzd5y_TjdDjbk_y-1" vertex="1">
<mxGeometry y="26" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="LGCF4mzd5y_TjdDjbk_y-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="LGCF4mzd5y_TjdDjbk_y-1" vertex="1">
<mxGeometry y="52" width="200" height="8" as="geometry" />
</mxCell>
<mxCell id="LGCF4mzd5y_TjdDjbk_y-4" value="+ getMap(): Map" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="LGCF4mzd5y_TjdDjbk_y-1" vertex="1">
<mxGeometry y="60" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-35" value="+ fetchMap(socket: Socket): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="LGCF4mzd5y_TjdDjbk_y-1" vertex="1">
<mxGeometry y="86" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="DnvZMUHU4IIgcFR9kaoe-0" target="6-V2XBTVPyV8Xc5B4nk1-41" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="DnvZMUHU4IIgcFR9kaoe-0" value="Routing" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="530" y="240" width="200" height="86" as="geometry" />
</mxCell>
<mxCell id="DnvZMUHU4IIgcFR9kaoe-1" value="- route: Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="DnvZMUHU4IIgcFR9kaoe-0" vertex="1">
<mxGeometry y="26" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="DnvZMUHU4IIgcFR9kaoe-2" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="DnvZMUHU4IIgcFR9kaoe-0" vertex="1">
<mxGeometry y="52" width="200" height="8" as="geometry" />
</mxCell>
<mxCell id="DnvZMUHU4IIgcFR9kaoe-3" value="+ getOptimalRoute(Map): Route" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="DnvZMUHU4IIgcFR9kaoe-0" vertex="1">
<mxGeometry y="60" width="200" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-0" value="DB" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="40" y="200" width="160" height="112" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-1" value="- hostname: string" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-0" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-4" value="- acctoken: string" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-0" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-2" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="6-V2XBTVPyV8Xc5B4nk1-0" vertex="1">
<mxGeometry y="78" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-3" value="+ storeMap(Map): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-0" vertex="1">
<mxGeometry y="86" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-5" value="WebServer" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="50" y="23" width="160" height="112" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-6" value="- port: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-5" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="6-V2XBTVPyV8Xc5B4nk1-5" vertex="1">
<mxGeometry y="52" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-8" value="+ start(port): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-5" vertex="1">
<mxGeometry y="60" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-17" value="+ stop(port): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-5" vertex="1">
<mxGeometry y="86" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-9" value="Socket&lt;div&gt;&amp;lt;&amp;lt;System.Net.Sockets&amp;gt;&amp;gt;&lt;/div&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="280" y="346" width="160" height="92" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-10" value="- port: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-9" vertex="1">
<mxGeometry y="40" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-13" value="- uri: Uri" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-9" vertex="1">
<mxGeometry y="66" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=diamondThin;endFill=1;endSize=14;startSize=14;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="6-V2XBTVPyV8Xc5B4nk1-19" target="6-V2XBTVPyV8Xc5B4nk1-24" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=diamondThin;endFill=1;endSize=14;startSize=14;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="6-V2XBTVPyV8Xc5B4nk1-19" target="6-V2XBTVPyV8Xc5B4nk1-41" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-19" value="Coordinate" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="570" y="-14" width="120" height="104" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-20" value="- x: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-19" vertex="1">
<mxGeometry y="26" width="120" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-23" value="- y: double" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-19" vertex="1">
<mxGeometry y="52" width="120" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-32" value="- &lt;font&gt;accessible&lt;/font&gt;: bool" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-19" vertex="1">
<mxGeometry y="78" width="120" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-24" value="Map" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="330" y="-1" width="160" height="78" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-25" value="- bottomLeft: Coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-24" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-27" value="- topRight: Coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-24" vertex="1">
<mxGeometry y="52" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-41" value="Route" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="550" y="135" width="160" height="52" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-42" value="- step: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="6-V2XBTVPyV8Xc5B4nk1-41" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-46" value="1..*" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="530" y="14" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="6-V2XBTVPyV8Xc5B4nk1-47" value="1..*" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="620" y="90" width="40" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="NZ8xaduyNuc9u83wlWSE" name="RPi">
<mxGraphModel dx="1042" dy="649" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="nuiBZVyIJuXjBIDSjya6-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="PtG9ZuHJoynKEdjHE9an-1" target="PtG9ZuHJoynKEdjHE9an-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="PtG9ZuHJoynKEdjHE9an-1" target="S96u-mRK2Ird-r59Ihje-1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="290" y="193" />
<mxPoint x="290" y="193" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="DMqO5KGwMZA0DoNZ2cJh-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="PtG9ZuHJoynKEdjHE9an-1" target="RjszVI--jsZFZfARKiqW-15" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="530" y="170" />
<mxPoint x="530" y="130" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="DMqO5KGwMZA0DoNZ2cJh-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="PtG9ZuHJoynKEdjHE9an-1" target="RjszVI--jsZFZfARKiqW-11" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="530" y="170" />
<mxPoint x="530" y="290" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="SKB4IS2vpbkl0qt0brt--1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="PtG9ZuHJoynKEdjHE9an-1" target="RjszVI--jsZFZfARKiqW-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-1" value="Client" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="350" y="150" width="160" height="86" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-2" value="- hostname: string" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="PtG9ZuHJoynKEdjHE9an-1" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="PtG9ZuHJoynKEdjHE9an-1" vertex="1">
<mxGeometry y="52" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-4" value="+ sendMap(Map): int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="PtG9ZuHJoynKEdjHE9an-1" vertex="1">
<mxGeometry y="60" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-6" value="Socket&lt;div&gt;&amp;lt;&amp;lt;System.Net.Sockets&amp;gt;&amp;gt;&lt;/div&gt;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="350" y="10" width="160" height="92" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-7" value="- port: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="PtG9ZuHJoynKEdjHE9an-6" vertex="1">
<mxGeometry y="40" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="PtG9ZuHJoynKEdjHE9an-8" value="- uri: Uri" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="PtG9ZuHJoynKEdjHE9an-6" vertex="1">
<mxGeometry y="66" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-1" value="MotorDriver" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="40" y="150" width="220" height="190" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-2" value="- portL: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="26" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-5" value="- portR: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="52" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="78" width="220" height="8" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-7" value="+ forward(port: int, speed: int&lt;span style=&quot;background-color: initial;&quot;&gt;): void&lt;/span&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="86" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="DMqO5KGwMZA0DoNZ2cJh-1" value="+ reverse(port: int, speed: int&lt;span style=&quot;background-color: initial;&quot;&gt;): void&lt;/span&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="112" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-9" value="+ setSpeed(port: int, speed: int&lt;span style=&quot;background-color: initial;&quot;&gt;)&lt;/span&gt;: void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="138" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="S96u-mRK2Ird-r59Ihje-4" value="+ stop(port: int): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="S96u-mRK2Ird-r59Ihje-1" vertex="1">
<mxGeometry y="164" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-2" value="Localization" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="290" y="300" width="220" height="86" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-4" value="- current: Coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-2" vertex="1">
<mxGeometry y="26" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="RjszVI--jsZFZfARKiqW-2" vertex="1">
<mxGeometry y="52" width="220" height="8" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-10" value="+ getPos(): Coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-2" vertex="1">
<mxGeometry y="60" width="220" height="26" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-11" value="Gyro" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="560" y="280" width="160" height="86" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-12" value="- port: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-11" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-13" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="RjszVI--jsZFZfARKiqW-11" vertex="1">
<mxGeometry y="52" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-14" value="+ read(): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-11" vertex="1">
<mxGeometry y="60" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="DMqO5KGwMZA0DoNZ2cJh-7" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;dashed=1;" parent="1" source="RjszVI--jsZFZfARKiqW-15" target="DMqO5KGwMZA0DoNZ2cJh-6" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-15" value="Ultrasonic" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="560" y="120" width="160" height="112" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-16" value="- port: int" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-15" vertex="1">
<mxGeometry y="26" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-17" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="RjszVI--jsZFZfARKiqW-15" vertex="1">
<mxGeometry y="52" width="160" height="8" as="geometry" />
</mxCell>
<mxCell id="DMqO5KGwMZA0DoNZ2cJh-3" value="+ init(): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-15" vertex="1">
<mxGeometry y="60" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="RjszVI--jsZFZfARKiqW-18" value="+ read(): void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="RjszVI--jsZFZfARKiqW-15" vertex="1">
<mxGeometry y="86" width="160" height="26" as="geometry" />
</mxCell>
<mxCell id="DMqO5KGwMZA0DoNZ2cJh-6" value="Serial driver" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=18;" parent="1" vertex="1">
<mxGeometry x="620" y="10" width="100" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>