mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-11 23:28:17 +00:00
b090f2f624
## Pathfinding with HPA*
Hi! The primary objective of this PR is to replace per-tile A* with
hierarchical pathfinding - HPA*. In practice, this means we create an
abstract graph on top of the actual map with far fewer points and use it
to decide on general path structure. Only then we go back to tile-level
and build path between selected waypoints. This speeds up long distance
pathfinding by over 1000x in some cases. To make the review easier, it
comes with a benchmark and visual playground.
## PREPROCESSING
H part of HPA* means "hierarchical" and requires preprocessing.
This PR includes pre-processing as part inside `new Game()` constructor.
It takes about 135ms for `giantworldmap` on my machine, which increases
the effective initialization from ~95ms to ~230ms. This time could be
reduced in different ways, which are **out of scope** for this PR.
After confirming the initialization time is bearable on low-end devices,
I argue merging this PR as-is is acceptable tradeoff. It creates small
lag at the beginning of a round but pays for itself in the first minute
of the match.
## Nerdy details
**Architecture**
- HPA*-style hierarchical pathfinding
- 32×32 sectors on minimap with gateway nodes on borders
- Gateway graph built via BFS during preprocessing
- Water component optimization skips unreachable gateway pairs
- A* on gateway graph → local A* within sectors → Bresenham path
smoothing
- Minimap upscaling identical to currently used in MiniAStar
**Key Optimizations**
- Typed arrays instead of high-level primitives
- Stamp-based visited tracking (no need to recreate buffers, O(1)
clearing)
- Optional - enabled by default - caching of tile paths between gateways
- Line of sight smoothing for the final path
## Review Focus
Play with included tools, benchmark and visualization. Pathfinding
should be safe to merge as a black box - you do not need to understand
the details. Outcomes can be tested empirically in-game. Visualize (and
share!) edge cases with included playground. Confirm the 100x speedup is
real with benchmark.
If you plan to dive into the code, I suggest the following order:
- Pathfinding abstraction in `src/core/pathfinding/`
- Pathfinding tests in `tests/core/pathfinding/`
- NavMesh in `src/core/pathfinding/navmesh/` + integration with
`Game.ts`
- Benchmark in `tests/pathfinding/benchmark/`
Do not look at playground's code, it has been created with a clanker.
The design is 100% mine and I spent way too long polishing it, but I
haven't even once edited the code manually. There is probably no
abstraction whatsoever, just do not look at the code, let it play.
## Core Changes
#### Pathfinding (`src/core/pathfinding/navmesh/`)
- HPA* + refinement -> three phased pathfinding: A* over the graph ->
naive path -> refinement
- comes with A* and BFS optimized for for specific needs
#### Pre-Processing (`src/core/pathfinding/navmesh/`)
- identify water bodies to avoid pathfinding between disconnected nodes
- create high-level graph of gateways on top of tile map
#### Abstraction (`src/core/pathfinding/`)
- common `PathFinder` interface that can return full path and also act
as state machine (`.next()`)
- adapters for both new and legacy algorithm with fallback to legacy if
navigation mesh not available
#### Benchmark (`tests/pathfinding/benchmark/`)
- `npx tsx tests/pathfinding/benchmark/run.ts` - no guesswork, numbers
- `npx tsx tests/pathfinding/benchmark/run.ts --synthetic` - 1000s of
synthetic paths
- `npx tsc tests/pathfinding/benchmark/generate.ts` - generate more as
needed, test new maps
- includes ONE synthetic scenario to avoid PR bloat, generate more
locally / later
#### Playground (`tests/pathfinding/playground/`)
- `npx tsx tests/pathfinding/playground/server.ts` - visualize paths
with both new and legacy algorithm
## Benchmarks
### Compared with legacy in default - hand picked - scenario:
```
Initialization: 95.95ms -> 227.29ms
Pathfinding: 3038.43ms -> 6.45ms
Distance: 26972 -> 26810 tiles
```
### 42,000 synthetic routes across all maps
```
Running 42 synthetic scenarios with hpa.cached adapter...
✅ synthetic/achiran | Init: 93.42ms | Path: 139.07ms | Dist: 1481630 tiles | Routes: 1000/1000
✅ synthetic/africa | Init: 87.14ms | Path: 155.08ms | Dist: 1829414 tiles | Routes: 1000/1000
✅ synthetic/asia | Init: 57.60ms | Path: 112.55ms | Dist: 1204082 tiles | Routes: 1000/1000
✅ synthetic/australia | Init: 78.18ms | Path: 77.12ms | Dist: 978375 tiles | Routes: 1000/1000
✅ synthetic/baikal | Init: 78.26ms | Path: 152.14ms | Dist: 1600016 tiles | Routes: 1000/1000
✅ synthetic/baikalnukewars | Init: 81.44ms | Path: 165.90ms | Dist: 1699283 tiles | Routes: 1000/1000
✅ synthetic/betweentwoseas | Init: 29.29ms | Path: 114.99ms | Dist: 1338075 tiles | Routes: 1000/1000
✅ synthetic/blacksea | Init: 30.66ms | Path: 93.14ms | Dist: 949217 tiles | Routes: 1000/1000
✅ synthetic/britannia | Init: 74.12ms | Path: 85.62ms | Dist: 866752 tiles | Routes: 1000/1000
✅ synthetic/deglaciatedantarctica | Init: 105.49ms | Path: 192.93ms | Dist: 1574684 tiles | Routes: 1000/1000
✅ synthetic/didier | Init: 81.51ms | Path: 153.70ms | Dist: 1734876 tiles | Routes: 1000/1000
✅ synthetic/eastasia | Init: 49.29ms | Path: 128.63ms | Dist: 1410270 tiles | Routes: 1000/1000
✅ synthetic/europe | Init: 92.55ms | Path: 178.35ms | Dist: 1525216 tiles | Routes: 1000/1000
✅ synthetic/europeclassic | Init: 33.50ms | Path: 104.40ms | Dist: 1209759 tiles | Routes: 1000/1000
✅ synthetic/falklandislands | Init: 63.00ms | Path: 107.41ms | Dist: 1080251 tiles | Routes: 1000/1000
✅ synthetic/faroeislands | Init: 71.91ms | Path: 49.52ms | Dist: 604613 tiles | Routes: 1000/1000
✅ synthetic/fourislands | Init: 45.75ms | Path: 78.91ms | Dist: 937439 tiles | Routes: 1000/1000
✅ synthetic/gatewaytotheatlantic | Init: 81.00ms | Path: 257.06ms | Dist: 2555551 tiles | Routes: 1000/1000
✅ synthetic/giantworldmap | Init: 214.25ms | Path: 220.42ms | Dist: 1976693 tiles | Routes: 1000/1000
✅ synthetic/gulfofstlawrence | Init: 45.16ms | Path: 96.05ms | Dist: 1014604 tiles | Routes: 1000/1000
✅ synthetic/halkidiki | Init: 74.68ms | Path: 149.39ms | Dist: 1546781 tiles | Routes: 1000/1000
✅ synthetic/iceland | Init: 58.72ms | Path: 78.16ms | Dist: 1001554 tiles | Routes: 1000/1000
✅ synthetic/italia | Init: 29.78ms | Path: 139.93ms | Dist: 1412024 tiles | Routes: 1000/1000
✅ synthetic/japan | Init: 161.07ms | Path: 118.65ms | Dist: 1154393 tiles | Routes: 1000/1000
✅ synthetic/lemnos | Init: 52.59ms | Path: 136.69ms | Dist: 1481101 tiles | Routes: 1000/1000
✅ synthetic/lisbon | Init: 49.27ms | Path: 86.53ms | Dist: 1032011 tiles | Routes: 1000/1000
✅ synthetic/manicouagan | Init: 53.74ms | Path: 110.52ms | Dist: 1307630 tiles | Routes: 1000/1000
✅ synthetic/mars | Init: 29.39ms | Path: 80.55ms | Dist: 1091702 tiles | Routes: 1000/1000
✅ synthetic/mena | Init: 26.37ms | Path: 120.09ms | Dist: 1272751 tiles | Routes: 1000/1000
✅ synthetic/montreal | Init: 26.08ms | Path: 106.77ms | Dist: 1187736 tiles | Routes: 1000/1000
✅ synthetic/newyorkcity | Init: 56.60ms | Path: 181.19ms | Dist: 1753875 tiles | Routes: 1000/1000
✅ synthetic/northamerica | Init: 96.29ms | Path: 123.02ms | Dist: 1217221 tiles | Routes: 1000/1000
✅ synthetic/oceania | Init: 52.81ms | Path: 51.96ms | Dist: 482373 tiles | Routes: 1000/1000
✅ synthetic/pangaea | Init: 21.29ms | Path: 56.58ms | Dist: 716189 tiles | Routes: 1000/1000
✅ synthetic/pluto | Init: 53.89ms | Path: 141.62ms | Dist: 1304362 tiles | Routes: 1000/1000
✅ synthetic/southamerica | Init: 85.19ms | Path: 123.03ms | Dist: 1301403 tiles | Routes: 1000/1000
✅ synthetic/straitofgibraltar | Init: 76.68ms | Path: 108.30ms | Dist: 1304592 tiles | Routes: 1000/1000
✅ synthetic/straitofhormuz | Init: 38.97ms | Path: 67.78ms | Dist: 754920 tiles | Routes: 1000/1000
✅ synthetic/surrounded | Init: 95.35ms | Path: 90.18ms | Dist: 1017142 tiles | Routes: 1000/1000
✅ synthetic/svalmel | Init: 60.58ms | Path: 104.75ms | Dist: 1235501 tiles | Routes: 1000/1000
✅ synthetic/twolakes | Init: 62.05ms | Path: 94.54ms | Dist: 1140807 tiles | Routes: 1000/1000
✅ synthetic/world | Init: 41.43ms | Path: 93.42ms | Dist: 873406 tiles | Routes: 1000/1000
Completed 42 scenarios
Total Initialization Time: 2796.32ms
Total Pathfinding Time: 5026.64ms
Total Distance: 53160274 tiles
```
## Playground
**That's the fun part**. Watch NavMesh running circles around legacy
`PathFinder.Mini` in real time. Debug inner workings, test edge cases,
share URLs for debugging.
https://github.com/user-attachments/assets/34e2e3f5-fbc1-4b1f-917d-820766e98d5d
## Discord Tag
`moleole`
1208 lines
30 KiB
TypeScript
1208 lines
30 KiB
TypeScript
export const MAP_NAME = "giantworldmap";
|
|
|
|
export const PORTS: { [k: string]: [number, number] } = {
|
|
Port001: [2224, 1019],
|
|
Port002: [1665, 145],
|
|
Port003: [3969, 186],
|
|
Port004: [1211, 215],
|
|
Port005: [735, 163],
|
|
Port006: [1346, 176],
|
|
Port007: [2561, 150],
|
|
Port008: [653, 173],
|
|
Port009: [2787, 144],
|
|
Port010: [1148, 181],
|
|
Port011: [396, 182],
|
|
Port012: [3613, 180],
|
|
Port013: [3931, 179],
|
|
Port014: [2192, 178],
|
|
Port015: [622, 173],
|
|
Port016: [597, 160],
|
|
Port017: [1663, 172],
|
|
Port018: [802, 162],
|
|
Port019: [3923, 179],
|
|
Port020: [1875, 405],
|
|
Port021: [2883, 159],
|
|
Port022: [3336, 336],
|
|
Port023: [944, 155],
|
|
Port024: [3864, 289],
|
|
Port025: [2303, 290],
|
|
Port026: [2266, 296],
|
|
Port027: [1678, 159],
|
|
Port028: [3259, 289],
|
|
Port029: [2141, 300],
|
|
Port030: [2544, 160],
|
|
Port031: [1132, 294],
|
|
Port032: [855, 152],
|
|
Port033: [3509, 159],
|
|
Port034: [2788, 160],
|
|
Port035: [1872, 312],
|
|
Port036: [2979, 310],
|
|
Port037: [2580, 169],
|
|
Port038: [2789, 145],
|
|
Port039: [3224, 297],
|
|
Port040: [2277, 296],
|
|
Port041: [1295, 160],
|
|
Port042: [2559, 169],
|
|
Port043: [1654, 147],
|
|
Port044: [3583, 148],
|
|
Port045: [2199, 172],
|
|
Port046: [2891, 182],
|
|
Port047: [115, 311],
|
|
Port048: [762, 173],
|
|
Port049: [381, 304],
|
|
Port050: [170, 314],
|
|
Port051: [1676, 159],
|
|
Port052: [3689, 297],
|
|
Port053: [3420, 311],
|
|
Port054: [2827, 294],
|
|
Port055: [280, 293],
|
|
Port056: [2127, 298],
|
|
Port057: [3453, 298],
|
|
Port058: [3144, 143],
|
|
Port059: [228, 296],
|
|
Port060: [3303, 291],
|
|
Port061: [1655, 148],
|
|
Port062: [1043, 145],
|
|
Port063: [3751, 169],
|
|
Port064: [475, 173],
|
|
Port065: [589, 143],
|
|
Port066: [2134, 302],
|
|
Port067: [2702, 160],
|
|
Port068: [2242, 289],
|
|
Port069: [444, 180],
|
|
Port070: [673, 145],
|
|
Port071: [383, 303],
|
|
Port072: [3401, 148],
|
|
Port073: [3912, 179],
|
|
Port074: [3414, 311],
|
|
Port075: [638, 170],
|
|
Port076: [2849, 305],
|
|
Port077: [2214, 293],
|
|
Port078: [3078, 422],
|
|
Port079: [2789, 158],
|
|
Port080: [2554, 169],
|
|
Port081: [2919, 142],
|
|
Port082: [3309, 142],
|
|
Port083: [1323, 173],
|
|
Port084: [1103, 456],
|
|
Port085: [1637, 170],
|
|
Port086: [2101, 411],
|
|
Port087: [2547, 168],
|
|
Port088: [483, 408],
|
|
Port089: [2532, 160],
|
|
Port090: [3225, 142],
|
|
Port091: [2714, 305],
|
|
Port092: [675, 143],
|
|
Port093: [1277, 404],
|
|
Port094: [1223, 411],
|
|
Port095: [2857, 306],
|
|
Port096: [3381, 160],
|
|
Port097: [533, 386],
|
|
Port098: [3543, 490],
|
|
Port099: [1669, 148],
|
|
Port100: [1024, 173],
|
|
Port101: [3384, 310],
|
|
Port102: [1934, 444],
|
|
Port103: [2117, 311],
|
|
Port104: [3290, 423],
|
|
Port105: [2073, 230],
|
|
Port106: [3353, 310],
|
|
Port107: [2144, 297],
|
|
Port108: [625, 169],
|
|
Port109: [2757, 145],
|
|
Port110: [111, 299],
|
|
Port111: [2235, 172],
|
|
Port112: [3162, 318],
|
|
Port113: [1990, 492],
|
|
Port114: [2285, 217],
|
|
Port115: [2791, 148],
|
|
Port116: [1055, 232],
|
|
Port117: [459, 220],
|
|
Port118: [2674, 234],
|
|
Port119: [371, 311],
|
|
Port120: [591, 320],
|
|
Port121: [2808, 160],
|
|
Port122: [2299, 229],
|
|
Port123: [3491, 416],
|
|
Port124: [783, 462],
|
|
Port125: [950, 218],
|
|
Port126: [2842, 151],
|
|
Port127: [51, 288],
|
|
Port128: [955, 230],
|
|
Port129: [2149, 509],
|
|
Port130: [933, 232],
|
|
Port131: [2556, 227],
|
|
Port132: [2709, 315],
|
|
Port133: [179, 235],
|
|
Port134: [1222, 464],
|
|
Port135: [1745, 218],
|
|
Port136: [766, 149],
|
|
Port137: [3149, 386],
|
|
Port138: [4091, 228],
|
|
Port139: [923, 173],
|
|
Port140: [53, 217],
|
|
Port141: [2435, 218],
|
|
Port142: [862, 159],
|
|
Port143: [1133, 299],
|
|
Port144: [252, 218],
|
|
Port145: [584, 421],
|
|
Port146: [52, 217],
|
|
Port147: [1845, 489],
|
|
Port148: [3763, 181],
|
|
Port149: [538, 423],
|
|
Port150: [1470, 241],
|
|
Port151: [891, 226],
|
|
Port152: [1975, 458],
|
|
Port153: [453, 218],
|
|
Port154: [1281, 418],
|
|
Port155: [4049, 221],
|
|
Port156: [3514, 158],
|
|
Port157: [3941, 241],
|
|
Port158: [1498, 229],
|
|
Port159: [590, 478],
|
|
Port160: [321, 182],
|
|
Port161: [2302, 284],
|
|
Port162: [2418, 296],
|
|
Port163: [3139, 384],
|
|
Port164: [1203, 315],
|
|
Port165: [2275, 404],
|
|
Port166: [100, 173],
|
|
Port167: [310, 180],
|
|
Port168: [1287, 396],
|
|
Port169: [2430, 266],
|
|
Port170: [183, 170],
|
|
Port171: [176, 235],
|
|
Port172: [325, 182],
|
|
Port173: [2984, 315],
|
|
Port174: [511, 248],
|
|
Port175: [2700, 215],
|
|
Port176: [2560, 222],
|
|
Port177: [3162, 298],
|
|
Port178: [1917, 463],
|
|
Port179: [1094, 458],
|
|
Port180: [2870, 314],
|
|
Port181: [2683, 221],
|
|
Port182: [1679, 172],
|
|
Port183: [3012, 247],
|
|
Port184: [1324, 214],
|
|
Port185: [2734, 220],
|
|
Port186: [80, 239],
|
|
Port187: [2579, 234],
|
|
Port188: [1297, 152],
|
|
Port189: [1206, 464],
|
|
Port190: [3426, 168],
|
|
Port191: [745, 282],
|
|
Port192: [2996, 329],
|
|
Port193: [2061, 247],
|
|
Port194: [3073, 426],
|
|
Port195: [3051, 246],
|
|
Port196: [3921, 179],
|
|
Port197: [503, 402],
|
|
Port198: [3473, 159],
|
|
Port199: [846, 296],
|
|
Port200: [2179, 180],
|
|
};
|
|
|
|
export const ROUTES: Array<[keyof typeof PORTS, keyof typeof PORTS]> = [
|
|
["Port001", "Port002"],
|
|
["Port001", "Port003"],
|
|
["Port001", "Port004"],
|
|
["Port001", "Port005"],
|
|
["Port001", "Port006"],
|
|
["Port002", "Port003"],
|
|
["Port002", "Port004"],
|
|
["Port002", "Port005"],
|
|
["Port002", "Port006"],
|
|
["Port002", "Port007"],
|
|
["Port003", "Port004"],
|
|
["Port003", "Port005"],
|
|
["Port003", "Port006"],
|
|
["Port003", "Port007"],
|
|
["Port003", "Port008"],
|
|
["Port004", "Port005"],
|
|
["Port004", "Port006"],
|
|
["Port004", "Port007"],
|
|
["Port004", "Port008"],
|
|
["Port004", "Port009"],
|
|
["Port005", "Port006"],
|
|
["Port005", "Port007"],
|
|
["Port005", "Port008"],
|
|
["Port005", "Port009"],
|
|
["Port005", "Port010"],
|
|
["Port006", "Port007"],
|
|
["Port006", "Port008"],
|
|
["Port006", "Port009"],
|
|
["Port006", "Port010"],
|
|
["Port006", "Port011"],
|
|
["Port007", "Port008"],
|
|
["Port007", "Port009"],
|
|
["Port007", "Port010"],
|
|
["Port007", "Port011"],
|
|
["Port007", "Port012"],
|
|
["Port008", "Port009"],
|
|
["Port008", "Port010"],
|
|
["Port008", "Port011"],
|
|
["Port008", "Port012"],
|
|
["Port008", "Port013"],
|
|
["Port009", "Port010"],
|
|
["Port009", "Port011"],
|
|
["Port009", "Port012"],
|
|
["Port009", "Port013"],
|
|
["Port009", "Port014"],
|
|
["Port010", "Port011"],
|
|
["Port010", "Port012"],
|
|
["Port010", "Port013"],
|
|
["Port010", "Port014"],
|
|
["Port010", "Port015"],
|
|
["Port011", "Port012"],
|
|
["Port011", "Port013"],
|
|
["Port011", "Port014"],
|
|
["Port011", "Port015"],
|
|
["Port011", "Port016"],
|
|
["Port012", "Port013"],
|
|
["Port012", "Port014"],
|
|
["Port012", "Port015"],
|
|
["Port012", "Port016"],
|
|
["Port012", "Port017"],
|
|
["Port013", "Port014"],
|
|
["Port013", "Port015"],
|
|
["Port013", "Port016"],
|
|
["Port013", "Port017"],
|
|
["Port013", "Port018"],
|
|
["Port014", "Port015"],
|
|
["Port014", "Port016"],
|
|
["Port014", "Port017"],
|
|
["Port014", "Port018"],
|
|
["Port014", "Port019"],
|
|
["Port015", "Port016"],
|
|
["Port015", "Port017"],
|
|
["Port015", "Port018"],
|
|
["Port015", "Port019"],
|
|
["Port015", "Port020"],
|
|
["Port016", "Port017"],
|
|
["Port016", "Port018"],
|
|
["Port016", "Port019"],
|
|
["Port016", "Port020"],
|
|
["Port016", "Port021"],
|
|
["Port017", "Port018"],
|
|
["Port017", "Port019"],
|
|
["Port017", "Port020"],
|
|
["Port017", "Port021"],
|
|
["Port017", "Port022"],
|
|
["Port018", "Port019"],
|
|
["Port018", "Port020"],
|
|
["Port018", "Port021"],
|
|
["Port018", "Port022"],
|
|
["Port018", "Port023"],
|
|
["Port019", "Port020"],
|
|
["Port019", "Port021"],
|
|
["Port019", "Port022"],
|
|
["Port019", "Port023"],
|
|
["Port019", "Port024"],
|
|
["Port020", "Port021"],
|
|
["Port020", "Port022"],
|
|
["Port020", "Port023"],
|
|
["Port020", "Port024"],
|
|
["Port020", "Port025"],
|
|
["Port021", "Port022"],
|
|
["Port021", "Port023"],
|
|
["Port021", "Port024"],
|
|
["Port021", "Port025"],
|
|
["Port021", "Port026"],
|
|
["Port022", "Port023"],
|
|
["Port022", "Port024"],
|
|
["Port022", "Port025"],
|
|
["Port022", "Port026"],
|
|
["Port022", "Port027"],
|
|
["Port023", "Port024"],
|
|
["Port023", "Port025"],
|
|
["Port023", "Port026"],
|
|
["Port023", "Port027"],
|
|
["Port023", "Port028"],
|
|
["Port024", "Port025"],
|
|
["Port024", "Port026"],
|
|
["Port024", "Port027"],
|
|
["Port024", "Port028"],
|
|
["Port024", "Port029"],
|
|
["Port025", "Port026"],
|
|
["Port025", "Port027"],
|
|
["Port025", "Port028"],
|
|
["Port025", "Port029"],
|
|
["Port025", "Port030"],
|
|
["Port026", "Port027"],
|
|
["Port026", "Port028"],
|
|
["Port026", "Port029"],
|
|
["Port026", "Port030"],
|
|
["Port026", "Port031"],
|
|
["Port027", "Port028"],
|
|
["Port027", "Port029"],
|
|
["Port027", "Port030"],
|
|
["Port027", "Port031"],
|
|
["Port027", "Port032"],
|
|
["Port028", "Port029"],
|
|
["Port028", "Port030"],
|
|
["Port028", "Port031"],
|
|
["Port028", "Port032"],
|
|
["Port028", "Port033"],
|
|
["Port029", "Port030"],
|
|
["Port029", "Port031"],
|
|
["Port029", "Port032"],
|
|
["Port029", "Port033"],
|
|
["Port029", "Port034"],
|
|
["Port030", "Port031"],
|
|
["Port030", "Port032"],
|
|
["Port030", "Port033"],
|
|
["Port030", "Port034"],
|
|
["Port030", "Port035"],
|
|
["Port031", "Port032"],
|
|
["Port031", "Port033"],
|
|
["Port031", "Port034"],
|
|
["Port031", "Port035"],
|
|
["Port031", "Port036"],
|
|
["Port032", "Port033"],
|
|
["Port032", "Port034"],
|
|
["Port032", "Port035"],
|
|
["Port032", "Port036"],
|
|
["Port032", "Port037"],
|
|
["Port033", "Port034"],
|
|
["Port033", "Port035"],
|
|
["Port033", "Port036"],
|
|
["Port033", "Port037"],
|
|
["Port033", "Port038"],
|
|
["Port034", "Port035"],
|
|
["Port034", "Port036"],
|
|
["Port034", "Port037"],
|
|
["Port034", "Port038"],
|
|
["Port034", "Port039"],
|
|
["Port035", "Port036"],
|
|
["Port035", "Port037"],
|
|
["Port035", "Port038"],
|
|
["Port035", "Port039"],
|
|
["Port035", "Port040"],
|
|
["Port036", "Port037"],
|
|
["Port036", "Port038"],
|
|
["Port036", "Port039"],
|
|
["Port036", "Port040"],
|
|
["Port036", "Port041"],
|
|
["Port037", "Port038"],
|
|
["Port037", "Port039"],
|
|
["Port037", "Port040"],
|
|
["Port037", "Port041"],
|
|
["Port037", "Port042"],
|
|
["Port038", "Port039"],
|
|
["Port038", "Port040"],
|
|
["Port038", "Port041"],
|
|
["Port038", "Port042"],
|
|
["Port038", "Port043"],
|
|
["Port039", "Port040"],
|
|
["Port039", "Port041"],
|
|
["Port039", "Port042"],
|
|
["Port039", "Port043"],
|
|
["Port039", "Port044"],
|
|
["Port040", "Port041"],
|
|
["Port040", "Port042"],
|
|
["Port040", "Port043"],
|
|
["Port040", "Port044"],
|
|
["Port040", "Port045"],
|
|
["Port041", "Port042"],
|
|
["Port041", "Port043"],
|
|
["Port041", "Port044"],
|
|
["Port041", "Port045"],
|
|
["Port041", "Port046"],
|
|
["Port042", "Port043"],
|
|
["Port042", "Port044"],
|
|
["Port042", "Port045"],
|
|
["Port042", "Port046"],
|
|
["Port042", "Port047"],
|
|
["Port043", "Port044"],
|
|
["Port043", "Port045"],
|
|
["Port043", "Port046"],
|
|
["Port043", "Port047"],
|
|
["Port043", "Port048"],
|
|
["Port044", "Port045"],
|
|
["Port044", "Port046"],
|
|
["Port044", "Port047"],
|
|
["Port044", "Port048"],
|
|
["Port044", "Port049"],
|
|
["Port045", "Port046"],
|
|
["Port045", "Port047"],
|
|
["Port045", "Port048"],
|
|
["Port045", "Port049"],
|
|
["Port045", "Port050"],
|
|
["Port046", "Port047"],
|
|
["Port046", "Port048"],
|
|
["Port046", "Port049"],
|
|
["Port046", "Port050"],
|
|
["Port046", "Port051"],
|
|
["Port047", "Port048"],
|
|
["Port047", "Port049"],
|
|
["Port047", "Port050"],
|
|
["Port047", "Port051"],
|
|
["Port047", "Port052"],
|
|
["Port048", "Port049"],
|
|
["Port048", "Port050"],
|
|
["Port048", "Port051"],
|
|
["Port048", "Port052"],
|
|
["Port048", "Port053"],
|
|
["Port049", "Port050"],
|
|
["Port049", "Port051"],
|
|
["Port049", "Port052"],
|
|
["Port049", "Port053"],
|
|
["Port049", "Port054"],
|
|
["Port050", "Port051"],
|
|
["Port050", "Port052"],
|
|
["Port050", "Port053"],
|
|
["Port050", "Port054"],
|
|
["Port050", "Port055"],
|
|
["Port051", "Port052"],
|
|
["Port051", "Port053"],
|
|
["Port051", "Port054"],
|
|
["Port051", "Port055"],
|
|
["Port051", "Port056"],
|
|
["Port052", "Port053"],
|
|
["Port052", "Port054"],
|
|
["Port052", "Port055"],
|
|
["Port052", "Port056"],
|
|
["Port052", "Port057"],
|
|
["Port053", "Port054"],
|
|
["Port053", "Port055"],
|
|
["Port053", "Port056"],
|
|
["Port053", "Port057"],
|
|
["Port053", "Port058"],
|
|
["Port054", "Port055"],
|
|
["Port054", "Port056"],
|
|
["Port054", "Port057"],
|
|
["Port054", "Port058"],
|
|
["Port054", "Port059"],
|
|
["Port055", "Port056"],
|
|
["Port055", "Port057"],
|
|
["Port055", "Port058"],
|
|
["Port055", "Port059"],
|
|
["Port055", "Port060"],
|
|
["Port056", "Port057"],
|
|
["Port056", "Port058"],
|
|
["Port056", "Port059"],
|
|
["Port056", "Port060"],
|
|
["Port056", "Port061"],
|
|
["Port057", "Port058"],
|
|
["Port057", "Port059"],
|
|
["Port057", "Port060"],
|
|
["Port057", "Port061"],
|
|
["Port057", "Port062"],
|
|
["Port058", "Port059"],
|
|
["Port058", "Port060"],
|
|
["Port058", "Port061"],
|
|
["Port058", "Port062"],
|
|
["Port058", "Port063"],
|
|
["Port059", "Port060"],
|
|
["Port059", "Port061"],
|
|
["Port059", "Port062"],
|
|
["Port059", "Port063"],
|
|
["Port059", "Port064"],
|
|
["Port060", "Port061"],
|
|
["Port060", "Port062"],
|
|
["Port060", "Port063"],
|
|
["Port060", "Port064"],
|
|
["Port060", "Port065"],
|
|
["Port061", "Port062"],
|
|
["Port061", "Port063"],
|
|
["Port061", "Port064"],
|
|
["Port061", "Port065"],
|
|
["Port061", "Port066"],
|
|
["Port062", "Port063"],
|
|
["Port062", "Port064"],
|
|
["Port062", "Port065"],
|
|
["Port062", "Port066"],
|
|
["Port062", "Port067"],
|
|
["Port063", "Port064"],
|
|
["Port063", "Port065"],
|
|
["Port063", "Port066"],
|
|
["Port063", "Port067"],
|
|
["Port063", "Port068"],
|
|
["Port064", "Port065"],
|
|
["Port064", "Port066"],
|
|
["Port064", "Port067"],
|
|
["Port064", "Port068"],
|
|
["Port064", "Port069"],
|
|
["Port065", "Port066"],
|
|
["Port065", "Port067"],
|
|
["Port065", "Port068"],
|
|
["Port065", "Port069"],
|
|
["Port065", "Port070"],
|
|
["Port066", "Port067"],
|
|
["Port066", "Port068"],
|
|
["Port066", "Port069"],
|
|
["Port066", "Port070"],
|
|
["Port066", "Port071"],
|
|
["Port067", "Port068"],
|
|
["Port067", "Port069"],
|
|
["Port067", "Port070"],
|
|
["Port067", "Port071"],
|
|
["Port067", "Port072"],
|
|
["Port068", "Port069"],
|
|
["Port068", "Port070"],
|
|
["Port068", "Port071"],
|
|
["Port068", "Port072"],
|
|
["Port068", "Port073"],
|
|
["Port069", "Port070"],
|
|
["Port069", "Port071"],
|
|
["Port069", "Port072"],
|
|
["Port069", "Port073"],
|
|
["Port069", "Port074"],
|
|
["Port070", "Port071"],
|
|
["Port070", "Port072"],
|
|
["Port070", "Port073"],
|
|
["Port070", "Port074"],
|
|
["Port070", "Port075"],
|
|
["Port071", "Port072"],
|
|
["Port071", "Port073"],
|
|
["Port071", "Port074"],
|
|
["Port071", "Port075"],
|
|
["Port071", "Port076"],
|
|
["Port072", "Port073"],
|
|
["Port072", "Port074"],
|
|
["Port072", "Port075"],
|
|
["Port072", "Port076"],
|
|
["Port072", "Port077"],
|
|
["Port073", "Port074"],
|
|
["Port073", "Port075"],
|
|
["Port073", "Port076"],
|
|
["Port073", "Port077"],
|
|
["Port073", "Port078"],
|
|
["Port074", "Port075"],
|
|
["Port074", "Port076"],
|
|
["Port074", "Port077"],
|
|
["Port074", "Port078"],
|
|
["Port074", "Port079"],
|
|
["Port075", "Port076"],
|
|
["Port075", "Port077"],
|
|
["Port075", "Port078"],
|
|
["Port075", "Port079"],
|
|
["Port075", "Port080"],
|
|
["Port076", "Port077"],
|
|
["Port076", "Port078"],
|
|
["Port076", "Port079"],
|
|
["Port076", "Port080"],
|
|
["Port076", "Port081"],
|
|
["Port077", "Port078"],
|
|
["Port077", "Port079"],
|
|
["Port077", "Port080"],
|
|
["Port077", "Port081"],
|
|
["Port077", "Port082"],
|
|
["Port078", "Port079"],
|
|
["Port078", "Port080"],
|
|
["Port078", "Port081"],
|
|
["Port078", "Port082"],
|
|
["Port078", "Port083"],
|
|
["Port079", "Port080"],
|
|
["Port079", "Port081"],
|
|
["Port079", "Port082"],
|
|
["Port079", "Port083"],
|
|
["Port079", "Port084"],
|
|
["Port080", "Port081"],
|
|
["Port080", "Port082"],
|
|
["Port080", "Port083"],
|
|
["Port080", "Port084"],
|
|
["Port080", "Port085"],
|
|
["Port081", "Port082"],
|
|
["Port081", "Port083"],
|
|
["Port081", "Port084"],
|
|
["Port081", "Port085"],
|
|
["Port081", "Port086"],
|
|
["Port082", "Port083"],
|
|
["Port082", "Port084"],
|
|
["Port082", "Port085"],
|
|
["Port082", "Port086"],
|
|
["Port082", "Port087"],
|
|
["Port083", "Port084"],
|
|
["Port083", "Port085"],
|
|
["Port083", "Port086"],
|
|
["Port083", "Port087"],
|
|
["Port083", "Port088"],
|
|
["Port084", "Port085"],
|
|
["Port084", "Port086"],
|
|
["Port084", "Port087"],
|
|
["Port084", "Port088"],
|
|
["Port084", "Port089"],
|
|
["Port085", "Port086"],
|
|
["Port085", "Port087"],
|
|
["Port085", "Port088"],
|
|
["Port085", "Port089"],
|
|
["Port085", "Port090"],
|
|
["Port086", "Port087"],
|
|
["Port086", "Port088"],
|
|
["Port086", "Port089"],
|
|
["Port086", "Port090"],
|
|
["Port086", "Port091"],
|
|
["Port087", "Port088"],
|
|
["Port087", "Port089"],
|
|
["Port087", "Port090"],
|
|
["Port087", "Port091"],
|
|
["Port087", "Port092"],
|
|
["Port088", "Port089"],
|
|
["Port088", "Port090"],
|
|
["Port088", "Port091"],
|
|
["Port088", "Port092"],
|
|
["Port088", "Port093"],
|
|
["Port089", "Port090"],
|
|
["Port089", "Port091"],
|
|
["Port089", "Port092"],
|
|
["Port089", "Port093"],
|
|
["Port089", "Port094"],
|
|
["Port090", "Port091"],
|
|
["Port090", "Port092"],
|
|
["Port090", "Port093"],
|
|
["Port090", "Port094"],
|
|
["Port090", "Port095"],
|
|
["Port091", "Port092"],
|
|
["Port091", "Port093"],
|
|
["Port091", "Port094"],
|
|
["Port091", "Port095"],
|
|
["Port091", "Port096"],
|
|
["Port092", "Port093"],
|
|
["Port092", "Port094"],
|
|
["Port092", "Port095"],
|
|
["Port092", "Port096"],
|
|
["Port092", "Port097"],
|
|
["Port093", "Port094"],
|
|
["Port093", "Port095"],
|
|
["Port093", "Port096"],
|
|
["Port093", "Port097"],
|
|
["Port093", "Port098"],
|
|
["Port094", "Port095"],
|
|
["Port094", "Port096"],
|
|
["Port094", "Port097"],
|
|
["Port094", "Port098"],
|
|
["Port094", "Port099"],
|
|
["Port095", "Port096"],
|
|
["Port095", "Port097"],
|
|
["Port095", "Port098"],
|
|
["Port095", "Port099"],
|
|
["Port095", "Port100"],
|
|
["Port096", "Port097"],
|
|
["Port096", "Port098"],
|
|
["Port096", "Port099"],
|
|
["Port096", "Port100"],
|
|
["Port096", "Port101"],
|
|
["Port097", "Port098"],
|
|
["Port097", "Port099"],
|
|
["Port097", "Port100"],
|
|
["Port097", "Port101"],
|
|
["Port097", "Port102"],
|
|
["Port098", "Port099"],
|
|
["Port098", "Port100"],
|
|
["Port098", "Port101"],
|
|
["Port098", "Port102"],
|
|
["Port098", "Port103"],
|
|
["Port099", "Port100"],
|
|
["Port099", "Port101"],
|
|
["Port099", "Port102"],
|
|
["Port099", "Port103"],
|
|
["Port099", "Port104"],
|
|
["Port100", "Port101"],
|
|
["Port100", "Port102"],
|
|
["Port100", "Port103"],
|
|
["Port100", "Port104"],
|
|
["Port100", "Port105"],
|
|
["Port101", "Port102"],
|
|
["Port101", "Port103"],
|
|
["Port101", "Port104"],
|
|
["Port101", "Port105"],
|
|
["Port101", "Port106"],
|
|
["Port102", "Port103"],
|
|
["Port102", "Port104"],
|
|
["Port102", "Port105"],
|
|
["Port102", "Port106"],
|
|
["Port102", "Port107"],
|
|
["Port103", "Port104"],
|
|
["Port103", "Port105"],
|
|
["Port103", "Port106"],
|
|
["Port103", "Port107"],
|
|
["Port103", "Port108"],
|
|
["Port104", "Port105"],
|
|
["Port104", "Port106"],
|
|
["Port104", "Port107"],
|
|
["Port104", "Port108"],
|
|
["Port104", "Port109"],
|
|
["Port105", "Port106"],
|
|
["Port105", "Port107"],
|
|
["Port105", "Port108"],
|
|
["Port105", "Port109"],
|
|
["Port105", "Port110"],
|
|
["Port106", "Port107"],
|
|
["Port106", "Port108"],
|
|
["Port106", "Port109"],
|
|
["Port106", "Port110"],
|
|
["Port106", "Port111"],
|
|
["Port107", "Port108"],
|
|
["Port107", "Port109"],
|
|
["Port107", "Port110"],
|
|
["Port107", "Port111"],
|
|
["Port107", "Port112"],
|
|
["Port108", "Port109"],
|
|
["Port108", "Port110"],
|
|
["Port108", "Port111"],
|
|
["Port108", "Port112"],
|
|
["Port108", "Port113"],
|
|
["Port109", "Port110"],
|
|
["Port109", "Port111"],
|
|
["Port109", "Port112"],
|
|
["Port109", "Port113"],
|
|
["Port109", "Port114"],
|
|
["Port110", "Port111"],
|
|
["Port110", "Port112"],
|
|
["Port110", "Port113"],
|
|
["Port110", "Port114"],
|
|
["Port110", "Port115"],
|
|
["Port111", "Port112"],
|
|
["Port111", "Port113"],
|
|
["Port111", "Port114"],
|
|
["Port111", "Port115"],
|
|
["Port111", "Port116"],
|
|
["Port112", "Port113"],
|
|
["Port112", "Port114"],
|
|
["Port112", "Port115"],
|
|
["Port112", "Port116"],
|
|
["Port112", "Port117"],
|
|
["Port113", "Port114"],
|
|
["Port113", "Port115"],
|
|
["Port113", "Port116"],
|
|
["Port113", "Port117"],
|
|
["Port113", "Port118"],
|
|
["Port114", "Port115"],
|
|
["Port114", "Port116"],
|
|
["Port114", "Port117"],
|
|
["Port114", "Port118"],
|
|
["Port114", "Port119"],
|
|
["Port115", "Port116"],
|
|
["Port115", "Port117"],
|
|
["Port115", "Port118"],
|
|
["Port115", "Port119"],
|
|
["Port115", "Port120"],
|
|
["Port116", "Port117"],
|
|
["Port116", "Port118"],
|
|
["Port116", "Port119"],
|
|
["Port116", "Port120"],
|
|
["Port116", "Port121"],
|
|
["Port117", "Port118"],
|
|
["Port117", "Port119"],
|
|
["Port117", "Port120"],
|
|
["Port117", "Port121"],
|
|
["Port117", "Port122"],
|
|
["Port118", "Port119"],
|
|
["Port118", "Port120"],
|
|
["Port118", "Port121"],
|
|
["Port118", "Port122"],
|
|
["Port118", "Port123"],
|
|
["Port119", "Port120"],
|
|
["Port119", "Port121"],
|
|
["Port119", "Port122"],
|
|
["Port119", "Port123"],
|
|
["Port119", "Port124"],
|
|
["Port120", "Port121"],
|
|
["Port120", "Port122"],
|
|
["Port120", "Port123"],
|
|
["Port120", "Port124"],
|
|
["Port120", "Port125"],
|
|
["Port121", "Port122"],
|
|
["Port121", "Port123"],
|
|
["Port121", "Port124"],
|
|
["Port121", "Port125"],
|
|
["Port121", "Port126"],
|
|
["Port122", "Port123"],
|
|
["Port122", "Port124"],
|
|
["Port122", "Port125"],
|
|
["Port122", "Port126"],
|
|
["Port122", "Port127"],
|
|
["Port123", "Port124"],
|
|
["Port123", "Port125"],
|
|
["Port123", "Port126"],
|
|
["Port123", "Port127"],
|
|
["Port123", "Port128"],
|
|
["Port124", "Port125"],
|
|
["Port124", "Port126"],
|
|
["Port124", "Port127"],
|
|
["Port124", "Port128"],
|
|
["Port124", "Port129"],
|
|
["Port125", "Port126"],
|
|
["Port125", "Port127"],
|
|
["Port125", "Port128"],
|
|
["Port125", "Port129"],
|
|
["Port125", "Port130"],
|
|
["Port126", "Port127"],
|
|
["Port126", "Port128"],
|
|
["Port126", "Port129"],
|
|
["Port126", "Port130"],
|
|
["Port126", "Port131"],
|
|
["Port127", "Port128"],
|
|
["Port127", "Port129"],
|
|
["Port127", "Port130"],
|
|
["Port127", "Port131"],
|
|
["Port127", "Port132"],
|
|
["Port128", "Port129"],
|
|
["Port128", "Port130"],
|
|
["Port128", "Port131"],
|
|
["Port128", "Port132"],
|
|
["Port128", "Port133"],
|
|
["Port129", "Port130"],
|
|
["Port129", "Port131"],
|
|
["Port129", "Port132"],
|
|
["Port129", "Port133"],
|
|
["Port129", "Port134"],
|
|
["Port130", "Port131"],
|
|
["Port130", "Port132"],
|
|
["Port130", "Port133"],
|
|
["Port130", "Port134"],
|
|
["Port130", "Port135"],
|
|
["Port131", "Port132"],
|
|
["Port131", "Port133"],
|
|
["Port131", "Port134"],
|
|
["Port131", "Port135"],
|
|
["Port131", "Port136"],
|
|
["Port132", "Port133"],
|
|
["Port132", "Port134"],
|
|
["Port132", "Port135"],
|
|
["Port132", "Port136"],
|
|
["Port132", "Port137"],
|
|
["Port133", "Port134"],
|
|
["Port133", "Port135"],
|
|
["Port133", "Port136"],
|
|
["Port133", "Port137"],
|
|
["Port133", "Port138"],
|
|
["Port134", "Port135"],
|
|
["Port134", "Port136"],
|
|
["Port134", "Port137"],
|
|
["Port134", "Port138"],
|
|
["Port134", "Port139"],
|
|
["Port135", "Port136"],
|
|
["Port135", "Port137"],
|
|
["Port135", "Port138"],
|
|
["Port135", "Port139"],
|
|
["Port135", "Port140"],
|
|
["Port136", "Port137"],
|
|
["Port136", "Port138"],
|
|
["Port136", "Port139"],
|
|
["Port136", "Port140"],
|
|
["Port136", "Port141"],
|
|
["Port137", "Port138"],
|
|
["Port137", "Port139"],
|
|
["Port137", "Port140"],
|
|
["Port137", "Port141"],
|
|
["Port137", "Port142"],
|
|
["Port138", "Port139"],
|
|
["Port138", "Port140"],
|
|
["Port138", "Port141"],
|
|
["Port138", "Port142"],
|
|
["Port138", "Port143"],
|
|
["Port139", "Port140"],
|
|
["Port139", "Port141"],
|
|
["Port139", "Port142"],
|
|
["Port139", "Port143"],
|
|
["Port139", "Port144"],
|
|
["Port140", "Port141"],
|
|
["Port140", "Port142"],
|
|
["Port140", "Port143"],
|
|
["Port140", "Port144"],
|
|
["Port140", "Port145"],
|
|
["Port141", "Port142"],
|
|
["Port141", "Port143"],
|
|
["Port141", "Port144"],
|
|
["Port141", "Port145"],
|
|
["Port141", "Port146"],
|
|
["Port142", "Port143"],
|
|
["Port142", "Port144"],
|
|
["Port142", "Port145"],
|
|
["Port142", "Port146"],
|
|
["Port142", "Port147"],
|
|
["Port143", "Port144"],
|
|
["Port143", "Port145"],
|
|
["Port143", "Port146"],
|
|
["Port143", "Port147"],
|
|
["Port143", "Port148"],
|
|
["Port144", "Port145"],
|
|
["Port144", "Port146"],
|
|
["Port144", "Port147"],
|
|
["Port144", "Port148"],
|
|
["Port144", "Port149"],
|
|
["Port145", "Port146"],
|
|
["Port145", "Port147"],
|
|
["Port145", "Port148"],
|
|
["Port145", "Port149"],
|
|
["Port145", "Port150"],
|
|
["Port146", "Port147"],
|
|
["Port146", "Port148"],
|
|
["Port146", "Port149"],
|
|
["Port146", "Port150"],
|
|
["Port146", "Port151"],
|
|
["Port147", "Port148"],
|
|
["Port147", "Port149"],
|
|
["Port147", "Port150"],
|
|
["Port147", "Port151"],
|
|
["Port147", "Port152"],
|
|
["Port148", "Port149"],
|
|
["Port148", "Port150"],
|
|
["Port148", "Port151"],
|
|
["Port148", "Port152"],
|
|
["Port148", "Port153"],
|
|
["Port149", "Port150"],
|
|
["Port149", "Port151"],
|
|
["Port149", "Port152"],
|
|
["Port149", "Port153"],
|
|
["Port149", "Port154"],
|
|
["Port150", "Port151"],
|
|
["Port150", "Port152"],
|
|
["Port150", "Port153"],
|
|
["Port150", "Port154"],
|
|
["Port150", "Port155"],
|
|
["Port151", "Port152"],
|
|
["Port151", "Port153"],
|
|
["Port151", "Port154"],
|
|
["Port151", "Port155"],
|
|
["Port151", "Port156"],
|
|
["Port152", "Port153"],
|
|
["Port152", "Port154"],
|
|
["Port152", "Port155"],
|
|
["Port152", "Port156"],
|
|
["Port152", "Port157"],
|
|
["Port153", "Port154"],
|
|
["Port153", "Port155"],
|
|
["Port153", "Port156"],
|
|
["Port153", "Port157"],
|
|
["Port153", "Port158"],
|
|
["Port154", "Port155"],
|
|
["Port154", "Port156"],
|
|
["Port154", "Port157"],
|
|
["Port154", "Port158"],
|
|
["Port154", "Port159"],
|
|
["Port155", "Port156"],
|
|
["Port155", "Port157"],
|
|
["Port155", "Port158"],
|
|
["Port155", "Port159"],
|
|
["Port155", "Port160"],
|
|
["Port156", "Port157"],
|
|
["Port156", "Port158"],
|
|
["Port156", "Port159"],
|
|
["Port156", "Port160"],
|
|
["Port156", "Port161"],
|
|
["Port157", "Port158"],
|
|
["Port157", "Port159"],
|
|
["Port157", "Port160"],
|
|
["Port157", "Port161"],
|
|
["Port157", "Port162"],
|
|
["Port158", "Port159"],
|
|
["Port158", "Port160"],
|
|
["Port158", "Port161"],
|
|
["Port158", "Port162"],
|
|
["Port158", "Port163"],
|
|
["Port159", "Port160"],
|
|
["Port159", "Port161"],
|
|
["Port159", "Port162"],
|
|
["Port159", "Port163"],
|
|
["Port159", "Port164"],
|
|
["Port160", "Port161"],
|
|
["Port160", "Port162"],
|
|
["Port160", "Port163"],
|
|
["Port160", "Port164"],
|
|
["Port160", "Port165"],
|
|
["Port161", "Port162"],
|
|
["Port161", "Port163"],
|
|
["Port161", "Port164"],
|
|
["Port161", "Port165"],
|
|
["Port161", "Port166"],
|
|
["Port162", "Port163"],
|
|
["Port162", "Port164"],
|
|
["Port162", "Port165"],
|
|
["Port162", "Port166"],
|
|
["Port162", "Port167"],
|
|
["Port163", "Port164"],
|
|
["Port163", "Port165"],
|
|
["Port163", "Port166"],
|
|
["Port163", "Port167"],
|
|
["Port163", "Port168"],
|
|
["Port164", "Port165"],
|
|
["Port164", "Port166"],
|
|
["Port164", "Port167"],
|
|
["Port164", "Port168"],
|
|
["Port164", "Port169"],
|
|
["Port165", "Port166"],
|
|
["Port165", "Port167"],
|
|
["Port165", "Port168"],
|
|
["Port165", "Port169"],
|
|
["Port165", "Port170"],
|
|
["Port166", "Port167"],
|
|
["Port166", "Port168"],
|
|
["Port166", "Port169"],
|
|
["Port166", "Port170"],
|
|
["Port166", "Port171"],
|
|
["Port167", "Port168"],
|
|
["Port167", "Port169"],
|
|
["Port167", "Port170"],
|
|
["Port167", "Port171"],
|
|
["Port167", "Port172"],
|
|
["Port168", "Port169"],
|
|
["Port168", "Port170"],
|
|
["Port168", "Port171"],
|
|
["Port168", "Port172"],
|
|
["Port168", "Port173"],
|
|
["Port169", "Port170"],
|
|
["Port169", "Port171"],
|
|
["Port169", "Port172"],
|
|
["Port169", "Port173"],
|
|
["Port169", "Port174"],
|
|
["Port170", "Port171"],
|
|
["Port170", "Port172"],
|
|
["Port170", "Port173"],
|
|
["Port170", "Port174"],
|
|
["Port170", "Port175"],
|
|
["Port171", "Port172"],
|
|
["Port171", "Port173"],
|
|
["Port171", "Port174"],
|
|
["Port171", "Port175"],
|
|
["Port171", "Port176"],
|
|
["Port172", "Port173"],
|
|
["Port172", "Port174"],
|
|
["Port172", "Port175"],
|
|
["Port172", "Port176"],
|
|
["Port172", "Port177"],
|
|
["Port173", "Port174"],
|
|
["Port173", "Port175"],
|
|
["Port173", "Port176"],
|
|
["Port173", "Port177"],
|
|
["Port173", "Port178"],
|
|
["Port174", "Port175"],
|
|
["Port174", "Port176"],
|
|
["Port174", "Port177"],
|
|
["Port174", "Port178"],
|
|
["Port174", "Port179"],
|
|
["Port175", "Port176"],
|
|
["Port175", "Port177"],
|
|
["Port175", "Port178"],
|
|
["Port175", "Port179"],
|
|
["Port175", "Port180"],
|
|
["Port176", "Port177"],
|
|
["Port176", "Port178"],
|
|
["Port176", "Port179"],
|
|
["Port176", "Port180"],
|
|
["Port176", "Port181"],
|
|
["Port177", "Port178"],
|
|
["Port177", "Port179"],
|
|
["Port177", "Port180"],
|
|
["Port177", "Port181"],
|
|
["Port177", "Port182"],
|
|
["Port178", "Port179"],
|
|
["Port178", "Port180"],
|
|
["Port178", "Port181"],
|
|
["Port178", "Port182"],
|
|
["Port178", "Port183"],
|
|
["Port179", "Port180"],
|
|
["Port179", "Port181"],
|
|
["Port179", "Port182"],
|
|
["Port179", "Port183"],
|
|
["Port179", "Port184"],
|
|
["Port180", "Port181"],
|
|
["Port180", "Port182"],
|
|
["Port180", "Port183"],
|
|
["Port180", "Port184"],
|
|
["Port180", "Port185"],
|
|
["Port181", "Port182"],
|
|
["Port181", "Port183"],
|
|
["Port181", "Port184"],
|
|
["Port181", "Port185"],
|
|
["Port181", "Port186"],
|
|
["Port182", "Port183"],
|
|
["Port182", "Port184"],
|
|
["Port182", "Port185"],
|
|
["Port182", "Port186"],
|
|
["Port182", "Port187"],
|
|
["Port183", "Port184"],
|
|
["Port183", "Port185"],
|
|
["Port183", "Port186"],
|
|
["Port183", "Port187"],
|
|
["Port183", "Port188"],
|
|
["Port184", "Port185"],
|
|
["Port184", "Port186"],
|
|
["Port184", "Port187"],
|
|
["Port184", "Port188"],
|
|
["Port184", "Port189"],
|
|
["Port185", "Port186"],
|
|
["Port185", "Port187"],
|
|
["Port185", "Port188"],
|
|
["Port185", "Port189"],
|
|
["Port185", "Port190"],
|
|
["Port186", "Port187"],
|
|
["Port186", "Port188"],
|
|
["Port186", "Port189"],
|
|
["Port186", "Port190"],
|
|
["Port186", "Port191"],
|
|
["Port187", "Port188"],
|
|
["Port187", "Port189"],
|
|
["Port187", "Port190"],
|
|
["Port187", "Port191"],
|
|
["Port187", "Port192"],
|
|
["Port188", "Port189"],
|
|
["Port188", "Port190"],
|
|
["Port188", "Port191"],
|
|
["Port188", "Port192"],
|
|
["Port188", "Port193"],
|
|
["Port189", "Port190"],
|
|
["Port189", "Port191"],
|
|
["Port189", "Port192"],
|
|
["Port189", "Port193"],
|
|
["Port189", "Port194"],
|
|
["Port190", "Port191"],
|
|
["Port190", "Port192"],
|
|
["Port190", "Port193"],
|
|
["Port190", "Port194"],
|
|
["Port190", "Port195"],
|
|
["Port191", "Port192"],
|
|
["Port191", "Port193"],
|
|
["Port191", "Port194"],
|
|
["Port191", "Port195"],
|
|
["Port191", "Port196"],
|
|
["Port192", "Port193"],
|
|
["Port192", "Port194"],
|
|
["Port192", "Port195"],
|
|
["Port192", "Port196"],
|
|
["Port192", "Port197"],
|
|
["Port193", "Port194"],
|
|
["Port193", "Port195"],
|
|
["Port193", "Port196"],
|
|
["Port193", "Port197"],
|
|
["Port193", "Port198"],
|
|
["Port194", "Port195"],
|
|
["Port194", "Port196"],
|
|
["Port194", "Port197"],
|
|
["Port194", "Port198"],
|
|
["Port194", "Port199"],
|
|
["Port195", "Port196"],
|
|
["Port195", "Port197"],
|
|
["Port195", "Port198"],
|
|
["Port195", "Port199"],
|
|
["Port195", "Port200"],
|
|
["Port196", "Port197"],
|
|
["Port196", "Port198"],
|
|
["Port196", "Port199"],
|
|
["Port196", "Port200"],
|
|
["Port197", "Port198"],
|
|
["Port197", "Port199"],
|
|
["Port197", "Port200"],
|
|
["Port198", "Port199"],
|
|
["Port198", "Port200"],
|
|
["Port199", "Port200"],
|
|
["Port001", "Port007"],
|
|
["Port001", "Port008"],
|
|
["Port001", "Port009"],
|
|
["Port002", "Port008"],
|
|
["Port002", "Port009"],
|
|
["Port002", "Port010"],
|
|
["Port003", "Port009"],
|
|
["Port003", "Port010"],
|
|
["Port003", "Port011"],
|
|
["Port004", "Port010"],
|
|
["Port004", "Port011"],
|
|
["Port004", "Port012"],
|
|
["Port005", "Port011"],
|
|
["Port005", "Port012"],
|
|
["Port005", "Port013"],
|
|
];
|