Files
crypto/ChaCha20_Poly1305_64/doc/chacha20.drawio
2025-06-28 15:48:14 -07:00

389 lines
27 KiB
Plaintext

<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram name="Page-1" id="0d7VDhRL_w2sMOeykiQh">
<mxGraphModel dx="304" dy="205" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="ga53GqhnnIqpRH2Q9tV7-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="HEWMo3yU8EMGNTpzQ4xJ-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="360" y="400" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-9" value="to poly1305" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-8">
<mxGeometry x="-0.118" relative="1" as="geometry">
<mxPoint y="55" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-1" value="CC_0" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="320" y="280" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="HEWMo3yU8EMGNTpzQ4xJ-2" target="ga53GqhnnIqpRH2Q9tV7-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-2" value="CC_1" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="400" y="280" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="HEWMo3yU8EMGNTpzQ4xJ-4" target="ga53GqhnnIqpRH2Q9tV7-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-4" value="CC_n-1" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="480" y="280" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="HEWMo3yU8EMGNTpzQ4xJ-6" target="HEWMo3yU8EMGNTpzQ4xJ-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="310" y="220" as="sourcePoint" />
<Array as="points">
<mxPoint x="290" y="220" />
<mxPoint x="290" y="300" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-34" value="valid" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-33" vertex="1" connectable="0">
<mxGeometry x="0.2588" relative="1" as="geometry">
<mxPoint x="10" y="-68" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" target="HEWMo3yU8EMGNTpzQ4xJ-6">
<mxGeometry relative="1" as="geometry">
<mxPoint x="440" y="160" as="sourcePoint" />
<Array as="points">
<mxPoint x="440" y="170" />
<mxPoint x="440" y="170" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-17" value="key, nonce" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-16">
<mxGeometry x="-0.9174" relative="1" as="geometry">
<mxPoint y="-12" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-6" value="Metadata Scheduler" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="320" y="200" width="240" height="40" as="geometry" />
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-7" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="HEWMo3yU8EMGNTpzQ4xJ-6" target="HEWMo3yU8EMGNTpzQ4xJ-1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="370" y="300" as="sourcePoint" />
<mxPoint x="420" y="250" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-8" value="key" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-7" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-9" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="359.9" y="240" as="sourcePoint" />
<mxPoint x="359.9" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-10" value="nonce" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-9" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-13" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="390" y="240" as="sourcePoint" />
<mxPoint x="390" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-14" value="0" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-13" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-55" value="c+0" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="HEWMo3yU8EMGNTpzQ4xJ-13">
<mxGeometry x="-0.0294" y="1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-17" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="409.93" y="240" as="sourcePoint" />
<mxPoint x="409.93" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-18" value="key" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-17" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="439.90000000000003" y="240" as="sourcePoint" />
<mxPoint x="439.90000000000003" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-20" value="nonce" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-19" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-23" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="469.93" y="240" as="sourcePoint" />
<mxPoint x="469.93" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-24" value="c+1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-23" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="489.93" y="240" as="sourcePoint" />
<mxPoint x="489.93" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-26" value="key" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-25" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-27" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="519.9" y="240" as="sourcePoint" />
<mxPoint x="519.9" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-28" value="nonce" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-27" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-31" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.042;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.125;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="549.9300000000001" y="240" as="sourcePoint" />
<mxPoint x="549.9300000000001" y="280" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="HEWMo3yU8EMGNTpzQ4xJ-32" value="c+n" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="HEWMo3yU8EMGNTpzQ4xJ-31" vertex="1" connectable="0">
<mxGeometry x="0.0588" relative="1" as="geometry">
<mxPoint y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-1" target="ga53GqhnnIqpRH2Q9tV7-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-1" value="keystream sr" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="400" y="360" width="160" height="40" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" target="ga53GqhnnIqpRH2Q9tV7-10">
<mxGeometry relative="1" as="geometry">
<mxPoint x="620" y="200" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-15" value="data" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-14">
<mxGeometry x="-0.9286" relative="1" as="geometry">
<mxPoint y="-16" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-10" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
<mxGeometry x="600" y="360" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-11" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-10" target="ga53GqhnnIqpRH2Q9tV7-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540" y="380" as="sourcePoint" />
<mxPoint x="590" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-12" value="" style="endArrow=none;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-10" target="ga53GqhnnIqpRH2Q9tV7-10">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540" y="380" as="sourcePoint" />
<mxPoint x="590" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-19" target="ga53GqhnnIqpRH2Q9tV7-25">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<mxPoint x="309.96273291925456" y="520" as="sourcePoint" />
<Array as="points">
<mxPoint x="310" y="541" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-45" value="key" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-42">
<mxGeometry x="-0.948" relative="1" as="geometry">
<mxPoint x="-10" y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<mxPoint x="340" y="520" as="sourcePoint" />
<Array as="points">
<mxPoint x="340" y="530" />
<mxPoint x="340" y="530" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-46" value="counter" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-43">
<mxGeometry x="-0.9775" relative="1" as="geometry">
<mxPoint y="-10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<mxPoint x="369.96273291925456" y="520" as="sourcePoint" />
<Array as="points">
<mxPoint x="370" y="541" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-48" value="nonce" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-44">
<mxGeometry x="-0.9552" relative="1" as="geometry">
<mxPoint x="10" y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<mxPoint x="439.9999999999999" y="699.9999999999999" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-54" value="state_out" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-53">
<mxGeometry x="0.7409" y="1" relative="1" as="geometry">
<mxPoint x="-1" y="31" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-19" value="state" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="560" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-20" value="QR" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="280" y="660" width="30" height="20" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-21" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="325" y="700" />
<mxPoint x="260" y="700" />
<mxPoint x="260" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-21" value="QR" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="310" y="660" width="30" height="20" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-22">
<mxGeometry relative="1" as="geometry">
<mxPoint x="280" y="579.9999999999999" as="targetPoint" />
<Array as="points">
<mxPoint x="355" y="700" />
<mxPoint x="260" y="700" />
<mxPoint x="260" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-22" value="QR" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="340" y="660" width="30" height="20" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-23" value="QR" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="370" y="660" width="30" height="20" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-25" value="even/odd shuffle" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;" vertex="1" parent="1">
<mxGeometry x="280" y="620" width="120" height="20" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.125;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-25" target="ga53GqhnnIqpRH2Q9tV7-20">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.375;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-25" target="ga53GqhnnIqpRH2Q9tV7-21">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.625;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-25" target="ga53GqhnnIqpRH2Q9tV7-22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.875;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-25" target="ga53GqhnnIqpRH2Q9tV7-23">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-20" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="295" y="700" />
<mxPoint x="260" y="700" />
<mxPoint x="260" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-23" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="385" y="700" />
<mxPoint x="260" y="700" />
<mxPoint x="260" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-52" value="state_next" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-35">
<mxGeometry x="-0.0423" relative="1" as="geometry">
<mxPoint x="22" y="10" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-36" target="ga53GqhnnIqpRH2Q9tV7-25">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="270" y="620" />
<mxPoint x="270" y="630" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-36">
<mxGeometry relative="1" as="geometry">
<mxPoint x="220" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-39" value="valid out" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-38">
<mxGeometry x="-0.399" relative="1" as="geometry">
<mxPoint y="38" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="219.75000000000006" y="600" as="targetPoint" />
<mxPoint x="219.75" y="560" as="sourcePoint" />
<Array as="points">
<mxPoint x="220" y="581" />
<mxPoint x="220" y="581" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-41" value="valid in" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-40">
<mxGeometry x="-0.8756" relative="1" as="geometry">
<mxPoint y="-12" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-36" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="270" y="620" />
<mxPoint x="270" y="590" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-51" value="count" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-47">
<mxGeometry x="0.1001" y="-1" relative="1" as="geometry">
<mxPoint x="19" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="ga53GqhnnIqpRH2Q9tV7-36" target="ga53GqhnnIqpRH2Q9tV7-19">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="250" y="610" />
<mxPoint x="250" y="570" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-50" value="init" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="ga53GqhnnIqpRH2Q9tV7-49">
<mxGeometry x="0.4511" y="1" relative="1" as="geometry">
<mxPoint x="2" y="-9" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="ga53GqhnnIqpRH2Q9tV7-36" value="count" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="200" y="600" width="40" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>