Commit c9110ec6 authored by Roman Haefeli's avatar Roman Haefeli
Browse files

Merge branch 'dev' of gitlab.zhdk.ch:TPF/telematic-performance-format into dev

parents 063d7e1c 2a024e9a
#N canvas 0 43 679 515 10;
#N canvas 0 53 704 578 10;
#X obj 20 20 adc~ 1 2;
#X obj 20 290 dac~ 1 2;
#X obj 498 23 tgl 20 0 empty empty empty 17 7 0 10 -204786 -1 -1 0
......@@ -47,6 +47,9 @@
#X obj 233 295 route connected receiving inchannels;
#X obj 395 349 print STATUS;
#X floatatom 375 331 5 0 0 0 - - -, f 5;
#X symbolatom 499 435 10 0 0 0 - - -, f 10;
#X msg 499 455 enabletoken \$1;
#X msg 499 492 disabletoken;
#X connect 0 0 33 0;
#X connect 0 1 33 1;
#X connect 2 0 33 8;
......@@ -84,3 +87,6 @@
#X connect 42 1 32 0;
#X connect 42 2 44 0;
#X connect 42 3 43 0;
#X connect 45 0 46 0;
#X connect 46 0 33 8;
#X connect 47 0 33 8;
......@@ -5,9 +5,9 @@
#X obj 249 565 s \$0.from.udp;
#X obj 214 4 loadbang;
#X obj 214 24 \$0;
#N canvas 0 97 285 340 sender 0;
#N canvas 0 151 285 340 sender 0;
#X obj 14 137 s \$0.to.udp;
#N canvas 0 50 398 477 prepend_header 0;
#N canvas 0 53 398 477 prepend_header 0;
#X obj 9 12 inlet;
#X obj 9 414 outlet;
#X obj 94 13 r \$0.on.off;
......@@ -586,7 +586,7 @@ to continuous stream;
#X connect 21 0 19 1;
#X connect 21 0 20 1;
#X restore 546 22 pd receiver;
#N canvas 635 297 317 348 connection 0;
#N canvas 635 297 590 390 connection 0;
#X msg 119 228 disconnect;
#X obj 13 303 s \$0.to.udp;
#X obj 13 8 r \$0.on.off;
......@@ -598,6 +598,8 @@ to continuous stream;
#X msg 13 169 connect \$1 \$2 \$3;
#X obj 13 132 list append;
#X obj 13 75 f;
#X obj 329 127 s \$0.token.enable;
#X obj 370 83 s \$0.token.symbol;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X connect 3 0 10 0;
......@@ -717,10 +719,10 @@ to continuous stream;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 13 0 5 0;
#X restore 11 110 pd gui.stuff;
#X restore 11 120 pd gui.stuff;
#X obj 271 3 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#N canvas 0 50 835 214 reblocked_input 0;
#N canvas 0 53 835 214 reblocked_input 0;
#X obj 17 22 inlet~;
#X obj 618 83 block~;
#X msg 618 57 set \$1 1 1;
......@@ -1282,7 +1284,7 @@ _ _ _ _ _;
#X obj 788 514 outlet~;
#X obj 838 514 outlet~;
#X obj 436 13 inlet;
#N canvas 249 365 752 229 parse.methods 0;
#N canvas 249 365 1087 269 parse.methods 0;
#X obj 14 9 inlet;
#X obj 14 92 b;
#X obj 39 92 b;
......@@ -1462,6 +1464,26 @@ _ _ _ _ _;
#X connect 9 1 1 1;
#X connect 10 0 1 0;
#X restore 166 152 pd outchannels;
#X obj 702 56 route enabletoken disabletoken;
#N canvas 825 657 524 340 enable/disabletoken 0;
#X obj 246 36 inlet;
#X obj 32 34 inlet;
#X msg 246 63 0;
#X msg 32 97 1;
#X obj 32 63 t b a;
#X obj 73 96 symbol;
#X obj 32 193 s \$0.token.enable;
#X obj 73 123 route symbol;
#X obj 73 149 s \$0.token.symbol;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 6 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 4 1 5 0;
#X connect 5 0 7 0;
#X connect 7 0 8 0;
#X restore 702 118 pd enable/disabletoken;
#X connect 0 0 5 0;
#X connect 1 0 3 0;
#X connect 2 0 4 0;
......@@ -1481,6 +1503,9 @@ _ _ _ _ _;
#X connect 15 1 12 0;
#X connect 15 2 13 0;
#X connect 15 3 7 0;
#X connect 15 4 17 0;
#X connect 17 0 18 0;
#X connect 17 1 18 1;
#X restore 436 56 pd parse.methods;
#X obj 11 11 declare -stdpath iemnet;
#X obj 922 464 outlet;
......@@ -1744,6 +1769,37 @@ _ _ _ _ _;
#X msg 214 44 \; \$1.out.channels 2 \; \$1.port.offset 0 \; \$1.bitres
16 \; \$1.blocksize 128 \; \$1.queue 4 \; \$1.server telematic.zhdk.ch
;
#N canvas 349 185 452 356 token 0;
#X obj 36 173 list fromsymbol;
#X obj 36 242 s \$0.to.udp;
#X obj 36 22 r \$0.connected;
#X obj 36 43 sel 1;
#X obj 36 85 f;
#X obj 71 86 r \$0.token.enable;
#X obj 93 148 r \$0.token.symbol;
#X obj 36 64 del 0;
#X obj 36 108 sel 1;
#X obj 36 149 symbol;
#X obj 36 194 list prepend 32;
#X obj 36 215 list prepend;
#X obj 165 184 loadbang;
#X msg 165 205 symbol _TOKEN;
#X obj 165 226 list fromsymbol;
#X connect 0 0 10 0;
#X connect 2 0 3 0;
#X connect 3 0 7 0;
#X connect 4 0 8 0;
#X connect 5 0 4 1;
#X connect 6 0 9 1;
#X connect 7 0 4 0;
#X connect 8 0 9 0;
#X connect 9 0 0 0;
#X connect 10 0 11 0;
#X connect 11 0 1 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 11 1;
#X restore 9 95 pd token;
#X connect 0 0 2 0;
#X connect 0 2 89 0;
#X connect 1 0 0 0;
......
#N canvas 739 603 450 300 10;
#N canvas 739 603 726 288 10;
#X obj 23 20 hsl 123 32 0 127 0 0 \$0.button.click empty empty -2 -8
0 10 -262144 -1 -1 0 1;
#X obj 20 20 cnv 32 128 32 empty \$0.button.fg \$1 8 16 0 20 -233017
......@@ -13,6 +13,30 @@
#X obj 297 130 del 200;
#X msg 297 151 10;
#X obj 278 250 s \$2;
#N canvas 1589 505 310 209 rgb2iem 0;
#X obj 14 2 inlet;
#X obj 14 23 unpack f f f;
#X obj 14 168 outlet;
#X obj 48 49 << 8;
#X obj 14 49 << 16;
#X obj 14 106 +;
#X obj 48 78 +;
#X text 93 79 converts rgb 8bit to iem colors;
#X obj 14 126 * -1;
#X obj 14 147 - 1;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 1 3 0;
#X connect 1 2 6 1;
#X connect 3 0 6 0;
#X connect 4 0 5 0;
#X connect 5 0 8 0;
#X connect 6 0 5 1;
#X connect 8 0 9 0;
#X connect 9 0 2 0;
#X restore 446 121 pd rgb2iem;
#X obj 446 93 route color;
#X obj 446 72 r \$3;
#X connect 2 0 3 0;
#X connect 3 0 8 0;
#X connect 3 1 4 0;
......@@ -24,4 +48,7 @@
#X connect 8 2 7 0;
#X connect 9 0 10 0;
#X connect 10 0 5 0;
#X connect 12 0 5 0;
#X connect 13 0 12 0;
#X connect 14 0 13 0;
#X coords 0 -1 1 1 128 32 2 20 20;
#N canvas 79 441 1315 507 10;
#N canvas 24 147 1022 479 10;
#X obj 529 71 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#N canvas 205 438 442 403 detect.link.peer 0;
......@@ -53,10 +53,10 @@
#X obj 21 262 s \$0.error;
#X obj 54 131 text get \$1.clients;
#X obj 54 151 unpack f s f s;
#X obj 135 173 s \$0.peer.ip;
#X obj 108 196 s \$0.peer.master;
#X obj 81 217 s \$0.peer.name;
#X obj 21 18 inlet;
#X obj 135 173 s \$0.peer.ip;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 2 0 1 1;
......@@ -65,10 +65,10 @@
#X connect 4 1 7 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 8 1 11 0;
#X connect 8 2 10 0;
#X connect 8 3 9 0;
#X connect 12 0 0 0;
#X connect 8 1 10 0;
#X connect 8 2 9 0;
#X connect 8 3 12 0;
#X connect 11 0 0 0;
#X restore 16 104 pd get.peer.data;
#N canvas 277 523 937 517 gui.code 0;
#X obj 11 164 s \$0.client.label;
......@@ -119,63 +119,149 @@
#X msg 360 263 label \$1;
#X obj 360 283 s \$0.channels.label;
#X obj 240 289 s \$0.channels.label;
#N canvas 1202 560 592 449 tx.button 0;
#X obj 47 389 s \$0.tx.switch.r;
#X msg 47 360 color \$1 \$2 \$3;
#X msg 47 308 0 0 0;
#X msg 95 310 0 0 255;
#X msg 212 313 192 192 192;
#X text 460 50 0 = reset;
#X text 460 70 1 = waiting for peer;
#X text 460 90 2 = waiting for user;
#X text 461 110 3 = connected;
#X obj 172 197 sel 1;
#X msg 172 218 1;
#X msg 201 218 0;
#X obj 147 246 spigot;
#X obj 147 171 r \$0.blink.clock;
#X obj 147 267 sel 0 1;
#X msg 311 218 0;
#X obj 257 246 spigot;
#X obj 257 171 r \$0.blink.clock;
#X obj 257 267 sel 0 1;
#X msg 282 218 1;
#X obj 282 197 sel 2;
#X obj 47 136 select 0 3 4;
#X obj 47 95 t a a a;
#X text 461 128 4 = aborted;
#X msg 155 310 0 255 0;
#N canvas 653 155 837 754 tx.button 0;
#X obj 47 429 s \$0.tx.switch.r;
#X msg 47 400 color \$1 \$2 \$3;
#X msg 47 348 0 0 0;
#X text 599 47 0 = reset;
#X obj 183 189 sel 1;
#X msg 183 210 1;
#X msg 212 210 0;
#X obj 158 278 spigot;
#X obj 158 163 r \$0.blink.clock;
#X obj 158 299 sel 0 1;
#X msg 322 210 0;
#X obj 268 278 spigot;
#X obj 268 163 r \$0.blink.clock;
#X obj 268 299 sel 0 1;
#X msg 293 210 1;
#X obj 293 189 sel 2;
#X text 600 125 4 = aborted;
#X obj 47 60 r \$0.udp.link.status;
#X obj 242 41 r \$0.display.reset;
#X text 599 67 1 = waiting for peer (stun);
#X text 599 87 2 = waiting for user (stun);
#X text 601 108 3 = connected (stun);
#X text 600 146 5 = waiting for peer (server);
#X text 601 165 6 = waiting for user (server);
#X text 601 186 7 = connected (server);
#X obj 47 88 t a a a a a;
#X obj 47 136 select 0 3 4 7;
#X msg 226 354 224 224 224;
#X msg 95 350 128 0 255;
#X msg 308 356 0 0 255;
#X msg 442 210 0;
#X obj 388 278 spigot;
#X obj 388 163 r \$0.blink.clock;
#X obj 388 299 sel 0 1;
#X msg 413 210 1;
#X msg 545 210 0;
#X obj 491 278 spigot;
#X obj 491 163 r \$0.blink.clock;
#X obj 491 299 sel 0 1;
#X msg 516 210 1;
#X obj 413 189 sel 5;
#X obj 516 189 sel 6;
#X floatatom 256 82 5 0 0 0 - - -, f 5;
#X msg 155 350 0 255 0;
#X msg 367 356 255 255 0;
#X obj 603 363 r \$0.tx.switch.s;
#X obj 631 386 r \$0.udp.link.status;
#X obj 603 386 f;
#X obj 603 409 sel 0;
#X obj 603 597 del 300;
#X msg 641 572 stop;
#X obj 603 482 f;
#X obj 688 488 + 1;
#X obj 603 504 t a a;
#X obj 603 528 sel 0 1;
#X obj 622 550 t b b b;
#X msg 707 525 0;
#X obj 603 618 t b b;
#X obj 672 620 s \$0.initiate.stun;
#X obj 603 647 s \$0.initiate.server;
#X obj 630 435 r \$0.link;
#X obj 603 435 f;
#X obj 603 457 sel 1;
#X obj 176 235 t a a;
#X obj 413 231 t a a;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 9 0 10 0;
#X connect 9 1 11 0;
#X connect 10 0 12 1;
#X connect 11 0 12 1;
#X connect 12 0 14 0;
#X connect 13 0 12 0;
#X connect 14 0 2 0;
#X connect 14 1 3 0;
#X connect 15 0 16 1;
#X connect 16 0 18 0;
#X connect 17 0 16 0;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 5 0 63 0;
#X connect 6 0 7 1;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 9 0 2 0;
#X connect 9 1 28 0;
#X connect 10 0 11 1;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 13 0 2 0;
#X connect 13 1 43 0;
#X connect 14 0 11 1;
#X connect 15 0 14 0;
#X connect 15 1 10 0;
#X connect 17 0 25 0;
#X connect 18 0 2 0;
#X connect 18 1 24 0;
#X connect 19 0 16 1;
#X connect 20 0 19 0;
#X connect 20 1 15 0;
#X connect 21 0 2 0;
#X connect 21 1 3 0;
#X connect 21 2 4 0;
#X connect 22 0 21 0;
#X connect 22 1 9 0;
#X connect 22 2 20 0;
#X connect 24 0 1 0;
#X connect 25 0 22 0;
#X connect 25 0 26 0;
#X connect 25 1 4 0;
#X connect 25 2 15 0;
#X connect 25 3 40 0;
#X connect 25 4 41 0;
#X connect 26 0 2 0;
#X connect 26 1 28 0;
#X connect 26 2 27 0;
#X connect 26 3 29 0;
#X connect 27 0 1 0;
#X connect 28 0 1 0;
#X connect 29 0 1 0;
#X connect 30 0 31 1;
#X connect 31 0 33 0;
#X connect 32 0 31 0;
#X connect 33 0 2 0;
#X connect 33 1 29 0;
#X connect 34 0 64 0;
#X connect 35 0 36 1;
#X connect 36 0 38 0;
#X connect 37 0 36 0;
#X connect 38 0 2 0;
#X connect 38 1 44 0;
#X connect 39 0 36 1;
#X connect 40 0 34 0;
#X connect 40 1 30 0;
#X connect 41 0 39 0;
#X connect 41 1 35 0;
#X connect 42 0 25 0;
#X connect 43 0 1 0;
#X connect 44 0 1 0;
#X connect 45 0 47 0;
#X connect 46 0 47 1;
#X connect 47 0 48 0;
#X connect 48 0 61 0;
#X connect 49 0 57 0;
#X connect 50 0 49 0;
#X connect 51 0 53 0;
#X connect 52 0 51 1;
#X connect 53 0 54 0;
#X connect 53 1 52 0;
#X connect 54 0 49 0;
#X connect 54 0 29 0;
#X connect 54 1 55 0;
#X connect 55 0 58 0;
#X connect 55 1 50 0;
#X connect 55 2 56 0;
#X connect 56 0 51 1;
#X connect 57 0 59 0;
#X connect 57 1 56 0;
#X connect 60 0 61 1;
#X connect 61 0 62 0;
#X connect 62 0 51 0;
#X connect 63 0 7 0;
#X connect 63 1 7 1;
#X connect 64 0 31 0;
#X connect 64 1 31 1;
#X restore 40 338 pd tx.button;
#X obj 805 138 metro 500;
#X obj 805 159 == 0;
......@@ -192,34 +278,63 @@
#X obj 16 34 route STATUS;
#X obj 16 55 route receiving;
#X obj 16 76 sel 0 1;
#X msg 113 194 0 0 255;
#X msg 16 190 192 192 192;
#X obj 16 269 s \$0.rx.switch.r;
#X msg 16 246 color \$1 \$2 \$3;
#X obj 187 143 r \$0.display.reset;
#X msg 187 192 0 0 0;
#X obj 205 165 loadbang;
#X obj 278 141 r \$0.display.reset;
#X msg 278 190 0 0 0;
#X obj 296 163 loadbang;
#X obj 31 103 r \$0.udp.link.status;
#X obj 16 128 f;
#X obj 16 155 sel 0;
#X obj 86 140 sel 0;
#X msg 16 190 224 224 224;
#X obj 147 188 list append;
#X msg 167 108 128 0 255;
#X obj 167 55 r \$0.udp.link.status;
#X obj 167 80 sel 3 7;
#X msg 239 112 0 0 255;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 12 0;
#X connect 3 1 4 0;
#X connect 4 0 7 0;
#X connect 5 0 7 0;
#X connect 7 0 6 0;
#X connect 8 0 9 0;
#X connect 9 0 7 0;
#X connect 10 0 9 0;
#X connect 11 0 12 1;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 1 5 0;
#X connect 14 0 9 0;
#X restore 44 386 pd rx.button;
#X connect 3 0 10 0;
#X connect 3 1 14 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X connect 8 0 7 0;
#X connect 9 0 10 1;
#X connect 9 0 12 0;
#X connect 10 0 11 0;
#X connect 11 1 13 0;
#X connect 12 0 7 0;
#X connect 13 0 5 0;
#X connect 14 0 5 0;
#X connect 15 0 14 1;
#X connect 16 0 17 0;
#X connect 17 0 15 0;
#X connect 17 1 18 0;
#X connect 18 0 14 1;
#X restore 40 364 pd rx.button;
#N canvas 347 761 450 300 delay.nb 0;
#X obj 45 170 s \$0.delay.nb.r;
#X msg 45 144 color -1 \$1 -1;
#X msg 45 72 -1;
#X msg 81 76 0;
#X obj 45 17 r \$0.link;
#X obj 45 38 sel 0 1;
#X obj 81 97 t a a;
#X obj 228 74 s \$0.delay;
#X obj 228 44 r \$0.delay.nb.s;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 0 5 0;
#X connect 5 0 2 0;
#X connect 5 1 3 0;
#X connect 6 0 1 0;
#X connect 6 1 0 0;
#X connect 8 0 7 0;
#X restore 43 394 pd delay.nb;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 10 0;
......@@ -272,7 +387,7 @@
#X connect 55 0 27 0;
#X connect 56 0 57 0;
#X connect 57 0 58 0;
#X restore 16 164 pd gui.code;
#X restore 16 184 pd gui.code;
#X obj 529 110 s \$0.reset;
#X obj 540 89 r \$1.reset;
#N canvas 178 181 450 300 persistent.linkID 0;
......@@ -318,172 +433,10 @@
0;
#X obj 55 20 cnv 32 311 32 empty \$0.client.label empty 8 16 0 20 -1
-262144 0;
#X obj 477 20 cnv 32 70 32 empty \$0.dropped.label empty 8 16 0 20
-1 -262144 0;
#X obj 550 20 cnv 32 70 32 empty \$0.glitch.label empty 8 16 0 20 -1
-262144 0;
#X obj 623 20 cnv 32 70 32 empty \$0.ooo.label empty 8 16 0 20 -1 -262144
0;
#N canvas 606 101 604 759 negotiate.port 0;
#X obj 10 34 r \$1.receive;
#X obj 10 78 routeOSC /tpf/setpeerport;
#X obj 10 112 routeOSC /__;
#X obj 147 21 r \$0.linkID;
#X msg 147 41 set /\$1;
#X obj 37 155 s \$0.peer.port;
#X obj 264 17 r \$1.receive;
#X obj 264 84 routeOSC /__;
#X obj 264 61 routeOSC /tpf/requestpeerport;
#X obj 9 690 s \$1.send;
#X obj 64 509 r \$0.peer;
#X obj 49 531 f;
#X obj 94 529 r \$0.linkID;
#X obj 49 552 pack f f;
#X obj 238 568 random 28232;
#X obj 238 588 + 32768;
#X obj 238 608 s \$0.bind.port;
#X obj 49 583 list append;
#X obj 112 562 r \$0.bind.port;
#X obj 264 108 b;
#X msg 49 653 /\$1/tpf/setpeerport/\$2 \$3;
#X obj 9 608 list append;
#X msg 9 630 /\$1/tpf/requestpeerport/\$2;
#X obj 10 58 routeOSC /*;
#X obj 264 41 routeOSC /*;
#N canvas 750 196 301 279 random.seed 0;
#X obj 35 24 loadbang;
#X obj 34 96 realtime;
#X obj 35 66 t b b b;
#X obj 121 128 until;
#X obj 121 148 234.235;
#X obj 121 168 pow 9.2348;
#X obj 34 116 * 1239.29;
#X obj 34 136 int;
#X obj 34 156 mod 9877;
#X obj 34 197 outlet;
#X msg 121 105 143726;
#X msg 34 177 seed \$1;
#X connect 0 0 2 0;
#X connect 1 0 6 0;
#X connect 2 0 1 1;
#X connect 2 1 10 0;
#X connect 2 2 1 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 6 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 11 0;
#X connect 10 0 3 0;
#X connect 11 0 9 0;
#X restore 238 536 pd random.seed;
#X obj 9 332 r \$0.tx.switch.s;
#X obj 37 355 r \$0.udp.link.status;
#X obj 36 403 r \$0.link;
#X obj 9 355 f;
#X obj 9 403 f;
#X obj 9 425 sel 1;
#X msg 111 425 1;
#X obj 111 444 s \$0.udp.link.status;
#X obj 289 141 r \$0.udp.link.status;
#X obj 291 189 r \$0.link;
#X obj 264 141 f;
#X obj 264 164 sel 0 4;
#X obj 264 189 f;
#X obj 264 211 sel 1;
#X obj 264 254 s \$0.udp.link.status;
#X msg 264 233 2;
#X obj 295 323 r \$0.tx.switch.s;
#X obj 320 346 r \$0.udp.link.status;
#X obj 322 394 r \$0.link;
#X obj 295 346 f;
#X obj 295 394 f;
#X obj 295 416 sel 1;
#X obj 295 369 sel 2;
#X obj 10 132 t b a;
#X obj 35 183 r \$0.udp.link.status;
#X obj 37 231 r \$0.link;
#X obj 10 183 f;
#X obj 10 231 f;
#X obj 10 253 sel 1;
#X obj 10 206 sel 1;
#X obj 10 296 s \$0.udp.link.status;
#X msg 10 274 3;
#X obj 9 378 sel 0;
#X obj 295 437 t b b;
#X msg 295 484 3;
#X obj 295 504 s \$0.udp.link.status;
#X obj 295 463 del 0;
#X obj 9 447 t b b b;
#X obj 49 486 t b b;
#X obj 111 403 del 0;
#X connect 0 0 23 0;
#X connect 1 0 2 0;
#X connect 2 0 49 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 4 0 7 0;
#X connect 6 0 24 0;
#X connect 7 0 19 0;
#X connect 8 0 7 0;
#X connect 10 0 11 1;
#X connect 11 0 13 0;
#X connect 12 0 13 1;
#X connect 13 0 17 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 17 0 21 1;
#X connect 17 0 20 0;
#X connect 18 0 17 1;
#X connect 19 0 36 0;
#X connect 20 0 9 0;
#X connect 21 0 22 0;
#X connect 22 0 9 0;
#X connect 23 0 1 0;
#X connect 24 0 8 0;
#X connect 25 0 14 0;
#X connect 26 0 29 0;
#X connect 27 0 29 1;
#X connect 28 0 30 1;
#X connect 29 0 58 0;
#X connect 30 0 31 0;
#X connect 31 0 63 0;
#X connect 32 0 33 0;
#X connect 34 0 36 1;
#X connect 35 0 38 1;
#X connect 36 0 37 0;
#X connect 37 0 38 0;