<mxfile host="Electron">
  <diagram name="Page-1" id="vo9AeT3_SMykp3yz6ab-">
    <mxGraphModel dx="3393" dy="268" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_CKmrf95zYU6nHkbpSbu-1" parent="1" style="swimlane;whiteSpace=wrap;html=1;gradientColor=#99FF33;fontStyle=2" value="Architecture" vertex="1">
          <mxGeometry height="1100" width="840" x="-850" y="1100" as="geometry">
            <mxRectangle height="30" width="90" x="-843" y="1080" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-47" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=ext;double=1;rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#000033;gradientDirection=south;opacity=10;arcSize=2;" value="" vertex="1">
          <mxGeometry height="1010" width="820" x="10" y="80" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-50" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=default;" value="IOT/Sensor" vertex="1">
          <mxGeometry height="60" width="120" x="60" y="250" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-51" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-55">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-52" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="&amp;nbsp;MQTT Broker&lt;br&gt;  (EMQX / HiveMQ)" vertex="1">
          <mxGeometry height="40" width="120" x="440" y="260" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-53" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-57">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-54" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-59">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-55" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Kafka Streaming Layer" vertex="1">
          <mxGeometry height="40" width="120" x="440" y="350" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-56" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-92">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="345" y="640" />
              <mxPoint x="500" y="640" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-57" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Ingest Svc" vertex="1">
          <mxGeometry height="30" width="70" x="310" y="430" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-58" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-85">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-59" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Analytics&lt;div&gt;&amp;nbsp;Svc&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="40" width="80" x="460" y="425" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-60" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-62" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-87">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="750" y="445" />
              <mxPoint x="750" y="405" />
              <mxPoint x="720" y="405" />
            </Array>
            <mxPoint x="800" y="380" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-61" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-62" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-92">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="705" y="460" />
              <mxPoint x="705" y="640" />
              <mxPoint x="500" y="640" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-62" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#dae8fc;strokeColor=default;" value="&lt;blockquote style=&quot;margin: 0px 0px 0px 40px; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; padding: 0px;&quot;&gt;Rules Engine Svc&lt;/blockquote&gt;" vertex="1">
          <mxGeometry height="30" width="150" x="595" y="430" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-63" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-70">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="500" y="820" />
              <mxPoint x="310" y="820" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-64" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-74">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="500" y="820" />
              <mxPoint x="685" y="820" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-65" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-72">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-66" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-80">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-67" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-82">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-68" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=default;" value="&amp;nbsp;(Graph DB)&lt;br&gt;      Neo4j" vertex="1">
          <mxGeometry height="60" width="120" x="440" y="730" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-69" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-94">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-70" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="API" vertex="1">
          <mxGeometry height="30" width="70" x="275" y="855" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-71" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-72" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-70">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-72" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Asset" vertex="1">
          <mxGeometry height="30" width="70" x="465" y="855" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-73" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-74" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-70">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="650" y="915" />
              <mxPoint x="420" y="915" />
              <mxPoint x="420" y="870" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-74" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Simulation" vertex="1">
          <mxGeometry height="30" width="70" x="650" y="890" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-75" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Front End 3D" vertex="1">
          <mxGeometry height="30" width="70" x="275" y="1050" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-76" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.564;entryY=0.075;entryDx=0;entryDy=0;entryPerimeter=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-62">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-77" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-78" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-70">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-78" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=default;" value="&lt;li data-section-id=&quot;jkenkn&quot; data-start=&quot;805&quot; data-end=&quot;821&quot;&gt;TanStack Query&lt;/li&gt;&lt;li data-section-id=&quot;nv6xmn&quot; data-start=&quot;822&quot; data-end=&quot;843&quot;&gt;Socket.IO/WebSocket&lt;/li&gt;&lt;li data-section-id=&quot;nv6xmn&quot; data-start=&quot;822&quot; data-end=&quot;843&quot;&gt;NestJS&lt;/li&gt;" vertex="1">
          <mxGeometry height="60" width="200" x="30" y="840" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-79" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-70">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="685" y="820" />
              <mxPoint x="310" y="820" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-80" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=default;" value="TimeScalDB&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;" vertex="1">
          <mxGeometry height="60" width="120" x="625" y="730" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-81" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-70">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-82" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=default;" value="MinIO" vertex="1">
          <mxGeometry height="60" width="120" x="250" y="730" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-83" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-85" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-62">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-84" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-85" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-107">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-85" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#dae8fc;strokeColor=default;" value="AI Model" vertex="1">
          <mxGeometry height="60" width="120" x="440" y="490" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-86" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-87" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-52">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-87" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;align=center;size=0.05263157894736842;fillColor=#dae8fc;strokeColor=default;" value="AI Model for Automation and Governance" vertex="1">
          <mxGeometry height="60" width="190" x="625" y="310" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-88" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-75">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-89" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Cache Redis" vertex="1">
          <mxGeometry height="20" width="80" x="270" y="1000" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-90" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-68">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-91" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-68" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-92" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Cache Redis" vertex="1">
          <mxGeometry height="20" width="80" x="460" y="680" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-93" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-94" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-89">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-94" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Role-Based Access Control RBAC" vertex="1">
          <mxGeometry height="20" width="220" x="200" y="950" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-95" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-96" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-94">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-96" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="JWT , OAuth2" vertex="1">
          <mxGeometry height="20" width="120" x="20" y="950" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-97" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-50" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-52" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="310" y="300" as="sourcePoint" />
            <mxPoint x="360" y="250" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-98" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-99" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=default;">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="318" y="280" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-99" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=offPageConnector;whiteSpace=wrap;html=1;size=0.26666666666666666;fillColor=#dae8fc;strokeColor=default;" value="Device ID&lt;div&gt;Certificate&lt;/div&gt;&lt;div&gt;Secret&lt;/div&gt;&lt;div&gt;Topic Permission&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" vertex="1">
          <mxGeometry height="150" width="65" x="285" y="110" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-100" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-101" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-55">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-101" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#dae8fc;strokeColor=default;" value="SASL Authentication" vertex="1">
          <mxGeometry height="40" width="160" x="220" y="350" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-106" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-107" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-92">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-107" parent="_CKmrf95zYU6nHkbpSbu-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=default;" value="Kafka Streaming Layer" vertex="1">
          <mxGeometry height="40" width="120" x="440" y="580" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-114" edge="1" parent="_CKmrf95zYU6nHkbpSbu-1" source="_CKmrf95zYU6nHkbpSbu-115" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#dae8fc;strokeColor=default;" target="_CKmrf95zYU6nHkbpSbu-85">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_CKmrf95zYU6nHkbpSbu-115" parent="_CKmrf95zYU6nHkbpSbu-1" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;fillColor=#a0522d;strokeColor=#6D1F00;fontColor=#ffffff;" value="&lt;font style=&quot;color: rgb(0, 0, 0);&quot;&gt;AI&lt;/font&gt;" vertex="1">
          <mxGeometry height="20" width="10" x="410" y="510" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
