This repository has been archived on 2024-05-26. You can view files and clone it, but cannot push or open issues or pull requests.
core/docs/architecture.svg

33 lines
53 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
Copyright (C) 2024 - 2024:
The Trinitrix Project <bpeetz@b-peetz.de, antifallobst@systemausfall.org>
SPDX-License-Identifier: MIT
This file is part of Trinitrix.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the “Software”), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
-->
<?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-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="803px" height="1063px" viewBox="-0.5 -0.5 803 1063" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-08-04T10:36:09.347Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0&quot; etag=&quot;ZuaeGUmW4DjbyWuaWOZy&quot; version=&quot;21.6.6&quot; type=&quot;device&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;hWGGHW_Bsmf1wcgqsJl5&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><path d="M 2 83 L 2 60 L 772 60 L 772 83" fill="#b0e3e6" stroke="#0e8088" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/><path d="M 2 83 L 2 760 L 772 760 L 772 83" fill="none" stroke="#0e8088" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2 83 L 772 83" fill="none" stroke="#0e8088" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 72px; margin-left: 387px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: nowrap;">Main Process</div></div></div></foreignObject><text x="387" y="75" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Main Process</text></switch></g><path d="M 92 570 L 92 540 L 232 540 L 232 570" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 92 570 L 92 690 L 232 690 L 232 570" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 92 570 L 232 570" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><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: 138px; height: 1px; padding-top: 555px; margin-left: 93px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Accounts (example)</div></div></div></foreignObject><text x="162" y="559" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Accounts (example)</text></switch></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 flex-start; width: 130px; height: 1px; padding-top: 585px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Account 1 (Matrix)</div></div></div></foreignObject><text x="98" y="589" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 1 (Matrix)</text></switch></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 flex-start; width: 130px; height: 1px; padding-top: 615px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Account 2 (Matrix)</div></div></div></foreignObject><text x="98" y="619" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 2 (Matrix)</text></switch></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 flex-start; width: 130px; height: 1px; padding-top: 645px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Account 3 (Signal)</div></div></div></foreignObject><text x="98" y="649" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 3 (Signal)</text></switch></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 flex-start; width: 130px; height: 1px; padding-top: 675px; margin-left: 98px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Account 4 (Telegram)</div></div></div></foreignObject><text x="98" y="679" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Account 4 (Telegram)</text></switch></g><path d="M 344.52 450 L 344.52 430 L 387 430 L 387 406.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 387 401.12 L 390.5 408.12 L 387 406.37 L 383.5 408.12 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><rect x="267" y="450" width="155" height="60" fill="#76608a" stroke="#432d57" pointer-events="none"/><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: 153px; height: 1px; padding-top: 480px; margin-left: 268px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Event Stream</div></div></div></foreignObject><text x="345" y="484" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">Event Stream</text></switch></g><path d="M 492 630 L 492 650 L 442.52 650 L 442.17 636.37" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 442.03 631.12 L 445.71 638.02 L 442.17 636.37 L 438.71 638.21 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><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: 649px; margin-left: 472px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; background-color: rgb(255, 255, 255); white-space: nowrap;">Current Account</div></div></div></foreignObject><text x="472" y="653" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Current Account</text></switch></g><rect x="442" y="520" width="100" height="110" fill="#76608a" stroke="#432d57" pointer-events="none"/><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: 98px; height: 1px; padding-top: 575px; margin-left: 443px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #ffffff; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Chat  Action Stream</div></div></div></foreignObject><text x="492" y="579" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">Chat  Action Str...</text></switch></g><path d="M 162 480 L 260.63 480" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 265.88 480 L 258.88 483.5 L 260.63 480 L 258.88 476.5 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><rect x="42" y="450" width="120" height="60" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" pointer-events="none"/><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: 480px; margin-left: 43px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Key Input Sync <br />Thread</div></div></div></foreignObject><text x="102" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Key Input Sync...</text></switch></g><path d="M 42 300 L 42 260 L 732 260 L 732 300" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 300 L 42 420 L 732 420 L 732 300" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 300 L 732 300" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 688px; height: 1px; padding-top: 280px; margin-left: 43px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Main Loop<br />Thread</div></div></div></foreignObject><text x="387" y="284" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Main Loop...</text></switch></g><path d="M 287 370 L 320.63 370" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 325.88 370 L 318.88 373.5 L 320.63 370 L 318.88 366.5 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><rect x="167" y="340" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="none"/><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: 370px; margin-left: 168px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Draw UI</div></div></div></foreignObject><text x="227" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Draw UI</text></switch></g><path d="M 447 370 L 480.63 370" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 485.88 370 L 478.88 373.5 L 480.63 370 L 478.88 366.5 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><rect x="327" y="340" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="none"/><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: 370px; margin-left: 328px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Await Event</div></div></div></foreignObject><text x="387" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Await Event</text></switch></g><path d="M 607 370 L 642 370 L 642 320 L 132 320 L 132 370 L 160.63 370" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 165.88 370 L 158.88 373.5 L 160.63 370 L 158.88 366.5 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="none"/><path d="M 547 340 L 547 280.52 L 547 226.37" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 547 221.12 L 550.5 228.12 L 547 226.37 L 543.5 228.12 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><rect x="487" y="340" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="none"/><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: 370px; margin-left: 488px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Handle Event</div></div></div></foreignObject><text x="547" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Handle Event</text></switch></g><path d="M 232 580 L 281.9 580 L 281.88 516.43" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 281.88 511.18 L 285.38 518.18 L 281.88 516.43 L 278.38 518.18 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 610 L 323.71 610 L 323.73 515.95" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 323.73 510.7 L 327.23 517.7 L 323.73 515.95 L 320.23 517.7 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 640 L 361.9 640 L 361.86 517.39" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 361.86 512.14 L 365.36 519.14 L 361.86 517.39 L 358.36 519.14 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 670 L 402.29 670 L 402.31 518.35" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 402.31 513.1 L 405.81 520.1 L 402.31 518.35 L 398.81 520.1 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.37 680 L 442 680" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.12 680 L 240.12 676.5 L 238.37 680 L 240.12 683.5 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.37 650 L 442 650" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.12 650 L 240.12 646.5 L 238.37 650 L 240.12 653.5 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.79 619.6 L 267 619.62 L 442 620" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.54 619.59 L 240.54 616.1 L 238.79 619.6 L 240.54 623.1 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 238.37 590 L 442 590" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 233.12 590 L 240.12 586.5 L 238.37 590 L 240.12 593.5 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 522 400 L 522 480 L 428.37 480" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 423.12 480 L 430.12 476.5 L 428.37 480 L 430.12 483.5 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><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: 480px; margin-left: 472px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; background-color: rgb(255, 255, 255); white-space: nowrap;">Commands</div></div></div></foreignObject><text x="472" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Commands</text></switch></g><path d="M 562 400 L 562 420 L 547 420 L 547 500 L 492 500 L 492 513.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 492 518.88 L 488.5 511.88 L 492 513.63 L 495.5 511.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><rect x="602" y="620" width="120" height="60" fill="#76608a" stroke="#9673a6" pointer-events="none"/><path d="M 577 400 L 577 490 L 632 490 L 632 613.63" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 632 618.88 L 628.5 611.88 L 632 613.63 L 635.5 611.88 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 632 680 L 632.31 701.44" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 632.38 706.69 L 628.78 699.74 L 632.31 701.44 L 635.78 699.64 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><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: 650px; margin-left: 603px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Code executor</div></div></div></foreignObject><text x="662" y="654" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Code executor</text></switch></g><rect x="602" y="710" width="50" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/><path d="M 682.4 615.92 L 682 460 L 428.68 460.2" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><path d="M 423.43 460.2 L 430.43 456.69 L 428.68 460.2 L 430.43 463.69 Z" fill="#82b366" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/><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: 463px; margin-left: 622px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>Commands</div></div></div></div></foreignObject><text x="622" y="467" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Commands</text></switch></g><path d="M 614.5 710 L 613.93 688.47" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 613.79 683.22 L 617.47 690.12 L 613.93 688.47 L 610.48 690.31 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="602" y="710" width="50" height="30" fill="#76608a" stroke="none" pointer-events="none"/><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: 48px; height: 1px; padding-top: 725px; margin-left: 603px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Lua</div></div></div></foreignObject><text x="627" y="729" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Lua</text></switch></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: 20px; margin-left: 387px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 24px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: nowrap;">Trinitrix - Architecture - v2.0</div></div></div></foreignObject><text x="387" y="27" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="24px" text-anchor="middle" font-weight="bold">Trinitri...</text></switch></g><path d="M 2 843 L 2 820 L 602 820 L 602 843" fill="#b0e3e6" stroke="#0e8088" stroke-miterlimit="10" pointer-events="none"/><path d="M 2 843 L 2 1040 L 602 1040 L 602 843" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="none"/><path d="M 2 843 L 602 843" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="none"/><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: 598px; height: 1px; padding-top: 832px; margin-left: 3px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Protocol Servers</div></div></div></foreignObject><text x="302" y="835" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Protocol Servers</text></switch></g><path d="M 42 920 L 42 880 L 142 880 L 142 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="5" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 920 L 42 1020 L 142 1020 L 142 920" fill="none" stroke="#d79b00" stroke-width="5" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 920 L 142 920" fill="none" stroke="#d79b00" stroke-width="5" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 43px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Matrix Server<br />Process</div></div></div></foreignObject><text x="92" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Matrix Server...</text></switch></g><path d="M 182 920 L 182 880 L 282 880 L 282 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 182 920 L 182 1020 L 282 1020 L 282 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 182 920 L 282 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 183px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Matrix Server<br />Process</div></div></div></foreignObject><text x="232" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Matrix Server...</text></switch></g><path d="M 322 920 L 322 880 L 422 880 L 422 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 322 920 L 322 1020 L 422 1020 L 422 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 322 920 L 422 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 323px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Signal Server<br />Process</div></div></div></foreignObject><text x="372" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Signal Server...</text></switch></g><path d="M 462 920 L 462 880 L 562 880 L 562 920" fill="#ffe6cc" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 462 920 L 462 1020 L 562 1020 L 562 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 462 920 L 562 920" fill="none" stroke="#d79b00" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><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: 98px; height: 1px; padding-top: 900px; margin-left: 463px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Telegram Server<br />Process</div></div></div></foreignObject><text x="512" y="904" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Telegram Server...</text></switch></g><path d="M 85.63 585 L 12 585 L 12 810 L 92 810 L 92 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 585 L 83.88 588.5 L 85.63 585 L 83.88 581.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 92 878.88 L 88.5 871.88 L 92 873.63 L 95.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 85.63 615 L 32 615 L 32 790 L 232 790 L 232 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 615 L 83.88 618.5 L 85.63 615 L 83.88 611.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 232 878.88 L 228.5 871.88 L 232 873.63 L 235.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 85.63 645 L 52 645 L 52 770 L 372 770 L 372 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 645 L 83.88 648.5 L 85.63 645 L 83.88 641.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 372 878.88 L 368.5 871.88 L 372 873.63 L 375.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 85.63 675 L 72 675 L 72 750 L 512 750 L 512 873.63" fill="none" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.88 675 L 83.88 678.5 L 85.63 675 L 83.88 671.5 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 512 878.88 L 508.5 871.88 L 512 873.63 L 515.5 871.88 Z" fill="#005700" stroke="#005700" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 802 L 622 772 L 802 772 L 802 802" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 802 L 622 1062 L 802 1062 L 802 802" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 802 L 802 802" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 802 L 662 832 L 662 862 L 662 892 L 662 922 L 662 952 L 662 982 L 662 1032 L 662 1062" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="16px"><text x="711.5" y="793.5">Color Legend</text></g><path d="M 622 802 M 662 802 M 662 832 M 622 832" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 802 M 802 802 M 802 832 M 662 832" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 817px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Thread / Process</div></div></div></foreignObject><text x="670" y="822" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Thread / Process</text></switch></g><path d="M 622 832 M 662 832 M 662 862 M 622 862" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 832 M 802 832 M 802 862 M 662 862" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 847px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Write</div></div></div></foreignObject><text x="670" y="852" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Write</text></switch></g><path d="M 622 862 M 662 862 M 662 892 M 622 892" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 862 M 802 862 M 802 892 M 662 892" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 877px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Read</div></div></div></foreignObject><text x="670" y="882" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Read</text></switch></g><path d="M 622 892 M 662 892 M 662 922 M 622 922" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 892 M 802 892 M 802 922 M 662 922" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 907px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Execution Flow</div></div></div></foreignObject><text x="670" y="912" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Execution Flow</text></switch></g><path d="M 622 922 M 662 922 M 662 952 M 622 952" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 922 M 802 922 M 802 952 M 662 952" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 937px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Struct / Vector</div></div></div></foreignObject><text x="670" y="942" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Struct / Vector</text></switch></g><path d="M 622 952 M 662 952 M 662 982 M 622 982" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 952 M 802 952 M 802 982 M 662 982" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 967px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Logical Container</div></div></div></foreignObject><text x="670" y="972" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Logical Container</text></switch></g><path d="M 622 982 M 662 982 M 662 1032 M 622 1032" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 982 M 802 982 M 802 1032 M 662 1032" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 1007px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 46px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">API<br />(Bidirectional IPC)</div></div></div></foreignObject><text x="670" y="1012" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">API...</text></switch></g><path d="M 622 1032 M 662 1032 M 662 1062 M 622 1062" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><path d="M 662 1032 M 802 1032 M 802 1062 M 662 1062" fill="none" stroke="rgb(0, 0, 0)" stroke-linecap="square" stroke-miterlimit="10" pointer-events="none"/><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 flex-start; width: 132px; height: 1px; padding-top: 1047px; margin-left: 670px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 26px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Stream</div></div></div></foreignObject><text x="670" y="1052" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px">Stream</text></switch></g><rect x="631" y="869" width="20" height="20" fill="#f8cecc" stroke="#b85450" stroke-width="2" pointer-events="none"/><rect x="631" y="838" width="20" height="20" fill="#d5e8d4" stroke="#82b366" stroke-width="2" pointer-events="none"/><rect x="631" y="808" width="20" height="20" fill="#ffe6cc" stroke="#d79b00" stroke-width="2" pointer-events="none"/><rect x="631" y="899" width="20" height="20" fill="#d0cee2" stroke="#56517e" stroke-width="2" pointer-events="none"/><rect x="631" y="929" width="20" height="20" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="none"/><rect x="631" y="958" width="20" height="20" fill="#b0e3e6" stroke="#0e8088" stroke-width="2" pointer-events="none"/><path d="M 442 680 L 442 590" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><rect x="631" y="996" width="20" height="20" fill="#7fe01f" stroke="#2d7600" stroke-width="2" pointer-events="none"/><rect x="631" y="1032" width="20" height="20" fill="#76608a" stroke="#432d57" stroke-width="2" pointer-events="none"/><path d="M 227 220 L 227 260 L 227 333.63" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 227 338.88 L 223.5 331.88 L 227 333.63 L 230.5 331.88 Z" fill="#b85450" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 133 L 42 110 L 732 110 L 732 133" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 133 L 42 220 L 732 220 L 732 133" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><path d="M 42 133 L 732 133" fill="none" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/><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: 688px; height: 1px; padding-top: 122px; margin-left: 43px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">Status</div></div></div></foreignObject><text x="387" y="125" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Status</text></switch></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>