Files
docs-v2/images/system-diagram.svg
2025-11-28 21:31:19 -05:00

4 lines
53 KiB
XML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="761px" height="726px" viewBox="0 0 761 726" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0&quot; scale=&quot;1&quot; border=&quot;0&quot; version=&quot;29.2.1&quot;&gt;&#xA; &lt;diagram name=&quot;Page-1&quot; id=&quot;i9NMFHI7oyaaUYboOMHq&quot;&gt;&#xA; &lt;mxGraphModel dx=&quot;943&quot; dy=&quot;668&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;850&quot; pageHeight=&quot;1100&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#xA; &lt;root&gt;&#xA; &lt;mxCell id=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-4&quot; parent=&quot;1&quot; style=&quot;shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;255&quot; width=&quot;750&quot; x=&quot;50&quot; y=&quot;560&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-3&quot; parent=&quot;1&quot; style=&quot;shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;255&quot; width=&quot;750&quot; x=&quot;50&quot; y=&quot;220&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-21&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-1&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;jumpStyle=sharp;jumpSize=11;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-2&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot;&gt;&#xA; &lt;mxPoint x=&quot;650&quot; y=&quot;430&quot; /&gt;&#xA; &lt;mxPoint x=&quot;332&quot; y=&quot;430&quot; /&gt;&#xA; &lt;/Array&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-1&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Pangolin&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;120&quot; width=&quot;120&quot; x=&quot;590&quot; y=&quot;270&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-2&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;align=left;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Gerbil&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;120&quot; width=&quot;230&quot; x=&quot;160&quot; y=&quot;270&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-9&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-8&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-10&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-7&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-11&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-6&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-44&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.348;entryY=1.012;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;dashed=1;dashPattern=8 8;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-2&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;240&quot; y=&quot;400&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-47&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-5&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;jumpStyle=line;jumpSize=11;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-15&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;Array as=&quot;points&quot;&gt;&#xA; &lt;mxPoint x=&quot;270&quot; y=&quot;510&quot; /&gt;&#xA; &lt;mxPoint x=&quot;435&quot; y=&quot;510&quot; /&gt;&#xA; &lt;/Array&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-5&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Newt&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;120&quot; width=&quot;120&quot; x=&quot;180&quot; y=&quot;627.5&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-6&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;http 80&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;70&quot; width=&quot;120&quot; x=&quot;550&quot; y=&quot;736&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-7&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;https 443&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;70&quot; width=&quot;120&quot; x=&quot;550&quot; y=&quot;652.5&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-8&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;http 8080&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;70&quot; width=&quot;120&quot; x=&quot;550&quot; y=&quot;570&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-20&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-15&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-1&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-22&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-15&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.3333333333333333;entryDx=0;entryDy=0;entryPerimeter=0;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-26&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;475&quot; y=&quot;40&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-24&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-15&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;240&quot; y=&quot;390&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-15&quot; parent=&quot;1&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;align=left;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; Traefik&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;80&quot; width=&quot;190&quot; x=&quot;340&quot; y=&quot;290&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-26&quot; parent=&quot;1&quot; style=&quot;shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;User&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;30&quot; x=&quot;305&quot; y=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-28&quot; parent=&quot;1&quot; style=&quot;shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;User&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;60&quot; width=&quot;31&quot; x=&quot;514&quot; y=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-30&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;OaWGxQ0N4_RKAhKiknkE-15&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.3333333333333333;entryDx=0;entryDy=0;entryPerimeter=0;&quot; target=&quot;OaWGxQ0N4_RKAhKiknkE-28&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-31&quot; parent=&quot;1&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;&quot; value=&quot;&amp;lt;font style=&amp;quot;font-size: 19px; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Edge Server&amp;lt;/font&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;20&quot; width=&quot;180&quot; x=&quot;335&quot; y=&quot;537&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-32&quot; parent=&quot;1&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;&quot; value=&quot;&amp;lt;font style=&amp;quot;font-size: 19px; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Cloud VPS&amp;lt;/font&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;20&quot; width=&quot;180&quot; x=&quot;335&quot; y=&quot;200&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-42&quot; parent=&quot;1&quot; style=&quot;triangle;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Badger&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;55&quot; width=&quot;60&quot; x=&quot;470&quot; y=&quot;302.5&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-48&quot; parent=&quot;1&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Websocket&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; x=&quot;440&quot; y=&quot;490&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-62&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;37&quot; width=&quot;88&quot; x=&quot;165&quot; y=&quot;498&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-63&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-62&quot; style=&quot;sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#505050;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.lock_protected;&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;37&quot; width=&quot;28&quot; x=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-64&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-62&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;&quot; value=&quot;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;WireGuard&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;30&quot; width=&quot;60&quot; y=&quot;7&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; connectable=&quot;0&quot; parent=&quot;1&quot; style=&quot;group&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;105&quot; width=&quot;120&quot; x=&quot;690&quot; y=&quot;95&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-61&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; style=&quot;shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;&quot; value=&quot;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;105&quot; width=&quot;113.6842105263158&quot; x=&quot;6.3157894736842115&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-65&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Container&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;22.4&quot; width=&quot;63.37&quot; x=&quot;22&quot; y=&quot;16&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-66&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; style=&quot;shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;&quot; value=&quot;&amp;lt;span style=&amp;quot;background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));&amp;quot;&amp;gt;Server&amp;lt;/span&amp;gt;&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;22.400000000000002&quot; width=&quot;75.78947368421053&quot; x=&quot;22.263157894736846&quot; y=&quot;43&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-67&quot; edge=&quot;1&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; style=&quot;endArrow=classic;startArrow=classic;html=1;rounded=0;dashed=1;&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;20.210526315789476&quot; y=&quot;102.9&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;51.789473684210535&quot; y=&quot;67.9&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-68&quot; connectable=&quot;0&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-67&quot; style=&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];&quot; value=&quot;VPN&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; x=&quot;0.3807&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint as=&quot;offset&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-69&quot; edge=&quot;1&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; style=&quot;endArrow=classic;startArrow=classic;html=1;rounded=0;&quot; value=&quot;&quot;&gt;&#xA; &lt;mxGeometry height=&quot;50&quot; relative=&quot;1&quot; width=&quot;50&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;69.47368421052632&quot; y=&quot;102.9&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;101.05263157894738&quot; y=&quot;67.9&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-70&quot; connectable=&quot;0&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-69&quot; style=&quot;edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];&quot; value=&quot;HTTP&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; x=&quot;0.2276&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint as=&quot;offset&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;OaWGxQ0N4_RKAhKiknkE-71&quot; parent=&quot;OaWGxQ0N4_RKAhKiknkE-72&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;&quot; value=&quot;KEY:&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry height=&quot;21&quot; width=&quot;37.89473684210527&quot; x=&quot;3&quot; y=&quot;-1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;/root&gt;&#xA; &lt;/mxGraphModel&gt;&#xA; &lt;/diagram&gt;&#xA;&lt;/mxfile&gt;&#xA;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-4"><g transform="translate(0.5,0.5)"><rect x="0" y="470" width="750" height="255" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/><path d="M 75 470 L 75 725 M 675 470 L 675 725" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-3"><g transform="translate(0.5,0.5)"><rect x="0" y="130" width="750" height="255" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/><path d="M 75 130 L 75 385 M 675 130 L 675 385" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-21"><g transform="translate(0.5,0.5)"><path d="M 600 306.37 L 600 340 L 282.5 340 L 282.5 306.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 600 301.12 L 603.5 308.12 L 600 306.37 L 596.5 308.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 282.5 301.12 L 286 308.12 L 282.5 306.37 L 279 308.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-1"><g transform="translate(0.5,0.5)"><rect x="540" y="180" width="120" height="120" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 240px; margin-left: 541px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Pangolin</span></div></div></div></div></foreignObject><text x="600" y="244" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Pangolin</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-2"><g transform="translate(0.5,0.5)"><rect x="110" y="180" width="230" height="120" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 228px; height: 1px; padding-top: 240px; margin-left: 112px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">      Gerbil</span></div></div></div></div></foreignObject><text x="112" y="244" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px">      Gerbil</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-9"><g transform="translate(0.5,0.5)"><path d="M 250 597.5 L 375 597.5 L 375 515 L 493.63 515" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 498.88 515 L 491.88 518.5 L 493.63 515 L 491.88 511.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-10"><g transform="translate(0.5,0.5)"><path d="M 250 597.5 L 493.63 597.5" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 498.88 597.5 L 491.88 601 L 493.63 597.5 L 491.88 594 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-11"><g transform="translate(0.5,0.5)"><path d="M 250 597.5 L 375 597.5 L 375 681 L 493.63 681" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 498.88 681 L 491.88 684.5 L 493.63 681 L 491.88 677.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-44"><g transform="translate(0.5,0.5)"><path d="M 190 531.13 L 190.04 307.81" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="8 8" pointer-events="stroke"/><path d="M 190 536.38 L 186.5 529.38 L 190 531.13 L 193.5 529.38 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 190.04 302.56 L 193.54 309.56 L 190.04 307.81 L 186.54 309.56 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-47"><g transform="translate(0.5,0.5)"><path d="M 220 537.5 L 220 420 L 385 420 L 385 345.5 M 379.5 345.5 L 390.5 345.5 M 390.5 334.5 L 379.5 334.5 M 385 334.5 L 385 334.5 L 385 286.37" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 385 281.12 L 388.5 288.12 L 385 286.37 L 381.5 288.12 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-5"><g transform="translate(0.5,0.5)"><rect x="130" y="537.5" width="120" height="120" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 598px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Newt</span></div></div></div></foreignObject><text x="190" y="601" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Newt</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-6"><g transform="translate(0.5,0.5)"><rect x="500" y="646" width="120" height="70" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 681px; margin-left: 501px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">http 80</span></div></div></div></foreignObject><text x="560" y="685" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">http 80</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-7"><g transform="translate(0.5,0.5)"><rect x="500" y="562.5" width="120" height="70" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 598px; margin-left: 501px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">https 443</span></div></div></div></foreignObject><text x="560" y="601" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">https 443</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-8"><g transform="translate(0.5,0.5)"><rect x="500" y="480" width="120" height="70" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 515px; margin-left: 501px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">http 8080</span></div></div></div></foreignObject><text x="560" y="519" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">http 8080</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-20"><g transform="translate(0.5,0.5)"><path d="M 486.37 240 L 533.63 240" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 481.12 240 L 488.12 236.5 L 486.37 240 L 488.12 243.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 538.88 240 L 531.88 243.5 L 533.63 240 L 531.88 236.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-22"><g transform="translate(0.5,0.5)"><path d="M 432.5 200 L 432.5 20 L 291.37 20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 286.12 20 L 293.12 16.5 L 291.37 20 L 293.12 23.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-24"><g transform="translate(0.5,0.5)"><path d="M 290 240 L 190 240 L 190 293.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 190 298.88 L 186.5 291.88 L 190 293.63 L 193.5 291.88 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-15"><g transform="translate(0.5,0.5)"><rect x="290" y="200" width="190" height="80" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 188px; height: 1px; padding-top: 240px; margin-left: 292px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">         Traefik</span></div></div></div></foreignObject><text x="292" y="244" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px">         Traefik</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-26"><g transform="translate(0.5,0.5)"><ellipse cx="270" cy="7.5" rx="7.5" ry="7.5" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/><path d="M 270 15 L 270 40 M 270 20 L 255 20 M 270 20 L 285 20 M 270 40 L 255 60 M 270 40 L 285 60" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 270px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">User</span></div></div></div></foreignObject><text x="270" y="79" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">User</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-28"><g transform="translate(0.5,0.5)"><ellipse cx="479.5" cy="7.5" rx="7.75" ry="7.5" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/><path d="M 479.5 15 L 479.5 40 M 479.5 20 L 464 20 M 479.5 20 L 495 20 M 479.5 40 L 464 60 M 479.5 40 L 495 60" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 480px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">User</span></div></div></div></foreignObject><text x="480" y="79" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">User</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-30"><g transform="translate(0.5,0.5)"><path d="M 432.5 200 L 432.5 20 L 457.63 20" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 462.88 20 L 455.88 23.5 L 457.63 20 L 455.88 16.5 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-31"><g transform="translate(0.5,0.5)"><rect x="285" y="447" width="180" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 457px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 19px; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Edge Server</font></div></div></div></foreignObject><text x="375" y="461" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Edge Server</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-32"><g transform="translate(0.5,0.5)"><rect x="285" y="110" width="180" height="20" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><font style="font-size: 19px; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Cloud VPS</font></div></div></div></foreignObject><text x="375" y="124" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Cloud VPS</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-42"><g transform="translate(0.5,0.5)"><path d="M 420 212.5 L 480 240 L 420 267.5 Z" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 240px; margin-left: 421px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Badger</span></div></div></div></foreignObject><text x="450" y="244" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Badger</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-48"><g transform="translate(0.5,0.5)"><rect x="390" y="400" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 415px; margin-left: 391px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Websocket</span></div></div></div></div></foreignObject><text x="420" y="419" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Websocket</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-62"><g transform="translate(0.5,0.5)"/><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-63"><g transform="translate(0.5,0.5)"><rect x="175" y="408" width="28" height="37" fill="none" stroke="none" pointer-events="all"/><path d="M 196.96 424.39 L 196.96 418.57 C 196.96 415.1 193.82 411.17 189.02 411.17 C 184.18 411.17 181.04 415.08 181.04 418.77 L 181.04 424.39 Z M 177.16 445 C 176.01 445 175 444.04 175 442.93 L 175 426.44 C 175 425.36 176.01 424.39 177.12 424.39 L 177.75 424.39 L 177.75 418.67 C 177.75 413.04 182.78 408 188.85 408 C 195.43 408 200.25 412.98 200.25 418.68 L 200.25 424.39 L 200.86 424.39 C 201.97 424.39 203 425.31 203 426.5 L 203 442.91 C 203 444.06 201.98 445 200.84 445 Z" fill="#505050" style="fill: light-dark(rgb(80, 80, 80), rgb(168, 168, 168));" stroke="none" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-64"><g transform="translate(0.5,0.5)"><rect x="115" y="415" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 430px; margin-left: 116px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><div><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">WireGuard</span></div></div></div></div></foreignObject><text x="145" y="434" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">WireGuard</text></switch></g></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-72"><g transform="translate(0.5,0.5)"/><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-61"><g transform="translate(0.5,0.5)"><path d="M 646.32 5 L 730 5 L 760 35 L 760 110 L 646.32 110 L 646.32 5 Z" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 730 5 L 730 35 L 760 35 Z" fill-opacity="0.05" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(237, 237, 237));" stroke="none" pointer-events="all"/><path d="M 730 5 L 730 35 L 760 35" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-65"><g transform="translate(0.5,0.5)"><rect x="662" y="21" width="63.37" height="22.4" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 61px; height: 1px; padding-top: 32px; margin-left: 663px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Container</span></div></div></div></foreignObject><text x="694" y="36" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Container</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-66"><g transform="translate(0.5,0.5)"><rect x="662.26" y="48" width="75.79" height="22.4" fill="#ffffff" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" pointer-events="all"/><path d="M 670.26 48 L 670.26 70.4 M 730.05 48 L 730.05 70.4" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 59px; height: 1px; padding-top: 59px; margin-left: 671px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212));">Server</span></div></div></div></foreignObject><text x="701" y="63" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">Server</text></switch></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-67"><g transform="translate(0.5,0.5)"><path d="M 664.48 103.17 L 687.52 77.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 660.96 107.07 L 663.05 99.53 L 664.48 103.17 L 668.25 104.22 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 691.04 73.73 L 688.95 81.27 L 687.52 77.63 L 683.75 76.58 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-68"><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 84px; margin-left: 683px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">VPN</div></div></div></foreignObject><text x="683" y="87" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="11px" text-anchor="middle">VPN</text></switch></g></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-69"><g transform="translate(0.5,0.5)"><path d="M 713.74 103.17 L 736.79 77.63" fill="none" stroke="#000000" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 710.22 107.07 L 712.31 99.53 L 713.74 103.17 L 717.51 104.22 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 740.3 73.73 L 738.21 81.27 L 736.79 77.63 L 733.02 76.58 Z" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-70"><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 87px; margin-left: 729px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; background-color: #ffffff; "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); white-space: nowrap; ">HTTP</div></div></div></foreignObject><text x="729" y="90" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="11px" text-anchor="middle">HTTP</text></switch></g></g></g></g><g data-cell-id="OaWGxQ0N4_RKAhKiknkE-71"><g transform="translate(0.5,0.5)"><rect x="643" y="4" width="37.89" height="21" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 36px; height: 1px; padding-top: 15px; margin-left: 644px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">KEY:</div></div></div></foreignObject><text x="662" y="18" fill="light-dark(#000000, #ffffff)" font-family="Helvetica" font-size="12px" text-anchor="middle">KEY:</text></switch></g></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>