<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
  <diagram name="Page-1" id="_KpfX_hTY5IuFgVwZCuf">
    <mxGraphModel dx="2211" dy="961" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-1" target="Dnw2z6lUwMxqiASKZQQ9-5" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-182" y="515" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-1" target="Dnw2z6lUwMxqiASKZQQ9-6" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-1" value="Webring&#xa;Participant A&#xa;(Links 1,2,3)" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/png,[encoded data, 12716 characters];" parent="1" vertex="1">
          <mxGeometry x="-196" y="548" width="28.16" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-5" target="Dnw2z6lUwMxqiASKZQQ9-6" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-5" target="Dnw2z6lUwMxqiASKZQQ9-1" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-5" value="Webring&#xa;Participant B&#xa;(Links 4,5,6)" style="shape=image;verticalLabelPosition=top;verticalAlign=bottom;imageAspect=0;image=data:image/png,[encoded data, 12716 characters];labelPosition=center;align=center;" parent="1" vertex="1">
          <mxGeometry x="-141" y="493" width="28.16" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-6" target="Dnw2z6lUwMxqiASKZQQ9-5" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="-75" y="515" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-6" target="Dnw2z6lUwMxqiASKZQQ9-1" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-6" value="Webring&#xa;Participant C&#xa;(Links 7,8,9)" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/png,[encoded data, 12716 characters];" parent="1" vertex="1">
          <mxGeometry x="-89" y="548" width="28.16" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-15" target="Dnw2z6lUwMxqiASKZQQ9-17" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-15" value="Webring &#xa;Participant A&#xa;(Links 1,2,3)" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/png,[encoded data, 12716 characters];" parent="1" vertex="1">
          <mxGeometry x="-162" y="798" width="28.16" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-17" target="Dnw2z6lUwMxqiASKZQQ9-20" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-17" target="Dnw2z6lUwMxqiASKZQQ9-28" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="166" y="820" />
              <mxPoint x="166" y="745" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-17" target="Dnw2z6lUwMxqiASKZQQ9-19" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="166" y="820" />
              <mxPoint x="166" y="675" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-17" value="Webring&#xa;Participant C &#xa;downloads (torsocks wget)&#xa;B&#39;s master.csv file&#xa;and then does local edits" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/png,[encoded data, 12716 characters];" parent="1" vertex="1">
          <mxGeometry x="-9" y="798" width="28.16" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-19" value="C_verified.csv&lt;div&gt;links 7,8,9&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="216" y="653" width="93" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-20" target="Dnw2z6lUwMxqiASKZQQ9-22" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-20" value="Downloaded&lt;br&gt;A_verified.csv (potentially risky)&lt;div&gt;links 1,2,3&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="200" y="788.5" width="127" height="63" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-21" target="Dnw2z6lUwMxqiASKZQQ9-25" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-21" target="Dnw2z6lUwMxqiASKZQQ9-36" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="557" y="897" />
              <mxPoint x="557" y="982" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-21" value="C_sensitivelist.csv&lt;div&gt;mark sensitive words&lt;br&gt;(link 2 marked)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="443" y="864" width="105" height="66" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-22" target="Dnw2z6lUwMxqiASKZQQ9-21" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-22" value="C_blacklist.csv&lt;div&gt;remove links with bad words like porn &lt;br&gt;(link 3 removed)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e51400;fontColor=#ffffff;strokeColor=#B20000;" parent="1" vertex="1">
          <mxGeometry x="285" y="863" width="133" height="68" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-25" target="Dnw2z6lUwMxqiASKZQQ9-28" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="636" y="745" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-25" value="&lt;div&gt;result:&lt;br&gt;links 1,2 (sensitive)&lt;br&gt;(link 3 was removed)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="574" y="875" width="125" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-28" target="Dnw2z6lUwMxqiASKZQQ9-19" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-28" value="&lt;div&gt;c_unverified.csv:&lt;br&gt;links&amp;nbsp; 1,2 (sensitive)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="200" y="723" width="125" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-35" value="On a daily basis, cronjob to &lt;br&gt;check for new onion links and to:&lt;br&gt;1) remove the ones that are not tolerated (ex: porn)&lt;br&gt;2) mark as sensitive the ones that may be (ex: drugs)&lt;br&gt;3) list the rest (ex: community A, imageboard Z, etc)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
          <mxGeometry x="-162" y="680" width="301" height="84" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-36" value="remove A_master.csv&lt;br&gt;(no longer needed)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="573" y="962" width="127" height="39" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-20" target="Dnw2z6lUwMxqiASKZQQ9-20" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="347" y="828" />
              <mxPoint x="347" y="804" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-39" value="make sure that the &lt;br&gt;CSV format is respected&lt;br&gt;ignore the lines that have &lt;br&gt;unaccepted characters&lt;br&gt;and only pick the valid lines" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="Dnw2z6lUwMxqiASKZQQ9-38" vertex="1" connectable="0">
          <mxGeometry x="0.061" relative="1" as="geometry">
            <mxPoint x="69" y="6" as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-40" value="Webring &#xa;Participant D&#xa;(links 10-19)" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=data:image/png,[encoded data, 12716 characters];" parent="1" vertex="1">
          <mxGeometry x="78" y="365.5" width="28.16" height="44" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-41" target="Dnw2z6lUwMxqiASKZQQ9-52" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="181" y="289.5" />
              <mxPoint x="448" y="289.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-41" value="Category1.csv&lt;br&gt;links 10,11,12" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
          <mxGeometry x="139" y="363.5" width="84" height="38" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-54" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-45" target="Dnw2z6lUwMxqiASKZQQ9-52" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="269" y="289.5" />
              <mxPoint x="448" y="289.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-45" value="Category2.csv&lt;br&gt;links 13,14,15" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
          <mxGeometry x="229" y="363.5" width="84" height="38" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-46" target="Dnw2z6lUwMxqiASKZQQ9-52" edge="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="372" y="344.5" />
              <mxPoint x="372" y="289.5" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-46" value="Category3.csv&lt;br&gt;links 16,17,18,19" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#60a917;fontColor=#ffffff;strokeColor=#2D7600;" parent="1" vertex="1">
          <mxGeometry x="317" y="363.5" width="109" height="38" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-48" value="category.csv file format:&lt;br&gt;(URL (clearnet/onion chars) (128chars max?),&lt;br&gt;Name (64chars max),&lt;br&gt;Description(256chars max),&lt;br&gt;Status(1 char max),&lt;br&gt;Score(0-100))" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="139" y="407.5" width="287" height="91" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-51" value="verified.csv file format:&lt;br&gt;(Category (64chars max),&lt;br&gt;URL (clearnet/onion chars) (128chars max?),&lt;br&gt;Name (64chars max),&lt;br&gt;Description(256chars max),&lt;br&gt;Status(1 char max),&lt;br&gt;Score(0-100))" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="454" y="408" width="287" height="109" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-52" target="Dnw2z6lUwMxqiASKZQQ9-56" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-52" value="daily cronjob python script,&lt;br&gt;&amp;nbsp;to take all local valid csv entries (except unlisted.csv) to&lt;br&gt;put them in the master.csv file:" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="467" y="254" width="238" height="70" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-56" value="verified.csv&lt;br&gt;links 10,11,12,13,14,15,16,17,18,19" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="454" y="364" width="264" height="38" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="Dnw2z6lUwMxqiASKZQQ9-58" target="Dnw2z6lUwMxqiASKZQQ9-51" edge="1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="Dnw2z6lUwMxqiASKZQQ9-58" value="PHP Search feature:&lt;br&gt;filter master.csv using keywords&lt;div&gt;&lt;br&gt;warning, sanitize inputs !!!&lt;br&gt;only allow a-zA-Z0-9 [.://]&lt;br&gt;&lt;br&gt;if any non-allowed character, display error&amp;nbsp;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#0050ef;fontColor=#ffffff;strokeColor=#001DBC;" parent="1" vertex="1">
          <mxGeometry x="499.5" y="542" width="196" height="121" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-1" value="python scripts to make:" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1415" y="407" width="140" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-3" value="0) darknet_exploration.py" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1464" y="433" width="155" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-4" value="interactive prompt" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1476" y="459" width="104" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-5" value="add a new entry (into unverified.csv)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1494" y="520" width="224" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-6" value="verify an entry (meaning moving it from unverified to verified.csv)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1494" y="576" width="367" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-7" value="add a new webring participant (and download their banner.png)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1494" y="604" width="365" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-8" value="instance-specific setup:" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1126" y="407" width="163" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-9" value="participants/nowherejez...onion/banner.png" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1150" y="470" width="233" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-11" value="participants/nowherejez...onion/verified.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1148" y="537" width="233" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-12" value="2) gen_unverifiedcsv.py" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1464" y="748" width="150" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-13" value="get the verified.csv + unverified.csv from the other webring peers," style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1489" y="775" width="205" height="34" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-14" value="save it into participants/nowhevi...onion/un+verified.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1507" y="814" width="241" height="34" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-15" value="remove each line that does not respect the expected format or that matches blacklisted words" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1489" y="856" width="271" height="34" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-16" value="trust a webring participant" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1494" y="688" width="147" height="18" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-17" value="add a new webring participant" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1494" y="632" width="170" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-18" value="intitial setup: copy the template files into participants/nowherejez...onion/&lt;br&gt;verified.csv and unverified.csv into the folder if they dont exist" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1494" y="486.5" width="399" height="28.5" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-19" value="participants/nowherejez...onion/unverified.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1148" y="564.5" width="253" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-21" value="&lt;u&gt;un+verified.csv&lt;/u&gt; file format: (&lt;br&gt;Instance (cannot be empty) (128 onion chars),&lt;br&gt;Category (64chars max),&lt;br&gt;Name (64chars max),&lt;br&gt;URL (clearnet/onion chars) (128chars max?),&lt;br&gt;Sensitive(1char max), (if empty = not sensitive)&lt;br&gt;Description(256chars max), (optional)&lt;br&gt;Status(1 char max), (v or x)&lt;br&gt;Score(0-100))" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1161" y="593" width="287" height="130" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-22" value="participants/nowherejez...onion/blacklist.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1148" y="735.5" width="253" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-23" value="&lt;u&gt;blacklist.csv&lt;/u&gt; (can be used to blacklist peers, links, names, &lt;b&gt;anything&lt;/b&gt; from external instances)&lt;br&gt;(blacklisted-words (128 chars max))" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1161" y="767" width="287" height="51" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-24" value="PHP scripts to make:" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2101" y="408" width="140" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-25" value="index.php" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2116" y="434" width="140" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-26" value="search function (filter search term)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2128" y="461" width="244" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-27" value="display verified links (display categories, and underneath list all the links)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2149" y="569.5" width="402" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-28" value="display unverified links (display instances, categories, and underneath list all the links)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2149" y="768.5" width="401" height="29" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-29" value="(your instance alone):&lt;br&gt;-category A&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-&amp;gt; Links 1,2,3,4&lt;br&gt;-category B&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-&amp;gt; Links 5,6,7,8&lt;br&gt;&lt;br&gt;external trusted peers:&lt;br&gt;-category A&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-&amp;gt; Links 9,10&lt;br&gt;-category B&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-&amp;gt; Links 11,12" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2149" y="595.5" width="402" height="164" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-30" value="disclaimer: these are links from other instances, we are not endorsing any of them!" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2156" y="802.5" width="452" height="29" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-31" value="Instance A:&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-category A&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&#x9;&lt;/span&gt;-&amp;gt; Links 1,2,3,4&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-category B&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;/span&gt;-&amp;gt; Links 5,6,7,8&lt;div&gt;Instance B:&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-category A&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-&amp;gt; links 9,10&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-category C&lt;br&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;-&amp;gt; links 11,12&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2167.5" y="836.5" width="159" height="155" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-32" value="ANTI DDOS FILTER:&lt;div&gt;-&amp;gt; do not accept any special characters (only a-zA-Z0-9) (refuse the rest such as &#39;/..~`&quot;)&lt;br&gt;-&amp;gt; do not accept more than 128 chars&lt;br&gt;if not ok, display error and refuse to search&lt;br&gt;if ok, call the php function to do the text filtering on the 2 local csv files (READ ONLY)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2144" y="487.5" width="466" height="77" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-33" value="/etc/tor/torrc enable anti-DDOS PoW solution!" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1150" y="438" width="255" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-34" value="webring.php" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2625" y="409.5" width="83" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-35" value="display trusted webring participants" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2640" y="436.5" width="214" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-37" value="display the rest of the untrusted webring participants" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2640" y="503" width="292" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-38" value="Stages:&lt;br&gt;0) New instance: no links verified, no trusted webring participants&lt;br&gt;1) A few links got verified, no trusted webring participants&lt;br&gt;2) Many links got verified, no trusted webring participants, sensitive.csv contains words too&lt;br&gt;3) &lt;b&gt;Can&#39;t trust webring participants yet, blacklist.csv must be created and contain words&lt;/b&gt;&lt;br&gt;4) Many links verified, few trusted webring participants,&amp;nbsp;&lt;br&gt;5) Many links verified, many trusted webring participants,&amp;nbsp;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1239" y="235" width="512.5" height="108" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-39" value="&lt;u&gt;sensitive.csv&lt;/u&gt; (can be used to mark peers, links, names,&amp;nbsp;categories as sensitive (such as &quot;Markets&quot;)&lt;br&gt;(sensitive-words (128 chars max))" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1161" y="863" width="287" height="51" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-40" value="&lt;u&gt;webring-participants.csv&lt;/u&gt;: (&lt;br&gt;Name (64 chars max),&lt;br&gt;URL(onion chars) (128chars max?),&lt;br&gt;Description(256chars max), (optional)&lt;br&gt;Trusted (1char max), (v or x)&lt;br&gt;Status(1 char max), (v or x)&lt;br&gt;Score(0-100))" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1161" y="962" width="287" height="107" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-41" value="By default, no darknet webring participants are trusted,&lt;br&gt;By default, no links are marked as verified.&lt;br&gt;&lt;br&gt;you have to verify links yourself, and mark them as verified manually.&lt;br&gt;If on the other hand you trust a webring participant&#39;s list of links, you can trust him and his links." style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" parent="1" vertex="1">
          <mxGeometry x="1774" y="235" width="530" height="108" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-42" value="remove each line that is ALREADY in your own un+verified csv files" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1489" y="894" width="271" height="34" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-43" value="save each new line into unverified.csv, by marking properly from which instance it came from" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1489" y="932" width="271" height="34" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-44" value="display trusted webring participants sorted by their uptime&lt;br&gt;(display their banner in participants/nowhere...onion/banner.png)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="2653" y="464.5" width="396" height="32.5" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-45" value="create a default banner.png for everyone that wants to remain anonymous" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1161" y="497" width="233" height="30" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-46" value="check that the banner has the correct size, replace it with the default one if not the case (+ make the default banner)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" parent="1" vertex="1">
          <mxGeometry x="1507" y="657" width="355.5" height="28" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-48" value="participants/nowherejez...onion/sensitive.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1150" y="829.5" width="253" height="22" as="geometry" />
        </mxCell>
        <mxCell id="y5LiNj3Ki-r32GMd5Yob-49" value="participants/nowherejez...onion/webring-participants.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1">
          <mxGeometry x="1150" y="931" width="310" height="22" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-1" value="3) cleanup.py" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
          <mxGeometry x="1469" y="986.5" width="122" height="22" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-2" value="check for websites that are at a score of 0/100" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
          <mxGeometry x="1482" y="1018.5" width="261" height="21" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-3" value="move them to dead_links.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
          <mxGeometry x="1482" y="1045.5" width="165" height="22" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-4" value="Safety checks functions (isurlvalid, isonionvalid, etc)" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#008a00;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1">
          <mxGeometry x="1494" y="713" width="227" height="29" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-5" value="If one of the dead_links is back online move them back to unverified.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
          <mxGeometry x="1469" y="1076" width="423" height="22" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-7" value="check if it&#39;s a duplicate, refuse to add it if it is" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
          <mxGeometry x="1514" y="548" width="368" height="22" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-8" value="1) uptimechecker.py" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#fa6800;fontColor=#000000;strokeColor=#C73500;" vertex="1" parent="1">
          <mxGeometry x="1892" y="433" width="132" height="22" as="geometry" />
        </mxCell>
        <mxCell id="-TRDXc1oTJ5iEHleZrOF-9" value="adapt it to the new CSV format&lt;br&gt;in verified.csv, unverified.csv, and webring-participants.csv" style="rounded=0;whiteSpace=wrap;html=1;align=left;fillColor=#a20025;fontColor=#ffffff;strokeColor=#6F0000;" vertex="1" parent="1">
          <mxGeometry x="1904" y="461" width="194" height="47" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
