<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1026.3333333333335 1536.1111111111109" width="1026.3333333333335" height="1536.1111111111109">
  <!-- svg-source:excalidraw -->
  
  <defs>
    <style class="style-fonts">
      @font-face {
        font-family: "Virgil";
        src: url("https://excalidraw.com/Virgil.woff2");
      }
      @font-face {
        font-family: "Cascadia";
        src: url("https://excalidraw.com/Cascadia.woff2");
      }
      @font-face {
        font-family: "Assistant";
        src: url("https://excalidraw.com/Assistant-Regular.woff2");
      }
    </style>
    
  </defs>
  <g stroke-linecap="round" transform="translate(10 65) rotate(0 241.5 260.5)"><path d="M32 0 C151.76 0, 271.52 0, 451 0 M32 0 C188.61 0, 345.21 0, 451 0 M451 0 C472.33 0, 483 10.67, 483 32 M451 0 C472.33 0, 483 10.67, 483 32 M483 32 C483 151.09, 483 270.19, 483 489 M483 32 C483 159.9, 483 287.81, 483 489 M483 489 C483 510.33, 472.33 521, 451 521 M483 489 C483 510.33, 472.33 521, 451 521 M451 521 C291.14 521, 131.27 521, 32 521 M451 521 C296.75 521, 142.51 521, 32 521 M32 521 C10.67 521, 0 510.33, 0 489 M32 521 C10.67 521, 0 510.33, 0 489 M0 489 C0 316.18, 0 143.36, 0 32 M0 489 C0 341.01, 0 193.02, 0 32 M0 32 C0 10.67, 10.67 0, 32 0 M0 32 C0 10.67, 10.67 0, 32 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(10 12) rotate(0 144.75 22.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="35.99999999999999px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Infrahub Service</text></g><g stroke-linecap="round" transform="translate(10 684) rotate(0 503.16666666666674 421.05555555555543)"><path d="M32 0 C345.72 0, 659.45 0, 974.33 0 M32 0 C305.08 0, 578.16 0, 974.33 0 M974.33 0 C995.67 0, 1006.33 10.67, 1006.33 32 M974.33 0 C995.67 0, 1006.33 10.67, 1006.33 32 M1006.33 32 C1006.33 237.34, 1006.33 442.69, 1006.33 810.11 M1006.33 32 C1006.33 262.47, 1006.33 492.94, 1006.33 810.11 M1006.33 810.11 C1006.33 831.44, 995.67 842.11, 974.33 842.11 M1006.33 810.11 C1006.33 831.44, 995.67 842.11, 974.33 842.11 M974.33 842.11 C635.35 842.11, 296.36 842.11, 32 842.11 M974.33 842.11 C607.27 842.11, 240.21 842.11, 32 842.11 M32 842.11 C10.67 842.11, 0 831.44, 0 810.11 M32 842.11 C10.67 842.11, 0 831.44, 0 810.11 M0 810.11 C0 584.38, 0 358.66, 0 32 M0 810.11 C0 578.42, 0 346.72, 0 32 M0 32 C0 10.67, 10.67 0, 32 0 M0 32 C0 10.67, 10.67 0, 32 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(10 631) rotate(0 125.16666412353516 22.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="35.99999999999999px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">pytest thread</text></g><g stroke-linecap="round" transform="translate(524 62) rotate(0 241.5 260.5)"><path d="M32 0 C153.62 0, 275.24 0, 451 0 M32 0 C128.24 0, 224.48 0, 451 0 M451 0 C472.33 0, 483 10.67, 483 32 M451 0 C472.33 0, 483 10.67, 483 32 M483 32 C483 192.33, 483 352.66, 483 489 M483 32 C483 139.28, 483 246.57, 483 489 M483 489 C483 510.33, 472.33 521, 451 521 M483 489 C483 510.33, 472.33 521, 451 521 M451 521 C357.71 521, 264.42 521, 32 521 M451 521 C324.06 521, 197.12 521, 32 521 M32 521 C10.67 521, 0 510.33, 0 489 M32 521 C10.67 521, 0 510.33, 0 489 M0 489 C0 317.94, 0 146.88, 0 32 M0 489 C0 326.51, 0 164.02, 0 32 M0 32 C0 10.67, 10.67 0, 32 0 M0 32 C0 10.67, 10.67 0, 32 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(524 10) rotate(0 240.3000030517578 22.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="35.99999999999999px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Infrahub Git Agent Service</text></g><g stroke-linecap="round"><g transform="translate(254.21136657182 204) rotate(0 0.6652852518077452 113)"><path d="M0 0 C0.22 37.67, 1.11 188.33, 1.33 226 M0 0 C0.22 37.67, 1.11 188.33, 1.33 226" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(254.21136657182 204) rotate(0 0.6652852518077452 113)"><path d="M-7.36 202.56 C-3.95 211.76, -0.53 220.97, 1.33 226 M-7.36 202.56 C-4.33 210.74, -1.29 218.92, 1.33 226" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(254.21136657182 204) rotate(0 0.6652852518077452 113)"><path d="M9.74 202.46 C6.44 211.7, 3.14 220.95, 1.33 226 M9.74 202.46 C6.81 210.67, 3.87 218.89, 1.33 226" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(81.5 90.25) rotate(0 176 54.5)"><path d="M27.25 0 C138.78 0, 250.31 0, 324.75 0 M27.25 0 C112.89 0, 198.52 0, 324.75 0 M324.75 0 C342.92 0, 352 9.08, 352 27.25 M324.75 0 C342.92 0, 352 9.08, 352 27.25 M352 27.25 C352 46.76, 352 66.27, 352 81.75 M352 27.25 C352 47.4, 352 67.55, 352 81.75 M352 81.75 C352 99.92, 342.92 109, 324.75 109 M352 81.75 C352 99.92, 342.92 109, 324.75 109 M324.75 109 C258.76 109, 192.77 109, 27.25 109 M324.75 109 C214.86 109, 104.96 109, 27.25 109 M27.25 109 C9.08 109, 0 99.92, 0 81.75 M27.25 109 C9.08 109, 0 99.92, 0 81.75 M0 81.75 C0 60.34, 0 38.92, 0 27.25 M0 81.75 C0 64.02, 0 46.3, 0 27.25 M0 27.25 C0 9.08, 9.08 0, 27.25 0 M0 27.25 C0 9.08, 9.08 0, 27.25 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(87.73333740234375 132.25) rotate(0 169.76666259765625 12.5)"><text x="169.76666259765625" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Create/Update a proposed change</text></g><g stroke-linecap="round" transform="translate(80 434.75) rotate(0 177.5 55)"><path d="M27.5 0 C116.68 0, 205.87 0, 327.5 0 M27.5 0 C113.43 0, 199.36 0, 327.5 0 M327.5 0 C345.83 0, 355 9.17, 355 27.5 M327.5 0 C345.83 0, 355 9.17, 355 27.5 M355 27.5 C355 42, 355 56.49, 355 82.5 M355 27.5 C355 43.54, 355 59.57, 355 82.5 M355 82.5 C355 100.83, 345.83 110, 327.5 110 M355 82.5 C355 100.83, 345.83 110, 327.5 110 M327.5 110 C231.28 110, 135.06 110, 27.5 110 M327.5 110 C216.95 110, 106.41 110, 27.5 110 M27.5 110 C9.17 110, 0 100.83, 0 82.5 M27.5 110 C9.17 110, 0 100.83, 0 82.5 M0 82.5 C0 68.5, 0 54.5, 0 27.5 M0 82.5 C0 68.96, 0 55.41, 0 27.5 M0 27.5 C0 9.17, 9.17 0, 27.5 0 M0 27.5 C0 9.17, 9.17 0, 27.5 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(88.71665954589844 452.25) rotate(0 168.78334045410156 37.5)"><text x="168.78334045410156" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Trigger </text><text x="168.78334045410156" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">RequestProposedChangeRunTests </text><text x="168.78334045410156" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">message</text></g><g stroke-linecap="round" transform="translate(573.5 90.25) rotate(0 192 54.5)"><path d="M27.25 0 C106.06 0, 184.87 0, 356.75 0 M27.25 0 C148.66 0, 270.07 0, 356.75 0 M356.75 0 C374.92 0, 384 9.08, 384 27.25 M356.75 0 C374.92 0, 384 9.08, 384 27.25 M384 27.25 C384 45.06, 384 62.86, 384 81.75 M384 27.25 C384 46.23, 384 65.22, 384 81.75 M384 81.75 C384 99.92, 374.92 109, 356.75 109 M384 81.75 C384 99.92, 374.92 109, 356.75 109 M356.75 109 C285.4 109, 214.05 109, 27.25 109 M356.75 109 C244.41 109, 132.07 109, 27.25 109 M27.25 109 C9.08 109, 0 99.92, 0 81.75 M27.25 109 C9.08 109, 0 99.92, 0 81.75 M0 81.75 C0 62.92, 0 44.09, 0 27.25 M0 81.75 C0 69.1, 0 56.45, 0 27.25 M0 27.25 C0 9.08, 9.08 0, 27.25 0 M0 27.25 C0 9.08, 9.08 0, 27.25 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(584.7333374023438 119.75) rotate(0 180.76666259765625 25)"><text x="180.76666259765625" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Run</text><text x="180.76666259765625" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">requests.proposed_change.run_tests</text></g><g stroke-linecap="round" transform="translate(573.5 435.25) rotate(0 192 54.5)"><path d="M27.25 0 C99.02 0, 170.8 0, 356.75 0 M27.25 0 C134.66 0, 242.06 0, 356.75 0 M356.75 0 C374.92 0, 384 9.08, 384 27.25 M356.75 0 C374.92 0, 384 9.08, 384 27.25 M384 27.25 C384 46.03, 384 64.82, 384 81.75 M384 27.25 C384 38.83, 384 50.42, 384 81.75 M384 81.75 C384 99.92, 374.92 109, 356.75 109 M384 81.75 C384 99.92, 374.92 109, 356.75 109 M356.75 109 C239.72 109, 122.69 109, 27.25 109 M356.75 109 C231.41 109, 106.06 109, 27.25 109 M27.25 109 C9.08 109, 0 99.92, 0 81.75 M27.25 109 C9.08 109, 0 99.92, 0 81.75 M0 81.75 C0 70.21, 0 58.67, 0 27.25 M0 81.75 C0 62.29, 0 42.83, 0 27.25 M0 27.25 C0 9.08, 9.08 0, 27.25 0 M0 27.25 C0 9.08, 9.08 0, 27.25 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(711.5499992370605 477.25) rotate(0 53.95000076293945 12.5)"><text x="53.95000076293945" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Run pytest</text></g><g stroke-linecap="round"><g transform="translate(428 437.7810974265285) rotate(0 76.5 -120.33141148330299)"><path d="M0 0 C25.5 -40.11, 127.5 -200.55, 153 -240.66 M0 0 C25.5 -40.11, 127.5 -200.55, 153 -240.66" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(428 437.7810974265285) rotate(0 76.5 -120.33141148330299)"><path d="M147.61 -216.25 C149.49 -224.75, 151.36 -233.24, 153 -240.66 M147.61 -216.25 C149.01 -222.59, 150.41 -228.92, 153 -240.66" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(428 437.7810974265285) rotate(0 76.5 -120.33141148330299)"><path d="M133.18 -225.43 C140.08 -230.73, 146.98 -236.03, 153 -240.66 M133.18 -225.43 C138.32 -229.38, 143.47 -233.34, 153 -240.66" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(765 202) rotate(0 0 116)"><path d="M0 0 C0 38.67, 0 193.33, 0 232 M0 0 C0 38.67, 0 193.33, 0 232" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(765 202) rotate(0 0 116)"><path d="M-8.55 208.51 C-6.4 214.42, -4.25 220.33, 0 232 M-8.55 208.51 C-6.39 214.45, -4.23 220.38, 0 232" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(765 202) rotate(0 0 116)"><path d="M8.55 208.51 C6.4 214.42, 4.25 220.33, 0 232 M8.55 208.51 C6.39 214.45, 4.23 220.38, 0 232" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g transform="translate(85.98332977294916 705.8611111111113) rotate(0 100.01667022705081 17.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Backend Plugin</text></g><g transform="translate(743.4833297729497 705.8611111111113) rotate(0 72.51667022705078 17.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">SDK Plugin</text></g><g stroke-linecap="round" transform="translate(54.88888888888886 767.462962962963) rotate(0 131.11111111111123 46.66666666666674)"><path d="M23.33 0 C74.39 0, 125.44 0, 238.89 0 M23.33 0 C73.58 0, 123.84 0, 238.89 0 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M262.22 23.33 C262.22 39.46, 262.22 55.59, 262.22 70 M262.22 23.33 C262.22 34.23, 262.22 45.12, 262.22 70 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M238.89 93.33 C156.76 93.33, 74.64 93.33, 23.33 93.33 M238.89 93.33 C155.97 93.33, 73.05 93.33, 23.33 93.33 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M0 70 C0 52.25, 0 34.49, 0 23.33 M0 70 C0 54.17, 0 38.34, 0 23.33 M0 23.33 C0 7.78, 7.78 0, 23.33 0 M0 23.33 C0 7.78, 7.78 0, 23.33 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(95.43333435058611 801.6296296296296) rotate(0 90.56666564941409 12.5)"><text x="90.56666564941406" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Plugin initialization</text></g><g stroke-linecap="round" transform="translate(54.888888888888744 1002.3981481481483) rotate(0 131.11111111111117 46.66666666666674)"><path d="M23.33 0 C78.42 0, 133.5 0, 238.89 0 M23.33 0 C81.11 0, 138.88 0, 238.89 0 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M262.22 23.33 C262.22 36.91, 262.22 50.48, 262.22 70 M262.22 23.33 C262.22 39.83, 262.22 56.32, 262.22 70 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M238.89 93.33 C166.52 93.33, 94.15 93.33, 23.33 93.33 M238.89 93.33 C156.55 93.33, 74.22 93.33, 23.33 93.33 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M0 70 C0 57.05, 0 44.11, 0 23.33 M0 70 C0 53.39, 0 36.77, 0 23.33 M0 23.33 C0 7.78, 7.78 0, 23.33 0 M0 23.33 C0 7.78, 7.78 0, 23.33 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(71.28333282470709 1011.564814814815) rotate(0 114.71666717529294 37.5)"><text x="114.71666717529297" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Create </text><text x="114.71666717529297" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">RepositoryValidator</text><text x="114.71666717529297" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">(or re-use existing one)</text></g><g stroke-linecap="round" transform="translate(54.88888888888886 1237.3333333333335) rotate(0 131.11111111111123 46.66666666666674)"><path d="M23.33 0 C67.77 0, 112.21 0, 238.89 0 M23.33 0 C102.87 0, 182.42 0, 238.89 0 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M262.22 23.33 C262.22 37.73, 262.22 52.12, 262.22 70 M262.22 23.33 C262.22 40.37, 262.22 57.41, 262.22 70 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M238.89 93.33 C178.78 93.33, 118.67 93.33, 23.33 93.33 M238.89 93.33 C178.91 93.33, 118.93 93.33, 23.33 93.33 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M0 70 C0 58.27, 0 46.55, 0 23.33 M0 70 C0 53.78, 0 37.56, 0 23.33 M0 23.33 C0 7.78, 7.78 0, 23.33 0 M0 23.33 C0 7.78, 7.78 0, 23.33 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(65.23332977294928 1259.0000000000002) rotate(0 120.76667022705075 25)"><text x="120.76667022705078" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Create check to record </text><text x="120.76667022705078" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">test report</text></g><g stroke-linecap="round" transform="translate(684.8888888888894 767.462962962963) rotate(0 131.1111111111112 46.66666666666674)"><path d="M23.33 0 C104.49 0, 185.64 0, 238.89 0 M23.33 0 C88.93 0, 154.52 0, 238.89 0 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M262.22 23.33 C262.22 37.76, 262.22 52.18, 262.22 70 M262.22 23.33 C262.22 38.98, 262.22 54.62, 262.22 70 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M238.89 93.33 C163.66 93.33, 88.44 93.33, 23.33 93.33 M238.89 93.33 C169.41 93.33, 99.93 93.33, 23.33 93.33 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M0 70 C0 57.21, 0 44.42, 0 23.33 M0 70 C0 54.72, 0 39.43, 0 23.33 M0 23.33 C0 7.78, 7.78 0, 23.33 0 M0 23.33 C0 7.78, 7.78 0, 23.33 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(725.4333343505866 801.6296296296297) rotate(0 90.56666564941406 12.5)"><text x="90.56666564941406" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Plugin initialization</text></g><g stroke-linecap="round" transform="translate(684.8888888888891 1002.3981481481483) rotate(0 131.1111111111112 46.66666666666674)"><path d="M23.33 0 C89.55 0, 155.77 0, 238.89 0 M23.33 0 C98.5 0, 173.67 0, 238.89 0 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M262.22 23.33 C262.22 34.47, 262.22 45.61, 262.22 70 M262.22 23.33 C262.22 37, 262.22 50.66, 262.22 70 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M238.89 93.33 C165.31 93.33, 91.73 93.33, 23.33 93.33 M238.89 93.33 C168.3 93.33, 97.71 93.33, 23.33 93.33 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M0 70 C0 52.11, 0 34.21, 0 23.33 M0 70 C0 55.65, 0 41.31, 0 23.33 M0 23.33 C0 7.78, 7.78 0, 23.33 0 M0 23.33 C0 7.78, 7.78 0, 23.33 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(750.0000000000002 1036.5648148148148) rotate(0 66 12.5)"><text x="66" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Collect tests</text></g><g stroke-linecap="round" transform="translate(684.8888888888894 1237.3333333333335) rotate(0 131.1111111111112 46.66666666666674)"><path d="M23.33 0 C80.22 0, 137.11 0, 238.89 0 M23.33 0 C106.56 0, 189.79 0, 238.89 0 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M238.89 0 C254.44 0, 262.22 7.78, 262.22 23.33 M262.22 23.33 C262.22 39.65, 262.22 55.96, 262.22 70 M262.22 23.33 C262.22 35.32, 262.22 47.3, 262.22 70 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M262.22 70 C262.22 85.56, 254.44 93.33, 238.89 93.33 M238.89 93.33 C182.01 93.33, 125.14 93.33, 23.33 93.33 M238.89 93.33 C158.75 93.33, 78.6 93.33, 23.33 93.33 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M23.33 93.33 C7.78 93.33, 0 85.56, 0 70 M0 70 C0 56.43, 0 42.85, 0 23.33 M0 70 C0 51.95, 0 33.91, 0 23.33 M0 23.33 C0 7.78, 7.78 0, 23.33 0 M0 23.33 C0 7.78, 7.78 0, 23.33 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(718.1333312988288 1271.5000000000002) rotate(0 97.86666870117188 12.5)"><text x="97.86666870117188" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">Run collected tests</text></g><g stroke-linecap="round"><g transform="translate(182.66666666666674 860.666666666667) rotate(0 -1.6666666666666856 70.55555555555554)"><path d="M0 0 C-0.56 23.52, -2.78 117.59, -3.33 141.11 M0 0 C-0.56 23.52, -2.78 117.59, -3.33 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(182.66666666666674 860.666666666667) rotate(0 -1.6666666666666856 70.55555555555554)"><path d="M-11.33 117.42 C-8.51 125.76, -5.7 134.09, -3.33 141.11 M-11.33 117.42 C-8.9 124.62, -6.47 131.81, -3.33 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(182.66666666666674 860.666666666667) rotate(0 -1.6666666666666856 70.55555555555554)"><path d="M5.77 117.83 C2.57 126.02, -0.63 134.21, -3.33 141.11 M5.77 117.83 C3.01 124.9, 0.24 131.97, -3.33 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(584.8888888888889 542.8888888888891) rotate(0 -135.55555555555554 115)"><path d="M0 0 C-45.19 38.33, -225.93 191.67, -271.11 230 M0 0 C-45.19 38.33, -225.93 191.67, -271.11 230" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(584.8888888888889 542.8888888888891) rotate(0 -135.55555555555554 115)"><path d="M-258.73 208.28 C-262.99 215.75, -267.25 223.22, -271.11 230 M-258.73 208.28 C-262.38 214.68, -266.03 221.09, -271.11 230" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(584.8888888888889 542.8888888888891) rotate(0 -135.55555555555554 115)"><path d="M-247.67 221.32 C-255.73 224.31, -263.79 227.29, -271.11 230 M-247.67 221.32 C-254.58 223.88, -261.49 226.44, -271.11 230" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(713.7777777777778 544.0000000000002) rotate(0 0.5555555555555429 111.11111111111109)"><path d="M0 0 C0.19 37.04, 0.93 185.19, 1.11 222.22 M0 0 C0.19 37.04, 0.93 185.19, 1.11 222.22" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(713.7777777777778 544.0000000000002) rotate(0 0.5555555555555429 111.11111111111109)"><path d="M-7.56 198.77 C-5.39 204.63, -3.22 210.5, 1.11 222.22 M-7.56 198.77 C-4.62 206.71, -1.69 214.65, 1.11 222.22" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(713.7777777777778 544.0000000000002) rotate(0 0.5555555555555429 111.11111111111109)"><path d="M9.54 198.69 C7.44 204.57, 5.33 210.45, 1.11 222.22 M9.54 198.69 C6.69 206.66, 3.83 214.63, 1.11 222.22" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(809.3333333333333 860.666666666667) rotate(0 0.5555555555556566 70.55555555555554)"><path d="M0 0 C0.19 23.52, 0.93 117.59, 1.11 141.11 M0 0 C0.19 23.52, 0.93 117.59, 1.11 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(809.3333333333333 860.666666666667) rotate(0 0.5555555555556566 70.55555555555554)"><path d="M-7.62 117.69 C-5.04 124.61, -2.46 131.53, 1.11 141.11 M-7.62 117.69 C-5.79 122.61, -3.95 127.53, 1.11 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(809.3333333333333 860.666666666667) rotate(0 0.5555555555556566 70.55555555555554)"><path d="M9.48 117.55 C7 124.51, 4.53 131.48, 1.11 141.11 M9.48 117.55 C7.72 122.5, 5.96 127.45, 1.11 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(810.4444444444446 1096.2222222222224) rotate(0 0 70.55555555555554)"><path d="M0 0 C0 23.52, 0 117.59, 0 141.11 M0 0 C0 23.52, 0 117.59, 0 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(810.4444444444446 1096.2222222222224) rotate(0 0 70.55555555555554)"><path d="M-8.55 117.62 C-6.43 123.45, -4.31 129.28, 0 141.11 M-8.55 117.62 C-5.51 125.98, -2.47 134.34, 0 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(810.4444444444446 1096.2222222222224) rotate(0 0 70.55555555555554)"><path d="M8.55 117.62 C6.43 123.45, 4.31 129.28, 0 141.11 M8.55 117.62 C5.51 125.98, 2.47 134.34, 0 141.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round" transform="translate(362.05555555555554 1369.555555555556) rotate(0 131.1111111111112 57.77777777777794)"><path d="M28.89 0 C90.1 0, 151.31 0, 233.33 0 M28.89 0 C77.32 0, 125.75 0, 233.33 0 M233.33 0 C252.59 0, 262.22 9.63, 262.22 28.89 M233.33 0 C252.59 0, 262.22 9.63, 262.22 28.89 M262.22 28.89 C262.22 43.06, 262.22 57.23, 262.22 86.67 M262.22 28.89 C262.22 41.31, 262.22 53.74, 262.22 86.67 M262.22 86.67 C262.22 105.93, 252.59 115.56, 233.33 115.56 M262.22 86.67 C262.22 105.93, 252.59 115.56, 233.33 115.56 M233.33 115.56 C186.08 115.56, 138.83 115.56, 28.89 115.56 M233.33 115.56 C181.22 115.56, 129.1 115.56, 28.89 115.56 M28.89 115.56 C9.63 115.56, 0 105.93, 0 86.67 M28.89 115.56 C9.63 115.56, 0 105.93, 0 86.67 M0 86.67 C0 72.1, 0 57.53, 0 28.89 M0 86.67 C0 67.82, 0 48.97, 0 28.89 M0 28.89 C0 9.63, 9.63 0, 28.89 0 M0 28.89 C0 9.63, 9.63 0, 28.89 0" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(379.5333353678385 1389.8333333333342) rotate(0 113.63333129882812 37.5)"><text x="113.63333129882812" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">1) Setup</text><text x="113.63333129882812" y="25" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">2) Call (run test logic)</text><text x="113.63333129882812" y="50" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="middle" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">3) Teardown</text></g><g transform="translate(423.31666819254565 1490.6666666666665) rotate(0 69.8499984741211 12.5)"><text x="0" y="0" font-family="Virgil, Segoe UI Emoji" font-size="20px" fill="#1e1e1e" text-anchor="start" style="white-space: pre;" direction="ltr" dominant-baseline="text-before-edge">For each test</text></g><g stroke-linecap="round"><g transform="translate(690.4444444444446 1325.1111111111113) rotate(0 -35.55555555555566 26.111111111111086)"><path d="M0 0 C-11.85 8.7, -59.26 43.52, -71.11 52.22 M0 0 C-11.85 8.7, -59.26 43.52, -71.11 52.22" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(690.4444444444446 1325.1111111111113) rotate(0 -35.55555555555566 26.111111111111086)"><path d="M-57.24 31.43 C-61.99 38.56, -66.75 45.69, -71.11 52.22 M-57.24 31.43 C-60.67 36.57, -64.1 41.71, -71.11 52.22" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(690.4444444444446 1325.1111111111113) rotate(0 -35.55555555555566 26.111111111111086)"><path d="M-47.12 45.21 C-55.34 47.61, -63.57 50.02, -71.11 52.22 M-47.12 45.21 C-53.05 46.94, -58.98 48.68, -71.11 52.22" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(368.2222222222223 1376.2222222222226) rotate(0 -27.77777777777777 -25.555555555555657)"><path d="M0 0 C-9.26 -8.52, -46.3 -42.59, -55.56 -51.11 M0 0 C-9.26 -8.52, -46.3 -42.59, -55.56 -51.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(368.2222222222223 1376.2222222222226) rotate(0 -27.77777777777777 -25.555555555555657)"><path d="M-32.48 -41.5 C-41.21 -45.13, -49.93 -48.77, -55.56 -51.11 M-32.48 -41.5 C-39.42 -44.39, -46.36 -47.28, -55.56 -51.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(368.2222222222223 1376.2222222222226) rotate(0 -27.77777777777777 -25.555555555555657)"><path d="M-44.06 -28.91 C-48.41 -37.31, -52.75 -45.7, -55.56 -51.11 M-44.06 -28.91 C-47.51 -35.59, -50.97 -42.26, -55.56 -51.11" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask><g stroke-linecap="round"><g transform="translate(320.44444444444446 1048.4444444444448) rotate(0 90 158.8888888888889)"><path d="M0 0 C16.48 0.93, 70.93 -10.56, 98.89 5.56 C126.85 21.67, 154.26 44.63, 167.78 96.67 C181.3 148.7, 177.96 280.93, 180 317.78 M0 0 C16.48 0.93, 70.93 -10.56, 98.89 5.56 C126.85 21.67, 154.26 44.63, 167.78 96.67 C181.3 148.7, 177.96 280.93, 180 317.78" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(320.44444444444446 1048.4444444444448) rotate(0 90 158.8888888888889)"><path d="M171.02 294.44 C173.75 301.53, 176.48 308.62, 180 317.78 M171.02 294.44 C173.93 302, 176.84 309.55, 180 317.78" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g><g transform="translate(320.44444444444446 1048.4444444444448) rotate(0 90 158.8888888888889)"><path d="M188.12 294.13 C185.65 301.32, 183.19 308.5, 180 317.78 M188.12 294.13 C185.49 301.79, 182.86 309.44, 180 317.78" stroke="#1e1e1e" stroke-width="2" fill="none"></path></g></g><mask></mask></svg>