<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="Agentweaver" version="31.4.5" compressed="false" fluentProfile="react-optical-v1">
<diagram id="v1-foundation-dependencies" name="V1 contract and adapter components"><mxGraphModel page="1" pageScale="1.6543828264758496" pageWidth="794" pageHeight="559" background="#efeae7" grid="0"><root>
<mxCell id="0"/><mxCell id="1" parent="0"/>
<mxCell id="fluent-paper" fluentRole="canvas" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#efeae7;strokeColor=none;strokeWidth=1;shadow=0;" parent="1" vertex="1"><mxGeometry x="192.78998211091232" y="0" width="928" height="924.8" as="geometry"/></mxCell>
<mxCell id="fluent-content" fluentRole="layout" value="" style="group;connectable=0;" parent="1" vertex="1"><mxGeometry x="192.78998211091232" y="0" width="928" height="924.8" as="geometry"/></mxCell>
<mxCell id="group-contracts" fluentRole="group" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#f8f4f1;strokeColor=none;strokeWidth=1;shadow=0;" parent="fluent-content" vertex="1"><mxGeometry x="48" y="48" width="832" height="240" as="geometry"/></mxCell>
<mxCell id="group-adapters" fluentRole="group" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#f8f4f1;strokeColor=none;strokeWidth=1;shadow=0;" parent="fluent-content" vertex="1"><mxGeometry x="48" y="356.4" width="832" height="240" as="geometry"/></mxCell>
<mxCell id="group-azure-resources" fluentRole="group" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#f8f4f1;strokeColor=none;strokeWidth=1;shadow=0;" parent="fluent-content" vertex="1"><mxGeometry x="48" y="664.8" width="832" height="212" as="geometry"/></mxCell>
<mxCell id="e0" fluentRole="connector" value="" style="edgeStyle=none;rounded=1;arcSize=10;html=1;strokeWidth=1.8;strokeColor=#746d68;endArrow=classicThin;endFill=1;endSize=8;fontFamily=Segoe UI;fontSize=16;labelBackgroundColor=#fdfbf8;jumpStyle=arc;jumpSize=14;exitX=0.5;exitY=1;exitPerimeter=0;entryX=0.5;entryY=0;entryPerimeter=0;" parent="fluent-content" edge="1" source="node-iobjectstore" target="node-azure-blob-object-store"><mxGeometry relative="1" as="geometry"><Array as="points"></Array></mxGeometry></mxCell>
<mxCell id="e1" fluentRole="connector" value="" style="edgeStyle=none;rounded=1;arcSize=10;html=1;strokeWidth=1.8;strokeColor=#746d68;endArrow=classicThin;endFill=1;endSize=8;fontFamily=Segoe UI;fontSize=16;labelBackgroundColor=#fdfbf8;jumpStyle=arc;jumpSize=14;exitX=0.5;exitY=1;exitPerimeter=0;entryX=0.5;entryY=0;entryPerimeter=0;" parent="fluent-content" edge="1" source="node-isecretredemption" target="node-azure-key-vault-secret-redemption"><mxGeometry relative="1" as="geometry"><Array as="points"></Array></mxGeometry></mxCell>
<mxCell id="e2" fluentRole="connector" value="" style="edgeStyle=none;rounded=1;arcSize=10;html=1;strokeWidth=1.8;strokeColor=#746d68;endArrow=classicThin;endFill=1;endSize=8;fontFamily=Segoe UI;fontSize=16;labelBackgroundColor=#fdfbf8;jumpStyle=arc;jumpSize=14;exitX=0.5;exitY=1;exitPerimeter=0;entryX=0.5;entryY=0;entryPerimeter=0;" parent="fluent-content" edge="1" source="node-azure-blob-object-store" target="node-azure-blob-container"><mxGeometry relative="1" as="geometry"><Array as="points"></Array></mxGeometry></mxCell>
<mxCell id="e3" fluentRole="connector" value="" style="edgeStyle=none;rounded=1;arcSize=10;html=1;strokeWidth=1.8;strokeColor=#746d68;endArrow=classicThin;endFill=1;endSize=8;fontFamily=Segoe UI;fontSize=16;labelBackgroundColor=#fdfbf8;jumpStyle=arc;jumpSize=14;exitX=0.5;exitY=1;exitPerimeter=0;entryX=0.5;entryY=0;entryPerimeter=0;" parent="fluent-content" edge="1" source="node-azure-key-vault-secret-redemption" target="node-azure-key-vault"><mxGeometry relative="1" as="geometry"><Array as="points"></Array></mxGeometry></mxCell>
<mxCell id="node-azure-blob-object-store" fluentRole="card" value="" style="group;connectable=1;" parent="group-adapters" vertex="1"><mxGeometry x="48" y="64" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-shadow-0" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=2;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="0" y="3" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-shadow-1" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=3;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="0" y="1" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-accent" fluentRole="accent" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#00666d;strokeColor=none;strokeWidth=1;shadow=0;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="0" y="0" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-surface" fluentRole="surface" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="5" y="0" width="335" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-icon" fluentRole="icon" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,%3Csvg%20data-iconcloud-source%3D%22https%3A%2F%2Ficoncloud.design%2Fsearch%3Fq%3DCube%26amp%3Blibrary%3Dfluent-system-library%26amp%3Bcollection%3Dfluent-regular%22%20fill%3D%22%2300666d%22%20aria-hidden%3D%22true%22%20width%3D%2228%22%20height%3D%2228%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5.7%206.04a.5.5%200%201%200-.4.92l4.2%201.86v4.68a.5.5%200%200%200%201%200V8.82l4.2-1.86a.5.5%200%201%200-.4-.92L10%207.95l-4.3-1.9Zm5.6-3.56a3.5%203.5%200%200%200-2.6%200l-5.76%202.3A1.5%201.5%200%200%200%202%206.18v7.64c0%20.62.37%201.17.94%201.4l5.76%202.3a3.5%203.5%200%200%200%202.6%200l5.76-2.3c.57-.23.94-.78.94-1.4V6.18a1.5%201.5%200%200%200-.94-1.4l-5.76-2.3Zm-2.23.93a2.5%202.5%200%200%201%201.86%200l5.76%202.3a.5.5%200%200%201%20.31.47v7.64a.5.5%200%200%201-.31.47l-5.76%202.3a2.5%202.5%200%200%201-1.86%200l-5.76-2.3a.5.5%200%200%201-.31-.47V6.18c0-.2.12-.4.31-.47l5.76-2.3Z%22%20fill%3D%22%2300666d%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="27" y="52" width="28" height="28" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-title" fluentRole="title" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#272320;&quot;&gt;AzureBlobObjectStore&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="71" y="23.599999999999998" width="251" height="23" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-subtitle" fluentRole="subtitle" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:400;line-height:1.15;color:#635c57;&quot;&gt;Concrete object-store adapter.&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=16;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="71" y="48.599999999999994" width="251" height="40.4" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-meta" fluentRole="meta" value="&lt;div style=&quot;font-family:Cascadia Code;font-size:12px;font-weight:400;line-height:1.15;color:#746d68;overflow-wrap:anywhere;&quot;&gt;Library: Agentweaver.ObjectStore.AzureBlob&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Cascadia Code;fontSize=12;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="71" y="89" width="251" height="16.4" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-object-store-badge" fluentRole="badge" value="class / library" style="rounded=1;absoluteArcSize=1;arcSize=24;fillColor=#a6e9ed;strokeColor=none;strokeWidth=1;shadow=0;fontFamily=Segoe UI;fontSize=12;fontColor=#00666d;" parent="node-azure-blob-object-store" vertex="1"><mxGeometry x="240" y="8" width="82" height="22" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption" fluentRole="card" value="" style="group;connectable=1;" parent="group-adapters" vertex="1"><mxGeometry x="444" y="64" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-shadow-0" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=2;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="0" y="3" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-shadow-1" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=3;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="0" y="1" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-accent" fluentRole="accent" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#00666d;strokeColor=none;strokeWidth=1;shadow=0;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="0" y="0" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-surface" fluentRole="surface" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="5" y="0" width="335" height="132" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-icon" fluentRole="icon" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,%3Csvg%20data-iconcloud-source%3D%22https%3A%2F%2Ficoncloud.design%2Fsearch%3Fq%3DCube%26amp%3Blibrary%3Dfluent-system-library%26amp%3Bcollection%3Dfluent-regular%22%20fill%3D%22%2300666d%22%20aria-hidden%3D%22true%22%20width%3D%2228%22%20height%3D%2228%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5.7%206.04a.5.5%200%201%200-.4.92l4.2%201.86v4.68a.5.5%200%200%200%201%200V8.82l4.2-1.86a.5.5%200%201%200-.4-.92L10%207.95l-4.3-1.9Zm5.6-3.56a3.5%203.5%200%200%200-2.6%200l-5.76%202.3A1.5%201.5%200%200%200%202%206.18v7.64c0%20.62.37%201.17.94%201.4l5.76%202.3a3.5%203.5%200%200%200%202.6%200l5.76-2.3c.57-.23.94-.78.94-1.4V6.18a1.5%201.5%200%200%200-.94-1.4l-5.76-2.3Zm-2.23.93a2.5%202.5%200%200%201%201.86%200l5.76%202.3a.5.5%200%200%201%20.31.47v7.64a.5.5%200%200%201-.31.47l-5.76%202.3a2.5%202.5%200%200%201-1.86%200l-5.76-2.3a.5.5%200%200%201-.31-.47V6.18c0-.2.12-.4.31-.47l5.76-2.3Z%22%20fill%3D%22%2300666d%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="27" y="52" width="28" height="28" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-title" fluentRole="title" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#272320;&quot;&gt;Key Vault&lt;br&gt;adapter&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="71" y="21.7" width="251" height="46" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-subtitle" fluentRole="subtitle" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:400;line-height:1.15;color:#635c57;&quot;&gt;Does not authorize callers.&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=16;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="71" y="69.7" width="251" height="21.2" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-meta" fluentRole="meta" value="&lt;div style=&quot;font-family:Cascadia Code;font-size:12px;font-weight:400;line-height:1.15;color:#746d68;overflow-wrap:anywhere;&quot;&gt;Agentweaver.Secrets.AzureKeyVault&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Cascadia Code;fontSize=12;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="71" y="90.9" width="251" height="16.4" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-secret-redemption-badge" fluentRole="badge" value="class / library" style="rounded=1;absoluteArcSize=1;arcSize=24;fillColor=#a6e9ed;strokeColor=none;strokeWidth=1;shadow=0;fontFamily=Segoe UI;fontSize=12;fontColor=#00666d;" parent="node-azure-key-vault-secret-redemption" vertex="1"><mxGeometry x="240" y="8" width="82" height="22" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore" fluentRole="card" value="" style="group;connectable=1;" parent="group-contracts" vertex="1"><mxGeometry x="48" y="64" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-shadow-0" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=2;" parent="node-iobjectstore" vertex="1"><mxGeometry x="0" y="3" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-shadow-1" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=3;" parent="node-iobjectstore" vertex="1"><mxGeometry x="0" y="1" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-accent" fluentRole="accent" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#3f3682;strokeColor=none;strokeWidth=1;shadow=0;" parent="node-iobjectstore" vertex="1"><mxGeometry x="0" y="0" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-surface" fluentRole="surface" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;" parent="node-iobjectstore" vertex="1"><mxGeometry x="5" y="0" width="335" height="132" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-icon" fluentRole="icon" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,%3Csvg%20data-iconcloud-source%3D%22https%3A%2F%2Ficoncloud.design%2Fsearch%3Fq%3DCube%26amp%3Blibrary%3Dfluent-system-library%26amp%3Bcollection%3Dfluent-regular%22%20fill%3D%22%233f3682%22%20aria-hidden%3D%22true%22%20width%3D%2228%22%20height%3D%2228%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5.7%206.04a.5.5%200%201%200-.4.92l4.2%201.86v4.68a.5.5%200%200%200%201%200V8.82l4.2-1.86a.5.5%200%201%200-.4-.92L10%207.95l-4.3-1.9Zm5.6-3.56a3.5%203.5%200%200%200-2.6%200l-5.76%202.3A1.5%201.5%200%200%200%202%206.18v7.64c0%20.62.37%201.17.94%201.4l5.76%202.3a3.5%203.5%200%200%200%202.6%200l5.76-2.3c.57-.23.94-.78.94-1.4V6.18a1.5%201.5%200%200%200-.94-1.4l-5.76-2.3Zm-2.23.93a2.5%202.5%200%200%201%201.86%200l5.76%202.3a.5.5%200%200%201%20.31.47v7.64a.5.5%200%200%201-.31.47l-5.76%202.3a2.5%202.5%200%200%201-1.86%200l-5.76-2.3a.5.5%200%200%201-.31-.47V6.18c0-.2.12-.4.31-.47l5.76-2.3Z%22%20fill%3D%22%233f3682%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A;" parent="node-iobjectstore" vertex="1"><mxGeometry x="27" y="52" width="28" height="28" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-title" fluentRole="title" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#272320;overflow-wrap:anywhere;&quot;&gt;Agentweaver.Abstractions.IObjectStore&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-iobjectstore" vertex="1"><mxGeometry x="71" y="20.3" width="251" height="46" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-subtitle" fluentRole="subtitle" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:400;line-height:1.15;color:#635c57;&quot;&gt;Generic object-storage contract.&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=16;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-iobjectstore" vertex="1"><mxGeometry x="71" y="68.3" width="251" height="40.4" as="geometry"/></mxCell>
<mxCell id="node-iobjectstore-badge" fluentRole="badge" value="interface" style="rounded=1;absoluteArcSize=1;arcSize=24;fillColor=#d2ccf8;strokeColor=none;strokeWidth=1;shadow=0;fontFamily=Segoe UI;fontSize=12;fontColor=#3f3682;" parent="node-iobjectstore" vertex="1"><mxGeometry x="240" y="8" width="82" height="22" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption" fluentRole="card" value="" style="group;connectable=1;" parent="group-contracts" vertex="1"><mxGeometry x="444" y="64" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-shadow-0" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=2;" parent="node-isecretredemption" vertex="1"><mxGeometry x="0" y="3" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-shadow-1" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=3;" parent="node-isecretredemption" vertex="1"><mxGeometry x="0" y="1" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-accent" fluentRole="accent" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#3f3682;strokeColor=none;strokeWidth=1;shadow=0;" parent="node-isecretredemption" vertex="1"><mxGeometry x="0" y="0" width="340" height="132" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-surface" fluentRole="surface" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;" parent="node-isecretredemption" vertex="1"><mxGeometry x="5" y="0" width="335" height="132" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-icon" fluentRole="icon" value="" style="shape=image;aspect=fixed;image=data:image/svg+xml,%3Csvg%20data-iconcloud-source%3D%22https%3A%2F%2Ficoncloud.design%2Fsearch%3Fq%3DCube%26amp%3Blibrary%3Dfluent-system-library%26amp%3Bcollection%3Dfluent-regular%22%20fill%3D%22%233f3682%22%20aria-hidden%3D%22true%22%20width%3D%2228%22%20height%3D%2228%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5.7%206.04a.5.5%200%201%200-.4.92l4.2%201.86v4.68a.5.5%200%200%200%201%200V8.82l4.2-1.86a.5.5%200%201%200-.4-.92L10%207.95l-4.3-1.9Zm5.6-3.56a3.5%203.5%200%200%200-2.6%200l-5.76%202.3A1.5%201.5%200%200%200%202%206.18v7.64c0%20.62.37%201.17.94%201.4l5.76%202.3a3.5%203.5%200%200%200%202.6%200l5.76-2.3c.57-.23.94-.78.94-1.4V6.18a1.5%201.5%200%200%200-.94-1.4l-5.76-2.3Zm-2.23.93a2.5%202.5%200%200%201%201.86%200l5.76%202.3a.5.5%200%200%201%20.31.47v7.64a.5.5%200%200%201-.31.47l-5.76%202.3a2.5%202.5%200%200%201-1.86%200l-5.76-2.3a.5.5%200%200%201-.31-.47V6.18c0-.2.12-.4.31-.47l5.76-2.3Z%22%20fill%3D%22%233f3682%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E%0A;" parent="node-isecretredemption" vertex="1"><mxGeometry x="27" y="52" width="28" height="28" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-title" fluentRole="title" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#272320;overflow-wrap:anywhere;&quot;&gt;Agentweaver.Abstractions.ISecretRedemption&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-isecretredemption" vertex="1"><mxGeometry x="71" y="20.3" width="251" height="46" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-subtitle" fluentRole="subtitle" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:400;line-height:1.15;color:#635c57;&quot;&gt;Generic secret-redemption contract.&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=16;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-isecretredemption" vertex="1"><mxGeometry x="71" y="68.3" width="251" height="40.4" as="geometry"/></mxCell>
<mxCell id="node-isecretredemption-badge" fluentRole="badge" value="interface" style="rounded=1;absoluteArcSize=1;arcSize=24;fillColor=#d2ccf8;strokeColor=none;strokeWidth=1;shadow=0;fontFamily=Segoe UI;fontSize=12;fontColor=#3f3682;" parent="node-isecretredemption" vertex="1"><mxGeometry x="240" y="8" width="82" height="22" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container" fluentRole="card" value="" style="group;connectable=1;" parent="group-azure-resources" vertex="1"><mxGeometry x="48" y="64" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-shadow-0" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=2;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="0" y="3" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-shadow-1" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=3;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="0" y="1" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-accent" fluentRole="accent" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#0e700e;strokeColor=none;strokeWidth=1;shadow=0;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="0" y="0" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-surface" fluentRole="surface" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="5" y="0" width="335" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-icon" fluentRole="icon" value="" style="shape=image;image=img/lib/azure2/storage/Storage_Accounts.svg;imageAspect=1;;fillColor=none;strokeColor=#0e700e;strokeWidth=1.5;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="27" y="38" width="28" height="28" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-title" fluentRole="title" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#272320;&quot;&gt;Azure Blob container&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="71" y="17.8" width="251" height="23" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-subtitle" fluentRole="subtitle" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:400;line-height:1.15;color:#635c57;&quot;&gt;External object-storage resource.&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=16;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="71" y="42.8" width="251" height="40.4" as="geometry"/></mxCell>
<mxCell id="node-azure-blob-container-badge" fluentRole="badge" value="Azure resource" style="rounded=1;absoluteArcSize=1;arcSize=24;fillColor=#9fd89f;strokeColor=none;strokeWidth=1;shadow=0;fontFamily=Segoe UI;fontSize=12;fontColor=#0e700e;" parent="node-azure-blob-container" vertex="1"><mxGeometry x="240" y="8" width="82" height="22" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault" fluentRole="card" value="" style="group;connectable=1;" parent="group-azure-resources" vertex="1"><mxGeometry x="444" y="64" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-shadow-0" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=2;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="0" y="3" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-shadow-1" fluentRole="shadow" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#1c1814;strokeColor=none;strokeWidth=1;shadow=0;opacity=3;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="0" y="1" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-accent" fluentRole="accent" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#0e700e;strokeColor=none;strokeWidth=1;shadow=0;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="0" y="0" width="340" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-surface" fluentRole="surface" value="" style="rounded=1;absoluteArcSize=1;arcSize=32;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="5" y="0" width="335" height="104" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-icon" fluentRole="icon" value="" style="shape=image;image=img/lib/azure2/security/Key_Vaults.svg;imageAspect=1;;fillColor=none;strokeColor=#0e700e;strokeWidth=1.5;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="27" y="38" width="28" height="28" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-title" fluentRole="title" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#272320;&quot;&gt;Azure Key Vault&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="71" y="27.4" width="251" height="23" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-subtitle" fluentRole="subtitle" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:400;line-height:1.15;color:#635c57;&quot;&gt;External secret store.&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=16;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="71" y="52.4" width="251" height="21.2" as="geometry"/></mxCell>
<mxCell id="node-azure-key-vault-badge" fluentRole="badge" value="Azure resource" style="rounded=1;absoluteArcSize=1;arcSize=24;fillColor=#9fd89f;strokeColor=none;strokeWidth=1;shadow=0;fontFamily=Segoe UI;fontSize=12;fontColor=#0e700e;" parent="node-azure-key-vault" vertex="1"><mxGeometry x="240" y="8" width="82" height="22" as="geometry"/></mxCell>
<mxCell id="group-contracts-label" fluentRole="group-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#3f3935;white-space:pre;&quot;&gt;Generic interfaces&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="fluent-content" vertex="1"><mxGeometry x="72" y="56" width="263.2" height="23" as="geometry"/></mxCell>
<mxCell id="group-adapters-label" fluentRole="group-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#3f3935;white-space:pre;&quot;&gt;Azure adapter libraries&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="fluent-content" vertex="1"><mxGeometry x="276" y="364.4" width="335.2" height="23" as="geometry"/></mxCell>
<mxCell id="group-azure-resources-label" fluentRole="group-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:20px;font-weight:600;line-height:1.15;color:#3f3935;white-space:pre;&quot;&gt;External Azure resources&lt;/div&gt;" style="text;html=1;fillColor=none;strokeColor=none;fontFamily=Segoe UI;fontSize=20;spacing=0;align=left;verticalAlign=top;whiteSpace=wrap;" parent="fluent-content" vertex="1"><mxGeometry x="276" y="672.8" width="349.59999999999997" height="23" as="geometry"/></mxCell>
<mxCell id="e0-label" fluentRole="edge-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:600;line-height:1.15;&quot;&gt;implemented by&lt;/div&gt;" style="rounded=1;absoluteArcSize=1;arcSize=12;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;html=1;fontFamily=Segoe UI;fontSize=16;fontColor=#3f3935;fontStyle=1;spacing=0;" parent="fluent-content" vertex="1"><mxGeometry x="194.39999999999998" y="317" width="143.20000000000002" height="30.4" as="geometry"/></mxCell>
<mxCell id="e1-label" fluentRole="edge-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:600;line-height:1.15;&quot;&gt;implemented by&lt;/div&gt;" style="rounded=1;absoluteArcSize=1;arcSize=12;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;html=1;fontFamily=Segoe UI;fontSize=16;fontColor=#3f3935;fontStyle=1;spacing=0;" parent="fluent-content" vertex="1"><mxGeometry x="590.4" y="317" width="143.20000000000002" height="30.4" as="geometry"/></mxCell>
<mxCell id="e2-label" fluentRole="edge-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:600;line-height:1.15;&quot;&gt;accesses&lt;/div&gt;" style="rounded=1;absoluteArcSize=1;arcSize=12;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;html=1;fontFamily=Segoe UI;fontSize=16;fontColor=#3f3935;fontStyle=1;spacing=0;" parent="fluent-content" vertex="1"><mxGeometry x="220.8" y="625.3999999999999" width="90.4" height="30.4" as="geometry"/></mxCell>
<mxCell id="e3-label" fluentRole="edge-label" value="&lt;div style=&quot;font-family:Segoe UI;font-size:16px;font-weight:600;line-height:1.15;&quot;&gt;accesses&lt;/div&gt;" style="rounded=1;absoluteArcSize=1;arcSize=12;fillColor=#fdfbf8;strokeColor=#ece7e3;strokeWidth=1;shadow=0;html=1;fontFamily=Segoe UI;fontSize=16;fontColor=#3f3935;fontStyle=1;spacing=0;" parent="fluent-content" vertex="1"><mxGeometry x="616.8" y="625.3999999999999" width="90.4" height="30.4" as="geometry"/></mxCell>
</root></mxGraphModel></diagram></mxfile>
