diff --git "a/docs/img/FSM_compl\303\251t\303\251.drawio" "b/docs/img/FSM_compl\303\251t\303\251.drawio"
new file mode 100644
index 0000000000000000000000000000000000000000..b80226f8032045c62f3bf253373901f33015136c
--- /dev/null
+++ "b/docs/img/FSM_compl\303\251t\303\251.drawio"
@@ -0,0 +1,150 @@
+<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0" version="27.0.2">
+  <diagram name="Page-1" id="lufUWjv2mjaYaQ6cVEt1">
+    <mxGraphModel dx="1120" dy="1592" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="bw7OO0sNot4gaAuLXok9-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="40" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-2" value="&lt;font style=&quot;font-size: 21px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Wait Sample&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="250" y="50" width="140" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-3" value="Store" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="160" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-5" value="Processing&lt;br&gt;Loop" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="280" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-6" value="Output" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="400" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-7" value="Wait End&lt;br&gt;Sample" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="520" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-8" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="bw7OO0sNot4gaAuLXok9-1" target="bw7OO0sNot4gaAuLXok9-3" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="560" y="650" as="sourcePoint" />
+            <mxPoint x="610" y="600" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-9" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="bw7OO0sNot4gaAuLXok9-5" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="240" as="sourcePoint" />
+            <mxPoint x="319.76" y="320" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-10" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="bw7OO0sNot4gaAuLXok9-6" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="360" as="sourcePoint" />
+            <mxPoint x="320" y="400" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-11" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="bw7OO0sNot4gaAuLXok9-6" target="bw7OO0sNot4gaAuLXok9-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="480" as="sourcePoint" />
+            <mxPoint x="319.76" y="560" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-12" value="" style="curved=1;endArrow=block;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;endFill=1;" parent="1" source="bw7OO0sNot4gaAuLXok9-7" target="bw7OO0sNot4gaAuLXok9-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="510" y="320" as="sourcePoint" />
+            <mxPoint x="560" y="270" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="320" y="670" />
+              <mxPoint x="170" y="640" />
+              <mxPoint x="180" y="80" />
+              <mxPoint x="230" y="20" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-14" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="140" as="sourcePoint" />
+            <mxPoint x="340" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-17" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Condition 1&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="bw7OO0sNot4gaAuLXok9-14" vertex="1" connectable="0">
+          <mxGeometry x="0.564" relative="1" as="geometry">
+            <mxPoint x="10" as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-15" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="380" as="sourcePoint" />
+            <mxPoint x="340" y="380" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-16" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="620" as="sourcePoint" />
+            <mxPoint x="340" y="620" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-18" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Condition 2&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="1" vertex="1" connectable="0">
+          <mxGeometry x="340.00279069767436" y="380" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-19" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Condition 3&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="1" vertex="1" connectable="0">
+          <mxGeometry x="340.00279069767436" y="620" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-20" value="" style="curved=1;endArrow=block;html=1;rounded=0;endFill=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="bw7OO0sNot4gaAuLXok9-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="350" y="-10" as="sourcePoint" />
+            <mxPoint x="460" y="90" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="330" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-21" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;Rst = &#39;1&#39;&lt;/span&gt;&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];" parent="1" vertex="1" connectable="0">
+          <mxGeometry x="350.00279069767436" y="-10" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-23" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift = &#39;0&#39;&lt;br&gt;InitAddress = &#39;0&#39;&lt;br&gt;IncrAddress = &#39;0&#39;&lt;br&gt;InitSum = &#39;0&#39;&lt;br&gt;LoadSum = &#39;0&#39;&lt;br&gt;LoadOutput = &#39;1&#39;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;container=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="380" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-24" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="439.77" as="sourcePoint" />
+            <mxPoint x="480" y="439.77" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-33" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift = &lt;br&gt;InitAddress =&amp;nbsp;&lt;br&gt;IncrAddress =&amp;nbsp;&lt;br&gt;InitSum =&amp;nbsp;&lt;br&gt;LoadSum =&amp;nbsp;&lt;br&gt;LoadOutput =&amp;nbsp;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="20" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-34" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="79.80999999999995" as="sourcePoint" />
+            <mxPoint x="480" y="79.80999999999995" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-30" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift = &#39;1&#39;&lt;br&gt;InitAddress = &#39;0&#39;&lt;br&gt;IncrAddress = &#39;0&#39;&lt;br&gt;InitSum = &#39;0&#39;&lt;br&gt;LoadSum = &#39;0&#39;&lt;br&gt;LoadOutput = &#39;0&#39;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="140" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-31" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="199.80999999999995" as="sourcePoint" />
+            <mxPoint x="480" y="199.80999999999995" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-25" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift = &#39;0&#39;&lt;br&gt;InitAddress = &#39;1&#39;&lt;br&gt;IncrAddress = &#39;1&#39;&lt;br&gt;InitSum = &#39;1&#39;&lt;br&gt;LoadSum = &#39;1&#39;&lt;br&gt;LoadOutput = &#39;0&#39;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="260" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-27" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="319.80999999999995" as="sourcePoint" />
+            <mxPoint x="480" y="319.80999999999995" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-36" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift = &#39;0&#39;&lt;br&gt;InitAddress = &#39;0&#39;&lt;br&gt;IncrAddress = &#39;0&#39;&lt;br&gt;InitSum = &#39;0&#39;&lt;br&gt;LoadSum = &#39;0&#39;&lt;br&gt;LoadOutput = &#39;0&#39;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="500" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="bw7OO0sNot4gaAuLXok9-37" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="559.81" as="sourcePoint" />
+            <mxPoint x="480" y="559.81" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>