diff --git a/src/contents.tex b/src/contents.tex
index b08498ea0c4370d020d55fa3ba77bfc88fda7c99..bf020b938791bec88b92249abac0fe98d73d9000 100644
--- a/src/contents.tex
+++ b/src/contents.tex
@@ -10,17 +10,19 @@
 
 % Kötelező részek
 % Ha nem szeretnéd ezeket a részeket feltüntetni a tartalomjegyzékben, akkor egyszerűen töröld az \addcontentsline kezdetű sorokat.
-\includepdf{./images/temabejelento.pdf}
+\clearpage
 \addcontentsline{toc}{chapter}{Témabejelentő}
+\includepdf{./images/temabejelento.pdf}
 
 % Hogy kétoldalas nyomtatás esetéb a témabejelentő közvetlenül a címlap után lehessen
 % \ureslap
 
 % A kétoldalas témabejelentő miatt a nyilatkozat oldalszáma 3
 % \setcounter{page}{3}
-
+\clearpage
 \addcontentsline{toc}{chapter}{Nyilatkozat}
 \input{contents/1-nyilatkozat}
+\clearpage
 \addcontentsline{toc}{chapter}{Kivonat}
 %TC:endignore
 \input{contents/2-kivonat}
@@ -48,8 +50,9 @@
 %TC:ignore
 
 % Hivatkozásjegyzék/bibliográfia
+\clearpage
+\addcontentsline{toc}{chapter}{Irodalom}
 \printbibliography
-\addcontentsline{toc}{chapter}{Felhasznált irodalom}
 
 % Mellékletek - ha nincs mellékleted, töröld az alábbi részt
 \appendix
diff --git a/src/contents/5-elozmenyek.tex b/src/contents/5-elozmenyek.tex
index cefe09cccf90cc605a5df2ed2693a46bdecd4b10..8c3b6551ddc342378eccd18f8e1c9c6d4d084ab5 100644
--- a/src/contents/5-elozmenyek.tex
+++ b/src/contents/5-elozmenyek.tex
@@ -527,7 +527,24 @@ az infravörös frekvenciatartományban érzékelhető. Ezt kihasználva jelenl
 és mozgásérzékelés lehetséges egy hőérzékelő elem segítségével, ami a kapott intenzitást feszültségszintre kódolja.
 A mozgásérzékeléshez a PIR érzékelő szenzora
 elé helyezett prizma által kijelölt zónák közötti hősugárzás-különbségek
-mérésével érhető el. \cite{pir-history} A behatolásjelzés megbízhatóságának
+mérésével érhető el. \cite{pir-history}
+A szenzor működését \aref{diag:pir}. ábra és a detektálás módszerét \aref{diag:pir-det}. ábra szemlélteti.
+
+\begin{figure}[htbp!]
+	\centering
+	\includegraphics[width=0.5\textwidth]{./images/pir.png}
+	\caption{A PIR belső működésének blokk diagramja \cite{pir-diag}}
+	\label{diag:pir}
+\end{figure}
+
+\begin{figure}[htbp!]
+	\centering
+	\includegraphics[width=0.5\textwidth]{./images/pir-det.jpg}
+	\caption{A PIR mozgásérzékelést meghatározó működése \cite{pir-diag}}
+	\label{diag:pir-det}
+\end{figure}
+
+A behatolásjelzés megbízhatóságának
 szempontjából érdemes több PIR érzékelőt elhelyezni egy megfigyelt területre.
 Alapesetben tegyük fel, hogy egy PIR mozgásérzékelő önmaga $P_{PIR}
 	= 0,5$ valószínűséggel észlel behatolót és arra jelez is. Ez egyelőre egy
diff --git a/src/contents/6-tervezes.tex b/src/contents/6-tervezes.tex
index 67b7ceb03a257cdb0835ff9639b4d80e3225cf91..5b0ce2f90e93a014f0ce091bfb2c3728c7e6a701 100644
--- a/src/contents/6-tervezes.tex
+++ b/src/contents/6-tervezes.tex
@@ -314,6 +314,7 @@ annak okát és helyes használatát. Ezzel a hozzáállással a szoftverbiztons
 garanciáját a nyelvi elemekre és a fordítóra helyezem át ahol csak lehet,
 csökketve az emberi hibából fakadó helytelenségeket.
 
+% TODO: async rust + ábra az async runtime működéséről
 
 \subsection{MQTT protokoll}
 
@@ -335,13 +336,21 @@ architektúrai elemet, hogy a kliensek között legyen egyetlen szerver, elnevez
 szerint a ``broker''. A broker fogadja a kliensek csatlakozási, feliratkozási,
 üzenetküldési, leválasztási és egyéb kérelmeit. Nyilván tartja a klienseket,
 azok jogosultságait és a topic-on közzétett üzenetek továbbítását végzi.
-Az architektúra modelljét \aref{diag:mqtt}. ábrán rajzoltam le szemléltetés végett.
 Számos implementációja van mind kliens oldali és broker oldali szerepeknek.
 \cite{mqtt-vs-coap}
 
+Az architektúra modelljét \aref{diag:mqtt}. ábrán rajzoltam le szemléltetés
+végett. Az első lépésben a kliens feliratkozik a ``topic1'' üzenet kategóriára.
+A második lépésben egy másik kliens iratkozik fel egy másik kategóriára:
+``topic2''. 3. lépésben egy harmadik kliens küld üzenetet a ``topic1''
+kategórián, melyet fogad az első kliens. További lépésekben szemléltetem,
+hogy bármilyen kliens feliratkozhat bármilyen kategóriára, illetve bármilyen
+kategóriára küldhet üzenetet bármilyen kliens. Egy üzenetet akkor továbbít a
+broker, ha annak kategóriájára van feliratkozott kliens.
+
 \begin{figure}[htbp!]
 	{\footnotesize\includesvg[width=\textwidth]{images/mqtt.drawio.svg}}
-	\caption{Az MQTT protokoll architektúra-modellje}
+	\caption{Az MQTT protokoll architektúra-modell bemutatása 8 lépésben}
 	\label{diag:mqtt}
 \end{figure}
 
@@ -411,34 +420,34 @@ kapu vezérlőt, ahol az entitások a következők: a kapu két szárnyát egysz
 nyitó gomb, csak az egyik szárnyat nyitó gomb, és akár egy állapot visszajelző
 szenzor.
 
-Az entitásokat a felhasználó eléri a Home Assistant webes felületén (frontend),
-amiben azokra automatizmusokat is lehet létrehozni. Egy automatizmus három
-fázisból áll: indító események (trigger), feltételek (conditions), és
-műveletek (actions). A felhasználó megadja, hogy milyen események -- entitás
-állapotváltozások -- hatására induljon el a műveletek listája. A feltételek
-megszabják, hogy a kiváltott esemény mellett definiált megkötések keretében
-szabad-e futtatni a műveleteket. \cite{hass-automations} A dokumentáció a
-következő példa mondattal magyarázza a felépítést: \textsl{``Amikor Paulus
-	hazaér és a nap már lement, akkor kapcsolódjanak be a lámpák a nappaliban.''}
-\cite{hass-automations} A riasztórendszer-kezelőpanel típusú entitások
-élesítésére és hatástalanítására is van művelet. Ezzel a rendszerünk frontend
-oldalról is teljeskörűleg integrálható lesz. Szabadságot tudunk adni a
-végfelhasználónak, hogy a saját igényei szerint lehessen a rendszert működtetni
--- automatizált módon is. Ha a mozgásérzékelő típusú bináris érzékelőket a Home
-Assistant számára elérhetőve tesszük, nem csak a biztonságtechnikai szerepet
-tudná betölteni a rendszer, hanem az otthonautomatizáció szerepét is bővítené.
-Például, a következő két automatizmust lehetne megvalósítani egy mozgásérzékelő
-entitás jelenlétével: Amikor mozgás van a szobában és a rendszer hatástalanítva
-van és a nap már lement, akkor kapcsolódjon fel a szobában lévő lámpa. Illetve
-ha nincs mozgás legalább 10 percen át, akkor kapcsolódjon le a lámpa.
-
-Ezzel a Home Assistant belső architektúráját magas szinten kielemeztük.
-Szemléltetés céljával lerajzoltam a modellt \aref{diag:hass-arch}. ábrán.
+Az entitásokat a felhasználó eléri a Home Assistant webes felületén
+(frontend). \Aref{diag:hass-demo}. ábrán látható egy példa a frontend
+kinézetére. A felületen a felhasználó az entitások vezérlésén kívül azokra
+automatizmusokat is tud létrehozni. Egy automatizmus három fázisból áll:
+indító események (trigger), feltételek (conditions), és műveletek (actions).
+A felhasználó megadja, hogy milyen események -- entitás állapotváltozások
+-- hatására induljon el a műveletek listája. A feltételek megszabják, hogy a
+kiváltott esemény mellett definiált megkötések keretében szabad-e futtatni a
+műveleteket. \cite{hass-automations} A dokumentáció a következő példa mondattal
+magyarázza a felépítést: \textsl{``Amikor Paulus 	hazaér és a nap már lement,
+	akkor kapcsolódjanak be a lámpák a nappaliban.''} \cite{hass-automations} A
+riasztórendszer-kezelőpanel típusú entitások élesítésére és hatástalanítására is
+van művelet. Ezzel a rendszerünk frontend oldalról is teljeskörűleg integrálható
+lesz. Szabadságot tudunk adni a végfelhasználónak, hogy a saját igényei szerint
+lehessen a rendszert működtetni -- automatizált módon is. Ha a mozgásérzékelő
+típusú bináris érzékelőket a Home Assistant számára elérhetőve tesszük,
+nem csak a biztonságtechnikai szerepet tudná betölteni a rendszer, hanem az
+otthonautomatizáció szerepét is bővítené. Például, a következő két automatizmust
+lehetne megvalósítani egy mozgásérzékelő entitás jelenlétével: Amikor mozgás
+van a szobában és a rendszer hatástalanítva van és a nap már lement, akkor
+kapcsolódjon fel a szobában lévő lámpa. Illetve ha nincs mozgás legalább 10
+percen át, akkor kapcsolódjon le a lámpa.
 
 \begin{figure}[htbp!]
-	{\footnotesize\includesvg[width=\textwidth]{images/hass.drawio.svg}}
-	\caption{A Home Assistant architektúra-modellje \cite{hass-diagram}}
-	\label{diag:hass-arch}
+	\centering
+	\includegraphics[width=\textwidth]{images/hass-demo.png}
+	\caption{A Home Assistant frontend felülete - gyártói demo \cite{hass-demo}}
+	\label{diag:hass-demo}
 \end{figure}
 
 Az MQTT egy első osztályú integráció a Home Assistantban. Az MQTT minden QoS
@@ -467,8 +476,13 @@ felhasználó Home Assistant felületén. Ez elméletben kényelmesebb, mint pé
 a WiFi konfigurációja. Ennek realitását szintén a gyakorlatban fogjuk tudni
 megállapítani.
 
-\subsection{Összesítés}
-
+Ezzel a Home Assistant belső architektúráját magas szinten kielemeztük.
+Szemléltetés céljával lerajzoltam a modellt \aref{diag:hass-arch}. ábrán.
 
+\begin{figure}[htbp!]
+	{\footnotesize\includesvg[width=\textwidth]{images/hass.drawio.svg}}
+	\caption{A Home Assistant architektúra-modellje \cite{hass-diagram}}
+	\label{diag:hass-arch}
+\end{figure}
 
 \clearpage % Ez azért kell, hogy nehogy képek átcsússzanak a következő fejezethez
diff --git a/src/contents/7-eredmenyek.tex b/src/contents/7-eredmenyek.tex
index fb1993d4bf228aac503b6fc8b89893e2bb012c85..1d895ead15294319602f5745c2400ba871e51881 100644
--- a/src/contents/7-eredmenyek.tex
+++ b/src/contents/7-eredmenyek.tex
@@ -536,6 +536,22 @@ használok az események feldolgozásához. Ugyanilyen adatszerkezetet használo
 az ellenkező irányban is -- a parancsok fogadására. Mindkét queue esetén a
 konkurrens hozzáférést egy \mintinline{rust}/Mutex<>/ biztosítja.
 
+Ezennel a firmware a feladatát teljeskörűleg teljesíti. A megvalósítás
+funkcionális blokkdiagramját lerajzoltam \aref{diag:firmware}. ábrán. Jól
+látható, hogy a \mintinline{rust}/scheduler/ szál csupán egy köztes pont a
+központi egység belső logikája és az MQTT kliens között. Ezt az indokolja, hogy
+ha a rendszer a későbbiekben bővítve lesz, lehetőség nyílik több csatornával
+integrálni a rendszer logikáját -- illetve egymást -- egy általánosított
+interfészen keresztül.
+
+\begin{figure}[htbp!]
+	\ttfamily
+	{\scriptsize \includesvg[width=\columnwidth]{images/firmware.drawio.svg} }
+	\rmfamily
+	\caption{A megvalósított firmware funkcionális blokkdiagramja}
+	\label{diag:firmware}
+\end{figure}
+
 \section{Tesztelés, validálás}
 \label{teszt}
 
diff --git a/src/hivatkozasok.bib b/src/hivatkozasok.bib
index 15541c52635b20ae7bb3085b2a4957f7269ffc4f..a7a0f10734d0168b6f41005920fa4ac49b1231de 100644
--- a/src/hivatkozasok.bib
+++ b/src/hivatkozasok.bib
@@ -737,3 +737,15 @@ urldate = {2025-04-22},
 	journal = {International Journal of Security and Networks},
 	doi = {10.1504/IJSN.2021.119395},
 }
+
+@online{hass-demo,
+	title = {Overview - Home Assistant - Demo},
+	url = {https://demo.home-assistant.io/#/lovelace/home},
+	urldate = {2025-04-05},
+}
+
+@online{pir-diag,
+	title = {Simple Motion Alarm Sensor Circuit Diagram | ElecCircuit},
+	url = {https://www.eleccircuit.com/pir-motion-sensor-alarm-circuit/},
+	urldate = {2025-04-05},
+}
diff --git a/src/images/firmware.drawio.svg b/src/images/firmware.drawio.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4ad94847bae083d0524fd96660d9b5874d003b18
--- /dev/null
+++ b/src/images/firmware.drawio.svg
@@ -0,0 +1,4 @@
+<?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="691px" height="491px" viewBox="-0.5 -0.5 691 491" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0&quot; version=&quot;26.2.14&quot;&gt;&#10;  &lt;diagram id=&quot;2FsiOsy2cjTVrEidp5H9&quot; name=&quot;Page-1&quot;&gt;&#10;    &lt;mxGraphModel dx=&quot;962&quot; dy=&quot;744&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;&#10;      &lt;root&gt;&#10;        &lt;mxCell id=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-2&quot; value=&quot;&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;500&quot; y=&quot;10&quot; width=&quot;260&quot; height=&quot;160&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-4&quot; value=&quot;main()&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;510&quot; y=&quot;20&quot; width=&quot;60&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-5&quot; value=&quot;Perifériák inicializálása&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;510&quot; y=&quot;50&quot; width=&quot;240&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-6&quot; value=&quot;spawn()&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;510&quot; y=&quot;100&quot; width=&quot;240&quot; height=&quot;39&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-8&quot; value=&quot;&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;280&quot; y=&quot;280&quot; width=&quot;200&quot; height=&quot;160&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-9&quot; value=&quot;alarm\_task()&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;295&quot; y=&quot;290&quot; width=&quot;90&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-11&quot; value=&quot;Állapotgép&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;290&quot; y=&quot;320&quot; width=&quot;180&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-12&quot; value=&quot;&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;530&quot; y=&quot;240&quot; width=&quot;200&quot; height=&quot;210&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-13&quot; value=&quot;scheduler\_task()&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;542&quot; y=&quot;250&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-14&quot; value=&quot;Parancsok fogadása&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;540&quot; y=&quot;280&quot; width=&quot;180&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-15&quot; value=&quot;Események kiváltása&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;540&quot; y=&quot;329&quot; width=&quot;180&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-16&quot; value=&quot;&quot; style=&quot;rounded=1;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;770&quot; y=&quot;200&quot; width=&quot;200&quot; height=&quot;300&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-17&quot; value=&quot;network\_task()&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;785&quot; y=&quot;210&quot; width=&quot;110&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-18&quot; value=&quot;Ethernet link kezelés&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;780&quot; y=&quot;240&quot; width=&quot;180&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-19&quot; value=&quot;DHCP kliens&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;780&quot; y=&quot;289&quot; width=&quot;180&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-20&quot; value=&quot;MQTT kliens&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;780&quot; y=&quot;340&quot; width=&quot;180&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-21&quot; value=&quot;OTA kezelés&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;780&quot; y=&quot;440&quot; width=&quot;180&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-22&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-20&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-14&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;770&quot; y=&quot;560&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;820&quot; y=&quot;510&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;740&quot; y=&quot;350&quot; /&gt;&#10;              &lt;mxPoint x=&quot;750&quot; y=&quot;300&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-23&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-11&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-15&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;460&quot; y=&quot;280&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;510&quot; y=&quot;230&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;500&quot; y=&quot;390&quot; /&gt;&#10;              &lt;mxPoint x=&quot;500&quot; y=&quot;350&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-24&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-14&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-11&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;410&quot; y=&quot;220&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;460&quot; y=&quot;170&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;500&quot; y=&quot;300&quot; /&gt;&#10;              &lt;mxPoint x=&quot;500&quot; y=&quot;343&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-25&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-15&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-20&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;400&quot; y=&quot;170&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;450&quot; y=&quot;120&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;750&quot; y=&quot;349&quot; /&gt;&#10;              &lt;mxPoint x=&quot;740&quot; y=&quot;408&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-26&quot; value=&quot;Autodiscovery logika&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;540&quot; y=&quot;380&quot; width=&quot;180&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-27&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-6&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-8&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;360&quot; y=&quot;190&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;410&quot; y=&quot;140&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;570&quot; y=&quot;190&quot; /&gt;&#10;              &lt;mxPoint x=&quot;390&quot; y=&quot;240&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-28&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-6&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-12&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;610&quot; y=&quot;240&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;700&quot; y=&quot;210&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;630&quot; y=&quot;180&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;VCQW6hEs_HFuUsdHcM73-29&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;VCQW6hEs_HFuUsdHcM73-6&quot; target=&quot;VCQW6hEs_HFuUsdHcM73-16&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;830&quot; y=&quot;170&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;880&quot; y=&quot;120&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;680&quot; y=&quot;190&quot; /&gt;&#10;              &lt;mxPoint x=&quot;860&quot; y=&quot;170&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;      &lt;/root&gt;&#10;    &lt;/mxGraphModel&gt;&#10;  &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="VCQW6hEs_HFuUsdHcM73-2"><g><rect x="220" y="0" width="260" height="160" rx="24" ry="24" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-4"><g><rect x="230" y="10" width="60" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 25px; margin-left: 260px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">main()</div></div></div></foreignObject><text x="260" y="29" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">main()</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-5"><g><rect x="230" y="40" width="240" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 238px; height: 1px; padding-top: 60px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Perifériák inicializálása</div></div></div></foreignObject><text x="350" y="64" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Perifériák inicializálása</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-6"><g><rect x="230" y="90" width="240" height="39" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 238px; height: 1px; padding-top: 110px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">spawn()</div></div></div></foreignObject><text x="350" y="113" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">spawn()</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-8"><g><rect x="0" y="270" width="200" height="160" rx="24" ry="24" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-9"><g><rect x="15" y="280" width="90" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 295px; margin-left: 60px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">alarm\_task()</div></div></div></foreignObject><text x="60" y="299" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">alarm\_task()</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-11"><g><rect x="10" y="310" width="180" height="90" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 355px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Állapotgép</div></div></div></foreignObject><text x="100" y="359" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Állapotgép</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-12"><g><rect x="250" y="230" width="200" height="210" rx="30" ry="30" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-13"><g><rect x="262" y="240" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 255px; margin-left: 322px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">scheduler\_task()</div></div></div></foreignObject><text x="322" y="259" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">scheduler\_task()</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-14"><g><rect x="260" y="270" width="180" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 290px; margin-left: 261px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Parancsok fogadása</div></div></div></foreignObject><text x="350" y="294" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Parancsok fogadása</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-15"><g><rect x="260" y="319" width="180" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 339px; margin-left: 261px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Események kiváltása</div></div></div></foreignObject><text x="350" y="343" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Események kiváltása</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-16"><g><rect x="490" y="190" width="200" height="300" rx="30" ry="30" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-17"><g><rect x="505" y="200" width="110" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 215px; margin-left: 560px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">network\_task()</div></div></div></foreignObject><text x="560" y="219" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">network\_task()</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-18"><g><rect x="500" y="230" width="180" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 250px; 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: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Ethernet link kezelés</div></div></div></foreignObject><text x="590" y="254" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Ethernet link kezelés</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-19"><g><rect x="500" y="279" width="180" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 299px; 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: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DHCP kliens</div></div></div></foreignObject><text x="590" y="303" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">DHCP kliens</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-20"><g><rect x="500" y="330" width="180" height="90" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 375px; 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: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">MQTT kliens</div></div></div></foreignObject><text x="590" y="379" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">MQTT kliens</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-21"><g><rect x="500" y="430" width="180" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 450px; 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: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">OTA kezelés</div></div></div></foreignObject><text x="590" y="454" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">OTA kezelés</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-22"><g><path d="M 500 352.5 Q 460 340 465 315 Q 470 290 446.37 290" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 441.12 290 L 448.12 286.5 L 446.37 290 L 448.12 293.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-23"><g><path d="M 190 377.5 Q 220 380 220 360 Q 220 340 253.63 339.16" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 258.88 339.03 L 251.97 342.7 L 253.63 339.16 L 251.8 335.7 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-24"><g><path d="M 260 290 Q 220 290 220 311.5 Q 220 333 196.37 332.61" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 191.12 332.52 L 198.18 329.14 L 196.37 332.61 L 198.06 336.13 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-25"><g><path d="M 440 339 Q 470 339 465 368.5 Q 460 398 493.63 397.58" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 498.88 397.51 L 491.93 401.1 L 493.63 397.58 L 491.84 394.1 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-26"><g><rect x="260" y="370" width="180" height="40" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 390px; margin-left: 261px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Autodiscovery logika</div></div></div></foreignObject><text x="350" y="394" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Autodiscovery logika</text></switch></g></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-27"><g><path d="M 290 129 Q 290 180 200 205 Q 110 230 101.54 263.82" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 100.27 268.92 L 98.57 261.28 L 101.54 263.82 L 105.36 262.97 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-28"><g><path d="M 350 129 Q 350 170 350 223.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 350 228.88 L 346.5 221.88 L 350 223.63 L 353.5 221.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="VCQW6hEs_HFuUsdHcM73-29"><g><path d="M 410 129 Q 400 180 490 170 Q 580 160 587.99 183.96" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 589.65 188.94 L 584.11 183.41 L 587.99 183.96 L 590.75 181.19 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></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>
\ No newline at end of file
diff --git a/src/images/hass-demo.png b/src/images/hass-demo.png
new file mode 100644
index 0000000000000000000000000000000000000000..09a791b2868eb64b383c70092c15b1df395232bb
Binary files /dev/null and b/src/images/hass-demo.png differ
diff --git a/src/images/mqtt.drawio.svg b/src/images/mqtt.drawio.svg
index d79828ac5ab7d30d35e642debc1e9180e3a0f4ac..b344d23dcd247e1d3aa375c3b8853429fe766ac8 100644
--- a/src/images/mqtt.drawio.svg
+++ b/src/images/mqtt.drawio.svg
@@ -1,4 +1,4 @@
 <?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="492px" height="351px" viewBox="-0.5 -0.5 492 351" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0&quot; version=&quot;26.2.14&quot;&gt;&#10;  &lt;diagram name=&quot;Page-1&quot; id=&quot;u-_sONg8PaacN-QFZamk&quot;&gt;&#10;    &lt;mxGraphModel dx=&quot;494&quot; dy=&quot;800&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;&#10;      &lt;root&gt;&#10;        &lt;mxCell id=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--1&quot; value=&quot;kliens&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;160&quot; y=&quot;410&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--2&quot; value=&quot;kliens&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;130&quot; y=&quot;540&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--3&quot; value=&quot;kliens&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;160&quot; y=&quot;670&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--4&quot; value=&quot;broker&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;320&quot; y=&quot;550&quot; width=&quot;120&quot; height=&quot;70&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--5&quot; value=&quot;kliens&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;510&quot; y=&quot;410&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--6&quot; value=&quot;kliens&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;530&quot; y=&quot;540&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--7&quot; value=&quot;kliens&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;510&quot; y=&quot;670&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--9&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--1&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;320&quot; y=&quot;510&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;400&quot; y=&quot;490&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;260&quot; y=&quot;520&quot; /&gt;&#10;              &lt;mxPoint x=&quot;380&quot; y=&quot;450&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--10&quot; value=&quot;2. publish&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;270&quot; y=&quot;450&quot; width=&quot;70&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--11&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;exitX=0.027;exitY=0.697;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--7&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;350&quot; y=&quot;750&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;400&quot; y=&quot;700&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;410&quot; y=&quot;740&quot; /&gt;&#10;              &lt;mxPoint x=&quot;310&quot; y=&quot;710&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--12&quot; value=&quot;1. subscribe&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;320&quot; y=&quot;730&quot; width=&quot;90&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--13&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=0.327;entryY=0.037;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--4&quot; target=&quot;nID7ZsawUktWha8Jv44--7&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;410&quot; y=&quot;700&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;460&quot; y=&quot;650&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;430&quot; y=&quot;680&quot; /&gt;&#10;              &lt;mxPoint x=&quot;510&quot; y=&quot;630&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--14&quot; value=&quot;3. üzenet fogadása&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;375&quot; y=&quot;670&quot; width=&quot;130&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;      &lt;/root&gt;&#10;    &lt;/mxGraphModel&gt;&#10;  &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="nID7ZsawUktWha8Jv44--1"><g><ellipse cx="75" cy="45" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 45px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens</div></div></div></foreignObject><text x="75" y="49" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--2"><g><ellipse cx="45" cy="175" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 175px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens</div></div></div></foreignObject><text x="45" y="179" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--3"><g><ellipse cx="75" cy="305" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 305px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens</div></div></div></foreignObject><text x="75" y="309" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--4"><g><rect x="190" y="140" width="120" height="70" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 175px; margin-left: 191px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">broker</div></div></div></foreignObject><text x="250" y="179" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">broker</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--5"><g><ellipse cx="425" cy="45" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 45px; margin-left: 381px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens</div></div></div></foreignObject><text x="425" y="49" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--6"><g><ellipse cx="445" cy="175" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 175px; margin-left: 401px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens</div></div></div></foreignObject><text x="445" y="179" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--7"><g><ellipse cx="425" cy="305" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 305px; margin-left: 381px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens</div></div></div></foreignObject><text x="425" y="309" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--9"><g><path d="M 106.82 76.82 Q 130 110 190 75 Q 250 40 250 133.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 250 138.88 L 246.5 131.88 L 250 133.63 L 253.5 131.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--10"><g><rect x="140" y="40" width="70" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 55px; margin-left: 175px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">2. publish</div></div></div></foreignObject><text x="175" y="59" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">2. publish</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--11"><g><path d="M 382.43 322.73 Q 280 330 230 315 Q 180 300 217.41 215.82" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 219.55 211.02 L 219.9 218.84 L 217.41 215.82 L 213.5 216 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--12"><g><rect x="190" y="320" width="90" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 335px; margin-left: 235px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">1. subscribe</div></div></div></foreignObject><text x="235" y="339" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">1. subscribe</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--13"><g><path d="M 280 210 Q 300 270 340 245 Q 380 220 405.85 258.06" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/><path d="M 408.8 262.41 L 401.97 258.58 L 405.85 258.06 L 407.76 254.65 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--14"><g><rect x="245" y="260" width="130" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 275px; margin-left: 310px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">3. üzenet fogadása</div></div></div></foreignObject><text x="310" y="279" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">3. üzenet fogadása</text></switch></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>
\ No newline at end of file
+<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="551px" height="381px" viewBox="-0.5 -0.5 551 381" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0&quot; version=&quot;26.2.14&quot;&gt;&#10;  &lt;diagram name=&quot;Page-1&quot; id=&quot;u-_sONg8PaacN-QFZamk&quot;&gt;&#10;    &lt;mxGraphModel dx=&quot;530&quot; dy=&quot;724&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;&#10;      &lt;root&gt;&#10;        &lt;mxCell id=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--1&quot; value=&quot;kliens 3&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;160&quot; y=&quot;410&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--2&quot; value=&quot;kliens 2&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;90&quot; y=&quot;590&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--4&quot; value=&quot;broker&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;320&quot; y=&quot;550&quot; width=&quot;120&quot; height=&quot;70&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--5&quot; value=&quot;kliens 4&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;510&quot; y=&quot;410&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--7&quot; value=&quot;kliens 1&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;550&quot; y=&quot;690&quot; width=&quot;90&quot; height=&quot;90&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--9&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;exitX=0.996;exitY=0.37;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#001DBC;fillColor=#0050ef;exitPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--1&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot; edge=&quot;1&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;320&quot; y=&quot;510&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;400&quot; y=&quot;490&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;280&quot; y=&quot;470&quot; /&gt;&#10;              &lt;mxPoint x=&quot;380&quot; y=&quot;450&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--10&quot; value=&quot;3. publish (topic1)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;250&quot; y=&quot;400&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--11&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;exitX=0.027;exitY=0.697;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fillColor=#0050ef;strokeColor=#001DBC;&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--7&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot; edge=&quot;1&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;350&quot; y=&quot;750&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;400&quot; y=&quot;700&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;440&quot; y=&quot;740&quot; /&gt;&#10;              &lt;mxPoint x=&quot;380&quot; y=&quot;680&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--12&quot; value=&quot;1. subscribe (topic1)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;370&quot; y=&quot;740&quot; width=&quot;130&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--13&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=0.327;entryY=0.037;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.869;exitY=1;exitDx=0;exitDy=0;fillColor=#0050ef;strokeColor=#001DBC;exitPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--4&quot; target=&quot;nID7ZsawUktWha8Jv44--7&quot; edge=&quot;1&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;410&quot; y=&quot;700&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;460&quot; y=&quot;650&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;430&quot; y=&quot;680&quot; /&gt;&#10;              &lt;mxPoint x=&quot;510&quot; y=&quot;630&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;nID7ZsawUktWha8Jv44--14&quot; value=&quot;3. üzenet (topic1)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;460&quot; y=&quot;610&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-1&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fillColor=#fa6800;strokeColor=#C73500;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--2&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;220&quot; y=&quot;610&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;270&quot; y=&quot;560&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;230&quot; y=&quot;550&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-3&quot; value=&quot;2. subscribe (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;110&quot; y=&quot;540&quot; width=&quot;130&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-6&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fillColor=#fa6800;strokeColor=#C73500;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--5&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;350&quot; y=&quot;380&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;400&quot; y=&quot;330&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;470&quot; y=&quot;490&quot; /&gt;&#10;              &lt;mxPoint x=&quot;410&quot; y=&quot;450&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-7&quot; value=&quot;4. publish (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;390&quot; y=&quot;410&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-8&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;entryX=1;entryY=1;entryDx=0;entryDy=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;fillColor=#fa6800;strokeColor=#C73500;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--4&quot; target=&quot;nID7ZsawUktWha8Jv44--2&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;240&quot; y=&quot;670&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;290&quot; y=&quot;620&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;240&quot; y=&quot;690&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-9&quot; value=&quot;4. üzenet (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;180&quot; y=&quot;600&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-10&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;fillColor=#fa6800;strokeColor=#C73500;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--2&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;168.5&quot; y=&quot;665&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;321.5&quot; y=&quot;670&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;160&quot; y=&quot;730&quot; /&gt;&#10;              &lt;mxPoint x=&quot;320&quot; y=&quot;680&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-11&quot; value=&quot;5. unsubscribe (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;140&quot; y=&quot;720&quot; width=&quot;140&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-12&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.93;entryY=0.02;entryDx=0;entryDy=0;fillColor=#fa6800;strokeColor=#C73500;entryPerimeter=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;545&quot; y=&quot;500&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;445&quot; y=&quot;595&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;500&quot; y=&quot;520&quot; /&gt;&#10;              &lt;mxPoint x=&quot;432&quot; y=&quot;510&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-13&quot; value=&quot;6. publish (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;460&quot; y=&quot;520&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-16&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0.693;exitY=0.018;exitDx=0;exitDy=0;fillColor=#fa6800;strokeColor=#C73500;exitPerimeter=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--7&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;510&quot; y=&quot;565&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;639&quot; y=&quot;618&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;610&quot; y=&quot;575&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-17&quot; value=&quot;7. subscribe (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;465&quot; y=&quot;560&quot; width=&quot;130&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-18&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;entryX=0.25;entryY=0;entryDx=0;entryDy=0;exitX=0.713;exitY=0.927;exitDx=0;exitDy=0;exitPerimeter=0;fillColor=#fa6800;strokeColor=#C73500;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--1&quot; target=&quot;nID7ZsawUktWha8Jv44--4&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;270&quot; y=&quot;540&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;320&quot; y=&quot;490&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;260&quot; y=&quot;550&quot; /&gt;&#10;              &lt;mxPoint x=&quot;340&quot; y=&quot;480&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-19&quot; value=&quot;8. publish (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;240&quot; y=&quot;470&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-20&quot; value=&quot;&quot; style=&quot;curved=1;endArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;entryX=0.054;entryY=0.371;entryDx=0;entryDy=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;fillColor=#fa6800;strokeColor=#C73500;entryPerimeter=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot; source=&quot;nID7ZsawUktWha8Jv44--4&quot; target=&quot;nID7ZsawUktWha8Jv44--7&quot;&gt;&#10;          &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10;            &lt;mxPoint x=&quot;387&quot; y=&quot;663&quot; as=&quot;sourcePoint&quot; /&gt;&#10;            &lt;mxPoint x=&quot;513&quot; y=&quot;720&quot; as=&quot;targetPoint&quot; /&gt;&#10;            &lt;Array as=&quot;points&quot;&gt;&#10;              &lt;mxPoint x=&quot;400&quot; y=&quot;660&quot; /&gt;&#10;              &lt;mxPoint x=&quot;423&quot; y=&quot;720&quot; /&gt;&#10;              &lt;mxPoint x=&quot;520&quot; y=&quot;680&quot; /&gt;&#10;            &lt;/Array&gt;&#10;          &lt;/mxGeometry&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;1DcpTbh7sDHWkL4HCO8W-21&quot; value=&quot;8. üzenet (topic2)&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;430&quot; y=&quot;660&quot; width=&quot;120&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;      &lt;/root&gt;&#10;    &lt;/mxGraphModel&gt;&#10;  &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="nID7ZsawUktWha8Jv44--1"><g><ellipse cx="115" cy="55" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 55px; margin-left: 71px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens 3</div></div></div></foreignObject><text x="115" y="59" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens 3</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--2"><g><ellipse cx="45" cy="235" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 235px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens 2</div></div></div></foreignObject><text x="45" y="239" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens 2</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--4"><g><rect x="230" y="150" width="120" height="70" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 185px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">broker</div></div></div></foreignObject><text x="290" y="189" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">broker</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--5"><g><ellipse cx="465" cy="55" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 55px; 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: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens 4</div></div></div></foreignObject><text x="465" y="59" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens 4</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--7"><g><ellipse cx="505" cy="335" rx="45" ry="45" fill="#ffffff" stroke="#000000" pointer-events="all" style="fill: light-dark(#ffffff, var(--ge-dark-color, #121212)); stroke: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));"/></g><g><g transform="translate(-0.5 -0.5)"><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: 88px; height: 1px; padding-top: 335px; margin-left: 461px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">kliens 1</div></div></div></foreignObject><text x="505" y="339" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">kliens 1</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--9"><g><path d="M 159.64 43.3 Q 190 70 240 60 Q 290 50 290 143.63" fill="none" stroke="#001dbc" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 29, 188), rgb(178, 203, 255));"/><path d="M 290 148.88 L 286.5 141.88 L 290 143.63 L 293.5 141.88 Z" fill="#001dbc" stroke="#001dbc" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 29, 188), rgb(178, 203, 255)); stroke: light-dark(rgb(0, 29, 188), rgb(178, 203, 255));"/></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--10"><g><rect x="160" y="0" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 15px; margin-left: 220px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">3. publish (topic1)</div></div></div></foreignObject><text x="220" y="19" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">3. publish (topic1)</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--11"><g><path d="M 462.43 352.73 Q 350 340 320 310 Q 290 280 290 226.37" fill="none" stroke="#001dbc" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 29, 188), rgb(178, 203, 255));"/><path d="M 290 221.12 L 293.5 228.12 L 290 226.37 L 286.5 228.12 Z" fill="#001dbc" stroke="#001dbc" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 29, 188), rgb(178, 203, 255)); stroke: light-dark(rgb(0, 29, 188), rgb(178, 203, 255));"/></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--12"><g><rect x="280" y="340" width="130" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 355px; margin-left: 345px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">1. subscribe (topic1)</div></div></div></foreignObject><text x="345" y="359" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">1. subscribe (topic1)</text></switch></g></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--13"><g><path d="M 334.28 220 Q 340 280 380 255 Q 420 230 484.73 289.04" fill="none" stroke="#001dbc" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(0, 29, 188), rgb(178, 203, 255));"/><path d="M 488.6 292.58 L 481.07 290.45 L 484.73 289.04 L 485.79 285.27 Z" fill="#001dbc" stroke="#001dbc" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(0, 29, 188), rgb(178, 203, 255)); stroke: light-dark(rgb(0, 29, 188), rgb(178, 203, 255));"/></g></g><g data-cell-id="nID7ZsawUktWha8Jv44--14"><g><rect x="370" y="210" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 225px; margin-left: 430px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">3. üzenet (topic1)</div></div></div></foreignObject><text x="430" y="229" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">3. üzenet (topic1)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-1"><g><path d="M 76.82 203.18 Q 140 150 222.28 166" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 228.9 167.29 L 219.21 169.99 L 222.28 166 L 220.93 161.15 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-3"><g><rect x="20" y="140" width="130" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 155px; margin-left: 85px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">2. subscribe (topic2)</div></div></div></foreignObject><text x="85" y="159" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">2. subscribe (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-6"><g><path d="M 420 55 Q 380 90 350 70 Q 320 50 320 142.13" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 320 148.88 L 315.5 139.88 L 320 142.13 L 324.5 139.88 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-7"><g><rect x="300" y="10" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 25px; margin-left: 360px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">4. publish (topic2)</div></div></div></foreignObject><text x="360" y="29" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">4. publish (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-8"><g><path d="M 230 202.5 Q 150 290 84.32 269.2" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 77.89 267.16 L 87.82 265.59 L 84.32 269.2 L 85.11 274.17 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-9"><g><rect x="90" y="200" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 215px; margin-left: 150px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">4. üzenet (topic2)</div></div></div></foreignObject><text x="150" y="219" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">4. üzenet (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-10"><g><path d="M 45 280 Q 70 330 150 305 Q 230 280 256.48 227.04" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 259.5 221 L 259.5 231.06 L 256.48 227.04 L 251.45 227.04 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-11"><g><rect x="50" y="320" width="140" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 335px; margin-left: 120px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">5. unsubscribe (topic2)</div></div></div></foreignObject><text x="120" y="339" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">5. unsubscribe (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-12"><g><path d="M 455 100 Q 410 120 376 115 Q 342 110 341.68 143.53" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 341.61 150.28 L 337.2 141.24 L 341.68 143.53 L 346.2 141.33 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-13"><g><rect x="370" y="120" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 135px; margin-left: 430px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">6. publish (topic2)</div></div></div></foreignObject><text x="430" y="139" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">6. publish (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-16"><g><path d="M 522.37 291.62 Q 520 175 356.29 201.48" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 351.1 202.32 L 357.45 197.75 L 356.29 201.48 L 358.57 204.66 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-17"><g><rect x="375" y="160" width="130" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 175px; margin-left: 440px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">7. subscribe (topic2)</div></div></div></foreignObject><text x="440" y="179" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">7. subscribe (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-18"><g><path d="M 134.17 93.43 Q 170 150 210 115 Q 250 80 258.89 142.21" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 259.84 148.89 L 254.11 140.62 L 258.89 142.21 L 263.02 139.35 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-19"><g><rect x="150" y="70" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 85px; margin-left: 210px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">8. publish (topic2)</div></div></div></foreignObject><text x="210" y="89" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">8. publish (topic2)</text></switch></g></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-20"><g><path d="M 320 220 Q 310 260 321.5 290 Q 333 320 381.5 300 Q 430 280 459.93 317.26" fill="none" stroke="#c73500" stroke-miterlimit="10" pointer-events="stroke" style="stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/><path d="M 464.16 322.52 L 455.01 318.32 L 459.93 317.26 L 462.03 312.68 Z" fill="#c73500" stroke="#c73500" stroke-miterlimit="10" pointer-events="all" style="fill: light-dark(rgb(199, 53, 0), rgb(255, 145, 100)); stroke: light-dark(rgb(199, 53, 0), rgb(255, 145, 100));"/></g></g><g data-cell-id="1DcpTbh7sDHWkL4HCO8W-21"><g><rect x="340" y="260" width="120" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><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: 275px; margin-left: 400px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: &quot;Helvetica&quot;; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; ">8. üzenet (topic2)</div></div></div></foreignObject><text x="400" y="279" fill="light-dark(#000000, #ffffff)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">8. üzenet (topic2)</text></switch></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>
\ No newline at end of file
diff --git a/src/images/pir-det.jpg b/src/images/pir-det.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ea186beeb7fb089873a3e97f736900b4414ab600
Binary files /dev/null and b/src/images/pir-det.jpg differ
diff --git a/src/images/pir.png b/src/images/pir.png
new file mode 100644
index 0000000000000000000000000000000000000000..036cd09e9e2b6daedfcba6febd793a55d88b702f
Binary files /dev/null and b/src/images/pir.png differ