118 lines
29 KiB
XML
118 lines
29 KiB
XML
<svg width="100%" viewBox="0 0 690 430" role="img" xmlns="http://www.w3.org/2000/svg" style="">
|
||
<title style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">Illustration : compromission de la chaîne d'approvisionnement npm</title>
|
||
<desc style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">Un réseau de paquets logiciels représentés par des boîtes cubiques connectées entre elles. Un paquet central rouge, marqué d'un signe d'infection, propage une contamination le long des arêtes du graphe vers les paquets voisins, illustrant la propagation virale d'une attaque sur la chaîne d'approvisionnement npm.</desc>
|
||
<defs>
|
||
<linearGradient id="infected" x1="0%" y1="0%" x2="0%" y2="100%">
|
||
<stop offset="0%" stop-color="#d94a3d"/>
|
||
<stop offset="100%" stop-color="#a8312a"/>
|
||
</linearGradient>
|
||
<linearGradient id="warned" x1="0%" y1="0%" x2="0%" y2="100%">
|
||
<stop offset="0%" stop-color="#e89a3c"/>
|
||
<stop offset="100%" stop-color="#b87520"/>
|
||
</linearGradient>
|
||
<mask id="imagine-text-gaps-6vjtb6" maskUnits="userSpaceOnUse"><rect x="0" y="0" width="690" height="430" fill="white"/><rect x="327" y="55" width="26" height="18" fill="black" rx="2"/><rect x="67" y="215" width="26" height="18" fill="black" rx="2"/><rect x="147" y="295" width="26" height="18" fill="black" rx="2"/><rect x="587" y="215" width="26" height="18" fill="black" rx="2"/><rect x="507" y="295" width="26" height="18" fill="black" rx="2"/><rect x="327" y="355" width="26" height="18" fill="black" rx="2"/><rect x="193" y="115" width="14" height="18" fill="black" rx="2"/><rect x="473" y="115" width="14" height="18" fill="black" rx="2"/><rect x="301.9114685058594" y="202.125" width="76.17707824707031" height="13.625" fill="black" rx="2"/><rect x="312.8999938964844" y="226" width="54.20000076293945" height="19" fill="black" rx="2"/><rect x="367.70001220703125" y="175" width="14.599999904632568" height="19" fill="black" rx="2"/><rect x="221.85000610351562" y="395" width="236.3000030517578" height="18" fill="black" rx="2"/></mask></defs>
|
||
|
||
<!-- Background grid pattern, subtle -->
|
||
<g opacity="0.08" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.08;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<line x1="0" y1="100" x2="680" y2="100" stroke="#888" stroke-width="0.5" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="0" y1="200" x2="680" y2="200" stroke="#888" stroke-width="0.5" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="0" y1="300" x2="680" y2="300" stroke="#888" stroke-width="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="120" y1="0" x2="120" y2="420" stroke="#888" stroke-width="0.5" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="280" y1="0" x2="280" y2="420" stroke="#888" stroke-width="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="440" y1="0" x2="440" y2="420" stroke="#888" stroke-width="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="560" y1="0" x2="560" y2="420" stroke="#888" stroke-width="0.5" style="fill:rgb(0, 0, 0);stroke:rgb(136, 136, 136);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
</g>
|
||
|
||
<!-- Connection edges (drawn before nodes so nodes overlap them) -->
|
||
<!-- Infected edges (red, animated feel via dash) -->
|
||
<line x1="340" y1="210" x2="200" y2="120" stroke="#d94a3d" stroke-width="2" stroke-dasharray="6 4" opacity="0.85" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:2px;stroke-dasharray:6px, 4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.85;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="340" y1="210" x2="480" y2="120" stroke="#d94a3d" stroke-width="2" stroke-dasharray="6 4" opacity="0.85" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:2px;stroke-dasharray:6px, 4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.85;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="340" y1="210" x2="160" y2="300" stroke="#d94a3d" stroke-width="2" stroke-dasharray="6 4" opacity="0.85" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:2px;stroke-dasharray:6px, 4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.85;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="340" y1="210" x2="520" y2="300" stroke="#d94a3d" stroke-width="2" stroke-dasharray="6 4" opacity="0.85" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:2px;stroke-dasharray:6px, 4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.85;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="200" y1="120" x2="80" y2="220" stroke="#e89a3c" stroke-width="1.5" stroke-dasharray="4 4" opacity="0.7" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(232, 154, 60);color:rgb(251, 251, 254);stroke-width:1.5px;stroke-dasharray:4px, 4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.7;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="480" y1="120" x2="600" y2="220" stroke="#e89a3c" stroke-width="1.5" stroke-dasharray="4 4" opacity="0.7" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(232, 154, 60);color:rgb(251, 251, 254);stroke-width:1.5px;stroke-dasharray:4px, 4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.7;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
|
||
<!-- Clean edges (neutral grey) -->
|
||
<line x1="80" y1="220" x2="160" y2="300" stroke="#999" stroke-width="1" opacity="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(153, 153, 153);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="600" y1="220" x2="520" y2="300" stroke="#999" stroke-width="1" opacity="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(153, 153, 153);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="160" y1="300" x2="340" y2="360" stroke="#999" stroke-width="1" opacity="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(153, 153, 153);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="520" y1="300" x2="340" y2="360" stroke="#999" stroke-width="1" opacity="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(153, 153, 153);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="200" y1="120" x2="340" y2="60" stroke="#999" stroke-width="1" opacity="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(153, 153, 153);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<line x1="480" y1="120" x2="340" y2="60" stroke="#999" stroke-width="1" opacity="0.5" mask="url(#imagine-text-gaps-6vjtb6)" style="fill:rgb(0, 0, 0);stroke:rgb(153, 153, 153);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.5;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
|
||
<!-- Clean package nodes (cube-like, neutral) -->
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<!-- Top center package -->
|
||
<rect x="310" y="35" width="60" height="50" rx="4" fill="#e8e6e1" stroke="#666" stroke-width="0.5" style="fill:rgb(232, 230, 225);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="310" y="35" width="60" height="14" rx="4" fill="#c9c6bf" stroke="#666" stroke-width="0.5" style="fill:rgb(201, 198, 191);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="340" y="68" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#444" style="fill:rgb(68, 68, 68);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto">pkg</text>
|
||
</g>
|
||
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<!-- Left side packages -->
|
||
<rect x="50" y="195" width="60" height="50" rx="4" fill="#e8e6e1" stroke="#666" stroke-width="0.5" style="fill:rgb(232, 230, 225);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="50" y="195" width="60" height="14" rx="4" fill="#c9c6bf" stroke="#666" stroke-width="0.5" style="fill:rgb(201, 198, 191);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="80" y="228" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#444" style="fill:rgb(68, 68, 68);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto">pkg</text>
|
||
</g>
|
||
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<rect x="130" y="275" width="60" height="50" rx="4" fill="#e8e6e1" stroke="#666" stroke-width="0.5" style="fill:rgb(232, 230, 225);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="130" y="275" width="60" height="14" rx="4" fill="#c9c6bf" stroke="#666" stroke-width="0.5" style="fill:rgb(201, 198, 191);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="160" y="308" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#444" style="fill:rgb(68, 68, 68);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto">pkg</text>
|
||
</g>
|
||
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<!-- Right side packages -->
|
||
<rect x="570" y="195" width="60" height="50" rx="4" fill="#e8e6e1" stroke="#666" stroke-width="0.5" style="fill:rgb(232, 230, 225);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="570" y="195" width="60" height="14" rx="4" fill="#c9c6bf" stroke="#666" stroke-width="0.5" style="fill:rgb(201, 198, 191);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="600" y="228" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#444" style="fill:rgb(68, 68, 68);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto">pkg</text>
|
||
</g>
|
||
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<rect x="490" y="275" width="60" height="50" rx="4" fill="#e8e6e1" stroke="#666" stroke-width="0.5" style="fill:rgb(232, 230, 225);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="490" y="275" width="60" height="14" rx="4" fill="#c9c6bf" stroke="#666" stroke-width="0.5" style="fill:rgb(201, 198, 191);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="520" y="308" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#444" style="fill:rgb(68, 68, 68);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto">pkg</text>
|
||
</g>
|
||
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<!-- Bottom center package -->
|
||
<rect x="310" y="335" width="60" height="50" rx="4" fill="#e8e6e1" stroke="#666" stroke-width="0.5" style="fill:rgb(232, 230, 225);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="310" y="335" width="60" height="14" rx="4" fill="#c9c6bf" stroke="#666" stroke-width="0.5" style="fill:rgb(201, 198, 191);stroke:rgb(102, 102, 102);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="340" y="368" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#444" style="fill:rgb(68, 68, 68);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:400;text-anchor:middle;dominant-baseline:auto">pkg</text>
|
||
</g>
|
||
|
||
<!-- Warned/at-risk packages (amber) -->
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<rect x="170" y="95" width="60" height="50" rx="4" fill="url(#warned)" stroke="#7a4a14" stroke-width="0.5" style="stroke:rgb(122, 74, 20);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="170" y="95" width="60" height="14" rx="4" fill="#a86b1a" stroke="#7a4a14" stroke-width="0.5" style="fill:rgb(168, 107, 26);stroke:rgb(122, 74, 20);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="200" y="128" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#fff" font-weight="500" style="fill:rgb(255, 255, 255);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:auto">!</text>
|
||
</g>
|
||
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<rect x="450" y="95" width="60" height="50" rx="4" fill="url(#warned)" stroke="#7a4a14" stroke-width="0.5" style="stroke:rgb(122, 74, 20);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="450" y="95" width="60" height="14" rx="4" fill="#a86b1a" stroke="#7a4a14" stroke-width="0.5" style="fill:rgb(168, 107, 26);stroke:rgb(122, 74, 20);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="480" y="128" text-anchor="middle" font-family="ui-monospace, monospace" font-size="10" fill="#fff" font-weight="500" style="fill:rgb(255, 255, 255);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:10px;font-weight:500;text-anchor:middle;dominant-baseline:auto">!</text>
|
||
</g>
|
||
|
||
<!-- Central infected package (large, red, with skull-like glyph) -->
|
||
<g style="fill:rgb(0, 0, 0);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
||
<rect x="290" y="175" width="100" height="80" rx="6" fill="url(#infected)" stroke="#6b1e18" stroke-width="1" style="stroke:rgb(107, 30, 24);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<rect x="290" y="175" width="100" height="22" rx="6" fill="#8a2820" stroke="#6b1e18" stroke-width="1" style="fill:rgb(138, 40, 32);stroke:rgb(107, 30, 24);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<!-- Tape band suggesting tampering -->
|
||
<rect x="285" y="205" width="110" height="10" fill="#6b1e18" opacity="0.6" style="fill:rgb(107, 30, 24);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.6;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="340" y="212" text-anchor="middle" font-family="ui-monospace, monospace" font-size="7" fill="#f4d4cf" letter-spacing="2" style="fill:rgb(244, 212, 207);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:7px;font-weight:400;text-anchor:middle;dominant-baseline:auto">COMPROMISED</text>
|
||
<!-- Package label -->
|
||
<text x="340" y="240" text-anchor="middle" font-family="ui-monospace, monospace" font-size="11" fill="#fff" font-weight="500" style="fill:rgb(255, 255, 255);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:middle;dominant-baseline:auto">npm pkg</text>
|
||
<!-- Warning glyph -->
|
||
<circle cx="375" cy="185" r="8" fill="#fff" stroke="#6b1e18" stroke-width="1" style="fill:rgb(255, 255, 255);stroke:rgb(107, 30, 24);color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<text x="375" y="189" text-anchor="middle" font-family="ui-monospace, monospace" font-size="11" fill="#a8312a" font-weight="500" style="fill:rgb(168, 49, 42);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-monospace, monospace;font-size:11px;font-weight:500;text-anchor:middle;dominant-baseline:auto">×</text>
|
||
</g>
|
||
|
||
<!-- Pulse rings around the infected node (suggesting propagation) -->
|
||
<circle cx="340" cy="215" r="65" fill="none" stroke="#d94a3d" stroke-width="0.5" opacity="0.4" style="fill:none;stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.4;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<circle cx="340" cy="215" r="95" fill="none" stroke="#d94a3d" stroke-width="0.5" opacity="0.25" style="fill:none;stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.25;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
<circle cx="340" cy="215" r="125" fill="none" stroke="#d94a3d" stroke-width="0.5" opacity="0.15" style="fill:none;stroke:rgb(217, 74, 61);color:rgb(251, 251, 254);stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;opacity:0.15;font-family:"Anthropic Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
||
|
||
<!-- Title at bottom -->
|
||
<text x="340" y="408" text-anchor="middle" font-family="ui-sans-serif, system-ui" font-size="11" fill="#888" letter-spacing="3" style="fill:rgb(136, 136, 136);stroke:none;color:rgb(251, 251, 254);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:ui-sans-serif, system-ui;font-size:11px;font-weight:400;text-anchor:middle;dominant-baseline:auto">SUPPLY CHAIN COMPROMISE</text>
|
||
</svg> |