Files
modeling-app/rust/kcl-lib/tests/kcl_samples/bone-plate/artifact_graph_flowchart.snap.md
Jonathan Tran aae34cf1e5 Deterministic artifact graph - bring back the clockwork universe (#7483)
* Change to use deterministic artifact graph

* Update output to use the new order

* Fix to clear everything when scene is cleared

* Fix lots

* Update artifact graph output for the last time

* Delete unused sorting code

* Remove unneeded cfg

* Fix to preserve top-level artifacts when there's an error

* Update output after error fix

* Add better doc comments

* Remove duplicate global operations

* Update comments

* Update ignored tests that were flaky

* Update graph for new samples after rebase

* Fix test assertion message
2025-06-16 17:55:24 +00:00

19 KiB

flowchart LR
  subgraph path2 [Path]
    2["Path<br>[541, 569, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
    3["Segment<br>[575, 626, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
    4["Segment<br>[632, 680, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
    5["Segment<br>[686, 737, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
    6["Segment<br>[743, 791, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
    7["Segment<br>[797, 848, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
    8["Segment<br>[854, 902, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
    9["Segment<br>[908, 959, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
    10["Segment<br>[965, 1007, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 9 }]
    11["Segment<br>[1013, 1071, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 10 }]
    12["Segment<br>[1077, 1132, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 11 }]
    13["Segment<br>[1138, 1196, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 12 }]
    14["Segment<br>[1202, 1257, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 13 }]
    15["Segment<br>[1263, 1306, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 14 }]
    16["Segment<br>[1312, 1368, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 15 }]
    17["Segment<br>[1374, 1429, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
    18["Segment<br>[1435, 1491, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 17 }]
    19["Segment<br>[1497, 1504, 0]"]
      %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 18 }]
    20[Solid2d]
  end
  subgraph path73 [Path]
    73["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    74["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    75[Solid2d]
  end
  subgraph path83 [Path]
    83["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    84["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    85[Solid2d]
  end
  subgraph path93 [Path]
    93["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    94["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    95[Solid2d]
  end
  subgraph path103 [Path]
    103["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    104["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    105[Solid2d]
  end
  subgraph path113 [Path]
    113["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    114["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    115[Solid2d]
  end
  subgraph path123 [Path]
    123["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    124["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    125[Solid2d]
  end
  subgraph path133 [Path]
    133["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    134["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    135[Solid2d]
  end
  subgraph path143 [Path]
    143["Path<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    144["Segment<br>[1663, 1707, 0]"]
      %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 1 }]
    145[Solid2d]
  end
  1["Plane<br>[518, 535, 0]"]
    %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
  21["Sweep Revolve<br>[1510, 1557, 0]"]
    %% [ProgramBodyItem { index: 1 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 19 }]
  22[Wall]
    %% face_code_ref=Missing NodePath
  23[Wall]
    %% face_code_ref=Missing NodePath
  24[Wall]
    %% face_code_ref=Missing NodePath
  25[Wall]
    %% face_code_ref=Missing NodePath
  26[Wall]
    %% face_code_ref=Missing NodePath
  27[Wall]
    %% face_code_ref=Missing NodePath
  28[Wall]
    %% face_code_ref=Missing NodePath
  29[Wall]
    %% face_code_ref=Missing NodePath
  30[Wall]
    %% face_code_ref=Missing NodePath
  31[Wall]
    %% face_code_ref=Missing NodePath
  32[Wall]
    %% face_code_ref=Missing NodePath
  33[Wall]
    %% face_code_ref=Missing NodePath
  34[Wall]
    %% face_code_ref=Missing NodePath
  35[Wall]
    %% face_code_ref=Missing NodePath
  36[Wall]
    %% face_code_ref=Missing NodePath
  37[Wall]
    %% face_code_ref=Missing NodePath
  38["Cap Start"]
    %% face_code_ref=Missing NodePath
  39["Cap End"]
    %% face_code_ref=Missing NodePath
  40["SweepEdge Opposite"]
  41["SweepEdge Adjacent"]
  42["SweepEdge Opposite"]
  43["SweepEdge Adjacent"]
  44["SweepEdge Opposite"]
  45["SweepEdge Adjacent"]
  46["SweepEdge Opposite"]
  47["SweepEdge Adjacent"]
  48["SweepEdge Opposite"]
  49["SweepEdge Adjacent"]
  50["SweepEdge Opposite"]
  51["SweepEdge Adjacent"]
  52["SweepEdge Opposite"]
  53["SweepEdge Adjacent"]
  54["SweepEdge Opposite"]
  55["SweepEdge Adjacent"]
  56["SweepEdge Opposite"]
  57["SweepEdge Adjacent"]
  58["SweepEdge Opposite"]
  59["SweepEdge Adjacent"]
  60["SweepEdge Opposite"]
  61["SweepEdge Adjacent"]
  62["SweepEdge Opposite"]
  63["SweepEdge Adjacent"]
  64["SweepEdge Opposite"]
  65["SweepEdge Adjacent"]
  66["SweepEdge Opposite"]
  67["SweepEdge Adjacent"]
  68["SweepEdge Opposite"]
  69["SweepEdge Adjacent"]
  70["SweepEdge Opposite"]
  71["SweepEdge Adjacent"]
  72["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  76["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  77[Wall]
    %% face_code_ref=Missing NodePath
  78["Cap Start"]
    %% face_code_ref=Missing NodePath
  79["Cap End"]
    %% face_code_ref=Missing NodePath
  80["SweepEdge Opposite"]
  81["SweepEdge Adjacent"]
  82["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  86["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  87[Wall]
    %% face_code_ref=Missing NodePath
  88["Cap Start"]
    %% face_code_ref=Missing NodePath
  89["Cap End"]
    %% face_code_ref=Missing NodePath
  90["SweepEdge Opposite"]
  91["SweepEdge Adjacent"]
  92["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  96["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  97[Wall]
    %% face_code_ref=Missing NodePath
  98["Cap Start"]
    %% face_code_ref=Missing NodePath
  99["Cap End"]
    %% face_code_ref=Missing NodePath
  100["SweepEdge Opposite"]
  101["SweepEdge Adjacent"]
  102["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  106["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  107[Wall]
    %% face_code_ref=Missing NodePath
  108["Cap Start"]
    %% face_code_ref=Missing NodePath
  109["Cap End"]
    %% face_code_ref=Missing NodePath
  110["SweepEdge Opposite"]
  111["SweepEdge Adjacent"]
  112["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  116["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  117[Wall]
    %% face_code_ref=Missing NodePath
  118["Cap Start"]
    %% face_code_ref=Missing NodePath
  119["Cap End"]
    %% face_code_ref=Missing NodePath
  120["SweepEdge Opposite"]
  121["SweepEdge Adjacent"]
  122["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  126["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  127[Wall]
    %% face_code_ref=Missing NodePath
  128["Cap Start"]
    %% face_code_ref=Missing NodePath
  129["Cap End"]
    %% face_code_ref=Missing NodePath
  130["SweepEdge Opposite"]
  131["SweepEdge Adjacent"]
  132["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  136["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  137[Wall]
    %% face_code_ref=Missing NodePath
  138["Cap Start"]
    %% face_code_ref=Missing NodePath
  139["Cap End"]
    %% face_code_ref=Missing NodePath
  140["SweepEdge Opposite"]
  141["SweepEdge Adjacent"]
  142["Plane<br>[1638, 1655, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 0 }]
  146["Sweep Extrusion<br>[1715, 1737, 0]"]
    %% [ProgramBodyItem { index: 2 }, VariableDeclarationDeclaration, VariableDeclarationInit, FunctionExpressionBody, FunctionExpressionBodyItem { index: 0 }, ReturnStatementArg, PipeBodyItem { index: 2 }]
  147[Wall]
    %% face_code_ref=Missing NodePath
  148["Cap Start"]
    %% face_code_ref=Missing NodePath
  149["Cap End"]
    %% face_code_ref=Missing NodePath
  150["SweepEdge Opposite"]
  151["SweepEdge Adjacent"]
  152["CompositeSolid Subtract<br>[2147, 2186, 0]"]
    %% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit]
  1 --- 2
  2 --- 3
  2 --- 4
  2 --- 5
  2 --- 6
  2 --- 7
  2 --- 8
  2 --- 9
  2 --- 10
  2 --- 11
  2 --- 12
  2 --- 13
  2 --- 14
  2 --- 15
  2 --- 16
  2 --- 17
  2 --- 18
  2 --- 19
  2 --- 20
  2 ---- 21
  2 --- 152
  3 --- 22
  3 x--> 38
  3 --- 40
  3 --- 41
  4 --- 23
  4 x--> 38
  4 --- 42
  4 --- 43
  5 --- 24
  5 x--> 38
  5 --- 44
  5 --- 45
  6 --- 25
  6 x--> 38
  6 --- 46
  6 --- 47
  7 --- 26
  7 x--> 38
  7 --- 48
  7 --- 49
  8 --- 27
  8 x--> 38
  8 --- 50
  8 --- 51
  9 --- 28
  9 x--> 38
  9 --- 52
  9 --- 53
  10 --- 29
  10 x--> 38
  10 --- 54
  10 --- 55
  11 --- 30
  11 x--> 38
  11 --- 56
  11 --- 57
  12 --- 31
  12 x--> 38
  12 --- 58
  12 --- 59
  13 --- 32
  13 x--> 38
  13 --- 60
  13 --- 61
  14 --- 33
  14 x--> 38
  14 --- 62
  14 --- 63
  15 --- 34
  15 x--> 38
  15 --- 64
  15 --- 65
  16 --- 35
  16 x--> 38
  16 --- 66
  16 --- 67
  17 --- 36
  17 x--> 38
  17 --- 68
  17 --- 69
  18 --- 37
  18 x--> 38
  18 --- 70
  18 --- 71
  21 --- 22
  21 --- 23
  21 --- 24
  21 --- 25
  21 --- 26
  21 --- 27
  21 --- 28
  21 --- 29
  21 --- 30
  21 --- 31
  21 --- 32
  21 --- 33
  21 --- 34
  21 --- 35
  21 --- 36
  21 --- 37
  21 --- 38
  21 --- 39
  21 --- 40
  21 --- 41
  21 --- 42
  21 --- 43
  21 --- 44
  21 --- 45
  21 --- 46
  21 --- 47
  21 --- 48
  21 --- 49
  21 --- 50
  21 --- 51
  21 --- 52
  21 --- 53
  21 --- 54
  21 --- 55
  21 --- 56
  21 --- 57
  21 --- 58
  21 --- 59
  21 --- 60
  21 --- 61
  21 --- 62
  21 --- 63
  21 --- 64
  21 --- 65
  21 --- 66
  21 --- 67
  21 --- 68
  21 --- 69
  21 --- 70
  21 --- 71
  22 --- 40
  22 --- 41
  71 <--x 22
  41 <--x 23
  23 --- 42
  23 --- 43
  43 <--x 24
  24 --- 44
  24 --- 45
  45 <--x 25
  25 --- 46
  25 --- 47
  47 <--x 26
  26 --- 48
  26 --- 49
  49 <--x 27
  27 --- 50
  27 --- 51
  51 <--x 28
  28 --- 52
  28 --- 53
  53 <--x 29
  29 --- 54
  29 --- 55
  55 <--x 30
  30 --- 56
  30 --- 57
  57 <--x 31
  31 --- 58
  31 --- 59
  59 <--x 32
  32 --- 60
  32 --- 61
  61 <--x 33
  33 --- 62
  33 --- 63
  63 <--x 34
  34 --- 64
  34 --- 65
  65 <--x 35
  35 --- 66
  35 --- 67
  67 <--x 36
  36 --- 68
  36 --- 69
  69 <--x 37
  37 --- 70
  37 --- 71
  40 <--x 39
  42 <--x 39
  44 <--x 39
  46 <--x 39
  48 <--x 39
  50 <--x 39
  52 <--x 39
  54 <--x 39
  56 <--x 39
  58 <--x 39
  60 <--x 39
  62 <--x 39
  64 <--x 39
  66 <--x 39
  68 <--x 39
  70 <--x 39
  72 --- 73
  73 --- 74
  73 --- 75
  73 ---- 76
  73 --- 152
  74 --- 77
  74 x--> 79
  74 --- 80
  74 --- 81
  76 --- 77
  76 --- 78
  76 --- 79
  76 --- 80
  76 --- 81
  77 --- 80
  77 --- 81
  80 <--x 78
  82 --- 83
  83 --- 84
  83 --- 85
  83 ---- 86
  83 --- 152
  84 --- 87
  84 x--> 89
  84 --- 90
  84 --- 91
  86 --- 87
  86 --- 88
  86 --- 89
  86 --- 90
  86 --- 91
  87 --- 90
  87 --- 91
  90 <--x 88
  92 --- 93
  93 --- 94
  93 --- 95
  93 ---- 96
  93 --- 152
  94 --- 97
  94 x--> 99
  94 --- 100
  94 --- 101
  96 --- 97
  96 --- 98
  96 --- 99
  96 --- 100
  96 --- 101
  97 --- 100
  97 --- 101
  100 <--x 98
  102 --- 103
  103 --- 104
  103 --- 105
  103 ---- 106
  103 --- 152
  104 --- 107
  104 x--> 109
  104 --- 110
  104 --- 111
  106 --- 107
  106 --- 108
  106 --- 109
  106 --- 110
  106 --- 111
  107 --- 110
  107 --- 111
  110 <--x 108
  112 --- 113
  113 --- 114
  113 --- 115
  113 ---- 116
  113 --- 152
  114 --- 117
  114 x--> 119
  114 --- 120
  114 --- 121
  116 --- 117
  116 --- 118
  116 --- 119
  116 --- 120
  116 --- 121
  117 --- 120
  117 --- 121
  120 <--x 118
  122 --- 123
  123 --- 124
  123 --- 125
  123 ---- 126
  123 --- 152
  124 --- 127
  124 x--> 129
  124 --- 130
  124 --- 131
  126 --- 127
  126 --- 128
  126 --- 129
  126 --- 130
  126 --- 131
  127 --- 130
  127 --- 131
  130 <--x 128
  132 --- 133
  133 --- 134
  133 --- 135
  133 ---- 136
  133 --- 152
  134 --- 137
  134 x--> 139
  134 --- 140
  134 --- 141
  136 --- 137
  136 --- 138
  136 --- 139
  136 --- 140
  136 --- 141
  137 --- 140
  137 --- 141
  140 <--x 138
  142 --- 143
  143 --- 144
  143 --- 145
  143 ---- 146
  143 --- 152
  144 --- 147
  144 x--> 149
  144 --- 150
  144 --- 151
  146 --- 147
  146 --- 148
  146 --- 149
  146 --- 150
  146 --- 151
  147 --- 150
  147 --- 151
  150 <--x 148