diff --git a/0_netout.net b/0_netout.net new file mode 100755 index 0000000..47f93f8 --- /dev/null +++ b/0_netout.net @@ -0,0 +1,93 @@ +*Vertices 5 +1 +2 +3 +4 +5 +*Arcs +1 4  +1 3  +1 5  +1 5  +1 2  +1 5  +1 4  +1 4  +1 5  +1 2  +1 2  +1 3  +1 4  +1 5  +1 3  +1 4  +1 3  +1 5  +1 2  +1 4  +1 2  +1 2  +1 3  +1 2  +1 3  +1 4  +1 3  +1 4  +1 3  +1 5  +1 3  +1 5  +1 2  +1 5  +2 4  +2 3  +2 5  +2 5  +2 5  +2 4  +2 4  +2 5  +2 3  +2 4  +2 5  +2 3  +2 4  +2 3  +2 5  +2 4  +2 3  +2 3  +2 4  +2 3  +2 4  +2 3  +2 5  +2 3  +2 5  +2 5  +3 4  +3 5  +3 5  +3 5  +3 4  +3 4  +3 5  +3 4  +3 5  +3 4  +3 5  +3 4  +3 4  +3 4  +3 5  +3 5  +3 5  +4 5  +4 5  +4 5  +4 5  +4 5  +4 5  +4 5  +4 5  +4 5  diff --git a/0_netroutingtable b/0_netroutingtable new file mode 100755 index 0000000..303d5aa --- /dev/null +++ b/0_netroutingtable @@ -0,0 +1,86 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 2 id 3 - type 2 , +Node :0: Row 1 : Tag 11 id 2 - type 2 , +Node :0: Row 2 : Tag 15 id 4 - type 2 , +Node :0: Row 3 : Tag 19 id 4 - type 2 , +Node :0: Row 4 : Tag 21 id 1 - type 2 , id 4 - type 2 , +Node :0: Row 5 : Tag 22 id 3 - type 2 , +Node :0: Row 6 : Tag 23 id 3 - type 2 , +Node :0: Row 7 : Tag 24 id 4 - type 2 , +Node :0: Row 8 : Tag 26 id 1 - type 2 , +Node :0: Row 9 : Tag 27 id 1 - type 2 , +Node :0: Row 10 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 4 - type 2 , +Node :0: Row 11 : Tag 30 id 2 - type 2 , +Node :0: Row 12 : Tag 35 id 3 - type 2 , +Node :0: Row 13 : Tag 36 id 2 - type 2 , +Node :0: Row 14 : Tag 37 id 4 - type 2 , +Node :0: Row 15 : Tag 40 id 1 - type 2 , +Node :0: Row 16 : Tag 58 id 3 - type 2 , +Node :0: Row 17 : Tag 59 id 1 - type 2 , +Node :0: Row 18 : Tag 62 id 1 - type 2 , id 2 - type 2 , +Node :0: Row 19 : Tag 63 id 1 - type 2 , +Node :0: Row 20 : Tag 67 id 2 - type 2 , id 3 - type 2 , +Node :0: Row 21 : Tag 68 id 2 - type 2 , +Node :0: Row 22 : Tag 69 id 3 - type 2 , +Node :0: Row 23 : Tag 72 id 2 - type 2 , +Node :0: Row 24 : Tag 73 id 4 - type 2 , +Node :0: Row 25 : Tag 82 id 2 - type 2 , +Node :0: Row 26 : Tag 84 id 4 - type 2 , +Node :0: Row 27 : Tag 90 id 1 - type 2 , +Node :0: Row 28 : Tag 98 id 4 - type 2 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 2 id 3 - type 2 , +Node :1: Row 1 : Tag 11 id 2 - type 2 , +Node :1: Row 2 : Tag 15 id 4 - type 2 , +Node :1: Row 3 : Tag 19 id 4 - type 2 , +Node :1: Row 4 : Tag 21 id 4 - type 2 , +Node :1: Row 5 : Tag 22 id 3 - type 2 , +Node :1: Row 6 : Tag 23 id 3 - type 2 , +Node :1: Row 7 : Tag 24 id 4 - type 2 , +Node :1: Row 8 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 4 - type 2 , +Node :1: Row 9 : Tag 30 id 2 - type 2 , +Node :1: Row 10 : Tag 35 id 3 - type 2 , +Node :1: Row 11 : Tag 36 id 2 - type 2 , +Node :1: Row 12 : Tag 37 id 4 - type 2 , +Node :1: Row 13 : Tag 58 id 3 - type 2 , +Node :1: Row 14 : Tag 62 id 2 - type 2 , +Node :1: Row 15 : Tag 67 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 16 : Tag 68 id 2 - type 2 , +Node :1: Row 17 : Tag 69 id 3 - type 2 , +Node :1: Row 18 : Tag 72 id 2 - type 2 , +Node :1: Row 19 : Tag 73 id 4 - type 2 , +Node :1: Row 20 : Tag 82 id 2 - type 2 , +Node :1: Row 21 : Tag 84 id 4 - type 2 , +Node :1: Row 22 : Tag 98 id 4 - type 2 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 2 id 3 - type 2 , +Node :2: Row 1 : Tag 15 id 4 - type 2 , +Node :2: Row 2 : Tag 19 id 4 - type 2 , +Node :2: Row 3 : Tag 21 id 4 - type 2 , +Node :2: Row 4 : Tag 22 id 3 - type 2 , +Node :2: Row 5 : Tag 23 id 3 - type 2 , +Node :2: Row 6 : Tag 24 id 4 - type 2 , +Node :2: Row 7 : Tag 29 id 3 - type 2 , id 4 - type 2 , +Node :2: Row 8 : Tag 35 id 3 - type 2 , +Node :2: Row 9 : Tag 37 id 4 - type 2 , +Node :2: Row 10 : Tag 58 id 3 - type 2 , +Node :2: Row 11 : Tag 67 id 3 - type 2 , +Node :2: Row 12 : Tag 69 id 3 - type 2 , +Node :2: Row 13 : Tag 73 id 4 - type 2 , +Node :2: Row 14 : Tag 84 id 4 - type 2 , +Node :2: Row 15 : Tag 98 id 4 - type 2 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 15 id 4 - type 2 , +Node :3: Row 1 : Tag 19 id 4 - type 2 , +Node :3: Row 2 : Tag 21 id 4 - type 2 , +Node :3: Row 3 : Tag 24 id 4 - type 2 , +Node :3: Row 4 : Tag 29 id 4 - type 2 , +Node :3: Row 5 : Tag 37 id 4 - type 2 , +Node :3: Row 6 : Tag 73 id 4 - type 2 , +Node :3: Row 7 : Tag 84 id 4 - type 2 , +Node :3: Row 8 : Tag 98 id 4 - type 2 , +Routing table of router node: 4 is empty diff --git a/0_netstrucrep b/0_netstrucrep new file mode 100755 index 0000000..1c7f554 --- /dev/null +++ b/0_netstrucrep @@ -0,0 +1,32787 @@ +num_vertices=5 +Network Diameter is = 32767 +***Distance matrix** +0 1 1 1 1 +32767 0 1 1 1 +32767 32767 0 1 1 +32767 32767 32767 0 1 +32767 32767 32767 32767 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 10 +2 : 0 +3 : 0 +4 : 0 +5 : 0 +6 : 0 +7 : 0 +8 : 0 +9 : 0 +10 : 49 +11 : 0 +12 : 100 +13 : 0 +14 : 5408448 +15 : 0 +16 : 0 +17 : 0 +18 : 0 +19 : 0 +20 : 0 +21 : 0 +22 : 49 +23 : 0 +24 : 4315664 +25 : 0 +26 : 4273776 +27 : 0 +28 : 0 +29 : 0 +30 : 5403104 +31 : 0 +32 : 0 +33 : 0 +34 : 33 +35 : 0 +36 : 5408400 +37 : 0 +38 : 5472912 +39 : 0 +40 : 5692144 +41 : 0 +42 : 49 +43 : 0 +44 : 1 +45 : 0 +46 : 5408576 +47 : 0 +48 : 0 +49 : 0 +50 : 1 +51 : 0 +52 : 0 +53 : 0 +54 : 49 +55 : 0 +56 : 4315664 +57 : 0 +58 : 4273776 +59 : 0 +60 : 0 +61 : 0 +62 : 5403104 +63 : 0 +64 : 0 +65 : 0 +66 : 33 +67 : 0 +68 : 5408528 +69 : 0 +70 : 0 +71 : 0 +72 : 0 +73 : 0 +74 : 113 +75 : 0 +76 : 5623056 +77 : 0 +78 : 5476288 +79 : 0 +80 : 0 +81 : 0 +82 : 0 +83 : 0 +84 : 100 +85 : 400 +86 : 20 +87 : 0 +88 : 5480128 +89 : 0 +90 : 5482528 +91 : 0 +92 : 5482528 +93 : 0 +94 : 5637680 +95 : 0 +96 : 5640080 +97 : 0 +98 : 5640080 +99 : 0 +100 : 0 +101 : 0 +102 : 49 +103 : 0 +104 : 0 +105 : 49 +106 : 5480080 +107 : 0 +108 : 0 +109 : 0 +110 : 0 +111 : 0 +112 : 69 +113 : 32767 +114 : 49 +115 : 0 +116 : 1 +117 : 49 +118 : 5408912 +119 : 0 +120 : 5479696 +121 : 0 +122 : 5408864 +123 : 0 +124 : 90 +125 : 32767 +126 : 49 +127 : 0 +128 : 1 +129 : 49 +130 : 5408816 +131 : 0 +132 : 0 +133 : 0 +134 : 0 +135 : 0 +136 : 91 +137 : 32767 +138 : 49 +139 : 0 +140 : 0 +141 : 49 +142 : 5479648 +143 : 0 +144 : 5408816 +145 : 0 +146 : 5409056 +147 : 0 +148 : 92 +149 : 32767 +150 : 49 +151 : 0 +152 : 0 +153 : 49 +154 : 5476784 +155 : 0 +156 : 5479936 +157 : 0 +158 : 5476736 +159 : 0 +160 : 1 +161 : 32767 +162 : 49 +163 : 0 +164 : 1 +165 : 49 +166 : 5409056 +167 : 0 +168 : 0 +169 : 0 +170 : 0 +171 : 0 +172 : 93 +173 : 32767 +174 : 49 +175 : 0 +176 : 1 +177 : 49 +178 : 5408912 +179 : 0 +180 : 5409008 +181 : 0 +182 : 5409152 +183 : 0 +184 : 94 +185 : 32767 +186 : 49 +187 : 0 +188 : 1 +189 : 49 +190 : 5409152 +191 : 0 +192 : 0 +193 : 0 +194 : 0 +195 : 0 +196 : 95 +197 : 32767 +198 : 49 +199 : 0 +200 : 0 +201 : 49 +202 : 5409056 +203 : 0 +204 : 5409104 +205 : 0 +206 : 5409248 +207 : 0 +208 : 5439584 +209 : 0 +210 : 49 +211 : 0 +212 : 0 +213 : 49 +214 : 5409248 +215 : 0 +216 : 0 +217 : 0 +218 : 0 +219 : 0 +220 : 4294901857 +221 : 4294967295 +222 : 49 +223 : 0 +224 : 1 +225 : 49 +226 : 5409152 +227 : 0 +228 : 5409200 +229 : 0 +230 : 5409296 +231 : 0 +232 : 4294901858 +233 : 4294967295 +234 : 49 +235 : 0 +236 : 0 +237 : 49 +238 : 5409248 +239 : 0 +240 : 0 +241 : 0 +242 : 0 +243 : 0 +244 : 4294901859 +245 : 4294967295 +246 : 129 +247 : 0 +248 : 4310928 +249 : 0 +250 : 0 +251 : 49 +252 : 5473328 +253 : 0 +254 : 0 +255 : 4294967295 +256 : 0 +257 : 0 +258 : 3 +259 : 0 +260 : 5472624 +261 : 0 +262 : 0 +263 : 49 +264 : 5409472 +265 : 0 +266 : 5409472 +267 : 0 +268 : 5409472 +269 : 0 +270 : 1 +271 : 0 +272 : 0 +273 : 5 +274 : 1 +275 : 0 +276 : 5413040 +277 : 0 +278 : 49 +279 : 0 +280 : 1 +281 : 49 +282 : 5409400 +283 : 0 +284 : 0 +285 : 0 +286 : 0 +287 : 0 +288 : 5373952 +289 : 0 +290 : 129 +291 : 0 +292 : 4310928 +293 : 0 +294 : 0 +295 : 49 +296 : 5473328 +297 : 0 +298 : 0 +299 : 0 +300 : 0 +301 : 0 +302 : 3 +303 : 0 +304 : 5415120 +305 : 0 +306 : 0 +307 : 0 +308 : 5409648 +309 : 0 +310 : 5409648 +311 : 0 +312 : 5409648 +313 : 0 +314 : 1 +315 : 0 +316 : 0 +317 : 5 +318 : 1 +319 : 0 +320 : 5415968 +321 : 0 +322 : 49 +323 : 0 +324 : 1 +325 : 49 +326 : 5409576 +327 : 0 +328 : 0 +329 : 0 +330 : 0 +331 : 0 +332 : 5373953 +333 : 0 +334 : 129 +335 : 0 +336 : 4310928 +337 : 0 +338 : 0 +339 : 49 +340 : 5473328 +341 : 0 +342 : 0 +343 : 0 +344 : 0 +345 : 0 +346 : 3 +347 : 0 +348 : 5418032 +349 : 0 +350 : 0 +351 : 0 +352 : 5409824 +353 : 0 +354 : 5409824 +355 : 0 +356 : 5409824 +357 : 0 +358 : 1 +359 : 0 +360 : 0 +361 : 5 +362 : 1 +363 : 0 +364 : 5419280 +365 : 0 +366 : 49 +367 : 0 +368 : 1 +369 : 49 +370 : 5409752 +371 : 0 +372 : 0 +373 : 0 +374 : 0 +375 : 0 +376 : 5373961 +377 : 0 +378 : 129 +379 : 0 +380 : 4310928 +381 : 0 +382 : 0 +383 : 49 +384 : 5473328 +385 : 0 +386 : 0 +387 : 0 +388 : 0 +389 : 0 +390 : 3 +391 : 0 +392 : 5420960 +393 : 0 +394 : 0 +395 : 0 +396 : 5410000 +397 : 0 +398 : 5410000 +399 : 0 +400 : 5410000 +401 : 0 +402 : 1 +403 : 0 +404 : 0 +405 : 5 +406 : 1 +407 : 0 +408 : 5422192 +409 : 0 +410 : 49 +411 : 0 +412 : 1 +413 : 49 +414 : 5409928 +415 : 0 +416 : 0 +417 : 0 +418 : 0 +419 : 0 +420 : 5373962 +421 : 0 +422 : 129 +423 : 0 +424 : 4310928 +425 : 0 +426 : 0 +427 : 49 +428 : 5473328 +429 : 0 +430 : 0 +431 : 0 +432 : 0 +433 : 0 +434 : 3 +435 : 0 +436 : 5548256 +437 : 0 +438 : 0 +439 : 0 +440 : 5410176 +441 : 0 +442 : 5410176 +443 : 0 +444 : 5410176 +445 : 0 +446 : 1 +447 : 0 +448 : 0 +449 : 5 +450 : 1 +451 : 0 +452 : 5549104 +453 : 0 +454 : 49 +455 : 0 +456 : 1 +457 : 49 +458 : 5410104 +459 : 0 +460 : 0 +461 : 0 +462 : 0 +463 : 0 +464 : 5505035 +465 : 0 +466 : 129 +467 : 0 +468 : 4310928 +469 : 0 +470 : 0 +471 : 49 +472 : 5473328 +473 : 0 +474 : 0 +475 : 0 +476 : 0 +477 : 0 +478 : 3 +479 : 0 +480 : 5551168 +481 : 0 +482 : 0 +483 : 0 +484 : 5410352 +485 : 0 +486 : 5410352 +487 : 0 +488 : 5410352 +489 : 0 +490 : 1 +491 : 0 +492 : 0 +493 : 5 +494 : 1 +495 : 0 +496 : 5552416 +497 : 0 +498 : 49 +499 : 0 +500 : 1 +501 : 49 +502 : 5410280 +503 : 0 +504 : 0 +505 : 0 +506 : 0 +507 : 0 +508 : 5505036 +509 : 0 +510 : 129 +511 : 0 +512 : 4310928 +513 : 0 +514 : 0 +515 : 49 +516 : 5473328 +517 : 0 +518 : 0 +519 : 0 +520 : 0 +521 : 0 +522 : 3 +523 : 0 +524 : 5554096 +525 : 0 +526 : 0 +527 : 0 +528 : 5410528 +529 : 0 +530 : 5410528 +531 : 0 +532 : 5410528 +533 : 0 +534 : 1 +535 : 0 +536 : 0 +537 : 5 +538 : 1 +539 : 0 +540 : 5555328 +541 : 0 +542 : 49 +543 : 0 +544 : 1 +545 : 49 +546 : 5410456 +547 : 0 +548 : 0 +549 : 0 +550 : 0 +551 : 0 +552 : 5505037 +553 : 0 +554 : 129 +555 : 0 +556 : 4310928 +557 : 0 +558 : 0 +559 : 49 +560 : 5473328 +561 : 0 +562 : 0 +563 : 0 +564 : 0 +565 : 0 +566 : 3 +567 : 0 +568 : 5557408 +569 : 0 +570 : 0 +571 : 0 +572 : 5410704 +573 : 0 +574 : 5410704 +575 : 0 +576 : 5410704 +577 : 0 +578 : 1 +579 : 0 +580 : 0 +581 : 5 +582 : 1 +583 : 0 +584 : 5558256 +585 : 0 +586 : 49 +587 : 0 +588 : 1 +589 : 49 +590 : 5410632 +591 : 0 +592 : 0 +593 : 0 +594 : 0 +595 : 0 +596 : 5505038 +597 : 0 +598 : 129 +599 : 0 +600 : 4310928 +601 : 0 +602 : 0 +603 : 49 +604 : 5473328 +605 : 0 +606 : 0 +607 : 0 +608 : 0 +609 : 0 +610 : 3 +611 : 0 +612 : 5560320 +613 : 0 +614 : 0 +615 : 0 +616 : 5410880 +617 : 0 +618 : 5410880 +619 : 0 +620 : 5410880 +621 : 0 +622 : 1 +623 : 0 +624 : 0 +625 : 5 +626 : 1 +627 : 0 +628 : 5561568 +629 : 0 +630 : 49 +631 : 0 +632 : 1 +633 : 49 +634 : 5410808 +635 : 0 +636 : 0 +637 : 0 +638 : 0 +639 : 0 +640 : 5505039 +641 : 0 +642 : 129 +643 : 0 +644 : 4310928 +645 : 0 +646 : 0 +647 : 49 +648 : 5473328 +649 : 0 +650 : 0 +651 : 0 +652 : 0 +653 : 0 +654 : 3 +655 : 0 +656 : 5563248 +657 : 0 +658 : 0 +659 : 0 +660 : 5411056 +661 : 0 +662 : 5411056 +663 : 0 +664 : 5411056 +665 : 0 +666 : 1 +667 : 0 +668 : 0 +669 : 5 +670 : 1 +671 : 0 +672 : 5564480 +673 : 0 +674 : 49 +675 : 0 +676 : 1 +677 : 49 +678 : 5410984 +679 : 0 +680 : 0 +681 : 0 +682 : 0 +683 : 0 +684 : 5505040 +685 : 0 +686 : 33 +687 : 0 +688 : 5411312 +689 : 0 +690 : 5476608 +691 : 0 +692 : 5410928 +693 : 0 +694 : 129 +695 : 0 +696 : 4310928 +697 : 0 +698 : 0 +699 : 49 +700 : 5473328 +701 : 0 +702 : 0 +703 : 0 +704 : 0 +705 : 0 +706 : 3 +707 : 0 +708 : 5566976 +709 : 0 +710 : 0 +711 : 0 +712 : 5411264 +713 : 0 +714 : 5411264 +715 : 0 +716 : 5411264 +717 : 0 +718 : 1 +719 : 0 +720 : 0 +721 : 5 +722 : 1 +723 : 0 +724 : 5568224 +725 : 0 +726 : 49 +727 : 0 +728 : 1 +729 : 49 +730 : 5411192 +731 : 0 +732 : 0 +733 : 0 +734 : 0 +735 : 0 +736 : 5505041 +737 : 0 +738 : 33 +739 : 0 +740 : 5411520 +741 : 0 +742 : 5411104 +743 : 0 +744 : 5411136 +745 : 0 +746 : 129 +747 : 0 +748 : 4310928 +749 : 0 +750 : 0 +751 : 49 +752 : 5473328 +753 : 0 +754 : 0 +755 : 0 +756 : 0 +757 : 0 +758 : 3 +759 : 0 +760 : 5473456 +761 : 0 +762 : 0 +763 : 0 +764 : 5411472 +765 : 0 +766 : 5411472 +767 : 0 +768 : 5411472 +769 : 0 +770 : 1 +771 : 0 +772 : 0 +773 : 5 +774 : 1 +775 : 0 +776 : 5474304 +777 : 0 +778 : 49 +779 : 0 +780 : 1 +781 : 49 +782 : 5411400 +783 : 0 +784 : 0 +785 : 0 +786 : 0 +787 : 0 +788 : 5439506 +789 : 0 +790 : 33 +791 : 0 +792 : 5411728 +793 : 0 +794 : 5411312 +795 : 0 +796 : 5411344 +797 : 0 +798 : 129 +799 : 0 +800 : 4310928 +801 : 0 +802 : 0 +803 : 49 +804 : 5473328 +805 : 0 +806 : 0 +807 : 0 +808 : 0 +809 : 0 +810 : 3 +811 : 0 +812 : 5476800 +813 : 0 +814 : 0 +815 : 0 +816 : 5411680 +817 : 0 +818 : 5411680 +819 : 0 +820 : 5411680 +821 : 0 +822 : 1 +823 : 0 +824 : 0 +825 : 5 +826 : 1 +827 : 0 +828 : 5478032 +829 : 0 +830 : 49 +831 : 0 +832 : 1 +833 : 49 +834 : 5411608 +835 : 0 +836 : 0 +837 : 0 +838 : 0 +839 : 0 +840 : 5439507 +841 : 0 +842 : 33 +843 : 0 +844 : 5411936 +845 : 0 +846 : 5411520 +847 : 0 +848 : 5411552 +849 : 0 +850 : 129 +851 : 0 +852 : 4310928 +853 : 0 +854 : 0 +855 : 49 +856 : 5473328 +857 : 0 +858 : 0 +859 : 0 +860 : 0 +861 : 0 +862 : 3 +863 : 0 +864 : 5614656 +865 : 0 +866 : 0 +867 : 0 +868 : 5411888 +869 : 0 +870 : 5411888 +871 : 0 +872 : 5411888 +873 : 0 +874 : 1 +875 : 0 +876 : 0 +877 : 5 +878 : 1 +879 : 32767 +880 : 32767 +881 : 32767 +882 : 49 +883 : 0 +884 : 1 +885 : 49 +886 : 5411816 +887 : 0 +888 : 0 +889 : 0 +890 : 0 +891 : 0 +892 : 20 +893 : 32767 +894 : 33 +895 : 0 +896 : 5412144 +897 : 0 +898 : 5411728 +899 : 0 +900 : 5411760 +901 : 0 +902 : 129 +903 : 0 +904 : 4310928 +905 : 0 +906 : 0 +907 : 49 +908 : 5473328 +909 : 0 +910 : 0 +911 : 32767 +912 : 0 +913 : 0 +914 : 3 +915 : 0 +916 : 32767 +917 : 32767 +918 : 0 +919 : 32767 +920 : 5412096 +921 : 0 +922 : 5412096 +923 : 0 +924 : 5412096 +925 : 0 +926 : 1 +927 : 0 +928 : 0 +929 : 5 +930 : 1 +931 : 32767 +932 : 32767 +933 : 32767 +934 : 49 +935 : 0 +936 : 1 +937 : 49 +938 : 5412024 +939 : 0 +940 : 0 +941 : 0 +942 : 0 +943 : 0 +944 : 21 +945 : 32767 +946 : 33 +947 : 0 +948 : 5412352 +949 : 0 +950 : 5411936 +951 : 0 +952 : 5411968 +953 : 0 +954 : 129 +955 : 0 +956 : 4310928 +957 : 0 +958 : 0 +959 : 49 +960 : 5473328 +961 : 0 +962 : 0 +963 : 32767 +964 : 0 +965 : 0 +966 : 3 +967 : 0 +968 : 32767 +969 : 32767 +970 : 0 +971 : 32767 +972 : 5412304 +973 : 0 +974 : 5412304 +975 : 0 +976 : 5412304 +977 : 0 +978 : 1 +979 : 0 +980 : 0 +981 : 5 +982 : 1 +983 : 32767 +984 : 32767 +985 : 32767 +986 : 49 +987 : 0 +988 : 1 +989 : 49 +990 : 5412232 +991 : 0 +992 : 0 +993 : 0 +994 : 0 +995 : 0 +996 : 29 +997 : 32767 +998 : 33 +999 : 0 +1000 : 5412560 +1001 : 0 +1002 : 5412144 +1003 : 0 +1004 : 5412176 +1005 : 0 +1006 : 129 +1007 : 0 +1008 : 4310928 +1009 : 0 +1010 : 0 +1011 : 49 +1012 : 5473328 +1013 : 0 +1014 : 0 +1015 : 32767 +1016 : 0 +1017 : 0 +1018 : 3 +1019 : 0 +1020 : 32767 +1021 : 32767 +1022 : 0 +1023 : 32767 +1024 : 5412512 +1025 : 0 +1026 : 5412512 +1027 : 0 +1028 : 5412512 +1029 : 0 +1030 : 1 +1031 : 0 +1032 : 0 +1033 : 5 +1034 : 1 +1035 : 32767 +1036 : 32767 +1037 : 32767 +1038 : 49 +1039 : 0 +1040 : 1 +1041 : 49 +1042 : 5412440 +1043 : 0 +1044 : 0 +1045 : 0 +1046 : 0 +1047 : 0 +1048 : 30 +1049 : 32767 +1050 : 33 +1051 : 0 +1052 : 5412768 +1053 : 0 +1054 : 5412352 +1055 : 0 +1056 : 5412384 +1057 : 0 +1058 : 129 +1059 : 0 +1060 : 4310928 +1061 : 0 +1062 : 0 +1063 : 49 +1064 : 5473328 +1065 : 0 +1066 : 0 +1067 : 32767 +1068 : 0 +1069 : 0 +1070 : 3 +1071 : 0 +1072 : 32767 +1073 : 32767 +1074 : 0 +1075 : 32767 +1076 : 5412720 +1077 : 0 +1078 : 5412720 +1079 : 0 +1080 : 5412720 +1081 : 0 +1082 : 1 +1083 : 0 +1084 : 0 +1085 : 5 +1086 : 1 +1087 : 32767 +1088 : 32767 +1089 : 32767 +1090 : 49 +1091 : 0 +1092 : 1 +1093 : 49 +1094 : 5412648 +1095 : 0 +1096 : 0 +1097 : 0 +1098 : 0 +1099 : 0 +1100 : 31 +1101 : 32767 +1102 : 33 +1103 : 0 +1104 : 5412976 +1105 : 0 +1106 : 5412560 +1107 : 0 +1108 : 5412592 +1109 : 0 +1110 : 129 +1111 : 0 +1112 : 4310928 +1113 : 0 +1114 : 0 +1115 : 49 +1116 : 5473328 +1117 : 0 +1118 : 0 +1119 : 32767 +1120 : 0 +1121 : 0 +1122 : 3 +1123 : 0 +1124 : 32767 +1125 : 32767 +1126 : 0 +1127 : 32767 +1128 : 5412928 +1129 : 0 +1130 : 5412928 +1131 : 0 +1132 : 5412928 +1133 : 0 +1134 : 1 +1135 : 0 +1136 : 0 +1137 : 5 +1138 : 1 +1139 : 32767 +1140 : 32767 +1141 : 32767 +1142 : 49 +1143 : 0 +1144 : 1 +1145 : 49 +1146 : 5412856 +1147 : 0 +1148 : 0 +1149 : 0 +1150 : 0 +1151 : 0 +1152 : 32 +1153 : 32767 +1154 : 33 +1155 : 0 +1156 : 5413184 +1157 : 0 +1158 : 5412768 +1159 : 0 +1160 : 5412800 +1161 : 0 +1162 : 129 +1163 : 0 +1164 : 4310928 +1165 : 0 +1166 : 0 +1167 : 49 +1168 : 5473328 +1169 : 0 +1170 : 0 +1171 : 32767 +1172 : 0 +1173 : 0 +1174 : 3 +1175 : 0 +1176 : 32767 +1177 : 32767 +1178 : 0 +1179 : 32767 +1180 : 5413136 +1181 : 0 +1182 : 5413136 +1183 : 0 +1184 : 5413136 +1185 : 0 +1186 : 1 +1187 : 0 +1188 : 0 +1189 : 5 +1190 : 1 +1191 : 32767 +1192 : 32767 +1193 : 32767 +1194 : 49 +1195 : 0 +1196 : 1 +1197 : 49 +1198 : 5413064 +1199 : 0 +1200 : 0 +1201 : 0 +1202 : 0 +1203 : 0 +1204 : 33 +1205 : 32767 +1206 : 33 +1207 : 0 +1208 : 5413392 +1209 : 0 +1210 : 5412976 +1211 : 0 +1212 : 5413008 +1213 : 0 +1214 : 129 +1215 : 0 +1216 : 4310928 +1217 : 0 +1218 : 0 +1219 : 49 +1220 : 5473328 +1221 : 0 +1222 : 0 +1223 : 32767 +1224 : 0 +1225 : 0 +1226 : 3 +1227 : 0 +1228 : 32767 +1229 : 32767 +1230 : 0 +1231 : 32767 +1232 : 5413344 +1233 : 0 +1234 : 5413344 +1235 : 0 +1236 : 5413344 +1237 : 0 +1238 : 1 +1239 : 0 +1240 : 0 +1241 : 5 +1242 : 1 +1243 : 32767 +1244 : 32767 +1245 : 32767 +1246 : 49 +1247 : 0 +1248 : 1 +1249 : 49 +1250 : 5413272 +1251 : 0 +1252 : 0 +1253 : 0 +1254 : 0 +1255 : 0 +1256 : 34 +1257 : 32767 +1258 : 33 +1259 : 0 +1260 : 5413600 +1261 : 0 +1262 : 5413184 +1263 : 0 +1264 : 5413216 +1265 : 0 +1266 : 129 +1267 : 0 +1268 : 4310928 +1269 : 0 +1270 : 0 +1271 : 49 +1272 : 5473328 +1273 : 0 +1274 : 0 +1275 : 32767 +1276 : 0 +1277 : 0 +1278 : 3 +1279 : 0 +1280 : 32767 +1281 : 32767 +1282 : 0 +1283 : 32767 +1284 : 5413552 +1285 : 0 +1286 : 5413552 +1287 : 0 +1288 : 5413552 +1289 : 0 +1290 : 1 +1291 : 0 +1292 : 0 +1293 : 5 +1294 : 1 +1295 : 32767 +1296 : 32767 +1297 : 32767 +1298 : 49 +1299 : 0 +1300 : 1 +1301 : 49 +1302 : 5413480 +1303 : 0 +1304 : 0 +1305 : 0 +1306 : 0 +1307 : 0 +1308 : 35 +1309 : 32767 +1310 : 33 +1311 : 0 +1312 : 5413808 +1313 : 0 +1314 : 5413392 +1315 : 0 +1316 : 5413424 +1317 : 0 +1318 : 129 +1319 : 0 +1320 : 4310928 +1321 : 0 +1322 : 0 +1323 : 49 +1324 : 5473328 +1325 : 0 +1326 : 0 +1327 : 32767 +1328 : 0 +1329 : 0 +1330 : 3 +1331 : 0 +1332 : 32767 +1333 : 32767 +1334 : 0 +1335 : 32767 +1336 : 5413760 +1337 : 0 +1338 : 5413760 +1339 : 0 +1340 : 5413760 +1341 : 0 +1342 : 1 +1343 : 0 +1344 : 0 +1345 : 5 +1346 : 1 +1347 : 32767 +1348 : 32767 +1349 : 32767 +1350 : 49 +1351 : 0 +1352 : 1 +1353 : 49 +1354 : 5413688 +1355 : 0 +1356 : 0 +1357 : 0 +1358 : 0 +1359 : 0 +1360 : 36 +1361 : 32767 +1362 : 33 +1363 : 0 +1364 : 5414016 +1365 : 0 +1366 : 5413600 +1367 : 0 +1368 : 5413632 +1369 : 0 +1370 : 129 +1371 : 0 +1372 : 4310928 +1373 : 0 +1374 : 0 +1375 : 49 +1376 : 5473328 +1377 : 0 +1378 : 0 +1379 : 32767 +1380 : 0 +1381 : 0 +1382 : 3 +1383 : 0 +1384 : 32767 +1385 : 32767 +1386 : 0 +1387 : 32767 +1388 : 5413968 +1389 : 0 +1390 : 5413968 +1391 : 0 +1392 : 5413968 +1393 : 0 +1394 : 1 +1395 : 0 +1396 : 0 +1397 : 5 +1398 : 1 +1399 : 32767 +1400 : 32767 +1401 : 32767 +1402 : 49 +1403 : 0 +1404 : 1 +1405 : 49 +1406 : 5413896 +1407 : 0 +1408 : 0 +1409 : 0 +1410 : 0 +1411 : 0 +1412 : 37 +1413 : 32767 +1414 : 33 +1415 : 0 +1416 : 5414224 +1417 : 0 +1418 : 5413808 +1419 : 0 +1420 : 5413840 +1421 : 0 +1422 : 129 +1423 : 0 +1424 : 4310928 +1425 : 0 +1426 : 0 +1427 : 49 +1428 : 5473328 +1429 : 0 +1430 : 0 +1431 : 32767 +1432 : 0 +1433 : 0 +1434 : 3 +1435 : 0 +1436 : 32767 +1437 : 32767 +1438 : 0 +1439 : 32767 +1440 : 5414176 +1441 : 0 +1442 : 5414176 +1443 : 0 +1444 : 5414176 +1445 : 0 +1446 : 1 +1447 : 0 +1448 : 0 +1449 : 5 +1450 : 1 +1451 : 32767 +1452 : 32767 +1453 : 32767 +1454 : 49 +1455 : 0 +1456 : 1 +1457 : 49 +1458 : 5414104 +1459 : 0 +1460 : 0 +1461 : 0 +1462 : 0 +1463 : 0 +1464 : 38 +1465 : 32767 +1466 : 33 +1467 : 0 +1468 : 5414432 +1469 : 0 +1470 : 5414016 +1471 : 0 +1472 : 5414048 +1473 : 0 +1474 : 129 +1475 : 0 +1476 : 4310928 +1477 : 0 +1478 : 0 +1479 : 49 +1480 : 5473328 +1481 : 0 +1482 : 0 +1483 : 32767 +1484 : 0 +1485 : 0 +1486 : 3 +1487 : 0 +1488 : 32767 +1489 : 32767 +1490 : 0 +1491 : 32767 +1492 : 5414384 +1493 : 0 +1494 : 5414384 +1495 : 0 +1496 : 5414384 +1497 : 0 +1498 : 1 +1499 : 0 +1500 : 0 +1501 : 5 +1502 : 1 +1503 : 32767 +1504 : 32767 +1505 : 32767 +1506 : 49 +1507 : 0 +1508 : 1 +1509 : 49 +1510 : 5414312 +1511 : 0 +1512 : 0 +1513 : 0 +1514 : 0 +1515 : 0 +1516 : 39 +1517 : 32767 +1518 : 33 +1519 : 0 +1520 : 5414640 +1521 : 0 +1522 : 5414224 +1523 : 0 +1524 : 5414256 +1525 : 0 +1526 : 129 +1527 : 0 +1528 : 4310928 +1529 : 0 +1530 : 0 +1531 : 49 +1532 : 5473328 +1533 : 0 +1534 : 0 +1535 : 32767 +1536 : 0 +1537 : 0 +1538 : 3 +1539 : 0 +1540 : 32767 +1541 : 32767 +1542 : 0 +1543 : 32767 +1544 : 5414592 +1545 : 0 +1546 : 5414592 +1547 : 0 +1548 : 5414592 +1549 : 0 +1550 : 1 +1551 : 0 +1552 : 0 +1553 : 5 +1554 : 1 +1555 : 32767 +1556 : 32767 +1557 : 32767 +1558 : 49 +1559 : 0 +1560 : 1 +1561 : 49 +1562 : 5414520 +1563 : 0 +1564 : 0 +1565 : 0 +1566 : 0 +1567 : 0 +1568 : 40 +1569 : 32767 +1570 : 33 +1571 : 0 +1572 : 5414848 +1573 : 0 +1574 : 5414432 +1575 : 0 +1576 : 5414464 +1577 : 0 +1578 : 129 +1579 : 0 +1580 : 4310928 +1581 : 0 +1582 : 0 +1583 : 49 +1584 : 5473328 +1585 : 0 +1586 : 0 +1587 : 32767 +1588 : 0 +1589 : 0 +1590 : 3 +1591 : 0 +1592 : 32767 +1593 : 32767 +1594 : 0 +1595 : 32767 +1596 : 5414800 +1597 : 0 +1598 : 5414800 +1599 : 0 +1600 : 5414800 +1601 : 0 +1602 : 1 +1603 : 0 +1604 : 0 +1605 : 5 +1606 : 1 +1607 : 32767 +1608 : 32767 +1609 : 32767 +1610 : 49 +1611 : 0 +1612 : 1 +1613 : 49 +1614 : 5414728 +1615 : 0 +1616 : 0 +1617 : 0 +1618 : 0 +1619 : 0 +1620 : 41 +1621 : 32767 +1622 : 33 +1623 : 0 +1624 : 5415056 +1625 : 0 +1626 : 5414640 +1627 : 0 +1628 : 5414672 +1629 : 0 +1630 : 129 +1631 : 0 +1632 : 4310928 +1633 : 0 +1634 : 0 +1635 : 49 +1636 : 5473328 +1637 : 0 +1638 : 0 +1639 : 32767 +1640 : 0 +1641 : 0 +1642 : 3 +1643 : 0 +1644 : 32767 +1645 : 32767 +1646 : 0 +1647 : 32767 +1648 : 5415008 +1649 : 0 +1650 : 5415008 +1651 : 0 +1652 : 5415008 +1653 : 0 +1654 : 1 +1655 : 0 +1656 : 0 +1657 : 5 +1658 : 1 +1659 : 32767 +1660 : 32767 +1661 : 32767 +1662 : 49 +1663 : 0 +1664 : 1 +1665 : 49 +1666 : 5414936 +1667 : 0 +1668 : 0 +1669 : 0 +1670 : 0 +1671 : 0 +1672 : 43 +1673 : 32767 +1674 : 33 +1675 : 0 +1676 : 5415264 +1677 : 0 +1678 : 5414848 +1679 : 0 +1680 : 5414880 +1681 : 0 +1682 : 129 +1683 : 0 +1684 : 4310928 +1685 : 0 +1686 : 0 +1687 : 49 +1688 : 5473328 +1689 : 0 +1690 : 0 +1691 : 32767 +1692 : 0 +1693 : 0 +1694 : 3 +1695 : 0 +1696 : 32767 +1697 : 32767 +1698 : 0 +1699 : 32767 +1700 : 5415216 +1701 : 0 +1702 : 5415216 +1703 : 0 +1704 : 5415216 +1705 : 0 +1706 : 1 +1707 : 0 +1708 : 0 +1709 : 5 +1710 : 1 +1711 : 32767 +1712 : 32767 +1713 : 32767 +1714 : 49 +1715 : 0 +1716 : 1 +1717 : 49 +1718 : 5415144 +1719 : 0 +1720 : 0 +1721 : 0 +1722 : 0 +1723 : 0 +1724 : 44 +1725 : 32767 +1726 : 33 +1727 : 0 +1728 : 5415472 +1729 : 0 +1730 : 5415056 +1731 : 0 +1732 : 5415088 +1733 : 0 +1734 : 129 +1735 : 0 +1736 : 4310928 +1737 : 0 +1738 : 0 +1739 : 49 +1740 : 5473328 +1741 : 0 +1742 : 0 +1743 : 32767 +1744 : 0 +1745 : 0 +1746 : 3 +1747 : 0 +1748 : 32767 +1749 : 32767 +1750 : 0 +1751 : 32767 +1752 : 5415424 +1753 : 0 +1754 : 5415424 +1755 : 0 +1756 : 5415424 +1757 : 0 +1758 : 1 +1759 : 0 +1760 : 0 +1761 : 5 +1762 : 1 +1763 : 32767 +1764 : 32767 +1765 : 32767 +1766 : 49 +1767 : 0 +1768 : 1 +1769 : 49 +1770 : 5415352 +1771 : 0 +1772 : 0 +1773 : 0 +1774 : 0 +1775 : 0 +1776 : 45 +1777 : 32767 +1778 : 33 +1779 : 0 +1780 : 5415680 +1781 : 0 +1782 : 5415264 +1783 : 0 +1784 : 5415296 +1785 : 0 +1786 : 129 +1787 : 0 +1788 : 4310928 +1789 : 0 +1790 : 0 +1791 : 49 +1792 : 5473328 +1793 : 0 +1794 : 0 +1795 : 32767 +1796 : 0 +1797 : 0 +1798 : 3 +1799 : 0 +1800 : 32767 +1801 : 32767 +1802 : 0 +1803 : 32767 +1804 : 5415632 +1805 : 0 +1806 : 5415632 +1807 : 0 +1808 : 5415632 +1809 : 0 +1810 : 1 +1811 : 0 +1812 : 0 +1813 : 5 +1814 : 1 +1815 : 32767 +1816 : 32767 +1817 : 32767 +1818 : 49 +1819 : 0 +1820 : 1 +1821 : 49 +1822 : 5415560 +1823 : 0 +1824 : 0 +1825 : 0 +1826 : 0 +1827 : 0 +1828 : 46 +1829 : 32767 +1830 : 33 +1831 : 0 +1832 : 5415888 +1833 : 0 +1834 : 5415472 +1835 : 0 +1836 : 5415504 +1837 : 0 +1838 : 129 +1839 : 0 +1840 : 4310928 +1841 : 0 +1842 : 0 +1843 : 49 +1844 : 5473328 +1845 : 0 +1846 : 0 +1847 : 32767 +1848 : 0 +1849 : 0 +1850 : 3 +1851 : 0 +1852 : 32767 +1853 : 32767 +1854 : 0 +1855 : 32767 +1856 : 5415840 +1857 : 0 +1858 : 5415840 +1859 : 0 +1860 : 5415840 +1861 : 0 +1862 : 1 +1863 : 0 +1864 : 0 +1865 : 5 +1866 : 1 +1867 : 32767 +1868 : 32767 +1869 : 32767 +1870 : 49 +1871 : 0 +1872 : 1 +1873 : 49 +1874 : 5415768 +1875 : 0 +1876 : 0 +1877 : 0 +1878 : 0 +1879 : 0 +1880 : 47 +1881 : 32767 +1882 : 33 +1883 : 0 +1884 : 5416096 +1885 : 0 +1886 : 5415680 +1887 : 0 +1888 : 5415712 +1889 : 0 +1890 : 129 +1891 : 0 +1892 : 4310928 +1893 : 0 +1894 : 0 +1895 : 49 +1896 : 5473328 +1897 : 0 +1898 : 0 +1899 : 32767 +1900 : 0 +1901 : 0 +1902 : 3 +1903 : 0 +1904 : 32767 +1905 : 32767 +1906 : 0 +1907 : 32767 +1908 : 5416048 +1909 : 0 +1910 : 5416048 +1911 : 0 +1912 : 5416048 +1913 : 0 +1914 : 1 +1915 : 0 +1916 : 0 +1917 : 5 +1918 : 1 +1919 : 32767 +1920 : 32767 +1921 : 32767 +1922 : 49 +1923 : 0 +1924 : 1 +1925 : 49 +1926 : 5415976 +1927 : 0 +1928 : 0 +1929 : 0 +1930 : 0 +1931 : 0 +1932 : 48 +1933 : 32767 +1934 : 33 +1935 : 0 +1936 : 5416304 +1937 : 0 +1938 : 5415888 +1939 : 0 +1940 : 5415920 +1941 : 0 +1942 : 129 +1943 : 0 +1944 : 4310928 +1945 : 0 +1946 : 0 +1947 : 49 +1948 : 5473328 +1949 : 0 +1950 : 0 +1951 : 32767 +1952 : 0 +1953 : 0 +1954 : 3 +1955 : 0 +1956 : 32767 +1957 : 32767 +1958 : 0 +1959 : 32767 +1960 : 5416256 +1961 : 0 +1962 : 5416256 +1963 : 0 +1964 : 5416256 +1965 : 0 +1966 : 1 +1967 : 0 +1968 : 0 +1969 : 5 +1970 : 1 +1971 : 32767 +1972 : 32767 +1973 : 32767 +1974 : 49 +1975 : 0 +1976 : 1 +1977 : 49 +1978 : 5416184 +1979 : 0 +1980 : 0 +1981 : 0 +1982 : 0 +1983 : 0 +1984 : 49 +1985 : 32767 +1986 : 33 +1987 : 0 +1988 : 5416512 +1989 : 0 +1990 : 5416096 +1991 : 0 +1992 : 5416128 +1993 : 0 +1994 : 129 +1995 : 0 +1996 : 4310928 +1997 : 0 +1998 : 0 +1999 : 49 +2000 : 5473328 +2001 : 0 +2002 : 0 +2003 : 32767 +2004 : 0 +2005 : 0 +2006 : 3 +2007 : 0 +2008 : 32767 +2009 : 32767 +2010 : 0 +2011 : 32767 +2012 : 5416464 +2013 : 0 +2014 : 5416464 +2015 : 0 +2016 : 5416464 +2017 : 0 +2018 : 1 +2019 : 0 +2020 : 0 +2021 : 5 +2022 : 1 +2023 : 32767 +2024 : 32767 +2025 : 32767 +2026 : 49 +2027 : 0 +2028 : 1 +2029 : 49 +2030 : 5416392 +2031 : 0 +2032 : 0 +2033 : 0 +2034 : 0 +2035 : 0 +2036 : 50 +2037 : 32767 +2038 : 33 +2039 : 0 +2040 : 5416720 +2041 : 0 +2042 : 5416304 +2043 : 0 +2044 : 5416336 +2045 : 0 +2046 : 129 +2047 : 0 +2048 : 4310928 +2049 : 0 +2050 : 0 +2051 : 49 +2052 : 5473328 +2053 : 0 +2054 : 0 +2055 : 32767 +2056 : 0 +2057 : 0 +2058 : 3 +2059 : 0 +2060 : 32767 +2061 : 32767 +2062 : 0 +2063 : 32767 +2064 : 5416672 +2065 : 0 +2066 : 5416672 +2067 : 0 +2068 : 5416672 +2069 : 0 +2070 : 1 +2071 : 0 +2072 : 0 +2073 : 5 +2074 : 1 +2075 : 32767 +2076 : 32767 +2077 : 32767 +2078 : 49 +2079 : 0 +2080 : 1 +2081 : 49 +2082 : 5416600 +2083 : 0 +2084 : 0 +2085 : 0 +2086 : 0 +2087 : 0 +2088 : 51 +2089 : 32767 +2090 : 33 +2091 : 0 +2092 : 5416928 +2093 : 0 +2094 : 5416512 +2095 : 0 +2096 : 5416544 +2097 : 0 +2098 : 129 +2099 : 0 +2100 : 4310928 +2101 : 0 +2102 : 0 +2103 : 49 +2104 : 5473328 +2105 : 0 +2106 : 0 +2107 : 32767 +2108 : 0 +2109 : 0 +2110 : 3 +2111 : 0 +2112 : 32767 +2113 : 32767 +2114 : 0 +2115 : 32767 +2116 : 5416880 +2117 : 0 +2118 : 5416880 +2119 : 0 +2120 : 5416880 +2121 : 0 +2122 : 1 +2123 : 0 +2124 : 0 +2125 : 5 +2126 : 1 +2127 : 32767 +2128 : 32767 +2129 : 32767 +2130 : 49 +2131 : 0 +2132 : 1 +2133 : 49 +2134 : 5416808 +2135 : 0 +2136 : 0 +2137 : 0 +2138 : 0 +2139 : 0 +2140 : 52 +2141 : 32767 +2142 : 33 +2143 : 0 +2144 : 5417136 +2145 : 0 +2146 : 5416720 +2147 : 0 +2148 : 5416752 +2149 : 0 +2150 : 129 +2151 : 0 +2152 : 4310928 +2153 : 0 +2154 : 0 +2155 : 49 +2156 : 5473328 +2157 : 0 +2158 : 0 +2159 : 32767 +2160 : 0 +2161 : 0 +2162 : 3 +2163 : 0 +2164 : 32767 +2165 : 32767 +2166 : 0 +2167 : 32767 +2168 : 5417088 +2169 : 0 +2170 : 5417088 +2171 : 0 +2172 : 5417088 +2173 : 0 +2174 : 1 +2175 : 0 +2176 : 0 +2177 : 5 +2178 : 1 +2179 : 32767 +2180 : 32767 +2181 : 32767 +2182 : 49 +2183 : 0 +2184 : 1 +2185 : 49 +2186 : 5417016 +2187 : 0 +2188 : 0 +2189 : 0 +2190 : 0 +2191 : 0 +2192 : 53 +2193 : 32767 +2194 : 33 +2195 : 0 +2196 : 5417344 +2197 : 0 +2198 : 5416928 +2199 : 0 +2200 : 5416960 +2201 : 0 +2202 : 129 +2203 : 0 +2204 : 4310928 +2205 : 0 +2206 : 0 +2207 : 49 +2208 : 5473328 +2209 : 0 +2210 : 0 +2211 : 32767 +2212 : 0 +2213 : 0 +2214 : 3 +2215 : 0 +2216 : 32767 +2217 : 32767 +2218 : 0 +2219 : 32767 +2220 : 5417296 +2221 : 0 +2222 : 5417296 +2223 : 0 +2224 : 5417296 +2225 : 0 +2226 : 1 +2227 : 0 +2228 : 0 +2229 : 5 +2230 : 1 +2231 : 32767 +2232 : 32767 +2233 : 32767 +2234 : 49 +2235 : 0 +2236 : 1 +2237 : 49 +2238 : 5417224 +2239 : 0 +2240 : 0 +2241 : 0 +2242 : 0 +2243 : 0 +2244 : 54 +2245 : 32767 +2246 : 33 +2247 : 0 +2248 : 5417552 +2249 : 0 +2250 : 5417136 +2251 : 0 +2252 : 5417168 +2253 : 0 +2254 : 129 +2255 : 0 +2256 : 4310928 +2257 : 0 +2258 : 0 +2259 : 49 +2260 : 5473328 +2261 : 0 +2262 : 0 +2263 : 32767 +2264 : 0 +2265 : 0 +2266 : 3 +2267 : 0 +2268 : 32767 +2269 : 32767 +2270 : 0 +2271 : 32767 +2272 : 5417504 +2273 : 0 +2274 : 5417504 +2275 : 0 +2276 : 5417504 +2277 : 0 +2278 : 1 +2279 : 0 +2280 : 0 +2281 : 5 +2282 : 1 +2283 : 32767 +2284 : 32767 +2285 : 32767 +2286 : 49 +2287 : 0 +2288 : 1 +2289 : 49 +2290 : 5417432 +2291 : 0 +2292 : 0 +2293 : 0 +2294 : 0 +2295 : 0 +2296 : 55 +2297 : 32767 +2298 : 33 +2299 : 0 +2300 : 5417760 +2301 : 0 +2302 : 5417344 +2303 : 0 +2304 : 5417376 +2305 : 0 +2306 : 129 +2307 : 0 +2308 : 4310928 +2309 : 0 +2310 : 0 +2311 : 49 +2312 : 5473328 +2313 : 0 +2314 : 0 +2315 : 32767 +2316 : 0 +2317 : 0 +2318 : 3 +2319 : 0 +2320 : 32767 +2321 : 32767 +2322 : 0 +2323 : 32767 +2324 : 5417712 +2325 : 0 +2326 : 5417712 +2327 : 0 +2328 : 5417712 +2329 : 0 +2330 : 1 +2331 : 0 +2332 : 0 +2333 : 5 +2334 : 1 +2335 : 32767 +2336 : 32767 +2337 : 32767 +2338 : 49 +2339 : 0 +2340 : 1 +2341 : 49 +2342 : 5417640 +2343 : 0 +2344 : 0 +2345 : 0 +2346 : 0 +2347 : 0 +2348 : 57 +2349 : 32767 +2350 : 33 +2351 : 0 +2352 : 5417968 +2353 : 0 +2354 : 5417552 +2355 : 0 +2356 : 5417584 +2357 : 0 +2358 : 129 +2359 : 0 +2360 : 4310928 +2361 : 0 +2362 : 0 +2363 : 49 +2364 : 5473328 +2365 : 0 +2366 : 0 +2367 : 32767 +2368 : 0 +2369 : 0 +2370 : 3 +2371 : 0 +2372 : 32767 +2373 : 32767 +2374 : 0 +2375 : 32767 +2376 : 5417920 +2377 : 0 +2378 : 5417920 +2379 : 0 +2380 : 5417920 +2381 : 0 +2382 : 1 +2383 : 0 +2384 : 0 +2385 : 5 +2386 : 1 +2387 : 32767 +2388 : 32767 +2389 : 32767 +2390 : 49 +2391 : 0 +2392 : 1 +2393 : 49 +2394 : 5417848 +2395 : 0 +2396 : 0 +2397 : 0 +2398 : 0 +2399 : 0 +2400 : 66 +2401 : 32767 +2402 : 33 +2403 : 0 +2404 : 5418176 +2405 : 0 +2406 : 5417760 +2407 : 0 +2408 : 5417792 +2409 : 0 +2410 : 129 +2411 : 0 +2412 : 4310928 +2413 : 0 +2414 : 0 +2415 : 49 +2416 : 5473328 +2417 : 0 +2418 : 0 +2419 : 32767 +2420 : 0 +2421 : 0 +2422 : 3 +2423 : 0 +2424 : 32767 +2425 : 32767 +2426 : 0 +2427 : 32767 +2428 : 5418128 +2429 : 0 +2430 : 5418128 +2431 : 0 +2432 : 5418128 +2433 : 0 +2434 : 1 +2435 : 0 +2436 : 0 +2437 : 5 +2438 : 1 +2439 : 32767 +2440 : 32767 +2441 : 32767 +2442 : 49 +2443 : 0 +2444 : 1 +2445 : 49 +2446 : 5418056 +2447 : 0 +2448 : 0 +2449 : 0 +2450 : 0 +2451 : 0 +2452 : 67 +2453 : 32767 +2454 : 33 +2455 : 0 +2456 : 5418384 +2457 : 0 +2458 : 5417968 +2459 : 0 +2460 : 5418000 +2461 : 0 +2462 : 129 +2463 : 0 +2464 : 4310928 +2465 : 0 +2466 : 0 +2467 : 49 +2468 : 5473328 +2469 : 0 +2470 : 0 +2471 : 32767 +2472 : 0 +2473 : 0 +2474 : 3 +2475 : 0 +2476 : 32767 +2477 : 32767 +2478 : 0 +2479 : 32767 +2480 : 5418336 +2481 : 0 +2482 : 5418336 +2483 : 0 +2484 : 5418336 +2485 : 0 +2486 : 1 +2487 : 0 +2488 : 0 +2489 : 5 +2490 : 1 +2491 : 32767 +2492 : 32767 +2493 : 32767 +2494 : 49 +2495 : 0 +2496 : 1 +2497 : 49 +2498 : 5418264 +2499 : 0 +2500 : 0 +2501 : 0 +2502 : 0 +2503 : 0 +2504 : 68 +2505 : 32767 +2506 : 33 +2507 : 0 +2508 : 5418592 +2509 : 0 +2510 : 5418176 +2511 : 0 +2512 : 5418208 +2513 : 0 +2514 : 129 +2515 : 0 +2516 : 4310928 +2517 : 0 +2518 : 0 +2519 : 49 +2520 : 5473328 +2521 : 0 +2522 : 0 +2523 : 32767 +2524 : 0 +2525 : 0 +2526 : 3 +2527 : 0 +2528 : 32767 +2529 : 32767 +2530 : 0 +2531 : 32767 +2532 : 5418544 +2533 : 0 +2534 : 5418544 +2535 : 0 +2536 : 5418544 +2537 : 0 +2538 : 1 +2539 : 0 +2540 : 0 +2541 : 5 +2542 : 1 +2543 : 32767 +2544 : 32767 +2545 : 32767 +2546 : 49 +2547 : 0 +2548 : 1 +2549 : 49 +2550 : 5418472 +2551 : 0 +2552 : 0 +2553 : 0 +2554 : 0 +2555 : 0 +2556 : 69 +2557 : 32767 +2558 : 33 +2559 : 0 +2560 : 5418800 +2561 : 0 +2562 : 5418384 +2563 : 0 +2564 : 5418416 +2565 : 0 +2566 : 129 +2567 : 0 +2568 : 4310928 +2569 : 0 +2570 : 0 +2571 : 49 +2572 : 5473328 +2573 : 0 +2574 : 0 +2575 : 32767 +2576 : 0 +2577 : 0 +2578 : 3 +2579 : 0 +2580 : 32767 +2581 : 32767 +2582 : 0 +2583 : 32767 +2584 : 5418752 +2585 : 0 +2586 : 5418752 +2587 : 0 +2588 : 5418752 +2589 : 0 +2590 : 1 +2591 : 0 +2592 : 0 +2593 : 5 +2594 : 1 +2595 : 32767 +2596 : 32767 +2597 : 32767 +2598 : 49 +2599 : 0 +2600 : 1 +2601 : 49 +2602 : 5418680 +2603 : 0 +2604 : 0 +2605 : 0 +2606 : 0 +2607 : 0 +2608 : 70 +2609 : 32767 +2610 : 33 +2611 : 0 +2612 : 5419008 +2613 : 0 +2614 : 5418592 +2615 : 0 +2616 : 5418624 +2617 : 0 +2618 : 129 +2619 : 0 +2620 : 4310928 +2621 : 0 +2622 : 0 +2623 : 49 +2624 : 5473328 +2625 : 0 +2626 : 0 +2627 : 32767 +2628 : 0 +2629 : 0 +2630 : 3 +2631 : 0 +2632 : 32767 +2633 : 32767 +2634 : 0 +2635 : 32767 +2636 : 5418960 +2637 : 0 +2638 : 5418960 +2639 : 0 +2640 : 5418960 +2641 : 0 +2642 : 1 +2643 : 0 +2644 : 0 +2645 : 5 +2646 : 1 +2647 : 32767 +2648 : 32767 +2649 : 32767 +2650 : 49 +2651 : 0 +2652 : 1 +2653 : 49 +2654 : 5418888 +2655 : 0 +2656 : 0 +2657 : 0 +2658 : 0 +2659 : 0 +2660 : 71 +2661 : 32767 +2662 : 33 +2663 : 0 +2664 : 5419216 +2665 : 0 +2666 : 5418800 +2667 : 0 +2668 : 5418832 +2669 : 0 +2670 : 129 +2671 : 0 +2672 : 4310928 +2673 : 0 +2674 : 0 +2675 : 49 +2676 : 5473328 +2677 : 0 +2678 : 0 +2679 : 32767 +2680 : 0 +2681 : 0 +2682 : 3 +2683 : 0 +2684 : 32767 +2685 : 32767 +2686 : 0 +2687 : 32767 +2688 : 5419168 +2689 : 0 +2690 : 5419168 +2691 : 0 +2692 : 5419168 +2693 : 0 +2694 : 1 +2695 : 0 +2696 : 0 +2697 : 5 +2698 : 1 +2699 : 32767 +2700 : 32767 +2701 : 32767 +2702 : 49 +2703 : 0 +2704 : 1 +2705 : 49 +2706 : 5419096 +2707 : 0 +2708 : 0 +2709 : 0 +2710 : 0 +2711 : 0 +2712 : 72 +2713 : 32767 +2714 : 33 +2715 : 0 +2716 : 5419424 +2717 : 0 +2718 : 5419008 +2719 : 0 +2720 : 5419040 +2721 : 0 +2722 : 129 +2723 : 0 +2724 : 4310928 +2725 : 0 +2726 : 0 +2727 : 49 +2728 : 5473328 +2729 : 0 +2730 : 0 +2731 : 32767 +2732 : 0 +2733 : 0 +2734 : 3 +2735 : 0 +2736 : 32767 +2737 : 32767 +2738 : 0 +2739 : 32767 +2740 : 5419376 +2741 : 0 +2742 : 5419376 +2743 : 0 +2744 : 5419376 +2745 : 0 +2746 : 1 +2747 : 0 +2748 : 0 +2749 : 5 +2750 : 1 +2751 : 32767 +2752 : 32767 +2753 : 32767 +2754 : 49 +2755 : 0 +2756 : 1 +2757 : 49 +2758 : 5419304 +2759 : 0 +2760 : 0 +2761 : 0 +2762 : 0 +2763 : 0 +2764 : 73 +2765 : 32767 +2766 : 33 +2767 : 0 +2768 : 5419632 +2769 : 0 +2770 : 5419216 +2771 : 0 +2772 : 5419248 +2773 : 0 +2774 : 129 +2775 : 0 +2776 : 4310928 +2777 : 0 +2778 : 0 +2779 : 49 +2780 : 5473328 +2781 : 0 +2782 : 0 +2783 : 32767 +2784 : 0 +2785 : 0 +2786 : 3 +2787 : 0 +2788 : 32767 +2789 : 32767 +2790 : 0 +2791 : 32767 +2792 : 5419584 +2793 : 0 +2794 : 5419584 +2795 : 0 +2796 : 5419584 +2797 : 0 +2798 : 1 +2799 : 0 +2800 : 0 +2801 : 5 +2802 : 1 +2803 : 32767 +2804 : 32767 +2805 : 32767 +2806 : 49 +2807 : 0 +2808 : 1 +2809 : 49 +2810 : 5419512 +2811 : 0 +2812 : 0 +2813 : 0 +2814 : 0 +2815 : 0 +2816 : 74 +2817 : 32767 +2818 : 33 +2819 : 0 +2820 : 5419840 +2821 : 0 +2822 : 5419424 +2823 : 0 +2824 : 5419456 +2825 : 0 +2826 : 129 +2827 : 0 +2828 : 4310928 +2829 : 0 +2830 : 0 +2831 : 49 +2832 : 5473328 +2833 : 0 +2834 : 0 +2835 : 32767 +2836 : 0 +2837 : 0 +2838 : 3 +2839 : 0 +2840 : 32767 +2841 : 32767 +2842 : 0 +2843 : 32767 +2844 : 5419792 +2845 : 0 +2846 : 5419792 +2847 : 0 +2848 : 5419792 +2849 : 0 +2850 : 1 +2851 : 0 +2852 : 0 +2853 : 5 +2854 : 1 +2855 : 32767 +2856 : 32767 +2857 : 32767 +2858 : 49 +2859 : 0 +2860 : 1 +2861 : 49 +2862 : 5419720 +2863 : 0 +2864 : 0 +2865 : 0 +2866 : 0 +2867 : 0 +2868 : 75 +2869 : 32767 +2870 : 33 +2871 : 0 +2872 : 5420048 +2873 : 0 +2874 : 5419632 +2875 : 0 +2876 : 5419664 +2877 : 0 +2878 : 129 +2879 : 0 +2880 : 4310928 +2881 : 0 +2882 : 0 +2883 : 49 +2884 : 5473328 +2885 : 0 +2886 : 0 +2887 : 32767 +2888 : 0 +2889 : 0 +2890 : 3 +2891 : 0 +2892 : 32767 +2893 : 32767 +2894 : 0 +2895 : 32767 +2896 : 5420000 +2897 : 0 +2898 : 5420000 +2899 : 0 +2900 : 5420000 +2901 : 0 +2902 : 1 +2903 : 0 +2904 : 0 +2905 : 5 +2906 : 1 +2907 : 32767 +2908 : 32767 +2909 : 32767 +2910 : 49 +2911 : 0 +2912 : 1 +2913 : 49 +2914 : 5419928 +2915 : 0 +2916 : 0 +2917 : 0 +2918 : 0 +2919 : 0 +2920 : 76 +2921 : 32767 +2922 : 33 +2923 : 0 +2924 : 5420256 +2925 : 0 +2926 : 5419840 +2927 : 0 +2928 : 5419872 +2929 : 0 +2930 : 129 +2931 : 0 +2932 : 4310928 +2933 : 0 +2934 : 0 +2935 : 49 +2936 : 5473328 +2937 : 0 +2938 : 0 +2939 : 32767 +2940 : 0 +2941 : 0 +2942 : 3 +2943 : 0 +2944 : 32767 +2945 : 32767 +2946 : 0 +2947 : 32767 +2948 : 5420208 +2949 : 0 +2950 : 5420208 +2951 : 0 +2952 : 5420208 +2953 : 0 +2954 : 1 +2955 : 0 +2956 : 0 +2957 : 5 +2958 : 1 +2959 : 32767 +2960 : 32767 +2961 : 32767 +2962 : 49 +2963 : 0 +2964 : 1 +2965 : 49 +2966 : 5420136 +2967 : 0 +2968 : 0 +2969 : 0 +2970 : 0 +2971 : 0 +2972 : 77 +2973 : 32767 +2974 : 33 +2975 : 0 +2976 : 5420464 +2977 : 0 +2978 : 5420048 +2979 : 0 +2980 : 5420080 +2981 : 0 +2982 : 129 +2983 : 0 +2984 : 4310928 +2985 : 0 +2986 : 0 +2987 : 49 +2988 : 5473328 +2989 : 0 +2990 : 0 +2991 : 32767 +2992 : 0 +2993 : 0 +2994 : 3 +2995 : 0 +2996 : 32767 +2997 : 32767 +2998 : 0 +2999 : 32767 +3000 : 5420416 +3001 : 0 +3002 : 5420416 +3003 : 0 +3004 : 5420416 +3005 : 0 +3006 : 1 +3007 : 0 +3008 : 0 +3009 : 5 +3010 : 1 +3011 : 32767 +3012 : 32767 +3013 : 32767 +3014 : 49 +3015 : 0 +3016 : 1 +3017 : 49 +3018 : 5420344 +3019 : 0 +3020 : 0 +3021 : 0 +3022 : 0 +3023 : 0 +3024 : 78 +3025 : 32767 +3026 : 33 +3027 : 0 +3028 : 5420672 +3029 : 0 +3030 : 5420256 +3031 : 0 +3032 : 5420288 +3033 : 0 +3034 : 129 +3035 : 0 +3036 : 4310928 +3037 : 0 +3038 : 0 +3039 : 49 +3040 : 5473328 +3041 : 0 +3042 : 0 +3043 : 32767 +3044 : 0 +3045 : 0 +3046 : 3 +3047 : 0 +3048 : 32767 +3049 : 32767 +3050 : 0 +3051 : 32767 +3052 : 5420624 +3053 : 0 +3054 : 5420624 +3055 : 0 +3056 : 5420624 +3057 : 0 +3058 : 1 +3059 : 0 +3060 : 0 +3061 : 5 +3062 : 1 +3063 : 32767 +3064 : 32767 +3065 : 32767 +3066 : 49 +3067 : 0 +3068 : 1 +3069 : 49 +3070 : 5420552 +3071 : 0 +3072 : 0 +3073 : 0 +3074 : 0 +3075 : 0 +3076 : 79 +3077 : 32767 +3078 : 33 +3079 : 0 +3080 : 5420880 +3081 : 0 +3082 : 5420464 +3083 : 0 +3084 : 5420496 +3085 : 0 +3086 : 129 +3087 : 0 +3088 : 4310928 +3089 : 0 +3090 : 0 +3091 : 49 +3092 : 5473328 +3093 : 0 +3094 : 0 +3095 : 32767 +3096 : 0 +3097 : 0 +3098 : 3 +3099 : 0 +3100 : 32767 +3101 : 32767 +3102 : 0 +3103 : 32767 +3104 : 5420832 +3105 : 0 +3106 : 5420832 +3107 : 0 +3108 : 5420832 +3109 : 0 +3110 : 1 +3111 : 0 +3112 : 0 +3113 : 5 +3114 : 1 +3115 : 32767 +3116 : 32767 +3117 : 32767 +3118 : 49 +3119 : 0 +3120 : 1 +3121 : 49 +3122 : 5420760 +3123 : 0 +3124 : 0 +3125 : 0 +3126 : 0 +3127 : 0 +3128 : 80 +3129 : 32767 +3130 : 33 +3131 : 0 +3132 : 5421088 +3133 : 0 +3134 : 5420672 +3135 : 0 +3136 : 5420704 +3137 : 0 +3138 : 129 +3139 : 0 +3140 : 4310928 +3141 : 0 +3142 : 0 +3143 : 49 +3144 : 5473328 +3145 : 0 +3146 : 0 +3147 : 32767 +3148 : 0 +3149 : 0 +3150 : 3 +3151 : 0 +3152 : 32767 +3153 : 32767 +3154 : 0 +3155 : 32767 +3156 : 5421040 +3157 : 0 +3158 : 5421040 +3159 : 0 +3160 : 5421040 +3161 : 0 +3162 : 1 +3163 : 0 +3164 : 0 +3165 : 5 +3166 : 1 +3167 : 32767 +3168 : 32767 +3169 : 32767 +3170 : 49 +3171 : 0 +3172 : 1 +3173 : 49 +3174 : 5420968 +3175 : 0 +3176 : 0 +3177 : 0 +3178 : 0 +3179 : 0 +3180 : 81 +3181 : 32767 +3182 : 33 +3183 : 0 +3184 : 5421296 +3185 : 0 +3186 : 5420880 +3187 : 0 +3188 : 5420912 +3189 : 0 +3190 : 129 +3191 : 0 +3192 : 4310928 +3193 : 0 +3194 : 0 +3195 : 49 +3196 : 5473328 +3197 : 0 +3198 : 0 +3199 : 32767 +3200 : 0 +3201 : 0 +3202 : 3 +3203 : 0 +3204 : 32767 +3205 : 32767 +3206 : 0 +3207 : 32767 +3208 : 5421248 +3209 : 0 +3210 : 5421248 +3211 : 0 +3212 : 5421248 +3213 : 0 +3214 : 1 +3215 : 0 +3216 : 0 +3217 : 5 +3218 : 1 +3219 : 32767 +3220 : 32767 +3221 : 32767 +3222 : 49 +3223 : 0 +3224 : 1 +3225 : 49 +3226 : 5421176 +3227 : 0 +3228 : 0 +3229 : 0 +3230 : 0 +3231 : 0 +3232 : 82 +3233 : 32767 +3234 : 33 +3235 : 0 +3236 : 5421504 +3237 : 0 +3238 : 5421088 +3239 : 0 +3240 : 5421120 +3241 : 0 +3242 : 129 +3243 : 0 +3244 : 4310928 +3245 : 0 +3246 : 0 +3247 : 49 +3248 : 5473328 +3249 : 0 +3250 : 0 +3251 : 32767 +3252 : 0 +3253 : 0 +3254 : 3 +3255 : 0 +3256 : 32767 +3257 : 32767 +3258 : 0 +3259 : 32767 +3260 : 5421456 +3261 : 0 +3262 : 5421456 +3263 : 0 +3264 : 5421456 +3265 : 0 +3266 : 1 +3267 : 0 +3268 : 0 +3269 : 5 +3270 : 1 +3271 : 32767 +3272 : 32767 +3273 : 32767 +3274 : 49 +3275 : 0 +3276 : 1 +3277 : 49 +3278 : 5421384 +3279 : 0 +3280 : 0 +3281 : 0 +3282 : 0 +3283 : 0 +3284 : 83 +3285 : 32767 +3286 : 33 +3287 : 0 +3288 : 5421712 +3289 : 0 +3290 : 5421296 +3291 : 0 +3292 : 5421328 +3293 : 0 +3294 : 129 +3295 : 0 +3296 : 4310928 +3297 : 0 +3298 : 0 +3299 : 49 +3300 : 5473328 +3301 : 0 +3302 : 0 +3303 : 32767 +3304 : 0 +3305 : 0 +3306 : 3 +3307 : 0 +3308 : 32767 +3309 : 32767 +3310 : 0 +3311 : 32767 +3312 : 5421664 +3313 : 0 +3314 : 5421664 +3315 : 0 +3316 : 5421664 +3317 : 0 +3318 : 1 +3319 : 0 +3320 : 0 +3321 : 5 +3322 : 1 +3323 : 32767 +3324 : 32767 +3325 : 32767 +3326 : 49 +3327 : 0 +3328 : 1 +3329 : 49 +3330 : 5421592 +3331 : 0 +3332 : 0 +3333 : 0 +3334 : 0 +3335 : 0 +3336 : 84 +3337 : 32767 +3338 : 33 +3339 : 0 +3340 : 5421920 +3341 : 0 +3342 : 5421504 +3343 : 0 +3344 : 5421536 +3345 : 0 +3346 : 129 +3347 : 0 +3348 : 4310928 +3349 : 0 +3350 : 0 +3351 : 49 +3352 : 5473328 +3353 : 0 +3354 : 0 +3355 : 32767 +3356 : 0 +3357 : 0 +3358 : 3 +3359 : 0 +3360 : 32767 +3361 : 32767 +3362 : 0 +3363 : 32767 +3364 : 5421872 +3365 : 0 +3366 : 5421872 +3367 : 0 +3368 : 5421872 +3369 : 0 +3370 : 1 +3371 : 0 +3372 : 0 +3373 : 5 +3374 : 1 +3375 : 32767 +3376 : 32767 +3377 : 32767 +3378 : 49 +3379 : 0 +3380 : 1 +3381 : 49 +3382 : 5421800 +3383 : 0 +3384 : 0 +3385 : 0 +3386 : 0 +3387 : 0 +3388 : 85 +3389 : 32767 +3390 : 33 +3391 : 0 +3392 : 5422128 +3393 : 0 +3394 : 5421712 +3395 : 0 +3396 : 5421744 +3397 : 0 +3398 : 129 +3399 : 0 +3400 : 4310928 +3401 : 0 +3402 : 0 +3403 : 49 +3404 : 5473328 +3405 : 0 +3406 : 0 +3407 : 32767 +3408 : 0 +3409 : 0 +3410 : 3 +3411 : 0 +3412 : 32767 +3413 : 32767 +3414 : 0 +3415 : 32767 +3416 : 5422080 +3417 : 0 +3418 : 5422080 +3419 : 0 +3420 : 5422080 +3421 : 0 +3422 : 1 +3423 : 0 +3424 : 0 +3425 : 5 +3426 : 1 +3427 : 32767 +3428 : 32767 +3429 : 32767 +3430 : 49 +3431 : 0 +3432 : 1 +3433 : 49 +3434 : 5422008 +3435 : 0 +3436 : 0 +3437 : 0 +3438 : 0 +3439 : 0 +3440 : 86 +3441 : 32767 +3442 : 33 +3443 : 0 +3444 : 5422336 +3445 : 0 +3446 : 5421920 +3447 : 0 +3448 : 5421952 +3449 : 0 +3450 : 129 +3451 : 0 +3452 : 4310928 +3453 : 0 +3454 : 0 +3455 : 49 +3456 : 5473328 +3457 : 0 +3458 : 0 +3459 : 32767 +3460 : 0 +3461 : 0 +3462 : 3 +3463 : 0 +3464 : 32767 +3465 : 32767 +3466 : 0 +3467 : 32767 +3468 : 5422288 +3469 : 0 +3470 : 5422288 +3471 : 0 +3472 : 5422288 +3473 : 0 +3474 : 1 +3475 : 0 +3476 : 0 +3477 : 5 +3478 : 1 +3479 : 32767 +3480 : 32767 +3481 : 32767 +3482 : 49 +3483 : 0 +3484 : 1 +3485 : 49 +3486 : 5422216 +3487 : 0 +3488 : 0 +3489 : 0 +3490 : 0 +3491 : 0 +3492 : 87 +3493 : 32767 +3494 : 33 +3495 : 0 +3496 : 5422544 +3497 : 0 +3498 : 5422128 +3499 : 0 +3500 : 5422160 +3501 : 0 +3502 : 129 +3503 : 0 +3504 : 4310928 +3505 : 0 +3506 : 0 +3507 : 49 +3508 : 5473328 +3509 : 0 +3510 : 0 +3511 : 32767 +3512 : 0 +3513 : 0 +3514 : 3 +3515 : 0 +3516 : 32767 +3517 : 32767 +3518 : 0 +3519 : 32767 +3520 : 5422496 +3521 : 0 +3522 : 5422496 +3523 : 0 +3524 : 5422496 +3525 : 0 +3526 : 1 +3527 : 0 +3528 : 0 +3529 : 5 +3530 : 1 +3531 : 32767 +3532 : 32767 +3533 : 32767 +3534 : 49 +3535 : 0 +3536 : 1 +3537 : 49 +3538 : 5422424 +3539 : 0 +3540 : 0 +3541 : 0 +3542 : 0 +3543 : 0 +3544 : 88 +3545 : 32767 +3546 : 33 +3547 : 0 +3548 : 5422752 +3549 : 0 +3550 : 5422336 +3551 : 0 +3552 : 5422368 +3553 : 0 +3554 : 129 +3555 : 0 +3556 : 4310928 +3557 : 0 +3558 : 0 +3559 : 49 +3560 : 5473328 +3561 : 0 +3562 : 0 +3563 : 32767 +3564 : 0 +3565 : 0 +3566 : 3 +3567 : 0 +3568 : 32767 +3569 : 32767 +3570 : 0 +3571 : 32767 +3572 : 5422704 +3573 : 0 +3574 : 5422704 +3575 : 0 +3576 : 5422704 +3577 : 0 +3578 : 1 +3579 : 0 +3580 : 0 +3581 : 5 +3582 : 1 +3583 : 32767 +3584 : 32767 +3585 : 32767 +3586 : 49 +3587 : 0 +3588 : 1 +3589 : 49 +3590 : 5422632 +3591 : 0 +3592 : 0 +3593 : 0 +3594 : 0 +3595 : 0 +3596 : 89 +3597 : 32767 +3598 : 33 +3599 : 0 +3600 : 5422960 +3601 : 0 +3602 : 5422544 +3603 : 0 +3604 : 5422576 +3605 : 0 +3606 : 129 +3607 : 0 +3608 : 4310928 +3609 : 0 +3610 : 0 +3611 : 49 +3612 : 5473328 +3613 : 0 +3614 : 0 +3615 : 32767 +3616 : 0 +3617 : 0 +3618 : 3 +3619 : 0 +3620 : 32767 +3621 : 32767 +3622 : 0 +3623 : 32767 +3624 : 5422912 +3625 : 0 +3626 : 5422912 +3627 : 0 +3628 : 5422912 +3629 : 0 +3630 : 1 +3631 : 0 +3632 : 0 +3633 : 5 +3634 : 1 +3635 : 32767 +3636 : 32767 +3637 : 32767 +3638 : 49 +3639 : 0 +3640 : 1 +3641 : 49 +3642 : 5422840 +3643 : 0 +3644 : 0 +3645 : 0 +3646 : 0 +3647 : 0 +3648 : 90 +3649 : 32767 +3650 : 33 +3651 : 0 +3652 : 5614848 +3653 : 0 +3654 : 5422752 +3655 : 0 +3656 : 5422784 +3657 : 0 +3658 : 49 +3659 : 0 +3660 : 1 +3661 : 49 +3662 : 5616896 +3663 : 0 +3664 : 5617520 +3665 : 0 +3666 : 5423040 +3667 : 0 +3668 : 5373979 +3669 : 0 +3670 : 65 +3671 : 0 +3672 : 0 +3673 : 49 +3674 : 5422992 +3675 : 0 +3676 : 5617424 +3677 : 0 +3678 : 5617328 +3679 : 0 +3680 : 62 +3681 : 0 +3682 : 5415040 +3683 : 0 +3684 : 64 +3685 : 0 +3686 : 39617 +3687 : 0 +3688 : 65536 +3689 : 1 +3690 : 5898240 +3691 : 90 +3692 : 131073 +3693 : 65538 +3694 : 196609 +3695 : 65539 +3696 : 196610 +3697 : 131075 +3698 : 262146 +3699 : 131076 +3700 : 262147 +3701 : 196612 +3702 : 327683 +3703 : 196613 +3704 : 327684 +3705 : 262149 +3706 : 393220 +3707 : 262150 +3708 : 393221 +3709 : 327686 +3710 : 458757 +3711 : 327687 +3712 : 458758 +3713 : 393223 +3714 : 524294 +3715 : 393224 +3716 : 524295 +3717 : 458760 +3718 : 589831 +3719 : 458761 +3720 : 589832 +3721 : 524297 +3722 : 655368 +3723 : 524298 +3724 : 655369 +3725 : 589834 +3726 : 720905 +3727 : 589835 +3728 : 720906 +3729 : 655371 +3730 : 786442 +3731 : 655372 +3732 : 786443 +3733 : 720908 +3734 : 851979 +3735 : 720909 +3736 : 851980 +3737 : 786445 +3738 : 917516 +3739 : 786446 +3740 : 917517 +3741 : 851982 +3742 : 983053 +3743 : 851983 +3744 : 983054 +3745 : 917519 +3746 : 1048590 +3747 : 917520 +3748 : 1048591 +3749 : 983056 +3750 : 1114127 +3751 : 983057 +3752 : 1114128 +3753 : 1048593 +3754 : 1179664 +3755 : 1048594 +3756 : 1179665 +3757 : 1114130 +3758 : 1245201 +3759 : 1114131 +3760 : 1245202 +3761 : 1179667 +3762 : 1310738 +3763 : 1179668 +3764 : 1310739 +3765 : 1245204 +3766 : 1376275 +3767 : 1245205 +3768 : 1376276 +3769 : 1310741 +3770 : 1441812 +3771 : 1310742 +3772 : 1441813 +3773 : 1376278 +3774 : 1507349 +3775 : 1376279 +3776 : 1507350 +3777 : 1441815 +3778 : 1572886 +3779 : 1441816 +3780 : 1572887 +3781 : 1507352 +3782 : 1638423 +3783 : 1507353 +3784 : 1638424 +3785 : 1572889 +3786 : 1703960 +3787 : 1572890 +3788 : 1703961 +3789 : 1638426 +3790 : 1769497 +3791 : 1638427 +3792 : 1769498 +3793 : 1703963 +3794 : 1835034 +3795 : 1703964 +3796 : 1835035 +3797 : 1769500 +3798 : 1900571 +3799 : 1769501 +3800 : 1900572 +3801 : 1835037 +3802 : 1966108 +3803 : 1835038 +3804 : 1966109 +3805 : 1900574 +3806 : 2031645 +3807 : 1900575 +3808 : 2031646 +3809 : 1966111 +3810 : 2097182 +3811 : 1966112 +3812 : 2097183 +3813 : 2031648 +3814 : 2162719 +3815 : 2031649 +3816 : 2162720 +3817 : 2097185 +3818 : 2228256 +3819 : 2097186 +3820 : 2228257 +3821 : 2162722 +3822 : 2293793 +3823 : 2162723 +3824 : 2293794 +3825 : 2228259 +3826 : 2359330 +3827 : 2228260 +3828 : 2359331 +3829 : 2293796 +3830 : 2424867 +3831 : 2293797 +3832 : 2424868 +3833 : 2359333 +3834 : 2490404 +3835 : 2359334 +3836 : 2490405 +3837 : 2424870 +3838 : 2555941 +3839 : 2424871 +3840 : 2555942 +3841 : 2490407 +3842 : 2621478 +3843 : 2490408 +3844 : 2621479 +3845 : 2555944 +3846 : 2687015 +3847 : 2555945 +3848 : 2687016 +3849 : 2621481 +3850 : 2752552 +3851 : 2621482 +3852 : 2752553 +3853 : 2687018 +3854 : 2818089 +3855 : 2687019 +3856 : 2818090 +3857 : 2752555 +3858 : 2883626 +3859 : 2752556 +3860 : 2883627 +3861 : 2818092 +3862 : 2949163 +3863 : 2818093 +3864 : 2949164 +3865 : 2883629 +3866 : 3014700 +3867 : 2883630 +3868 : 3014701 +3869 : 2949166 +3870 : 3080237 +3871 : 2949167 +3872 : 3080238 +3873 : 3014703 +3874 : 3145774 +3875 : 3014704 +3876 : 3145775 +3877 : 3080240 +3878 : 3211311 +3879 : 3080241 +3880 : 3211312 +3881 : 3145777 +3882 : 3276848 +3883 : 3145778 +3884 : 3276849 +3885 : 3211314 +3886 : 3342385 +3887 : 3211315 +3888 : 3342386 +3889 : 3276851 +3890 : 3407922 +3891 : 3276852 +3892 : 3407923 +3893 : 3342388 +3894 : 3473459 +3895 : 3342389 +3896 : 3473460 +3897 : 3407925 +3898 : 3538996 +3899 : 3407926 +3900 : 3538997 +3901 : 3473462 +3902 : 3604533 +3903 : 3473463 +3904 : 3604534 +3905 : 3538999 +3906 : 3670070 +3907 : 3539000 +3908 : 2424887 +3909 : 3604517 +3910 : 3735607 +3911 : 3604537 +3912 : 3735608 +3913 : 3670073 +3914 : 3801144 +3915 : 3670074 +3916 : 3801145 +3917 : 3735610 +3918 : 3866681 +3919 : 3735611 +3920 : 3866682 +3921 : 3801147 +3922 : 3932218 +3923 : 3801148 +3924 : 3932219 +3925 : 3866684 +3926 : 3997755 +3927 : 3866685 +3928 : 3997756 +3929 : 3932221 +3930 : 4063292 +3931 : 3932222 +3932 : 4063293 +3933 : 3997758 +3934 : 4128829 +3935 : 3997759 +3936 : 4128830 +3937 : 4063295 +3938 : 4194366 +3939 : 4063296 +3940 : 4194367 +3941 : 4128832 +3942 : 4259903 +3943 : 4128833 +3944 : 4259904 +3945 : 4194369 +3946 : 4325440 +3947 : 4194370 +3948 : 4325441 +3949 : 4259906 +3950 : 4390977 +3951 : 4259907 +3952 : 4390978 +3953 : 4325443 +3954 : 4456514 +3955 : 4325444 +3956 : 4456515 +3957 : 4390980 +3958 : 4522051 +3959 : 4390981 +3960 : 4522052 +3961 : 4456517 +3962 : 4587588 +3963 : 4456518 +3964 : 4587589 +3965 : 4522054 +3966 : 4653125 +3967 : 4522055 +3968 : 5636166 +3969 : 4587606 +3970 : 4718662 +3971 : 4587592 +3972 : 4718663 +3973 : 4653128 +3974 : 4784199 +3975 : 4653129 +3976 : 4784200 +3977 : 4718665 +3978 : 4849736 +3979 : 4718666 +3980 : 4849737 +3981 : 4784202 +3982 : 4915273 +3983 : 4784203 +3984 : 4915274 +3985 : 4849739 +3986 : 4980810 +3987 : 4849740 +3988 : 4980811 +3989 : 4915276 +3990 : 5046347 +3991 : 4915277 +3992 : 5046348 +3993 : 4980813 +3994 : 5111884 +3995 : 4980814 +3996 : 5111885 +3997 : 5046350 +3998 : 5177421 +3999 : 5046351 +4000 : 5177422 +4001 : 5111887 +4002 : 5242958 +4003 : 5111888 +4004 : 5242959 +4005 : 5177424 +4006 : 5308495 +4007 : 5177425 +4008 : 5308496 +4009 : 5242961 +4010 : 5374032 +4011 : 5242962 +4012 : 5374033 +4013 : 5308498 +4014 : 5439569 +4015 : 5308499 +4016 : 5439570 +4017 : 5374035 +4018 : 5505106 +4019 : 5374036 +4020 : 5505107 +4021 : 5439572 +4022 : 5570643 +4023 : 5439573 +4024 : 5570644 +4025 : 5505109 +4026 : 5636180 +4027 : 5505110 +4028 : 5636181 +4029 : 5570646 +4030 : 5701717 +4031 : 5570647 +4032 : 5701718 +4033 : 5636183 +4034 : 5767254 +4035 : 5636184 +4036 : 5767255 +4037 : 5701720 +4038 : 5832791 +4039 : 5701721 +4040 : 5832792 +4041 : 5767257 +4042 : 5898328 +4043 : 5767258 +4044 : 5898329 +4045 : 5832794 +4046 : 5963865 +4047 : 5832795 +4048 : 5963866 +4049 : 5898331 +4050 : 6029402 +4051 : 5898332 +4052 : 6029403 +4053 : 5963868 +4054 : 6094939 +4055 : 5963869 +4056 : 6094940 +4057 : 6029405 +4058 : 6160476 +4059 : 6029406 +4060 : 6160477 +4061 : 6094942 +4062 : 6226013 +4063 : 6094943 +4064 : 6226014 +4065 : 6160479 +4066 : 6291550 +4067 : 6160480 +4068 : 6291551 +4069 : 6226016 +4070 : 6357087 +4071 : 6226017 +4072 : 6357088 +4073 : 6291553 +4074 : 6422624 +4075 : 6291554 +4076 : 6422625 +4077 : 6357090 +4078 : 6488161 +4079 : 6357091 +4080 : 6488162 +4081 : 6422627 +4082 : 98 +4083 : 6422528 +4084 : 99 +4085 : 6488064 +4086 : 65635 +4087 : 6488065 +4088 : 0 +4089 : 0 +4090 : 0 +4091 : 0 +4092 : 0 +4093 : 0 +4094 : 0 +4095 : 0 +4096 : 0 +4097 : 0 +4098 : 0 +4099 : 0 +4100 : 0 +4101 : 0 +4102 : 0 +4103 : 0 +4104 : 0 +4105 : 0 +4106 : 0 +4107 : 0 +4108 : 0 +4109 : 0 +4110 : 0 +4111 : 0 +4112 : 0 +4113 : 0 +4114 : 0 +4115 : 0 +4116 : 0 +4117 : 0 +4118 : 0 +4119 : 0 +4120 : 0 +4121 : 0 +4122 : 0 +4123 : 0 +4124 : 0 +4125 : 0 +4126 : 0 +4127 : 0 +4128 : 0 +4129 : 0 +4130 : 0 +4131 : 0 +4132 : 0 +4133 : 0 +4134 : 0 +4135 : 0 +4136 : 0 +4137 : 0 +4138 : 0 +4139 : 0 +4140 : 0 +4141 : 0 +4142 : 0 +4143 : 0 +4144 : 0 +4145 : 0 +4146 : 0 +4147 : 0 +4148 : 0 +4149 : 0 +4150 : 0 +4151 : 0 +4152 : 0 +4153 : 0 +4154 : 0 +4155 : 0 +4156 : 0 +4157 : 0 +4158 : 0 +4159 : 0 +4160 : 0 +4161 : 0 +4162 : 0 +4163 : 0 +4164 : 0 +4165 : 0 +4166 : 0 +4167 : 0 +4168 : 0 +4169 : 0 +4170 : 0 +4171 : 0 +4172 : 0 +4173 : 0 +4174 : 0 +4175 : 0 +4176 : 0 +4177 : 0 +4178 : 0 +4179 : 0 +4180 : 0 +4181 : 0 +4182 : 0 +4183 : 0 +4184 : 0 +4185 : 0 +4186 : 0 +4187 : 0 +4188 : 0 +4189 : 0 +4190 : 0 +4191 : 0 +4192 : 0 +4193 : 0 +4194 : 0 +4195 : 0 +4196 : 0 +4197 : 0 +4198 : 0 +4199 : 0 +4200 : 0 +4201 : 0 +4202 : 0 +4203 : 0 +4204 : 0 +4205 : 0 +4206 : 0 +4207 : 0 +4208 : 0 +4209 : 0 +4210 : 0 +4211 : 0 +4212 : 0 +4213 : 0 +4214 : 0 +4215 : 0 +4216 : 0 +4217 : 0 +4218 : 0 +4219 : 0 +4220 : 0 +4221 : 0 +4222 : 0 +4223 : 0 +4224 : 0 +4225 : 0 +4226 : 0 +4227 : 0 +4228 : 0 +4229 : 0 +4230 : 0 +4231 : 0 +4232 : 0 +4233 : 0 +4234 : 0 +4235 : 0 +4236 : 0 +4237 : 0 +4238 : 0 +4239 : 0 +4240 : 0 +4241 : 0 +4242 : 0 +4243 : 0 +4244 : 0 +4245 : 0 +4246 : 0 +4247 : 0 +4248 : 0 +4249 : 0 +4250 : 0 +4251 : 0 +4252 : 0 +4253 : 0 +4254 : 0 +4255 : 0 +4256 : 0 +4257 : 0 +4258 : 0 +4259 : 0 +4260 : 0 +4261 : 0 +4262 : 0 +4263 : 0 +4264 : 0 +4265 : 0 +4266 : 0 +4267 : 0 +4268 : 0 +4269 : 0 +4270 : 0 +4271 : 0 +4272 : 0 +4273 : 0 +4274 : 0 +4275 : 0 +4276 : 0 +4277 : 0 +4278 : 0 +4279 : 0 +4280 : 0 +4281 : 0 +4282 : 0 +4283 : 0 +4284 : 0 +4285 : 0 +4286 : 0 +4287 : 0 +4288 : 0 +4289 : 0 +4290 : 0 +4291 : 0 +4292 : 0 +4293 : 0 +4294 : 0 +4295 : 0 +4296 : 0 +4297 : 0 +4298 : 0 +4299 : 0 +4300 : 0 +4301 : 0 +4302 : 0 +4303 : 0 +4304 : 0 +4305 : 0 +4306 : 0 +4307 : 0 +4308 : 0 +4309 : 0 +4310 : 0 +4311 : 0 +4312 : 0 +4313 : 0 +4314 : 0 +4315 : 0 +4316 : 0 +4317 : 0 +4318 : 0 +4319 : 0 +4320 : 0 +4321 : 0 +4322 : 0 +4323 : 0 +4324 : 0 +4325 : 0 +4326 : 0 +4327 : 0 +4328 : 0 +4329 : 0 +4330 : 0 +4331 : 0 +4332 : 0 +4333 : 0 +4334 : 0 +4335 : 0 +4336 : 0 +4337 : 0 +4338 : 0 +4339 : 0 +4340 : 0 +4341 : 0 +4342 : 0 +4343 : 0 +4344 : 0 +4345 : 0 +4346 : 0 +4347 : 0 +4348 : 0 +4349 : 0 +4350 : 0 +4351 : 0 +4352 : 0 +4353 : 0 +4354 : 0 +4355 : 0 +4356 : 0 +4357 : 0 +4358 : 0 +4359 : 0 +4360 : 0 +4361 : 0 +4362 : 0 +4363 : 0 +4364 : 0 +4365 : 0 +4366 : 0 +4367 : 0 +4368 : 0 +4369 : 0 +4370 : 0 +4371 : 0 +4372 : 0 +4373 : 0 +4374 : 0 +4375 : 0 +4376 : 0 +4377 : 0 +4378 : 0 +4379 : 0 +4380 : 0 +4381 : 0 +4382 : 0 +4383 : 0 +4384 : 0 +4385 : 0 +4386 : 0 +4387 : 0 +4388 : 0 +4389 : 0 +4390 : 0 +4391 : 0 +4392 : 0 +4393 : 0 +4394 : 0 +4395 : 0 +4396 : 0 +4397 : 0 +4398 : 0 +4399 : 0 +4400 : 0 +4401 : 0 +4402 : 0 +4403 : 0 +4404 : 0 +4405 : 0 +4406 : 0 +4407 : 0 +4408 : 0 +4409 : 0 +4410 : 0 +4411 : 0 +4412 : 0 +4413 : 0 +4414 : 0 +4415 : 0 +4416 : 0 +4417 : 0 +4418 : 0 +4419 : 0 +4420 : 0 +4421 : 0 +4422 : 0 +4423 : 0 +4424 : 0 +4425 : 0 +4426 : 0 +4427 : 0 +4428 : 0 +4429 : 0 +4430 : 0 +4431 : 0 +4432 : 0 +4433 : 0 +4434 : 0 +4435 : 0 +4436 : 0 +4437 : 0 +4438 : 0 +4439 : 0 +4440 : 0 +4441 : 0 +4442 : 0 +4443 : 0 +4444 : 0 +4445 : 0 +4446 : 0 +4447 : 0 +4448 : 0 +4449 : 0 +4450 : 0 +4451 : 0 +4452 : 0 +4453 : 0 +4454 : 0 +4455 : 0 +4456 : 0 +4457 : 0 +4458 : 0 +4459 : 0 +4460 : 0 +4461 : 0 +4462 : 0 +4463 : 0 +4464 : 0 +4465 : 0 +4466 : 0 +4467 : 0 +4468 : 0 +4469 : 0 +4470 : 0 +4471 : 0 +4472 : 0 +4473 : 0 +4474 : 0 +4475 : 0 +4476 : 0 +4477 : 0 +4478 : 0 +4479 : 0 +4480 : 0 +4481 : 0 +4482 : 0 +4483 : 0 +4484 : 0 +4485 : 0 +4486 : 0 +4487 : 0 +4488 : 0 +4489 : 0 +4490 : 0 +4491 : 0 +4492 : 0 +4493 : 0 +4494 : 0 +4495 : 0 +4496 : 0 +4497 : 0 +4498 : 0 +4499 : 0 +4500 : 0 +4501 : 0 +4502 : 0 +4503 : 0 +4504 : 0 +4505 : 0 +4506 : 0 +4507 : 0 +4508 : 0 +4509 : 0 +4510 : 0 +4511 : 0 +4512 : 0 +4513 : 0 +4514 : 0 +4515 : 0 +4516 : 0 +4517 : 0 +4518 : 0 +4519 : 0 +4520 : 0 +4521 : 0 +4522 : 0 +4523 : 0 +4524 : 0 +4525 : 0 +4526 : 0 +4527 : 0 +4528 : 0 +4529 : 0 +4530 : 0 +4531 : 0 +4532 : 0 +4533 : 0 +4534 : 0 +4535 : 0 +4536 : 0 +4537 : 0 +4538 : 0 +4539 : 0 +4540 : 0 +4541 : 0 +4542 : 0 +4543 : 0 +4544 : 0 +4545 : 0 +4546 : 0 +4547 : 0 +4548 : 0 +4549 : 0 +4550 : 0 +4551 : 0 +4552 : 0 +4553 : 0 +4554 : 0 +4555 : 0 +4556 : 0 +4557 : 0 +4558 : 0 +4559 : 0 +4560 : 0 +4561 : 0 +4562 : 0 +4563 : 0 +4564 : 0 +4565 : 0 +4566 : 0 +4567 : 0 +4568 : 0 +4569 : 0 +4570 : 0 +4571 : 0 +4572 : 0 +4573 : 0 +4574 : 0 +4575 : 0 +4576 : 0 +4577 : 0 +4578 : 0 +4579 : 0 +4580 : 0 +4581 : 0 +4582 : 0 +4583 : 0 +4584 : 0 +4585 : 0 +4586 : 0 +4587 : 0 +4588 : 0 +4589 : 0 +4590 : 0 +4591 : 0 +4592 : 0 +4593 : 0 +4594 : 0 +4595 : 0 +4596 : 0 +4597 : 0 +4598 : 0 +4599 : 0 +4600 : 0 +4601 : 0 +4602 : 0 +4603 : 0 +4604 : 0 +4605 : 0 +4606 : 0 +4607 : 0 +4608 : 0 +4609 : 0 +4610 : 0 +4611 : 0 +4612 : 0 +4613 : 0 +4614 : 0 +4615 : 0 +4616 : 0 +4617 : 0 +4618 : 0 +4619 : 0 +4620 : 0 +4621 : 0 +4622 : 0 +4623 : 0 +4624 : 0 +4625 : 0 +4626 : 0 +4627 : 0 +4628 : 0 +4629 : 0 +4630 : 0 +4631 : 0 +4632 : 0 +4633 : 0 +4634 : 0 +4635 : 0 +4636 : 0 +4637 : 0 +4638 : 0 +4639 : 0 +4640 : 0 +4641 : 0 +4642 : 0 +4643 : 0 +4644 : 0 +4645 : 0 +4646 : 0 +4647 : 0 +4648 : 0 +4649 : 0 +4650 : 0 +4651 : 0 +4652 : 0 +4653 : 0 +4654 : 0 +4655 : 0 +4656 : 0 +4657 : 0 +4658 : 0 +4659 : 0 +4660 : 0 +4661 : 0 +4662 : 0 +4663 : 0 +4664 : 0 +4665 : 0 +4666 : 0 +4667 : 0 +4668 : 0 +4669 : 0 +4670 : 0 +4671 : 0 +4672 : 0 +4673 : 0 +4674 : 0 +4675 : 0 +4676 : 0 +4677 : 0 +4678 : 0 +4679 : 0 +4680 : 0 +4681 : 0 +4682 : 0 +4683 : 0 +4684 : 0 +4685 : 0 +4686 : 0 +4687 : 0 +4688 : 0 +4689 : 0 +4690 : 0 +4691 : 0 +4692 : 0 +4693 : 0 +4694 : 0 +4695 : 0 +4696 : 0 +4697 : 0 +4698 : 0 +4699 : 0 +4700 : 0 +4701 : 0 +4702 : 0 +4703 : 0 +4704 : 0 +4705 : 0 +4706 : 0 +4707 : 0 +4708 : 0 +4709 : 0 +4710 : 0 +4711 : 0 +4712 : 0 +4713 : 0 +4714 : 0 +4715 : 0 +4716 : 0 +4717 : 0 +4718 : 0 +4719 : 0 +4720 : 0 +4721 : 0 +4722 : 0 +4723 : 0 +4724 : 0 +4725 : 0 +4726 : 0 +4727 : 0 +4728 : 0 +4729 : 0 +4730 : 0 +4731 : 0 +4732 : 0 +4733 : 0 +4734 : 0 +4735 : 0 +4736 : 0 +4737 : 0 +4738 : 0 +4739 : 0 +4740 : 0 +4741 : 0 +4742 : 0 +4743 : 0 +4744 : 0 +4745 : 0 +4746 : 0 +4747 : 0 +4748 : 0 +4749 : 0 +4750 : 0 +4751 : 0 +4752 : 0 +4753 : 0 +4754 : 0 +4755 : 0 +4756 : 0 +4757 : 0 +4758 : 0 +4759 : 0 +4760 : 0 +4761 : 0 +4762 : 0 +4763 : 0 +4764 : 0 +4765 : 0 +4766 : 0 +4767 : 0 +4768 : 0 +4769 : 0 +4770 : 0 +4771 : 0 +4772 : 0 +4773 : 0 +4774 : 0 +4775 : 0 +4776 : 0 +4777 : 0 +4778 : 0 +4779 : 0 +4780 : 0 +4781 : 0 +4782 : 0 +4783 : 0 +4784 : 0 +4785 : 0 +4786 : 0 +4787 : 0 +4788 : 0 +4789 : 0 +4790 : 0 +4791 : 0 +4792 : 0 +4793 : 0 +4794 : 0 +4795 : 0 +4796 : 0 +4797 : 0 +4798 : 0 +4799 : 0 +4800 : 0 +4801 : 0 +4802 : 0 +4803 : 0 +4804 : 0 +4805 : 0 +4806 : 0 +4807 : 0 +4808 : 0 +4809 : 0 +4810 : 0 +4811 : 0 +4812 : 0 +4813 : 0 +4814 : 0 +4815 : 0 +4816 : 0 +4817 : 0 +4818 : 0 +4819 : 0 +4820 : 0 +4821 : 0 +4822 : 0 +4823 : 0 +4824 : 0 +4825 : 0 +4826 : 0 +4827 : 0 +4828 : 0 +4829 : 0 +4830 : 0 +4831 : 0 +4832 : 0 +4833 : 0 +4834 : 0 +4835 : 0 +4836 : 0 +4837 : 0 +4838 : 0 +4839 : 0 +4840 : 0 +4841 : 0 +4842 : 0 +4843 : 0 +4844 : 0 +4845 : 0 +4846 : 0 +4847 : 0 +4848 : 0 +4849 : 0 +4850 : 0 +4851 : 0 +4852 : 0 +4853 : 0 +4854 : 0 +4855 : 0 +4856 : 0 +4857 : 0 +4858 : 0 +4859 : 0 +4860 : 0 +4861 : 0 +4862 : 0 +4863 : 0 +4864 : 0 +4865 : 0 +4866 : 0 +4867 : 0 +4868 : 0 +4869 : 0 +4870 : 0 +4871 : 0 +4872 : 0 +4873 : 0 +4874 : 0 +4875 : 0 +4876 : 0 +4877 : 0 +4878 : 0 +4879 : 0 +4880 : 0 +4881 : 0 +4882 : 0 +4883 : 0 +4884 : 0 +4885 : 0 +4886 : 0 +4887 : 0 +4888 : 0 +4889 : 0 +4890 : 0 +4891 : 0 +4892 : 0 +4893 : 0 +4894 : 0 +4895 : 0 +4896 : 0 +4897 : 0 +4898 : 0 +4899 : 0 +4900 : 0 +4901 : 0 +4902 : 0 +4903 : 0 +4904 : 0 +4905 : 0 +4906 : 0 +4907 : 0 +4908 : 0 +4909 : 0 +4910 : 0 +4911 : 0 +4912 : 0 +4913 : 0 +4914 : 0 +4915 : 0 +4916 : 0 +4917 : 0 +4918 : 0 +4919 : 0 +4920 : 0 +4921 : 0 +4922 : 0 +4923 : 0 +4924 : 0 +4925 : 0 +4926 : 0 +4927 : 0 +4928 : 0 +4929 : 0 +4930 : 0 +4931 : 0 +4932 : 0 +4933 : 0 +4934 : 0 +4935 : 0 +4936 : 0 +4937 : 0 +4938 : 0 +4939 : 0 +4940 : 0 +4941 : 0 +4942 : 0 +4943 : 0 +4944 : 0 +4945 : 0 +4946 : 0 +4947 : 0 +4948 : 0 +4949 : 0 +4950 : 0 +4951 : 0 +4952 : 0 +4953 : 0 +4954 : 0 +4955 : 0 +4956 : 0 +4957 : 0 +4958 : 0 +4959 : 0 +4960 : 0 +4961 : 0 +4962 : 0 +4963 : 0 +4964 : 0 +4965 : 0 +4966 : 0 +4967 : 0 +4968 : 0 +4969 : 0 +4970 : 0 +4971 : 0 +4972 : 0 +4973 : 0 +4974 : 0 +4975 : 0 +4976 : 0 +4977 : 0 +4978 : 0 +4979 : 0 +4980 : 0 +4981 : 0 +4982 : 0 +4983 : 0 +4984 : 0 +4985 : 0 +4986 : 0 +4987 : 0 +4988 : 0 +4989 : 0 +4990 : 0 +4991 : 0 +4992 : 0 +4993 : 0 +4994 : 0 +4995 : 0 +4996 : 0 +4997 : 0 +4998 : 0 +4999 : 0 +5000 : 0 +5001 : 0 +5002 : 0 +5003 : 0 +5004 : 0 +5005 : 0 +5006 : 0 +5007 : 0 +5008 : 0 +5009 : 0 +5010 : 0 +5011 : 0 +5012 : 0 +5013 : 0 +5014 : 0 +5015 : 0 +5016 : 0 +5017 : 0 +5018 : 0 +5019 : 0 +5020 : 0 +5021 : 0 +5022 : 0 +5023 : 0 +5024 : 0 +5025 : 0 +5026 : 0 +5027 : 0 +5028 : 0 +5029 : 0 +5030 : 0 +5031 : 0 +5032 : 0 +5033 : 0 +5034 : 0 +5035 : 0 +5036 : 0 +5037 : 0 +5038 : 0 +5039 : 0 +5040 : 0 +5041 : 0 +5042 : 0 +5043 : 0 +5044 : 0 +5045 : 0 +5046 : 0 +5047 : 0 +5048 : 0 +5049 : 0 +5050 : 0 +5051 : 0 +5052 : 0 +5053 : 0 +5054 : 0 +5055 : 0 +5056 : 0 +5057 : 0 +5058 : 0 +5059 : 0 +5060 : 0 +5061 : 0 +5062 : 0 +5063 : 0 +5064 : 0 +5065 : 0 +5066 : 0 +5067 : 0 +5068 : 0 +5069 : 0 +5070 : 0 +5071 : 0 +5072 : 0 +5073 : 0 +5074 : 0 +5075 : 0 +5076 : 0 +5077 : 0 +5078 : 0 +5079 : 0 +5080 : 0 +5081 : 0 +5082 : 0 +5083 : 0 +5084 : 0 +5085 : 0 +5086 : 0 +5087 : 0 +5088 : 0 +5089 : 0 +5090 : 0 +5091 : 0 +5092 : 0 +5093 : 0 +5094 : 0 +5095 : 0 +5096 : 0 +5097 : 0 +5098 : 0 +5099 : 0 +5100 : 0 +5101 : 0 +5102 : 0 +5103 : 0 +5104 : 0 +5105 : 0 +5106 : 0 +5107 : 0 +5108 : 0 +5109 : 0 +5110 : 0 +5111 : 0 +5112 : 0 +5113 : 0 +5114 : 0 +5115 : 0 +5116 : 0 +5117 : 0 +5118 : 0 +5119 : 0 +5120 : 0 +5121 : 0 +5122 : 0 +5123 : 0 +5124 : 0 +5125 : 0 +5126 : 0 +5127 : 0 +5128 : 0 +5129 : 0 +5130 : 0 +5131 : 0 +5132 : 0 +5133 : 0 +5134 : 0 +5135 : 0 +5136 : 0 +5137 : 0 +5138 : 0 +5139 : 0 +5140 : 0 +5141 : 0 +5142 : 0 +5143 : 0 +5144 : 0 +5145 : 0 +5146 : 0 +5147 : 0 +5148 : 0 +5149 : 0 +5150 : 0 +5151 : 0 +5152 : 0 +5153 : 0 +5154 : 0 +5155 : 0 +5156 : 0 +5157 : 0 +5158 : 0 +5159 : 0 +5160 : 0 +5161 : 0 +5162 : 0 +5163 : 0 +5164 : 0 +5165 : 0 +5166 : 0 +5167 : 0 +5168 : 0 +5169 : 0 +5170 : 0 +5171 : 0 +5172 : 0 +5173 : 0 +5174 : 0 +5175 : 0 +5176 : 0 +5177 : 0 +5178 : 0 +5179 : 0 +5180 : 0 +5181 : 0 +5182 : 0 +5183 : 0 +5184 : 0 +5185 : 0 +5186 : 0 +5187 : 0 +5188 : 0 +5189 : 0 +5190 : 0 +5191 : 0 +5192 : 0 +5193 : 0 +5194 : 0 +5195 : 0 +5196 : 0 +5197 : 0 +5198 : 0 +5199 : 0 +5200 : 0 +5201 : 0 +5202 : 0 +5203 : 0 +5204 : 0 +5205 : 0 +5206 : 0 +5207 : 0 +5208 : 0 +5209 : 0 +5210 : 0 +5211 : 0 +5212 : 0 +5213 : 0 +5214 : 0 +5215 : 0 +5216 : 0 +5217 : 0 +5218 : 0 +5219 : 0 +5220 : 0 +5221 : 0 +5222 : 0 +5223 : 0 +5224 : 0 +5225 : 0 +5226 : 0 +5227 : 0 +5228 : 0 +5229 : 0 +5230 : 0 +5231 : 0 +5232 : 0 +5233 : 0 +5234 : 0 +5235 : 0 +5236 : 0 +5237 : 0 +5238 : 0 +5239 : 0 +5240 : 0 +5241 : 0 +5242 : 0 +5243 : 0 +5244 : 0 +5245 : 0 +5246 : 0 +5247 : 0 +5248 : 0 +5249 : 0 +5250 : 0 +5251 : 0 +5252 : 0 +5253 : 0 +5254 : 0 +5255 : 0 +5256 : 0 +5257 : 0 +5258 : 0 +5259 : 0 +5260 : 0 +5261 : 0 +5262 : 0 +5263 : 0 +5264 : 0 +5265 : 0 +5266 : 0 +5267 : 0 +5268 : 0 +5269 : 0 +5270 : 0 +5271 : 0 +5272 : 0 +5273 : 0 +5274 : 0 +5275 : 0 +5276 : 0 +5277 : 0 +5278 : 0 +5279 : 0 +5280 : 0 +5281 : 0 +5282 : 0 +5283 : 0 +5284 : 0 +5285 : 0 +5286 : 0 +5287 : 0 +5288 : 0 +5289 : 0 +5290 : 0 +5291 : 0 +5292 : 0 +5293 : 0 +5294 : 0 +5295 : 0 +5296 : 0 +5297 : 0 +5298 : 0 +5299 : 0 +5300 : 0 +5301 : 0 +5302 : 0 +5303 : 0 +5304 : 0 +5305 : 0 +5306 : 0 +5307 : 0 +5308 : 0 +5309 : 0 +5310 : 0 +5311 : 0 +5312 : 0 +5313 : 0 +5314 : 0 +5315 : 0 +5316 : 0 +5317 : 0 +5318 : 0 +5319 : 0 +5320 : 0 +5321 : 0 +5322 : 0 +5323 : 0 +5324 : 0 +5325 : 0 +5326 : 0 +5327 : 0 +5328 : 0 +5329 : 0 +5330 : 0 +5331 : 0 +5332 : 0 +5333 : 0 +5334 : 0 +5335 : 0 +5336 : 0 +5337 : 0 +5338 : 0 +5339 : 0 +5340 : 0 +5341 : 0 +5342 : 0 +5343 : 0 +5344 : 0 +5345 : 0 +5346 : 0 +5347 : 0 +5348 : 0 +5349 : 0 +5350 : 0 +5351 : 0 +5352 : 0 +5353 : 0 +5354 : 0 +5355 : 0 +5356 : 0 +5357 : 0 +5358 : 0 +5359 : 0 +5360 : 0 +5361 : 0 +5362 : 0 +5363 : 0 +5364 : 0 +5365 : 0 +5366 : 0 +5367 : 0 +5368 : 0 +5369 : 0 +5370 : 0 +5371 : 0 +5372 : 0 +5373 : 0 +5374 : 0 +5375 : 0 +5376 : 0 +5377 : 0 +5378 : 0 +5379 : 0 +5380 : 0 +5381 : 0 +5382 : 0 +5383 : 0 +5384 : 0 +5385 : 0 +5386 : 0 +5387 : 0 +5388 : 0 +5389 : 0 +5390 : 0 +5391 : 0 +5392 : 0 +5393 : 0 +5394 : 0 +5395 : 0 +5396 : 0 +5397 : 0 +5398 : 0 +5399 : 0 +5400 : 0 +5401 : 0 +5402 : 0 +5403 : 0 +5404 : 0 +5405 : 0 +5406 : 0 +5407 : 0 +5408 : 0 +5409 : 0 +5410 : 0 +5411 : 0 +5412 : 0 +5413 : 0 +5414 : 0 +5415 : 0 +5416 : 0 +5417 : 0 +5418 : 0 +5419 : 0 +5420 : 0 +5421 : 0 +5422 : 0 +5423 : 0 +5424 : 0 +5425 : 0 +5426 : 0 +5427 : 0 +5428 : 0 +5429 : 0 +5430 : 0 +5431 : 0 +5432 : 0 +5433 : 0 +5434 : 0 +5435 : 0 +5436 : 0 +5437 : 0 +5438 : 0 +5439 : 0 +5440 : 0 +5441 : 0 +5442 : 0 +5443 : 0 +5444 : 0 +5445 : 0 +5446 : 0 +5447 : 0 +5448 : 0 +5449 : 0 +5450 : 0 +5451 : 0 +5452 : 0 +5453 : 0 +5454 : 0 +5455 : 0 +5456 : 0 +5457 : 0 +5458 : 0 +5459 : 0 +5460 : 0 +5461 : 0 +5462 : 0 +5463 : 0 +5464 : 0 +5465 : 0 +5466 : 0 +5467 : 0 +5468 : 0 +5469 : 0 +5470 : 0 +5471 : 0 +5472 : 0 +5473 : 0 +5474 : 0 +5475 : 0 +5476 : 0 +5477 : 0 +5478 : 0 +5479 : 0 +5480 : 0 +5481 : 0 +5482 : 0 +5483 : 0 +5484 : 0 +5485 : 0 +5486 : 0 +5487 : 0 +5488 : 0 +5489 : 0 +5490 : 0 +5491 : 0 +5492 : 0 +5493 : 0 +5494 : 0 +5495 : 0 +5496 : 0 +5497 : 0 +5498 : 0 +5499 : 0 +5500 : 0 +5501 : 0 +5502 : 0 +5503 : 0 +5504 : 0 +5505 : 0 +5506 : 0 +5507 : 0 +5508 : 0 +5509 : 0 +5510 : 0 +5511 : 0 +5512 : 0 +5513 : 0 +5514 : 0 +5515 : 0 +5516 : 0 +5517 : 0 +5518 : 0 +5519 : 0 +5520 : 0 +5521 : 0 +5522 : 0 +5523 : 0 +5524 : 0 +5525 : 0 +5526 : 0 +5527 : 0 +5528 : 0 +5529 : 0 +5530 : 0 +5531 : 0 +5532 : 0 +5533 : 0 +5534 : 0 +5535 : 0 +5536 : 0 +5537 : 0 +5538 : 0 +5539 : 0 +5540 : 0 +5541 : 0 +5542 : 0 +5543 : 0 +5544 : 0 +5545 : 0 +5546 : 0 +5547 : 0 +5548 : 0 +5549 : 0 +5550 : 0 +5551 : 0 +5552 : 0 +5553 : 0 +5554 : 0 +5555 : 0 +5556 : 0 +5557 : 0 +5558 : 0 +5559 : 0 +5560 : 0 +5561 : 0 +5562 : 0 +5563 : 0 +5564 : 0 +5565 : 0 +5566 : 0 +5567 : 0 +5568 : 0 +5569 : 0 +5570 : 0 +5571 : 0 +5572 : 0 +5573 : 0 +5574 : 0 +5575 : 0 +5576 : 0 +5577 : 0 +5578 : 0 +5579 : 0 +5580 : 0 +5581 : 0 +5582 : 0 +5583 : 0 +5584 : 0 +5585 : 0 +5586 : 0 +5587 : 0 +5588 : 0 +5589 : 0 +5590 : 0 +5591 : 0 +5592 : 0 +5593 : 0 +5594 : 0 +5595 : 0 +5596 : 0 +5597 : 0 +5598 : 0 +5599 : 0 +5600 : 0 +5601 : 0 +5602 : 0 +5603 : 0 +5604 : 0 +5605 : 0 +5606 : 0 +5607 : 0 +5608 : 0 +5609 : 0 +5610 : 0 +5611 : 0 +5612 : 0 +5613 : 0 +5614 : 0 +5615 : 0 +5616 : 0 +5617 : 0 +5618 : 0 +5619 : 0 +5620 : 0 +5621 : 0 +5622 : 0 +5623 : 0 +5624 : 0 +5625 : 0 +5626 : 0 +5627 : 0 +5628 : 0 +5629 : 0 +5630 : 0 +5631 : 0 +5632 : 0 +5633 : 0 +5634 : 0 +5635 : 0 +5636 : 0 +5637 : 0 +5638 : 0 +5639 : 0 +5640 : 0 +5641 : 0 +5642 : 0 +5643 : 0 +5644 : 0 +5645 : 0 +5646 : 0 +5647 : 0 +5648 : 0 +5649 : 0 +5650 : 0 +5651 : 0 +5652 : 0 +5653 : 0 +5654 : 0 +5655 : 0 +5656 : 0 +5657 : 0 +5658 : 0 +5659 : 0 +5660 : 0 +5661 : 0 +5662 : 0 +5663 : 0 +5664 : 0 +5665 : 0 +5666 : 0 +5667 : 0 +5668 : 0 +5669 : 0 +5670 : 0 +5671 : 0 +5672 : 0 +5673 : 0 +5674 : 0 +5675 : 0 +5676 : 0 +5677 : 0 +5678 : 0 +5679 : 0 +5680 : 0 +5681 : 0 +5682 : 0 +5683 : 0 +5684 : 0 +5685 : 0 +5686 : 0 +5687 : 0 +5688 : 0 +5689 : 0 +5690 : 0 +5691 : 0 +5692 : 0 +5693 : 0 +5694 : 0 +5695 : 0 +5696 : 0 +5697 : 0 +5698 : 0 +5699 : 0 +5700 : 0 +5701 : 0 +5702 : 0 +5703 : 0 +5704 : 0 +5705 : 0 +5706 : 0 +5707 : 0 +5708 : 0 +5709 : 0 +5710 : 0 +5711 : 0 +5712 : 0 +5713 : 0 +5714 : 0 +5715 : 0 +5716 : 0 +5717 : 0 +5718 : 0 +5719 : 0 +5720 : 0 +5721 : 0 +5722 : 0 +5723 : 0 +5724 : 0 +5725 : 0 +5726 : 0 +5727 : 0 +5728 : 0 +5729 : 0 +5730 : 0 +5731 : 0 +5732 : 0 +5733 : 0 +5734 : 0 +5735 : 0 +5736 : 0 +5737 : 0 +5738 : 0 +5739 : 0 +5740 : 0 +5741 : 0 +5742 : 0 +5743 : 0 +5744 : 0 +5745 : 0 +5746 : 0 +5747 : 0 +5748 : 0 +5749 : 0 +5750 : 0 +5751 : 0 +5752 : 0 +5753 : 0 +5754 : 0 +5755 : 0 +5756 : 0 +5757 : 0 +5758 : 0 +5759 : 0 +5760 : 0 +5761 : 0 +5762 : 0 +5763 : 0 +5764 : 0 +5765 : 0 +5766 : 0 +5767 : 0 +5768 : 0 +5769 : 0 +5770 : 0 +5771 : 0 +5772 : 0 +5773 : 0 +5774 : 0 +5775 : 0 +5776 : 0 +5777 : 0 +5778 : 0 +5779 : 0 +5780 : 0 +5781 : 0 +5782 : 0 +5783 : 0 +5784 : 0 +5785 : 0 +5786 : 0 +5787 : 0 +5788 : 0 +5789 : 0 +5790 : 0 +5791 : 0 +5792 : 0 +5793 : 0 +5794 : 0 +5795 : 0 +5796 : 0 +5797 : 0 +5798 : 0 +5799 : 0 +5800 : 0 +5801 : 0 +5802 : 0 +5803 : 0 +5804 : 0 +5805 : 0 +5806 : 0 +5807 : 0 +5808 : 0 +5809 : 0 +5810 : 0 +5811 : 0 +5812 : 0 +5813 : 0 +5814 : 0 +5815 : 0 +5816 : 0 +5817 : 0 +5818 : 0 +5819 : 0 +5820 : 0 +5821 : 0 +5822 : 0 +5823 : 0 +5824 : 0 +5825 : 0 +5826 : 0 +5827 : 0 +5828 : 0 +5829 : 0 +5830 : 0 +5831 : 0 +5832 : 0 +5833 : 0 +5834 : 0 +5835 : 0 +5836 : 0 +5837 : 0 +5838 : 0 +5839 : 0 +5840 : 0 +5841 : 0 +5842 : 0 +5843 : 0 +5844 : 0 +5845 : 0 +5846 : 0 +5847 : 0 +5848 : 0 +5849 : 0 +5850 : 0 +5851 : 0 +5852 : 0 +5853 : 0 +5854 : 0 +5855 : 0 +5856 : 0 +5857 : 0 +5858 : 0 +5859 : 0 +5860 : 0 +5861 : 0 +5862 : 0 +5863 : 0 +5864 : 0 +5865 : 0 +5866 : 0 +5867 : 0 +5868 : 0 +5869 : 0 +5870 : 0 +5871 : 0 +5872 : 0 +5873 : 0 +5874 : 0 +5875 : 0 +5876 : 0 +5877 : 0 +5878 : 0 +5879 : 0 +5880 : 0 +5881 : 0 +5882 : 0 +5883 : 0 +5884 : 0 +5885 : 0 +5886 : 0 +5887 : 0 +5888 : 0 +5889 : 0 +5890 : 0 +5891 : 0 +5892 : 0 +5893 : 0 +5894 : 0 +5895 : 0 +5896 : 0 +5897 : 0 +5898 : 0 +5899 : 0 +5900 : 0 +5901 : 0 +5902 : 0 +5903 : 0 +5904 : 0 +5905 : 0 +5906 : 0 +5907 : 0 +5908 : 0 +5909 : 0 +5910 : 0 +5911 : 0 +5912 : 0 +5913 : 0 +5914 : 0 +5915 : 0 +5916 : 0 +5917 : 0 +5918 : 0 +5919 : 0 +5920 : 0 +5921 : 0 +5922 : 0 +5923 : 0 +5924 : 0 +5925 : 0 +5926 : 0 +5927 : 0 +5928 : 0 +5929 : 0 +5930 : 0 +5931 : 0 +5932 : 0 +5933 : 0 +5934 : 0 +5935 : 0 +5936 : 0 +5937 : 0 +5938 : 0 +5939 : 0 +5940 : 0 +5941 : 0 +5942 : 0 +5943 : 0 +5944 : 0 +5945 : 0 +5946 : 0 +5947 : 0 +5948 : 0 +5949 : 0 +5950 : 0 +5951 : 0 +5952 : 0 +5953 : 0 +5954 : 0 +5955 : 0 +5956 : 0 +5957 : 0 +5958 : 0 +5959 : 0 +5960 : 0 +5961 : 0 +5962 : 0 +5963 : 0 +5964 : 0 +5965 : 0 +5966 : 0 +5967 : 0 +5968 : 0 +5969 : 0 +5970 : 0 +5971 : 0 +5972 : 0 +5973 : 0 +5974 : 0 +5975 : 0 +5976 : 0 +5977 : 0 +5978 : 0 +5979 : 0 +5980 : 0 +5981 : 0 +5982 : 0 +5983 : 0 +5984 : 0 +5985 : 0 +5986 : 0 +5987 : 0 +5988 : 0 +5989 : 0 +5990 : 0 +5991 : 0 +5992 : 0 +5993 : 0 +5994 : 0 +5995 : 0 +5996 : 0 +5997 : 0 +5998 : 0 +5999 : 0 +6000 : 0 +6001 : 0 +6002 : 0 +6003 : 0 +6004 : 0 +6005 : 0 +6006 : 0 +6007 : 0 +6008 : 0 +6009 : 0 +6010 : 0 +6011 : 0 +6012 : 0 +6013 : 0 +6014 : 0 +6015 : 0 +6016 : 0 +6017 : 0 +6018 : 0 +6019 : 0 +6020 : 0 +6021 : 0 +6022 : 0 +6023 : 0 +6024 : 0 +6025 : 0 +6026 : 0 +6027 : 0 +6028 : 0 +6029 : 0 +6030 : 0 +6031 : 0 +6032 : 0 +6033 : 0 +6034 : 0 +6035 : 0 +6036 : 0 +6037 : 0 +6038 : 0 +6039 : 0 +6040 : 0 +6041 : 0 +6042 : 0 +6043 : 0 +6044 : 0 +6045 : 0 +6046 : 0 +6047 : 0 +6048 : 0 +6049 : 0 +6050 : 0 +6051 : 0 +6052 : 0 +6053 : 0 +6054 : 0 +6055 : 0 +6056 : 0 +6057 : 0 +6058 : 0 +6059 : 0 +6060 : 0 +6061 : 0 +6062 : 0 +6063 : 0 +6064 : 0 +6065 : 0 +6066 : 0 +6067 : 0 +6068 : 0 +6069 : 0 +6070 : 0 +6071 : 0 +6072 : 0 +6073 : 0 +6074 : 0 +6075 : 0 +6076 : 0 +6077 : 0 +6078 : 0 +6079 : 0 +6080 : 0 +6081 : 0 +6082 : 0 +6083 : 0 +6084 : 0 +6085 : 0 +6086 : 0 +6087 : 0 +6088 : 0 +6089 : 0 +6090 : 0 +6091 : 0 +6092 : 0 +6093 : 0 +6094 : 0 +6095 : 0 +6096 : 0 +6097 : 0 +6098 : 0 +6099 : 0 +6100 : 0 +6101 : 0 +6102 : 0 +6103 : 0 +6104 : 0 +6105 : 0 +6106 : 0 +6107 : 0 +6108 : 0 +6109 : 0 +6110 : 0 +6111 : 0 +6112 : 0 +6113 : 0 +6114 : 0 +6115 : 0 +6116 : 0 +6117 : 0 +6118 : 0 +6119 : 0 +6120 : 0 +6121 : 0 +6122 : 0 +6123 : 0 +6124 : 0 +6125 : 0 +6126 : 0 +6127 : 0 +6128 : 0 +6129 : 0 +6130 : 0 +6131 : 0 +6132 : 0 +6133 : 0 +6134 : 0 +6135 : 0 +6136 : 0 +6137 : 0 +6138 : 0 +6139 : 0 +6140 : 0 +6141 : 0 +6142 : 0 +6143 : 0 +6144 : 0 +6145 : 0 +6146 : 0 +6147 : 0 +6148 : 0 +6149 : 0 +6150 : 0 +6151 : 0 +6152 : 0 +6153 : 0 +6154 : 0 +6155 : 0 +6156 : 0 +6157 : 0 +6158 : 0 +6159 : 0 +6160 : 0 +6161 : 0 +6162 : 0 +6163 : 0 +6164 : 0 +6165 : 0 +6166 : 0 +6167 : 0 +6168 : 0 +6169 : 0 +6170 : 0 +6171 : 0 +6172 : 0 +6173 : 0 +6174 : 0 +6175 : 0 +6176 : 0 +6177 : 0 +6178 : 0 +6179 : 0 +6180 : 0 +6181 : 0 +6182 : 0 +6183 : 0 +6184 : 0 +6185 : 0 +6186 : 0 +6187 : 0 +6188 : 0 +6189 : 0 +6190 : 0 +6191 : 0 +6192 : 0 +6193 : 0 +6194 : 0 +6195 : 0 +6196 : 0 +6197 : 0 +6198 : 0 +6199 : 0 +6200 : 0 +6201 : 0 +6202 : 0 +6203 : 0 +6204 : 0 +6205 : 0 +6206 : 0 +6207 : 0 +6208 : 0 +6209 : 0 +6210 : 0 +6211 : 0 +6212 : 0 +6213 : 0 +6214 : 0 +6215 : 0 +6216 : 0 +6217 : 0 +6218 : 0 +6219 : 0 +6220 : 0 +6221 : 0 +6222 : 0 +6223 : 0 +6224 : 0 +6225 : 0 +6226 : 0 +6227 : 0 +6228 : 0 +6229 : 0 +6230 : 0 +6231 : 0 +6232 : 0 +6233 : 0 +6234 : 0 +6235 : 0 +6236 : 0 +6237 : 0 +6238 : 0 +6239 : 0 +6240 : 0 +6241 : 0 +6242 : 0 +6243 : 0 +6244 : 0 +6245 : 0 +6246 : 0 +6247 : 0 +6248 : 0 +6249 : 0 +6250 : 0 +6251 : 0 +6252 : 0 +6253 : 0 +6254 : 0 +6255 : 0 +6256 : 0 +6257 : 0 +6258 : 0 +6259 : 0 +6260 : 0 +6261 : 0 +6262 : 0 +6263 : 0 +6264 : 0 +6265 : 0 +6266 : 0 +6267 : 0 +6268 : 0 +6269 : 0 +6270 : 0 +6271 : 0 +6272 : 0 +6273 : 0 +6274 : 0 +6275 : 0 +6276 : 0 +6277 : 0 +6278 : 0 +6279 : 0 +6280 : 0 +6281 : 0 +6282 : 0 +6283 : 0 +6284 : 0 +6285 : 0 +6286 : 0 +6287 : 0 +6288 : 0 +6289 : 0 +6290 : 0 +6291 : 0 +6292 : 0 +6293 : 0 +6294 : 0 +6295 : 0 +6296 : 0 +6297 : 0 +6298 : 0 +6299 : 0 +6300 : 0 +6301 : 0 +6302 : 0 +6303 : 0 +6304 : 0 +6305 : 0 +6306 : 0 +6307 : 0 +6308 : 0 +6309 : 0 +6310 : 0 +6311 : 0 +6312 : 0 +6313 : 0 +6314 : 0 +6315 : 0 +6316 : 0 +6317 : 0 +6318 : 0 +6319 : 0 +6320 : 0 +6321 : 0 +6322 : 0 +6323 : 0 +6324 : 0 +6325 : 0 +6326 : 0 +6327 : 0 +6328 : 0 +6329 : 0 +6330 : 0 +6331 : 0 +6332 : 0 +6333 : 0 +6334 : 0 +6335 : 0 +6336 : 0 +6337 : 0 +6338 : 0 +6339 : 0 +6340 : 0 +6341 : 0 +6342 : 0 +6343 : 0 +6344 : 0 +6345 : 0 +6346 : 0 +6347 : 0 +6348 : 0 +6349 : 0 +6350 : 0 +6351 : 0 +6352 : 0 +6353 : 0 +6354 : 0 +6355 : 0 +6356 : 0 +6357 : 0 +6358 : 0 +6359 : 0 +6360 : 0 +6361 : 0 +6362 : 0 +6363 : 0 +6364 : 0 +6365 : 0 +6366 : 0 +6367 : 0 +6368 : 0 +6369 : 0 +6370 : 0 +6371 : 0 +6372 : 0 +6373 : 0 +6374 : 0 +6375 : 0 +6376 : 0 +6377 : 0 +6378 : 0 +6379 : 0 +6380 : 0 +6381 : 0 +6382 : 0 +6383 : 0 +6384 : 0 +6385 : 0 +6386 : 0 +6387 : 0 +6388 : 0 +6389 : 0 +6390 : 0 +6391 : 0 +6392 : 0 +6393 : 0 +6394 : 0 +6395 : 0 +6396 : 0 +6397 : 0 +6398 : 0 +6399 : 0 +6400 : 0 +6401 : 0 +6402 : 0 +6403 : 0 +6404 : 0 +6405 : 0 +6406 : 0 +6407 : 0 +6408 : 0 +6409 : 0 +6410 : 0 +6411 : 0 +6412 : 0 +6413 : 0 +6414 : 0 +6415 : 0 +6416 : 0 +6417 : 0 +6418 : 0 +6419 : 0 +6420 : 0 +6421 : 0 +6422 : 0 +6423 : 0 +6424 : 0 +6425 : 0 +6426 : 0 +6427 : 0 +6428 : 0 +6429 : 0 +6430 : 0 +6431 : 0 +6432 : 0 +6433 : 0 +6434 : 0 +6435 : 0 +6436 : 0 +6437 : 0 +6438 : 0 +6439 : 0 +6440 : 0 +6441 : 0 +6442 : 0 +6443 : 0 +6444 : 0 +6445 : 0 +6446 : 0 +6447 : 0 +6448 : 0 +6449 : 0 +6450 : 0 +6451 : 0 +6452 : 0 +6453 : 0 +6454 : 0 +6455 : 0 +6456 : 0 +6457 : 0 +6458 : 0 +6459 : 0 +6460 : 0 +6461 : 0 +6462 : 0 +6463 : 0 +6464 : 0 +6465 : 0 +6466 : 0 +6467 : 0 +6468 : 0 +6469 : 0 +6470 : 0 +6471 : 0 +6472 : 0 +6473 : 0 +6474 : 0 +6475 : 0 +6476 : 0 +6477 : 0 +6478 : 0 +6479 : 0 +6480 : 0 +6481 : 0 +6482 : 0 +6483 : 0 +6484 : 0 +6485 : 0 +6486 : 0 +6487 : 0 +6488 : 0 +6489 : 0 +6490 : 0 +6491 : 0 +6492 : 0 +6493 : 0 +6494 : 0 +6495 : 0 +6496 : 0 +6497 : 0 +6498 : 0 +6499 : 0 +6500 : 0 +6501 : 0 +6502 : 0 +6503 : 0 +6504 : 0 +6505 : 0 +6506 : 0 +6507 : 0 +6508 : 0 +6509 : 0 +6510 : 0 +6511 : 0 +6512 : 0 +6513 : 0 +6514 : 0 +6515 : 0 +6516 : 0 +6517 : 0 +6518 : 0 +6519 : 0 +6520 : 0 +6521 : 0 +6522 : 0 +6523 : 0 +6524 : 0 +6525 : 0 +6526 : 0 +6527 : 0 +6528 : 0 +6529 : 0 +6530 : 0 +6531 : 0 +6532 : 0 +6533 : 0 +6534 : 0 +6535 : 0 +6536 : 0 +6537 : 0 +6538 : 0 +6539 : 0 +6540 : 0 +6541 : 0 +6542 : 0 +6543 : 0 +6544 : 0 +6545 : 0 +6546 : 0 +6547 : 0 +6548 : 0 +6549 : 0 +6550 : 0 +6551 : 0 +6552 : 0 +6553 : 0 +6554 : 0 +6555 : 0 +6556 : 0 +6557 : 0 +6558 : 0 +6559 : 0 +6560 : 0 +6561 : 0 +6562 : 0 +6563 : 0 +6564 : 0 +6565 : 0 +6566 : 0 +6567 : 0 +6568 : 0 +6569 : 0 +6570 : 0 +6571 : 0 +6572 : 0 +6573 : 0 +6574 : 0 +6575 : 0 +6576 : 0 +6577 : 0 +6578 : 0 +6579 : 0 +6580 : 0 +6581 : 0 +6582 : 0 +6583 : 0 +6584 : 0 +6585 : 0 +6586 : 0 +6587 : 0 +6588 : 0 +6589 : 0 +6590 : 0 +6591 : 0 +6592 : 0 +6593 : 0 +6594 : 0 +6595 : 0 +6596 : 0 +6597 : 0 +6598 : 0 +6599 : 0 +6600 : 0 +6601 : 0 +6602 : 0 +6603 : 0 +6604 : 0 +6605 : 0 +6606 : 0 +6607 : 0 +6608 : 0 +6609 : 0 +6610 : 0 +6611 : 0 +6612 : 0 +6613 : 0 +6614 : 0 +6615 : 0 +6616 : 0 +6617 : 0 +6618 : 0 +6619 : 0 +6620 : 0 +6621 : 0 +6622 : 0 +6623 : 0 +6624 : 0 +6625 : 0 +6626 : 0 +6627 : 0 +6628 : 0 +6629 : 0 +6630 : 0 +6631 : 0 +6632 : 0 +6633 : 0 +6634 : 0 +6635 : 0 +6636 : 0 +6637 : 0 +6638 : 0 +6639 : 0 +6640 : 0 +6641 : 0 +6642 : 0 +6643 : 0 +6644 : 0 +6645 : 0 +6646 : 0 +6647 : 0 +6648 : 0 +6649 : 0 +6650 : 0 +6651 : 0 +6652 : 0 +6653 : 0 +6654 : 0 +6655 : 0 +6656 : 0 +6657 : 0 +6658 : 0 +6659 : 0 +6660 : 0 +6661 : 0 +6662 : 0 +6663 : 0 +6664 : 0 +6665 : 0 +6666 : 0 +6667 : 0 +6668 : 0 +6669 : 0 +6670 : 0 +6671 : 0 +6672 : 0 +6673 : 0 +6674 : 0 +6675 : 0 +6676 : 0 +6677 : 0 +6678 : 0 +6679 : 0 +6680 : 0 +6681 : 0 +6682 : 0 +6683 : 0 +6684 : 0 +6685 : 0 +6686 : 0 +6687 : 0 +6688 : 0 +6689 : 0 +6690 : 0 +6691 : 0 +6692 : 0 +6693 : 0 +6694 : 0 +6695 : 0 +6696 : 0 +6697 : 0 +6698 : 0 +6699 : 0 +6700 : 0 +6701 : 0 +6702 : 0 +6703 : 0 +6704 : 0 +6705 : 0 +6706 : 0 +6707 : 0 +6708 : 0 +6709 : 0 +6710 : 0 +6711 : 0 +6712 : 0 +6713 : 0 +6714 : 0 +6715 : 0 +6716 : 0 +6717 : 0 +6718 : 0 +6719 : 0 +6720 : 0 +6721 : 0 +6722 : 0 +6723 : 0 +6724 : 0 +6725 : 0 +6726 : 0 +6727 : 0 +6728 : 0 +6729 : 0 +6730 : 0 +6731 : 0 +6732 : 0 +6733 : 0 +6734 : 0 +6735 : 0 +6736 : 0 +6737 : 0 +6738 : 0 +6739 : 0 +6740 : 0 +6741 : 0 +6742 : 0 +6743 : 0 +6744 : 0 +6745 : 0 +6746 : 0 +6747 : 0 +6748 : 0 +6749 : 0 +6750 : 0 +6751 : 0 +6752 : 0 +6753 : 0 +6754 : 0 +6755 : 0 +6756 : 0 +6757 : 0 +6758 : 0 +6759 : 0 +6760 : 0 +6761 : 0 +6762 : 0 +6763 : 0 +6764 : 0 +6765 : 0 +6766 : 0 +6767 : 0 +6768 : 0 +6769 : 0 +6770 : 0 +6771 : 0 +6772 : 0 +6773 : 0 +6774 : 0 +6775 : 0 +6776 : 0 +6777 : 0 +6778 : 0 +6779 : 0 +6780 : 0 +6781 : 0 +6782 : 0 +6783 : 0 +6784 : 0 +6785 : 0 +6786 : 0 +6787 : 0 +6788 : 0 +6789 : 0 +6790 : 0 +6791 : 0 +6792 : 0 +6793 : 0 +6794 : 0 +6795 : 0 +6796 : 0 +6797 : 0 +6798 : 0 +6799 : 0 +6800 : 0 +6801 : 0 +6802 : 0 +6803 : 0 +6804 : 0 +6805 : 0 +6806 : 0 +6807 : 0 +6808 : 0 +6809 : 0 +6810 : 0 +6811 : 0 +6812 : 0 +6813 : 0 +6814 : 0 +6815 : 0 +6816 : 0 +6817 : 0 +6818 : 0 +6819 : 0 +6820 : 0 +6821 : 0 +6822 : 0 +6823 : 0 +6824 : 0 +6825 : 0 +6826 : 0 +6827 : 0 +6828 : 0 +6829 : 0 +6830 : 0 +6831 : 0 +6832 : 0 +6833 : 0 +6834 : 0 +6835 : 0 +6836 : 0 +6837 : 0 +6838 : 0 +6839 : 0 +6840 : 0 +6841 : 0 +6842 : 0 +6843 : 0 +6844 : 0 +6845 : 0 +6846 : 0 +6847 : 0 +6848 : 0 +6849 : 0 +6850 : 0 +6851 : 0 +6852 : 0 +6853 : 0 +6854 : 0 +6855 : 0 +6856 : 0 +6857 : 0 +6858 : 0 +6859 : 0 +6860 : 0 +6861 : 0 +6862 : 0 +6863 : 0 +6864 : 0 +6865 : 0 +6866 : 0 +6867 : 0 +6868 : 0 +6869 : 0 +6870 : 0 +6871 : 0 +6872 : 0 +6873 : 0 +6874 : 0 +6875 : 0 +6876 : 0 +6877 : 0 +6878 : 0 +6879 : 0 +6880 : 0 +6881 : 0 +6882 : 0 +6883 : 0 +6884 : 0 +6885 : 0 +6886 : 0 +6887 : 0 +6888 : 0 +6889 : 0 +6890 : 0 +6891 : 0 +6892 : 0 +6893 : 0 +6894 : 0 +6895 : 0 +6896 : 0 +6897 : 0 +6898 : 0 +6899 : 0 +6900 : 0 +6901 : 0 +6902 : 0 +6903 : 0 +6904 : 0 +6905 : 0 +6906 : 0 +6907 : 0 +6908 : 0 +6909 : 0 +6910 : 0 +6911 : 0 +6912 : 0 +6913 : 0 +6914 : 0 +6915 : 0 +6916 : 0 +6917 : 0 +6918 : 0 +6919 : 0 +6920 : 0 +6921 : 0 +6922 : 0 +6923 : 0 +6924 : 0 +6925 : 0 +6926 : 0 +6927 : 0 +6928 : 0 +6929 : 0 +6930 : 0 +6931 : 0 +6932 : 0 +6933 : 0 +6934 : 0 +6935 : 0 +6936 : 0 +6937 : 0 +6938 : 0 +6939 : 0 +6940 : 0 +6941 : 0 +6942 : 0 +6943 : 0 +6944 : 0 +6945 : 0 +6946 : 0 +6947 : 0 +6948 : 0 +6949 : 0 +6950 : 0 +6951 : 0 +6952 : 0 +6953 : 0 +6954 : 0 +6955 : 0 +6956 : 0 +6957 : 0 +6958 : 0 +6959 : 0 +6960 : 0 +6961 : 0 +6962 : 0 +6963 : 0 +6964 : 0 +6965 : 0 +6966 : 0 +6967 : 0 +6968 : 0 +6969 : 0 +6970 : 0 +6971 : 0 +6972 : 0 +6973 : 0 +6974 : 0 +6975 : 0 +6976 : 0 +6977 : 0 +6978 : 0 +6979 : 0 +6980 : 0 +6981 : 0 +6982 : 0 +6983 : 0 +6984 : 0 +6985 : 0 +6986 : 0 +6987 : 0 +6988 : 0 +6989 : 0 +6990 : 0 +6991 : 0 +6992 : 0 +6993 : 0 +6994 : 0 +6995 : 0 +6996 : 0 +6997 : 0 +6998 : 0 +6999 : 0 +7000 : 0 +7001 : 0 +7002 : 0 +7003 : 0 +7004 : 0 +7005 : 0 +7006 : 0 +7007 : 0 +7008 : 0 +7009 : 0 +7010 : 0 +7011 : 0 +7012 : 0 +7013 : 0 +7014 : 0 +7015 : 0 +7016 : 0 +7017 : 0 +7018 : 0 +7019 : 0 +7020 : 0 +7021 : 0 +7022 : 0 +7023 : 0 +7024 : 0 +7025 : 0 +7026 : 0 +7027 : 0 +7028 : 0 +7029 : 0 +7030 : 0 +7031 : 0 +7032 : 0 +7033 : 0 +7034 : 0 +7035 : 0 +7036 : 0 +7037 : 0 +7038 : 0 +7039 : 0 +7040 : 0 +7041 : 0 +7042 : 0 +7043 : 0 +7044 : 0 +7045 : 0 +7046 : 0 +7047 : 0 +7048 : 0 +7049 : 0 +7050 : 0 +7051 : 0 +7052 : 0 +7053 : 0 +7054 : 0 +7055 : 0 +7056 : 0 +7057 : 0 +7058 : 0 +7059 : 0 +7060 : 0 +7061 : 0 +7062 : 0 +7063 : 0 +7064 : 0 +7065 : 0 +7066 : 0 +7067 : 0 +7068 : 0 +7069 : 0 +7070 : 0 +7071 : 0 +7072 : 0 +7073 : 0 +7074 : 0 +7075 : 0 +7076 : 0 +7077 : 0 +7078 : 0 +7079 : 0 +7080 : 0 +7081 : 0 +7082 : 0 +7083 : 0 +7084 : 0 +7085 : 0 +7086 : 0 +7087 : 0 +7088 : 0 +7089 : 0 +7090 : 0 +7091 : 0 +7092 : 0 +7093 : 0 +7094 : 0 +7095 : 0 +7096 : 0 +7097 : 0 +7098 : 0 +7099 : 0 +7100 : 0 +7101 : 0 +7102 : 0 +7103 : 0 +7104 : 0 +7105 : 0 +7106 : 0 +7107 : 0 +7108 : 0 +7109 : 0 +7110 : 0 +7111 : 0 +7112 : 0 +7113 : 0 +7114 : 0 +7115 : 0 +7116 : 0 +7117 : 0 +7118 : 0 +7119 : 0 +7120 : 0 +7121 : 0 +7122 : 0 +7123 : 0 +7124 : 0 +7125 : 0 +7126 : 0 +7127 : 0 +7128 : 0 +7129 : 0 +7130 : 0 +7131 : 0 +7132 : 0 +7133 : 0 +7134 : 0 +7135 : 0 +7136 : 0 +7137 : 0 +7138 : 0 +7139 : 0 +7140 : 0 +7141 : 0 +7142 : 0 +7143 : 0 +7144 : 0 +7145 : 0 +7146 : 0 +7147 : 0 +7148 : 0 +7149 : 0 +7150 : 0 +7151 : 0 +7152 : 0 +7153 : 0 +7154 : 0 +7155 : 0 +7156 : 0 +7157 : 0 +7158 : 0 +7159 : 0 +7160 : 0 +7161 : 0 +7162 : 0 +7163 : 0 +7164 : 0 +7165 : 0 +7166 : 0 +7167 : 0 +7168 : 0 +7169 : 0 +7170 : 0 +7171 : 0 +7172 : 0 +7173 : 0 +7174 : 0 +7175 : 0 +7176 : 0 +7177 : 0 +7178 : 0 +7179 : 0 +7180 : 0 +7181 : 0 +7182 : 0 +7183 : 0 +7184 : 0 +7185 : 0 +7186 : 0 +7187 : 0 +7188 : 0 +7189 : 0 +7190 : 0 +7191 : 0 +7192 : 0 +7193 : 0 +7194 : 0 +7195 : 0 +7196 : 0 +7197 : 0 +7198 : 0 +7199 : 0 +7200 : 0 +7201 : 0 +7202 : 0 +7203 : 0 +7204 : 0 +7205 : 0 +7206 : 0 +7207 : 0 +7208 : 0 +7209 : 0 +7210 : 0 +7211 : 0 +7212 : 0 +7213 : 0 +7214 : 0 +7215 : 0 +7216 : 0 +7217 : 0 +7218 : 0 +7219 : 0 +7220 : 0 +7221 : 0 +7222 : 0 +7223 : 0 +7224 : 0 +7225 : 0 +7226 : 0 +7227 : 0 +7228 : 0 +7229 : 0 +7230 : 0 +7231 : 0 +7232 : 0 +7233 : 0 +7234 : 0 +7235 : 0 +7236 : 0 +7237 : 0 +7238 : 0 +7239 : 0 +7240 : 0 +7241 : 0 +7242 : 0 +7243 : 0 +7244 : 0 +7245 : 0 +7246 : 0 +7247 : 0 +7248 : 0 +7249 : 0 +7250 : 0 +7251 : 0 +7252 : 0 +7253 : 0 +7254 : 0 +7255 : 0 +7256 : 0 +7257 : 0 +7258 : 0 +7259 : 0 +7260 : 0 +7261 : 0 +7262 : 0 +7263 : 0 +7264 : 0 +7265 : 0 +7266 : 0 +7267 : 0 +7268 : 0 +7269 : 0 +7270 : 0 +7271 : 0 +7272 : 0 +7273 : 0 +7274 : 0 +7275 : 0 +7276 : 0 +7277 : 0 +7278 : 0 +7279 : 0 +7280 : 0 +7281 : 0 +7282 : 0 +7283 : 0 +7284 : 0 +7285 : 0 +7286 : 0 +7287 : 0 +7288 : 0 +7289 : 0 +7290 : 0 +7291 : 0 +7292 : 0 +7293 : 0 +7294 : 0 +7295 : 0 +7296 : 0 +7297 : 0 +7298 : 0 +7299 : 0 +7300 : 0 +7301 : 0 +7302 : 0 +7303 : 0 +7304 : 0 +7305 : 0 +7306 : 0 +7307 : 0 +7308 : 0 +7309 : 0 +7310 : 0 +7311 : 0 +7312 : 0 +7313 : 0 +7314 : 0 +7315 : 0 +7316 : 0 +7317 : 0 +7318 : 0 +7319 : 0 +7320 : 0 +7321 : 0 +7322 : 0 +7323 : 0 +7324 : 0 +7325 : 0 +7326 : 0 +7327 : 0 +7328 : 0 +7329 : 0 +7330 : 0 +7331 : 0 +7332 : 0 +7333 : 0 +7334 : 0 +7335 : 0 +7336 : 0 +7337 : 0 +7338 : 0 +7339 : 0 +7340 : 0 +7341 : 0 +7342 : 0 +7343 : 0 +7344 : 0 +7345 : 0 +7346 : 0 +7347 : 0 +7348 : 0 +7349 : 0 +7350 : 0 +7351 : 0 +7352 : 0 +7353 : 0 +7354 : 0 +7355 : 0 +7356 : 0 +7357 : 0 +7358 : 0 +7359 : 0 +7360 : 0 +7361 : 0 +7362 : 0 +7363 : 0 +7364 : 0 +7365 : 0 +7366 : 0 +7367 : 0 +7368 : 0 +7369 : 0 +7370 : 0 +7371 : 0 +7372 : 0 +7373 : 0 +7374 : 0 +7375 : 0 +7376 : 0 +7377 : 0 +7378 : 0 +7379 : 0 +7380 : 0 +7381 : 0 +7382 : 0 +7383 : 0 +7384 : 0 +7385 : 0 +7386 : 0 +7387 : 0 +7388 : 0 +7389 : 0 +7390 : 0 +7391 : 0 +7392 : 0 +7393 : 0 +7394 : 0 +7395 : 0 +7396 : 0 +7397 : 0 +7398 : 0 +7399 : 0 +7400 : 0 +7401 : 0 +7402 : 0 +7403 : 0 +7404 : 0 +7405 : 0 +7406 : 0 +7407 : 0 +7408 : 0 +7409 : 0 +7410 : 0 +7411 : 0 +7412 : 0 +7413 : 0 +7414 : 0 +7415 : 0 +7416 : 0 +7417 : 0 +7418 : 0 +7419 : 0 +7420 : 0 +7421 : 0 +7422 : 0 +7423 : 0 +7424 : 0 +7425 : 0 +7426 : 0 +7427 : 0 +7428 : 0 +7429 : 0 +7430 : 0 +7431 : 0 +7432 : 0 +7433 : 0 +7434 : 0 +7435 : 0 +7436 : 0 +7437 : 0 +7438 : 0 +7439 : 0 +7440 : 0 +7441 : 0 +7442 : 0 +7443 : 0 +7444 : 0 +7445 : 0 +7446 : 0 +7447 : 0 +7448 : 0 +7449 : 0 +7450 : 0 +7451 : 0 +7452 : 0 +7453 : 0 +7454 : 0 +7455 : 0 +7456 : 0 +7457 : 0 +7458 : 0 +7459 : 0 +7460 : 0 +7461 : 0 +7462 : 0 +7463 : 0 +7464 : 0 +7465 : 0 +7466 : 0 +7467 : 0 +7468 : 0 +7469 : 0 +7470 : 0 +7471 : 0 +7472 : 0 +7473 : 0 +7474 : 0 +7475 : 0 +7476 : 0 +7477 : 0 +7478 : 0 +7479 : 0 +7480 : 0 +7481 : 0 +7482 : 0 +7483 : 0 +7484 : 0 +7485 : 0 +7486 : 0 +7487 : 0 +7488 : 0 +7489 : 0 +7490 : 0 +7491 : 0 +7492 : 0 +7493 : 0 +7494 : 0 +7495 : 0 +7496 : 0 +7497 : 0 +7498 : 0 +7499 : 0 +7500 : 0 +7501 : 0 +7502 : 0 +7503 : 0 +7504 : 0 +7505 : 0 +7506 : 0 +7507 : 0 +7508 : 0 +7509 : 0 +7510 : 0 +7511 : 0 +7512 : 0 +7513 : 0 +7514 : 0 +7515 : 0 +7516 : 0 +7517 : 0 +7518 : 0 +7519 : 0 +7520 : 0 +7521 : 0 +7522 : 0 +7523 : 0 +7524 : 0 +7525 : 0 +7526 : 0 +7527 : 0 +7528 : 0 +7529 : 0 +7530 : 0 +7531 : 0 +7532 : 0 +7533 : 0 +7534 : 0 +7535 : 0 +7536 : 0 +7537 : 0 +7538 : 0 +7539 : 0 +7540 : 0 +7541 : 0 +7542 : 0 +7543 : 0 +7544 : 0 +7545 : 0 +7546 : 0 +7547 : 0 +7548 : 0 +7549 : 0 +7550 : 0 +7551 : 0 +7552 : 0 +7553 : 0 +7554 : 0 +7555 : 0 +7556 : 0 +7557 : 0 +7558 : 0 +7559 : 0 +7560 : 0 +7561 : 0 +7562 : 0 +7563 : 0 +7564 : 0 +7565 : 0 +7566 : 0 +7567 : 0 +7568 : 0 +7569 : 0 +7570 : 0 +7571 : 0 +7572 : 0 +7573 : 0 +7574 : 0 +7575 : 0 +7576 : 0 +7577 : 0 +7578 : 0 +7579 : 0 +7580 : 0 +7581 : 0 +7582 : 0 +7583 : 0 +7584 : 0 +7585 : 0 +7586 : 0 +7587 : 0 +7588 : 0 +7589 : 0 +7590 : 0 +7591 : 0 +7592 : 0 +7593 : 0 +7594 : 0 +7595 : 0 +7596 : 0 +7597 : 0 +7598 : 0 +7599 : 0 +7600 : 0 +7601 : 0 +7602 : 0 +7603 : 0 +7604 : 0 +7605 : 0 +7606 : 0 +7607 : 0 +7608 : 0 +7609 : 0 +7610 : 0 +7611 : 0 +7612 : 0 +7613 : 0 +7614 : 0 +7615 : 0 +7616 : 0 +7617 : 0 +7618 : 0 +7619 : 0 +7620 : 0 +7621 : 0 +7622 : 0 +7623 : 0 +7624 : 0 +7625 : 0 +7626 : 0 +7627 : 0 +7628 : 0 +7629 : 0 +7630 : 0 +7631 : 0 +7632 : 0 +7633 : 0 +7634 : 0 +7635 : 0 +7636 : 0 +7637 : 0 +7638 : 0 +7639 : 0 +7640 : 0 +7641 : 0 +7642 : 0 +7643 : 0 +7644 : 0 +7645 : 0 +7646 : 0 +7647 : 0 +7648 : 0 +7649 : 0 +7650 : 0 +7651 : 0 +7652 : 0 +7653 : 0 +7654 : 0 +7655 : 0 +7656 : 0 +7657 : 0 +7658 : 0 +7659 : 0 +7660 : 0 +7661 : 0 +7662 : 0 +7663 : 0 +7664 : 0 +7665 : 0 +7666 : 0 +7667 : 0 +7668 : 0 +7669 : 0 +7670 : 0 +7671 : 0 +7672 : 0 +7673 : 0 +7674 : 0 +7675 : 0 +7676 : 0 +7677 : 0 +7678 : 0 +7679 : 0 +7680 : 0 +7681 : 0 +7682 : 0 +7683 : 0 +7684 : 0 +7685 : 0 +7686 : 0 +7687 : 0 +7688 : 0 +7689 : 0 +7690 : 0 +7691 : 0 +7692 : 0 +7693 : 0 +7694 : 0 +7695 : 0 +7696 : 0 +7697 : 0 +7698 : 0 +7699 : 0 +7700 : 0 +7701 : 0 +7702 : 0 +7703 : 0 +7704 : 0 +7705 : 0 +7706 : 0 +7707 : 0 +7708 : 0 +7709 : 0 +7710 : 0 +7711 : 0 +7712 : 0 +7713 : 0 +7714 : 0 +7715 : 0 +7716 : 0 +7717 : 0 +7718 : 0 +7719 : 0 +7720 : 0 +7721 : 0 +7722 : 0 +7723 : 0 +7724 : 0 +7725 : 0 +7726 : 0 +7727 : 0 +7728 : 0 +7729 : 0 +7730 : 0 +7731 : 0 +7732 : 0 +7733 : 0 +7734 : 0 +7735 : 0 +7736 : 0 +7737 : 0 +7738 : 0 +7739 : 0 +7740 : 0 +7741 : 0 +7742 : 0 +7743 : 0 +7744 : 0 +7745 : 0 +7746 : 0 +7747 : 0 +7748 : 0 +7749 : 0 +7750 : 0 +7751 : 0 +7752 : 0 +7753 : 0 +7754 : 0 +7755 : 0 +7756 : 0 +7757 : 0 +7758 : 0 +7759 : 0 +7760 : 0 +7761 : 0 +7762 : 0 +7763 : 0 +7764 : 0 +7765 : 0 +7766 : 0 +7767 : 0 +7768 : 0 +7769 : 0 +7770 : 0 +7771 : 0 +7772 : 0 +7773 : 0 +7774 : 0 +7775 : 0 +7776 : 0 +7777 : 0 +7778 : 0 +7779 : 0 +7780 : 0 +7781 : 0 +7782 : 0 +7783 : 0 +7784 : 0 +7785 : 0 +7786 : 0 +7787 : 0 +7788 : 0 +7789 : 0 +7790 : 0 +7791 : 0 +7792 : 0 +7793 : 0 +7794 : 0 +7795 : 0 +7796 : 0 +7797 : 0 +7798 : 0 +7799 : 0 +7800 : 0 +7801 : 0 +7802 : 0 +7803 : 0 +7804 : 0 +7805 : 0 +7806 : 0 +7807 : 0 +7808 : 0 +7809 : 0 +7810 : 0 +7811 : 0 +7812 : 0 +7813 : 0 +7814 : 0 +7815 : 0 +7816 : 0 +7817 : 0 +7818 : 0 +7819 : 0 +7820 : 0 +7821 : 0 +7822 : 0 +7823 : 0 +7824 : 0 +7825 : 0 +7826 : 0 +7827 : 0 +7828 : 0 +7829 : 0 +7830 : 0 +7831 : 0 +7832 : 0 +7833 : 0 +7834 : 0 +7835 : 0 +7836 : 0 +7837 : 0 +7838 : 0 +7839 : 0 +7840 : 0 +7841 : 0 +7842 : 0 +7843 : 0 +7844 : 0 +7845 : 0 +7846 : 0 +7847 : 0 +7848 : 0 +7849 : 0 +7850 : 0 +7851 : 0 +7852 : 0 +7853 : 0 +7854 : 0 +7855 : 0 +7856 : 0 +7857 : 0 +7858 : 0 +7859 : 0 +7860 : 0 +7861 : 0 +7862 : 0 +7863 : 0 +7864 : 0 +7865 : 0 +7866 : 0 +7867 : 0 +7868 : 0 +7869 : 0 +7870 : 0 +7871 : 0 +7872 : 0 +7873 : 0 +7874 : 0 +7875 : 0 +7876 : 0 +7877 : 0 +7878 : 0 +7879 : 0 +7880 : 0 +7881 : 0 +7882 : 0 +7883 : 0 +7884 : 0 +7885 : 0 +7886 : 0 +7887 : 0 +7888 : 0 +7889 : 0 +7890 : 0 +7891 : 0 +7892 : 0 +7893 : 0 +7894 : 0 +7895 : 0 +7896 : 0 +7897 : 0 +7898 : 0 +7899 : 0 +7900 : 0 +7901 : 0 +7902 : 0 +7903 : 0 +7904 : 0 +7905 : 0 +7906 : 0 +7907 : 0 +7908 : 0 +7909 : 0 +7910 : 0 +7911 : 0 +7912 : 0 +7913 : 0 +7914 : 0 +7915 : 0 +7916 : 0 +7917 : 0 +7918 : 0 +7919 : 0 +7920 : 0 +7921 : 0 +7922 : 0 +7923 : 0 +7924 : 0 +7925 : 0 +7926 : 0 +7927 : 0 +7928 : 0 +7929 : 0 +7930 : 0 +7931 : 0 +7932 : 0 +7933 : 0 +7934 : 0 +7935 : 0 +7936 : 0 +7937 : 0 +7938 : 0 +7939 : 0 +7940 : 0 +7941 : 0 +7942 : 0 +7943 : 0 +7944 : 0 +7945 : 0 +7946 : 0 +7947 : 0 +7948 : 0 +7949 : 0 +7950 : 0 +7951 : 0 +7952 : 0 +7953 : 0 +7954 : 0 +7955 : 0 +7956 : 0 +7957 : 0 +7958 : 0 +7959 : 0 +7960 : 0 +7961 : 0 +7962 : 0 +7963 : 0 +7964 : 0 +7965 : 0 +7966 : 0 +7967 : 0 +7968 : 0 +7969 : 0 +7970 : 0 +7971 : 0 +7972 : 0 +7973 : 0 +7974 : 0 +7975 : 0 +7976 : 0 +7977 : 0 +7978 : 0 +7979 : 0 +7980 : 0 +7981 : 0 +7982 : 0 +7983 : 0 +7984 : 0 +7985 : 0 +7986 : 0 +7987 : 0 +7988 : 0 +7989 : 0 +7990 : 0 +7991 : 0 +7992 : 0 +7993 : 0 +7994 : 0 +7995 : 0 +7996 : 0 +7997 : 0 +7998 : 0 +7999 : 0 +8000 : 0 +8001 : 0 +8002 : 0 +8003 : 0 +8004 : 0 +8005 : 0 +8006 : 0 +8007 : 0 +8008 : 0 +8009 : 0 +8010 : 0 +8011 : 0 +8012 : 0 +8013 : 0 +8014 : 0 +8015 : 0 +8016 : 0 +8017 : 0 +8018 : 0 +8019 : 0 +8020 : 0 +8021 : 0 +8022 : 0 +8023 : 0 +8024 : 0 +8025 : 0 +8026 : 0 +8027 : 0 +8028 : 0 +8029 : 0 +8030 : 0 +8031 : 0 +8032 : 0 +8033 : 0 +8034 : 0 +8035 : 0 +8036 : 0 +8037 : 0 +8038 : 0 +8039 : 0 +8040 : 0 +8041 : 0 +8042 : 0 +8043 : 0 +8044 : 0 +8045 : 0 +8046 : 0 +8047 : 0 +8048 : 0 +8049 : 0 +8050 : 0 +8051 : 0 +8052 : 0 +8053 : 0 +8054 : 0 +8055 : 0 +8056 : 0 +8057 : 0 +8058 : 0 +8059 : 0 +8060 : 0 +8061 : 0 +8062 : 0 +8063 : 0 +8064 : 0 +8065 : 0 +8066 : 0 +8067 : 0 +8068 : 0 +8069 : 0 +8070 : 0 +8071 : 0 +8072 : 0 +8073 : 0 +8074 : 0 +8075 : 0 +8076 : 0 +8077 : 0 +8078 : 0 +8079 : 0 +8080 : 0 +8081 : 0 +8082 : 0 +8083 : 0 +8084 : 0 +8085 : 0 +8086 : 0 +8087 : 0 +8088 : 0 +8089 : 0 +8090 : 0 +8091 : 0 +8092 : 0 +8093 : 0 +8094 : 0 +8095 : 0 +8096 : 0 +8097 : 0 +8098 : 0 +8099 : 0 +8100 : 0 +8101 : 0 +8102 : 0 +8103 : 0 +8104 : 0 +8105 : 0 +8106 : 0 +8107 : 0 +8108 : 0 +8109 : 0 +8110 : 0 +8111 : 0 +8112 : 0 +8113 : 0 +8114 : 0 +8115 : 0 +8116 : 0 +8117 : 0 +8118 : 0 +8119 : 0 +8120 : 0 +8121 : 0 +8122 : 0 +8123 : 0 +8124 : 0 +8125 : 0 +8126 : 0 +8127 : 0 +8128 : 0 +8129 : 0 +8130 : 0 +8131 : 0 +8132 : 0 +8133 : 0 +8134 : 0 +8135 : 0 +8136 : 0 +8137 : 0 +8138 : 0 +8139 : 0 +8140 : 0 +8141 : 0 +8142 : 0 +8143 : 0 +8144 : 0 +8145 : 0 +8146 : 0 +8147 : 0 +8148 : 0 +8149 : 0 +8150 : 0 +8151 : 0 +8152 : 0 +8153 : 0 +8154 : 0 +8155 : 0 +8156 : 0 +8157 : 0 +8158 : 0 +8159 : 0 +8160 : 0 +8161 : 0 +8162 : 0 +8163 : 0 +8164 : 0 +8165 : 0 +8166 : 0 +8167 : 0 +8168 : 0 +8169 : 0 +8170 : 0 +8171 : 0 +8172 : 0 +8173 : 0 +8174 : 0 +8175 : 0 +8176 : 0 +8177 : 0 +8178 : 0 +8179 : 0 +8180 : 0 +8181 : 0 +8182 : 0 +8183 : 0 +8184 : 0 +8185 : 0 +8186 : 0 +8187 : 0 +8188 : 0 +8189 : 0 +8190 : 0 +8191 : 0 +8192 : 0 +8193 : 0 +8194 : 0 +8195 : 0 +8196 : 0 +8197 : 0 +8198 : 0 +8199 : 0 +8200 : 0 +8201 : 0 +8202 : 0 +8203 : 0 +8204 : 0 +8205 : 0 +8206 : 0 +8207 : 0 +8208 : 0 +8209 : 0 +8210 : 0 +8211 : 0 +8212 : 0 +8213 : 0 +8214 : 0 +8215 : 0 +8216 : 0 +8217 : 0 +8218 : 0 +8219 : 0 +8220 : 0 +8221 : 0 +8222 : 0 +8223 : 0 +8224 : 0 +8225 : 0 +8226 : 0 +8227 : 0 +8228 : 0 +8229 : 0 +8230 : 0 +8231 : 0 +8232 : 0 +8233 : 0 +8234 : 0 +8235 : 0 +8236 : 0 +8237 : 0 +8238 : 0 +8239 : 0 +8240 : 0 +8241 : 0 +8242 : 0 +8243 : 0 +8244 : 0 +8245 : 0 +8246 : 0 +8247 : 0 +8248 : 0 +8249 : 0 +8250 : 0 +8251 : 0 +8252 : 0 +8253 : 0 +8254 : 0 +8255 : 0 +8256 : 0 +8257 : 0 +8258 : 0 +8259 : 0 +8260 : 0 +8261 : 0 +8262 : 0 +8263 : 0 +8264 : 0 +8265 : 0 +8266 : 0 +8267 : 0 +8268 : 0 +8269 : 0 +8270 : 0 +8271 : 0 +8272 : 0 +8273 : 0 +8274 : 0 +8275 : 0 +8276 : 0 +8277 : 0 +8278 : 0 +8279 : 0 +8280 : 0 +8281 : 0 +8282 : 0 +8283 : 0 +8284 : 0 +8285 : 0 +8286 : 0 +8287 : 0 +8288 : 0 +8289 : 0 +8290 : 0 +8291 : 0 +8292 : 0 +8293 : 0 +8294 : 0 +8295 : 0 +8296 : 0 +8297 : 0 +8298 : 0 +8299 : 0 +8300 : 0 +8301 : 0 +8302 : 0 +8303 : 0 +8304 : 0 +8305 : 0 +8306 : 0 +8307 : 0 +8308 : 0 +8309 : 0 +8310 : 0 +8311 : 0 +8312 : 0 +8313 : 0 +8314 : 0 +8315 : 0 +8316 : 0 +8317 : 0 +8318 : 0 +8319 : 0 +8320 : 0 +8321 : 0 +8322 : 0 +8323 : 0 +8324 : 0 +8325 : 0 +8326 : 0 +8327 : 0 +8328 : 0 +8329 : 0 +8330 : 0 +8331 : 0 +8332 : 0 +8333 : 0 +8334 : 0 +8335 : 0 +8336 : 0 +8337 : 0 +8338 : 0 +8339 : 0 +8340 : 0 +8341 : 0 +8342 : 0 +8343 : 0 +8344 : 0 +8345 : 0 +8346 : 0 +8347 : 0 +8348 : 0 +8349 : 0 +8350 : 0 +8351 : 0 +8352 : 0 +8353 : 0 +8354 : 0 +8355 : 0 +8356 : 0 +8357 : 0 +8358 : 0 +8359 : 0 +8360 : 0 +8361 : 0 +8362 : 0 +8363 : 0 +8364 : 0 +8365 : 0 +8366 : 0 +8367 : 0 +8368 : 0 +8369 : 0 +8370 : 0 +8371 : 0 +8372 : 0 +8373 : 0 +8374 : 0 +8375 : 0 +8376 : 0 +8377 : 0 +8378 : 0 +8379 : 0 +8380 : 0 +8381 : 0 +8382 : 0 +8383 : 0 +8384 : 0 +8385 : 0 +8386 : 0 +8387 : 0 +8388 : 0 +8389 : 0 +8390 : 0 +8391 : 0 +8392 : 0 +8393 : 0 +8394 : 0 +8395 : 0 +8396 : 0 +8397 : 0 +8398 : 0 +8399 : 0 +8400 : 0 +8401 : 0 +8402 : 0 +8403 : 0 +8404 : 0 +8405 : 0 +8406 : 0 +8407 : 0 +8408 : 0 +8409 : 0 +8410 : 0 +8411 : 0 +8412 : 0 +8413 : 0 +8414 : 0 +8415 : 0 +8416 : 0 +8417 : 0 +8418 : 0 +8419 : 0 +8420 : 0 +8421 : 0 +8422 : 0 +8423 : 0 +8424 : 0 +8425 : 0 +8426 : 0 +8427 : 0 +8428 : 0 +8429 : 0 +8430 : 0 +8431 : 0 +8432 : 0 +8433 : 0 +8434 : 0 +8435 : 0 +8436 : 0 +8437 : 0 +8438 : 0 +8439 : 0 +8440 : 0 +8441 : 0 +8442 : 0 +8443 : 0 +8444 : 0 +8445 : 0 +8446 : 0 +8447 : 0 +8448 : 0 +8449 : 0 +8450 : 0 +8451 : 0 +8452 : 0 +8453 : 0 +8454 : 0 +8455 : 0 +8456 : 0 +8457 : 0 +8458 : 0 +8459 : 0 +8460 : 0 +8461 : 0 +8462 : 0 +8463 : 0 +8464 : 0 +8465 : 0 +8466 : 0 +8467 : 0 +8468 : 0 +8469 : 0 +8470 : 0 +8471 : 0 +8472 : 0 +8473 : 0 +8474 : 0 +8475 : 0 +8476 : 0 +8477 : 0 +8478 : 0 +8479 : 0 +8480 : 0 +8481 : 0 +8482 : 0 +8483 : 0 +8484 : 0 +8485 : 0 +8486 : 0 +8487 : 0 +8488 : 0 +8489 : 0 +8490 : 0 +8491 : 0 +8492 : 0 +8493 : 0 +8494 : 0 +8495 : 0 +8496 : 0 +8497 : 0 +8498 : 0 +8499 : 0 +8500 : 0 +8501 : 0 +8502 : 0 +8503 : 0 +8504 : 0 +8505 : 0 +8506 : 0 +8507 : 0 +8508 : 0 +8509 : 0 +8510 : 0 +8511 : 0 +8512 : 0 +8513 : 0 +8514 : 0 +8515 : 0 +8516 : 0 +8517 : 0 +8518 : 0 +8519 : 0 +8520 : 0 +8521 : 0 +8522 : 0 +8523 : 0 +8524 : 0 +8525 : 0 +8526 : 0 +8527 : 0 +8528 : 0 +8529 : 0 +8530 : 0 +8531 : 0 +8532 : 0 +8533 : 0 +8534 : 0 +8535 : 0 +8536 : 0 +8537 : 0 +8538 : 0 +8539 : 0 +8540 : 0 +8541 : 0 +8542 : 0 +8543 : 0 +8544 : 0 +8545 : 0 +8546 : 0 +8547 : 0 +8548 : 0 +8549 : 0 +8550 : 0 +8551 : 0 +8552 : 0 +8553 : 0 +8554 : 0 +8555 : 0 +8556 : 0 +8557 : 0 +8558 : 0 +8559 : 0 +8560 : 0 +8561 : 0 +8562 : 0 +8563 : 0 +8564 : 0 +8565 : 0 +8566 : 0 +8567 : 0 +8568 : 0 +8569 : 0 +8570 : 0 +8571 : 0 +8572 : 0 +8573 : 0 +8574 : 0 +8575 : 0 +8576 : 0 +8577 : 0 +8578 : 0 +8579 : 0 +8580 : 0 +8581 : 0 +8582 : 0 +8583 : 0 +8584 : 0 +8585 : 0 +8586 : 0 +8587 : 0 +8588 : 0 +8589 : 0 +8590 : 0 +8591 : 0 +8592 : 0 +8593 : 0 +8594 : 0 +8595 : 0 +8596 : 0 +8597 : 0 +8598 : 0 +8599 : 0 +8600 : 0 +8601 : 0 +8602 : 0 +8603 : 0 +8604 : 0 +8605 : 0 +8606 : 0 +8607 : 0 +8608 : 0 +8609 : 0 +8610 : 0 +8611 : 0 +8612 : 0 +8613 : 0 +8614 : 0 +8615 : 0 +8616 : 0 +8617 : 0 +8618 : 0 +8619 : 0 +8620 : 0 +8621 : 0 +8622 : 0 +8623 : 0 +8624 : 0 +8625 : 0 +8626 : 0 +8627 : 0 +8628 : 0 +8629 : 0 +8630 : 0 +8631 : 0 +8632 : 0 +8633 : 0 +8634 : 0 +8635 : 0 +8636 : 0 +8637 : 0 +8638 : 0 +8639 : 0 +8640 : 0 +8641 : 0 +8642 : 0 +8643 : 0 +8644 : 0 +8645 : 0 +8646 : 0 +8647 : 0 +8648 : 0 +8649 : 0 +8650 : 0 +8651 : 0 +8652 : 0 +8653 : 0 +8654 : 0 +8655 : 0 +8656 : 0 +8657 : 0 +8658 : 0 +8659 : 0 +8660 : 0 +8661 : 0 +8662 : 0 +8663 : 0 +8664 : 0 +8665 : 0 +8666 : 0 +8667 : 0 +8668 : 0 +8669 : 0 +8670 : 0 +8671 : 0 +8672 : 0 +8673 : 0 +8674 : 0 +8675 : 0 +8676 : 0 +8677 : 0 +8678 : 0 +8679 : 0 +8680 : 0 +8681 : 0 +8682 : 0 +8683 : 0 +8684 : 0 +8685 : 0 +8686 : 0 +8687 : 0 +8688 : 0 +8689 : 0 +8690 : 0 +8691 : 0 +8692 : 0 +8693 : 0 +8694 : 0 +8695 : 0 +8696 : 0 +8697 : 0 +8698 : 0 +8699 : 0 +8700 : 0 +8701 : 0 +8702 : 0 +8703 : 0 +8704 : 0 +8705 : 0 +8706 : 0 +8707 : 0 +8708 : 0 +8709 : 0 +8710 : 0 +8711 : 0 +8712 : 0 +8713 : 0 +8714 : 0 +8715 : 0 +8716 : 0 +8717 : 0 +8718 : 0 +8719 : 0 +8720 : 0 +8721 : 0 +8722 : 0 +8723 : 0 +8724 : 0 +8725 : 0 +8726 : 0 +8727 : 0 +8728 : 0 +8729 : 0 +8730 : 0 +8731 : 0 +8732 : 0 +8733 : 0 +8734 : 0 +8735 : 0 +8736 : 0 +8737 : 0 +8738 : 0 +8739 : 0 +8740 : 0 +8741 : 0 +8742 : 0 +8743 : 0 +8744 : 0 +8745 : 0 +8746 : 0 +8747 : 0 +8748 : 0 +8749 : 0 +8750 : 0 +8751 : 0 +8752 : 0 +8753 : 0 +8754 : 0 +8755 : 0 +8756 : 0 +8757 : 0 +8758 : 0 +8759 : 0 +8760 : 0 +8761 : 0 +8762 : 0 +8763 : 0 +8764 : 0 +8765 : 0 +8766 : 0 +8767 : 0 +8768 : 0 +8769 : 0 +8770 : 0 +8771 : 0 +8772 : 0 +8773 : 0 +8774 : 0 +8775 : 0 +8776 : 0 +8777 : 0 +8778 : 0 +8779 : 0 +8780 : 0 +8781 : 0 +8782 : 0 +8783 : 0 +8784 : 0 +8785 : 0 +8786 : 0 +8787 : 0 +8788 : 0 +8789 : 0 +8790 : 0 +8791 : 0 +8792 : 0 +8793 : 0 +8794 : 0 +8795 : 0 +8796 : 0 +8797 : 0 +8798 : 0 +8799 : 0 +8800 : 0 +8801 : 0 +8802 : 0 +8803 : 0 +8804 : 0 +8805 : 0 +8806 : 0 +8807 : 0 +8808 : 0 +8809 : 0 +8810 : 0 +8811 : 0 +8812 : 0 +8813 : 0 +8814 : 0 +8815 : 0 +8816 : 0 +8817 : 0 +8818 : 0 +8819 : 0 +8820 : 0 +8821 : 0 +8822 : 0 +8823 : 0 +8824 : 0 +8825 : 0 +8826 : 0 +8827 : 0 +8828 : 0 +8829 : 0 +8830 : 0 +8831 : 0 +8832 : 0 +8833 : 0 +8834 : 0 +8835 : 0 +8836 : 0 +8837 : 0 +8838 : 0 +8839 : 0 +8840 : 0 +8841 : 0 +8842 : 0 +8843 : 0 +8844 : 0 +8845 : 0 +8846 : 0 +8847 : 0 +8848 : 0 +8849 : 0 +8850 : 0 +8851 : 0 +8852 : 0 +8853 : 0 +8854 : 0 +8855 : 0 +8856 : 0 +8857 : 0 +8858 : 0 +8859 : 0 +8860 : 0 +8861 : 0 +8862 : 0 +8863 : 0 +8864 : 0 +8865 : 0 +8866 : 0 +8867 : 0 +8868 : 0 +8869 : 0 +8870 : 0 +8871 : 0 +8872 : 0 +8873 : 0 +8874 : 0 +8875 : 0 +8876 : 0 +8877 : 0 +8878 : 0 +8879 : 0 +8880 : 0 +8881 : 0 +8882 : 0 +8883 : 0 +8884 : 0 +8885 : 0 +8886 : 0 +8887 : 0 +8888 : 0 +8889 : 0 +8890 : 0 +8891 : 0 +8892 : 0 +8893 : 0 +8894 : 0 +8895 : 0 +8896 : 0 +8897 : 0 +8898 : 0 +8899 : 0 +8900 : 0 +8901 : 0 +8902 : 0 +8903 : 0 +8904 : 0 +8905 : 0 +8906 : 0 +8907 : 0 +8908 : 0 +8909 : 0 +8910 : 0 +8911 : 0 +8912 : 0 +8913 : 0 +8914 : 0 +8915 : 0 +8916 : 0 +8917 : 0 +8918 : 0 +8919 : 0 +8920 : 0 +8921 : 0 +8922 : 0 +8923 : 0 +8924 : 0 +8925 : 0 +8926 : 0 +8927 : 0 +8928 : 0 +8929 : 0 +8930 : 0 +8931 : 0 +8932 : 0 +8933 : 0 +8934 : 0 +8935 : 0 +8936 : 0 +8937 : 0 +8938 : 0 +8939 : 0 +8940 : 0 +8941 : 0 +8942 : 0 +8943 : 0 +8944 : 0 +8945 : 0 +8946 : 0 +8947 : 0 +8948 : 0 +8949 : 0 +8950 : 0 +8951 : 0 +8952 : 0 +8953 : 0 +8954 : 0 +8955 : 0 +8956 : 0 +8957 : 0 +8958 : 0 +8959 : 0 +8960 : 0 +8961 : 0 +8962 : 0 +8963 : 0 +8964 : 0 +8965 : 0 +8966 : 0 +8967 : 0 +8968 : 0 +8969 : 0 +8970 : 0 +8971 : 0 +8972 : 0 +8973 : 0 +8974 : 0 +8975 : 0 +8976 : 0 +8977 : 0 +8978 : 0 +8979 : 0 +8980 : 0 +8981 : 0 +8982 : 0 +8983 : 0 +8984 : 0 +8985 : 0 +8986 : 0 +8987 : 0 +8988 : 0 +8989 : 0 +8990 : 0 +8991 : 0 +8992 : 0 +8993 : 0 +8994 : 0 +8995 : 0 +8996 : 0 +8997 : 0 +8998 : 0 +8999 : 0 +9000 : 0 +9001 : 0 +9002 : 0 +9003 : 0 +9004 : 0 +9005 : 0 +9006 : 0 +9007 : 0 +9008 : 0 +9009 : 0 +9010 : 0 +9011 : 0 +9012 : 0 +9013 : 0 +9014 : 0 +9015 : 0 +9016 : 0 +9017 : 0 +9018 : 0 +9019 : 0 +9020 : 0 +9021 : 0 +9022 : 0 +9023 : 0 +9024 : 0 +9025 : 0 +9026 : 0 +9027 : 0 +9028 : 0 +9029 : 0 +9030 : 0 +9031 : 0 +9032 : 0 +9033 : 0 +9034 : 0 +9035 : 0 +9036 : 0 +9037 : 0 +9038 : 0 +9039 : 0 +9040 : 0 +9041 : 0 +9042 : 0 +9043 : 0 +9044 : 0 +9045 : 0 +9046 : 0 +9047 : 0 +9048 : 0 +9049 : 0 +9050 : 0 +9051 : 0 +9052 : 0 +9053 : 0 +9054 : 0 +9055 : 0 +9056 : 0 +9057 : 0 +9058 : 0 +9059 : 0 +9060 : 0 +9061 : 0 +9062 : 0 +9063 : 0 +9064 : 0 +9065 : 0 +9066 : 0 +9067 : 0 +9068 : 0 +9069 : 0 +9070 : 0 +9071 : 0 +9072 : 0 +9073 : 0 +9074 : 0 +9075 : 0 +9076 : 0 +9077 : 0 +9078 : 0 +9079 : 0 +9080 : 0 +9081 : 0 +9082 : 0 +9083 : 0 +9084 : 0 +9085 : 0 +9086 : 0 +9087 : 0 +9088 : 0 +9089 : 0 +9090 : 0 +9091 : 0 +9092 : 0 +9093 : 0 +9094 : 0 +9095 : 0 +9096 : 0 +9097 : 0 +9098 : 0 +9099 : 0 +9100 : 0 +9101 : 0 +9102 : 0 +9103 : 0 +9104 : 0 +9105 : 0 +9106 : 0 +9107 : 0 +9108 : 0 +9109 : 0 +9110 : 0 +9111 : 0 +9112 : 0 +9113 : 0 +9114 : 0 +9115 : 0 +9116 : 0 +9117 : 0 +9118 : 0 +9119 : 0 +9120 : 0 +9121 : 0 +9122 : 0 +9123 : 0 +9124 : 0 +9125 : 0 +9126 : 0 +9127 : 0 +9128 : 0 +9129 : 0 +9130 : 0 +9131 : 0 +9132 : 0 +9133 : 0 +9134 : 0 +9135 : 0 +9136 : 0 +9137 : 0 +9138 : 0 +9139 : 0 +9140 : 0 +9141 : 0 +9142 : 0 +9143 : 0 +9144 : 0 +9145 : 0 +9146 : 0 +9147 : 0 +9148 : 0 +9149 : 0 +9150 : 0 +9151 : 0 +9152 : 0 +9153 : 0 +9154 : 0 +9155 : 0 +9156 : 0 +9157 : 0 +9158 : 0 +9159 : 0 +9160 : 0 +9161 : 0 +9162 : 0 +9163 : 0 +9164 : 0 +9165 : 0 +9166 : 0 +9167 : 0 +9168 : 0 +9169 : 0 +9170 : 0 +9171 : 0 +9172 : 0 +9173 : 0 +9174 : 0 +9175 : 0 +9176 : 0 +9177 : 0 +9178 : 0 +9179 : 0 +9180 : 0 +9181 : 0 +9182 : 0 +9183 : 0 +9184 : 0 +9185 : 0 +9186 : 0 +9187 : 0 +9188 : 0 +9189 : 0 +9190 : 0 +9191 : 0 +9192 : 0 +9193 : 0 +9194 : 0 +9195 : 0 +9196 : 0 +9197 : 0 +9198 : 0 +9199 : 0 +9200 : 0 +9201 : 0 +9202 : 0 +9203 : 0 +9204 : 0 +9205 : 0 +9206 : 0 +9207 : 0 +9208 : 0 +9209 : 0 +9210 : 0 +9211 : 0 +9212 : 0 +9213 : 0 +9214 : 0 +9215 : 0 +9216 : 0 +9217 : 0 +9218 : 0 +9219 : 0 +9220 : 0 +9221 : 0 +9222 : 0 +9223 : 0 +9224 : 0 +9225 : 0 +9226 : 0 +9227 : 0 +9228 : 0 +9229 : 0 +9230 : 0 +9231 : 0 +9232 : 0 +9233 : 0 +9234 : 0 +9235 : 0 +9236 : 0 +9237 : 0 +9238 : 0 +9239 : 0 +9240 : 0 +9241 : 0 +9242 : 0 +9243 : 0 +9244 : 0 +9245 : 0 +9246 : 0 +9247 : 0 +9248 : 0 +9249 : 0 +9250 : 0 +9251 : 0 +9252 : 0 +9253 : 0 +9254 : 0 +9255 : 0 +9256 : 0 +9257 : 0 +9258 : 0 +9259 : 0 +9260 : 0 +9261 : 0 +9262 : 0 +9263 : 0 +9264 : 0 +9265 : 0 +9266 : 0 +9267 : 0 +9268 : 0 +9269 : 0 +9270 : 0 +9271 : 0 +9272 : 0 +9273 : 0 +9274 : 0 +9275 : 0 +9276 : 0 +9277 : 0 +9278 : 0 +9279 : 0 +9280 : 0 +9281 : 0 +9282 : 0 +9283 : 0 +9284 : 0 +9285 : 0 +9286 : 0 +9287 : 0 +9288 : 0 +9289 : 0 +9290 : 0 +9291 : 0 +9292 : 0 +9293 : 0 +9294 : 0 +9295 : 0 +9296 : 0 +9297 : 0 +9298 : 0 +9299 : 0 +9300 : 0 +9301 : 0 +9302 : 0 +9303 : 0 +9304 : 0 +9305 : 0 +9306 : 0 +9307 : 0 +9308 : 0 +9309 : 0 +9310 : 0 +9311 : 0 +9312 : 0 +9313 : 0 +9314 : 0 +9315 : 0 +9316 : 0 +9317 : 0 +9318 : 0 +9319 : 0 +9320 : 0 +9321 : 0 +9322 : 0 +9323 : 0 +9324 : 0 +9325 : 0 +9326 : 0 +9327 : 0 +9328 : 0 +9329 : 0 +9330 : 0 +9331 : 0 +9332 : 0 +9333 : 0 +9334 : 0 +9335 : 0 +9336 : 0 +9337 : 0 +9338 : 0 +9339 : 0 +9340 : 0 +9341 : 0 +9342 : 0 +9343 : 0 +9344 : 0 +9345 : 0 +9346 : 0 +9347 : 0 +9348 : 0 +9349 : 0 +9350 : 0 +9351 : 0 +9352 : 0 +9353 : 0 +9354 : 0 +9355 : 0 +9356 : 0 +9357 : 0 +9358 : 0 +9359 : 0 +9360 : 0 +9361 : 0 +9362 : 0 +9363 : 0 +9364 : 0 +9365 : 0 +9366 : 0 +9367 : 0 +9368 : 0 +9369 : 0 +9370 : 0 +9371 : 0 +9372 : 0 +9373 : 0 +9374 : 0 +9375 : 0 +9376 : 0 +9377 : 0 +9378 : 0 +9379 : 0 +9380 : 0 +9381 : 0 +9382 : 0 +9383 : 0 +9384 : 0 +9385 : 0 +9386 : 0 +9387 : 0 +9388 : 0 +9389 : 0 +9390 : 0 +9391 : 0 +9392 : 0 +9393 : 0 +9394 : 0 +9395 : 0 +9396 : 0 +9397 : 0 +9398 : 0 +9399 : 0 +9400 : 0 +9401 : 0 +9402 : 0 +9403 : 0 +9404 : 0 +9405 : 0 +9406 : 0 +9407 : 0 +9408 : 0 +9409 : 0 +9410 : 0 +9411 : 0 +9412 : 0 +9413 : 0 +9414 : 0 +9415 : 0 +9416 : 0 +9417 : 0 +9418 : 0 +9419 : 0 +9420 : 0 +9421 : 0 +9422 : 0 +9423 : 0 +9424 : 0 +9425 : 0 +9426 : 0 +9427 : 0 +9428 : 0 +9429 : 0 +9430 : 0 +9431 : 0 +9432 : 0 +9433 : 0 +9434 : 0 +9435 : 0 +9436 : 0 +9437 : 0 +9438 : 0 +9439 : 0 +9440 : 0 +9441 : 0 +9442 : 0 +9443 : 0 +9444 : 0 +9445 : 0 +9446 : 0 +9447 : 0 +9448 : 0 +9449 : 0 +9450 : 0 +9451 : 0 +9452 : 0 +9453 : 0 +9454 : 0 +9455 : 0 +9456 : 0 +9457 : 0 +9458 : 0 +9459 : 0 +9460 : 0 +9461 : 0 +9462 : 0 +9463 : 0 +9464 : 0 +9465 : 0 +9466 : 0 +9467 : 0 +9468 : 0 +9469 : 0 +9470 : 0 +9471 : 0 +9472 : 0 +9473 : 0 +9474 : 0 +9475 : 0 +9476 : 0 +9477 : 0 +9478 : 0 +9479 : 0 +9480 : 0 +9481 : 0 +9482 : 0 +9483 : 0 +9484 : 0 +9485 : 0 +9486 : 0 +9487 : 0 +9488 : 0 +9489 : 0 +9490 : 0 +9491 : 0 +9492 : 0 +9493 : 0 +9494 : 0 +9495 : 0 +9496 : 0 +9497 : 0 +9498 : 0 +9499 : 0 +9500 : 0 +9501 : 0 +9502 : 0 +9503 : 0 +9504 : 0 +9505 : 0 +9506 : 0 +9507 : 0 +9508 : 0 +9509 : 0 +9510 : 0 +9511 : 0 +9512 : 0 +9513 : 0 +9514 : 0 +9515 : 0 +9516 : 0 +9517 : 0 +9518 : 0 +9519 : 0 +9520 : 0 +9521 : 0 +9522 : 0 +9523 : 0 +9524 : 0 +9525 : 0 +9526 : 0 +9527 : 0 +9528 : 0 +9529 : 0 +9530 : 0 +9531 : 0 +9532 : 0 +9533 : 0 +9534 : 0 +9535 : 0 +9536 : 0 +9537 : 0 +9538 : 0 +9539 : 0 +9540 : 0 +9541 : 0 +9542 : 0 +9543 : 0 +9544 : 0 +9545 : 0 +9546 : 0 +9547 : 0 +9548 : 0 +9549 : 0 +9550 : 0 +9551 : 0 +9552 : 0 +9553 : 0 +9554 : 0 +9555 : 0 +9556 : 0 +9557 : 0 +9558 : 0 +9559 : 0 +9560 : 0 +9561 : 0 +9562 : 0 +9563 : 0 +9564 : 0 +9565 : 0 +9566 : 0 +9567 : 0 +9568 : 0 +9569 : 0 +9570 : 0 +9571 : 0 +9572 : 0 +9573 : 0 +9574 : 0 +9575 : 0 +9576 : 0 +9577 : 0 +9578 : 0 +9579 : 0 +9580 : 0 +9581 : 0 +9582 : 0 +9583 : 0 +9584 : 0 +9585 : 0 +9586 : 0 +9587 : 0 +9588 : 0 +9589 : 0 +9590 : 0 +9591 : 0 +9592 : 0 +9593 : 0 +9594 : 0 +9595 : 0 +9596 : 0 +9597 : 0 +9598 : 0 +9599 : 0 +9600 : 0 +9601 : 0 +9602 : 0 +9603 : 0 +9604 : 0 +9605 : 0 +9606 : 0 +9607 : 0 +9608 : 0 +9609 : 0 +9610 : 0 +9611 : 0 +9612 : 0 +9613 : 0 +9614 : 0 +9615 : 0 +9616 : 0 +9617 : 0 +9618 : 0 +9619 : 0 +9620 : 0 +9621 : 0 +9622 : 0 +9623 : 0 +9624 : 0 +9625 : 0 +9626 : 0 +9627 : 0 +9628 : 0 +9629 : 0 +9630 : 0 +9631 : 0 +9632 : 0 +9633 : 0 +9634 : 0 +9635 : 0 +9636 : 0 +9637 : 0 +9638 : 0 +9639 : 0 +9640 : 0 +9641 : 0 +9642 : 0 +9643 : 0 +9644 : 0 +9645 : 0 +9646 : 0 +9647 : 0 +9648 : 0 +9649 : 0 +9650 : 0 +9651 : 0 +9652 : 0 +9653 : 0 +9654 : 0 +9655 : 0 +9656 : 0 +9657 : 0 +9658 : 0 +9659 : 0 +9660 : 0 +9661 : 0 +9662 : 0 +9663 : 0 +9664 : 0 +9665 : 0 +9666 : 0 +9667 : 0 +9668 : 0 +9669 : 0 +9670 : 0 +9671 : 0 +9672 : 0 +9673 : 0 +9674 : 0 +9675 : 0 +9676 : 0 +9677 : 0 +9678 : 0 +9679 : 0 +9680 : 0 +9681 : 0 +9682 : 0 +9683 : 0 +9684 : 0 +9685 : 0 +9686 : 0 +9687 : 0 +9688 : 0 +9689 : 0 +9690 : 0 +9691 : 0 +9692 : 0 +9693 : 0 +9694 : 0 +9695 : 0 +9696 : 0 +9697 : 0 +9698 : 0 +9699 : 0 +9700 : 0 +9701 : 0 +9702 : 0 +9703 : 0 +9704 : 0 +9705 : 0 +9706 : 0 +9707 : 0 +9708 : 0 +9709 : 0 +9710 : 0 +9711 : 0 +9712 : 0 +9713 : 0 +9714 : 0 +9715 : 0 +9716 : 0 +9717 : 0 +9718 : 0 +9719 : 0 +9720 : 0 +9721 : 0 +9722 : 0 +9723 : 0 +9724 : 0 +9725 : 0 +9726 : 0 +9727 : 0 +9728 : 0 +9729 : 0 +9730 : 0 +9731 : 0 +9732 : 0 +9733 : 0 +9734 : 0 +9735 : 0 +9736 : 0 +9737 : 0 +9738 : 0 +9739 : 0 +9740 : 0 +9741 : 0 +9742 : 0 +9743 : 0 +9744 : 0 +9745 : 0 +9746 : 0 +9747 : 0 +9748 : 0 +9749 : 0 +9750 : 0 +9751 : 0 +9752 : 0 +9753 : 0 +9754 : 0 +9755 : 0 +9756 : 0 +9757 : 0 +9758 : 0 +9759 : 0 +9760 : 0 +9761 : 0 +9762 : 0 +9763 : 0 +9764 : 0 +9765 : 0 +9766 : 0 +9767 : 0 +9768 : 0 +9769 : 0 +9770 : 0 +9771 : 0 +9772 : 0 +9773 : 0 +9774 : 0 +9775 : 0 +9776 : 0 +9777 : 0 +9778 : 0 +9779 : 0 +9780 : 0 +9781 : 0 +9782 : 0 +9783 : 0 +9784 : 0 +9785 : 0 +9786 : 0 +9787 : 0 +9788 : 0 +9789 : 0 +9790 : 0 +9791 : 0 +9792 : 0 +9793 : 0 +9794 : 0 +9795 : 0 +9796 : 0 +9797 : 0 +9798 : 0 +9799 : 0 +9800 : 0 +9801 : 0 +9802 : 0 +9803 : 0 +9804 : 0 +9805 : 0 +9806 : 0 +9807 : 0 +9808 : 0 +9809 : 0 +9810 : 0 +9811 : 0 +9812 : 0 +9813 : 0 +9814 : 0 +9815 : 0 +9816 : 0 +9817 : 0 +9818 : 0 +9819 : 0 +9820 : 0 +9821 : 0 +9822 : 0 +9823 : 0 +9824 : 0 +9825 : 0 +9826 : 0 +9827 : 0 +9828 : 0 +9829 : 0 +9830 : 0 +9831 : 0 +9832 : 0 +9833 : 0 +9834 : 0 +9835 : 0 +9836 : 0 +9837 : 0 +9838 : 0 +9839 : 0 +9840 : 0 +9841 : 0 +9842 : 0 +9843 : 0 +9844 : 0 +9845 : 0 +9846 : 0 +9847 : 0 +9848 : 0 +9849 : 0 +9850 : 0 +9851 : 0 +9852 : 0 +9853 : 0 +9854 : 0 +9855 : 0 +9856 : 0 +9857 : 0 +9858 : 0 +9859 : 0 +9860 : 0 +9861 : 0 +9862 : 0 +9863 : 0 +9864 : 0 +9865 : 0 +9866 : 0 +9867 : 0 +9868 : 0 +9869 : 0 +9870 : 0 +9871 : 0 +9872 : 0 +9873 : 0 +9874 : 0 +9875 : 0 +9876 : 0 +9877 : 0 +9878 : 0 +9879 : 0 +9880 : 0 +9881 : 0 +9882 : 0 +9883 : 0 +9884 : 0 +9885 : 0 +9886 : 0 +9887 : 0 +9888 : 0 +9889 : 0 +9890 : 0 +9891 : 0 +9892 : 0 +9893 : 0 +9894 : 0 +9895 : 0 +9896 : 0 +9897 : 0 +9898 : 0 +9899 : 0 +9900 : 0 +9901 : 0 +9902 : 0 +9903 : 0 +9904 : 0 +9905 : 0 +9906 : 0 +9907 : 0 +9908 : 0 +9909 : 0 +9910 : 0 +9911 : 0 +9912 : 0 +9913 : 0 +9914 : 0 +9915 : 0 +9916 : 0 +9917 : 0 +9918 : 0 +9919 : 0 +9920 : 0 +9921 : 0 +9922 : 0 +9923 : 0 +9924 : 0 +9925 : 0 +9926 : 0 +9927 : 0 +9928 : 0 +9929 : 0 +9930 : 0 +9931 : 0 +9932 : 0 +9933 : 0 +9934 : 0 +9935 : 0 +9936 : 0 +9937 : 0 +9938 : 0 +9939 : 0 +9940 : 0 +9941 : 0 +9942 : 0 +9943 : 0 +9944 : 0 +9945 : 0 +9946 : 0 +9947 : 0 +9948 : 0 +9949 : 0 +9950 : 0 +9951 : 0 +9952 : 0 +9953 : 0 +9954 : 0 +9955 : 0 +9956 : 0 +9957 : 0 +9958 : 0 +9959 : 0 +9960 : 0 +9961 : 0 +9962 : 0 +9963 : 0 +9964 : 0 +9965 : 0 +9966 : 0 +9967 : 0 +9968 : 0 +9969 : 0 +9970 : 0 +9971 : 0 +9972 : 0 +9973 : 0 +9974 : 0 +9975 : 0 +9976 : 0 +9977 : 0 +9978 : 0 +9979 : 0 +9980 : 0 +9981 : 0 +9982 : 0 +9983 : 0 +9984 : 0 +9985 : 0 +9986 : 0 +9987 : 0 +9988 : 0 +9989 : 0 +9990 : 0 +9991 : 0 +9992 : 0 +9993 : 0 +9994 : 0 +9995 : 0 +9996 : 0 +9997 : 0 +9998 : 0 +9999 : 0 +10000 : 0 +10001 : 0 +10002 : 0 +10003 : 0 +10004 : 0 +10005 : 0 +10006 : 0 +10007 : 0 +10008 : 0 +10009 : 0 +10010 : 0 +10011 : 0 +10012 : 0 +10013 : 0 +10014 : 0 +10015 : 0 +10016 : 0 +10017 : 0 +10018 : 0 +10019 : 0 +10020 : 0 +10021 : 0 +10022 : 0 +10023 : 0 +10024 : 0 +10025 : 0 +10026 : 0 +10027 : 0 +10028 : 0 +10029 : 0 +10030 : 0 +10031 : 0 +10032 : 0 +10033 : 0 +10034 : 0 +10035 : 0 +10036 : 0 +10037 : 0 +10038 : 0 +10039 : 0 +10040 : 0 +10041 : 0 +10042 : 0 +10043 : 0 +10044 : 0 +10045 : 0 +10046 : 0 +10047 : 0 +10048 : 0 +10049 : 0 +10050 : 0 +10051 : 0 +10052 : 0 +10053 : 0 +10054 : 0 +10055 : 0 +10056 : 0 +10057 : 0 +10058 : 0 +10059 : 0 +10060 : 0 +10061 : 0 +10062 : 0 +10063 : 0 +10064 : 0 +10065 : 0 +10066 : 0 +10067 : 0 +10068 : 0 +10069 : 0 +10070 : 0 +10071 : 0 +10072 : 0 +10073 : 0 +10074 : 0 +10075 : 0 +10076 : 0 +10077 : 0 +10078 : 0 +10079 : 0 +10080 : 0 +10081 : 0 +10082 : 0 +10083 : 0 +10084 : 0 +10085 : 0 +10086 : 0 +10087 : 0 +10088 : 0 +10089 : 0 +10090 : 0 +10091 : 0 +10092 : 0 +10093 : 0 +10094 : 0 +10095 : 0 +10096 : 0 +10097 : 0 +10098 : 0 +10099 : 0 +10100 : 0 +10101 : 0 +10102 : 0 +10103 : 0 +10104 : 0 +10105 : 0 +10106 : 0 +10107 : 0 +10108 : 0 +10109 : 0 +10110 : 0 +10111 : 0 +10112 : 0 +10113 : 0 +10114 : 0 +10115 : 0 +10116 : 0 +10117 : 0 +10118 : 0 +10119 : 0 +10120 : 0 +10121 : 0 +10122 : 0 +10123 : 0 +10124 : 0 +10125 : 0 +10126 : 0 +10127 : 0 +10128 : 0 +10129 : 0 +10130 : 0 +10131 : 0 +10132 : 0 +10133 : 0 +10134 : 0 +10135 : 0 +10136 : 0 +10137 : 0 +10138 : 0 +10139 : 0 +10140 : 0 +10141 : 0 +10142 : 0 +10143 : 0 +10144 : 0 +10145 : 0 +10146 : 0 +10147 : 0 +10148 : 0 +10149 : 0 +10150 : 0 +10151 : 0 +10152 : 0 +10153 : 0 +10154 : 0 +10155 : 0 +10156 : 0 +10157 : 0 +10158 : 0 +10159 : 0 +10160 : 0 +10161 : 0 +10162 : 0 +10163 : 0 +10164 : 0 +10165 : 0 +10166 : 0 +10167 : 0 +10168 : 0 +10169 : 0 +10170 : 0 +10171 : 0 +10172 : 0 +10173 : 0 +10174 : 0 +10175 : 0 +10176 : 0 +10177 : 0 +10178 : 0 +10179 : 0 +10180 : 0 +10181 : 0 +10182 : 0 +10183 : 0 +10184 : 0 +10185 : 0 +10186 : 0 +10187 : 0 +10188 : 0 +10189 : 0 +10190 : 0 +10191 : 0 +10192 : 0 +10193 : 0 +10194 : 0 +10195 : 0 +10196 : 0 +10197 : 0 +10198 : 0 +10199 : 0 +10200 : 0 +10201 : 0 +10202 : 0 +10203 : 0 +10204 : 0 +10205 : 0 +10206 : 0 +10207 : 0 +10208 : 0 +10209 : 0 +10210 : 0 +10211 : 0 +10212 : 0 +10213 : 0 +10214 : 0 +10215 : 0 +10216 : 0 +10217 : 0 +10218 : 0 +10219 : 0 +10220 : 0 +10221 : 0 +10222 : 0 +10223 : 0 +10224 : 0 +10225 : 0 +10226 : 0 +10227 : 0 +10228 : 0 +10229 : 0 +10230 : 0 +10231 : 0 +10232 : 0 +10233 : 0 +10234 : 0 +10235 : 0 +10236 : 0 +10237 : 0 +10238 : 0 +10239 : 0 +10240 : 0 +10241 : 0 +10242 : 0 +10243 : 0 +10244 : 0 +10245 : 0 +10246 : 0 +10247 : 0 +10248 : 0 +10249 : 0 +10250 : 0 +10251 : 0 +10252 : 0 +10253 : 0 +10254 : 0 +10255 : 0 +10256 : 0 +10257 : 0 +10258 : 0 +10259 : 0 +10260 : 0 +10261 : 0 +10262 : 0 +10263 : 0 +10264 : 0 +10265 : 0 +10266 : 0 +10267 : 0 +10268 : 0 +10269 : 0 +10270 : 0 +10271 : 0 +10272 : 0 +10273 : 0 +10274 : 0 +10275 : 0 +10276 : 0 +10277 : 0 +10278 : 0 +10279 : 0 +10280 : 0 +10281 : 0 +10282 : 0 +10283 : 0 +10284 : 0 +10285 : 0 +10286 : 0 +10287 : 0 +10288 : 0 +10289 : 0 +10290 : 0 +10291 : 0 +10292 : 0 +10293 : 0 +10294 : 0 +10295 : 0 +10296 : 0 +10297 : 0 +10298 : 0 +10299 : 0 +10300 : 0 +10301 : 0 +10302 : 0 +10303 : 0 +10304 : 0 +10305 : 0 +10306 : 0 +10307 : 0 +10308 : 0 +10309 : 0 +10310 : 0 +10311 : 0 +10312 : 0 +10313 : 0 +10314 : 0 +10315 : 0 +10316 : 0 +10317 : 0 +10318 : 0 +10319 : 0 +10320 : 0 +10321 : 0 +10322 : 0 +10323 : 0 +10324 : 0 +10325 : 0 +10326 : 0 +10327 : 0 +10328 : 0 +10329 : 0 +10330 : 0 +10331 : 0 +10332 : 0 +10333 : 0 +10334 : 0 +10335 : 0 +10336 : 0 +10337 : 0 +10338 : 0 +10339 : 0 +10340 : 0 +10341 : 0 +10342 : 0 +10343 : 0 +10344 : 0 +10345 : 0 +10346 : 0 +10347 : 0 +10348 : 0 +10349 : 0 +10350 : 0 +10351 : 0 +10352 : 0 +10353 : 0 +10354 : 0 +10355 : 0 +10356 : 0 +10357 : 0 +10358 : 0 +10359 : 0 +10360 : 0 +10361 : 0 +10362 : 0 +10363 : 0 +10364 : 0 +10365 : 0 +10366 : 0 +10367 : 0 +10368 : 0 +10369 : 0 +10370 : 0 +10371 : 0 +10372 : 0 +10373 : 0 +10374 : 0 +10375 : 0 +10376 : 0 +10377 : 0 +10378 : 0 +10379 : 0 +10380 : 0 +10381 : 0 +10382 : 0 +10383 : 0 +10384 : 0 +10385 : 0 +10386 : 0 +10387 : 0 +10388 : 0 +10389 : 0 +10390 : 0 +10391 : 0 +10392 : 0 +10393 : 0 +10394 : 0 +10395 : 0 +10396 : 0 +10397 : 0 +10398 : 0 +10399 : 0 +10400 : 0 +10401 : 0 +10402 : 0 +10403 : 0 +10404 : 0 +10405 : 0 +10406 : 0 +10407 : 0 +10408 : 0 +10409 : 0 +10410 : 0 +10411 : 0 +10412 : 0 +10413 : 0 +10414 : 0 +10415 : 0 +10416 : 0 +10417 : 0 +10418 : 0 +10419 : 0 +10420 : 0 +10421 : 0 +10422 : 0 +10423 : 0 +10424 : 0 +10425 : 0 +10426 : 0 +10427 : 0 +10428 : 0 +10429 : 0 +10430 : 0 +10431 : 0 +10432 : 0 +10433 : 0 +10434 : 0 +10435 : 0 +10436 : 0 +10437 : 0 +10438 : 0 +10439 : 0 +10440 : 0 +10441 : 0 +10442 : 0 +10443 : 0 +10444 : 0 +10445 : 0 +10446 : 0 +10447 : 0 +10448 : 0 +10449 : 0 +10450 : 0 +10451 : 0 +10452 : 0 +10453 : 0 +10454 : 0 +10455 : 0 +10456 : 0 +10457 : 0 +10458 : 0 +10459 : 0 +10460 : 0 +10461 : 0 +10462 : 0 +10463 : 0 +10464 : 0 +10465 : 0 +10466 : 0 +10467 : 0 +10468 : 0 +10469 : 0 +10470 : 0 +10471 : 0 +10472 : 0 +10473 : 0 +10474 : 0 +10475 : 0 +10476 : 0 +10477 : 0 +10478 : 0 +10479 : 0 +10480 : 0 +10481 : 0 +10482 : 0 +10483 : 0 +10484 : 0 +10485 : 0 +10486 : 0 +10487 : 0 +10488 : 0 +10489 : 0 +10490 : 0 +10491 : 0 +10492 : 0 +10493 : 0 +10494 : 0 +10495 : 0 +10496 : 0 +10497 : 0 +10498 : 0 +10499 : 0 +10500 : 0 +10501 : 0 +10502 : 0 +10503 : 0 +10504 : 0 +10505 : 0 +10506 : 0 +10507 : 0 +10508 : 0 +10509 : 0 +10510 : 0 +10511 : 0 +10512 : 0 +10513 : 0 +10514 : 0 +10515 : 0 +10516 : 0 +10517 : 0 +10518 : 0 +10519 : 0 +10520 : 0 +10521 : 0 +10522 : 0 +10523 : 0 +10524 : 0 +10525 : 0 +10526 : 0 +10527 : 0 +10528 : 0 +10529 : 0 +10530 : 0 +10531 : 0 +10532 : 0 +10533 : 0 +10534 : 0 +10535 : 0 +10536 : 0 +10537 : 0 +10538 : 0 +10539 : 0 +10540 : 0 +10541 : 0 +10542 : 0 +10543 : 0 +10544 : 0 +10545 : 0 +10546 : 0 +10547 : 0 +10548 : 0 +10549 : 0 +10550 : 0 +10551 : 0 +10552 : 0 +10553 : 0 +10554 : 0 +10555 : 0 +10556 : 0 +10557 : 0 +10558 : 0 +10559 : 0 +10560 : 0 +10561 : 0 +10562 : 0 +10563 : 0 +10564 : 0 +10565 : 0 +10566 : 0 +10567 : 0 +10568 : 0 +10569 : 0 +10570 : 0 +10571 : 0 +10572 : 0 +10573 : 0 +10574 : 0 +10575 : 0 +10576 : 0 +10577 : 0 +10578 : 0 +10579 : 0 +10580 : 0 +10581 : 0 +10582 : 0 +10583 : 0 +10584 : 0 +10585 : 0 +10586 : 0 +10587 : 0 +10588 : 0 +10589 : 0 +10590 : 0 +10591 : 0 +10592 : 0 +10593 : 0 +10594 : 0 +10595 : 0 +10596 : 0 +10597 : 0 +10598 : 0 +10599 : 0 +10600 : 0 +10601 : 0 +10602 : 0 +10603 : 0 +10604 : 0 +10605 : 0 +10606 : 0 +10607 : 0 +10608 : 0 +10609 : 0 +10610 : 0 +10611 : 0 +10612 : 0 +10613 : 0 +10614 : 0 +10615 : 0 +10616 : 0 +10617 : 0 +10618 : 0 +10619 : 0 +10620 : 0 +10621 : 0 +10622 : 0 +10623 : 0 +10624 : 0 +10625 : 0 +10626 : 0 +10627 : 0 +10628 : 0 +10629 : 0 +10630 : 0 +10631 : 0 +10632 : 0 +10633 : 0 +10634 : 0 +10635 : 0 +10636 : 0 +10637 : 0 +10638 : 0 +10639 : 0 +10640 : 0 +10641 : 0 +10642 : 0 +10643 : 0 +10644 : 0 +10645 : 0 +10646 : 0 +10647 : 0 +10648 : 0 +10649 : 0 +10650 : 0 +10651 : 0 +10652 : 0 +10653 : 0 +10654 : 0 +10655 : 0 +10656 : 0 +10657 : 0 +10658 : 0 +10659 : 0 +10660 : 0 +10661 : 0 +10662 : 0 +10663 : 0 +10664 : 0 +10665 : 0 +10666 : 0 +10667 : 0 +10668 : 0 +10669 : 0 +10670 : 0 +10671 : 0 +10672 : 0 +10673 : 0 +10674 : 0 +10675 : 0 +10676 : 0 +10677 : 0 +10678 : 0 +10679 : 0 +10680 : 0 +10681 : 0 +10682 : 0 +10683 : 0 +10684 : 0 +10685 : 0 +10686 : 0 +10687 : 0 +10688 : 0 +10689 : 0 +10690 : 0 +10691 : 0 +10692 : 0 +10693 : 0 +10694 : 0 +10695 : 0 +10696 : 0 +10697 : 0 +10698 : 0 +10699 : 0 +10700 : 0 +10701 : 0 +10702 : 0 +10703 : 0 +10704 : 0 +10705 : 0 +10706 : 0 +10707 : 0 +10708 : 0 +10709 : 0 +10710 : 0 +10711 : 0 +10712 : 0 +10713 : 0 +10714 : 0 +10715 : 0 +10716 : 0 +10717 : 0 +10718 : 0 +10719 : 0 +10720 : 0 +10721 : 0 +10722 : 0 +10723 : 0 +10724 : 0 +10725 : 0 +10726 : 0 +10727 : 0 +10728 : 0 +10729 : 0 +10730 : 0 +10731 : 0 +10732 : 0 +10733 : 0 +10734 : 0 +10735 : 0 +10736 : 0 +10737 : 0 +10738 : 0 +10739 : 0 +10740 : 0 +10741 : 0 +10742 : 0 +10743 : 0 +10744 : 0 +10745 : 0 +10746 : 0 +10747 : 0 +10748 : 0 +10749 : 0 +10750 : 0 +10751 : 0 +10752 : 0 +10753 : 0 +10754 : 0 +10755 : 0 +10756 : 0 +10757 : 0 +10758 : 0 +10759 : 0 +10760 : 0 +10761 : 0 +10762 : 0 +10763 : 0 +10764 : 0 +10765 : 0 +10766 : 0 +10767 : 0 +10768 : 0 +10769 : 0 +10770 : 0 +10771 : 0 +10772 : 0 +10773 : 0 +10774 : 0 +10775 : 0 +10776 : 0 +10777 : 0 +10778 : 0 +10779 : 0 +10780 : 0 +10781 : 0 +10782 : 0 +10783 : 0 +10784 : 0 +10785 : 0 +10786 : 0 +10787 : 0 +10788 : 0 +10789 : 0 +10790 : 0 +10791 : 0 +10792 : 0 +10793 : 0 +10794 : 0 +10795 : 0 +10796 : 0 +10797 : 0 +10798 : 0 +10799 : 0 +10800 : 0 +10801 : 0 +10802 : 0 +10803 : 0 +10804 : 0 +10805 : 0 +10806 : 0 +10807 : 0 +10808 : 0 +10809 : 0 +10810 : 0 +10811 : 0 +10812 : 0 +10813 : 0 +10814 : 0 +10815 : 0 +10816 : 0 +10817 : 0 +10818 : 0 +10819 : 0 +10820 : 0 +10821 : 0 +10822 : 0 +10823 : 0 +10824 : 0 +10825 : 0 +10826 : 0 +10827 : 0 +10828 : 0 +10829 : 0 +10830 : 0 +10831 : 0 +10832 : 0 +10833 : 0 +10834 : 0 +10835 : 0 +10836 : 0 +10837 : 0 +10838 : 0 +10839 : 0 +10840 : 0 +10841 : 0 +10842 : 0 +10843 : 0 +10844 : 0 +10845 : 0 +10846 : 0 +10847 : 0 +10848 : 0 +10849 : 0 +10850 : 0 +10851 : 0 +10852 : 0 +10853 : 0 +10854 : 0 +10855 : 0 +10856 : 0 +10857 : 0 +10858 : 0 +10859 : 0 +10860 : 0 +10861 : 0 +10862 : 0 +10863 : 0 +10864 : 0 +10865 : 0 +10866 : 0 +10867 : 0 +10868 : 0 +10869 : 0 +10870 : 0 +10871 : 0 +10872 : 0 +10873 : 0 +10874 : 0 +10875 : 0 +10876 : 0 +10877 : 0 +10878 : 0 +10879 : 0 +10880 : 0 +10881 : 0 +10882 : 0 +10883 : 0 +10884 : 0 +10885 : 0 +10886 : 0 +10887 : 0 +10888 : 0 +10889 : 0 +10890 : 0 +10891 : 0 +10892 : 0 +10893 : 0 +10894 : 0 +10895 : 0 +10896 : 0 +10897 : 0 +10898 : 0 +10899 : 0 +10900 : 0 +10901 : 0 +10902 : 0 +10903 : 0 +10904 : 0 +10905 : 0 +10906 : 0 +10907 : 0 +10908 : 0 +10909 : 0 +10910 : 0 +10911 : 0 +10912 : 0 +10913 : 0 +10914 : 0 +10915 : 0 +10916 : 0 +10917 : 0 +10918 : 0 +10919 : 0 +10920 : 0 +10921 : 0 +10922 : 0 +10923 : 0 +10924 : 0 +10925 : 0 +10926 : 0 +10927 : 0 +10928 : 0 +10929 : 0 +10930 : 0 +10931 : 0 +10932 : 0 +10933 : 0 +10934 : 0 +10935 : 0 +10936 : 0 +10937 : 0 +10938 : 0 +10939 : 0 +10940 : 0 +10941 : 0 +10942 : 0 +10943 : 0 +10944 : 0 +10945 : 0 +10946 : 0 +10947 : 0 +10948 : 0 +10949 : 0 +10950 : 0 +10951 : 0 +10952 : 0 +10953 : 0 +10954 : 0 +10955 : 0 +10956 : 0 +10957 : 0 +10958 : 0 +10959 : 0 +10960 : 0 +10961 : 0 +10962 : 0 +10963 : 0 +10964 : 0 +10965 : 0 +10966 : 0 +10967 : 0 +10968 : 0 +10969 : 0 +10970 : 0 +10971 : 0 +10972 : 0 +10973 : 0 +10974 : 0 +10975 : 0 +10976 : 0 +10977 : 0 +10978 : 0 +10979 : 0 +10980 : 0 +10981 : 0 +10982 : 0 +10983 : 0 +10984 : 0 +10985 : 0 +10986 : 0 +10987 : 0 +10988 : 0 +10989 : 0 +10990 : 0 +10991 : 0 +10992 : 0 +10993 : 0 +10994 : 0 +10995 : 0 +10996 : 0 +10997 : 0 +10998 : 0 +10999 : 0 +11000 : 0 +11001 : 0 +11002 : 0 +11003 : 0 +11004 : 0 +11005 : 0 +11006 : 0 +11007 : 0 +11008 : 0 +11009 : 0 +11010 : 0 +11011 : 0 +11012 : 0 +11013 : 0 +11014 : 0 +11015 : 0 +11016 : 0 +11017 : 0 +11018 : 0 +11019 : 0 +11020 : 0 +11021 : 0 +11022 : 0 +11023 : 0 +11024 : 0 +11025 : 0 +11026 : 0 +11027 : 0 +11028 : 0 +11029 : 0 +11030 : 0 +11031 : 0 +11032 : 0 +11033 : 0 +11034 : 0 +11035 : 0 +11036 : 0 +11037 : 0 +11038 : 0 +11039 : 0 +11040 : 0 +11041 : 0 +11042 : 0 +11043 : 0 +11044 : 0 +11045 : 0 +11046 : 0 +11047 : 0 +11048 : 0 +11049 : 0 +11050 : 0 +11051 : 0 +11052 : 0 +11053 : 0 +11054 : 0 +11055 : 0 +11056 : 0 +11057 : 0 +11058 : 0 +11059 : 0 +11060 : 0 +11061 : 0 +11062 : 0 +11063 : 0 +11064 : 0 +11065 : 0 +11066 : 0 +11067 : 0 +11068 : 0 +11069 : 0 +11070 : 0 +11071 : 0 +11072 : 0 +11073 : 0 +11074 : 0 +11075 : 0 +11076 : 0 +11077 : 0 +11078 : 0 +11079 : 0 +11080 : 0 +11081 : 0 +11082 : 0 +11083 : 0 +11084 : 0 +11085 : 0 +11086 : 0 +11087 : 0 +11088 : 0 +11089 : 0 +11090 : 0 +11091 : 0 +11092 : 0 +11093 : 0 +11094 : 0 +11095 : 0 +11096 : 0 +11097 : 0 +11098 : 0 +11099 : 0 +11100 : 0 +11101 : 0 +11102 : 0 +11103 : 0 +11104 : 0 +11105 : 0 +11106 : 0 +11107 : 0 +11108 : 0 +11109 : 0 +11110 : 0 +11111 : 0 +11112 : 0 +11113 : 0 +11114 : 0 +11115 : 0 +11116 : 0 +11117 : 0 +11118 : 0 +11119 : 0 +11120 : 0 +11121 : 0 +11122 : 0 +11123 : 0 +11124 : 0 +11125 : 0 +11126 : 0 +11127 : 0 +11128 : 0 +11129 : 0 +11130 : 0 +11131 : 0 +11132 : 0 +11133 : 0 +11134 : 0 +11135 : 0 +11136 : 0 +11137 : 0 +11138 : 0 +11139 : 0 +11140 : 0 +11141 : 0 +11142 : 0 +11143 : 0 +11144 : 0 +11145 : 0 +11146 : 0 +11147 : 0 +11148 : 0 +11149 : 0 +11150 : 0 +11151 : 0 +11152 : 0 +11153 : 0 +11154 : 0 +11155 : 0 +11156 : 0 +11157 : 0 +11158 : 0 +11159 : 0 +11160 : 0 +11161 : 0 +11162 : 0 +11163 : 0 +11164 : 0 +11165 : 0 +11166 : 0 +11167 : 0 +11168 : 0 +11169 : 0 +11170 : 0 +11171 : 0 +11172 : 0 +11173 : 0 +11174 : 0 +11175 : 0 +11176 : 0 +11177 : 0 +11178 : 0 +11179 : 0 +11180 : 0 +11181 : 0 +11182 : 0 +11183 : 0 +11184 : 0 +11185 : 0 +11186 : 0 +11187 : 0 +11188 : 0 +11189 : 0 +11190 : 0 +11191 : 0 +11192 : 0 +11193 : 0 +11194 : 0 +11195 : 0 +11196 : 0 +11197 : 0 +11198 : 0 +11199 : 0 +11200 : 0 +11201 : 0 +11202 : 0 +11203 : 0 +11204 : 0 +11205 : 0 +11206 : 0 +11207 : 0 +11208 : 0 +11209 : 0 +11210 : 0 +11211 : 0 +11212 : 0 +11213 : 0 +11214 : 0 +11215 : 0 +11216 : 0 +11217 : 0 +11218 : 0 +11219 : 0 +11220 : 0 +11221 : 0 +11222 : 0 +11223 : 0 +11224 : 0 +11225 : 0 +11226 : 0 +11227 : 0 +11228 : 0 +11229 : 0 +11230 : 0 +11231 : 0 +11232 : 0 +11233 : 0 +11234 : 0 +11235 : 0 +11236 : 0 +11237 : 0 +11238 : 0 +11239 : 0 +11240 : 0 +11241 : 0 +11242 : 0 +11243 : 0 +11244 : 0 +11245 : 0 +11246 : 0 +11247 : 0 +11248 : 0 +11249 : 0 +11250 : 0 +11251 : 0 +11252 : 0 +11253 : 0 +11254 : 0 +11255 : 0 +11256 : 0 +11257 : 0 +11258 : 0 +11259 : 0 +11260 : 0 +11261 : 0 +11262 : 0 +11263 : 0 +11264 : 0 +11265 : 0 +11266 : 0 +11267 : 0 +11268 : 0 +11269 : 0 +11270 : 0 +11271 : 0 +11272 : 0 +11273 : 0 +11274 : 0 +11275 : 0 +11276 : 0 +11277 : 0 +11278 : 0 +11279 : 0 +11280 : 0 +11281 : 0 +11282 : 0 +11283 : 0 +11284 : 0 +11285 : 0 +11286 : 0 +11287 : 0 +11288 : 0 +11289 : 0 +11290 : 0 +11291 : 0 +11292 : 0 +11293 : 0 +11294 : 0 +11295 : 0 +11296 : 0 +11297 : 0 +11298 : 0 +11299 : 0 +11300 : 0 +11301 : 0 +11302 : 0 +11303 : 0 +11304 : 0 +11305 : 0 +11306 : 0 +11307 : 0 +11308 : 0 +11309 : 0 +11310 : 0 +11311 : 0 +11312 : 0 +11313 : 0 +11314 : 0 +11315 : 0 +11316 : 0 +11317 : 0 +11318 : 0 +11319 : 0 +11320 : 0 +11321 : 0 +11322 : 0 +11323 : 0 +11324 : 0 +11325 : 0 +11326 : 0 +11327 : 0 +11328 : 0 +11329 : 0 +11330 : 0 +11331 : 0 +11332 : 0 +11333 : 0 +11334 : 0 +11335 : 0 +11336 : 0 +11337 : 0 +11338 : 0 +11339 : 0 +11340 : 0 +11341 : 0 +11342 : 0 +11343 : 0 +11344 : 0 +11345 : 0 +11346 : 0 +11347 : 0 +11348 : 0 +11349 : 0 +11350 : 0 +11351 : 0 +11352 : 0 +11353 : 0 +11354 : 0 +11355 : 0 +11356 : 0 +11357 : 0 +11358 : 0 +11359 : 0 +11360 : 0 +11361 : 0 +11362 : 0 +11363 : 0 +11364 : 0 +11365 : 0 +11366 : 0 +11367 : 0 +11368 : 0 +11369 : 0 +11370 : 0 +11371 : 0 +11372 : 0 +11373 : 0 +11374 : 0 +11375 : 0 +11376 : 0 +11377 : 0 +11378 : 0 +11379 : 0 +11380 : 0 +11381 : 0 +11382 : 0 +11383 : 0 +11384 : 0 +11385 : 0 +11386 : 0 +11387 : 0 +11388 : 0 +11389 : 0 +11390 : 0 +11391 : 0 +11392 : 0 +11393 : 0 +11394 : 0 +11395 : 0 +11396 : 0 +11397 : 0 +11398 : 0 +11399 : 0 +11400 : 0 +11401 : 0 +11402 : 0 +11403 : 0 +11404 : 0 +11405 : 0 +11406 : 0 +11407 : 0 +11408 : 0 +11409 : 0 +11410 : 0 +11411 : 0 +11412 : 0 +11413 : 0 +11414 : 0 +11415 : 0 +11416 : 0 +11417 : 0 +11418 : 0 +11419 : 0 +11420 : 0 +11421 : 0 +11422 : 0 +11423 : 0 +11424 : 0 +11425 : 0 +11426 : 0 +11427 : 0 +11428 : 0 +11429 : 0 +11430 : 0 +11431 : 0 +11432 : 0 +11433 : 0 +11434 : 0 +11435 : 0 +11436 : 0 +11437 : 0 +11438 : 0 +11439 : 0 +11440 : 0 +11441 : 0 +11442 : 0 +11443 : 0 +11444 : 0 +11445 : 0 +11446 : 0 +11447 : 0 +11448 : 0 +11449 : 0 +11450 : 0 +11451 : 0 +11452 : 0 +11453 : 0 +11454 : 0 +11455 : 0 +11456 : 0 +11457 : 0 +11458 : 0 +11459 : 0 +11460 : 0 +11461 : 0 +11462 : 0 +11463 : 0 +11464 : 0 +11465 : 0 +11466 : 0 +11467 : 0 +11468 : 0 +11469 : 0 +11470 : 0 +11471 : 0 +11472 : 0 +11473 : 0 +11474 : 0 +11475 : 0 +11476 : 0 +11477 : 0 +11478 : 0 +11479 : 0 +11480 : 0 +11481 : 0 +11482 : 0 +11483 : 0 +11484 : 0 +11485 : 0 +11486 : 0 +11487 : 0 +11488 : 0 +11489 : 0 +11490 : 0 +11491 : 0 +11492 : 0 +11493 : 0 +11494 : 0 +11495 : 0 +11496 : 0 +11497 : 0 +11498 : 0 +11499 : 0 +11500 : 0 +11501 : 0 +11502 : 0 +11503 : 0 +11504 : 0 +11505 : 0 +11506 : 0 +11507 : 0 +11508 : 0 +11509 : 0 +11510 : 0 +11511 : 0 +11512 : 0 +11513 : 0 +11514 : 0 +11515 : 0 +11516 : 0 +11517 : 0 +11518 : 0 +11519 : 0 +11520 : 0 +11521 : 0 +11522 : 0 +11523 : 0 +11524 : 0 +11525 : 0 +11526 : 0 +11527 : 0 +11528 : 0 +11529 : 0 +11530 : 0 +11531 : 0 +11532 : 0 +11533 : 0 +11534 : 0 +11535 : 0 +11536 : 0 +11537 : 0 +11538 : 0 +11539 : 0 +11540 : 0 +11541 : 0 +11542 : 0 +11543 : 0 +11544 : 0 +11545 : 0 +11546 : 0 +11547 : 0 +11548 : 0 +11549 : 0 +11550 : 0 +11551 : 0 +11552 : 0 +11553 : 0 +11554 : 0 +11555 : 0 +11556 : 0 +11557 : 0 +11558 : 0 +11559 : 0 +11560 : 0 +11561 : 0 +11562 : 0 +11563 : 0 +11564 : 0 +11565 : 0 +11566 : 0 +11567 : 0 +11568 : 0 +11569 : 0 +11570 : 0 +11571 : 0 +11572 : 0 +11573 : 0 +11574 : 0 +11575 : 0 +11576 : 0 +11577 : 0 +11578 : 0 +11579 : 0 +11580 : 0 +11581 : 0 +11582 : 0 +11583 : 0 +11584 : 0 +11585 : 0 +11586 : 0 +11587 : 0 +11588 : 0 +11589 : 0 +11590 : 0 +11591 : 0 +11592 : 0 +11593 : 0 +11594 : 0 +11595 : 0 +11596 : 0 +11597 : 0 +11598 : 0 +11599 : 0 +11600 : 0 +11601 : 0 +11602 : 0 +11603 : 0 +11604 : 0 +11605 : 0 +11606 : 0 +11607 : 0 +11608 : 0 +11609 : 0 +11610 : 0 +11611 : 0 +11612 : 0 +11613 : 0 +11614 : 0 +11615 : 0 +11616 : 0 +11617 : 0 +11618 : 0 +11619 : 0 +11620 : 0 +11621 : 0 +11622 : 0 +11623 : 0 +11624 : 0 +11625 : 0 +11626 : 0 +11627 : 0 +11628 : 0 +11629 : 0 +11630 : 0 +11631 : 0 +11632 : 0 +11633 : 0 +11634 : 0 +11635 : 0 +11636 : 0 +11637 : 0 +11638 : 0 +11639 : 0 +11640 : 0 +11641 : 0 +11642 : 0 +11643 : 0 +11644 : 0 +11645 : 0 +11646 : 0 +11647 : 0 +11648 : 0 +11649 : 0 +11650 : 0 +11651 : 0 +11652 : 0 +11653 : 0 +11654 : 0 +11655 : 0 +11656 : 0 +11657 : 0 +11658 : 0 +11659 : 0 +11660 : 0 +11661 : 0 +11662 : 0 +11663 : 0 +11664 : 0 +11665 : 0 +11666 : 0 +11667 : 0 +11668 : 0 +11669 : 0 +11670 : 0 +11671 : 0 +11672 : 0 +11673 : 0 +11674 : 0 +11675 : 0 +11676 : 0 +11677 : 0 +11678 : 0 +11679 : 0 +11680 : 0 +11681 : 0 +11682 : 0 +11683 : 0 +11684 : 0 +11685 : 0 +11686 : 0 +11687 : 0 +11688 : 0 +11689 : 0 +11690 : 0 +11691 : 0 +11692 : 0 +11693 : 0 +11694 : 0 +11695 : 0 +11696 : 0 +11697 : 0 +11698 : 0 +11699 : 0 +11700 : 0 +11701 : 0 +11702 : 0 +11703 : 0 +11704 : 0 +11705 : 0 +11706 : 0 +11707 : 0 +11708 : 0 +11709 : 0 +11710 : 0 +11711 : 0 +11712 : 0 +11713 : 0 +11714 : 0 +11715 : 0 +11716 : 0 +11717 : 0 +11718 : 0 +11719 : 0 +11720 : 0 +11721 : 0 +11722 : 0 +11723 : 0 +11724 : 0 +11725 : 0 +11726 : 0 +11727 : 0 +11728 : 0 +11729 : 0 +11730 : 0 +11731 : 0 +11732 : 0 +11733 : 0 +11734 : 0 +11735 : 0 +11736 : 0 +11737 : 0 +11738 : 0 +11739 : 0 +11740 : 0 +11741 : 0 +11742 : 0 +11743 : 0 +11744 : 0 +11745 : 0 +11746 : 0 +11747 : 0 +11748 : 0 +11749 : 0 +11750 : 0 +11751 : 0 +11752 : 0 +11753 : 0 +11754 : 0 +11755 : 0 +11756 : 0 +11757 : 0 +11758 : 0 +11759 : 0 +11760 : 0 +11761 : 0 +11762 : 0 +11763 : 0 +11764 : 0 +11765 : 0 +11766 : 0 +11767 : 0 +11768 : 0 +11769 : 0 +11770 : 0 +11771 : 0 +11772 : 0 +11773 : 0 +11774 : 0 +11775 : 0 +11776 : 0 +11777 : 0 +11778 : 0 +11779 : 0 +11780 : 0 +11781 : 0 +11782 : 0 +11783 : 0 +11784 : 0 +11785 : 0 +11786 : 0 +11787 : 0 +11788 : 0 +11789 : 0 +11790 : 0 +11791 : 0 +11792 : 0 +11793 : 0 +11794 : 0 +11795 : 0 +11796 : 0 +11797 : 0 +11798 : 0 +11799 : 0 +11800 : 0 +11801 : 0 +11802 : 0 +11803 : 0 +11804 : 0 +11805 : 0 +11806 : 0 +11807 : 0 +11808 : 0 +11809 : 0 +11810 : 0 +11811 : 0 +11812 : 0 +11813 : 0 +11814 : 0 +11815 : 0 +11816 : 0 +11817 : 0 +11818 : 0 +11819 : 0 +11820 : 0 +11821 : 0 +11822 : 0 +11823 : 0 +11824 : 0 +11825 : 0 +11826 : 0 +11827 : 0 +11828 : 0 +11829 : 0 +11830 : 0 +11831 : 0 +11832 : 0 +11833 : 0 +11834 : 0 +11835 : 0 +11836 : 0 +11837 : 0 +11838 : 0 +11839 : 0 +11840 : 0 +11841 : 0 +11842 : 0 +11843 : 0 +11844 : 0 +11845 : 0 +11846 : 0 +11847 : 0 +11848 : 0 +11849 : 0 +11850 : 0 +11851 : 0 +11852 : 0 +11853 : 0 +11854 : 0 +11855 : 0 +11856 : 0 +11857 : 0 +11858 : 0 +11859 : 0 +11860 : 0 +11861 : 0 +11862 : 0 +11863 : 0 +11864 : 0 +11865 : 0 +11866 : 0 +11867 : 0 +11868 : 0 +11869 : 0 +11870 : 0 +11871 : 0 +11872 : 0 +11873 : 0 +11874 : 0 +11875 : 0 +11876 : 0 +11877 : 0 +11878 : 0 +11879 : 0 +11880 : 0 +11881 : 0 +11882 : 0 +11883 : 0 +11884 : 0 +11885 : 0 +11886 : 0 +11887 : 0 +11888 : 0 +11889 : 0 +11890 : 0 +11891 : 0 +11892 : 0 +11893 : 0 +11894 : 0 +11895 : 0 +11896 : 0 +11897 : 0 +11898 : 0 +11899 : 0 +11900 : 0 +11901 : 0 +11902 : 0 +11903 : 0 +11904 : 0 +11905 : 0 +11906 : 0 +11907 : 0 +11908 : 0 +11909 : 0 +11910 : 0 +11911 : 0 +11912 : 0 +11913 : 0 +11914 : 0 +11915 : 0 +11916 : 0 +11917 : 0 +11918 : 0 +11919 : 0 +11920 : 0 +11921 : 0 +11922 : 0 +11923 : 0 +11924 : 0 +11925 : 0 +11926 : 0 +11927 : 0 +11928 : 0 +11929 : 0 +11930 : 0 +11931 : 0 +11932 : 0 +11933 : 0 +11934 : 0 +11935 : 0 +11936 : 0 +11937 : 0 +11938 : 0 +11939 : 0 +11940 : 0 +11941 : 0 +11942 : 0 +11943 : 0 +11944 : 0 +11945 : 0 +11946 : 0 +11947 : 0 +11948 : 0 +11949 : 0 +11950 : 0 +11951 : 0 +11952 : 0 +11953 : 0 +11954 : 0 +11955 : 0 +11956 : 0 +11957 : 0 +11958 : 0 +11959 : 0 +11960 : 0 +11961 : 0 +11962 : 0 +11963 : 0 +11964 : 0 +11965 : 0 +11966 : 0 +11967 : 0 +11968 : 0 +11969 : 0 +11970 : 0 +11971 : 0 +11972 : 0 +11973 : 0 +11974 : 0 +11975 : 0 +11976 : 0 +11977 : 0 +11978 : 0 +11979 : 0 +11980 : 0 +11981 : 0 +11982 : 0 +11983 : 0 +11984 : 0 +11985 : 0 +11986 : 0 +11987 : 0 +11988 : 0 +11989 : 0 +11990 : 0 +11991 : 0 +11992 : 0 +11993 : 0 +11994 : 0 +11995 : 0 +11996 : 0 +11997 : 0 +11998 : 0 +11999 : 0 +12000 : 0 +12001 : 0 +12002 : 0 +12003 : 0 +12004 : 0 +12005 : 0 +12006 : 0 +12007 : 0 +12008 : 0 +12009 : 0 +12010 : 0 +12011 : 0 +12012 : 0 +12013 : 0 +12014 : 0 +12015 : 0 +12016 : 0 +12017 : 0 +12018 : 0 +12019 : 0 +12020 : 0 +12021 : 0 +12022 : 0 +12023 : 0 +12024 : 0 +12025 : 0 +12026 : 0 +12027 : 0 +12028 : 0 +12029 : 0 +12030 : 0 +12031 : 0 +12032 : 0 +12033 : 0 +12034 : 0 +12035 : 0 +12036 : 0 +12037 : 0 +12038 : 0 +12039 : 0 +12040 : 0 +12041 : 0 +12042 : 0 +12043 : 0 +12044 : 0 +12045 : 0 +12046 : 0 +12047 : 0 +12048 : 0 +12049 : 0 +12050 : 0 +12051 : 0 +12052 : 0 +12053 : 0 +12054 : 0 +12055 : 0 +12056 : 0 +12057 : 0 +12058 : 0 +12059 : 0 +12060 : 0 +12061 : 0 +12062 : 0 +12063 : 0 +12064 : 0 +12065 : 0 +12066 : 0 +12067 : 0 +12068 : 0 +12069 : 0 +12070 : 0 +12071 : 0 +12072 : 0 +12073 : 0 +12074 : 0 +12075 : 0 +12076 : 0 +12077 : 0 +12078 : 0 +12079 : 0 +12080 : 0 +12081 : 0 +12082 : 0 +12083 : 0 +12084 : 0 +12085 : 0 +12086 : 0 +12087 : 0 +12088 : 0 +12089 : 0 +12090 : 0 +12091 : 0 +12092 : 0 +12093 : 0 +12094 : 0 +12095 : 0 +12096 : 0 +12097 : 0 +12098 : 0 +12099 : 0 +12100 : 0 +12101 : 0 +12102 : 0 +12103 : 0 +12104 : 0 +12105 : 0 +12106 : 0 +12107 : 0 +12108 : 0 +12109 : 0 +12110 : 0 +12111 : 0 +12112 : 0 +12113 : 0 +12114 : 0 +12115 : 0 +12116 : 0 +12117 : 0 +12118 : 0 +12119 : 0 +12120 : 0 +12121 : 0 +12122 : 0 +12123 : 0 +12124 : 0 +12125 : 0 +12126 : 0 +12127 : 0 +12128 : 0 +12129 : 0 +12130 : 0 +12131 : 0 +12132 : 0 +12133 : 0 +12134 : 0 +12135 : 0 +12136 : 0 +12137 : 0 +12138 : 0 +12139 : 0 +12140 : 0 +12141 : 0 +12142 : 0 +12143 : 0 +12144 : 0 +12145 : 0 +12146 : 0 +12147 : 0 +12148 : 0 +12149 : 0 +12150 : 0 +12151 : 0 +12152 : 0 +12153 : 0 +12154 : 0 +12155 : 0 +12156 : 0 +12157 : 0 +12158 : 0 +12159 : 0 +12160 : 0 +12161 : 0 +12162 : 0 +12163 : 0 +12164 : 0 +12165 : 0 +12166 : 0 +12167 : 0 +12168 : 0 +12169 : 0 +12170 : 0 +12171 : 0 +12172 : 0 +12173 : 0 +12174 : 0 +12175 : 0 +12176 : 0 +12177 : 0 +12178 : 0 +12179 : 0 +12180 : 0 +12181 : 0 +12182 : 0 +12183 : 0 +12184 : 0 +12185 : 0 +12186 : 0 +12187 : 0 +12188 : 0 +12189 : 0 +12190 : 0 +12191 : 0 +12192 : 0 +12193 : 0 +12194 : 0 +12195 : 0 +12196 : 0 +12197 : 0 +12198 : 0 +12199 : 0 +12200 : 0 +12201 : 0 +12202 : 0 +12203 : 0 +12204 : 0 +12205 : 0 +12206 : 0 +12207 : 0 +12208 : 0 +12209 : 0 +12210 : 0 +12211 : 0 +12212 : 0 +12213 : 0 +12214 : 0 +12215 : 0 +12216 : 0 +12217 : 0 +12218 : 0 +12219 : 0 +12220 : 0 +12221 : 0 +12222 : 0 +12223 : 0 +12224 : 0 +12225 : 0 +12226 : 0 +12227 : 0 +12228 : 0 +12229 : 0 +12230 : 0 +12231 : 0 +12232 : 0 +12233 : 0 +12234 : 0 +12235 : 0 +12236 : 0 +12237 : 0 +12238 : 0 +12239 : 0 +12240 : 0 +12241 : 0 +12242 : 0 +12243 : 0 +12244 : 0 +12245 : 0 +12246 : 0 +12247 : 0 +12248 : 0 +12249 : 0 +12250 : 0 +12251 : 0 +12252 : 0 +12253 : 0 +12254 : 0 +12255 : 0 +12256 : 0 +12257 : 0 +12258 : 0 +12259 : 0 +12260 : 0 +12261 : 0 +12262 : 0 +12263 : 0 +12264 : 0 +12265 : 0 +12266 : 0 +12267 : 0 +12268 : 0 +12269 : 0 +12270 : 0 +12271 : 0 +12272 : 0 +12273 : 0 +12274 : 0 +12275 : 0 +12276 : 0 +12277 : 0 +12278 : 0 +12279 : 0 +12280 : 0 +12281 : 0 +12282 : 0 +12283 : 0 +12284 : 0 +12285 : 0 +12286 : 0 +12287 : 0 +12288 : 0 +12289 : 0 +12290 : 0 +12291 : 0 +12292 : 0 +12293 : 0 +12294 : 0 +12295 : 0 +12296 : 0 +12297 : 0 +12298 : 0 +12299 : 0 +12300 : 0 +12301 : 0 +12302 : 0 +12303 : 0 +12304 : 0 +12305 : 0 +12306 : 0 +12307 : 0 +12308 : 0 +12309 : 0 +12310 : 0 +12311 : 0 +12312 : 0 +12313 : 0 +12314 : 0 +12315 : 0 +12316 : 0 +12317 : 0 +12318 : 0 +12319 : 0 +12320 : 0 +12321 : 0 +12322 : 0 +12323 : 0 +12324 : 0 +12325 : 0 +12326 : 0 +12327 : 0 +12328 : 0 +12329 : 0 +12330 : 0 +12331 : 0 +12332 : 0 +12333 : 0 +12334 : 0 +12335 : 0 +12336 : 0 +12337 : 0 +12338 : 0 +12339 : 0 +12340 : 0 +12341 : 0 +12342 : 0 +12343 : 0 +12344 : 0 +12345 : 0 +12346 : 0 +12347 : 0 +12348 : 0 +12349 : 0 +12350 : 0 +12351 : 0 +12352 : 0 +12353 : 0 +12354 : 0 +12355 : 0 +12356 : 0 +12357 : 0 +12358 : 0 +12359 : 0 +12360 : 0 +12361 : 0 +12362 : 0 +12363 : 0 +12364 : 0 +12365 : 0 +12366 : 0 +12367 : 0 +12368 : 0 +12369 : 0 +12370 : 0 +12371 : 0 +12372 : 0 +12373 : 0 +12374 : 0 +12375 : 0 +12376 : 0 +12377 : 0 +12378 : 0 +12379 : 0 +12380 : 0 +12381 : 0 +12382 : 0 +12383 : 0 +12384 : 0 +12385 : 0 +12386 : 0 +12387 : 0 +12388 : 0 +12389 : 0 +12390 : 0 +12391 : 0 +12392 : 0 +12393 : 0 +12394 : 0 +12395 : 0 +12396 : 0 +12397 : 0 +12398 : 0 +12399 : 0 +12400 : 0 +12401 : 0 +12402 : 0 +12403 : 0 +12404 : 0 +12405 : 0 +12406 : 0 +12407 : 0 +12408 : 0 +12409 : 0 +12410 : 0 +12411 : 0 +12412 : 0 +12413 : 0 +12414 : 0 +12415 : 0 +12416 : 0 +12417 : 0 +12418 : 0 +12419 : 0 +12420 : 0 +12421 : 0 +12422 : 0 +12423 : 0 +12424 : 0 +12425 : 0 +12426 : 0 +12427 : 0 +12428 : 0 +12429 : 0 +12430 : 0 +12431 : 0 +12432 : 0 +12433 : 0 +12434 : 0 +12435 : 0 +12436 : 0 +12437 : 0 +12438 : 0 +12439 : 0 +12440 : 0 +12441 : 0 +12442 : 0 +12443 : 0 +12444 : 0 +12445 : 0 +12446 : 0 +12447 : 0 +12448 : 0 +12449 : 0 +12450 : 0 +12451 : 0 +12452 : 0 +12453 : 0 +12454 : 0 +12455 : 0 +12456 : 0 +12457 : 0 +12458 : 0 +12459 : 0 +12460 : 0 +12461 : 0 +12462 : 0 +12463 : 0 +12464 : 0 +12465 : 0 +12466 : 0 +12467 : 0 +12468 : 0 +12469 : 0 +12470 : 0 +12471 : 0 +12472 : 0 +12473 : 0 +12474 : 0 +12475 : 0 +12476 : 0 +12477 : 0 +12478 : 0 +12479 : 0 +12480 : 0 +12481 : 0 +12482 : 0 +12483 : 0 +12484 : 0 +12485 : 0 +12486 : 0 +12487 : 0 +12488 : 0 +12489 : 0 +12490 : 0 +12491 : 0 +12492 : 0 +12493 : 0 +12494 : 0 +12495 : 0 +12496 : 0 +12497 : 0 +12498 : 0 +12499 : 0 +12500 : 0 +12501 : 0 +12502 : 0 +12503 : 0 +12504 : 0 +12505 : 0 +12506 : 0 +12507 : 0 +12508 : 0 +12509 : 0 +12510 : 0 +12511 : 0 +12512 : 0 +12513 : 0 +12514 : 0 +12515 : 0 +12516 : 0 +12517 : 0 +12518 : 0 +12519 : 0 +12520 : 0 +12521 : 0 +12522 : 0 +12523 : 0 +12524 : 0 +12525 : 0 +12526 : 0 +12527 : 0 +12528 : 0 +12529 : 0 +12530 : 0 +12531 : 0 +12532 : 0 +12533 : 0 +12534 : 0 +12535 : 0 +12536 : 0 +12537 : 0 +12538 : 0 +12539 : 0 +12540 : 0 +12541 : 0 +12542 : 0 +12543 : 0 +12544 : 0 +12545 : 0 +12546 : 0 +12547 : 0 +12548 : 0 +12549 : 0 +12550 : 0 +12551 : 0 +12552 : 0 +12553 : 0 +12554 : 0 +12555 : 0 +12556 : 0 +12557 : 0 +12558 : 0 +12559 : 0 +12560 : 0 +12561 : 0 +12562 : 0 +12563 : 0 +12564 : 0 +12565 : 0 +12566 : 0 +12567 : 0 +12568 : 0 +12569 : 0 +12570 : 0 +12571 : 0 +12572 : 0 +12573 : 0 +12574 : 0 +12575 : 0 +12576 : 0 +12577 : 0 +12578 : 0 +12579 : 0 +12580 : 0 +12581 : 0 +12582 : 0 +12583 : 0 +12584 : 0 +12585 : 0 +12586 : 0 +12587 : 0 +12588 : 0 +12589 : 0 +12590 : 0 +12591 : 0 +12592 : 0 +12593 : 0 +12594 : 0 +12595 : 0 +12596 : 0 +12597 : 0 +12598 : 0 +12599 : 0 +12600 : 0 +12601 : 0 +12602 : 0 +12603 : 0 +12604 : 0 +12605 : 0 +12606 : 0 +12607 : 0 +12608 : 0 +12609 : 0 +12610 : 0 +12611 : 0 +12612 : 0 +12613 : 0 +12614 : 0 +12615 : 0 +12616 : 0 +12617 : 0 +12618 : 0 +12619 : 0 +12620 : 0 +12621 : 0 +12622 : 0 +12623 : 0 +12624 : 0 +12625 : 0 +12626 : 0 +12627 : 0 +12628 : 0 +12629 : 0 +12630 : 0 +12631 : 0 +12632 : 0 +12633 : 0 +12634 : 0 +12635 : 0 +12636 : 0 +12637 : 0 +12638 : 0 +12639 : 0 +12640 : 0 +12641 : 0 +12642 : 0 +12643 : 0 +12644 : 0 +12645 : 0 +12646 : 0 +12647 : 0 +12648 : 0 +12649 : 0 +12650 : 0 +12651 : 0 +12652 : 0 +12653 : 0 +12654 : 0 +12655 : 0 +12656 : 0 +12657 : 0 +12658 : 0 +12659 : 0 +12660 : 0 +12661 : 0 +12662 : 0 +12663 : 0 +12664 : 0 +12665 : 0 +12666 : 0 +12667 : 0 +12668 : 0 +12669 : 0 +12670 : 0 +12671 : 0 +12672 : 0 +12673 : 0 +12674 : 0 +12675 : 0 +12676 : 0 +12677 : 0 +12678 : 0 +12679 : 0 +12680 : 0 +12681 : 0 +12682 : 0 +12683 : 0 +12684 : 0 +12685 : 0 +12686 : 0 +12687 : 0 +12688 : 0 +12689 : 0 +12690 : 0 +12691 : 0 +12692 : 0 +12693 : 0 +12694 : 0 +12695 : 0 +12696 : 0 +12697 : 0 +12698 : 0 +12699 : 0 +12700 : 0 +12701 : 0 +12702 : 0 +12703 : 0 +12704 : 0 +12705 : 0 +12706 : 0 +12707 : 0 +12708 : 0 +12709 : 0 +12710 : 0 +12711 : 0 +12712 : 0 +12713 : 0 +12714 : 0 +12715 : 0 +12716 : 0 +12717 : 0 +12718 : 0 +12719 : 0 +12720 : 0 +12721 : 0 +12722 : 0 +12723 : 0 +12724 : 0 +12725 : 0 +12726 : 0 +12727 : 0 +12728 : 0 +12729 : 0 +12730 : 0 +12731 : 0 +12732 : 0 +12733 : 0 +12734 : 0 +12735 : 0 +12736 : 0 +12737 : 0 +12738 : 0 +12739 : 0 +12740 : 0 +12741 : 0 +12742 : 0 +12743 : 0 +12744 : 0 +12745 : 0 +12746 : 0 +12747 : 0 +12748 : 0 +12749 : 0 +12750 : 0 +12751 : 0 +12752 : 0 +12753 : 0 +12754 : 0 +12755 : 0 +12756 : 0 +12757 : 0 +12758 : 0 +12759 : 0 +12760 : 0 +12761 : 0 +12762 : 0 +12763 : 0 +12764 : 0 +12765 : 0 +12766 : 0 +12767 : 0 +12768 : 0 +12769 : 0 +12770 : 0 +12771 : 0 +12772 : 0 +12773 : 0 +12774 : 0 +12775 : 0 +12776 : 0 +12777 : 0 +12778 : 0 +12779 : 0 +12780 : 0 +12781 : 0 +12782 : 0 +12783 : 0 +12784 : 0 +12785 : 0 +12786 : 0 +12787 : 0 +12788 : 0 +12789 : 0 +12790 : 0 +12791 : 0 +12792 : 0 +12793 : 0 +12794 : 0 +12795 : 0 +12796 : 0 +12797 : 0 +12798 : 0 +12799 : 0 +12800 : 0 +12801 : 0 +12802 : 0 +12803 : 0 +12804 : 0 +12805 : 0 +12806 : 0 +12807 : 0 +12808 : 0 +12809 : 0 +12810 : 0 +12811 : 0 +12812 : 0 +12813 : 0 +12814 : 0 +12815 : 0 +12816 : 0 +12817 : 0 +12818 : 0 +12819 : 0 +12820 : 0 +12821 : 0 +12822 : 0 +12823 : 0 +12824 : 0 +12825 : 0 +12826 : 0 +12827 : 0 +12828 : 0 +12829 : 0 +12830 : 0 +12831 : 0 +12832 : 0 +12833 : 0 +12834 : 0 +12835 : 0 +12836 : 0 +12837 : 0 +12838 : 0 +12839 : 0 +12840 : 0 +12841 : 0 +12842 : 0 +12843 : 0 +12844 : 0 +12845 : 0 +12846 : 0 +12847 : 0 +12848 : 0 +12849 : 0 +12850 : 0 +12851 : 0 +12852 : 0 +12853 : 0 +12854 : 0 +12855 : 0 +12856 : 0 +12857 : 0 +12858 : 0 +12859 : 0 +12860 : 0 +12861 : 0 +12862 : 0 +12863 : 0 +12864 : 0 +12865 : 0 +12866 : 0 +12867 : 0 +12868 : 0 +12869 : 0 +12870 : 0 +12871 : 0 +12872 : 0 +12873 : 0 +12874 : 0 +12875 : 0 +12876 : 0 +12877 : 0 +12878 : 0 +12879 : 0 +12880 : 0 +12881 : 0 +12882 : 0 +12883 : 0 +12884 : 0 +12885 : 0 +12886 : 0 +12887 : 0 +12888 : 0 +12889 : 0 +12890 : 0 +12891 : 0 +12892 : 0 +12893 : 0 +12894 : 0 +12895 : 0 +12896 : 0 +12897 : 0 +12898 : 0 +12899 : 0 +12900 : 0 +12901 : 0 +12902 : 0 +12903 : 0 +12904 : 0 +12905 : 0 +12906 : 0 +12907 : 0 +12908 : 0 +12909 : 0 +12910 : 0 +12911 : 0 +12912 : 0 +12913 : 0 +12914 : 0 +12915 : 0 +12916 : 0 +12917 : 0 +12918 : 0 +12919 : 0 +12920 : 0 +12921 : 0 +12922 : 0 +12923 : 0 +12924 : 0 +12925 : 0 +12926 : 0 +12927 : 0 +12928 : 0 +12929 : 0 +12930 : 0 +12931 : 0 +12932 : 0 +12933 : 0 +12934 : 0 +12935 : 0 +12936 : 0 +12937 : 0 +12938 : 0 +12939 : 0 +12940 : 0 +12941 : 0 +12942 : 0 +12943 : 0 +12944 : 0 +12945 : 0 +12946 : 0 +12947 : 0 +12948 : 0 +12949 : 0 +12950 : 0 +12951 : 0 +12952 : 0 +12953 : 0 +12954 : 0 +12955 : 0 +12956 : 0 +12957 : 0 +12958 : 0 +12959 : 0 +12960 : 0 +12961 : 0 +12962 : 0 +12963 : 0 +12964 : 0 +12965 : 0 +12966 : 0 +12967 : 0 +12968 : 0 +12969 : 0 +12970 : 0 +12971 : 0 +12972 : 0 +12973 : 0 +12974 : 0 +12975 : 0 +12976 : 0 +12977 : 0 +12978 : 0 +12979 : 0 +12980 : 0 +12981 : 0 +12982 : 0 +12983 : 0 +12984 : 0 +12985 : 0 +12986 : 0 +12987 : 0 +12988 : 0 +12989 : 0 +12990 : 0 +12991 : 0 +12992 : 0 +12993 : 0 +12994 : 0 +12995 : 0 +12996 : 0 +12997 : 0 +12998 : 0 +12999 : 0 +13000 : 0 +13001 : 0 +13002 : 0 +13003 : 0 +13004 : 0 +13005 : 0 +13006 : 0 +13007 : 0 +13008 : 0 +13009 : 0 +13010 : 0 +13011 : 0 +13012 : 0 +13013 : 0 +13014 : 0 +13015 : 0 +13016 : 0 +13017 : 0 +13018 : 0 +13019 : 0 +13020 : 0 +13021 : 0 +13022 : 0 +13023 : 0 +13024 : 0 +13025 : 0 +13026 : 0 +13027 : 0 +13028 : 0 +13029 : 0 +13030 : 0 +13031 : 0 +13032 : 0 +13033 : 0 +13034 : 0 +13035 : 0 +13036 : 0 +13037 : 0 +13038 : 0 +13039 : 0 +13040 : 0 +13041 : 0 +13042 : 0 +13043 : 0 +13044 : 0 +13045 : 0 +13046 : 0 +13047 : 0 +13048 : 0 +13049 : 0 +13050 : 0 +13051 : 0 +13052 : 0 +13053 : 0 +13054 : 0 +13055 : 0 +13056 : 0 +13057 : 0 +13058 : 0 +13059 : 0 +13060 : 0 +13061 : 0 +13062 : 0 +13063 : 0 +13064 : 0 +13065 : 0 +13066 : 0 +13067 : 0 +13068 : 0 +13069 : 0 +13070 : 0 +13071 : 0 +13072 : 0 +13073 : 0 +13074 : 0 +13075 : 0 +13076 : 0 +13077 : 0 +13078 : 0 +13079 : 0 +13080 : 0 +13081 : 0 +13082 : 0 +13083 : 0 +13084 : 0 +13085 : 0 +13086 : 0 +13087 : 0 +13088 : 0 +13089 : 0 +13090 : 0 +13091 : 0 +13092 : 0 +13093 : 0 +13094 : 0 +13095 : 0 +13096 : 0 +13097 : 0 +13098 : 0 +13099 : 0 +13100 : 0 +13101 : 0 +13102 : 0 +13103 : 0 +13104 : 0 +13105 : 0 +13106 : 0 +13107 : 0 +13108 : 0 +13109 : 0 +13110 : 0 +13111 : 0 +13112 : 0 +13113 : 0 +13114 : 0 +13115 : 0 +13116 : 0 +13117 : 0 +13118 : 0 +13119 : 0 +13120 : 0 +13121 : 0 +13122 : 0 +13123 : 0 +13124 : 0 +13125 : 0 +13126 : 0 +13127 : 0 +13128 : 0 +13129 : 0 +13130 : 0 +13131 : 0 +13132 : 0 +13133 : 0 +13134 : 0 +13135 : 0 +13136 : 0 +13137 : 0 +13138 : 0 +13139 : 0 +13140 : 0 +13141 : 0 +13142 : 0 +13143 : 0 +13144 : 0 +13145 : 0 +13146 : 0 +13147 : 0 +13148 : 0 +13149 : 0 +13150 : 0 +13151 : 0 +13152 : 0 +13153 : 0 +13154 : 0 +13155 : 0 +13156 : 0 +13157 : 0 +13158 : 0 +13159 : 0 +13160 : 0 +13161 : 0 +13162 : 0 +13163 : 0 +13164 : 0 +13165 : 0 +13166 : 0 +13167 : 0 +13168 : 0 +13169 : 0 +13170 : 0 +13171 : 0 +13172 : 0 +13173 : 0 +13174 : 0 +13175 : 0 +13176 : 0 +13177 : 0 +13178 : 0 +13179 : 0 +13180 : 0 +13181 : 0 +13182 : 0 +13183 : 0 +13184 : 0 +13185 : 0 +13186 : 0 +13187 : 0 +13188 : 0 +13189 : 0 +13190 : 0 +13191 : 0 +13192 : 0 +13193 : 0 +13194 : 0 +13195 : 0 +13196 : 0 +13197 : 0 +13198 : 0 +13199 : 0 +13200 : 0 +13201 : 0 +13202 : 0 +13203 : 0 +13204 : 0 +13205 : 0 +13206 : 0 +13207 : 0 +13208 : 0 +13209 : 0 +13210 : 0 +13211 : 0 +13212 : 0 +13213 : 0 +13214 : 0 +13215 : 0 +13216 : 0 +13217 : 0 +13218 : 0 +13219 : 0 +13220 : 0 +13221 : 0 +13222 : 0 +13223 : 0 +13224 : 0 +13225 : 0 +13226 : 0 +13227 : 0 +13228 : 0 +13229 : 0 +13230 : 0 +13231 : 0 +13232 : 0 +13233 : 0 +13234 : 0 +13235 : 0 +13236 : 0 +13237 : 0 +13238 : 0 +13239 : 0 +13240 : 0 +13241 : 0 +13242 : 0 +13243 : 0 +13244 : 0 +13245 : 0 +13246 : 0 +13247 : 0 +13248 : 0 +13249 : 0 +13250 : 0 +13251 : 0 +13252 : 0 +13253 : 0 +13254 : 0 +13255 : 0 +13256 : 0 +13257 : 0 +13258 : 0 +13259 : 0 +13260 : 0 +13261 : 0 +13262 : 0 +13263 : 0 +13264 : 0 +13265 : 0 +13266 : 0 +13267 : 0 +13268 : 0 +13269 : 0 +13270 : 0 +13271 : 0 +13272 : 0 +13273 : 0 +13274 : 0 +13275 : 0 +13276 : 0 +13277 : 0 +13278 : 0 +13279 : 0 +13280 : 0 +13281 : 0 +13282 : 0 +13283 : 0 +13284 : 0 +13285 : 0 +13286 : 0 +13287 : 0 +13288 : 0 +13289 : 0 +13290 : 0 +13291 : 0 +13292 : 0 +13293 : 0 +13294 : 0 +13295 : 0 +13296 : 0 +13297 : 0 +13298 : 0 +13299 : 0 +13300 : 0 +13301 : 0 +13302 : 0 +13303 : 0 +13304 : 0 +13305 : 0 +13306 : 0 +13307 : 0 +13308 : 0 +13309 : 0 +13310 : 0 +13311 : 0 +13312 : 0 +13313 : 0 +13314 : 0 +13315 : 0 +13316 : 0 +13317 : 0 +13318 : 0 +13319 : 0 +13320 : 0 +13321 : 0 +13322 : 0 +13323 : 0 +13324 : 0 +13325 : 0 +13326 : 0 +13327 : 0 +13328 : 0 +13329 : 0 +13330 : 0 +13331 : 0 +13332 : 0 +13333 : 0 +13334 : 0 +13335 : 0 +13336 : 0 +13337 : 0 +13338 : 0 +13339 : 0 +13340 : 0 +13341 : 0 +13342 : 0 +13343 : 0 +13344 : 0 +13345 : 0 +13346 : 0 +13347 : 0 +13348 : 0 +13349 : 0 +13350 : 0 +13351 : 0 +13352 : 0 +13353 : 0 +13354 : 0 +13355 : 0 +13356 : 0 +13357 : 0 +13358 : 0 +13359 : 0 +13360 : 0 +13361 : 0 +13362 : 0 +13363 : 0 +13364 : 0 +13365 : 0 +13366 : 0 +13367 : 0 +13368 : 0 +13369 : 0 +13370 : 0 +13371 : 0 +13372 : 0 +13373 : 0 +13374 : 0 +13375 : 0 +13376 : 0 +13377 : 0 +13378 : 0 +13379 : 0 +13380 : 0 +13381 : 0 +13382 : 0 +13383 : 0 +13384 : 0 +13385 : 0 +13386 : 0 +13387 : 0 +13388 : 0 +13389 : 0 +13390 : 0 +13391 : 0 +13392 : 0 +13393 : 0 +13394 : 0 +13395 : 0 +13396 : 0 +13397 : 0 +13398 : 0 +13399 : 0 +13400 : 0 +13401 : 0 +13402 : 0 +13403 : 0 +13404 : 0 +13405 : 0 +13406 : 0 +13407 : 0 +13408 : 0 +13409 : 0 +13410 : 0 +13411 : 0 +13412 : 0 +13413 : 0 +13414 : 0 +13415 : 0 +13416 : 0 +13417 : 0 +13418 : 0 +13419 : 0 +13420 : 0 +13421 : 0 +13422 : 0 +13423 : 0 +13424 : 0 +13425 : 0 +13426 : 0 +13427 : 0 +13428 : 0 +13429 : 0 +13430 : 0 +13431 : 0 +13432 : 0 +13433 : 0 +13434 : 0 +13435 : 0 +13436 : 0 +13437 : 0 +13438 : 0 +13439 : 0 +13440 : 0 +13441 : 0 +13442 : 0 +13443 : 0 +13444 : 0 +13445 : 0 +13446 : 0 +13447 : 0 +13448 : 0 +13449 : 0 +13450 : 0 +13451 : 0 +13452 : 0 +13453 : 0 +13454 : 0 +13455 : 0 +13456 : 0 +13457 : 0 +13458 : 0 +13459 : 0 +13460 : 0 +13461 : 0 +13462 : 0 +13463 : 0 +13464 : 0 +13465 : 0 +13466 : 0 +13467 : 0 +13468 : 0 +13469 : 0 +13470 : 0 +13471 : 0 +13472 : 0 +13473 : 0 +13474 : 0 +13475 : 0 +13476 : 0 +13477 : 0 +13478 : 0 +13479 : 0 +13480 : 0 +13481 : 0 +13482 : 0 +13483 : 0 +13484 : 0 +13485 : 0 +13486 : 0 +13487 : 0 +13488 : 0 +13489 : 0 +13490 : 0 +13491 : 0 +13492 : 0 +13493 : 0 +13494 : 0 +13495 : 0 +13496 : 0 +13497 : 0 +13498 : 0 +13499 : 0 +13500 : 0 +13501 : 0 +13502 : 0 +13503 : 0 +13504 : 0 +13505 : 0 +13506 : 0 +13507 : 0 +13508 : 0 +13509 : 0 +13510 : 0 +13511 : 0 +13512 : 0 +13513 : 0 +13514 : 0 +13515 : 0 +13516 : 0 +13517 : 0 +13518 : 0 +13519 : 0 +13520 : 0 +13521 : 0 +13522 : 0 +13523 : 0 +13524 : 0 +13525 : 0 +13526 : 0 +13527 : 0 +13528 : 0 +13529 : 0 +13530 : 0 +13531 : 0 +13532 : 0 +13533 : 0 +13534 : 0 +13535 : 0 +13536 : 0 +13537 : 0 +13538 : 0 +13539 : 0 +13540 : 0 +13541 : 0 +13542 : 0 +13543 : 0 +13544 : 0 +13545 : 0 +13546 : 0 +13547 : 0 +13548 : 0 +13549 : 0 +13550 : 0 +13551 : 0 +13552 : 0 +13553 : 0 +13554 : 0 +13555 : 0 +13556 : 0 +13557 : 0 +13558 : 0 +13559 : 0 +13560 : 0 +13561 : 0 +13562 : 0 +13563 : 0 +13564 : 0 +13565 : 0 +13566 : 0 +13567 : 0 +13568 : 0 +13569 : 0 +13570 : 0 +13571 : 0 +13572 : 0 +13573 : 0 +13574 : 0 +13575 : 0 +13576 : 0 +13577 : 0 +13578 : 0 +13579 : 0 +13580 : 0 +13581 : 0 +13582 : 0 +13583 : 0 +13584 : 0 +13585 : 0 +13586 : 0 +13587 : 0 +13588 : 0 +13589 : 0 +13590 : 9921 +13591 : 0 +13592 : 16843009 +13593 : 16843009 +13594 : 16843009 +13595 : 16843009 +13596 : 16843009 +13597 : 16843009 +13598 : 16843009 +13599 : 16843009 +13600 : 16843009 +13601 : 16843009 +13602 : 16843009 +13603 : 16843009 +13604 : 16843009 +13605 : 16843009 +13606 : 16843009 +13607 : 16843009 +13608 : 16843009 +13609 : 16843009 +13610 : 16843009 +13611 : 16843009 +13612 : 16843009 +13613 : 16843009 +13614 : 16843009 +13615 : 16843009 +13616 : 16843009 +13617 : 16843009 +13618 : 16843009 +13619 : 16843009 +13620 : 16843009 +13621 : 16843009 +13622 : 16843009 +13623 : 16843009 +13624 : 16843009 +13625 : 16843009 +13626 : 16843009 +13627 : 16843009 +13628 : 16843009 +13629 : 16843009 +13630 : 16843009 +13631 : 16843009 +13632 : 16843009 +13633 : 16843009 +13634 : 16843009 +13635 : 16843009 +13636 : 16843009 +13637 : 16843009 +13638 : 16843009 +13639 : 16843009 +13640 : 16843009 +13641 : 16843009 +13642 : 16843009 +13643 : 16843009 +13644 : 16843009 +13645 : 16843009 +13646 : 16843009 +13647 : 16843009 +13648 : 16843009 +13649 : 16843009 +13650 : 16843009 +13651 : 16843009 +13652 : 16843009 +13653 : 16843009 +13654 : 16843009 +13655 : 16843009 +13656 : 16843009 +13657 : 16843009 +13658 : 16843009 +13659 : 16843009 +13660 : 16843009 +13661 : 16843009 +13662 : 16843009 +13663 : 16843009 +13664 : 16843009 +13665 : 16843009 +13666 : 16843009 +13667 : 16843009 +13668 : 16843009 +13669 : 16843009 +13670 : 16843009 +13671 : 16843009 +13672 : 16843009 +13673 : 16843009 +13674 : 16843009 +13675 : 16843009 +13676 : 16843009 +13677 : 16843009 +13678 : 16843009 +13679 : 16843009 +13680 : 16843009 +13681 : 16843009 +13682 : 16843009 +13683 : 16843009 +13684 : 16843009 +13685 : 16843009 +13686 : 16843009 +13687 : 16843009 +13688 : 16843009 +13689 : 16843009 +13690 : 16843009 +13691 : 16843009 +13692 : 0 +13693 : 0 +13694 : 0 +13695 : 0 +13696 : 0 +13697 : 0 +13698 : 0 +13699 : 0 +13700 : 0 +13701 : 0 +13702 : 0 +13703 : 0 +13704 : 0 +13705 : 0 +13706 : 0 +13707 : 0 +13708 : 0 +13709 : 0 +13710 : 0 +13711 : 0 +13712 : 0 +13713 : 0 +13714 : 0 +13715 : 0 +13716 : 0 +13717 : 0 +13718 : 0 +13719 : 0 +13720 : 0 +13721 : 0 +13722 : 0 +13723 : 0 +13724 : 0 +13725 : 0 +13726 : 0 +13727 : 0 +13728 : 0 +13729 : 0 +13730 : 0 +13731 : 0 +13732 : 0 +13733 : 0 +13734 : 0 +13735 : 0 +13736 : 0 +13737 : 0 +13738 : 0 +13739 : 0 +13740 : 0 +13741 : 0 +13742 : 0 +13743 : 0 +13744 : 0 +13745 : 0 +13746 : 0 +13747 : 0 +13748 : 0 +13749 : 0 +13750 : 0 +13751 : 0 +13752 : 0 +13753 : 0 +13754 : 0 +13755 : 0 +13756 : 0 +13757 : 0 +13758 : 0 +13759 : 0 +13760 : 0 +13761 : 0 +13762 : 0 +13763 : 0 +13764 : 0 +13765 : 0 +13766 : 0 +13767 : 0 +13768 : 0 +13769 : 0 +13770 : 0 +13771 : 0 +13772 : 0 +13773 : 0 +13774 : 0 +13775 : 0 +13776 : 0 +13777 : 0 +13778 : 0 +13779 : 0 +13780 : 0 +13781 : 0 +13782 : 0 +13783 : 0 +13784 : 0 +13785 : 0 +13786 : 0 +13787 : 0 +13788 : 0 +13789 : 0 +13790 : 0 +13791 : 0 +13792 : 0 +13793 : 0 +13794 : 0 +13795 : 0 +13796 : 0 +13797 : 0 +13798 : 0 +13799 : 0 +13800 : 0 +13801 : 0 +13802 : 0 +13803 : 0 +13804 : 0 +13805 : 0 +13806 : 0 +13807 : 0 +13808 : 0 +13809 : 0 +13810 : 0 +13811 : 0 +13812 : 0 +13813 : 0 +13814 : 0 +13815 : 0 +13816 : 0 +13817 : 0 +13818 : 0 +13819 : 0 +13820 : 0 +13821 : 0 +13822 : 0 +13823 : 0 +13824 : 0 +13825 : 0 +13826 : 0 +13827 : 0 +13828 : 0 +13829 : 0 +13830 : 0 +13831 : 0 +13832 : 0 +13833 : 0 +13834 : 0 +13835 : 0 +13836 : 0 +13837 : 0 +13838 : 0 +13839 : 0 +13840 : 0 +13841 : 0 +13842 : 0 +13843 : 0 +13844 : 0 +13845 : 0 +13846 : 0 +13847 : 0 +13848 : 0 +13849 : 0 +13850 : 0 +13851 : 0 +13852 : 0 +13853 : 0 +13854 : 0 +13855 : 0 +13856 : 0 +13857 : 0 +13858 : 0 +13859 : 0 +13860 : 0 +13861 : 0 +13862 : 0 +13863 : 0 +13864 : 0 +13865 : 0 +13866 : 0 +13867 : 0 +13868 : 0 +13869 : 0 +13870 : 0 +13871 : 0 +13872 : 0 +13873 : 0 +13874 : 0 +13875 : 0 +13876 : 0 +13877 : 0 +13878 : 0 +13879 : 0 +13880 : 0 +13881 : 0 +13882 : 0 +13883 : 0 +13884 : 0 +13885 : 0 +13886 : 0 +13887 : 0 +13888 : 0 +13889 : 0 +13890 : 0 +13891 : 0 +13892 : 0 +13893 : 0 +13894 : 0 +13895 : 0 +13896 : 0 +13897 : 0 +13898 : 0 +13899 : 0 +13900 : 0 +13901 : 0 +13902 : 0 +13903 : 0 +13904 : 0 +13905 : 0 +13906 : 0 +13907 : 0 +13908 : 0 +13909 : 0 +13910 : 0 +13911 : 0 +13912 : 0 +13913 : 0 +13914 : 0 +13915 : 0 +13916 : 0 +13917 : 0 +13918 : 0 +13919 : 0 +13920 : 0 +13921 : 0 +13922 : 0 +13923 : 0 +13924 : 0 +13925 : 0 +13926 : 0 +13927 : 0 +13928 : 0 +13929 : 0 +13930 : 0 +13931 : 0 +13932 : 0 +13933 : 0 +13934 : 0 +13935 : 0 +13936 : 0 +13937 : 0 +13938 : 0 +13939 : 0 +13940 : 0 +13941 : 0 +13942 : 0 +13943 : 0 +13944 : 0 +13945 : 0 +13946 : 0 +13947 : 0 +13948 : 0 +13949 : 0 +13950 : 0 +13951 : 0 +13952 : 0 +13953 : 0 +13954 : 0 +13955 : 0 +13956 : 0 +13957 : 0 +13958 : 0 +13959 : 0 +13960 : 0 +13961 : 0 +13962 : 0 +13963 : 0 +13964 : 0 +13965 : 0 +13966 : 0 +13967 : 0 +13968 : 0 +13969 : 0 +13970 : 0 +13971 : 0 +13972 : 0 +13973 : 0 +13974 : 0 +13975 : 0 +13976 : 0 +13977 : 0 +13978 : 0 +13979 : 0 +13980 : 0 +13981 : 0 +13982 : 0 +13983 : 0 +13984 : 0 +13985 : 0 +13986 : 0 +13987 : 0 +13988 : 0 +13989 : 0 +13990 : 0 +13991 : 0 +13992 : 0 +13993 : 0 +13994 : 0 +13995 : 0 +13996 : 0 +13997 : 0 +13998 : 0 +13999 : 0 +14000 : 0 +14001 : 0 +14002 : 0 +14003 : 0 +14004 : 0 +14005 : 0 +14006 : 0 +14007 : 0 +14008 : 0 +14009 : 0 +14010 : 0 +14011 : 0 +14012 : 0 +14013 : 0 +14014 : 0 +14015 : 0 +14016 : 0 +14017 : 0 +14018 : 0 +14019 : 0 +14020 : 0 +14021 : 0 +14022 : 0 +14023 : 0 +14024 : 0 +14025 : 0 +14026 : 0 +14027 : 0 +14028 : 0 +14029 : 0 +14030 : 0 +14031 : 0 +14032 : 0 +14033 : 0 +14034 : 0 +14035 : 0 +14036 : 0 +14037 : 0 +14038 : 0 +14039 : 0 +14040 : 0 +14041 : 0 +14042 : 0 +14043 : 0 +14044 : 0 +14045 : 0 +14046 : 0 +14047 : 0 +14048 : 0 +14049 : 0 +14050 : 0 +14051 : 0 +14052 : 0 +14053 : 0 +14054 : 0 +14055 : 0 +14056 : 0 +14057 : 0 +14058 : 0 +14059 : 0 +14060 : 0 +14061 : 0 +14062 : 0 +14063 : 0 +14064 : 0 +14065 : 0 +14066 : 0 +14067 : 0 +14068 : 0 +14069 : 0 +14070 : 0 +14071 : 0 +14072 : 0 +14073 : 0 +14074 : 0 +14075 : 0 +14076 : 0 +14077 : 0 +14078 : 0 +14079 : 0 +14080 : 0 +14081 : 0 +14082 : 0 +14083 : 0 +14084 : 0 +14085 : 0 +14086 : 0 +14087 : 0 +14088 : 0 +14089 : 0 +14090 : 0 +14091 : 0 +14092 : 0 +14093 : 0 +14094 : 0 +14095 : 0 +14096 : 0 +14097 : 0 +14098 : 0 +14099 : 0 +14100 : 0 +14101 : 0 +14102 : 0 +14103 : 0 +14104 : 0 +14105 : 0 +14106 : 0 +14107 : 0 +14108 : 0 +14109 : 0 +14110 : 0 +14111 : 0 +14112 : 0 +14113 : 0 +14114 : 0 +14115 : 0 +14116 : 0 +14117 : 0 +14118 : 0 +14119 : 0 +14120 : 0 +14121 : 0 +14122 : 0 +14123 : 0 +14124 : 0 +14125 : 0 +14126 : 0 +14127 : 0 +14128 : 0 +14129 : 0 +14130 : 0 +14131 : 0 +14132 : 0 +14133 : 0 +14134 : 0 +14135 : 0 +14136 : 0 +14137 : 0 +14138 : 0 +14139 : 0 +14140 : 0 +14141 : 0 +14142 : 0 +14143 : 0 +14144 : 0 +14145 : 0 +14146 : 0 +14147 : 0 +14148 : 0 +14149 : 0 +14150 : 0 +14151 : 0 +14152 : 0 +14153 : 0 +14154 : 0 +14155 : 0 +14156 : 0 +14157 : 0 +14158 : 0 +14159 : 0 +14160 : 0 +14161 : 0 +14162 : 0 +14163 : 0 +14164 : 0 +14165 : 0 +14166 : 0 +14167 : 0 +14168 : 0 +14169 : 0 +14170 : 0 +14171 : 0 +14172 : 0 +14173 : 0 +14174 : 0 +14175 : 0 +14176 : 0 +14177 : 0 +14178 : 0 +14179 : 0 +14180 : 0 +14181 : 0 +14182 : 0 +14183 : 0 +14184 : 0 +14185 : 0 +14186 : 0 +14187 : 0 +14188 : 0 +14189 : 0 +14190 : 0 +14191 : 0 +14192 : 0 +14193 : 0 +14194 : 0 +14195 : 0 +14196 : 0 +14197 : 0 +14198 : 0 +14199 : 0 +14200 : 0 +14201 : 0 +14202 : 0 +14203 : 0 +14204 : 0 +14205 : 0 +14206 : 0 +14207 : 0 +14208 : 0 +14209 : 0 +14210 : 0 +14211 : 0 +14212 : 0 +14213 : 0 +14214 : 0 +14215 : 0 +14216 : 0 +14217 : 0 +14218 : 0 +14219 : 0 +14220 : 0 +14221 : 0 +14222 : 0 +14223 : 0 +14224 : 0 +14225 : 0 +14226 : 0 +14227 : 0 +14228 : 0 +14229 : 0 +14230 : 0 +14231 : 0 +14232 : 0 +14233 : 0 +14234 : 0 +14235 : 0 +14236 : 0 +14237 : 0 +14238 : 0 +14239 : 0 +14240 : 0 +14241 : 0 +14242 : 0 +14243 : 0 +14244 : 0 +14245 : 0 +14246 : 0 +14247 : 0 +14248 : 0 +14249 : 0 +14250 : 0 +14251 : 0 +14252 : 0 +14253 : 0 +14254 : 0 +14255 : 0 +14256 : 0 +14257 : 0 +14258 : 0 +14259 : 0 +14260 : 0 +14261 : 0 +14262 : 0 +14263 : 0 +14264 : 0 +14265 : 0 +14266 : 0 +14267 : 0 +14268 : 0 +14269 : 0 +14270 : 0 +14271 : 0 +14272 : 0 +14273 : 0 +14274 : 0 +14275 : 0 +14276 : 0 +14277 : 0 +14278 : 0 +14279 : 0 +14280 : 0 +14281 : 0 +14282 : 0 +14283 : 0 +14284 : 0 +14285 : 0 +14286 : 0 +14287 : 0 +14288 : 0 +14289 : 0 +14290 : 0 +14291 : 0 +14292 : 0 +14293 : 0 +14294 : 0 +14295 : 0 +14296 : 0 +14297 : 0 +14298 : 0 +14299 : 0 +14300 : 0 +14301 : 0 +14302 : 0 +14303 : 0 +14304 : 0 +14305 : 0 +14306 : 0 +14307 : 0 +14308 : 0 +14309 : 0 +14310 : 0 +14311 : 0 +14312 : 0 +14313 : 0 +14314 : 0 +14315 : 0 +14316 : 0 +14317 : 0 +14318 : 0 +14319 : 0 +14320 : 0 +14321 : 0 +14322 : 0 +14323 : 0 +14324 : 0 +14325 : 0 +14326 : 0 +14327 : 0 +14328 : 0 +14329 : 0 +14330 : 0 +14331 : 0 +14332 : 0 +14333 : 0 +14334 : 0 +14335 : 0 +14336 : 0 +14337 : 0 +14338 : 0 +14339 : 0 +14340 : 0 +14341 : 0 +14342 : 0 +14343 : 0 +14344 : 0 +14345 : 0 +14346 : 0 +14347 : 0 +14348 : 0 +14349 : 0 +14350 : 0 +14351 : 0 +14352 : 0 +14353 : 0 +14354 : 0 +14355 : 0 +14356 : 0 +14357 : 0 +14358 : 0 +14359 : 0 +14360 : 0 +14361 : 0 +14362 : 0 +14363 : 0 +14364 : 0 +14365 : 0 +14366 : 0 +14367 : 0 +14368 : 0 +14369 : 0 +14370 : 0 +14371 : 0 +14372 : 0 +14373 : 0 +14374 : 0 +14375 : 0 +14376 : 0 +14377 : 0 +14378 : 0 +14379 : 0 +14380 : 0 +14381 : 0 +14382 : 0 +14383 : 0 +14384 : 0 +14385 : 0 +14386 : 0 +14387 : 0 +14388 : 0 +14389 : 0 +14390 : 0 +14391 : 0 +14392 : 0 +14393 : 0 +14394 : 0 +14395 : 0 +14396 : 0 +14397 : 0 +14398 : 0 +14399 : 0 +14400 : 0 +14401 : 0 +14402 : 0 +14403 : 0 +14404 : 0 +14405 : 0 +14406 : 0 +14407 : 0 +14408 : 0 +14409 : 0 +14410 : 0 +14411 : 0 +14412 : 0 +14413 : 0 +14414 : 0 +14415 : 0 +14416 : 0 +14417 : 0 +14418 : 0 +14419 : 0 +14420 : 0 +14421 : 0 +14422 : 0 +14423 : 0 +14424 : 0 +14425 : 0 +14426 : 0 +14427 : 0 +14428 : 0 +14429 : 0 +14430 : 0 +14431 : 0 +14432 : 0 +14433 : 0 +14434 : 0 +14435 : 0 +14436 : 0 +14437 : 0 +14438 : 0 +14439 : 0 +14440 : 0 +14441 : 0 +14442 : 0 +14443 : 0 +14444 : 0 +14445 : 0 +14446 : 0 +14447 : 0 +14448 : 0 +14449 : 0 +14450 : 0 +14451 : 0 +14452 : 0 +14453 : 0 +14454 : 0 +14455 : 0 +14456 : 0 +14457 : 0 +14458 : 0 +14459 : 0 +14460 : 0 +14461 : 0 +14462 : 0 +14463 : 0 +14464 : 0 +14465 : 0 +14466 : 0 +14467 : 0 +14468 : 0 +14469 : 0 +14470 : 0 +14471 : 0 +14472 : 0 +14473 : 0 +14474 : 0 +14475 : 0 +14476 : 0 +14477 : 0 +14478 : 0 +14479 : 0 +14480 : 0 +14481 : 0 +14482 : 0 +14483 : 0 +14484 : 0 +14485 : 0 +14486 : 0 +14487 : 0 +14488 : 0 +14489 : 0 +14490 : 0 +14491 : 0 +14492 : 0 +14493 : 0 +14494 : 0 +14495 : 0 +14496 : 0 +14497 : 0 +14498 : 0 +14499 : 0 +14500 : 0 +14501 : 0 +14502 : 0 +14503 : 0 +14504 : 0 +14505 : 0 +14506 : 0 +14507 : 0 +14508 : 0 +14509 : 0 +14510 : 0 +14511 : 0 +14512 : 0 +14513 : 0 +14514 : 0 +14515 : 0 +14516 : 0 +14517 : 0 +14518 : 0 +14519 : 0 +14520 : 0 +14521 : 0 +14522 : 0 +14523 : 0 +14524 : 0 +14525 : 0 +14526 : 0 +14527 : 0 +14528 : 0 +14529 : 0 +14530 : 0 +14531 : 0 +14532 : 0 +14533 : 0 +14534 : 0 +14535 : 0 +14536 : 0 +14537 : 0 +14538 : 0 +14539 : 0 +14540 : 0 +14541 : 0 +14542 : 0 +14543 : 0 +14544 : 0 +14545 : 0 +14546 : 0 +14547 : 0 +14548 : 0 +14549 : 0 +14550 : 0 +14551 : 0 +14552 : 0 +14553 : 0 +14554 : 0 +14555 : 0 +14556 : 0 +14557 : 0 +14558 : 0 +14559 : 0 +14560 : 0 +14561 : 0 +14562 : 0 +14563 : 0 +14564 : 0 +14565 : 0 +14566 : 0 +14567 : 0 +14568 : 0 +14569 : 0 +14570 : 0 +14571 : 0 +14572 : 0 +14573 : 0 +14574 : 0 +14575 : 0 +14576 : 0 +14577 : 0 +14578 : 0 +14579 : 0 +14580 : 0 +14581 : 0 +14582 : 0 +14583 : 0 +14584 : 0 +14585 : 0 +14586 : 0 +14587 : 0 +14588 : 0 +14589 : 0 +14590 : 0 +14591 : 0 +14592 : 0 +14593 : 0 +14594 : 0 +14595 : 0 +14596 : 0 +14597 : 0 +14598 : 0 +14599 : 0 +14600 : 0 +14601 : 0 +14602 : 0 +14603 : 0 +14604 : 0 +14605 : 0 +14606 : 0 +14607 : 0 +14608 : 0 +14609 : 0 +14610 : 0 +14611 : 0 +14612 : 0 +14613 : 0 +14614 : 0 +14615 : 0 +14616 : 0 +14617 : 0 +14618 : 0 +14619 : 0 +14620 : 0 +14621 : 0 +14622 : 0 +14623 : 0 +14624 : 0 +14625 : 0 +14626 : 0 +14627 : 0 +14628 : 0 +14629 : 0 +14630 : 0 +14631 : 0 +14632 : 0 +14633 : 0 +14634 : 0 +14635 : 0 +14636 : 0 +14637 : 0 +14638 : 0 +14639 : 0 +14640 : 0 +14641 : 0 +14642 : 0 +14643 : 0 +14644 : 0 +14645 : 0 +14646 : 0 +14647 : 0 +14648 : 0 +14649 : 0 +14650 : 0 +14651 : 0 +14652 : 0 +14653 : 0 +14654 : 0 +14655 : 0 +14656 : 0 +14657 : 0 +14658 : 0 +14659 : 0 +14660 : 0 +14661 : 0 +14662 : 0 +14663 : 0 +14664 : 0 +14665 : 0 +14666 : 0 +14667 : 0 +14668 : 0 +14669 : 0 +14670 : 0 +14671 : 0 +14672 : 0 +14673 : 0 +14674 : 0 +14675 : 0 +14676 : 0 +14677 : 0 +14678 : 0 +14679 : 0 +14680 : 0 +14681 : 0 +14682 : 0 +14683 : 0 +14684 : 0 +14685 : 0 +14686 : 0 +14687 : 0 +14688 : 0 +14689 : 0 +14690 : 0 +14691 : 0 +14692 : 0 +14693 : 0 +14694 : 0 +14695 : 0 +14696 : 0 +14697 : 0 +14698 : 0 +14699 : 0 +14700 : 0 +14701 : 0 +14702 : 0 +14703 : 0 +14704 : 0 +14705 : 0 +14706 : 0 +14707 : 0 +14708 : 0 +14709 : 0 +14710 : 0 +14711 : 0 +14712 : 0 +14713 : 0 +14714 : 0 +14715 : 0 +14716 : 0 +14717 : 0 +14718 : 0 +14719 : 0 +14720 : 0 +14721 : 0 +14722 : 0 +14723 : 0 +14724 : 0 +14725 : 0 +14726 : 0 +14727 : 0 +14728 : 0 +14729 : 0 +14730 : 0 +14731 : 0 +14732 : 0 +14733 : 0 +14734 : 0 +14735 : 0 +14736 : 0 +14737 : 0 +14738 : 0 +14739 : 0 +14740 : 0 +14741 : 0 +14742 : 0 +14743 : 0 +14744 : 0 +14745 : 0 +14746 : 0 +14747 : 0 +14748 : 0 +14749 : 0 +14750 : 0 +14751 : 0 +14752 : 0 +14753 : 0 +14754 : 0 +14755 : 0 +14756 : 0 +14757 : 0 +14758 : 0 +14759 : 0 +14760 : 0 +14761 : 0 +14762 : 0 +14763 : 0 +14764 : 0 +14765 : 0 +14766 : 0 +14767 : 0 +14768 : 0 +14769 : 0 +14770 : 0 +14771 : 0 +14772 : 0 +14773 : 0 +14774 : 0 +14775 : 0 +14776 : 0 +14777 : 0 +14778 : 0 +14779 : 0 +14780 : 0 +14781 : 0 +14782 : 0 +14783 : 0 +14784 : 0 +14785 : 0 +14786 : 0 +14787 : 0 +14788 : 0 +14789 : 0 +14790 : 0 +14791 : 0 +14792 : 0 +14793 : 0 +14794 : 0 +14795 : 0 +14796 : 0 +14797 : 0 +14798 : 0 +14799 : 0 +14800 : 0 +14801 : 0 +14802 : 0 +14803 : 0 +14804 : 0 +14805 : 0 +14806 : 0 +14807 : 0 +14808 : 0 +14809 : 0 +14810 : 0 +14811 : 0 +14812 : 0 +14813 : 0 +14814 : 0 +14815 : 0 +14816 : 0 +14817 : 0 +14818 : 0 +14819 : 0 +14820 : 0 +14821 : 0 +14822 : 0 +14823 : 0 +14824 : 0 +14825 : 0 +14826 : 0 +14827 : 0 +14828 : 0 +14829 : 0 +14830 : 0 +14831 : 0 +14832 : 0 +14833 : 0 +14834 : 0 +14835 : 0 +14836 : 0 +14837 : 0 +14838 : 0 +14839 : 0 +14840 : 0 +14841 : 0 +14842 : 0 +14843 : 0 +14844 : 0 +14845 : 0 +14846 : 0 +14847 : 0 +14848 : 0 +14849 : 0 +14850 : 0 +14851 : 0 +14852 : 0 +14853 : 0 +14854 : 0 +14855 : 0 +14856 : 0 +14857 : 0 +14858 : 0 +14859 : 0 +14860 : 0 +14861 : 0 +14862 : 0 +14863 : 0 +14864 : 0 +14865 : 0 +14866 : 0 +14867 : 0 +14868 : 0 +14869 : 0 +14870 : 0 +14871 : 0 +14872 : 0 +14873 : 0 +14874 : 0 +14875 : 0 +14876 : 0 +14877 : 0 +14878 : 0 +14879 : 0 +14880 : 0 +14881 : 0 +14882 : 0 +14883 : 0 +14884 : 0 +14885 : 0 +14886 : 0 +14887 : 0 +14888 : 0 +14889 : 0 +14890 : 0 +14891 : 0 +14892 : 0 +14893 : 0 +14894 : 0 +14895 : 0 +14896 : 0 +14897 : 0 +14898 : 0 +14899 : 0 +14900 : 0 +14901 : 0 +14902 : 0 +14903 : 0 +14904 : 0 +14905 : 0 +14906 : 0 +14907 : 0 +14908 : 0 +14909 : 0 +14910 : 0 +14911 : 0 +14912 : 0 +14913 : 0 +14914 : 0 +14915 : 0 +14916 : 0 +14917 : 0 +14918 : 0 +14919 : 0 +14920 : 0 +14921 : 0 +14922 : 0 +14923 : 0 +14924 : 0 +14925 : 0 +14926 : 0 +14927 : 0 +14928 : 0 +14929 : 0 +14930 : 0 +14931 : 0 +14932 : 0 +14933 : 0 +14934 : 0 +14935 : 0 +14936 : 0 +14937 : 0 +14938 : 0 +14939 : 0 +14940 : 0 +14941 : 0 +14942 : 0 +14943 : 0 +14944 : 0 +14945 : 0 +14946 : 0 +14947 : 0 +14948 : 0 +14949 : 0 +14950 : 0 +14951 : 0 +14952 : 0 +14953 : 0 +14954 : 0 +14955 : 0 +14956 : 0 +14957 : 0 +14958 : 0 +14959 : 0 +14960 : 0 +14961 : 0 +14962 : 0 +14963 : 0 +14964 : 0 +14965 : 0 +14966 : 0 +14967 : 0 +14968 : 0 +14969 : 0 +14970 : 0 +14971 : 0 +14972 : 0 +14973 : 0 +14974 : 0 +14975 : 0 +14976 : 0 +14977 : 0 +14978 : 0 +14979 : 0 +14980 : 0 +14981 : 0 +14982 : 0 +14983 : 0 +14984 : 0 +14985 : 0 +14986 : 0 +14987 : 0 +14988 : 0 +14989 : 0 +14990 : 0 +14991 : 0 +14992 : 0 +14993 : 0 +14994 : 0 +14995 : 0 +14996 : 0 +14997 : 0 +14998 : 0 +14999 : 0 +15000 : 0 +15001 : 0 +15002 : 0 +15003 : 0 +15004 : 0 +15005 : 0 +15006 : 0 +15007 : 0 +15008 : 0 +15009 : 0 +15010 : 0 +15011 : 0 +15012 : 0 +15013 : 0 +15014 : 0 +15015 : 0 +15016 : 0 +15017 : 0 +15018 : 0 +15019 : 0 +15020 : 0 +15021 : 0 +15022 : 0 +15023 : 0 +15024 : 0 +15025 : 0 +15026 : 0 +15027 : 0 +15028 : 0 +15029 : 0 +15030 : 0 +15031 : 0 +15032 : 0 +15033 : 0 +15034 : 0 +15035 : 0 +15036 : 0 +15037 : 0 +15038 : 0 +15039 : 0 +15040 : 0 +15041 : 0 +15042 : 0 +15043 : 0 +15044 : 0 +15045 : 0 +15046 : 0 +15047 : 0 +15048 : 0 +15049 : 0 +15050 : 0 +15051 : 0 +15052 : 0 +15053 : 0 +15054 : 0 +15055 : 0 +15056 : 0 +15057 : 0 +15058 : 0 +15059 : 0 +15060 : 0 +15061 : 0 +15062 : 0 +15063 : 0 +15064 : 0 +15065 : 0 +15066 : 0 +15067 : 0 +15068 : 0 +15069 : 0 +15070 : 0 +15071 : 0 +15072 : 0 +15073 : 0 +15074 : 0 +15075 : 0 +15076 : 0 +15077 : 0 +15078 : 0 +15079 : 0 +15080 : 0 +15081 : 0 +15082 : 0 +15083 : 0 +15084 : 0 +15085 : 0 +15086 : 0 +15087 : 0 +15088 : 0 +15089 : 0 +15090 : 0 +15091 : 0 +15092 : 0 +15093 : 0 +15094 : 0 +15095 : 0 +15096 : 0 +15097 : 0 +15098 : 0 +15099 : 0 +15100 : 0 +15101 : 0 +15102 : 0 +15103 : 0 +15104 : 0 +15105 : 0 +15106 : 0 +15107 : 0 +15108 : 0 +15109 : 0 +15110 : 0 +15111 : 0 +15112 : 0 +15113 : 0 +15114 : 0 +15115 : 0 +15116 : 0 +15117 : 0 +15118 : 0 +15119 : 0 +15120 : 0 +15121 : 0 +15122 : 0 +15123 : 0 +15124 : 0 +15125 : 0 +15126 : 0 +15127 : 0 +15128 : 0 +15129 : 0 +15130 : 0 +15131 : 0 +15132 : 0 +15133 : 0 +15134 : 0 +15135 : 0 +15136 : 0 +15137 : 0 +15138 : 0 +15139 : 0 +15140 : 0 +15141 : 0 +15142 : 0 +15143 : 0 +15144 : 0 +15145 : 0 +15146 : 0 +15147 : 0 +15148 : 0 +15149 : 0 +15150 : 0 +15151 : 0 +15152 : 0 +15153 : 0 +15154 : 0 +15155 : 0 +15156 : 0 +15157 : 0 +15158 : 0 +15159 : 0 +15160 : 0 +15161 : 0 +15162 : 0 +15163 : 0 +15164 : 0 +15165 : 0 +15166 : 0 +15167 : 0 +15168 : 0 +15169 : 0 +15170 : 0 +15171 : 0 +15172 : 0 +15173 : 0 +15174 : 0 +15175 : 0 +15176 : 0 +15177 : 0 +15178 : 0 +15179 : 0 +15180 : 0 +15181 : 0 +15182 : 0 +15183 : 0 +15184 : 0 +15185 : 0 +15186 : 0 +15187 : 0 +15188 : 0 +15189 : 0 +15190 : 0 +15191 : 0 +15192 : 0 +15193 : 0 +15194 : 0 +15195 : 0 +15196 : 0 +15197 : 0 +15198 : 0 +15199 : 0 +15200 : 0 +15201 : 0 +15202 : 0 +15203 : 0 +15204 : 0 +15205 : 0 +15206 : 0 +15207 : 0 +15208 : 0 +15209 : 0 +15210 : 0 +15211 : 0 +15212 : 0 +15213 : 0 +15214 : 0 +15215 : 0 +15216 : 0 +15217 : 0 +15218 : 0 +15219 : 0 +15220 : 0 +15221 : 0 +15222 : 0 +15223 : 0 +15224 : 0 +15225 : 0 +15226 : 0 +15227 : 0 +15228 : 0 +15229 : 0 +15230 : 0 +15231 : 0 +15232 : 0 +15233 : 0 +15234 : 0 +15235 : 0 +15236 : 0 +15237 : 0 +15238 : 0 +15239 : 0 +15240 : 0 +15241 : 0 +15242 : 0 +15243 : 0 +15244 : 0 +15245 : 0 +15246 : 0 +15247 : 0 +15248 : 0 +15249 : 0 +15250 : 0 +15251 : 0 +15252 : 0 +15253 : 0 +15254 : 0 +15255 : 0 +15256 : 0 +15257 : 0 +15258 : 0 +15259 : 0 +15260 : 0 +15261 : 0 +15262 : 0 +15263 : 0 +15264 : 0 +15265 : 0 +15266 : 0 +15267 : 0 +15268 : 0 +15269 : 0 +15270 : 0 +15271 : 0 +15272 : 0 +15273 : 0 +15274 : 0 +15275 : 0 +15276 : 0 +15277 : 0 +15278 : 0 +15279 : 0 +15280 : 0 +15281 : 0 +15282 : 0 +15283 : 0 +15284 : 0 +15285 : 0 +15286 : 0 +15287 : 0 +15288 : 0 +15289 : 0 +15290 : 0 +15291 : 0 +15292 : 0 +15293 : 0 +15294 : 0 +15295 : 0 +15296 : 0 +15297 : 0 +15298 : 0 +15299 : 0 +15300 : 0 +15301 : 0 +15302 : 0 +15303 : 0 +15304 : 0 +15305 : 0 +15306 : 0 +15307 : 0 +15308 : 0 +15309 : 0 +15310 : 0 +15311 : 0 +15312 : 0 +15313 : 0 +15314 : 0 +15315 : 0 +15316 : 0 +15317 : 0 +15318 : 0 +15319 : 0 +15320 : 0 +15321 : 0 +15322 : 0 +15323 : 0 +15324 : 0 +15325 : 0 +15326 : 0 +15327 : 0 +15328 : 0 +15329 : 0 +15330 : 0 +15331 : 0 +15332 : 0 +15333 : 0 +15334 : 0 +15335 : 0 +15336 : 0 +15337 : 0 +15338 : 0 +15339 : 0 +15340 : 0 +15341 : 0 +15342 : 0 +15343 : 0 +15344 : 0 +15345 : 0 +15346 : 0 +15347 : 0 +15348 : 0 +15349 : 0 +15350 : 0 +15351 : 0 +15352 : 0 +15353 : 0 +15354 : 0 +15355 : 0 +15356 : 0 +15357 : 0 +15358 : 0 +15359 : 0 +15360 : 0 +15361 : 0 +15362 : 0 +15363 : 0 +15364 : 0 +15365 : 0 +15366 : 0 +15367 : 0 +15368 : 0 +15369 : 0 +15370 : 0 +15371 : 0 +15372 : 0 +15373 : 0 +15374 : 0 +15375 : 0 +15376 : 0 +15377 : 0 +15378 : 0 +15379 : 0 +15380 : 0 +15381 : 0 +15382 : 0 +15383 : 0 +15384 : 0 +15385 : 0 +15386 : 0 +15387 : 0 +15388 : 0 +15389 : 0 +15390 : 0 +15391 : 0 +15392 : 0 +15393 : 0 +15394 : 0 +15395 : 0 +15396 : 0 +15397 : 0 +15398 : 0 +15399 : 0 +15400 : 0 +15401 : 0 +15402 : 0 +15403 : 0 +15404 : 0 +15405 : 0 +15406 : 0 +15407 : 0 +15408 : 0 +15409 : 0 +15410 : 0 +15411 : 0 +15412 : 0 +15413 : 0 +15414 : 0 +15415 : 0 +15416 : 0 +15417 : 0 +15418 : 0 +15419 : 0 +15420 : 0 +15421 : 0 +15422 : 0 +15423 : 0 +15424 : 0 +15425 : 0 +15426 : 0 +15427 : 0 +15428 : 0 +15429 : 0 +15430 : 0 +15431 : 0 +15432 : 0 +15433 : 0 +15434 : 0 +15435 : 0 +15436 : 0 +15437 : 0 +15438 : 0 +15439 : 0 +15440 : 0 +15441 : 0 +15442 : 0 +15443 : 0 +15444 : 0 +15445 : 0 +15446 : 0 +15447 : 0 +15448 : 0 +15449 : 0 +15450 : 0 +15451 : 0 +15452 : 0 +15453 : 0 +15454 : 0 +15455 : 0 +15456 : 0 +15457 : 0 +15458 : 0 +15459 : 0 +15460 : 0 +15461 : 0 +15462 : 0 +15463 : 0 +15464 : 0 +15465 : 0 +15466 : 0 +15467 : 0 +15468 : 0 +15469 : 0 +15470 : 0 +15471 : 0 +15472 : 0 +15473 : 0 +15474 : 0 +15475 : 0 +15476 : 0 +15477 : 0 +15478 : 0 +15479 : 0 +15480 : 0 +15481 : 0 +15482 : 0 +15483 : 0 +15484 : 0 +15485 : 0 +15486 : 0 +15487 : 0 +15488 : 0 +15489 : 0 +15490 : 0 +15491 : 0 +15492 : 0 +15493 : 0 +15494 : 0 +15495 : 0 +15496 : 0 +15497 : 0 +15498 : 0 +15499 : 0 +15500 : 0 +15501 : 0 +15502 : 0 +15503 : 0 +15504 : 0 +15505 : 0 +15506 : 0 +15507 : 0 +15508 : 0 +15509 : 0 +15510 : 0 +15511 : 0 +15512 : 0 +15513 : 0 +15514 : 0 +15515 : 0 +15516 : 0 +15517 : 0 +15518 : 0 +15519 : 0 +15520 : 0 +15521 : 0 +15522 : 0 +15523 : 0 +15524 : 0 +15525 : 0 +15526 : 0 +15527 : 0 +15528 : 0 +15529 : 0 +15530 : 0 +15531 : 0 +15532 : 0 +15533 : 0 +15534 : 0 +15535 : 0 +15536 : 0 +15537 : 0 +15538 : 0 +15539 : 0 +15540 : 0 +15541 : 0 +15542 : 0 +15543 : 0 +15544 : 0 +15545 : 0 +15546 : 0 +15547 : 0 +15548 : 0 +15549 : 0 +15550 : 0 +15551 : 0 +15552 : 0 +15553 : 0 +15554 : 0 +15555 : 0 +15556 : 0 +15557 : 0 +15558 : 0 +15559 : 0 +15560 : 0 +15561 : 0 +15562 : 0 +15563 : 0 +15564 : 0 +15565 : 0 +15566 : 0 +15567 : 0 +15568 : 0 +15569 : 0 +15570 : 0 +15571 : 0 +15572 : 0 +15573 : 0 +15574 : 0 +15575 : 0 +15576 : 0 +15577 : 0 +15578 : 0 +15579 : 0 +15580 : 0 +15581 : 0 +15582 : 0 +15583 : 0 +15584 : 0 +15585 : 0 +15586 : 0 +15587 : 0 +15588 : 0 +15589 : 0 +15590 : 0 +15591 : 0 +15592 : 0 +15593 : 0 +15594 : 0 +15595 : 0 +15596 : 0 +15597 : 0 +15598 : 0 +15599 : 0 +15600 : 0 +15601 : 0 +15602 : 0 +15603 : 0 +15604 : 0 +15605 : 0 +15606 : 0 +15607 : 0 +15608 : 0 +15609 : 0 +15610 : 0 +15611 : 0 +15612 : 0 +15613 : 0 +15614 : 0 +15615 : 0 +15616 : 0 +15617 : 0 +15618 : 0 +15619 : 0 +15620 : 0 +15621 : 0 +15622 : 0 +15623 : 0 +15624 : 0 +15625 : 0 +15626 : 0 +15627 : 0 +15628 : 0 +15629 : 0 +15630 : 0 +15631 : 0 +15632 : 0 +15633 : 0 +15634 : 0 +15635 : 0 +15636 : 0 +15637 : 0 +15638 : 0 +15639 : 0 +15640 : 0 +15641 : 0 +15642 : 0 +15643 : 0 +15644 : 0 +15645 : 0 +15646 : 0 +15647 : 0 +15648 : 0 +15649 : 0 +15650 : 0 +15651 : 0 +15652 : 0 +15653 : 0 +15654 : 0 +15655 : 0 +15656 : 0 +15657 : 0 +15658 : 0 +15659 : 0 +15660 : 0 +15661 : 0 +15662 : 0 +15663 : 0 +15664 : 0 +15665 : 0 +15666 : 0 +15667 : 0 +15668 : 0 +15669 : 0 +15670 : 0 +15671 : 0 +15672 : 0 +15673 : 0 +15674 : 0 +15675 : 0 +15676 : 0 +15677 : 0 +15678 : 0 +15679 : 0 +15680 : 0 +15681 : 0 +15682 : 0 +15683 : 0 +15684 : 0 +15685 : 0 +15686 : 0 +15687 : 0 +15688 : 0 +15689 : 0 +15690 : 0 +15691 : 0 +15692 : 0 +15693 : 0 +15694 : 0 +15695 : 0 +15696 : 0 +15697 : 0 +15698 : 0 +15699 : 0 +15700 : 0 +15701 : 0 +15702 : 0 +15703 : 0 +15704 : 0 +15705 : 0 +15706 : 0 +15707 : 0 +15708 : 0 +15709 : 0 +15710 : 0 +15711 : 0 +15712 : 0 +15713 : 0 +15714 : 0 +15715 : 0 +15716 : 0 +15717 : 0 +15718 : 0 +15719 : 0 +15720 : 0 +15721 : 0 +15722 : 0 +15723 : 0 +15724 : 0 +15725 : 0 +15726 : 0 +15727 : 0 +15728 : 0 +15729 : 0 +15730 : 0 +15731 : 0 +15732 : 0 +15733 : 0 +15734 : 0 +15735 : 0 +15736 : 0 +15737 : 0 +15738 : 0 +15739 : 0 +15740 : 0 +15741 : 0 +15742 : 0 +15743 : 0 +15744 : 0 +15745 : 0 +15746 : 0 +15747 : 0 +15748 : 0 +15749 : 0 +15750 : 0 +15751 : 0 +15752 : 0 +15753 : 0 +15754 : 0 +15755 : 0 +15756 : 0 +15757 : 0 +15758 : 0 +15759 : 0 +15760 : 0 +15761 : 0 +15762 : 0 +15763 : 0 +15764 : 0 +15765 : 0 +15766 : 0 +15767 : 0 +15768 : 0 +15769 : 0 +15770 : 0 +15771 : 0 +15772 : 0 +15773 : 0 +15774 : 0 +15775 : 0 +15776 : 0 +15777 : 0 +15778 : 0 +15779 : 0 +15780 : 0 +15781 : 0 +15782 : 0 +15783 : 0 +15784 : 0 +15785 : 0 +15786 : 0 +15787 : 0 +15788 : 0 +15789 : 0 +15790 : 0 +15791 : 0 +15792 : 0 +15793 : 0 +15794 : 0 +15795 : 0 +15796 : 0 +15797 : 0 +15798 : 0 +15799 : 0 +15800 : 0 +15801 : 0 +15802 : 0 +15803 : 0 +15804 : 0 +15805 : 0 +15806 : 0 +15807 : 0 +15808 : 0 +15809 : 0 +15810 : 0 +15811 : 0 +15812 : 0 +15813 : 0 +15814 : 0 +15815 : 0 +15816 : 0 +15817 : 0 +15818 : 0 +15819 : 0 +15820 : 0 +15821 : 0 +15822 : 0 +15823 : 0 +15824 : 0 +15825 : 0 +15826 : 0 +15827 : 0 +15828 : 0 +15829 : 0 +15830 : 0 +15831 : 0 +15832 : 0 +15833 : 0 +15834 : 0 +15835 : 0 +15836 : 0 +15837 : 0 +15838 : 0 +15839 : 0 +15840 : 0 +15841 : 0 +15842 : 0 +15843 : 0 +15844 : 0 +15845 : 0 +15846 : 0 +15847 : 0 +15848 : 0 +15849 : 0 +15850 : 0 +15851 : 0 +15852 : 0 +15853 : 0 +15854 : 0 +15855 : 0 +15856 : 0 +15857 : 0 +15858 : 0 +15859 : 0 +15860 : 0 +15861 : 0 +15862 : 0 +15863 : 0 +15864 : 0 +15865 : 0 +15866 : 0 +15867 : 0 +15868 : 0 +15869 : 0 +15870 : 0 +15871 : 0 +15872 : 0 +15873 : 0 +15874 : 0 +15875 : 0 +15876 : 0 +15877 : 0 +15878 : 0 +15879 : 0 +15880 : 0 +15881 : 0 +15882 : 0 +15883 : 0 +15884 : 0 +15885 : 0 +15886 : 0 +15887 : 0 +15888 : 0 +15889 : 0 +15890 : 0 +15891 : 0 +15892 : 0 +15893 : 0 +15894 : 0 +15895 : 0 +15896 : 0 +15897 : 0 +15898 : 0 +15899 : 0 +15900 : 0 +15901 : 0 +15902 : 0 +15903 : 0 +15904 : 0 +15905 : 0 +15906 : 0 +15907 : 0 +15908 : 0 +15909 : 0 +15910 : 0 +15911 : 0 +15912 : 0 +15913 : 0 +15914 : 0 +15915 : 0 +15916 : 0 +15917 : 0 +15918 : 0 +15919 : 0 +15920 : 0 +15921 : 0 +15922 : 0 +15923 : 0 +15924 : 0 +15925 : 0 +15926 : 0 +15927 : 0 +15928 : 0 +15929 : 0 +15930 : 0 +15931 : 0 +15932 : 0 +15933 : 0 +15934 : 0 +15935 : 0 +15936 : 0 +15937 : 0 +15938 : 0 +15939 : 0 +15940 : 0 +15941 : 0 +15942 : 0 +15943 : 0 +15944 : 0 +15945 : 0 +15946 : 0 +15947 : 0 +15948 : 0 +15949 : 0 +15950 : 0 +15951 : 0 +15952 : 0 +15953 : 0 +15954 : 0 +15955 : 0 +15956 : 0 +15957 : 0 +15958 : 0 +15959 : 0 +15960 : 0 +15961 : 0 +15962 : 0 +15963 : 0 +15964 : 0 +15965 : 0 +15966 : 0 +15967 : 0 +15968 : 0 +15969 : 0 +15970 : 0 +15971 : 0 +15972 : 0 +15973 : 0 +15974 : 0 +15975 : 0 +15976 : 0 +15977 : 0 +15978 : 0 +15979 : 0 +15980 : 0 +15981 : 0 +15982 : 0 +15983 : 0 +15984 : 0 +15985 : 0 +15986 : 0 +15987 : 0 +15988 : 0 +15989 : 0 +15990 : 0 +15991 : 0 +15992 : 0 +15993 : 0 +15994 : 0 +15995 : 0 +15996 : 0 +15997 : 0 +15998 : 0 +15999 : 0 +16000 : 0 +16001 : 0 +16002 : 0 +16003 : 0 +16004 : 0 +16005 : 0 +16006 : 0 +16007 : 0 +16008 : 0 +16009 : 0 +16010 : 0 +16011 : 0 +16012 : 0 +16013 : 0 +16014 : 0 +16015 : 0 +16016 : 0 +16017 : 0 +16018 : 0 +16019 : 0 +16020 : 0 +16021 : 0 +16022 : 0 +16023 : 0 +16024 : 0 +16025 : 0 +16026 : 0 +16027 : 0 +16028 : 0 +16029 : 0 +16030 : 0 +16031 : 0 +16032 : 0 +16033 : 0 +16034 : 0 +16035 : 0 +16036 : 0 +16037 : 0 +16038 : 0 +16039 : 0 +16040 : 0 +16041 : 0 +16042 : 0 +16043 : 0 +16044 : 0 +16045 : 0 +16046 : 0 +16047 : 0 +16048 : 0 +16049 : 0 +16050 : 0 +16051 : 0 +16052 : 0 +16053 : 0 +16054 : 0 +16055 : 0 +16056 : 0 +16057 : 0 +16058 : 0 +16059 : 0 +16060 : 0 +16061 : 0 +16062 : 0 +16063 : 0 +16064 : 0 +16065 : 0 +16066 : 0 +16067 : 0 +16068 : 0 +16069 : 0 +16070 : 49 +16071 : 0 +16072 : 1908685344 +16073 : 49 +16074 : 1908685344 +16075 : 49 +16076 : 32767 +16077 : 0 +16078 : 2586441856 +16079 : 32767 +16080 : 48 +16081 : 0 +16082 : 48 +16083 : 0 +16084 : 20 +16085 : 20 +16086 : 5472736 +16087 : 0 +16088 : 0 +16089 : 0 +16090 : 3 +16091 : 32767 +16092 : 32767 +16093 : 32767 +16094 : 49 +16095 : 0 +16096 : 4324144 +16097 : 0 +16098 : 1 +16099 : 0 +16100 : 0 +16101 : 0 +16102 : 2586441568 +16103 : 32767 +16104 : 32767 +16105 : 32767 +16106 : 33 +16107 : 0 +16108 : 5472688 +16109 : 0 +16110 : 5476256 +16111 : 0 +16112 : 0 +16113 : 0 +16114 : 49 +16115 : 0 +16116 : 100 +16117 : 100 +16118 : 5472864 +16119 : 0 +16120 : 0 +16121 : 0 +16122 : 4 +16123 : 32767 +16124 : 32767 +16125 : 32767 +16126 : 49 +16127 : 0 +16128 : 4324432 +16129 : 0 +16130 : 1 +16131 : 0 +16132 : 0 +16133 : 0 +16134 : 2586441280 +16135 : 32767 +16136 : 32767 +16137 : 32767 +16138 : 33 +16139 : 0 +16140 : 5472816 +16141 : 0 +16142 : 0 +16143 : 0 +16144 : 5408496 +16145 : 0 +16146 : 49 +16147 : 0 +16148 : 0 +16149 : 0 +16150 : 5548096 +16151 : 0 +16152 : 5473136 +16153 : 0 +16154 : 5473040 +16155 : 0 +16156 : 73 +16157 : 32767 +16158 : 49 +16159 : 0 +16160 : 1 +16161 : 49 +16162 : 5661904 +16163 : 0 +16164 : 5662480 +16165 : 0 +16166 : 5662336 +16167 : 0 +16168 : 35 +16169 : 0 +16170 : 49 +16171 : 0 +16172 : 1 +16173 : 0 +16174 : 5472944 +16175 : 0 +16176 : 0 +16177 : 0 +16178 : 5473184 +16179 : 0 +16180 : 84 +16181 : 32767 +16182 : 49 +16183 : 0 +16184 : 1 +16185 : 0 +16186 : 5473280 +16187 : 0 +16188 : 0 +16189 : 0 +16190 : 0 +16191 : 0 +16192 : 24 +16193 : 32767 +16194 : 49 +16195 : 0 +16196 : 1 +16197 : 0 +16198 : 5472944 +16199 : 0 +16200 : 0 +16201 : 0 +16202 : 0 +16203 : 0 +16204 : 37 +16205 : 32767 +16206 : 49 +16207 : 0 +16208 : 0 +16209 : 0 +16210 : 5473040 +16211 : 0 +16212 : 0 +16213 : 0 +16214 : 0 +16215 : 0 +16216 : 98 +16217 : 32767 +16218 : 49 +16219 : 0 +16220 : 1 +16221 : 0 +16222 : 5473280 +16223 : 0 +16224 : 5684944 +16225 : 0 +16226 : 0 +16227 : 0 +16228 : 19 +16229 : 32767 +16230 : 49 +16231 : 0 +16232 : 0 +16233 : 0 +16234 : 5548096 +16235 : 0 +16236 : 5473232 +16237 : 0 +16238 : 5473088 +16239 : 0 +16240 : 21 +16241 : 32767 +16242 : 753 +16243 : 0 +16244 : 4309840 +16245 : 0 +16246 : 0 +16247 : 49 +16248 : 32767 +16249 : 32767 +16250 : 32767 +16251 : 32767 +16252 : 5476160 +16253 : 0 +16254 : 2586442176 +16255 : 32767 +16256 : 2 +16257 : 0 +16258 : 0 +16259 : 5 +16260 : 0 +16261 : 32767 +16262 : 5616336 +16263 : 0 +16264 : 32767 +16265 : 32767 +16266 : 5408656 +16267 : 0 +16268 : 5473424 +16269 : 0 +16270 : 5473424 +16271 : 0 +16272 : 32767 +16273 : 32767 +16274 : 32767 +16275 : 32767 +16276 : 832 +16277 : 0 +16278 : 5474672 +16279 : 0 +16280 : 5476128 +16281 : 0 +16282 : 0 +16283 : 0 +16284 : 5685312 +16285 : 0 +16286 : 32767 +16287 : 32767 +16288 : 0 +16289 : 32767 +16290 : 0 +16291 : 0 +16292 : 5473504 +16293 : 0 +16294 : 5473504 +16295 : 0 +16296 : 0 +16297 : 0 +16298 : 32767 +16299 : 32767 +16300 : 0 +16301 : 32767 +16302 : 0 +16303 : 0 +16304 : 5473552 +16305 : 0 +16306 : 5473552 +16307 : 0 +16308 : 0 +16309 : 0 +16310 : 0 +16311 : 0 +16312 : 0 +16313 : 0 +16314 : 0 +16315 : 0 +16316 : 32767 +16317 : 32767 +16318 : 20 +16319 : 3 +16320 : 1 +16321 : 32767 +16322 : 32767 +16323 : 32767 +16324 : 0 +16325 : 32767 +16326 : 5474080 +16327 : 0 +16328 : 5474416 +16329 : 0 +16330 : 5474176 +16331 : 0 +16332 : 8 +16333 : 0 +16334 : 5 +16335 : 1004 +16336 : 0 +16337 : 100 +16338 : 5473704 +16339 : 0 +16340 : 5473704 +16341 : 0 +16342 : 5408656 +16343 : 0 +16344 : 0 +16345 : 32767 +16346 : 5617744 +16347 : 0 +16348 : 5617744 +16349 : 0 +16350 : 32767 +16351 : 32767 +16352 : 0 +16353 : 32767 +16354 : 0 +16355 : 0 +16356 : 5473760 +16357 : 0 +16358 : 5473760 +16359 : 0 +16360 : 0 +16361 : 0 +16362 : 32767 +16363 : 32767 +16364 : 0 +16365 : 32767 +16366 : 0 +16367 : 0 +16368 : 5473808 +16369 : 0 +16370 : 5473808 +16371 : 0 +16372 : 0 +16373 : 0 +16374 : 5479872 +16375 : 0 +16376 : 5616512 +16377 : 0 +16378 : 5479872 +16379 : 0 +16380 : 5662832 +16381 : 0 +16382 : 5662890 +16383 : 0 +16384 : 5662896 +16385 : 0 +16386 : 32767 +16387 : 32767 +16388 : 0 +16389 : 32767 +16390 : 5477584 +16391 : 0 +16392 : 5479936 +16393 : 0 +16394 : 5409296 +16395 : 0 +16396 : 86 +16397 : 0 +16398 : 0 +16399 : 0 +16400 : 32767 +16401 : 32767 +16402 : 0 +16403 : 32767 +16404 : 0 +16405 : 0 +16406 : 5473960 +16407 : 0 +16408 : 5473960 +16409 : 0 +16410 : 0 +16411 : 0 +16412 : 0 +16413 : 0 +16414 : 0 +16415 : 0 +16416 : 32767 +16417 : 32767 +16418 : 0 +16419 : 32767 +16420 : 5618256 +16421 : 0 +16422 : 5663008 +16423 : 0 +16424 : 5688096 +16425 : 0 +16426 : 29 +16427 : 0 +16428 : 3 +16429 : 32767 +16430 : 49 +16431 : 0 +16432 : 1 +16433 : 49 +16434 : 5473648 +16435 : 0 +16436 : 5474272 +16437 : 0 +16438 : 5474128 +16439 : 0 +16440 : 83 +16441 : 32767 +16442 : 49 +16443 : 0 +16444 : 1 +16445 : 49 +16446 : 5474080 +16447 : 0 +16448 : 5474224 +16449 : 0 +16450 : 5474176 +16451 : 0 +16452 : 92 +16453 : 32767 +16454 : 49 +16455 : 0 +16456 : 0 +16457 : 49 +16458 : 5474128 +16459 : 0 +16460 : 0 +16461 : 0 +16462 : 0 +16463 : 0 +16464 : 93 +16465 : 32767 +16466 : 49 +16467 : 0 +16468 : 0 +16469 : 49 +16470 : 5474128 +16471 : 0 +16472 : 0 +16473 : 0 +16474 : 0 +16475 : 0 +16476 : 86 +16477 : 32767 +16478 : 49 +16479 : 0 +16480 : 0 +16481 : 49 +16482 : 5474080 +16483 : 0 +16484 : 5474416 +16485 : 0 +16486 : 5474320 +16487 : 0 +16488 : 35 +16489 : 32767 +16490 : 49 +16491 : 0 +16492 : 1 +16493 : 49 +16494 : 5474272 +16495 : 0 +16496 : 5474368 +16497 : 0 +16498 : 0 +16499 : 0 +16500 : 77 +16501 : 32767 +16502 : 49 +16503 : 0 +16504 : 0 +16505 : 49 +16506 : 5474320 +16507 : 0 +16508 : 0 +16509 : 0 +16510 : 0 +16511 : 0 +16512 : 49 +16513 : 32767 +16514 : 49 +16515 : 0 +16516 : 1 +16517 : 49 +16518 : 5474272 +16519 : 0 +16520 : 0 +16521 : 0 +16522 : 0 +16523 : 0 +16524 : 15 +16525 : 32767 +16526 : 33 +16527 : 0 +16528 : 5684992 +16529 : 0 +16530 : 1908685264 +16531 : 49 +16532 : 32767 +16533 : 32767 +16534 : 129 +16535 : 0 +16536 : 4310928 +16537 : 0 +16538 : 0 +16539 : 49 +16540 : 5473328 +16541 : 0 +16542 : 0 +16543 : 32767 +16544 : 0 +16545 : 0 +16546 : 2 +16547 : 0 +16548 : 32767 +16549 : 32767 +16550 : 0 +16551 : 32767 +16552 : 5474624 +16553 : 0 +16554 : 5474624 +16555 : 0 +16556 : 5474624 +16557 : 0 +16558 : 1 +16559 : 0 +16560 : 0 +16561 : 5 +16562 : 1 +16563 : 32767 +16564 : 32767 +16565 : 32767 +16566 : 49 +16567 : 0 +16568 : 1 +16569 : 49 +16570 : 5474552 +16571 : 0 +16572 : 0 +16573 : 0 +16574 : 0 +16575 : 0 +16576 : 15 +16577 : 32767 +16578 : 33 +16579 : 0 +16580 : 5474880 +16581 : 0 +16582 : 5473464 +16583 : 0 +16584 : 5474496 +16585 : 0 +16586 : 129 +16587 : 0 +16588 : 4310928 +16589 : 0 +16590 : 0 +16591 : 49 +16592 : 5473328 +16593 : 0 +16594 : 0 +16595 : 32767 +16596 : 0 +16597 : 0 +16598 : 2 +16599 : 0 +16600 : 32767 +16601 : 32767 +16602 : 0 +16603 : 32767 +16604 : 5474832 +16605 : 0 +16606 : 5474832 +16607 : 0 +16608 : 5474832 +16609 : 0 +16610 : 1 +16611 : 0 +16612 : 0 +16613 : 5 +16614 : 1 +16615 : 32767 +16616 : 32767 +16617 : 32767 +16618 : 49 +16619 : 0 +16620 : 1 +16621 : 49 +16622 : 5474760 +16623 : 0 +16624 : 0 +16625 : 0 +16626 : 0 +16627 : 0 +16628 : 35 +16629 : 32767 +16630 : 33 +16631 : 0 +16632 : 5475088 +16633 : 0 +16634 : 5474672 +16635 : 0 +16636 : 5474704 +16637 : 0 +16638 : 129 +16639 : 0 +16640 : 4310928 +16641 : 0 +16642 : 0 +16643 : 49 +16644 : 5473328 +16645 : 0 +16646 : 0 +16647 : 32767 +16648 : 0 +16649 : 0 +16650 : 2 +16651 : 0 +16652 : 32767 +16653 : 32767 +16654 : 0 +16655 : 32767 +16656 : 5475040 +16657 : 0 +16658 : 5475040 +16659 : 0 +16660 : 5475040 +16661 : 0 +16662 : 1 +16663 : 0 +16664 : 0 +16665 : 5 +16666 : 1 +16667 : 32767 +16668 : 32767 +16669 : 32767 +16670 : 49 +16671 : 0 +16672 : 1 +16673 : 49 +16674 : 5474968 +16675 : 0 +16676 : 0 +16677 : 0 +16678 : 0 +16679 : 0 +16680 : 49 +16681 : 32767 +16682 : 33 +16683 : 0 +16684 : 5475296 +16685 : 0 +16686 : 5474880 +16687 : 0 +16688 : 5474912 +16689 : 0 +16690 : 129 +16691 : 0 +16692 : 4310928 +16693 : 0 +16694 : 0 +16695 : 49 +16696 : 5473328 +16697 : 0 +16698 : 0 +16699 : 32767 +16700 : 0 +16701 : 0 +16702 : 2 +16703 : 0 +16704 : 32767 +16705 : 32767 +16706 : 0 +16707 : 32767 +16708 : 5475248 +16709 : 0 +16710 : 5475248 +16711 : 0 +16712 : 5475248 +16713 : 0 +16714 : 1 +16715 : 0 +16716 : 0 +16717 : 5 +16718 : 1 +16719 : 32767 +16720 : 32767 +16721 : 32767 +16722 : 49 +16723 : 0 +16724 : 1 +16725 : 49 +16726 : 5475176 +16727 : 0 +16728 : 0 +16729 : 0 +16730 : 0 +16731 : 0 +16732 : 77 +16733 : 32767 +16734 : 33 +16735 : 0 +16736 : 5475504 +16737 : 0 +16738 : 5475088 +16739 : 0 +16740 : 5475120 +16741 : 0 +16742 : 129 +16743 : 0 +16744 : 4310928 +16745 : 0 +16746 : 0 +16747 : 49 +16748 : 5473328 +16749 : 0 +16750 : 0 +16751 : 32767 +16752 : 0 +16753 : 0 +16754 : 2 +16755 : 0 +16756 : 32767 +16757 : 32767 +16758 : 0 +16759 : 32767 +16760 : 5475456 +16761 : 0 +16762 : 5475456 +16763 : 0 +16764 : 5475456 +16765 : 0 +16766 : 1 +16767 : 0 +16768 : 0 +16769 : 5 +16770 : 1 +16771 : 32767 +16772 : 32767 +16773 : 32767 +16774 : 49 +16775 : 0 +16776 : 1 +16777 : 49 +16778 : 5475384 +16779 : 0 +16780 : 0 +16781 : 0 +16782 : 0 +16783 : 0 +16784 : 83 +16785 : 32767 +16786 : 33 +16787 : 0 +16788 : 5475712 +16789 : 0 +16790 : 5475296 +16791 : 0 +16792 : 5475328 +16793 : 0 +16794 : 129 +16795 : 0 +16796 : 4310928 +16797 : 0 +16798 : 0 +16799 : 49 +16800 : 5473328 +16801 : 0 +16802 : 0 +16803 : 32767 +16804 : 0 +16805 : 0 +16806 : 2 +16807 : 0 +16808 : 32767 +16809 : 32767 +16810 : 0 +16811 : 32767 +16812 : 5475664 +16813 : 0 +16814 : 5475664 +16815 : 0 +16816 : 5475664 +16817 : 0 +16818 : 1 +16819 : 0 +16820 : 0 +16821 : 5 +16822 : 1 +16823 : 32767 +16824 : 32767 +16825 : 32767 +16826 : 49 +16827 : 0 +16828 : 1 +16829 : 49 +16830 : 5475592 +16831 : 0 +16832 : 0 +16833 : 0 +16834 : 0 +16835 : 0 +16836 : 86 +16837 : 32767 +16838 : 33 +16839 : 0 +16840 : 5475920 +16841 : 0 +16842 : 5475504 +16843 : 0 +16844 : 5475536 +16845 : 0 +16846 : 129 +16847 : 0 +16848 : 4310928 +16849 : 0 +16850 : 0 +16851 : 49 +16852 : 5473328 +16853 : 0 +16854 : 0 +16855 : 32767 +16856 : 0 +16857 : 0 +16858 : 2 +16859 : 0 +16860 : 32767 +16861 : 32767 +16862 : 0 +16863 : 32767 +16864 : 5475872 +16865 : 0 +16866 : 5475872 +16867 : 0 +16868 : 5475872 +16869 : 0 +16870 : 1 +16871 : 0 +16872 : 0 +16873 : 5 +16874 : 1 +16875 : 32767 +16876 : 32767 +16877 : 32767 +16878 : 49 +16879 : 0 +16880 : 1 +16881 : 49 +16882 : 5475800 +16883 : 0 +16884 : 0 +16885 : 0 +16886 : 0 +16887 : 0 +16888 : 92 +16889 : 32767 +16890 : 33 +16891 : 0 +16892 : 5476128 +16893 : 0 +16894 : 5475712 +16895 : 0 +16896 : 5475744 +16897 : 0 +16898 : 129 +16899 : 0 +16900 : 4310928 +16901 : 0 +16902 : 0 +16903 : 49 +16904 : 5473328 +16905 : 0 +16906 : 0 +16907 : 32767 +16908 : 0 +16909 : 0 +16910 : 2 +16911 : 0 +16912 : 32767 +16913 : 32767 +16914 : 0 +16915 : 32767 +16916 : 5476080 +16917 : 0 +16918 : 5476080 +16919 : 0 +16920 : 5476080 +16921 : 0 +16922 : 1 +16923 : 0 +16924 : 0 +16925 : 5 +16926 : 1 +16927 : 32767 +16928 : 32767 +16929 : 32767 +16930 : 49 +16931 : 0 +16932 : 1 +16933 : 49 +16934 : 5476008 +16935 : 0 +16936 : 0 +16937 : 0 +16938 : 0 +16939 : 0 +16940 : 93 +16941 : 32767 +16942 : 33 +16943 : 0 +16944 : 5473464 +16945 : 0 +16946 : 5475920 +16947 : 0 +16948 : 5475952 +16949 : 0 +16950 : 49 +16951 : 0 +16952 : 20 +16953 : 0 +16954 : 5476208 +16955 : 0 +16956 : 5473328 +16957 : 0 +16958 : 5 +16959 : 32767 +16960 : 32767 +16961 : 32767 +16962 : 49 +16963 : 0 +16964 : 4311056 +16965 : 0 +16966 : 1 +16967 : 0 +16968 : 0 +16969 : 0 +16970 : 5473328 +16971 : 0 +16972 : 32767 +16973 : 32767 +16974 : 33 +16975 : 0 +16976 : 5476160 +16977 : 0 +16978 : 5620544 +16979 : 0 +16980 : 5472784 +16981 : 0 +16982 : 33 +16983 : 0 +16984 : 5408656 +16985 : 0 +16986 : 5476384 +16987 : 0 +16988 : 99 +16989 : 32767 +16990 : 33 +16991 : 0 +16992 : 5476352 +16993 : 0 +16994 : 5477360 +16995 : 0 +16996 : 5557664 +16997 : 0 +16998 : 33 +16999 : 0 +17000 : 5620576 +17001 : 0 +17002 : 5476320 +17003 : 0 +17004 : 5557840 +17005 : 0 +17006 : 33 +17007 : 0 +17008 : 5476288 +17009 : 0 +17010 : 5479840 +17011 : 0 +17012 : 98 +17013 : 32767 +17014 : 33 +17015 : 0 +17016 : 5476448 +17017 : 0 +17018 : 5479904 +17019 : 0 +17020 : 5409696 +17021 : 0 +17022 : 33 +17023 : 0 +17024 : 5476480 +17025 : 0 +17026 : 5476416 +17027 : 0 +17028 : 5409872 +17029 : 0 +17030 : 33 +17031 : 0 +17032 : 5476512 +17033 : 0 +17034 : 5476448 +17035 : 0 +17036 : 5410048 +17037 : 0 +17038 : 33 +17039 : 0 +17040 : 5476544 +17041 : 0 +17042 : 5476480 +17043 : 0 +17044 : 5410224 +17045 : 0 +17046 : 33 +17047 : 0 +17048 : 5476576 +17049 : 0 +17050 : 5476512 +17051 : 0 +17052 : 5410400 +17053 : 0 +17054 : 33 +17055 : 0 +17056 : 5476608 +17057 : 0 +17058 : 5476544 +17059 : 0 +17060 : 5410576 +17061 : 0 +17062 : 33 +17063 : 0 +17064 : 5411104 +17065 : 0 +17066 : 5476576 +17067 : 0 +17068 : 5410752 +17069 : 0 +17070 : 33 +17071 : 0 +17072 : 5477456 +17073 : 0 +17074 : 5476672 +17075 : 0 +17076 : 5696928 +17077 : 0 +17078 : 33 +17079 : 0 +17080 : 5476640 +17081 : 0 +17082 : 5623120 +17083 : 0 +17084 : 5696752 +17085 : 0 +17086 : 33 +17087 : 0 +17088 : 5477392 +17089 : 0 +17090 : 5479744 +17091 : 0 +17092 : 5557136 +17093 : 0 +17094 : 49 +17095 : 0 +17096 : 1 +17097 : 49 +17098 : 5408960 +17099 : 0 +17100 : 5549456 +17101 : 0 +17102 : 0 +17103 : 0 +17104 : 9 +17105 : 32767 +17106 : 49 +17107 : 0 +17108 : 1 +17109 : 49 +17110 : 5476880 +17111 : 0 +17112 : 5408960 +17113 : 0 +17114 : 5476832 +17115 : 0 +17116 : 10 +17117 : 32767 +17118 : 49 +17119 : 0 +17120 : 1 +17121 : 49 +17122 : 5476784 +17123 : 0 +17124 : 0 +17125 : 0 +17126 : 0 +17127 : 0 +17128 : 11 +17129 : 32767 +17130 : 49 +17131 : 0 +17132 : 1 +17133 : 49 +17134 : 5477072 +17135 : 0 +17136 : 5476784 +17137 : 0 +17138 : 5476976 +17139 : 0 +17140 : 12 +17141 : 32767 +17142 : 49 +17143 : 0 +17144 : 1 +17145 : 49 +17146 : 5476976 +17147 : 0 +17148 : 0 +17149 : 0 +17150 : 0 +17151 : 0 +17152 : 13 +17153 : 32767 +17154 : 49 +17155 : 0 +17156 : 1 +17157 : 49 +17158 : 5476880 +17159 : 0 +17160 : 5476928 +17161 : 0 +17162 : 5477024 +17163 : 0 +17164 : 14 +17165 : 32767 +17166 : 49 +17167 : 0 +17168 : 1 +17169 : 49 +17170 : 5476976 +17171 : 0 +17172 : 0 +17173 : 0 +17174 : 0 +17175 : 0 +17176 : 15 +17177 : 32767 +17178 : 49 +17179 : 0 +17180 : 1 +17181 : 49 +17182 : 5477584 +17183 : 0 +17184 : 5476880 +17185 : 0 +17186 : 5477264 +17187 : 0 +17188 : 16 +17189 : 32767 +17190 : 49 +17191 : 0 +17192 : 1 +17193 : 49 +17194 : 5477168 +17195 : 0 +17196 : 0 +17197 : 0 +17198 : 0 +17199 : 0 +17200 : 17 +17201 : 32767 +17202 : 49 +17203 : 0 +17204 : 1 +17205 : 49 +17206 : 5477264 +17207 : 0 +17208 : 5477120 +17209 : 0 +17210 : 5477216 +17211 : 0 +17212 : 18 +17213 : 0 +17214 : 49 +17215 : 0 +17216 : 1 +17217 : 49 +17218 : 5477168 +17219 : 0 +17220 : 0 +17221 : 0 +17222 : 0 +17223 : 0 +17224 : 19 +17225 : 32767 +17226 : 49 +17227 : 0 +17228 : 1 +17229 : 49 +17230 : 5477072 +17231 : 0 +17232 : 5477168 +17233 : 0 +17234 : 5617968 +17235 : 0 +17236 : 20 +17237 : 32767 +17238 : 49 +17239 : 0 +17240 : 1 +17241 : 49 +17242 : 5663104 +17243 : 0 +17244 : 0 +17245 : 0 +17246 : 0 +17247 : 0 +17248 : 21 +17249 : 32767 +17250 : 33 +17251 : 0 +17252 : 5476320 +17253 : 0 +17254 : 5477392 +17255 : 0 +17256 : 5557488 +17257 : 0 +17258 : 33 +17259 : 0 +17260 : 5477360 +17261 : 0 +17262 : 5476704 +17263 : 0 +17264 : 5557312 +17265 : 0 +17266 : 33 +17267 : 0 +17268 : 5670256 +17269 : 0 +17270 : 5479808 +17271 : 0 +17272 : 95 +17273 : 32767 +17274 : 33 +17275 : 0 +17276 : 5697456 +17277 : 0 +17278 : 5476640 +17279 : 0 +17280 : 5697104 +17281 : 0 +17282 : 49 +17283 : 0 +17284 : 0 +17285 : 49 +17286 : 5617968 +17287 : 0 +17288 : 5618112 +17289 : 0 +17290 : 5477536 +17291 : 0 +17292 : 29 +17293 : 32767 +17294 : 49 +17295 : 0 +17296 : 1 +17297 : 49 +17298 : 5477488 +17299 : 0 +17300 : 0 +17301 : 0 +17302 : 0 +17303 : 0 +17304 : 30 +17305 : 32767 +17306 : 49 +17307 : 0 +17308 : 1 +17309 : 49 +17310 : 5473904 +17311 : 0 +17312 : 5477072 +17313 : 0 +17314 : 5478544 +17315 : 0 +17316 : 31 +17317 : 0 +17318 : 49 +17319 : 0 +17320 : 1 +17321 : 49 +17322 : 5477680 +17323 : 0 +17324 : 0 +17325 : 0 +17326 : 0 +17327 : 0 +17328 : 32 +17329 : 32767 +17330 : 49 +17331 : 0 +17332 : 1 +17333 : 49 +17334 : 5477776 +17335 : 0 +17336 : 5477632 +17337 : 0 +17338 : 5477728 +17339 : 0 +17340 : 33 +17341 : 32767 +17342 : 49 +17343 : 0 +17344 : 1 +17345 : 49 +17346 : 5477680 +17347 : 0 +17348 : 0 +17349 : 0 +17350 : 0 +17351 : 0 +17352 : 34 +17353 : 32767 +17354 : 49 +17355 : 0 +17356 : 1 +17357 : 49 +17358 : 5477968 +17359 : 0 +17360 : 5477680 +17361 : 0 +17362 : 5477872 +17363 : 0 +17364 : 35 +17365 : 32767 +17366 : 49 +17367 : 0 +17368 : 1 +17369 : 49 +17370 : 5477872 +17371 : 0 +17372 : 0 +17373 : 0 +17374 : 0 +17375 : 0 +17376 : 36 +17377 : 32767 +17378 : 49 +17379 : 0 +17380 : 1 +17381 : 49 +17382 : 5477776 +17383 : 0 +17384 : 5477824 +17385 : 0 +17386 : 5477920 +17387 : 0 +17388 : 37 +17389 : 32767 +17390 : 49 +17391 : 0 +17392 : 1 +17393 : 49 +17394 : 5477872 +17395 : 0 +17396 : 0 +17397 : 0 +17398 : 0 +17399 : 0 +17400 : 38 +17401 : 32767 +17402 : 49 +17403 : 0 +17404 : 1 +17405 : 49 +17406 : 5478544 +17407 : 0 +17408 : 5477776 +17409 : 0 +17410 : 5478352 +17411 : 0 +17412 : 39 +17413 : 32767 +17414 : 49 +17415 : 0 +17416 : 1 +17417 : 49 +17418 : 5478064 +17419 : 0 +17420 : 0 +17421 : 0 +17422 : 0 +17423 : 0 +17424 : 40 +17425 : 32767 +17426 : 49 +17427 : 0 +17428 : 1 +17429 : 49 +17430 : 5478352 +17431 : 0 +17432 : 5478016 +17433 : 0 +17434 : 5478304 +17435 : 0 +17436 : 41 +17437 : 32767 +17438 : 49 +17439 : 0 +17440 : 0 +17441 : 49 +17442 : 5478736 +17443 : 0 +17444 : 0 +17445 : 0 +17446 : 0 +17447 : 0 +17448 : 53 +17449 : 32767 +17450 : 49 +17451 : 0 +17452 : 1 +17453 : 49 +17454 : 5478832 +17455 : 0 +17456 : 5478640 +17457 : 0 +17458 : 5480032 +17459 : 0 +17460 : 54 +17461 : 32767 +17462 : 49 +17463 : 0 +17464 : 1 +17465 : 49 +17466 : 5478256 +17467 : 0 +17468 : 0 +17469 : 0 +17470 : 0 +17471 : 0 +17472 : 55 +17473 : 32767 +17474 : 49 +17475 : 0 +17476 : 1 +17477 : 49 +17478 : 5480032 +17479 : 0 +17480 : 5478208 +17481 : 0 +17482 : 5618496 +17483 : 0 +17484 : 57 +17485 : 32767 +17486 : 49 +17487 : 0 +17488 : 1 +17489 : 49 +17490 : 5478064 +17491 : 0 +17492 : 0 +17493 : 0 +17494 : 0 +17495 : 0 +17496 : 43 +17497 : 32767 +17498 : 49 +17499 : 0 +17500 : 1 +17501 : 49 +17502 : 5477968 +17503 : 0 +17504 : 5478064 +17505 : 0 +17506 : 5478448 +17507 : 0 +17508 : 44 +17509 : 32767 +17510 : 49 +17511 : 0 +17512 : 1 +17513 : 49 +17514 : 5478448 +17515 : 0 +17516 : 0 +17517 : 0 +17518 : 0 +17519 : 0 +17520 : 45 +17521 : 32767 +17522 : 49 +17523 : 0 +17524 : 1 +17525 : 49 +17526 : 5478352 +17527 : 0 +17528 : 5478400 +17529 : 0 +17530 : 5478496 +17531 : 0 +17532 : 46 +17533 : 32767 +17534 : 49 +17535 : 0 +17536 : 1 +17537 : 49 +17538 : 5478448 +17539 : 0 +17540 : 0 +17541 : 0 +17542 : 0 +17543 : 0 +17544 : 47 +17545 : 32767 +17546 : 49 +17547 : 0 +17548 : 0 +17549 : 49 +17550 : 5477584 +17551 : 0 +17552 : 5477968 +17553 : 0 +17554 : 5478832 +17555 : 0 +17556 : 48 +17557 : 32767 +17558 : 49 +17559 : 0 +17560 : 1 +17561 : 49 +17562 : 5478640 +17563 : 0 +17564 : 0 +17565 : 0 +17566 : 0 +17567 : 0 +17568 : 49 +17569 : 32767 +17570 : 49 +17571 : 0 +17572 : 1 +17573 : 49 +17574 : 5478160 +17575 : 0 +17576 : 5478592 +17577 : 0 +17578 : 5478736 +17579 : 0 +17580 : 50 +17581 : 32767 +17582 : 49 +17583 : 0 +17584 : 0 +17585 : 49 +17586 : 5478736 +17587 : 0 +17588 : 0 +17589 : 0 +17590 : 0 +17591 : 0 +17592 : 51 +17593 : 32767 +17594 : 49 +17595 : 0 +17596 : 1 +17597 : 49 +17598 : 5478640 +17599 : 0 +17600 : 5478688 +17601 : 0 +17602 : 5478112 +17603 : 0 +17604 : 52 +17605 : 32767 +17606 : 49 +17607 : 0 +17608 : 1 +17609 : 49 +17610 : 5479408 +17611 : 0 +17612 : 0 +17613 : 0 +17614 : 0 +17615 : 0 +17616 : 71 +17617 : 32767 +17618 : 49 +17619 : 0 +17620 : 1 +17621 : 49 +17622 : 5478544 +17623 : 0 +17624 : 5478160 +17625 : 0 +17626 : 5479216 +17627 : 0 +17628 : 72 +17629 : 0 +17630 : 49 +17631 : 0 +17632 : 1 +17633 : 49 +17634 : 5478928 +17635 : 0 +17636 : 0 +17637 : 0 +17638 : 0 +17639 : 0 +17640 : 73 +17641 : 32767 +17642 : 49 +17643 : 0 +17644 : 1 +17645 : 49 +17646 : 5479024 +17647 : 0 +17648 : 5478880 +17649 : 0 +17650 : 5478976 +17651 : 0 +17652 : 74 +17653 : 32767 +17654 : 49 +17655 : 0 +17656 : 1 +17657 : 49 +17658 : 5478928 +17659 : 0 +17660 : 0 +17661 : 0 +17662 : 0 +17663 : 0 +17664 : 75 +17665 : 32767 +17666 : 49 +17667 : 0 +17668 : 1 +17669 : 49 +17670 : 5479216 +17671 : 0 +17672 : 5478928 +17673 : 0 +17674 : 5479120 +17675 : 0 +17676 : 76 +17677 : 32767 +17678 : 49 +17679 : 0 +17680 : 1 +17681 : 49 +17682 : 5479120 +17683 : 0 +17684 : 0 +17685 : 0 +17686 : 0 +17687 : 0 +17688 : 77 +17689 : 32767 +17690 : 49 +17691 : 0 +17692 : 1 +17693 : 49 +17694 : 5479024 +17695 : 0 +17696 : 5479072 +17697 : 0 +17698 : 5479168 +17699 : 0 +17700 : 78 +17701 : 32767 +17702 : 49 +17703 : 0 +17704 : 1 +17705 : 49 +17706 : 5479120 +17707 : 0 +17708 : 0 +17709 : 0 +17710 : 0 +17711 : 0 +17712 : 79 +17713 : 32767 +17714 : 49 +17715 : 0 +17716 : 0 +17717 : 49 +17718 : 5478832 +17719 : 0 +17720 : 5479024 +17721 : 0 +17722 : 5479648 +17723 : 0 +17724 : 80 +17725 : 32767 +17726 : 49 +17727 : 0 +17728 : 1 +17729 : 49 +17730 : 5479312 +17731 : 0 +17732 : 0 +17733 : 0 +17734 : 0 +17735 : 0 +17736 : 81 +17737 : 32767 +17738 : 49 +17739 : 0 +17740 : 1 +17741 : 49 +17742 : 5479456 +17743 : 0 +17744 : 5479264 +17745 : 0 +17746 : 5479360 +17747 : 0 +17748 : 82 +17749 : 32767 +17750 : 49 +17751 : 0 +17752 : 1 +17753 : 49 +17754 : 5479312 +17755 : 0 +17756 : 0 +17757 : 0 +17758 : 0 +17759 : 0 +17760 : 83 +17761 : 32767 +17762 : 49 +17763 : 0 +17764 : 1 +17765 : 49 +17766 : 5480032 +17767 : 0 +17768 : 5480080 +17769 : 0 +17770 : 5478784 +17771 : 0 +17772 : 70 +17773 : 32767 +17774 : 49 +17775 : 0 +17776 : 0 +17777 : 49 +17778 : 5479648 +17779 : 0 +17780 : 5479312 +17781 : 0 +17782 : 5479552 +17783 : 0 +17784 : 84 +17785 : 32767 +17786 : 49 +17787 : 0 +17788 : 1 +17789 : 49 +17790 : 5479552 +17791 : 0 +17792 : 0 +17793 : 0 +17794 : 0 +17795 : 0 +17796 : 85 +17797 : 32767 +17798 : 49 +17799 : 0 +17800 : 1 +17801 : 49 +17802 : 5479456 +17803 : 0 +17804 : 5479504 +17805 : 0 +17806 : 5479600 +17807 : 0 +17808 : 86 +17809 : 32767 +17810 : 49 +17811 : 0 +17812 : 1 +17813 : 49 +17814 : 5479552 +17815 : 0 +17816 : 0 +17817 : 0 +17818 : 0 +17819 : 0 +17820 : 87 +17821 : 32767 +17822 : 49 +17823 : 0 +17824 : 1 +17825 : 49 +17826 : 5479216 +17827 : 0 +17828 : 5479456 +17829 : 0 +17830 : 5408912 +17831 : 0 +17832 : 88 +17833 : 32767 +17834 : 49 +17835 : 0 +17836 : 1 +17837 : 49 +17838 : 5408816 +17839 : 0 +17840 : 0 +17841 : 0 +17842 : 0 +17843 : 0 +17844 : 89 +17845 : 32767 +17846 : 33 +17847 : 0 +17848 : 5476704 +17849 : 0 +17850 : 5479776 +17851 : 0 +17852 : 5556960 +17853 : 0 +17854 : 33 +17855 : 0 +17856 : 5479744 +17857 : 0 +17858 : 5548664 +17859 : 0 +17860 : 5556784 +17861 : 0 +17862 : 33 +17863 : 0 +17864 : 5477424 +17865 : 0 +17866 : 5668768 +17867 : 0 +17868 : 94 +17869 : 32767 +17870 : 33 +17871 : 0 +17872 : 5476384 +17873 : 0 +17874 : 5670256 +17875 : 0 +17876 : 97 +17877 : 32767 +17878 : 33 +17879 : 0 +17880 : 5479904 +17881 : 0 +17882 : 5473848 +17883 : 0 +17884 : 5409344 +17885 : 0 +17886 : 33 +17887 : 0 +17888 : 5476416 +17889 : 0 +17890 : 5479872 +17891 : 0 +17892 : 5409520 +17893 : 0 +17894 : 49 +17895 : 0 +17896 : 1 +17897 : 49 +17898 : 5408960 +17899 : 0 +17900 : 0 +17901 : 0 +17902 : 0 +17903 : 0 +17904 : 0 +17905 : 32767 +17906 : 49 +17907 : 0 +17908 : 1 +17909 : 49 +17910 : 5618496 +17911 : 0 +17912 : 5618640 +17913 : 0 +17914 : 0 +17915 : 0 +17916 : 66 +17917 : 32767 +17918 : 49 +17919 : 0 +17920 : 0 +17921 : 49 +17922 : 5478160 +17923 : 0 +17924 : 5478256 +17925 : 0 +17926 : 5479408 +17927 : 0 +17928 : 67 +17929 : 32767 +17930 : 49 +17931 : 0 +17932 : 1 +17933 : 49 +17934 : 5479408 +17935 : 0 +17936 : 0 +17937 : 0 +17938 : 5408768 +17939 : 0 +17940 : 68 +17941 : 0 +17942 : 2417 +17943 : 0 +17944 : 5482544 +17945 : 0 +17946 : 5482944 +17947 : 0 +17948 : 5482944 +17949 : 0 +17950 : 5482960 +17951 : 0 +17952 : 5483360 +17953 : 0 +17954 : 5483360 +17955 : 0 +17956 : 5483376 +17957 : 0 +17958 : 5483776 +17959 : 0 +17960 : 5483776 +17961 : 0 +17962 : 5483792 +17963 : 0 +17964 : 5484192 +17965 : 0 +17966 : 5484192 +17967 : 0 +17968 : 5484208 +17969 : 0 +17970 : 5484608 +17971 : 0 +17972 : 5484608 +17973 : 0 +17974 : 5484624 +17975 : 0 +17976 : 5485024 +17977 : 0 +17978 : 5485024 +17979 : 0 +17980 : 5485040 +17981 : 0 +17982 : 5485440 +17983 : 0 +17984 : 5485440 +17985 : 0 +17986 : 5485456 +17987 : 0 +17988 : 5485856 +17989 : 0 +17990 : 5485856 +17991 : 0 +17992 : 5485872 +17993 : 0 +17994 : 5486272 +17995 : 0 +17996 : 5486272 +17997 : 0 +17998 : 5486288 +17999 : 0 +18000 : 5486688 +18001 : 0 +18002 : 5486688 +18003 : 0 +18004 : 5486704 +18005 : 0 +18006 : 5487104 +18007 : 0 +18008 : 5487104 +18009 : 0 +18010 : 5487120 +18011 : 0 +18012 : 5487520 +18013 : 0 +18014 : 5487520 +18015 : 0 +18016 : 5487536 +18017 : 0 +18018 : 5487936 +18019 : 0 +18020 : 5487936 +18021 : 0 +18022 : 5487952 +18023 : 0 +18024 : 5488352 +18025 : 0 +18026 : 5488352 +18027 : 0 +18028 : 5488368 +18029 : 0 +18030 : 5488768 +18031 : 0 +18032 : 5488768 +18033 : 0 +18034 : 5488784 +18035 : 0 +18036 : 5489184 +18037 : 0 +18038 : 5489184 +18039 : 0 +18040 : 5489200 +18041 : 0 +18042 : 5489600 +18043 : 0 +18044 : 5489600 +18045 : 0 +18046 : 5489616 +18047 : 0 +18048 : 5490016 +18049 : 0 +18050 : 5490016 +18051 : 0 +18052 : 5490032 +18053 : 0 +18054 : 5490432 +18055 : 0 +18056 : 5490432 +18057 : 0 +18058 : 5490448 +18059 : 0 +18060 : 5490848 +18061 : 0 +18062 : 5490848 +18063 : 0 +18064 : 5490864 +18065 : 0 +18066 : 5491264 +18067 : 0 +18068 : 5491264 +18069 : 0 +18070 : 5491280 +18071 : 0 +18072 : 5491680 +18073 : 0 +18074 : 5491680 +18075 : 0 +18076 : 5491696 +18077 : 0 +18078 : 5492096 +18079 : 0 +18080 : 5492096 +18081 : 0 +18082 : 5492112 +18083 : 0 +18084 : 5492512 +18085 : 0 +18086 : 5492512 +18087 : 0 +18088 : 5492528 +18089 : 0 +18090 : 5492928 +18091 : 0 +18092 : 5492928 +18093 : 0 +18094 : 5492944 +18095 : 0 +18096 : 5493344 +18097 : 0 +18098 : 5493344 +18099 : 0 +18100 : 5493360 +18101 : 0 +18102 : 5493760 +18103 : 0 +18104 : 5493760 +18105 : 0 +18106 : 5493776 +18107 : 0 +18108 : 5494176 +18109 : 0 +18110 : 5494176 +18111 : 0 +18112 : 5494192 +18113 : 0 +18114 : 5494592 +18115 : 0 +18116 : 5494592 +18117 : 0 +18118 : 5494608 +18119 : 0 +18120 : 5495008 +18121 : 0 +18122 : 5495008 +18123 : 0 +18124 : 5495024 +18125 : 0 +18126 : 5495424 +18127 : 0 +18128 : 5495424 +18129 : 0 +18130 : 5495440 +18131 : 0 +18132 : 5495840 +18133 : 0 +18134 : 5495840 +18135 : 0 +18136 : 5495856 +18137 : 0 +18138 : 5496256 +18139 : 0 +18140 : 5496256 +18141 : 0 +18142 : 5496272 +18143 : 0 +18144 : 5496672 +18145 : 0 +18146 : 5496672 +18147 : 0 +18148 : 5496688 +18149 : 0 +18150 : 5497088 +18151 : 0 +18152 : 5497088 +18153 : 0 +18154 : 5497104 +18155 : 0 +18156 : 5497504 +18157 : 0 +18158 : 5497504 +18159 : 0 +18160 : 5497520 +18161 : 0 +18162 : 5497920 +18163 : 0 +18164 : 5497920 +18165 : 0 +18166 : 5497936 +18167 : 0 +18168 : 5498336 +18169 : 0 +18170 : 5498336 +18171 : 0 +18172 : 5498352 +18173 : 0 +18174 : 5498752 +18175 : 0 +18176 : 5498752 +18177 : 0 +18178 : 5498768 +18179 : 0 +18180 : 5499168 +18181 : 0 +18182 : 5499168 +18183 : 0 +18184 : 5499184 +18185 : 0 +18186 : 5499584 +18187 : 0 +18188 : 5499584 +18189 : 0 +18190 : 5499600 +18191 : 0 +18192 : 5500000 +18193 : 0 +18194 : 5500000 +18195 : 0 +18196 : 5500016 +18197 : 0 +18198 : 5500416 +18199 : 0 +18200 : 5500416 +18201 : 0 +18202 : 5500432 +18203 : 0 +18204 : 5500832 +18205 : 0 +18206 : 5500832 +18207 : 0 +18208 : 5500848 +18209 : 0 +18210 : 5501248 +18211 : 0 +18212 : 5501248 +18213 : 0 +18214 : 5501264 +18215 : 0 +18216 : 5501664 +18217 : 0 +18218 : 5501664 +18219 : 0 +18220 : 5501680 +18221 : 0 +18222 : 5502080 +18223 : 0 +18224 : 5502080 +18225 : 0 +18226 : 5502096 +18227 : 0 +18228 : 5502496 +18229 : 0 +18230 : 5502496 +18231 : 0 +18232 : 5502512 +18233 : 0 +18234 : 5502912 +18235 : 0 +18236 : 5502912 +18237 : 0 +18238 : 5593456 +18239 : 0 +18240 : 5593856 +18241 : 0 +18242 : 5593856 +18243 : 0 +18244 : 5593872 +18245 : 0 +18246 : 5594272 +18247 : 0 +18248 : 5594272 +18249 : 0 +18250 : 5594288 +18251 : 0 +18252 : 5594688 +18253 : 0 +18254 : 5594688 +18255 : 0 +18256 : 5594704 +18257 : 0 +18258 : 5595104 +18259 : 0 +18260 : 5595104 +18261 : 0 +18262 : 5595120 +18263 : 0 +18264 : 5595520 +18265 : 0 +18266 : 5595520 +18267 : 0 +18268 : 5595536 +18269 : 0 +18270 : 5595936 +18271 : 0 +18272 : 5595936 +18273 : 0 +18274 : 5595952 +18275 : 0 +18276 : 5596352 +18277 : 0 +18278 : 5596352 +18279 : 0 +18280 : 5596368 +18281 : 0 +18282 : 5596768 +18283 : 0 +18284 : 5596768 +18285 : 0 +18286 : 5596784 +18287 : 0 +18288 : 5597184 +18289 : 0 +18290 : 5597184 +18291 : 0 +18292 : 5597200 +18293 : 0 +18294 : 5597600 +18295 : 0 +18296 : 5597600 +18297 : 0 +18298 : 5597616 +18299 : 0 +18300 : 5598016 +18301 : 0 +18302 : 5598016 +18303 : 0 +18304 : 5598032 +18305 : 0 +18306 : 5598432 +18307 : 0 +18308 : 5598432 +18309 : 0 +18310 : 5598448 +18311 : 0 +18312 : 5598848 +18313 : 0 +18314 : 5598848 +18315 : 0 +18316 : 5598864 +18317 : 0 +18318 : 5599264 +18319 : 0 +18320 : 5599264 +18321 : 0 +18322 : 5599280 +18323 : 0 +18324 : 5599680 +18325 : 0 +18326 : 5599680 +18327 : 0 +18328 : 5599696 +18329 : 0 +18330 : 5600096 +18331 : 0 +18332 : 5600096 +18333 : 0 +18334 : 5600112 +18335 : 0 +18336 : 5600512 +18337 : 0 +18338 : 5600512 +18339 : 0 +18340 : 5600528 +18341 : 0 +18342 : 5600928 +18343 : 0 +18344 : 5600928 +18345 : 0 +18346 : 5600944 +18347 : 0 +18348 : 5601344 +18349 : 0 +18350 : 5601344 +18351 : 0 +18352 : 5601360 +18353 : 0 +18354 : 5601760 +18355 : 0 +18356 : 5601760 +18357 : 0 +18358 : 5601776 +18359 : 0 +18360 : 5602176 +18361 : 0 +18362 : 5602176 +18363 : 0 +18364 : 5602192 +18365 : 0 +18366 : 5602592 +18367 : 0 +18368 : 5602592 +18369 : 0 +18370 : 5602608 +18371 : 0 +18372 : 5603008 +18373 : 0 +18374 : 5603008 +18375 : 0 +18376 : 5603024 +18377 : 0 +18378 : 5603424 +18379 : 0 +18380 : 5603424 +18381 : 0 +18382 : 5603440 +18383 : 0 +18384 : 5603840 +18385 : 0 +18386 : 5603840 +18387 : 0 +18388 : 5603856 +18389 : 0 +18390 : 5604256 +18391 : 0 +18392 : 5604256 +18393 : 0 +18394 : 5604272 +18395 : 0 +18396 : 5604672 +18397 : 0 +18398 : 5604672 +18399 : 0 +18400 : 5604688 +18401 : 0 +18402 : 5605088 +18403 : 0 +18404 : 5605088 +18405 : 0 +18406 : 5605104 +18407 : 0 +18408 : 5605504 +18409 : 0 +18410 : 5605504 +18411 : 0 +18412 : 5605520 +18413 : 0 +18414 : 5605920 +18415 : 0 +18416 : 5605920 +18417 : 0 +18418 : 5605936 +18419 : 0 +18420 : 5606336 +18421 : 0 +18422 : 5606336 +18423 : 0 +18424 : 5606352 +18425 : 0 +18426 : 5606752 +18427 : 0 +18428 : 5606752 +18429 : 0 +18430 : 5606768 +18431 : 0 +18432 : 5607168 +18433 : 0 +18434 : 5607168 +18435 : 0 +18436 : 5607184 +18437 : 0 +18438 : 5607584 +18439 : 0 +18440 : 5607584 +18441 : 0 +18442 : 5607600 +18443 : 0 +18444 : 5608000 +18445 : 0 +18446 : 5608000 +18447 : 0 +18448 : 5608016 +18449 : 0 +18450 : 5608416 +18451 : 0 +18452 : 5608416 +18453 : 0 +18454 : 5608432 +18455 : 0 +18456 : 5608832 +18457 : 0 +18458 : 5608832 +18459 : 0 +18460 : 5608848 +18461 : 0 +18462 : 5609248 +18463 : 0 +18464 : 5609248 +18465 : 0 +18466 : 5609264 +18467 : 0 +18468 : 5609664 +18469 : 0 +18470 : 5609664 +18471 : 0 +18472 : 5609680 +18473 : 0 +18474 : 5610080 +18475 : 0 +18476 : 5610080 +18477 : 0 +18478 : 5610096 +18479 : 0 +18480 : 5610496 +18481 : 0 +18482 : 5610496 +18483 : 0 +18484 : 5610512 +18485 : 0 +18486 : 5610912 +18487 : 0 +18488 : 5610912 +18489 : 0 +18490 : 5610928 +18491 : 0 +18492 : 5611328 +18493 : 0 +18494 : 5611328 +18495 : 0 +18496 : 5611344 +18497 : 0 +18498 : 5611744 +18499 : 0 +18500 : 5611744 +18501 : 0 +18502 : 5611760 +18503 : 0 +18504 : 5612160 +18505 : 0 +18506 : 5612160 +18507 : 0 +18508 : 5612176 +18509 : 0 +18510 : 5612576 +18511 : 0 +18512 : 5612576 +18513 : 0 +18514 : 5612592 +18515 : 0 +18516 : 5612992 +18517 : 0 +18518 : 5612992 +18519 : 0 +18520 : 5613008 +18521 : 0 +18522 : 5613408 +18523 : 0 +18524 : 5613408 +18525 : 0 +18526 : 5613424 +18527 : 0 +18528 : 5613824 +18529 : 0 +18530 : 5613824 +18531 : 0 +18532 : 5613840 +18533 : 0 +18534 : 5614240 +18535 : 0 +18536 : 5614240 +18537 : 0 +18538 : 5614256 +18539 : 0 +18540 : 5614656 +18541 : 0 +18542 : 5614656 +18543 : 0 +18544 : 32767 +18545 : 32767 +18546 : 417 +18547 : 0 +18548 : 0 +18549 : 1 +18550 : 2 +18551 : 2 +18552 : 3 +18553 : 3 +18554 : 4 +18555 : 4 +18556 : 5 +18557 : 5 +18558 : 6 +18559 : 6 +18560 : 7 +18561 : 7 +18562 : 8 +18563 : 8 +18564 : 9 +18565 : 9 +18566 : 10 +18567 : 10 +18568 : 11 +18569 : 11 +18570 : 12 +18571 : 12 +18572 : 13 +18573 : 13 +18574 : 14 +18575 : 14 +18576 : 15 +18577 : 15 +18578 : 16 +18579 : 16 +18580 : 16 +18581 : 15 +18582 : 15 +18583 : 14 +18584 : 14 +18585 : 13 +18586 : 14 +18587 : 14 +18588 : 15 +18589 : 15 +18590 : 16 +18591 : 16 +18592 : 17 +18593 : 17 +18594 : 16 +18595 : 16 +18596 : 15 +18597 : 15 +18598 : 14 +18599 : 14 +18600 : 13 +18601 : 13 +18602 : 12 +18603 : 12 +18604 : 11 +18605 : 11 +18606 : 10 +18607 : 10 +18608 : 9 +18609 : 9 +18610 : 8 +18611 : 8 +18612 : 7 +18613 : 7 +18614 : 6 +18615 : 6 +18616 : 5 +18617 : 5 +18618 : 4 +18619 : 6 +18620 : 5 +18621 : 6 +18622 : 6 +18623 : 7 +18624 : 7 +18625 : 8 +18626 : 7 +18627 : 7 +18628 : 6 +18629 : 6 +18630 : 5 +18631 : 5 +18632 : 4 +18633 : 4 +18634 : 3 +18635 : 3 +18636 : 2 +18637 : 2 +18638 : 1 +18639 : 2 +18640 : 2 +18641 : 3 +18642 : 3 +18643 : 3 +18644 : 2 +18645 : 2 +18646 : 1 +18647 : 1 +18648 : 32767 +18649 : 32767 +18650 : 417 +18651 : 0 +18652 : 1 +18653 : 0 +18654 : 1 +18655 : 1 +18656 : 2 +18657 : 2 +18658 : 3 +18659 : 3 +18660 : 4 +18661 : 4 +18662 : 5 +18663 : 5 +18664 : 6 +18665 : 6 +18666 : 7 +18667 : 7 +18668 : 8 +18669 : 8 +18670 : 9 +18671 : 9 +18672 : 10 +18673 : 10 +18674 : 11 +18675 : 11 +18676 : 12 +18677 : 12 +18678 : 13 +18679 : 13 +18680 : 14 +18681 : 14 +18682 : 15 +18683 : 15 +18684 : 16 +18685 : 16 +18686 : 16 +18687 : 15 +18688 : 15 +18689 : 14 +18690 : 15 +18691 : 15 +18692 : 16 +18693 : 16 +18694 : 17 +18695 : 17 +18696 : 18 +18697 : 18 +18698 : 17 +18699 : 17 +18700 : 16 +18701 : 16 +18702 : 15 +18703 : 15 +18704 : 14 +18705 : 14 +18706 : 13 +18707 : 13 +18708 : 12 +18709 : 12 +18710 : 11 +18711 : 11 +18712 : 10 +18713 : 10 +18714 : 9 +18715 : 9 +18716 : 8 +18717 : 8 +18718 : 7 +18719 : 7 +18720 : 6 +18721 : 6 +18722 : 5 +18723 : 7 +18724 : 6 +18725 : 7 +18726 : 7 +18727 : 8 +18728 : 8 +18729 : 9 +18730 : 8 +18731 : 8 +18732 : 7 +18733 : 7 +18734 : 6 +18735 : 6 +18736 : 5 +18737 : 5 +18738 : 4 +18739 : 4 +18740 : 3 +18741 : 3 +18742 : 2 +18743 : 3 +18744 : 3 +18745 : 4 +18746 : 4 +18747 : 3 +18748 : 3 +18749 : 2 +18750 : 2 +18751 : 1 +18752 : 32767 +18753 : 32767 +18754 : 417 +18755 : 0 +18756 : 2 +18757 : 1 +18758 : 0 +18759 : 1 +18760 : 1 +18761 : 2 +18762 : 2 +18763 : 3 +18764 : 3 +18765 : 4 +18766 : 4 +18767 : 5 +18768 : 5 +18769 : 6 +18770 : 6 +18771 : 7 +18772 : 7 +18773 : 8 +18774 : 8 +18775 : 9 +18776 : 9 +18777 : 10 +18778 : 10 +18779 : 11 +18780 : 11 +18781 : 12 +18782 : 12 +18783 : 13 +18784 : 13 +18785 : 14 +18786 : 14 +18787 : 15 +18788 : 15 +18789 : 16 +18790 : 16 +18791 : 16 +18792 : 16 +18793 : 15 +18794 : 16 +18795 : 16 +18796 : 17 +18797 : 17 +18798 : 18 +18799 : 18 +18800 : 19 +18801 : 19 +18802 : 18 +18803 : 18 +18804 : 17 +18805 : 17 +18806 : 16 +18807 : 16 +18808 : 15 +18809 : 15 +18810 : 14 +18811 : 14 +18812 : 13 +18813 : 13 +18814 : 12 +18815 : 12 +18816 : 11 +18817 : 11 +18818 : 10 +18819 : 10 +18820 : 9 +18821 : 9 +18822 : 8 +18823 : 8 +18824 : 7 +18825 : 7 +18826 : 6 +18827 : 8 +18828 : 7 +18829 : 8 +18830 : 8 +18831 : 9 +18832 : 9 +18833 : 10 +18834 : 9 +18835 : 9 +18836 : 8 +18837 : 8 +18838 : 7 +18839 : 7 +18840 : 6 +18841 : 6 +18842 : 5 +18843 : 5 +18844 : 4 +18845 : 4 +18846 : 3 +18847 : 4 +18848 : 4 +18849 : 5 +18850 : 5 +18851 : 4 +18852 : 4 +18853 : 3 +18854 : 3 +18855 : 2 +18856 : 32767 +18857 : 32767 +18858 : 417 +18859 : 0 +18860 : 2 +18861 : 1 +18862 : 1 +18863 : 0 +18864 : 1 +18865 : 1 +18866 : 2 +18867 : 2 +18868 : 3 +18869 : 3 +18870 : 4 +18871 : 4 +18872 : 5 +18873 : 5 +18874 : 6 +18875 : 6 +18876 : 7 +18877 : 7 +18878 : 8 +18879 : 8 +18880 : 9 +18881 : 9 +18882 : 10 +18883 : 10 +18884 : 11 +18885 : 11 +18886 : 12 +18887 : 12 +18888 : 13 +18889 : 13 +18890 : 14 +18891 : 14 +18892 : 15 +18893 : 15 +18894 : 16 +18895 : 16 +18896 : 16 +18897 : 15 +18898 : 16 +18899 : 16 +18900 : 17 +18901 : 17 +18902 : 18 +18903 : 18 +18904 : 19 +18905 : 19 +18906 : 18 +18907 : 18 +18908 : 17 +18909 : 17 +18910 : 16 +18911 : 16 +18912 : 15 +18913 : 15 +18914 : 14 +18915 : 14 +18916 : 13 +18917 : 13 +18918 : 12 +18919 : 12 +18920 : 11 +18921 : 11 +18922 : 10 +18923 : 10 +18924 : 9 +18925 : 9 +18926 : 8 +18927 : 8 +18928 : 7 +18929 : 7 +18930 : 6 +18931 : 8 +18932 : 7 +18933 : 8 +18934 : 8 +18935 : 9 +18936 : 9 +18937 : 10 +18938 : 9 +18939 : 9 +18940 : 8 +18941 : 8 +18942 : 7 +18943 : 7 +18944 : 6 +18945 : 6 +18946 : 5 +18947 : 5 +18948 : 4 +18949 : 4 +18950 : 3 +18951 : 4 +18952 : 4 +18953 : 5 +18954 : 5 +18955 : 4 +18956 : 4 +18957 : 3 +18958 : 3 +18959 : 2 +18960 : 32767 +18961 : 32767 +18962 : 417 +18963 : 0 +18964 : 3 +18965 : 2 +18966 : 1 +18967 : 1 +18968 : 0 +18969 : 1 +18970 : 1 +18971 : 2 +18972 : 2 +18973 : 3 +18974 : 3 +18975 : 4 +18976 : 4 +18977 : 5 +18978 : 5 +18979 : 6 +18980 : 6 +18981 : 7 +18982 : 7 +18983 : 8 +18984 : 8 +18985 : 9 +18986 : 9 +18987 : 10 +18988 : 10 +18989 : 11 +18990 : 11 +18991 : 12 +18992 : 12 +18993 : 13 +18994 : 13 +18995 : 14 +18996 : 14 +18997 : 15 +18998 : 15 +18999 : 16 +19000 : 16 +19001 : 16 +19002 : 17 +19003 : 17 +19004 : 18 +19005 : 18 +19006 : 19 +19007 : 19 +19008 : 20 +19009 : 20 +19010 : 19 +19011 : 19 +19012 : 18 +19013 : 18 +19014 : 17 +19015 : 17 +19016 : 16 +19017 : 16 +19018 : 15 +19019 : 15 +19020 : 14 +19021 : 14 +19022 : 13 +19023 : 13 +19024 : 12 +19025 : 12 +19026 : 11 +19027 : 11 +19028 : 10 +19029 : 10 +19030 : 9 +19031 : 9 +19032 : 8 +19033 : 8 +19034 : 7 +19035 : 9 +19036 : 8 +19037 : 9 +19038 : 9 +19039 : 10 +19040 : 10 +19041 : 11 +19042 : 10 +19043 : 10 +19044 : 9 +19045 : 9 +19046 : 8 +19047 : 8 +19048 : 7 +19049 : 7 +19050 : 6 +19051 : 6 +19052 : 5 +19053 : 5 +19054 : 4 +19055 : 5 +19056 : 5 +19057 : 6 +19058 : 6 +19059 : 5 +19060 : 5 +19061 : 4 +19062 : 4 +19063 : 3 +19064 : 32767 +19065 : 32767 +19066 : 417 +19067 : 0 +19068 : 3 +19069 : 2 +19070 : 2 +19071 : 1 +19072 : 1 +19073 : 0 +19074 : 1 +19075 : 1 +19076 : 2 +19077 : 2 +19078 : 3 +19079 : 3 +19080 : 4 +19081 : 4 +19082 : 5 +19083 : 5 +19084 : 6 +19085 : 6 +19086 : 7 +19087 : 7 +19088 : 8 +19089 : 8 +19090 : 9 +19091 : 9 +19092 : 10 +19093 : 10 +19094 : 11 +19095 : 11 +19096 : 12 +19097 : 12 +19098 : 13 +19099 : 13 +19100 : 14 +19101 : 14 +19102 : 15 +19103 : 15 +19104 : 16 +19105 : 16 +19106 : 17 +19107 : 17 +19108 : 18 +19109 : 18 +19110 : 19 +19111 : 19 +19112 : 20 +19113 : 20 +19114 : 19 +19115 : 19 +19116 : 18 +19117 : 18 +19118 : 17 +19119 : 17 +19120 : 16 +19121 : 16 +19122 : 15 +19123 : 15 +19124 : 14 +19125 : 14 +19126 : 13 +19127 : 13 +19128 : 12 +19129 : 12 +19130 : 11 +19131 : 11 +19132 : 10 +19133 : 10 +19134 : 9 +19135 : 9 +19136 : 8 +19137 : 8 +19138 : 7 +19139 : 9 +19140 : 8 +19141 : 9 +19142 : 9 +19143 : 10 +19144 : 10 +19145 : 11 +19146 : 10 +19147 : 10 +19148 : 9 +19149 : 9 +19150 : 8 +19151 : 8 +19152 : 7 +19153 : 7 +19154 : 6 +19155 : 6 +19156 : 5 +19157 : 5 +19158 : 4 +19159 : 5 +19160 : 5 +19161 : 6 +19162 : 6 +19163 : 5 +19164 : 5 +19165 : 4 +19166 : 4 +19167 : 3 +19168 : 32767 +19169 : 32767 +19170 : 417 +19171 : 0 +19172 : 4 +19173 : 3 +19174 : 2 +19175 : 2 +19176 : 1 +19177 : 1 +19178 : 0 +19179 : 1 +19180 : 1 +19181 : 2 +19182 : 2 +19183 : 3 +19184 : 3 +19185 : 4 +19186 : 4 +19187 : 5 +19188 : 5 +19189 : 6 +19190 : 6 +19191 : 7 +19192 : 7 +19193 : 8 +19194 : 8 +19195 : 9 +19196 : 9 +19197 : 10 +19198 : 10 +19199 : 11 +19200 : 11 +19201 : 12 +19202 : 12 +19203 : 13 +19204 : 13 +19205 : 14 +19206 : 14 +19207 : 15 +19208 : 15 +19209 : 16 +19210 : 16 +19211 : 17 +19212 : 17 +19213 : 18 +19214 : 18 +19215 : 19 +19216 : 19 +19217 : 20 +19218 : 20 +19219 : 20 +19220 : 19 +19221 : 19 +19222 : 18 +19223 : 18 +19224 : 17 +19225 : 17 +19226 : 16 +19227 : 16 +19228 : 15 +19229 : 15 +19230 : 14 +19231 : 14 +19232 : 13 +19233 : 13 +19234 : 12 +19235 : 12 +19236 : 11 +19237 : 11 +19238 : 10 +19239 : 10 +19240 : 9 +19241 : 9 +19242 : 8 +19243 : 10 +19244 : 9 +19245 : 10 +19246 : 10 +19247 : 11 +19248 : 11 +19249 : 12 +19250 : 11 +19251 : 11 +19252 : 10 +19253 : 10 +19254 : 9 +19255 : 9 +19256 : 8 +19257 : 8 +19258 : 7 +19259 : 7 +19260 : 6 +19261 : 6 +19262 : 5 +19263 : 6 +19264 : 6 +19265 : 7 +19266 : 7 +19267 : 6 +19268 : 6 +19269 : 5 +19270 : 5 +19271 : 4 +19272 : 32767 +19273 : 32767 +19274 : 417 +19275 : 0 +19276 : 4 +19277 : 3 +19278 : 3 +19279 : 2 +19280 : 2 +19281 : 1 +19282 : 1 +19283 : 0 +19284 : 1 +19285 : 1 +19286 : 2 +19287 : 2 +19288 : 3 +19289 : 3 +19290 : 4 +19291 : 4 +19292 : 5 +19293 : 5 +19294 : 6 +19295 : 6 +19296 : 7 +19297 : 7 +19298 : 8 +19299 : 8 +19300 : 9 +19301 : 9 +19302 : 10 +19303 : 10 +19304 : 11 +19305 : 11 +19306 : 12 +19307 : 12 +19308 : 13 +19309 : 13 +19310 : 14 +19311 : 14 +19312 : 15 +19313 : 15 +19314 : 16 +19315 : 16 +19316 : 17 +19317 : 17 +19318 : 18 +19319 : 18 +19320 : 19 +19321 : 19 +19322 : 20 +19323 : 20 +19324 : 19 +19325 : 19 +19326 : 18 +19327 : 18 +19328 : 17 +19329 : 17 +19330 : 16 +19331 : 16 +19332 : 15 +19333 : 15 +19334 : 14 +19335 : 14 +19336 : 13 +19337 : 13 +19338 : 12 +19339 : 12 +19340 : 11 +19341 : 11 +19342 : 10 +19343 : 10 +19344 : 9 +19345 : 9 +19346 : 8 +19347 : 10 +19348 : 9 +19349 : 10 +19350 : 10 +19351 : 11 +19352 : 11 +19353 : 12 +19354 : 11 +19355 : 11 +19356 : 10 +19357 : 10 +19358 : 9 +19359 : 9 +19360 : 8 +19361 : 8 +19362 : 7 +19363 : 7 +19364 : 6 +19365 : 6 +19366 : 5 +19367 : 6 +19368 : 6 +19369 : 7 +19370 : 7 +19371 : 6 +19372 : 6 +19373 : 5 +19374 : 5 +19375 : 4 +19376 : 32767 +19377 : 32767 +19378 : 417 +19379 : 0 +19380 : 5 +19381 : 4 +19382 : 3 +19383 : 3 +19384 : 2 +19385 : 2 +19386 : 1 +19387 : 1 +19388 : 0 +19389 : 1 +19390 : 1 +19391 : 2 +19392 : 2 +19393 : 3 +19394 : 3 +19395 : 4 +19396 : 4 +19397 : 5 +19398 : 5 +19399 : 6 +19400 : 6 +19401 : 7 +19402 : 7 +19403 : 8 +19404 : 8 +19405 : 9 +19406 : 9 +19407 : 10 +19408 : 10 +19409 : 11 +19410 : 11 +19411 : 12 +19412 : 12 +19413 : 13 +19414 : 13 +19415 : 14 +19416 : 14 +19417 : 15 +19418 : 15 +19419 : 16 +19420 : 16 +19421 : 17 +19422 : 17 +19423 : 18 +19424 : 18 +19425 : 19 +19426 : 19 +19427 : 20 +19428 : 20 +19429 : 19 +19430 : 19 +19431 : 18 +19432 : 18 +19433 : 17 +19434 : 17 +19435 : 16 +19436 : 16 +19437 : 16 +19438 : 15 +19439 : 15 +19440 : 14 +19441 : 14 +19442 : 13 +19443 : 13 +19444 : 12 +19445 : 12 +19446 : 11 +19447 : 11 +19448 : 10 +19449 : 10 +19450 : 9 +19451 : 11 +19452 : 10 +19453 : 11 +19454 : 11 +19455 : 12 +19456 : 12 +19457 : 13 +19458 : 12 +19459 : 12 +19460 : 11 +19461 : 11 +19462 : 10 +19463 : 10 +19464 : 9 +19465 : 9 +19466 : 8 +19467 : 8 +19468 : 7 +19469 : 7 +19470 : 6 +19471 : 7 +19472 : 7 +19473 : 8 +19474 : 8 +19475 : 7 +19476 : 7 +19477 : 6 +19478 : 6 +19479 : 5 +19480 : 32767 +19481 : 32767 +19482 : 417 +19483 : 0 +19484 : 5 +19485 : 4 +19486 : 4 +19487 : 3 +19488 : 3 +19489 : 2 +19490 : 2 +19491 : 1 +19492 : 1 +19493 : 0 +19494 : 1 +19495 : 1 +19496 : 2 +19497 : 2 +19498 : 3 +19499 : 3 +19500 : 4 +19501 : 4 +19502 : 5 +19503 : 5 +19504 : 6 +19505 : 6 +19506 : 7 +19507 : 7 +19508 : 8 +19509 : 8 +19510 : 9 +19511 : 9 +19512 : 10 +19513 : 10 +19514 : 11 +19515 : 11 +19516 : 12 +19517 : 12 +19518 : 13 +19519 : 13 +19520 : 14 +19521 : 14 +19522 : 15 +19523 : 15 +19524 : 16 +19525 : 16 +19526 : 17 +19527 : 17 +19528 : 18 +19529 : 18 +19530 : 19 +19531 : 19 +19532 : 19 +19533 : 18 +19534 : 18 +19535 : 17 +19536 : 17 +19537 : 16 +19538 : 16 +19539 : 15 +19540 : 16 +19541 : 16 +19542 : 15 +19543 : 15 +19544 : 14 +19545 : 14 +19546 : 13 +19547 : 13 +19548 : 12 +19549 : 12 +19550 : 11 +19551 : 11 +19552 : 10 +19553 : 10 +19554 : 9 +19555 : 11 +19556 : 10 +19557 : 11 +19558 : 11 +19559 : 12 +19560 : 12 +19561 : 13 +19562 : 12 +19563 : 12 +19564 : 11 +19565 : 11 +19566 : 10 +19567 : 10 +19568 : 9 +19569 : 9 +19570 : 8 +19571 : 8 +19572 : 7 +19573 : 7 +19574 : 6 +19575 : 7 +19576 : 7 +19577 : 8 +19578 : 8 +19579 : 7 +19580 : 7 +19581 : 6 +19582 : 6 +19583 : 5 +19584 : 32767 +19585 : 32767 +19586 : 417 +19587 : 0 +19588 : 6 +19589 : 5 +19590 : 4 +19591 : 4 +19592 : 3 +19593 : 3 +19594 : 2 +19595 : 2 +19596 : 1 +19597 : 1 +19598 : 0 +19599 : 1 +19600 : 1 +19601 : 2 +19602 : 2 +19603 : 3 +19604 : 3 +19605 : 4 +19606 : 4 +19607 : 5 +19608 : 5 +19609 : 6 +19610 : 6 +19611 : 7 +19612 : 7 +19613 : 8 +19614 : 8 +19615 : 9 +19616 : 9 +19617 : 10 +19618 : 10 +19619 : 11 +19620 : 11 +19621 : 12 +19622 : 12 +19623 : 13 +19624 : 13 +19625 : 14 +19626 : 14 +19627 : 15 +19628 : 15 +19629 : 16 +19630 : 16 +19631 : 17 +19632 : 17 +19633 : 18 +19634 : 18 +19635 : 19 +19636 : 19 +19637 : 18 +19638 : 18 +19639 : 17 +19640 : 17 +19641 : 16 +19642 : 16 +19643 : 15 +19644 : 17 +19645 : 16 +19646 : 16 +19647 : 16 +19648 : 15 +19649 : 15 +19650 : 14 +19651 : 14 +19652 : 13 +19653 : 13 +19654 : 12 +19655 : 12 +19656 : 11 +19657 : 11 +19658 : 10 +19659 : 12 +19660 : 11 +19661 : 12 +19662 : 12 +19663 : 13 +19664 : 13 +19665 : 14 +19666 : 13 +19667 : 13 +19668 : 12 +19669 : 12 +19670 : 11 +19671 : 11 +19672 : 10 +19673 : 10 +19674 : 9 +19675 : 9 +19676 : 8 +19677 : 8 +19678 : 7 +19679 : 8 +19680 : 8 +19681 : 9 +19682 : 9 +19683 : 8 +19684 : 8 +19685 : 7 +19686 : 7 +19687 : 6 +19688 : 32767 +19689 : 32767 +19690 : 417 +19691 : 0 +19692 : 6 +19693 : 5 +19694 : 5 +19695 : 4 +19696 : 4 +19697 : 3 +19698 : 3 +19699 : 2 +19700 : 2 +19701 : 1 +19702 : 1 +19703 : 0 +19704 : 1 +19705 : 1 +19706 : 2 +19707 : 2 +19708 : 3 +19709 : 3 +19710 : 4 +19711 : 4 +19712 : 5 +19713 : 5 +19714 : 6 +19715 : 6 +19716 : 7 +19717 : 7 +19718 : 8 +19719 : 8 +19720 : 9 +19721 : 9 +19722 : 10 +19723 : 10 +19724 : 11 +19725 : 11 +19726 : 12 +19727 : 12 +19728 : 13 +19729 : 13 +19730 : 14 +19731 : 14 +19732 : 15 +19733 : 15 +19734 : 16 +19735 : 16 +19736 : 17 +19737 : 17 +19738 : 18 +19739 : 18 +19740 : 18 +19741 : 17 +19742 : 17 +19743 : 16 +19744 : 16 +19745 : 15 +19746 : 15 +19747 : 14 +19748 : 16 +19749 : 15 +19750 : 16 +19751 : 16 +19752 : 15 +19753 : 15 +19754 : 14 +19755 : 14 +19756 : 13 +19757 : 13 +19758 : 12 +19759 : 12 +19760 : 11 +19761 : 11 +19762 : 10 +19763 : 12 +19764 : 11 +19765 : 12 +19766 : 12 +19767 : 13 +19768 : 13 +19769 : 14 +19770 : 13 +19771 : 13 +19772 : 12 +19773 : 12 +19774 : 11 +19775 : 11 +19776 : 10 +19777 : 10 +19778 : 9 +19779 : 9 +19780 : 8 +19781 : 8 +19782 : 7 +19783 : 8 +19784 : 8 +19785 : 9 +19786 : 9 +19787 : 8 +19788 : 8 +19789 : 7 +19790 : 7 +19791 : 6 +19792 : 32767 +19793 : 32767 +19794 : 417 +19795 : 0 +19796 : 7 +19797 : 6 +19798 : 5 +19799 : 5 +19800 : 4 +19801 : 4 +19802 : 3 +19803 : 3 +19804 : 2 +19805 : 2 +19806 : 1 +19807 : 1 +19808 : 0 +19809 : 1 +19810 : 1 +19811 : 2 +19812 : 2 +19813 : 3 +19814 : 3 +19815 : 4 +19816 : 4 +19817 : 5 +19818 : 5 +19819 : 6 +19820 : 6 +19821 : 7 +19822 : 7 +19823 : 8 +19824 : 8 +19825 : 9 +19826 : 9 +19827 : 10 +19828 : 10 +19829 : 11 +19830 : 11 +19831 : 12 +19832 : 12 +19833 : 13 +19834 : 13 +19835 : 14 +19836 : 14 +19837 : 15 +19838 : 15 +19839 : 16 +19840 : 16 +19841 : 17 +19842 : 17 +19843 : 18 +19844 : 18 +19845 : 17 +19846 : 17 +19847 : 16 +19848 : 16 +19849 : 15 +19850 : 15 +19851 : 14 +19852 : 16 +19853 : 15 +19854 : 16 +19855 : 16 +19856 : 16 +19857 : 16 +19858 : 15 +19859 : 15 +19860 : 14 +19861 : 14 +19862 : 13 +19863 : 13 +19864 : 12 +19865 : 12 +19866 : 11 +19867 : 13 +19868 : 12 +19869 : 13 +19870 : 13 +19871 : 14 +19872 : 14 +19873 : 15 +19874 : 14 +19875 : 14 +19876 : 13 +19877 : 13 +19878 : 12 +19879 : 12 +19880 : 11 +19881 : 11 +19882 : 10 +19883 : 10 +19884 : 9 +19885 : 9 +19886 : 8 +19887 : 9 +19888 : 9 +19889 : 10 +19890 : 10 +19891 : 9 +19892 : 9 +19893 : 8 +19894 : 8 +19895 : 7 +19896 : 32767 +19897 : 32767 +19898 : 417 +19899 : 0 +19900 : 7 +19901 : 6 +19902 : 6 +19903 : 5 +19904 : 5 +19905 : 4 +19906 : 4 +19907 : 3 +19908 : 3 +19909 : 2 +19910 : 2 +19911 : 1 +19912 : 1 +19913 : 0 +19914 : 1 +19915 : 1 +19916 : 2 +19917 : 2 +19918 : 3 +19919 : 3 +19920 : 4 +19921 : 4 +19922 : 5 +19923 : 5 +19924 : 6 +19925 : 6 +19926 : 7 +19927 : 7 +19928 : 8 +19929 : 8 +19930 : 9 +19931 : 9 +19932 : 10 +19933 : 10 +19934 : 11 +19935 : 11 +19936 : 12 +19937 : 12 +19938 : 13 +19939 : 13 +19940 : 14 +19941 : 14 +19942 : 15 +19943 : 15 +19944 : 16 +19945 : 16 +19946 : 17 +19947 : 17 +19948 : 17 +19949 : 16 +19950 : 16 +19951 : 15 +19952 : 15 +19953 : 14 +19954 : 14 +19955 : 13 +19956 : 15 +19957 : 14 +19958 : 15 +19959 : 15 +19960 : 16 +19961 : 16 +19962 : 15 +19963 : 15 +19964 : 14 +19965 : 14 +19966 : 13 +19967 : 13 +19968 : 12 +19969 : 12 +19970 : 11 +19971 : 13 +19972 : 12 +19973 : 13 +19974 : 13 +19975 : 14 +19976 : 14 +19977 : 15 +19978 : 14 +19979 : 14 +19980 : 13 +19981 : 13 +19982 : 12 +19983 : 12 +19984 : 11 +19985 : 11 +19986 : 10 +19987 : 10 +19988 : 9 +19989 : 9 +19990 : 8 +19991 : 9 +19992 : 9 +19993 : 10 +19994 : 10 +19995 : 9 +19996 : 9 +19997 : 8 +19998 : 8 +19999 : 7 +20000 : 32767 +20001 : 32767 +20002 : 417 +20003 : 0 +20004 : 8 +20005 : 7 +20006 : 6 +20007 : 6 +20008 : 5 +20009 : 5 +20010 : 4 +20011 : 4 +20012 : 3 +20013 : 3 +20014 : 2 +20015 : 2 +20016 : 1 +20017 : 1 +20018 : 0 +20019 : 1 +20020 : 1 +20021 : 2 +20022 : 2 +20023 : 3 +20024 : 3 +20025 : 4 +20026 : 4 +20027 : 5 +20028 : 5 +20029 : 6 +20030 : 6 +20031 : 7 +20032 : 7 +20033 : 8 +20034 : 8 +20035 : 9 +20036 : 9 +20037 : 10 +20038 : 10 +20039 : 11 +20040 : 11 +20041 : 12 +20042 : 12 +20043 : 13 +20044 : 13 +20045 : 14 +20046 : 14 +20047 : 15 +20048 : 15 +20049 : 16 +20050 : 16 +20051 : 17 +20052 : 17 +20053 : 16 +20054 : 16 +20055 : 15 +20056 : 15 +20057 : 14 +20058 : 14 +20059 : 13 +20060 : 15 +20061 : 14 +20062 : 15 +20063 : 15 +20064 : 16 +20065 : 16 +20066 : 16 +20067 : 16 +20068 : 15 +20069 : 15 +20070 : 14 +20071 : 14 +20072 : 13 +20073 : 13 +20074 : 12 +20075 : 14 +20076 : 13 +20077 : 14 +20078 : 14 +20079 : 15 +20080 : 15 +20081 : 16 +20082 : 15 +20083 : 15 +20084 : 14 +20085 : 14 +20086 : 13 +20087 : 13 +20088 : 12 +20089 : 12 +20090 : 11 +20091 : 11 +20092 : 10 +20093 : 10 +20094 : 9 +20095 : 10 +20096 : 10 +20097 : 11 +20098 : 11 +20099 : 10 +20100 : 10 +20101 : 9 +20102 : 9 +20103 : 8 +20104 : 32767 +20105 : 32767 +20106 : 417 +20107 : 0 +20108 : 8 +20109 : 7 +20110 : 7 +20111 : 6 +20112 : 6 +20113 : 5 +20114 : 5 +20115 : 4 +20116 : 4 +20117 : 3 +20118 : 3 +20119 : 2 +20120 : 2 +20121 : 1 +20122 : 1 +20123 : 0 +20124 : 1 +20125 : 1 +20126 : 2 +20127 : 2 +20128 : 3 +20129 : 3 +20130 : 4 +20131 : 4 +20132 : 5 +20133 : 5 +20134 : 6 +20135 : 6 +20136 : 7 +20137 : 7 +20138 : 8 +20139 : 8 +20140 : 9 +20141 : 9 +20142 : 10 +20143 : 10 +20144 : 11 +20145 : 11 +20146 : 12 +20147 : 12 +20148 : 13 +20149 : 13 +20150 : 14 +20151 : 14 +20152 : 15 +20153 : 15 +20154 : 16 +20155 : 16 +20156 : 16 +20157 : 15 +20158 : 15 +20159 : 14 +20160 : 14 +20161 : 13 +20162 : 13 +20163 : 12 +20164 : 14 +20165 : 13 +20166 : 14 +20167 : 14 +20168 : 15 +20169 : 15 +20170 : 16 +20171 : 16 +20172 : 15 +20173 : 15 +20174 : 14 +20175 : 14 +20176 : 13 +20177 : 13 +20178 : 12 +20179 : 14 +20180 : 13 +20181 : 14 +20182 : 14 +20183 : 15 +20184 : 15 +20185 : 16 +20186 : 15 +20187 : 15 +20188 : 14 +20189 : 14 +20190 : 13 +20191 : 13 +20192 : 12 +20193 : 12 +20194 : 11 +20195 : 11 +20196 : 10 +20197 : 10 +20198 : 9 +20199 : 10 +20200 : 10 +20201 : 11 +20202 : 11 +20203 : 10 +20204 : 10 +20205 : 9 +20206 : 9 +20207 : 8 +20208 : 32767 +20209 : 32767 +20210 : 417 +20211 : 0 +20212 : 9 +20213 : 8 +20214 : 7 +20215 : 7 +20216 : 6 +20217 : 6 +20218 : 5 +20219 : 5 +20220 : 4 +20221 : 4 +20222 : 3 +20223 : 3 +20224 : 2 +20225 : 2 +20226 : 1 +20227 : 1 +20228 : 0 +20229 : 1 +20230 : 1 +20231 : 2 +20232 : 2 +20233 : 3 +20234 : 3 +20235 : 4 +20236 : 4 +20237 : 5 +20238 : 5 +20239 : 6 +20240 : 6 +20241 : 7 +20242 : 7 +20243 : 8 +20244 : 8 +20245 : 9 +20246 : 9 +20247 : 10 +20248 : 10 +20249 : 11 +20250 : 11 +20251 : 12 +20252 : 12 +20253 : 13 +20254 : 13 +20255 : 14 +20256 : 14 +20257 : 15 +20258 : 15 +20259 : 16 +20260 : 16 +20261 : 15 +20262 : 15 +20263 : 14 +20264 : 14 +20265 : 13 +20266 : 13 +20267 : 12 +20268 : 14 +20269 : 13 +20270 : 14 +20271 : 14 +20272 : 15 +20273 : 15 +20274 : 16 +20275 : 16 +20276 : 16 +20277 : 16 +20278 : 15 +20279 : 15 +20280 : 14 +20281 : 14 +20282 : 13 +20283 : 15 +20284 : 14 +20285 : 15 +20286 : 15 +20287 : 16 +20288 : 16 +20289 : 17 +20290 : 16 +20291 : 16 +20292 : 15 +20293 : 15 +20294 : 14 +20295 : 14 +20296 : 13 +20297 : 13 +20298 : 12 +20299 : 12 +20300 : 11 +20301 : 11 +20302 : 10 +20303 : 11 +20304 : 11 +20305 : 12 +20306 : 12 +20307 : 11 +20308 : 11 +20309 : 10 +20310 : 10 +20311 : 9 +20312 : 32767 +20313 : 32767 +20314 : 417 +20315 : 0 +20316 : 9 +20317 : 8 +20318 : 8 +20319 : 7 +20320 : 7 +20321 : 6 +20322 : 6 +20323 : 5 +20324 : 5 +20325 : 4 +20326 : 4 +20327 : 3 +20328 : 3 +20329 : 2 +20330 : 2 +20331 : 1 +20332 : 1 +20333 : 0 +20334 : 1 +20335 : 1 +20336 : 2 +20337 : 2 +20338 : 3 +20339 : 3 +20340 : 4 +20341 : 4 +20342 : 5 +20343 : 5 +20344 : 6 +20345 : 6 +20346 : 7 +20347 : 7 +20348 : 8 +20349 : 8 +20350 : 9 +20351 : 9 +20352 : 10 +20353 : 10 +20354 : 11 +20355 : 11 +20356 : 12 +20357 : 12 +20358 : 13 +20359 : 13 +20360 : 14 +20361 : 14 +20362 : 15 +20363 : 15 +20364 : 15 +20365 : 14 +20366 : 14 +20367 : 13 +20368 : 13 +20369 : 12 +20370 : 12 +20371 : 11 +20372 : 13 +20373 : 12 +20374 : 13 +20375 : 13 +20376 : 14 +20377 : 14 +20378 : 15 +20379 : 15 +20380 : 16 +20381 : 16 +20382 : 15 +20383 : 15 +20384 : 14 +20385 : 14 +20386 : 13 +20387 : 15 +20388 : 14 +20389 : 15 +20390 : 15 +20391 : 16 +20392 : 16 +20393 : 17 +20394 : 16 +20395 : 16 +20396 : 15 +20397 : 15 +20398 : 14 +20399 : 14 +20400 : 13 +20401 : 13 +20402 : 12 +20403 : 12 +20404 : 11 +20405 : 11 +20406 : 10 +20407 : 11 +20408 : 11 +20409 : 12 +20410 : 12 +20411 : 11 +20412 : 11 +20413 : 10 +20414 : 10 +20415 : 9 +20416 : 32767 +20417 : 32767 +20418 : 417 +20419 : 0 +20420 : 10 +20421 : 9 +20422 : 8 +20423 : 8 +20424 : 7 +20425 : 7 +20426 : 6 +20427 : 6 +20428 : 5 +20429 : 5 +20430 : 4 +20431 : 4 +20432 : 3 +20433 : 3 +20434 : 2 +20435 : 2 +20436 : 1 +20437 : 1 +20438 : 0 +20439 : 1 +20440 : 1 +20441 : 2 +20442 : 2 +20443 : 3 +20444 : 3 +20445 : 4 +20446 : 4 +20447 : 5 +20448 : 5 +20449 : 6 +20450 : 6 +20451 : 7 +20452 : 7 +20453 : 8 +20454 : 8 +20455 : 9 +20456 : 9 +20457 : 10 +20458 : 10 +20459 : 11 +20460 : 11 +20461 : 12 +20462 : 12 +20463 : 13 +20464 : 13 +20465 : 14 +20466 : 14 +20467 : 15 +20468 : 15 +20469 : 14 +20470 : 14 +20471 : 13 +20472 : 13 +20473 : 12 +20474 : 12 +20475 : 11 +20476 : 13 +20477 : 12 +20478 : 13 +20479 : 13 +20480 : 14 +20481 : 14 +20482 : 15 +20483 : 15 +20484 : 16 +20485 : 16 +20486 : 16 +20487 : 16 +20488 : 15 +20489 : 15 +20490 : 14 +20491 : 16 +20492 : 15 +20493 : 16 +20494 : 16 +20495 : 17 +20496 : 17 +20497 : 18 +20498 : 17 +20499 : 17 +20500 : 16 +20501 : 16 +20502 : 15 +20503 : 15 +20504 : 14 +20505 : 14 +20506 : 13 +20507 : 13 +20508 : 12 +20509 : 12 +20510 : 11 +20511 : 12 +20512 : 12 +20513 : 13 +20514 : 13 +20515 : 12 +20516 : 12 +20517 : 11 +20518 : 11 +20519 : 10 +20520 : 32767 +20521 : 32767 +20522 : 417 +20523 : 0 +20524 : 10 +20525 : 9 +20526 : 9 +20527 : 8 +20528 : 8 +20529 : 7 +20530 : 7 +20531 : 6 +20532 : 6 +20533 : 5 +20534 : 5 +20535 : 4 +20536 : 4 +20537 : 3 +20538 : 3 +20539 : 2 +20540 : 2 +20541 : 1 +20542 : 1 +20543 : 0 +20544 : 1 +20545 : 1 +20546 : 2 +20547 : 2 +20548 : 3 +20549 : 3 +20550 : 4 +20551 : 4 +20552 : 5 +20553 : 5 +20554 : 6 +20555 : 6 +20556 : 7 +20557 : 7 +20558 : 8 +20559 : 8 +20560 : 9 +20561 : 9 +20562 : 10 +20563 : 10 +20564 : 11 +20565 : 11 +20566 : 12 +20567 : 12 +20568 : 13 +20569 : 13 +20570 : 14 +20571 : 14 +20572 : 14 +20573 : 13 +20574 : 13 +20575 : 12 +20576 : 12 +20577 : 11 +20578 : 11 +20579 : 10 +20580 : 12 +20581 : 11 +20582 : 12 +20583 : 12 +20584 : 13 +20585 : 13 +20586 : 14 +20587 : 14 +20588 : 15 +20589 : 15 +20590 : 16 +20591 : 16 +20592 : 15 +20593 : 15 +20594 : 14 +20595 : 16 +20596 : 15 +20597 : 16 +20598 : 16 +20599 : 17 +20600 : 17 +20601 : 18 +20602 : 17 +20603 : 17 +20604 : 16 +20605 : 16 +20606 : 15 +20607 : 15 +20608 : 14 +20609 : 14 +20610 : 13 +20611 : 13 +20612 : 12 +20613 : 12 +20614 : 11 +20615 : 12 +20616 : 12 +20617 : 13 +20618 : 13 +20619 : 12 +20620 : 12 +20621 : 11 +20622 : 11 +20623 : 10 +20624 : 32767 +20625 : 32767 +20626 : 417 +20627 : 0 +20628 : 11 +20629 : 10 +20630 : 9 +20631 : 9 +20632 : 8 +20633 : 8 +20634 : 7 +20635 : 7 +20636 : 6 +20637 : 6 +20638 : 5 +20639 : 5 +20640 : 4 +20641 : 4 +20642 : 3 +20643 : 3 +20644 : 2 +20645 : 2 +20646 : 1 +20647 : 1 +20648 : 0 +20649 : 1 +20650 : 1 +20651 : 2 +20652 : 2 +20653 : 3 +20654 : 3 +20655 : 4 +20656 : 4 +20657 : 5 +20658 : 5 +20659 : 6 +20660 : 6 +20661 : 7 +20662 : 7 +20663 : 8 +20664 : 8 +20665 : 9 +20666 : 9 +20667 : 10 +20668 : 10 +20669 : 11 +20670 : 11 +20671 : 12 +20672 : 12 +20673 : 13 +20674 : 13 +20675 : 14 +20676 : 14 +20677 : 13 +20678 : 13 +20679 : 12 +20680 : 12 +20681 : 11 +20682 : 11 +20683 : 10 +20684 : 12 +20685 : 11 +20686 : 12 +20687 : 12 +20688 : 13 +20689 : 13 +20690 : 14 +20691 : 14 +20692 : 15 +20693 : 15 +20694 : 16 +20695 : 16 +20696 : 16 +20697 : 16 +20698 : 15 +20699 : 17 +20700 : 16 +20701 : 17 +20702 : 17 +20703 : 18 +20704 : 18 +20705 : 19 +20706 : 18 +20707 : 18 +20708 : 17 +20709 : 17 +20710 : 16 +20711 : 16 +20712 : 15 +20713 : 15 +20714 : 14 +20715 : 14 +20716 : 13 +20717 : 13 +20718 : 12 +20719 : 13 +20720 : 13 +20721 : 14 +20722 : 14 +20723 : 13 +20724 : 13 +20725 : 12 +20726 : 12 +20727 : 11 +20728 : 32767 +20729 : 32767 +20730 : 417 +20731 : 0 +20732 : 11 +20733 : 10 +20734 : 10 +20735 : 9 +20736 : 9 +20737 : 8 +20738 : 8 +20739 : 7 +20740 : 7 +20741 : 6 +20742 : 6 +20743 : 5 +20744 : 5 +20745 : 4 +20746 : 4 +20747 : 3 +20748 : 3 +20749 : 2 +20750 : 2 +20751 : 1 +20752 : 1 +20753 : 0 +20754 : 1 +20755 : 1 +20756 : 2 +20757 : 2 +20758 : 3 +20759 : 3 +20760 : 4 +20761 : 4 +20762 : 5 +20763 : 5 +20764 : 6 +20765 : 6 +20766 : 7 +20767 : 7 +20768 : 8 +20769 : 8 +20770 : 9 +20771 : 9 +20772 : 10 +20773 : 10 +20774 : 11 +20775 : 11 +20776 : 12 +20777 : 12 +20778 : 13 +20779 : 13 +20780 : 13 +20781 : 12 +20782 : 12 +20783 : 11 +20784 : 11 +20785 : 10 +20786 : 10 +20787 : 9 +20788 : 11 +20789 : 10 +20790 : 11 +20791 : 11 +20792 : 12 +20793 : 12 +20794 : 13 +20795 : 13 +20796 : 14 +20797 : 14 +20798 : 15 +20799 : 15 +20800 : 16 +20801 : 16 +20802 : 15 +20803 : 17 +20804 : 16 +20805 : 17 +20806 : 17 +20807 : 18 +20808 : 18 +20809 : 19 +20810 : 18 +20811 : 18 +20812 : 17 +20813 : 17 +20814 : 16 +20815 : 16 +20816 : 15 +20817 : 15 +20818 : 14 +20819 : 14 +20820 : 13 +20821 : 13 +20822 : 12 +20823 : 13 +20824 : 13 +20825 : 14 +20826 : 14 +20827 : 13 +20828 : 13 +20829 : 12 +20830 : 12 +20831 : 11 +20832 : 32767 +20833 : 32767 +20834 : 417 +20835 : 0 +20836 : 12 +20837 : 11 +20838 : 10 +20839 : 10 +20840 : 9 +20841 : 9 +20842 : 8 +20843 : 8 +20844 : 7 +20845 : 7 +20846 : 6 +20847 : 6 +20848 : 5 +20849 : 5 +20850 : 4 +20851 : 4 +20852 : 3 +20853 : 3 +20854 : 2 +20855 : 2 +20856 : 1 +20857 : 1 +20858 : 0 +20859 : 1 +20860 : 1 +20861 : 2 +20862 : 2 +20863 : 3 +20864 : 3 +20865 : 4 +20866 : 4 +20867 : 5 +20868 : 5 +20869 : 6 +20870 : 6 +20871 : 7 +20872 : 7 +20873 : 8 +20874 : 8 +20875 : 9 +20876 : 9 +20877 : 10 +20878 : 10 +20879 : 11 +20880 : 11 +20881 : 12 +20882 : 12 +20883 : 13 +20884 : 13 +20885 : 12 +20886 : 12 +20887 : 11 +20888 : 11 +20889 : 10 +20890 : 10 +20891 : 9 +20892 : 11 +20893 : 10 +20894 : 11 +20895 : 11 +20896 : 12 +20897 : 12 +20898 : 13 +20899 : 13 +20900 : 14 +20901 : 14 +20902 : 15 +20903 : 15 +20904 : 16 +20905 : 16 +20906 : 16 +20907 : 17 +20908 : 17 +20909 : 18 +20910 : 18 +20911 : 19 +20912 : 19 +20913 : 20 +20914 : 19 +20915 : 19 +20916 : 18 +20917 : 18 +20918 : 17 +20919 : 17 +20920 : 16 +20921 : 16 +20922 : 15 +20923 : 15 +20924 : 14 +20925 : 14 +20926 : 13 +20927 : 14 +20928 : 14 +20929 : 15 +20930 : 15 +20931 : 14 +20932 : 14 +20933 : 13 +20934 : 13 +20935 : 12 +20936 : 32767 +20937 : 32767 +20938 : 417 +20939 : 0 +20940 : 12 +20941 : 11 +20942 : 11 +20943 : 10 +20944 : 10 +20945 : 9 +20946 : 9 +20947 : 8 +20948 : 8 +20949 : 7 +20950 : 7 +20951 : 6 +20952 : 6 +20953 : 5 +20954 : 5 +20955 : 4 +20956 : 4 +20957 : 3 +20958 : 3 +20959 : 2 +20960 : 2 +20961 : 1 +20962 : 1 +20963 : 0 +20964 : 1 +20965 : 1 +20966 : 2 +20967 : 2 +20968 : 3 +20969 : 3 +20970 : 4 +20971 : 4 +20972 : 5 +20973 : 5 +20974 : 6 +20975 : 6 +20976 : 7 +20977 : 7 +20978 : 8 +20979 : 8 +20980 : 9 +20981 : 9 +20982 : 10 +20983 : 10 +20984 : 11 +20985 : 11 +20986 : 12 +20987 : 12 +20988 : 12 +20989 : 11 +20990 : 11 +20991 : 10 +20992 : 10 +20993 : 9 +20994 : 9 +20995 : 8 +20996 : 10 +20997 : 9 +20998 : 10 +20999 : 10 +21000 : 11 +21001 : 11 +21002 : 12 +21003 : 12 +21004 : 13 +21005 : 13 +21006 : 14 +21007 : 14 +21008 : 15 +21009 : 15 +21010 : 16 +21011 : 16 +21012 : 17 +21013 : 17 +21014 : 18 +21015 : 18 +21016 : 19 +21017 : 19 +21018 : 19 +21019 : 19 +21020 : 18 +21021 : 18 +21022 : 17 +21023 : 17 +21024 : 16 +21025 : 16 +21026 : 15 +21027 : 15 +21028 : 14 +21029 : 14 +21030 : 13 +21031 : 14 +21032 : 14 +21033 : 15 +21034 : 15 +21035 : 14 +21036 : 14 +21037 : 13 +21038 : 13 +21039 : 12 +21040 : 32767 +21041 : 32767 +21042 : 417 +21043 : 0 +21044 : 13 +21045 : 12 +21046 : 11 +21047 : 11 +21048 : 10 +21049 : 10 +21050 : 9 +21051 : 9 +21052 : 8 +21053 : 8 +21054 : 7 +21055 : 7 +21056 : 6 +21057 : 6 +21058 : 5 +21059 : 5 +21060 : 4 +21061 : 4 +21062 : 3 +21063 : 3 +21064 : 2 +21065 : 2 +21066 : 1 +21067 : 1 +21068 : 0 +21069 : 1 +21070 : 1 +21071 : 2 +21072 : 2 +21073 : 3 +21074 : 3 +21075 : 4 +21076 : 4 +21077 : 5 +21078 : 5 +21079 : 6 +21080 : 6 +21081 : 7 +21082 : 7 +21083 : 8 +21084 : 8 +21085 : 9 +21086 : 9 +21087 : 10 +21088 : 10 +21089 : 11 +21090 : 11 +21091 : 12 +21092 : 12 +21093 : 11 +21094 : 11 +21095 : 10 +21096 : 10 +21097 : 9 +21098 : 9 +21099 : 8 +21100 : 10 +21101 : 9 +21102 : 10 +21103 : 10 +21104 : 11 +21105 : 11 +21106 : 12 +21107 : 12 +21108 : 13 +21109 : 13 +21110 : 14 +21111 : 14 +21112 : 15 +21113 : 15 +21114 : 16 +21115 : 16 +21116 : 17 +21117 : 17 +21118 : 18 +21119 : 18 +21120 : 19 +21121 : 19 +21122 : 20 +21123 : 20 +21124 : 19 +21125 : 19 +21126 : 18 +21127 : 18 +21128 : 17 +21129 : 17 +21130 : 16 +21131 : 16 +21132 : 15 +21133 : 15 +21134 : 14 +21135 : 15 +21136 : 15 +21137 : 16 +21138 : 16 +21139 : 15 +21140 : 15 +21141 : 14 +21142 : 14 +21143 : 13 +21144 : 32767 +21145 : 32767 +21146 : 417 +21147 : 0 +21148 : 13 +21149 : 12 +21150 : 12 +21151 : 11 +21152 : 11 +21153 : 10 +21154 : 10 +21155 : 9 +21156 : 9 +21157 : 8 +21158 : 8 +21159 : 7 +21160 : 7 +21161 : 6 +21162 : 6 +21163 : 5 +21164 : 5 +21165 : 4 +21166 : 4 +21167 : 3 +21168 : 3 +21169 : 2 +21170 : 2 +21171 : 1 +21172 : 1 +21173 : 0 +21174 : 1 +21175 : 1 +21176 : 2 +21177 : 2 +21178 : 3 +21179 : 3 +21180 : 4 +21181 : 4 +21182 : 5 +21183 : 5 +21184 : 6 +21185 : 6 +21186 : 7 +21187 : 7 +21188 : 8 +21189 : 8 +21190 : 9 +21191 : 9 +21192 : 10 +21193 : 10 +21194 : 11 +21195 : 11 +21196 : 11 +21197 : 10 +21198 : 10 +21199 : 9 +21200 : 9 +21201 : 8 +21202 : 8 +21203 : 7 +21204 : 9 +21205 : 8 +21206 : 9 +21207 : 9 +21208 : 10 +21209 : 10 +21210 : 11 +21211 : 11 +21212 : 12 +21213 : 12 +21214 : 13 +21215 : 13 +21216 : 14 +21217 : 14 +21218 : 15 +21219 : 15 +21220 : 16 +21221 : 16 +21222 : 17 +21223 : 17 +21224 : 18 +21225 : 18 +21226 : 19 +21227 : 19 +21228 : 19 +21229 : 19 +21230 : 18 +21231 : 18 +21232 : 17 +21233 : 17 +21234 : 16 +21235 : 16 +21236 : 15 +21237 : 15 +21238 : 14 +21239 : 15 +21240 : 15 +21241 : 16 +21242 : 16 +21243 : 15 +21244 : 15 +21245 : 14 +21246 : 14 +21247 : 13 +21248 : 32767 +21249 : 32767 +21250 : 417 +21251 : 0 +21252 : 14 +21253 : 13 +21254 : 12 +21255 : 12 +21256 : 11 +21257 : 11 +21258 : 10 +21259 : 10 +21260 : 9 +21261 : 9 +21262 : 8 +21263 : 8 +21264 : 7 +21265 : 7 +21266 : 6 +21267 : 6 +21268 : 5 +21269 : 5 +21270 : 4 +21271 : 4 +21272 : 3 +21273 : 3 +21274 : 2 +21275 : 2 +21276 : 1 +21277 : 1 +21278 : 0 +21279 : 1 +21280 : 1 +21281 : 2 +21282 : 2 +21283 : 3 +21284 : 3 +21285 : 4 +21286 : 4 +21287 : 5 +21288 : 5 +21289 : 6 +21290 : 6 +21291 : 7 +21292 : 7 +21293 : 8 +21294 : 8 +21295 : 9 +21296 : 9 +21297 : 10 +21298 : 10 +21299 : 11 +21300 : 11 +21301 : 10 +21302 : 10 +21303 : 9 +21304 : 9 +21305 : 8 +21306 : 8 +21307 : 7 +21308 : 9 +21309 : 8 +21310 : 9 +21311 : 9 +21312 : 10 +21313 : 10 +21314 : 11 +21315 : 11 +21316 : 12 +21317 : 12 +21318 : 13 +21319 : 13 +21320 : 14 +21321 : 14 +21322 : 15 +21323 : 15 +21324 : 16 +21325 : 16 +21326 : 17 +21327 : 17 +21328 : 18 +21329 : 18 +21330 : 19 +21331 : 19 +21332 : 19 +21333 : 19 +21334 : 18 +21335 : 18 +21336 : 17 +21337 : 17 +21338 : 16 +21339 : 17 +21340 : 16 +21341 : 16 +21342 : 15 +21343 : 16 +21344 : 16 +21345 : 17 +21346 : 17 +21347 : 16 +21348 : 16 +21349 : 15 +21350 : 15 +21351 : 14 +21352 : 32767 +21353 : 32767 +21354 : 417 +21355 : 0 +21356 : 14 +21357 : 13 +21358 : 13 +21359 : 12 +21360 : 12 +21361 : 11 +21362 : 11 +21363 : 10 +21364 : 10 +21365 : 9 +21366 : 9 +21367 : 8 +21368 : 8 +21369 : 7 +21370 : 7 +21371 : 6 +21372 : 6 +21373 : 5 +21374 : 5 +21375 : 4 +21376 : 4 +21377 : 3 +21378 : 3 +21379 : 2 +21380 : 2 +21381 : 1 +21382 : 1 +21383 : 0 +21384 : 1 +21385 : 1 +21386 : 2 +21387 : 2 +21388 : 3 +21389 : 3 +21390 : 4 +21391 : 4 +21392 : 5 +21393 : 5 +21394 : 6 +21395 : 6 +21396 : 7 +21397 : 7 +21398 : 8 +21399 : 8 +21400 : 9 +21401 : 9 +21402 : 10 +21403 : 10 +21404 : 10 +21405 : 9 +21406 : 9 +21407 : 8 +21408 : 8 +21409 : 7 +21410 : 7 +21411 : 6 +21412 : 8 +21413 : 7 +21414 : 8 +21415 : 8 +21416 : 9 +21417 : 9 +21418 : 10 +21419 : 10 +21420 : 11 +21421 : 11 +21422 : 12 +21423 : 12 +21424 : 13 +21425 : 13 +21426 : 14 +21427 : 14 +21428 : 15 +21429 : 15 +21430 : 16 +21431 : 16 +21432 : 17 +21433 : 17 +21434 : 18 +21435 : 18 +21436 : 18 +21437 : 18 +21438 : 17 +21439 : 17 +21440 : 16 +21441 : 16 +21442 : 15 +21443 : 16 +21444 : 16 +21445 : 16 +21446 : 15 +21447 : 16 +21448 : 16 +21449 : 17 +21450 : 17 +21451 : 16 +21452 : 16 +21453 : 15 +21454 : 15 +21455 : 14 +21456 : 32767 +21457 : 32767 +21458 : 417 +21459 : 0 +21460 : 15 +21461 : 14 +21462 : 13 +21463 : 13 +21464 : 12 +21465 : 12 +21466 : 11 +21467 : 11 +21468 : 10 +21469 : 10 +21470 : 9 +21471 : 9 +21472 : 8 +21473 : 8 +21474 : 7 +21475 : 7 +21476 : 6 +21477 : 6 +21478 : 5 +21479 : 5 +21480 : 4 +21481 : 4 +21482 : 3 +21483 : 3 +21484 : 2 +21485 : 2 +21486 : 1 +21487 : 1 +21488 : 0 +21489 : 1 +21490 : 1 +21491 : 2 +21492 : 2 +21493 : 3 +21494 : 3 +21495 : 4 +21496 : 4 +21497 : 5 +21498 : 5 +21499 : 6 +21500 : 6 +21501 : 7 +21502 : 7 +21503 : 8 +21504 : 8 +21505 : 9 +21506 : 9 +21507 : 10 +21508 : 10 +21509 : 9 +21510 : 9 +21511 : 8 +21512 : 8 +21513 : 7 +21514 : 7 +21515 : 6 +21516 : 8 +21517 : 7 +21518 : 8 +21519 : 8 +21520 : 9 +21521 : 9 +21522 : 10 +21523 : 10 +21524 : 11 +21525 : 11 +21526 : 12 +21527 : 12 +21528 : 13 +21529 : 13 +21530 : 14 +21531 : 14 +21532 : 15 +21533 : 15 +21534 : 16 +21535 : 16 +21536 : 17 +21537 : 17 +21538 : 18 +21539 : 18 +21540 : 18 +21541 : 18 +21542 : 17 +21543 : 17 +21544 : 16 +21545 : 16 +21546 : 15 +21547 : 16 +21548 : 16 +21549 : 17 +21550 : 16 +21551 : 17 +21552 : 17 +21553 : 18 +21554 : 18 +21555 : 17 +21556 : 17 +21557 : 16 +21558 : 16 +21559 : 15 +21560 : 32767 +21561 : 32767 +21562 : 417 +21563 : 0 +21564 : 15 +21565 : 14 +21566 : 14 +21567 : 13 +21568 : 13 +21569 : 12 +21570 : 12 +21571 : 11 +21572 : 11 +21573 : 10 +21574 : 10 +21575 : 9 +21576 : 9 +21577 : 8 +21578 : 8 +21579 : 7 +21580 : 7 +21581 : 6 +21582 : 6 +21583 : 5 +21584 : 5 +21585 : 4 +21586 : 4 +21587 : 3 +21588 : 3 +21589 : 2 +21590 : 2 +21591 : 1 +21592 : 1 +21593 : 0 +21594 : 1 +21595 : 1 +21596 : 2 +21597 : 2 +21598 : 3 +21599 : 3 +21600 : 4 +21601 : 4 +21602 : 5 +21603 : 5 +21604 : 6 +21605 : 6 +21606 : 7 +21607 : 7 +21608 : 8 +21609 : 8 +21610 : 9 +21611 : 9 +21612 : 9 +21613 : 8 +21614 : 8 +21615 : 7 +21616 : 7 +21617 : 6 +21618 : 6 +21619 : 5 +21620 : 7 +21621 : 6 +21622 : 7 +21623 : 7 +21624 : 8 +21625 : 8 +21626 : 9 +21627 : 9 +21628 : 10 +21629 : 10 +21630 : 11 +21631 : 11 +21632 : 12 +21633 : 12 +21634 : 13 +21635 : 13 +21636 : 14 +21637 : 14 +21638 : 15 +21639 : 15 +21640 : 16 +21641 : 16 +21642 : 17 +21643 : 17 +21644 : 17 +21645 : 17 +21646 : 16 +21647 : 16 +21648 : 15 +21649 : 15 +21650 : 14 +21651 : 15 +21652 : 15 +21653 : 16 +21654 : 16 +21655 : 17 +21656 : 17 +21657 : 18 +21658 : 18 +21659 : 17 +21660 : 17 +21661 : 16 +21662 : 16 +21663 : 15 +21664 : 32767 +21665 : 32767 +21666 : 417 +21667 : 0 +21668 : 16 +21669 : 15 +21670 : 14 +21671 : 14 +21672 : 13 +21673 : 13 +21674 : 12 +21675 : 12 +21676 : 11 +21677 : 11 +21678 : 10 +21679 : 10 +21680 : 9 +21681 : 9 +21682 : 8 +21683 : 8 +21684 : 7 +21685 : 7 +21686 : 6 +21687 : 6 +21688 : 5 +21689 : 5 +21690 : 4 +21691 : 4 +21692 : 3 +21693 : 3 +21694 : 2 +21695 : 2 +21696 : 1 +21697 : 1 +21698 : 0 +21699 : 1 +21700 : 1 +21701 : 2 +21702 : 2 +21703 : 3 +21704 : 3 +21705 : 4 +21706 : 4 +21707 : 5 +21708 : 5 +21709 : 6 +21710 : 6 +21711 : 7 +21712 : 7 +21713 : 8 +21714 : 8 +21715 : 9 +21716 : 9 +21717 : 8 +21718 : 8 +21719 : 7 +21720 : 7 +21721 : 6 +21722 : 6 +21723 : 5 +21724 : 7 +21725 : 6 +21726 : 7 +21727 : 7 +21728 : 8 +21729 : 8 +21730 : 9 +21731 : 9 +21732 : 10 +21733 : 10 +21734 : 11 +21735 : 11 +21736 : 12 +21737 : 12 +21738 : 13 +21739 : 13 +21740 : 14 +21741 : 14 +21742 : 15 +21743 : 15 +21744 : 16 +21745 : 16 +21746 : 17 +21747 : 17 +21748 : 17 +21749 : 17 +21750 : 16 +21751 : 16 +21752 : 15 +21753 : 15 +21754 : 14 +21755 : 15 +21756 : 15 +21757 : 16 +21758 : 16 +21759 : 17 +21760 : 17 +21761 : 18 +21762 : 18 +21763 : 18 +21764 : 18 +21765 : 17 +21766 : 17 +21767 : 16 +21768 : 32767 +21769 : 32767 +21770 : 417 +21771 : 0 +21772 : 16 +21773 : 15 +21774 : 15 +21775 : 14 +21776 : 14 +21777 : 13 +21778 : 13 +21779 : 12 +21780 : 12 +21781 : 11 +21782 : 11 +21783 : 10 +21784 : 10 +21785 : 9 +21786 : 9 +21787 : 8 +21788 : 8 +21789 : 7 +21790 : 7 +21791 : 6 +21792 : 6 +21793 : 5 +21794 : 5 +21795 : 4 +21796 : 4 +21797 : 3 +21798 : 3 +21799 : 2 +21800 : 2 +21801 : 1 +21802 : 1 +21803 : 0 +21804 : 1 +21805 : 1 +21806 : 2 +21807 : 2 +21808 : 3 +21809 : 3 +21810 : 4 +21811 : 4 +21812 : 5 +21813 : 5 +21814 : 6 +21815 : 6 +21816 : 7 +21817 : 7 +21818 : 8 +21819 : 8 +21820 : 8 +21821 : 7 +21822 : 7 +21823 : 6 +21824 : 6 +21825 : 5 +21826 : 5 +21827 : 4 +21828 : 6 +21829 : 5 +21830 : 6 +21831 : 6 +21832 : 7 +21833 : 7 +21834 : 8 +21835 : 8 +21836 : 9 +21837 : 9 +21838 : 10 +21839 : 10 +21840 : 11 +21841 : 11 +21842 : 12 +21843 : 12 +21844 : 13 +21845 : 13 +21846 : 14 +21847 : 14 +21848 : 15 +21849 : 15 +21850 : 16 +21851 : 16 +21852 : 16 +21853 : 16 +21854 : 15 +21855 : 15 +21856 : 14 +21857 : 14 +21858 : 13 +21859 : 14 +21860 : 14 +21861 : 15 +21862 : 15 +21863 : 16 +21864 : 16 +21865 : 17 +21866 : 17 +21867 : 18 +21868 : 18 +21869 : 17 +21870 : 17 +21871 : 16 +21872 : 32767 +21873 : 32767 +21874 : 417 +21875 : 0 +21876 : 16 +21877 : 16 +21878 : 15 +21879 : 15 +21880 : 14 +21881 : 14 +21882 : 13 +21883 : 13 +21884 : 12 +21885 : 12 +21886 : 11 +21887 : 11 +21888 : 10 +21889 : 10 +21890 : 9 +21891 : 9 +21892 : 8 +21893 : 8 +21894 : 7 +21895 : 7 +21896 : 6 +21897 : 6 +21898 : 5 +21899 : 5 +21900 : 4 +21901 : 4 +21902 : 3 +21903 : 3 +21904 : 2 +21905 : 2 +21906 : 1 +21907 : 1 +21908 : 0 +21909 : 1 +21910 : 1 +21911 : 2 +21912 : 2 +21913 : 3 +21914 : 3 +21915 : 4 +21916 : 4 +21917 : 5 +21918 : 5 +21919 : 6 +21920 : 6 +21921 : 7 +21922 : 7 +21923 : 8 +21924 : 8 +21925 : 7 +21926 : 7 +21927 : 6 +21928 : 6 +21929 : 5 +21930 : 5 +21931 : 4 +21932 : 6 +21933 : 5 +21934 : 6 +21935 : 6 +21936 : 7 +21937 : 7 +21938 : 8 +21939 : 8 +21940 : 9 +21941 : 9 +21942 : 10 +21943 : 10 +21944 : 11 +21945 : 11 +21946 : 12 +21947 : 12 +21948 : 13 +21949 : 13 +21950 : 14 +21951 : 14 +21952 : 15 +21953 : 15 +21954 : 16 +21955 : 16 +21956 : 16 +21957 : 16 +21958 : 15 +21959 : 15 +21960 : 14 +21961 : 14 +21962 : 13 +21963 : 14 +21964 : 14 +21965 : 15 +21966 : 15 +21967 : 16 +21968 : 16 +21969 : 17 +21970 : 17 +21971 : 18 +21972 : 18 +21973 : 18 +21974 : 17 +21975 : 17 +21976 : 32767 +21977 : 32767 +21978 : 417 +21979 : 0 +21980 : 15 +21981 : 16 +21982 : 16 +21983 : 15 +21984 : 15 +21985 : 14 +21986 : 14 +21987 : 13 +21988 : 13 +21989 : 12 +21990 : 12 +21991 : 11 +21992 : 11 +21993 : 10 +21994 : 10 +21995 : 9 +21996 : 9 +21997 : 8 +21998 : 8 +21999 : 7 +22000 : 7 +22001 : 6 +22002 : 6 +22003 : 5 +22004 : 5 +22005 : 4 +22006 : 4 +22007 : 3 +22008 : 3 +22009 : 2 +22010 : 2 +22011 : 1 +22012 : 1 +22013 : 0 +22014 : 1 +22015 : 1 +22016 : 2 +22017 : 2 +22018 : 3 +22019 : 3 +22020 : 4 +22021 : 4 +22022 : 5 +22023 : 5 +22024 : 6 +22025 : 6 +22026 : 7 +22027 : 7 +22028 : 7 +22029 : 6 +22030 : 6 +22031 : 5 +22032 : 5 +22033 : 4 +22034 : 4 +22035 : 3 +22036 : 5 +22037 : 4 +22038 : 5 +22039 : 5 +22040 : 6 +22041 : 6 +22042 : 7 +22043 : 7 +22044 : 8 +22045 : 8 +22046 : 9 +22047 : 9 +22048 : 10 +22049 : 10 +22050 : 11 +22051 : 11 +22052 : 12 +22053 : 12 +22054 : 13 +22055 : 13 +22056 : 14 +22057 : 14 +22058 : 15 +22059 : 15 +22060 : 15 +22061 : 15 +22062 : 14 +22063 : 14 +22064 : 13 +22065 : 13 +22066 : 12 +22067 : 13 +22068 : 13 +22069 : 14 +22070 : 14 +22071 : 15 +22072 : 15 +22073 : 16 +22074 : 16 +22075 : 17 +22076 : 17 +22077 : 17 +22078 : 16 +22079 : 16 +22080 : 32767 +22081 : 32767 +22082 : 417 +22083 : 0 +22084 : 15 +22085 : 16 +22086 : 16 +22087 : 16 +22088 : 15 +22089 : 15 +22090 : 14 +22091 : 14 +22092 : 13 +22093 : 13 +22094 : 12 +22095 : 12 +22096 : 11 +22097 : 11 +22098 : 10 +22099 : 10 +22100 : 9 +22101 : 9 +22102 : 8 +22103 : 8 +22104 : 7 +22105 : 7 +22106 : 6 +22107 : 6 +22108 : 5 +22109 : 5 +22110 : 4 +22111 : 4 +22112 : 3 +22113 : 3 +22114 : 2 +22115 : 2 +22116 : 1 +22117 : 1 +22118 : 0 +22119 : 1 +22120 : 1 +22121 : 2 +22122 : 2 +22123 : 3 +22124 : 3 +22125 : 4 +22126 : 4 +22127 : 5 +22128 : 5 +22129 : 6 +22130 : 6 +22131 : 7 +22132 : 7 +22133 : 6 +22134 : 6 +22135 : 5 +22136 : 5 +22137 : 4 +22138 : 4 +22139 : 3 +22140 : 5 +22141 : 4 +22142 : 5 +22143 : 5 +22144 : 6 +22145 : 6 +22146 : 7 +22147 : 7 +22148 : 8 +22149 : 8 +22150 : 9 +22151 : 9 +22152 : 10 +22153 : 10 +22154 : 11 +22155 : 11 +22156 : 12 +22157 : 12 +22158 : 13 +22159 : 13 +22160 : 14 +22161 : 14 +22162 : 15 +22163 : 15 +22164 : 15 +22165 : 15 +22166 : 14 +22167 : 14 +22168 : 13 +22169 : 13 +22170 : 12 +22171 : 13 +22172 : 13 +22173 : 14 +22174 : 14 +22175 : 15 +22176 : 15 +22177 : 16 +22178 : 16 +22179 : 17 +22180 : 17 +22181 : 17 +22182 : 16 +22183 : 16 +22184 : 32767 +22185 : 32767 +22186 : 417 +22187 : 0 +22188 : 14 +22189 : 15 +22190 : 16 +22191 : 16 +22192 : 16 +22193 : 15 +22194 : 15 +22195 : 14 +22196 : 14 +22197 : 13 +22198 : 13 +22199 : 12 +22200 : 12 +22201 : 11 +22202 : 11 +22203 : 10 +22204 : 10 +22205 : 9 +22206 : 9 +22207 : 8 +22208 : 8 +22209 : 7 +22210 : 7 +22211 : 6 +22212 : 6 +22213 : 5 +22214 : 5 +22215 : 4 +22216 : 4 +22217 : 3 +22218 : 3 +22219 : 2 +22220 : 2 +22221 : 1 +22222 : 1 +22223 : 0 +22224 : 1 +22225 : 1 +22226 : 2 +22227 : 2 +22228 : 3 +22229 : 3 +22230 : 4 +22231 : 4 +22232 : 5 +22233 : 5 +22234 : 6 +22235 : 6 +22236 : 6 +22237 : 5 +22238 : 5 +22239 : 4 +22240 : 4 +22241 : 3 +22242 : 3 +22243 : 2 +22244 : 4 +22245 : 3 +22246 : 4 +22247 : 4 +22248 : 5 +22249 : 5 +22250 : 6 +22251 : 6 +22252 : 7 +22253 : 7 +22254 : 8 +22255 : 8 +22256 : 9 +22257 : 9 +22258 : 10 +22259 : 10 +22260 : 11 +22261 : 11 +22262 : 12 +22263 : 12 +22264 : 13 +22265 : 13 +22266 : 14 +22267 : 14 +22268 : 14 +22269 : 14 +22270 : 13 +22271 : 13 +22272 : 12 +22273 : 12 +22274 : 11 +22275 : 12 +22276 : 12 +22277 : 13 +22278 : 13 +22279 : 14 +22280 : 14 +22281 : 15 +22282 : 15 +22283 : 16 +22284 : 16 +22285 : 16 +22286 : 15 +22287 : 15 +22288 : 32767 +22289 : 32767 +22290 : 417 +22291 : 0 +22292 : 14 +22293 : 15 +22294 : 16 +22295 : 16 +22296 : 16 +22297 : 16 +22298 : 15 +22299 : 15 +22300 : 14 +22301 : 14 +22302 : 13 +22303 : 13 +22304 : 12 +22305 : 12 +22306 : 11 +22307 : 11 +22308 : 10 +22309 : 10 +22310 : 9 +22311 : 9 +22312 : 8 +22313 : 8 +22314 : 7 +22315 : 7 +22316 : 6 +22317 : 6 +22318 : 5 +22319 : 5 +22320 : 4 +22321 : 4 +22322 : 3 +22323 : 3 +22324 : 2 +22325 : 2 +22326 : 1 +22327 : 1 +22328 : 0 +22329 : 1 +22330 : 1 +22331 : 2 +22332 : 2 +22333 : 3 +22334 : 3 +22335 : 4 +22336 : 4 +22337 : 5 +22338 : 5 +22339 : 6 +22340 : 6 +22341 : 5 +22342 : 5 +22343 : 4 +22344 : 4 +22345 : 3 +22346 : 3 +22347 : 2 +22348 : 4 +22349 : 3 +22350 : 4 +22351 : 4 +22352 : 5 +22353 : 5 +22354 : 6 +22355 : 6 +22356 : 7 +22357 : 7 +22358 : 8 +22359 : 8 +22360 : 9 +22361 : 9 +22362 : 10 +22363 : 10 +22364 : 11 +22365 : 11 +22366 : 12 +22367 : 12 +22368 : 13 +22369 : 13 +22370 : 14 +22371 : 14 +22372 : 14 +22373 : 14 +22374 : 13 +22375 : 13 +22376 : 12 +22377 : 12 +22378 : 11 +22379 : 12 +22380 : 12 +22381 : 13 +22382 : 13 +22383 : 14 +22384 : 14 +22385 : 15 +22386 : 15 +22387 : 16 +22388 : 16 +22389 : 16 +22390 : 15 +22391 : 15 +22392 : 32767 +22393 : 32767 +22394 : 417 +22395 : 0 +22396 : 13 +22397 : 14 +22398 : 15 +22399 : 15 +22400 : 16 +22401 : 16 +22402 : 16 +22403 : 15 +22404 : 15 +22405 : 14 +22406 : 14 +22407 : 13 +22408 : 13 +22409 : 12 +22410 : 12 +22411 : 11 +22412 : 11 +22413 : 10 +22414 : 10 +22415 : 9 +22416 : 9 +22417 : 8 +22418 : 8 +22419 : 7 +22420 : 7 +22421 : 6 +22422 : 6 +22423 : 5 +22424 : 5 +22425 : 4 +22426 : 4 +22427 : 3 +22428 : 3 +22429 : 2 +22430 : 2 +22431 : 1 +22432 : 1 +22433 : 0 +22434 : 1 +22435 : 1 +22436 : 2 +22437 : 2 +22438 : 3 +22439 : 3 +22440 : 4 +22441 : 4 +22442 : 5 +22443 : 5 +22444 : 5 +22445 : 4 +22446 : 4 +22447 : 3 +22448 : 3 +22449 : 2 +22450 : 2 +22451 : 1 +22452 : 3 +22453 : 2 +22454 : 3 +22455 : 3 +22456 : 4 +22457 : 4 +22458 : 5 +22459 : 5 +22460 : 6 +22461 : 6 +22462 : 7 +22463 : 7 +22464 : 8 +22465 : 8 +22466 : 9 +22467 : 9 +22468 : 10 +22469 : 10 +22470 : 11 +22471 : 11 +22472 : 12 +22473 : 12 +22474 : 13 +22475 : 13 +22476 : 13 +22477 : 13 +22478 : 12 +22479 : 12 +22480 : 11 +22481 : 11 +22482 : 10 +22483 : 11 +22484 : 11 +22485 : 12 +22486 : 12 +22487 : 13 +22488 : 13 +22489 : 14 +22490 : 14 +22491 : 15 +22492 : 15 +22493 : 15 +22494 : 14 +22495 : 14 +22496 : 32767 +22497 : 32767 +22498 : 417 +22499 : 0 +22500 : 14 +22501 : 15 +22502 : 16 +22503 : 16 +22504 : 17 +22505 : 17 +22506 : 16 +22507 : 16 +22508 : 15 +22509 : 15 +22510 : 14 +22511 : 14 +22512 : 13 +22513 : 13 +22514 : 12 +22515 : 12 +22516 : 11 +22517 : 11 +22518 : 10 +22519 : 10 +22520 : 9 +22521 : 9 +22522 : 8 +22523 : 8 +22524 : 7 +22525 : 7 +22526 : 6 +22527 : 6 +22528 : 5 +22529 : 5 +22530 : 4 +22531 : 4 +22532 : 3 +22533 : 3 +22534 : 2 +22535 : 2 +22536 : 1 +22537 : 1 +22538 : 0 +22539 : 1 +22540 : 1 +22541 : 2 +22542 : 2 +22543 : 3 +22544 : 3 +22545 : 4 +22546 : 4 +22547 : 5 +22548 : 5 +22549 : 5 +22550 : 5 +22551 : 4 +22552 : 4 +22553 : 3 +22554 : 3 +22555 : 2 +22556 : 4 +22557 : 3 +22558 : 4 +22559 : 4 +22560 : 5 +22561 : 5 +22562 : 6 +22563 : 6 +22564 : 7 +22565 : 7 +22566 : 8 +22567 : 8 +22568 : 9 +22569 : 9 +22570 : 10 +22571 : 10 +22572 : 11 +22573 : 11 +22574 : 12 +22575 : 12 +22576 : 13 +22577 : 13 +22578 : 14 +22579 : 14 +22580 : 14 +22581 : 14 +22582 : 13 +22583 : 13 +22584 : 12 +22585 : 12 +22586 : 11 +22587 : 12 +22588 : 12 +22589 : 13 +22590 : 13 +22591 : 14 +22592 : 14 +22593 : 15 +22594 : 15 +22595 : 16 +22596 : 16 +22597 : 16 +22598 : 15 +22599 : 15 +22600 : 32767 +22601 : 32767 +22602 : 417 +22603 : 0 +22604 : 14 +22605 : 15 +22606 : 16 +22607 : 16 +22608 : 17 +22609 : 17 +22610 : 17 +22611 : 16 +22612 : 16 +22613 : 15 +22614 : 15 +22615 : 14 +22616 : 14 +22617 : 13 +22618 : 13 +22619 : 12 +22620 : 12 +22621 : 11 +22622 : 11 +22623 : 10 +22624 : 10 +22625 : 9 +22626 : 9 +22627 : 8 +22628 : 8 +22629 : 7 +22630 : 7 +22631 : 6 +22632 : 6 +22633 : 5 +22634 : 5 +22635 : 4 +22636 : 4 +22637 : 3 +22638 : 3 +22639 : 2 +22640 : 2 +22641 : 1 +22642 : 1 +22643 : 0 +22644 : 1 +22645 : 1 +22646 : 2 +22647 : 2 +22648 : 3 +22649 : 3 +22650 : 4 +22651 : 4 +22652 : 5 +22653 : 5 +22654 : 5 +22655 : 4 +22656 : 4 +22657 : 3 +22658 : 3 +22659 : 2 +22660 : 4 +22661 : 3 +22662 : 4 +22663 : 4 +22664 : 5 +22665 : 5 +22666 : 6 +22667 : 6 +22668 : 7 +22669 : 7 +22670 : 8 +22671 : 8 +22672 : 9 +22673 : 9 +22674 : 10 +22675 : 10 +22676 : 11 +22677 : 11 +22678 : 12 +22679 : 12 +22680 : 13 +22681 : 13 +22682 : 14 +22683 : 14 +22684 : 14 +22685 : 14 +22686 : 13 +22687 : 13 +22688 : 12 +22689 : 12 +22690 : 11 +22691 : 12 +22692 : 12 +22693 : 13 +22694 : 13 +22695 : 14 +22696 : 14 +22697 : 15 +22698 : 15 +22699 : 16 +22700 : 16 +22701 : 16 +22702 : 15 +22703 : 15 +22704 : 32767 +22705 : 32767 +22706 : 417 +22707 : 0 +22708 : 15 +22709 : 16 +22710 : 17 +22711 : 17 +22712 : 18 +22713 : 18 +22714 : 17 +22715 : 17 +22716 : 16 +22717 : 16 +22718 : 15 +22719 : 15 +22720 : 14 +22721 : 14 +22722 : 13 +22723 : 13 +22724 : 12 +22725 : 12 +22726 : 11 +22727 : 11 +22728 : 10 +22729 : 10 +22730 : 9 +22731 : 9 +22732 : 8 +22733 : 8 +22734 : 7 +22735 : 7 +22736 : 6 +22737 : 6 +22738 : 5 +22739 : 5 +22740 : 4 +22741 : 4 +22742 : 3 +22743 : 3 +22744 : 2 +22745 : 2 +22746 : 1 +22747 : 1 +22748 : 0 +22749 : 1 +22750 : 1 +22751 : 2 +22752 : 2 +22753 : 3 +22754 : 3 +22755 : 4 +22756 : 4 +22757 : 5 +22758 : 5 +22759 : 5 +22760 : 5 +22761 : 4 +22762 : 4 +22763 : 3 +22764 : 5 +22765 : 4 +22766 : 5 +22767 : 5 +22768 : 6 +22769 : 6 +22770 : 7 +22771 : 7 +22772 : 8 +22773 : 8 +22774 : 9 +22775 : 9 +22776 : 10 +22777 : 10 +22778 : 11 +22779 : 11 +22780 : 12 +22781 : 12 +22782 : 13 +22783 : 13 +22784 : 14 +22785 : 14 +22786 : 15 +22787 : 15 +22788 : 15 +22789 : 15 +22790 : 14 +22791 : 14 +22792 : 13 +22793 : 13 +22794 : 12 +22795 : 13 +22796 : 13 +22797 : 14 +22798 : 14 +22799 : 15 +22800 : 15 +22801 : 16 +22802 : 16 +22803 : 17 +22804 : 17 +22805 : 17 +22806 : 16 +22807 : 16 +22808 : 32767 +22809 : 32767 +22810 : 417 +22811 : 0 +22812 : 15 +22813 : 16 +22814 : 17 +22815 : 17 +22816 : 18 +22817 : 18 +22818 : 18 +22819 : 17 +22820 : 17 +22821 : 16 +22822 : 16 +22823 : 15 +22824 : 15 +22825 : 14 +22826 : 14 +22827 : 13 +22828 : 13 +22829 : 12 +22830 : 12 +22831 : 11 +22832 : 11 +22833 : 10 +22834 : 10 +22835 : 9 +22836 : 9 +22837 : 8 +22838 : 8 +22839 : 7 +22840 : 7 +22841 : 6 +22842 : 6 +22843 : 5 +22844 : 5 +22845 : 4 +22846 : 4 +22847 : 3 +22848 : 3 +22849 : 2 +22850 : 2 +22851 : 1 +22852 : 1 +22853 : 0 +22854 : 1 +22855 : 1 +22856 : 2 +22857 : 2 +22858 : 3 +22859 : 3 +22860 : 4 +22861 : 4 +22862 : 5 +22863 : 5 +22864 : 5 +22865 : 4 +22866 : 4 +22867 : 3 +22868 : 5 +22869 : 4 +22870 : 5 +22871 : 5 +22872 : 6 +22873 : 6 +22874 : 7 +22875 : 7 +22876 : 8 +22877 : 8 +22878 : 9 +22879 : 9 +22880 : 10 +22881 : 10 +22882 : 11 +22883 : 11 +22884 : 12 +22885 : 12 +22886 : 13 +22887 : 13 +22888 : 14 +22889 : 14 +22890 : 15 +22891 : 15 +22892 : 15 +22893 : 15 +22894 : 14 +22895 : 14 +22896 : 13 +22897 : 13 +22898 : 12 +22899 : 13 +22900 : 13 +22901 : 14 +22902 : 14 +22903 : 15 +22904 : 15 +22905 : 16 +22906 : 16 +22907 : 17 +22908 : 17 +22909 : 17 +22910 : 16 +22911 : 16 +22912 : 32767 +22913 : 32767 +22914 : 417 +22915 : 0 +22916 : 16 +22917 : 17 +22918 : 18 +22919 : 18 +22920 : 19 +22921 : 19 +22922 : 18 +22923 : 18 +22924 : 17 +22925 : 17 +22926 : 16 +22927 : 16 +22928 : 15 +22929 : 15 +22930 : 14 +22931 : 14 +22932 : 13 +22933 : 13 +22934 : 12 +22935 : 12 +22936 : 11 +22937 : 11 +22938 : 10 +22939 : 10 +22940 : 9 +22941 : 9 +22942 : 8 +22943 : 8 +22944 : 7 +22945 : 7 +22946 : 6 +22947 : 6 +22948 : 5 +22949 : 5 +22950 : 4 +22951 : 4 +22952 : 3 +22953 : 3 +22954 : 2 +22955 : 2 +22956 : 1 +22957 : 1 +22958 : 0 +22959 : 1 +22960 : 1 +22961 : 2 +22962 : 2 +22963 : 3 +22964 : 3 +22965 : 4 +22966 : 4 +22967 : 5 +22968 : 5 +22969 : 5 +22970 : 5 +22971 : 4 +22972 : 6 +22973 : 5 +22974 : 6 +22975 : 6 +22976 : 7 +22977 : 7 +22978 : 8 +22979 : 8 +22980 : 9 +22981 : 9 +22982 : 10 +22983 : 10 +22984 : 11 +22985 : 11 +22986 : 12 +22987 : 12 +22988 : 13 +22989 : 13 +22990 : 14 +22991 : 14 +22992 : 15 +22993 : 15 +22994 : 16 +22995 : 16 +22996 : 16 +22997 : 16 +22998 : 15 +22999 : 15 +23000 : 14 +23001 : 14 +23002 : 13 +23003 : 14 +23004 : 14 +23005 : 15 +23006 : 15 +23007 : 16 +23008 : 16 +23009 : 17 +23010 : 17 +23011 : 18 +23012 : 18 +23013 : 18 +23014 : 17 +23015 : 17 +23016 : 32767 +23017 : 32767 +23018 : 417 +23019 : 0 +23020 : 16 +23021 : 17 +23022 : 18 +23023 : 18 +23024 : 19 +23025 : 19 +23026 : 19 +23027 : 18 +23028 : 18 +23029 : 17 +23030 : 17 +23031 : 16 +23032 : 16 +23033 : 15 +23034 : 15 +23035 : 14 +23036 : 14 +23037 : 13 +23038 : 13 +23039 : 12 +23040 : 12 +23041 : 11 +23042 : 11 +23043 : 10 +23044 : 10 +23045 : 9 +23046 : 9 +23047 : 8 +23048 : 8 +23049 : 7 +23050 : 7 +23051 : 6 +23052 : 6 +23053 : 5 +23054 : 5 +23055 : 4 +23056 : 4 +23057 : 3 +23058 : 3 +23059 : 2 +23060 : 2 +23061 : 1 +23062 : 1 +23063 : 0 +23064 : 1 +23065 : 1 +23066 : 2 +23067 : 2 +23068 : 3 +23069 : 3 +23070 : 4 +23071 : 4 +23072 : 5 +23073 : 5 +23074 : 5 +23075 : 4 +23076 : 6 +23077 : 5 +23078 : 6 +23079 : 6 +23080 : 7 +23081 : 7 +23082 : 8 +23083 : 8 +23084 : 9 +23085 : 9 +23086 : 10 +23087 : 10 +23088 : 11 +23089 : 11 +23090 : 12 +23091 : 12 +23092 : 13 +23093 : 13 +23094 : 14 +23095 : 14 +23096 : 15 +23097 : 15 +23098 : 16 +23099 : 16 +23100 : 16 +23101 : 16 +23102 : 15 +23103 : 15 +23104 : 14 +23105 : 14 +23106 : 13 +23107 : 14 +23108 : 14 +23109 : 15 +23110 : 15 +23111 : 16 +23112 : 16 +23113 : 17 +23114 : 17 +23115 : 18 +23116 : 18 +23117 : 18 +23118 : 17 +23119 : 17 +23120 : 32767 +23121 : 32767 +23122 : 417 +23123 : 0 +23124 : 17 +23125 : 18 +23126 : 19 +23127 : 19 +23128 : 20 +23129 : 20 +23130 : 19 +23131 : 19 +23132 : 18 +23133 : 18 +23134 : 17 +23135 : 17 +23136 : 16 +23137 : 16 +23138 : 15 +23139 : 15 +23140 : 14 +23141 : 14 +23142 : 13 +23143 : 13 +23144 : 12 +23145 : 12 +23146 : 11 +23147 : 11 +23148 : 10 +23149 : 10 +23150 : 9 +23151 : 9 +23152 : 8 +23153 : 8 +23154 : 7 +23155 : 7 +23156 : 6 +23157 : 6 +23158 : 5 +23159 : 5 +23160 : 4 +23161 : 4 +23162 : 3 +23163 : 3 +23164 : 2 +23165 : 2 +23166 : 1 +23167 : 1 +23168 : 0 +23169 : 1 +23170 : 1 +23171 : 2 +23172 : 2 +23173 : 3 +23174 : 3 +23175 : 4 +23176 : 4 +23177 : 5 +23178 : 5 +23179 : 5 +23180 : 6 +23181 : 6 +23182 : 7 +23183 : 7 +23184 : 8 +23185 : 8 +23186 : 9 +23187 : 9 +23188 : 10 +23189 : 10 +23190 : 11 +23191 : 11 +23192 : 12 +23193 : 12 +23194 : 13 +23195 : 13 +23196 : 14 +23197 : 14 +23198 : 15 +23199 : 15 +23200 : 16 +23201 : 16 +23202 : 17 +23203 : 17 +23204 : 17 +23205 : 17 +23206 : 16 +23207 : 16 +23208 : 15 +23209 : 15 +23210 : 14 +23211 : 15 +23212 : 15 +23213 : 16 +23214 : 16 +23215 : 17 +23216 : 17 +23217 : 18 +23218 : 18 +23219 : 19 +23220 : 19 +23221 : 19 +23222 : 18 +23223 : 18 +23224 : 32767 +23225 : 32767 +23226 : 417 +23227 : 0 +23228 : 17 +23229 : 18 +23230 : 19 +23231 : 19 +23232 : 20 +23233 : 20 +23234 : 20 +23235 : 19 +23236 : 19 +23237 : 18 +23238 : 18 +23239 : 17 +23240 : 17 +23241 : 16 +23242 : 16 +23243 : 15 +23244 : 15 +23245 : 14 +23246 : 14 +23247 : 13 +23248 : 13 +23249 : 12 +23250 : 12 +23251 : 11 +23252 : 11 +23253 : 10 +23254 : 10 +23255 : 9 +23256 : 9 +23257 : 8 +23258 : 8 +23259 : 7 +23260 : 7 +23261 : 6 +23262 : 6 +23263 : 5 +23264 : 5 +23265 : 4 +23266 : 4 +23267 : 3 +23268 : 3 +23269 : 2 +23270 : 2 +23271 : 1 +23272 : 1 +23273 : 0 +23274 : 1 +23275 : 1 +23276 : 2 +23277 : 2 +23278 : 3 +23279 : 3 +23280 : 4 +23281 : 4 +23282 : 5 +23283 : 5 +23284 : 6 +23285 : 6 +23286 : 7 +23287 : 7 +23288 : 8 +23289 : 8 +23290 : 9 +23291 : 9 +23292 : 10 +23293 : 10 +23294 : 11 +23295 : 11 +23296 : 12 +23297 : 12 +23298 : 13 +23299 : 13 +23300 : 14 +23301 : 14 +23302 : 15 +23303 : 15 +23304 : 16 +23305 : 16 +23306 : 17 +23307 : 17 +23308 : 17 +23309 : 17 +23310 : 16 +23311 : 16 +23312 : 15 +23313 : 15 +23314 : 14 +23315 : 15 +23316 : 15 +23317 : 16 +23318 : 16 +23319 : 17 +23320 : 17 +23321 : 18 +23322 : 18 +23323 : 19 +23324 : 19 +23325 : 19 +23326 : 18 +23327 : 18 +23328 : 32767 +23329 : 32767 +23330 : 417 +23331 : 0 +23332 : 16 +23333 : 17 +23334 : 18 +23335 : 18 +23336 : 19 +23337 : 19 +23338 : 20 +23339 : 20 +23340 : 19 +23341 : 19 +23342 : 18 +23343 : 18 +23344 : 17 +23345 : 17 +23346 : 16 +23347 : 16 +23348 : 15 +23349 : 15 +23350 : 14 +23351 : 14 +23352 : 13 +23353 : 13 +23354 : 12 +23355 : 12 +23356 : 11 +23357 : 11 +23358 : 10 +23359 : 10 +23360 : 9 +23361 : 9 +23362 : 8 +23363 : 8 +23364 : 7 +23365 : 7 +23366 : 6 +23367 : 6 +23368 : 5 +23369 : 5 +23370 : 4 +23371 : 4 +23372 : 3 +23373 : 3 +23374 : 2 +23375 : 2 +23376 : 1 +23377 : 1 +23378 : 0 +23379 : 1 +23380 : 1 +23381 : 2 +23382 : 2 +23383 : 3 +23384 : 3 +23385 : 4 +23386 : 4 +23387 : 5 +23388 : 5 +23389 : 6 +23390 : 6 +23391 : 7 +23392 : 7 +23393 : 8 +23394 : 8 +23395 : 9 +23396 : 9 +23397 : 10 +23398 : 10 +23399 : 11 +23400 : 11 +23401 : 12 +23402 : 12 +23403 : 13 +23404 : 13 +23405 : 14 +23406 : 14 +23407 : 15 +23408 : 15 +23409 : 16 +23410 : 16 +23411 : 17 +23412 : 16 +23413 : 16 +23414 : 15 +23415 : 15 +23416 : 14 +23417 : 14 +23418 : 13 +23419 : 14 +23420 : 14 +23421 : 15 +23422 : 15 +23423 : 16 +23424 : 16 +23425 : 17 +23426 : 17 +23427 : 18 +23428 : 18 +23429 : 18 +23430 : 17 +23431 : 17 +23432 : 32767 +23433 : 32767 +23434 : 417 +23435 : 0 +23436 : 16 +23437 : 17 +23438 : 18 +23439 : 18 +23440 : 19 +23441 : 19 +23442 : 20 +23443 : 20 +23444 : 20 +23445 : 19 +23446 : 19 +23447 : 18 +23448 : 18 +23449 : 17 +23450 : 17 +23451 : 16 +23452 : 16 +23453 : 15 +23454 : 15 +23455 : 14 +23456 : 14 +23457 : 13 +23458 : 13 +23459 : 12 +23460 : 12 +23461 : 11 +23462 : 11 +23463 : 10 +23464 : 10 +23465 : 9 +23466 : 9 +23467 : 8 +23468 : 8 +23469 : 7 +23470 : 7 +23471 : 6 +23472 : 6 +23473 : 5 +23474 : 5 +23475 : 4 +23476 : 4 +23477 : 3 +23478 : 3 +23479 : 2 +23480 : 2 +23481 : 1 +23482 : 1 +23483 : 0 +23484 : 1 +23485 : 1 +23486 : 2 +23487 : 2 +23488 : 3 +23489 : 3 +23490 : 4 +23491 : 4 +23492 : 5 +23493 : 5 +23494 : 6 +23495 : 6 +23496 : 7 +23497 : 7 +23498 : 8 +23499 : 8 +23500 : 9 +23501 : 9 +23502 : 10 +23503 : 10 +23504 : 11 +23505 : 11 +23506 : 12 +23507 : 12 +23508 : 13 +23509 : 13 +23510 : 14 +23511 : 14 +23512 : 15 +23513 : 15 +23514 : 16 +23515 : 16 +23516 : 16 +23517 : 16 +23518 : 15 +23519 : 15 +23520 : 14 +23521 : 14 +23522 : 13 +23523 : 14 +23524 : 14 +23525 : 15 +23526 : 15 +23527 : 16 +23528 : 16 +23529 : 17 +23530 : 17 +23531 : 18 +23532 : 18 +23533 : 18 +23534 : 17 +23535 : 17 +23536 : 32767 +23537 : 32767 +23538 : 417 +23539 : 0 +23540 : 15 +23541 : 16 +23542 : 17 +23543 : 17 +23544 : 18 +23545 : 18 +23546 : 19 +23547 : 19 +23548 : 20 +23549 : 19 +23550 : 19 +23551 : 18 +23552 : 18 +23553 : 17 +23554 : 17 +23555 : 16 +23556 : 16 +23557 : 15 +23558 : 15 +23559 : 14 +23560 : 14 +23561 : 13 +23562 : 13 +23563 : 12 +23564 : 12 +23565 : 11 +23566 : 11 +23567 : 10 +23568 : 10 +23569 : 9 +23570 : 9 +23571 : 8 +23572 : 8 +23573 : 7 +23574 : 7 +23575 : 6 +23576 : 6 +23577 : 5 +23578 : 5 +23579 : 5 +23580 : 4 +23581 : 4 +23582 : 3 +23583 : 3 +23584 : 2 +23585 : 2 +23586 : 1 +23587 : 1 +23588 : 0 +23589 : 1 +23590 : 1 +23591 : 2 +23592 : 2 +23593 : 3 +23594 : 3 +23595 : 4 +23596 : 4 +23597 : 5 +23598 : 5 +23599 : 6 +23600 : 6 +23601 : 7 +23602 : 7 +23603 : 8 +23604 : 8 +23605 : 9 +23606 : 9 +23607 : 10 +23608 : 10 +23609 : 11 +23610 : 11 +23611 : 12 +23612 : 12 +23613 : 13 +23614 : 13 +23615 : 14 +23616 : 14 +23617 : 15 +23618 : 15 +23619 : 16 +23620 : 15 +23621 : 15 +23622 : 14 +23623 : 14 +23624 : 13 +23625 : 13 +23626 : 12 +23627 : 13 +23628 : 13 +23629 : 14 +23630 : 14 +23631 : 15 +23632 : 15 +23633 : 16 +23634 : 16 +23635 : 17 +23636 : 17 +23637 : 17 +23638 : 16 +23639 : 16 +23640 : 32767 +23641 : 32767 +23642 : 81 +23643 : 0 +23644 : 1908685408 +23645 : 49 +23646 : 1908685408 +23647 : 49 +23648 : 32 +23649 : 0 +23650 : 48 +23651 : 0 +23652 : 0 +23653 : 0 +23654 : 32767 +23655 : 32767 +23656 : 32767 +23657 : 49 +23658 : 1908685264 +23659 : 49 +23660 : 80 +23661 : 0 +23662 : 2416 +23663 : 0 +23664 : 5505424 +23665 : 0 +23666 : 5505824 +23667 : 0 +23668 : 5505824 +23669 : 0 +23670 : 5505840 +23671 : 0 +23672 : 5506240 +23673 : 0 +23674 : 5506240 +23675 : 0 +23676 : 5506256 +23677 : 0 +23678 : 5506656 +23679 : 0 +23680 : 5506656 +23681 : 0 +23682 : 5506672 +23683 : 0 +23684 : 5507072 +23685 : 0 +23686 : 5507072 +23687 : 0 +23688 : 5507088 +23689 : 0 +23690 : 5507488 +23691 : 0 +23692 : 5507488 +23693 : 0 +23694 : 5507504 +23695 : 0 +23696 : 5507904 +23697 : 0 +23698 : 5507904 +23699 : 0 +23700 : 5507920 +23701 : 0 +23702 : 5508320 +23703 : 0 +23704 : 5508320 +23705 : 0 +23706 : 5508336 +23707 : 0 +23708 : 5508736 +23709 : 0 +23710 : 5508736 +23711 : 0 +23712 : 5508752 +23713 : 0 +23714 : 5509152 +23715 : 0 +23716 : 5509152 +23717 : 0 +23718 : 5509168 +23719 : 0 +23720 : 5509568 +23721 : 0 +23722 : 5509568 +23723 : 0 +23724 : 5509584 +23725 : 0 +23726 : 5509984 +23727 : 0 +23728 : 5509984 +23729 : 0 +23730 : 5510000 +23731 : 0 +23732 : 5510400 +23733 : 0 +23734 : 5510400 +23735 : 0 +23736 : 5510416 +23737 : 0 +23738 : 5510816 +23739 : 0 +23740 : 5510816 +23741 : 0 +23742 : 5510832 +23743 : 0 +23744 : 5511232 +23745 : 0 +23746 : 5511232 +23747 : 0 +23748 : 5511248 +23749 : 0 +23750 : 5511648 +23751 : 0 +23752 : 5511648 +23753 : 0 +23754 : 5511664 +23755 : 0 +23756 : 5512064 +23757 : 0 +23758 : 5512064 +23759 : 0 +23760 : 5512080 +23761 : 0 +23762 : 5512480 +23763 : 0 +23764 : 5512480 +23765 : 0 +23766 : 5512496 +23767 : 0 +23768 : 5512896 +23769 : 0 +23770 : 5512896 +23771 : 0 +23772 : 5512912 +23773 : 0 +23774 : 5513312 +23775 : 0 +23776 : 5513312 +23777 : 0 +23778 : 5513328 +23779 : 0 +23780 : 5513728 +23781 : 0 +23782 : 5513728 +23783 : 0 +23784 : 5513744 +23785 : 0 +23786 : 5514144 +23787 : 0 +23788 : 5514144 +23789 : 0 +23790 : 5514160 +23791 : 0 +23792 : 5514560 +23793 : 0 +23794 : 5514560 +23795 : 0 +23796 : 5514576 +23797 : 0 +23798 : 5514976 +23799 : 0 +23800 : 5514976 +23801 : 0 +23802 : 5514992 +23803 : 0 +23804 : 5515392 +23805 : 0 +23806 : 5515392 +23807 : 0 +23808 : 5515408 +23809 : 0 +23810 : 5515808 +23811 : 0 +23812 : 5515808 +23813 : 0 +23814 : 5515824 +23815 : 0 +23816 : 5516224 +23817 : 0 +23818 : 5516224 +23819 : 0 +23820 : 5516240 +23821 : 0 +23822 : 5516640 +23823 : 0 +23824 : 5516640 +23825 : 0 +23826 : 5516656 +23827 : 0 +23828 : 5517056 +23829 : 0 +23830 : 5517056 +23831 : 0 +23832 : 5517072 +23833 : 0 +23834 : 5517472 +23835 : 0 +23836 : 5517472 +23837 : 0 +23838 : 5517488 +23839 : 0 +23840 : 5517888 +23841 : 0 +23842 : 5517888 +23843 : 0 +23844 : 5517904 +23845 : 0 +23846 : 5518304 +23847 : 0 +23848 : 5518304 +23849 : 0 +23850 : 5518320 +23851 : 0 +23852 : 5518720 +23853 : 0 +23854 : 5518720 +23855 : 0 +23856 : 5518736 +23857 : 0 +23858 : 5519136 +23859 : 0 +23860 : 5519136 +23861 : 0 +23862 : 5519152 +23863 : 0 +23864 : 5519552 +23865 : 0 +23866 : 5519552 +23867 : 0 +23868 : 5519568 +23869 : 0 +23870 : 5519968 +23871 : 0 +23872 : 5519968 +23873 : 0 +23874 : 5519984 +23875 : 0 +23876 : 5520384 +23877 : 0 +23878 : 5520384 +23879 : 0 +23880 : 5520400 +23881 : 0 +23882 : 5520800 +23883 : 0 +23884 : 5520800 +23885 : 0 +23886 : 5520816 +23887 : 0 +23888 : 5521216 +23889 : 0 +23890 : 5521216 +23891 : 0 +23892 : 5521232 +23893 : 0 +23894 : 5521632 +23895 : 0 +23896 : 5521632 +23897 : 0 +23898 : 5521648 +23899 : 0 +23900 : 5522048 +23901 : 0 +23902 : 5522048 +23903 : 0 +23904 : 5522064 +23905 : 0 +23906 : 5522464 +23907 : 0 +23908 : 5522464 +23909 : 0 +23910 : 5522480 +23911 : 0 +23912 : 5522880 +23913 : 0 +23914 : 5522880 +23915 : 0 +23916 : 5522896 +23917 : 0 +23918 : 5523296 +23919 : 0 +23920 : 5523296 +23921 : 0 +23922 : 5523312 +23923 : 0 +23924 : 5523712 +23925 : 0 +23926 : 5523712 +23927 : 0 +23928 : 5523728 +23929 : 0 +23930 : 5524128 +23931 : 0 +23932 : 5524128 +23933 : 0 +23934 : 5524144 +23935 : 0 +23936 : 5524544 +23937 : 0 +23938 : 5524544 +23939 : 0 +23940 : 5524560 +23941 : 0 +23942 : 5524960 +23943 : 0 +23944 : 5524960 +23945 : 0 +23946 : 5524976 +23947 : 0 +23948 : 5525376 +23949 : 0 +23950 : 5525376 +23951 : 0 +23952 : 5525392 +23953 : 0 +23954 : 5525792 +23955 : 0 +23956 : 5525792 +23957 : 0 +23958 : 5525808 +23959 : 0 +23960 : 5526208 +23961 : 0 +23962 : 5526208 +23963 : 0 +23964 : 5526224 +23965 : 0 +23966 : 5526624 +23967 : 0 +23968 : 5526624 +23969 : 0 +23970 : 5526640 +23971 : 0 +23972 : 5527040 +23973 : 0 +23974 : 5527040 +23975 : 0 +23976 : 5527056 +23977 : 0 +23978 : 5527456 +23979 : 0 +23980 : 5527456 +23981 : 0 +23982 : 5527472 +23983 : 0 +23984 : 5527872 +23985 : 0 +23986 : 5527872 +23987 : 0 +23988 : 5527888 +23989 : 0 +23990 : 5528288 +23991 : 0 +23992 : 5528288 +23993 : 0 +23994 : 5528304 +23995 : 0 +23996 : 5528704 +23997 : 0 +23998 : 5528704 +23999 : 0 +24000 : 5528720 +24001 : 0 +24002 : 5529120 +24003 : 0 +24004 : 5529120 +24005 : 0 +24006 : 5529136 +24007 : 0 +24008 : 5529536 +24009 : 0 +24010 : 5529536 +24011 : 0 +24012 : 5529552 +24013 : 0 +24014 : 5529952 +24015 : 0 +24016 : 5529952 +24017 : 0 +24018 : 5529968 +24019 : 0 +24020 : 5530368 +24021 : 0 +24022 : 5530368 +24023 : 0 +24024 : 5530384 +24025 : 0 +24026 : 5530784 +24027 : 0 +24028 : 5530784 +24029 : 0 +24030 : 5530800 +24031 : 0 +24032 : 5531200 +24033 : 0 +24034 : 5531200 +24035 : 0 +24036 : 5531216 +24037 : 0 +24038 : 5531616 +24039 : 0 +24040 : 5531616 +24041 : 0 +24042 : 5531632 +24043 : 0 +24044 : 5532032 +24045 : 0 +24046 : 5532032 +24047 : 0 +24048 : 5532048 +24049 : 0 +24050 : 5532448 +24051 : 0 +24052 : 5532448 +24053 : 0 +24054 : 5532464 +24055 : 0 +24056 : 5532864 +24057 : 0 +24058 : 5532864 +24059 : 0 +24060 : 5532880 +24061 : 0 +24062 : 5533280 +24063 : 0 +24064 : 5533280 +24065 : 0 +24066 : 5533296 +24067 : 0 +24068 : 5533696 +24069 : 0 +24070 : 5533696 +24071 : 0 +24072 : 5533712 +24073 : 0 +24074 : 5534112 +24075 : 0 +24076 : 5534112 +24077 : 0 +24078 : 5534128 +24079 : 0 +24080 : 5534528 +24081 : 0 +24082 : 5534528 +24083 : 0 +24084 : 5534544 +24085 : 0 +24086 : 5534944 +24087 : 0 +24088 : 5534944 +24089 : 0 +24090 : 5534960 +24091 : 0 +24092 : 5535360 +24093 : 0 +24094 : 5535360 +24095 : 0 +24096 : 5535376 +24097 : 0 +24098 : 5535776 +24099 : 0 +24100 : 5535776 +24101 : 0 +24102 : 5535792 +24103 : 0 +24104 : 5536192 +24105 : 0 +24106 : 5536192 +24107 : 0 +24108 : 5536208 +24109 : 0 +24110 : 5536608 +24111 : 0 +24112 : 5536608 +24113 : 0 +24114 : 5536624 +24115 : 0 +24116 : 5537024 +24117 : 0 +24118 : 5537024 +24119 : 0 +24120 : 5537040 +24121 : 0 +24122 : 5537440 +24123 : 0 +24124 : 5537440 +24125 : 0 +24126 : 5537456 +24127 : 0 +24128 : 5537856 +24129 : 0 +24130 : 5537856 +24131 : 0 +24132 : 5537872 +24133 : 0 +24134 : 5538272 +24135 : 0 +24136 : 5538272 +24137 : 0 +24138 : 5538288 +24139 : 0 +24140 : 5538688 +24141 : 0 +24142 : 5538688 +24143 : 0 +24144 : 5538704 +24145 : 0 +24146 : 5539104 +24147 : 0 +24148 : 5539104 +24149 : 0 +24150 : 5539120 +24151 : 0 +24152 : 5539520 +24153 : 0 +24154 : 5539520 +24155 : 0 +24156 : 5539536 +24157 : 0 +24158 : 5539936 +24159 : 0 +24160 : 5539936 +24161 : 0 +24162 : 5539952 +24163 : 0 +24164 : 5540352 +24165 : 0 +24166 : 5540352 +24167 : 0 +24168 : 5540368 +24169 : 0 +24170 : 5540768 +24171 : 0 +24172 : 5540768 +24173 : 0 +24174 : 5540784 +24175 : 0 +24176 : 5541184 +24177 : 0 +24178 : 5541184 +24179 : 0 +24180 : 5541200 +24181 : 0 +24182 : 5541600 +24183 : 0 +24184 : 5541600 +24185 : 0 +24186 : 5541616 +24187 : 0 +24188 : 5542016 +24189 : 0 +24190 : 5542016 +24191 : 0 +24192 : 5542032 +24193 : 0 +24194 : 5542432 +24195 : 0 +24196 : 5542432 +24197 : 0 +24198 : 5542448 +24199 : 0 +24200 : 5542848 +24201 : 0 +24202 : 5542848 +24203 : 0 +24204 : 5542864 +24205 : 0 +24206 : 5543264 +24207 : 0 +24208 : 5543264 +24209 : 0 +24210 : 5543280 +24211 : 0 +24212 : 5543680 +24213 : 0 +24214 : 5543680 +24215 : 0 +24216 : 5543696 +24217 : 0 +24218 : 5544096 +24219 : 0 +24220 : 5544096 +24221 : 0 +24222 : 5544112 +24223 : 0 +24224 : 5544512 +24225 : 0 +24226 : 5544512 +24227 : 0 +24228 : 5544528 +24229 : 0 +24230 : 5544928 +24231 : 0 +24232 : 5544928 +24233 : 0 +24234 : 5544944 +24235 : 0 +24236 : 5545344 +24237 : 0 +24238 : 5545344 +24239 : 0 +24240 : 5545360 +24241 : 0 +24242 : 5545760 +24243 : 0 +24244 : 5545760 +24245 : 0 +24246 : 5545776 +24247 : 0 +24248 : 5546176 +24249 : 0 +24250 : 5546176 +24251 : 0 +24252 : 5546192 +24253 : 0 +24254 : 5546592 +24255 : 0 +24256 : 5546592 +24257 : 0 +24258 : 5546608 +24259 : 0 +24260 : 5547008 +24261 : 0 +24262 : 5547008 +24263 : 0 +24264 : 0 +24265 : 0 +24266 : 417 +24267 : 0 +24268 : 0 +24269 : 1 +24270 : 2 +24271 : 2 +24272 : 3 +24273 : 3 +24274 : 4 +24275 : 4 +24276 : 5 +24277 : 5 +24278 : 6 +24279 : 6 +24280 : 7 +24281 : 7 +24282 : 8 +24283 : 8 +24284 : 9 +24285 : 9 +24286 : 10 +24287 : 10 +24288 : 11 +24289 : 11 +24290 : 12 +24291 : 12 +24292 : 13 +24293 : 13 +24294 : 14 +24295 : 14 +24296 : 15 +24297 : 15 +24298 : 16 +24299 : 16 +24300 : 16 +24301 : 15 +24302 : 15 +24303 : 14 +24304 : 14 +24305 : 13 +24306 : 14 +24307 : 14 +24308 : 15 +24309 : 15 +24310 : 16 +24311 : 16 +24312 : 17 +24313 : 17 +24314 : 16 +24315 : 16 +24316 : 15 +24317 : 15 +24318 : 14 +24319 : 14 +24320 : 13 +24321 : 13 +24322 : 12 +24323 : 12 +24324 : 11 +24325 : 11 +24326 : 10 +24327 : 10 +24328 : 9 +24329 : 9 +24330 : 8 +24331 : 8 +24332 : 7 +24333 : 7 +24334 : 6 +24335 : 6 +24336 : 5 +24337 : 5 +24338 : 4 +24339 : 6 +24340 : 5 +24341 : 6 +24342 : 6 +24343 : 7 +24344 : 7 +24345 : 8 +24346 : 7 +24347 : 7 +24348 : 6 +24349 : 6 +24350 : 5 +24351 : 5 +24352 : 4 +24353 : 4 +24354 : 3 +24355 : 3 +24356 : 2 +24357 : 2 +24358 : 1 +24359 : 2 +24360 : 2 +24361 : 3 +24362 : 3 +24363 : 3 +24364 : 2 +24365 : 2 +24366 : 1 +24367 : 1 +24368 : 0 +24369 : 0 +24370 : 417 +24371 : 0 +24372 : 1 +24373 : 0 +24374 : 1 +24375 : 1 +24376 : 2 +24377 : 2 +24378 : 3 +24379 : 3 +24380 : 4 +24381 : 4 +24382 : 5 +24383 : 5 +24384 : 6 +24385 : 6 +24386 : 7 +24387 : 7 +24388 : 8 +24389 : 8 +24390 : 9 +24391 : 9 +24392 : 10 +24393 : 10 +24394 : 11 +24395 : 11 +24396 : 12 +24397 : 12 +24398 : 13 +24399 : 13 +24400 : 14 +24401 : 14 +24402 : 15 +24403 : 15 +24404 : 16 +24405 : 16 +24406 : 16 +24407 : 15 +24408 : 15 +24409 : 14 +24410 : 15 +24411 : 15 +24412 : 16 +24413 : 16 +24414 : 17 +24415 : 17 +24416 : 18 +24417 : 18 +24418 : 17 +24419 : 17 +24420 : 16 +24421 : 16 +24422 : 15 +24423 : 15 +24424 : 14 +24425 : 14 +24426 : 13 +24427 : 13 +24428 : 12 +24429 : 12 +24430 : 11 +24431 : 11 +24432 : 10 +24433 : 10 +24434 : 9 +24435 : 9 +24436 : 8 +24437 : 8 +24438 : 7 +24439 : 7 +24440 : 6 +24441 : 6 +24442 : 5 +24443 : 7 +24444 : 6 +24445 : 7 +24446 : 7 +24447 : 8 +24448 : 8 +24449 : 9 +24450 : 8 +24451 : 8 +24452 : 7 +24453 : 7 +24454 : 6 +24455 : 6 +24456 : 5 +24457 : 5 +24458 : 4 +24459 : 4 +24460 : 3 +24461 : 3 +24462 : 2 +24463 : 3 +24464 : 3 +24465 : 4 +24466 : 4 +24467 : 3 +24468 : 3 +24469 : 2 +24470 : 2 +24471 : 1 +24472 : 0 +24473 : 0 +24474 : 417 +24475 : 0 +24476 : 2 +24477 : 1 +24478 : 0 +24479 : 1 +24480 : 1 +24481 : 2 +24482 : 2 +24483 : 3 +24484 : 3 +24485 : 4 +24486 : 4 +24487 : 5 +24488 : 5 +24489 : 6 +24490 : 6 +24491 : 7 +24492 : 7 +24493 : 8 +24494 : 8 +24495 : 9 +24496 : 9 +24497 : 10 +24498 : 10 +24499 : 11 +24500 : 11 +24501 : 12 +24502 : 12 +24503 : 13 +24504 : 13 +24505 : 14 +24506 : 14 +24507 : 15 +24508 : 15 +24509 : 16 +24510 : 16 +24511 : 16 +24512 : 16 +24513 : 15 +24514 : 16 +24515 : 16 +24516 : 17 +24517 : 17 +24518 : 18 +24519 : 18 +24520 : 19 +24521 : 19 +24522 : 18 +24523 : 18 +24524 : 17 +24525 : 17 +24526 : 16 +24527 : 16 +24528 : 15 +24529 : 15 +24530 : 14 +24531 : 14 +24532 : 13 +24533 : 13 +24534 : 12 +24535 : 12 +24536 : 11 +24537 : 11 +24538 : 10 +24539 : 10 +24540 : 9 +24541 : 9 +24542 : 8 +24543 : 8 +24544 : 7 +24545 : 7 +24546 : 6 +24547 : 8 +24548 : 7 +24549 : 8 +24550 : 8 +24551 : 9 +24552 : 9 +24553 : 10 +24554 : 9 +24555 : 9 +24556 : 8 +24557 : 8 +24558 : 7 +24559 : 7 +24560 : 6 +24561 : 6 +24562 : 5 +24563 : 5 +24564 : 4 +24565 : 4 +24566 : 3 +24567 : 4 +24568 : 4 +24569 : 5 +24570 : 5 +24571 : 4 +24572 : 4 +24573 : 3 +24574 : 3 +24575 : 2 +24576 : 0 +24577 : 0 +24578 : 417 +24579 : 0 +24580 : 2 +24581 : 1 +24582 : 1 +24583 : 0 +24584 : 1 +24585 : 1 +24586 : 2 +24587 : 2 +24588 : 3 +24589 : 3 +24590 : 4 +24591 : 4 +24592 : 5 +24593 : 5 +24594 : 6 +24595 : 6 +24596 : 7 +24597 : 7 +24598 : 8 +24599 : 8 +24600 : 9 +24601 : 9 +24602 : 10 +24603 : 10 +24604 : 11 +24605 : 11 +24606 : 12 +24607 : 12 +24608 : 13 +24609 : 13 +24610 : 14 +24611 : 14 +24612 : 15 +24613 : 15 +24614 : 16 +24615 : 16 +24616 : 16 +24617 : 15 +24618 : 16 +24619 : 16 +24620 : 17 +24621 : 17 +24622 : 18 +24623 : 18 +24624 : 19 +24625 : 19 +24626 : 18 +24627 : 18 +24628 : 17 +24629 : 17 +24630 : 16 +24631 : 16 +24632 : 15 +24633 : 15 +24634 : 14 +24635 : 14 +24636 : 13 +24637 : 13 +24638 : 12 +24639 : 12 +24640 : 11 +24641 : 11 +24642 : 10 +24643 : 10 +24644 : 9 +24645 : 9 +24646 : 8 +24647 : 8 +24648 : 7 +24649 : 7 +24650 : 6 +24651 : 8 +24652 : 7 +24653 : 8 +24654 : 8 +24655 : 9 +24656 : 9 +24657 : 10 +24658 : 9 +24659 : 9 +24660 : 8 +24661 : 8 +24662 : 7 +24663 : 7 +24664 : 6 +24665 : 6 +24666 : 5 +24667 : 5 +24668 : 4 +24669 : 4 +24670 : 3 +24671 : 4 +24672 : 4 +24673 : 5 +24674 : 5 +24675 : 4 +24676 : 4 +24677 : 3 +24678 : 3 +24679 : 2 +24680 : 0 +24681 : 0 +24682 : 417 +24683 : 0 +24684 : 3 +24685 : 2 +24686 : 1 +24687 : 1 +24688 : 0 +24689 : 1 +24690 : 1 +24691 : 2 +24692 : 2 +24693 : 3 +24694 : 3 +24695 : 4 +24696 : 4 +24697 : 5 +24698 : 5 +24699 : 6 +24700 : 6 +24701 : 7 +24702 : 7 +24703 : 8 +24704 : 8 +24705 : 9 +24706 : 9 +24707 : 10 +24708 : 10 +24709 : 11 +24710 : 11 +24711 : 12 +24712 : 12 +24713 : 13 +24714 : 13 +24715 : 14 +24716 : 14 +24717 : 15 +24718 : 15 +24719 : 16 +24720 : 16 +24721 : 16 +24722 : 17 +24723 : 17 +24724 : 18 +24725 : 18 +24726 : 19 +24727 : 19 +24728 : 20 +24729 : 20 +24730 : 19 +24731 : 19 +24732 : 18 +24733 : 18 +24734 : 17 +24735 : 17 +24736 : 16 +24737 : 16 +24738 : 15 +24739 : 15 +24740 : 14 +24741 : 14 +24742 : 13 +24743 : 13 +24744 : 12 +24745 : 12 +24746 : 11 +24747 : 11 +24748 : 10 +24749 : 10 +24750 : 9 +24751 : 9 +24752 : 8 +24753 : 8 +24754 : 7 +24755 : 9 +24756 : 8 +24757 : 9 +24758 : 9 +24759 : 10 +24760 : 10 +24761 : 11 +24762 : 10 +24763 : 10 +24764 : 9 +24765 : 9 +24766 : 8 +24767 : 8 +24768 : 7 +24769 : 7 +24770 : 6 +24771 : 6 +24772 : 5 +24773 : 5 +24774 : 4 +24775 : 5 +24776 : 5 +24777 : 6 +24778 : 6 +24779 : 5 +24780 : 5 +24781 : 4 +24782 : 4 +24783 : 3 +24784 : 0 +24785 : 0 +24786 : 417 +24787 : 0 +24788 : 3 +24789 : 2 +24790 : 2 +24791 : 1 +24792 : 1 +24793 : 0 +24794 : 1 +24795 : 1 +24796 : 2 +24797 : 2 +24798 : 3 +24799 : 3 +24800 : 4 +24801 : 4 +24802 : 5 +24803 : 5 +24804 : 6 +24805 : 6 +24806 : 7 +24807 : 7 +24808 : 8 +24809 : 8 +24810 : 9 +24811 : 9 +24812 : 10 +24813 : 10 +24814 : 11 +24815 : 11 +24816 : 12 +24817 : 12 +24818 : 13 +24819 : 13 +24820 : 14 +24821 : 14 +24822 : 15 +24823 : 15 +24824 : 16 +24825 : 16 +24826 : 17 +24827 : 17 +24828 : 18 +24829 : 18 +24830 : 19 +24831 : 19 +24832 : 20 +24833 : 20 +24834 : 19 +24835 : 19 +24836 : 18 +24837 : 18 +24838 : 17 +24839 : 17 +24840 : 16 +24841 : 16 +24842 : 15 +24843 : 15 +24844 : 14 +24845 : 14 +24846 : 13 +24847 : 13 +24848 : 12 +24849 : 12 +24850 : 11 +24851 : 11 +24852 : 10 +24853 : 10 +24854 : 9 +24855 : 9 +24856 : 8 +24857 : 8 +24858 : 7 +24859 : 9 +24860 : 8 +24861 : 9 +24862 : 9 +24863 : 10 +24864 : 10 +24865 : 11 +24866 : 10 +24867 : 10 +24868 : 9 +24869 : 9 +24870 : 8 +24871 : 8 +24872 : 7 +24873 : 7 +24874 : 6 +24875 : 6 +24876 : 5 +24877 : 5 +24878 : 4 +24879 : 5 +24880 : 5 +24881 : 6 +24882 : 6 +24883 : 5 +24884 : 5 +24885 : 4 +24886 : 4 +24887 : 3 +24888 : 0 +24889 : 0 +24890 : 417 +24891 : 0 +24892 : 4 +24893 : 3 +24894 : 2 +24895 : 2 +24896 : 1 +24897 : 1 +24898 : 0 +24899 : 1 +24900 : 1 +24901 : 2 +24902 : 2 +24903 : 3 +24904 : 3 +24905 : 4 +24906 : 4 +24907 : 5 +24908 : 5 +24909 : 6 +24910 : 6 +24911 : 7 +24912 : 7 +24913 : 8 +24914 : 8 +24915 : 9 +24916 : 9 +24917 : 10 +24918 : 10 +24919 : 11 +24920 : 11 +24921 : 12 +24922 : 12 +24923 : 13 +24924 : 13 +24925 : 14 +24926 : 14 +24927 : 15 +24928 : 15 +24929 : 16 +24930 : 16 +24931 : 17 +24932 : 17 +24933 : 18 +24934 : 18 +24935 : 19 +24936 : 19 +24937 : 20 +24938 : 20 +24939 : 20 +24940 : 19 +24941 : 19 +24942 : 18 +24943 : 18 +24944 : 17 +24945 : 17 +24946 : 16 +24947 : 16 +24948 : 15 +24949 : 15 +24950 : 14 +24951 : 14 +24952 : 13 +24953 : 13 +24954 : 12 +24955 : 12 +24956 : 11 +24957 : 11 +24958 : 10 +24959 : 10 +24960 : 9 +24961 : 9 +24962 : 8 +24963 : 10 +24964 : 9 +24965 : 10 +24966 : 10 +24967 : 11 +24968 : 11 +24969 : 12 +24970 : 11 +24971 : 11 +24972 : 10 +24973 : 10 +24974 : 9 +24975 : 9 +24976 : 8 +24977 : 8 +24978 : 7 +24979 : 7 +24980 : 6 +24981 : 6 +24982 : 5 +24983 : 6 +24984 : 6 +24985 : 7 +24986 : 7 +24987 : 6 +24988 : 6 +24989 : 5 +24990 : 5 +24991 : 4 +24992 : 0 +24993 : 0 +24994 : 417 +24995 : 0 +24996 : 4 +24997 : 3 +24998 : 3 +24999 : 2 +25000 : 2 +25001 : 1 +25002 : 1 +25003 : 0 +25004 : 1 +25005 : 1 +25006 : 2 +25007 : 2 +25008 : 3 +25009 : 3 +25010 : 4 +25011 : 4 +25012 : 5 +25013 : 5 +25014 : 6 +25015 : 6 +25016 : 7 +25017 : 7 +25018 : 8 +25019 : 8 +25020 : 9 +25021 : 9 +25022 : 10 +25023 : 10 +25024 : 11 +25025 : 11 +25026 : 12 +25027 : 12 +25028 : 13 +25029 : 13 +25030 : 14 +25031 : 14 +25032 : 15 +25033 : 15 +25034 : 16 +25035 : 16 +25036 : 17 +25037 : 17 +25038 : 18 +25039 : 18 +25040 : 19 +25041 : 19 +25042 : 20 +25043 : 20 +25044 : 19 +25045 : 19 +25046 : 18 +25047 : 18 +25048 : 17 +25049 : 17 +25050 : 16 +25051 : 16 +25052 : 15 +25053 : 15 +25054 : 14 +25055 : 14 +25056 : 13 +25057 : 13 +25058 : 12 +25059 : 12 +25060 : 11 +25061 : 11 +25062 : 10 +25063 : 10 +25064 : 9 +25065 : 9 +25066 : 8 +25067 : 10 +25068 : 9 +25069 : 10 +25070 : 10 +25071 : 11 +25072 : 11 +25073 : 12 +25074 : 11 +25075 : 11 +25076 : 10 +25077 : 10 +25078 : 9 +25079 : 9 +25080 : 8 +25081 : 8 +25082 : 7 +25083 : 7 +25084 : 6 +25085 : 6 +25086 : 5 +25087 : 6 +25088 : 6 +25089 : 7 +25090 : 7 +25091 : 6 +25092 : 6 +25093 : 5 +25094 : 5 +25095 : 4 +25096 : 0 +25097 : 0 +25098 : 417 +25099 : 0 +25100 : 5 +25101 : 4 +25102 : 3 +25103 : 3 +25104 : 2 +25105 : 2 +25106 : 1 +25107 : 1 +25108 : 0 +25109 : 1 +25110 : 1 +25111 : 2 +25112 : 2 +25113 : 3 +25114 : 3 +25115 : 4 +25116 : 4 +25117 : 5 +25118 : 5 +25119 : 6 +25120 : 6 +25121 : 7 +25122 : 7 +25123 : 8 +25124 : 8 +25125 : 9 +25126 : 9 +25127 : 10 +25128 : 10 +25129 : 11 +25130 : 11 +25131 : 12 +25132 : 12 +25133 : 13 +25134 : 13 +25135 : 14 +25136 : 14 +25137 : 15 +25138 : 15 +25139 : 16 +25140 : 16 +25141 : 17 +25142 : 17 +25143 : 18 +25144 : 18 +25145 : 19 +25146 : 19 +25147 : 20 +25148 : 20 +25149 : 19 +25150 : 19 +25151 : 18 +25152 : 18 +25153 : 17 +25154 : 17 +25155 : 16 +25156 : 16 +25157 : 16 +25158 : 15 +25159 : 15 +25160 : 14 +25161 : 14 +25162 : 13 +25163 : 13 +25164 : 12 +25165 : 12 +25166 : 11 +25167 : 11 +25168 : 10 +25169 : 10 +25170 : 9 +25171 : 11 +25172 : 10 +25173 : 11 +25174 : 11 +25175 : 12 +25176 : 12 +25177 : 13 +25178 : 12 +25179 : 12 +25180 : 11 +25181 : 11 +25182 : 10 +25183 : 10 +25184 : 9 +25185 : 9 +25186 : 8 +25187 : 8 +25188 : 7 +25189 : 7 +25190 : 6 +25191 : 7 +25192 : 7 +25193 : 8 +25194 : 8 +25195 : 7 +25196 : 7 +25197 : 6 +25198 : 6 +25199 : 5 +25200 : 0 +25201 : 0 +25202 : 417 +25203 : 0 +25204 : 5 +25205 : 4 +25206 : 4 +25207 : 3 +25208 : 3 +25209 : 2 +25210 : 2 +25211 : 1 +25212 : 1 +25213 : 0 +25214 : 1 +25215 : 1 +25216 : 2 +25217 : 2 +25218 : 3 +25219 : 3 +25220 : 4 +25221 : 4 +25222 : 5 +25223 : 5 +25224 : 6 +25225 : 6 +25226 : 7 +25227 : 7 +25228 : 8 +25229 : 8 +25230 : 9 +25231 : 9 +25232 : 10 +25233 : 10 +25234 : 11 +25235 : 11 +25236 : 12 +25237 : 12 +25238 : 13 +25239 : 13 +25240 : 14 +25241 : 14 +25242 : 15 +25243 : 15 +25244 : 16 +25245 : 16 +25246 : 17 +25247 : 17 +25248 : 18 +25249 : 18 +25250 : 19 +25251 : 19 +25252 : 19 +25253 : 18 +25254 : 18 +25255 : 17 +25256 : 17 +25257 : 16 +25258 : 16 +25259 : 15 +25260 : 16 +25261 : 16 +25262 : 15 +25263 : 15 +25264 : 14 +25265 : 14 +25266 : 13 +25267 : 13 +25268 : 12 +25269 : 12 +25270 : 11 +25271 : 11 +25272 : 10 +25273 : 10 +25274 : 9 +25275 : 11 +25276 : 10 +25277 : 11 +25278 : 11 +25279 : 12 +25280 : 12 +25281 : 13 +25282 : 12 +25283 : 12 +25284 : 11 +25285 : 11 +25286 : 10 +25287 : 10 +25288 : 9 +25289 : 9 +25290 : 8 +25291 : 8 +25292 : 7 +25293 : 7 +25294 : 6 +25295 : 7 +25296 : 7 +25297 : 8 +25298 : 8 +25299 : 7 +25300 : 7 +25301 : 6 +25302 : 6 +25303 : 5 +25304 : 0 +25305 : 0 +25306 : 417 +25307 : 0 +25308 : 6 +25309 : 5 +25310 : 4 +25311 : 4 +25312 : 3 +25313 : 3 +25314 : 2 +25315 : 2 +25316 : 1 +25317 : 1 +25318 : 0 +25319 : 1 +25320 : 1 +25321 : 2 +25322 : 2 +25323 : 3 +25324 : 3 +25325 : 4 +25326 : 4 +25327 : 5 +25328 : 5 +25329 : 6 +25330 : 6 +25331 : 7 +25332 : 7 +25333 : 8 +25334 : 8 +25335 : 9 +25336 : 9 +25337 : 10 +25338 : 10 +25339 : 11 +25340 : 11 +25341 : 12 +25342 : 12 +25343 : 13 +25344 : 13 +25345 : 14 +25346 : 14 +25347 : 15 +25348 : 15 +25349 : 16 +25350 : 16 +25351 : 17 +25352 : 17 +25353 : 18 +25354 : 18 +25355 : 19 +25356 : 19 +25357 : 18 +25358 : 18 +25359 : 17 +25360 : 17 +25361 : 16 +25362 : 16 +25363 : 15 +25364 : 17 +25365 : 16 +25366 : 16 +25367 : 16 +25368 : 15 +25369 : 15 +25370 : 14 +25371 : 14 +25372 : 13 +25373 : 13 +25374 : 12 +25375 : 12 +25376 : 11 +25377 : 11 +25378 : 10 +25379 : 12 +25380 : 11 +25381 : 12 +25382 : 12 +25383 : 13 +25384 : 13 +25385 : 14 +25386 : 13 +25387 : 13 +25388 : 12 +25389 : 12 +25390 : 11 +25391 : 11 +25392 : 10 +25393 : 10 +25394 : 9 +25395 : 9 +25396 : 8 +25397 : 8 +25398 : 7 +25399 : 8 +25400 : 8 +25401 : 9 +25402 : 9 +25403 : 8 +25404 : 8 +25405 : 7 +25406 : 7 +25407 : 6 +25408 : 0 +25409 : 0 +25410 : 417 +25411 : 0 +25412 : 6 +25413 : 5 +25414 : 5 +25415 : 4 +25416 : 4 +25417 : 3 +25418 : 3 +25419 : 2 +25420 : 2 +25421 : 1 +25422 : 1 +25423 : 0 +25424 : 1 +25425 : 1 +25426 : 2 +25427 : 2 +25428 : 3 +25429 : 3 +25430 : 4 +25431 : 4 +25432 : 5 +25433 : 5 +25434 : 6 +25435 : 6 +25436 : 7 +25437 : 7 +25438 : 8 +25439 : 8 +25440 : 9 +25441 : 9 +25442 : 10 +25443 : 10 +25444 : 11 +25445 : 11 +25446 : 12 +25447 : 12 +25448 : 13 +25449 : 13 +25450 : 14 +25451 : 14 +25452 : 15 +25453 : 15 +25454 : 16 +25455 : 16 +25456 : 17 +25457 : 17 +25458 : 18 +25459 : 18 +25460 : 18 +25461 : 17 +25462 : 17 +25463 : 16 +25464 : 16 +25465 : 15 +25466 : 15 +25467 : 14 +25468 : 16 +25469 : 15 +25470 : 16 +25471 : 16 +25472 : 15 +25473 : 15 +25474 : 14 +25475 : 14 +25476 : 13 +25477 : 13 +25478 : 12 +25479 : 12 +25480 : 11 +25481 : 11 +25482 : 10 +25483 : 12 +25484 : 11 +25485 : 12 +25486 : 12 +25487 : 13 +25488 : 13 +25489 : 14 +25490 : 13 +25491 : 13 +25492 : 12 +25493 : 12 +25494 : 11 +25495 : 11 +25496 : 10 +25497 : 10 +25498 : 9 +25499 : 9 +25500 : 8 +25501 : 8 +25502 : 7 +25503 : 8 +25504 : 8 +25505 : 9 +25506 : 9 +25507 : 8 +25508 : 8 +25509 : 7 +25510 : 7 +25511 : 6 +25512 : 0 +25513 : 0 +25514 : 417 +25515 : 0 +25516 : 7 +25517 : 6 +25518 : 5 +25519 : 5 +25520 : 4 +25521 : 4 +25522 : 3 +25523 : 3 +25524 : 2 +25525 : 2 +25526 : 1 +25527 : 1 +25528 : 0 +25529 : 1 +25530 : 1 +25531 : 2 +25532 : 2 +25533 : 3 +25534 : 3 +25535 : 4 +25536 : 4 +25537 : 5 +25538 : 5 +25539 : 6 +25540 : 6 +25541 : 7 +25542 : 7 +25543 : 8 +25544 : 8 +25545 : 9 +25546 : 9 +25547 : 10 +25548 : 10 +25549 : 11 +25550 : 11 +25551 : 12 +25552 : 12 +25553 : 13 +25554 : 13 +25555 : 14 +25556 : 14 +25557 : 15 +25558 : 15 +25559 : 16 +25560 : 16 +25561 : 17 +25562 : 17 +25563 : 18 +25564 : 18 +25565 : 17 +25566 : 17 +25567 : 16 +25568 : 16 +25569 : 15 +25570 : 15 +25571 : 14 +25572 : 16 +25573 : 15 +25574 : 16 +25575 : 16 +25576 : 16 +25577 : 16 +25578 : 15 +25579 : 15 +25580 : 14 +25581 : 14 +25582 : 13 +25583 : 13 +25584 : 12 +25585 : 12 +25586 : 11 +25587 : 13 +25588 : 12 +25589 : 13 +25590 : 13 +25591 : 14 +25592 : 14 +25593 : 15 +25594 : 14 +25595 : 14 +25596 : 13 +25597 : 13 +25598 : 12 +25599 : 12 +25600 : 11 +25601 : 11 +25602 : 10 +25603 : 10 +25604 : 9 +25605 : 9 +25606 : 8 +25607 : 9 +25608 : 9 +25609 : 10 +25610 : 10 +25611 : 9 +25612 : 9 +25613 : 8 +25614 : 8 +25615 : 7 +25616 : 0 +25617 : 0 +25618 : 417 +25619 : 0 +25620 : 7 +25621 : 6 +25622 : 6 +25623 : 5 +25624 : 5 +25625 : 4 +25626 : 4 +25627 : 3 +25628 : 3 +25629 : 2 +25630 : 2 +25631 : 1 +25632 : 1 +25633 : 0 +25634 : 1 +25635 : 1 +25636 : 2 +25637 : 2 +25638 : 3 +25639 : 3 +25640 : 4 +25641 : 4 +25642 : 5 +25643 : 5 +25644 : 6 +25645 : 6 +25646 : 7 +25647 : 7 +25648 : 8 +25649 : 8 +25650 : 9 +25651 : 9 +25652 : 10 +25653 : 10 +25654 : 11 +25655 : 11 +25656 : 12 +25657 : 12 +25658 : 13 +25659 : 13 +25660 : 14 +25661 : 14 +25662 : 15 +25663 : 15 +25664 : 16 +25665 : 16 +25666 : 17 +25667 : 17 +25668 : 17 +25669 : 16 +25670 : 16 +25671 : 15 +25672 : 15 +25673 : 14 +25674 : 14 +25675 : 13 +25676 : 15 +25677 : 14 +25678 : 15 +25679 : 15 +25680 : 16 +25681 : 16 +25682 : 15 +25683 : 15 +25684 : 14 +25685 : 14 +25686 : 13 +25687 : 13 +25688 : 12 +25689 : 12 +25690 : 11 +25691 : 13 +25692 : 12 +25693 : 13 +25694 : 13 +25695 : 14 +25696 : 14 +25697 : 15 +25698 : 14 +25699 : 14 +25700 : 13 +25701 : 13 +25702 : 12 +25703 : 12 +25704 : 11 +25705 : 11 +25706 : 10 +25707 : 10 +25708 : 9 +25709 : 9 +25710 : 8 +25711 : 9 +25712 : 9 +25713 : 10 +25714 : 10 +25715 : 9 +25716 : 9 +25717 : 8 +25718 : 8 +25719 : 7 +25720 : 0 +25721 : 0 +25722 : 417 +25723 : 0 +25724 : 8 +25725 : 7 +25726 : 6 +25727 : 6 +25728 : 5 +25729 : 5 +25730 : 4 +25731 : 4 +25732 : 3 +25733 : 3 +25734 : 2 +25735 : 2 +25736 : 1 +25737 : 1 +25738 : 0 +25739 : 1 +25740 : 1 +25741 : 2 +25742 : 2 +25743 : 3 +25744 : 3 +25745 : 4 +25746 : 4 +25747 : 5 +25748 : 5 +25749 : 6 +25750 : 6 +25751 : 7 +25752 : 7 +25753 : 8 +25754 : 8 +25755 : 9 +25756 : 9 +25757 : 10 +25758 : 10 +25759 : 11 +25760 : 11 +25761 : 12 +25762 : 12 +25763 : 13 +25764 : 13 +25765 : 14 +25766 : 14 +25767 : 15 +25768 : 15 +25769 : 16 +25770 : 16 +25771 : 17 +25772 : 17 +25773 : 16 +25774 : 16 +25775 : 15 +25776 : 15 +25777 : 14 +25778 : 14 +25779 : 13 +25780 : 15 +25781 : 14 +25782 : 15 +25783 : 15 +25784 : 16 +25785 : 16 +25786 : 16 +25787 : 16 +25788 : 15 +25789 : 15 +25790 : 14 +25791 : 14 +25792 : 13 +25793 : 13 +25794 : 12 +25795 : 14 +25796 : 13 +25797 : 14 +25798 : 14 +25799 : 15 +25800 : 15 +25801 : 16 +25802 : 15 +25803 : 15 +25804 : 14 +25805 : 14 +25806 : 13 +25807 : 13 +25808 : 12 +25809 : 12 +25810 : 11 +25811 : 11 +25812 : 10 +25813 : 10 +25814 : 9 +25815 : 10 +25816 : 10 +25817 : 11 +25818 : 11 +25819 : 10 +25820 : 10 +25821 : 9 +25822 : 9 +25823 : 8 +25824 : 0 +25825 : 0 +25826 : 417 +25827 : 0 +25828 : 8 +25829 : 7 +25830 : 7 +25831 : 6 +25832 : 6 +25833 : 5 +25834 : 5 +25835 : 4 +25836 : 4 +25837 : 3 +25838 : 3 +25839 : 2 +25840 : 2 +25841 : 1 +25842 : 1 +25843 : 0 +25844 : 1 +25845 : 1 +25846 : 2 +25847 : 2 +25848 : 3 +25849 : 3 +25850 : 4 +25851 : 4 +25852 : 5 +25853 : 5 +25854 : 6 +25855 : 6 +25856 : 7 +25857 : 7 +25858 : 8 +25859 : 8 +25860 : 9 +25861 : 9 +25862 : 10 +25863 : 10 +25864 : 11 +25865 : 11 +25866 : 12 +25867 : 12 +25868 : 13 +25869 : 13 +25870 : 14 +25871 : 14 +25872 : 15 +25873 : 15 +25874 : 16 +25875 : 16 +25876 : 16 +25877 : 15 +25878 : 15 +25879 : 14 +25880 : 14 +25881 : 13 +25882 : 13 +25883 : 12 +25884 : 14 +25885 : 13 +25886 : 14 +25887 : 14 +25888 : 15 +25889 : 15 +25890 : 16 +25891 : 16 +25892 : 15 +25893 : 15 +25894 : 14 +25895 : 14 +25896 : 13 +25897 : 13 +25898 : 12 +25899 : 14 +25900 : 13 +25901 : 14 +25902 : 14 +25903 : 15 +25904 : 15 +25905 : 16 +25906 : 15 +25907 : 15 +25908 : 14 +25909 : 14 +25910 : 13 +25911 : 13 +25912 : 12 +25913 : 12 +25914 : 11 +25915 : 11 +25916 : 10 +25917 : 10 +25918 : 9 +25919 : 10 +25920 : 10 +25921 : 11 +25922 : 11 +25923 : 10 +25924 : 10 +25925 : 9 +25926 : 9 +25927 : 8 +25928 : 0 +25929 : 0 +25930 : 417 +25931 : 0 +25932 : 9 +25933 : 8 +25934 : 7 +25935 : 7 +25936 : 6 +25937 : 6 +25938 : 5 +25939 : 5 +25940 : 4 +25941 : 4 +25942 : 3 +25943 : 3 +25944 : 2 +25945 : 2 +25946 : 1 +25947 : 1 +25948 : 0 +25949 : 1 +25950 : 1 +25951 : 2 +25952 : 2 +25953 : 3 +25954 : 3 +25955 : 4 +25956 : 4 +25957 : 5 +25958 : 5 +25959 : 6 +25960 : 6 +25961 : 7 +25962 : 7 +25963 : 8 +25964 : 8 +25965 : 9 +25966 : 9 +25967 : 10 +25968 : 10 +25969 : 11 +25970 : 11 +25971 : 12 +25972 : 12 +25973 : 13 +25974 : 13 +25975 : 14 +25976 : 14 +25977 : 15 +25978 : 15 +25979 : 16 +25980 : 16 +25981 : 15 +25982 : 15 +25983 : 14 +25984 : 14 +25985 : 13 +25986 : 13 +25987 : 12 +25988 : 14 +25989 : 13 +25990 : 14 +25991 : 14 +25992 : 15 +25993 : 15 +25994 : 16 +25995 : 16 +25996 : 16 +25997 : 16 +25998 : 15 +25999 : 15 +26000 : 14 +26001 : 14 +26002 : 13 +26003 : 15 +26004 : 14 +26005 : 15 +26006 : 15 +26007 : 16 +26008 : 16 +26009 : 17 +26010 : 16 +26011 : 16 +26012 : 15 +26013 : 15 +26014 : 14 +26015 : 14 +26016 : 13 +26017 : 13 +26018 : 12 +26019 : 12 +26020 : 11 +26021 : 11 +26022 : 10 +26023 : 11 +26024 : 11 +26025 : 12 +26026 : 12 +26027 : 11 +26028 : 11 +26029 : 10 +26030 : 10 +26031 : 9 +26032 : 0 +26033 : 0 +26034 : 417 +26035 : 0 +26036 : 9 +26037 : 8 +26038 : 8 +26039 : 7 +26040 : 7 +26041 : 6 +26042 : 6 +26043 : 5 +26044 : 5 +26045 : 4 +26046 : 4 +26047 : 3 +26048 : 3 +26049 : 2 +26050 : 2 +26051 : 1 +26052 : 1 +26053 : 0 +26054 : 1 +26055 : 1 +26056 : 2 +26057 : 2 +26058 : 3 +26059 : 3 +26060 : 4 +26061 : 4 +26062 : 5 +26063 : 5 +26064 : 6 +26065 : 6 +26066 : 7 +26067 : 7 +26068 : 8 +26069 : 8 +26070 : 9 +26071 : 9 +26072 : 10 +26073 : 10 +26074 : 11 +26075 : 11 +26076 : 12 +26077 : 12 +26078 : 13 +26079 : 13 +26080 : 14 +26081 : 14 +26082 : 15 +26083 : 15 +26084 : 15 +26085 : 14 +26086 : 14 +26087 : 13 +26088 : 13 +26089 : 12 +26090 : 12 +26091 : 11 +26092 : 13 +26093 : 12 +26094 : 13 +26095 : 13 +26096 : 14 +26097 : 14 +26098 : 15 +26099 : 15 +26100 : 16 +26101 : 16 +26102 : 15 +26103 : 15 +26104 : 14 +26105 : 14 +26106 : 13 +26107 : 15 +26108 : 14 +26109 : 15 +26110 : 15 +26111 : 16 +26112 : 16 +26113 : 17 +26114 : 16 +26115 : 16 +26116 : 15 +26117 : 15 +26118 : 14 +26119 : 14 +26120 : 13 +26121 : 13 +26122 : 12 +26123 : 12 +26124 : 11 +26125 : 11 +26126 : 10 +26127 : 11 +26128 : 11 +26129 : 12 +26130 : 12 +26131 : 11 +26132 : 11 +26133 : 10 +26134 : 10 +26135 : 9 +26136 : 0 +26137 : 0 +26138 : 417 +26139 : 0 +26140 : 10 +26141 : 9 +26142 : 8 +26143 : 8 +26144 : 7 +26145 : 7 +26146 : 6 +26147 : 6 +26148 : 5 +26149 : 5 +26150 : 4 +26151 : 4 +26152 : 3 +26153 : 3 +26154 : 2 +26155 : 2 +26156 : 1 +26157 : 1 +26158 : 0 +26159 : 1 +26160 : 1 +26161 : 2 +26162 : 2 +26163 : 3 +26164 : 3 +26165 : 4 +26166 : 4 +26167 : 5 +26168 : 5 +26169 : 6 +26170 : 6 +26171 : 7 +26172 : 7 +26173 : 8 +26174 : 8 +26175 : 9 +26176 : 9 +26177 : 10 +26178 : 10 +26179 : 11 +26180 : 11 +26181 : 12 +26182 : 12 +26183 : 13 +26184 : 13 +26185 : 14 +26186 : 14 +26187 : 15 +26188 : 15 +26189 : 14 +26190 : 14 +26191 : 13 +26192 : 13 +26193 : 12 +26194 : 12 +26195 : 11 +26196 : 13 +26197 : 12 +26198 : 13 +26199 : 13 +26200 : 14 +26201 : 14 +26202 : 15 +26203 : 15 +26204 : 16 +26205 : 16 +26206 : 16 +26207 : 16 +26208 : 15 +26209 : 15 +26210 : 14 +26211 : 16 +26212 : 15 +26213 : 16 +26214 : 16 +26215 : 17 +26216 : 17 +26217 : 18 +26218 : 17 +26219 : 17 +26220 : 16 +26221 : 16 +26222 : 15 +26223 : 15 +26224 : 14 +26225 : 14 +26226 : 13 +26227 : 13 +26228 : 12 +26229 : 12 +26230 : 11 +26231 : 12 +26232 : 12 +26233 : 13 +26234 : 13 +26235 : 12 +26236 : 12 +26237 : 11 +26238 : 11 +26239 : 10 +26240 : 0 +26241 : 0 +26242 : 417 +26243 : 0 +26244 : 10 +26245 : 9 +26246 : 9 +26247 : 8 +26248 : 8 +26249 : 7 +26250 : 7 +26251 : 6 +26252 : 6 +26253 : 5 +26254 : 5 +26255 : 4 +26256 : 4 +26257 : 3 +26258 : 3 +26259 : 2 +26260 : 2 +26261 : 1 +26262 : 1 +26263 : 0 +26264 : 1 +26265 : 1 +26266 : 2 +26267 : 2 +26268 : 3 +26269 : 3 +26270 : 4 +26271 : 4 +26272 : 5 +26273 : 5 +26274 : 6 +26275 : 6 +26276 : 7 +26277 : 7 +26278 : 8 +26279 : 8 +26280 : 9 +26281 : 9 +26282 : 10 +26283 : 10 +26284 : 11 +26285 : 11 +26286 : 12 +26287 : 12 +26288 : 13 +26289 : 13 +26290 : 14 +26291 : 14 +26292 : 14 +26293 : 13 +26294 : 13 +26295 : 12 +26296 : 12 +26297 : 11 +26298 : 11 +26299 : 10 +26300 : 12 +26301 : 11 +26302 : 12 +26303 : 12 +26304 : 13 +26305 : 13 +26306 : 14 +26307 : 14 +26308 : 15 +26309 : 15 +26310 : 16 +26311 : 16 +26312 : 15 +26313 : 15 +26314 : 14 +26315 : 16 +26316 : 15 +26317 : 16 +26318 : 16 +26319 : 17 +26320 : 17 +26321 : 18 +26322 : 17 +26323 : 17 +26324 : 16 +26325 : 16 +26326 : 15 +26327 : 15 +26328 : 14 +26329 : 14 +26330 : 13 +26331 : 13 +26332 : 12 +26333 : 12 +26334 : 11 +26335 : 12 +26336 : 12 +26337 : 13 +26338 : 13 +26339 : 12 +26340 : 12 +26341 : 11 +26342 : 11 +26343 : 10 +26344 : 0 +26345 : 0 +26346 : 417 +26347 : 0 +26348 : 11 +26349 : 10 +26350 : 9 +26351 : 9 +26352 : 8 +26353 : 8 +26354 : 7 +26355 : 7 +26356 : 6 +26357 : 6 +26358 : 5 +26359 : 5 +26360 : 4 +26361 : 4 +26362 : 3 +26363 : 3 +26364 : 2 +26365 : 2 +26366 : 1 +26367 : 1 +26368 : 0 +26369 : 1 +26370 : 1 +26371 : 2 +26372 : 2 +26373 : 3 +26374 : 3 +26375 : 4 +26376 : 4 +26377 : 5 +26378 : 5 +26379 : 6 +26380 : 6 +26381 : 7 +26382 : 7 +26383 : 8 +26384 : 8 +26385 : 9 +26386 : 9 +26387 : 10 +26388 : 10 +26389 : 11 +26390 : 11 +26391 : 12 +26392 : 12 +26393 : 13 +26394 : 13 +26395 : 14 +26396 : 14 +26397 : 13 +26398 : 13 +26399 : 12 +26400 : 12 +26401 : 11 +26402 : 11 +26403 : 10 +26404 : 12 +26405 : 11 +26406 : 12 +26407 : 12 +26408 : 13 +26409 : 13 +26410 : 14 +26411 : 14 +26412 : 15 +26413 : 15 +26414 : 16 +26415 : 16 +26416 : 16 +26417 : 16 +26418 : 15 +26419 : 17 +26420 : 16 +26421 : 17 +26422 : 17 +26423 : 18 +26424 : 18 +26425 : 19 +26426 : 18 +26427 : 18 +26428 : 17 +26429 : 17 +26430 : 16 +26431 : 16 +26432 : 15 +26433 : 15 +26434 : 14 +26435 : 14 +26436 : 13 +26437 : 13 +26438 : 12 +26439 : 13 +26440 : 13 +26441 : 14 +26442 : 14 +26443 : 13 +26444 : 13 +26445 : 12 +26446 : 12 +26447 : 11 +26448 : 0 +26449 : 0 +26450 : 417 +26451 : 0 +26452 : 11 +26453 : 10 +26454 : 10 +26455 : 9 +26456 : 9 +26457 : 8 +26458 : 8 +26459 : 7 +26460 : 7 +26461 : 6 +26462 : 6 +26463 : 5 +26464 : 5 +26465 : 4 +26466 : 4 +26467 : 3 +26468 : 3 +26469 : 2 +26470 : 2 +26471 : 1 +26472 : 1 +26473 : 0 +26474 : 1 +26475 : 1 +26476 : 2 +26477 : 2 +26478 : 3 +26479 : 3 +26480 : 4 +26481 : 4 +26482 : 5 +26483 : 5 +26484 : 6 +26485 : 6 +26486 : 7 +26487 : 7 +26488 : 8 +26489 : 8 +26490 : 9 +26491 : 9 +26492 : 10 +26493 : 10 +26494 : 11 +26495 : 11 +26496 : 12 +26497 : 12 +26498 : 13 +26499 : 13 +26500 : 13 +26501 : 12 +26502 : 12 +26503 : 11 +26504 : 11 +26505 : 10 +26506 : 10 +26507 : 9 +26508 : 11 +26509 : 10 +26510 : 11 +26511 : 11 +26512 : 12 +26513 : 12 +26514 : 13 +26515 : 13 +26516 : 14 +26517 : 14 +26518 : 15 +26519 : 15 +26520 : 16 +26521 : 16 +26522 : 15 +26523 : 17 +26524 : 16 +26525 : 17 +26526 : 17 +26527 : 18 +26528 : 18 +26529 : 19 +26530 : 18 +26531 : 18 +26532 : 17 +26533 : 17 +26534 : 16 +26535 : 16 +26536 : 15 +26537 : 15 +26538 : 14 +26539 : 14 +26540 : 13 +26541 : 13 +26542 : 12 +26543 : 13 +26544 : 13 +26545 : 14 +26546 : 14 +26547 : 13 +26548 : 13 +26549 : 12 +26550 : 12 +26551 : 11 +26552 : 0 +26553 : 0 +26554 : 417 +26555 : 0 +26556 : 12 +26557 : 11 +26558 : 10 +26559 : 10 +26560 : 9 +26561 : 9 +26562 : 8 +26563 : 8 +26564 : 7 +26565 : 7 +26566 : 6 +26567 : 6 +26568 : 5 +26569 : 5 +26570 : 4 +26571 : 4 +26572 : 3 +26573 : 3 +26574 : 2 +26575 : 2 +26576 : 1 +26577 : 1 +26578 : 0 +26579 : 1 +26580 : 1 +26581 : 2 +26582 : 2 +26583 : 3 +26584 : 3 +26585 : 4 +26586 : 4 +26587 : 5 +26588 : 5 +26589 : 6 +26590 : 6 +26591 : 7 +26592 : 7 +26593 : 8 +26594 : 8 +26595 : 9 +26596 : 9 +26597 : 10 +26598 : 10 +26599 : 11 +26600 : 11 +26601 : 12 +26602 : 12 +26603 : 13 +26604 : 13 +26605 : 12 +26606 : 12 +26607 : 11 +26608 : 11 +26609 : 10 +26610 : 10 +26611 : 9 +26612 : 11 +26613 : 10 +26614 : 11 +26615 : 11 +26616 : 12 +26617 : 12 +26618 : 13 +26619 : 13 +26620 : 14 +26621 : 14 +26622 : 15 +26623 : 15 +26624 : 16 +26625 : 16 +26626 : 16 +26627 : 17 +26628 : 17 +26629 : 18 +26630 : 18 +26631 : 19 +26632 : 19 +26633 : 20 +26634 : 19 +26635 : 19 +26636 : 18 +26637 : 18 +26638 : 17 +26639 : 17 +26640 : 16 +26641 : 16 +26642 : 15 +26643 : 15 +26644 : 14 +26645 : 14 +26646 : 13 +26647 : 14 +26648 : 14 +26649 : 15 +26650 : 15 +26651 : 14 +26652 : 14 +26653 : 13 +26654 : 13 +26655 : 12 +26656 : 0 +26657 : 0 +26658 : 417 +26659 : 0 +26660 : 12 +26661 : 11 +26662 : 11 +26663 : 10 +26664 : 10 +26665 : 9 +26666 : 9 +26667 : 8 +26668 : 8 +26669 : 7 +26670 : 7 +26671 : 6 +26672 : 6 +26673 : 5 +26674 : 5 +26675 : 4 +26676 : 4 +26677 : 3 +26678 : 3 +26679 : 2 +26680 : 2 +26681 : 1 +26682 : 1 +26683 : 0 +26684 : 1 +26685 : 1 +26686 : 2 +26687 : 2 +26688 : 3 +26689 : 3 +26690 : 4 +26691 : 4 +26692 : 5 +26693 : 5 +26694 : 6 +26695 : 6 +26696 : 7 +26697 : 7 +26698 : 8 +26699 : 8 +26700 : 9 +26701 : 9 +26702 : 10 +26703 : 10 +26704 : 11 +26705 : 11 +26706 : 12 +26707 : 12 +26708 : 12 +26709 : 11 +26710 : 11 +26711 : 10 +26712 : 10 +26713 : 9 +26714 : 9 +26715 : 8 +26716 : 10 +26717 : 9 +26718 : 10 +26719 : 10 +26720 : 11 +26721 : 11 +26722 : 12 +26723 : 12 +26724 : 13 +26725 : 13 +26726 : 14 +26727 : 14 +26728 : 15 +26729 : 15 +26730 : 16 +26731 : 16 +26732 : 17 +26733 : 17 +26734 : 18 +26735 : 18 +26736 : 19 +26737 : 19 +26738 : 19 +26739 : 19 +26740 : 18 +26741 : 18 +26742 : 17 +26743 : 17 +26744 : 16 +26745 : 16 +26746 : 15 +26747 : 15 +26748 : 14 +26749 : 14 +26750 : 13 +26751 : 14 +26752 : 14 +26753 : 15 +26754 : 15 +26755 : 14 +26756 : 14 +26757 : 13 +26758 : 13 +26759 : 12 +26760 : 0 +26761 : 0 +26762 : 417 +26763 : 0 +26764 : 13 +26765 : 12 +26766 : 11 +26767 : 11 +26768 : 10 +26769 : 10 +26770 : 9 +26771 : 9 +26772 : 8 +26773 : 8 +26774 : 7 +26775 : 7 +26776 : 6 +26777 : 6 +26778 : 5 +26779 : 5 +26780 : 4 +26781 : 4 +26782 : 3 +26783 : 3 +26784 : 2 +26785 : 2 +26786 : 1 +26787 : 1 +26788 : 0 +26789 : 1 +26790 : 1 +26791 : 2 +26792 : 2 +26793 : 3 +26794 : 3 +26795 : 4 +26796 : 4 +26797 : 5 +26798 : 5 +26799 : 6 +26800 : 6 +26801 : 7 +26802 : 7 +26803 : 8 +26804 : 8 +26805 : 9 +26806 : 9 +26807 : 10 +26808 : 10 +26809 : 11 +26810 : 11 +26811 : 12 +26812 : 12 +26813 : 11 +26814 : 11 +26815 : 10 +26816 : 10 +26817 : 9 +26818 : 9 +26819 : 8 +26820 : 10 +26821 : 9 +26822 : 10 +26823 : 10 +26824 : 11 +26825 : 11 +26826 : 12 +26827 : 12 +26828 : 13 +26829 : 13 +26830 : 14 +26831 : 14 +26832 : 15 +26833 : 15 +26834 : 16 +26835 : 16 +26836 : 17 +26837 : 17 +26838 : 18 +26839 : 18 +26840 : 19 +26841 : 19 +26842 : 20 +26843 : 20 +26844 : 19 +26845 : 19 +26846 : 18 +26847 : 18 +26848 : 17 +26849 : 17 +26850 : 16 +26851 : 16 +26852 : 15 +26853 : 15 +26854 : 14 +26855 : 15 +26856 : 15 +26857 : 16 +26858 : 16 +26859 : 15 +26860 : 15 +26861 : 14 +26862 : 14 +26863 : 13 +26864 : 0 +26865 : 0 +26866 : 417 +26867 : 0 +26868 : 13 +26869 : 12 +26870 : 12 +26871 : 11 +26872 : 11 +26873 : 10 +26874 : 10 +26875 : 9 +26876 : 9 +26877 : 8 +26878 : 8 +26879 : 7 +26880 : 7 +26881 : 6 +26882 : 6 +26883 : 5 +26884 : 5 +26885 : 4 +26886 : 4 +26887 : 3 +26888 : 3 +26889 : 2 +26890 : 2 +26891 : 1 +26892 : 1 +26893 : 0 +26894 : 1 +26895 : 1 +26896 : 2 +26897 : 2 +26898 : 3 +26899 : 3 +26900 : 4 +26901 : 4 +26902 : 5 +26903 : 5 +26904 : 6 +26905 : 6 +26906 : 7 +26907 : 7 +26908 : 8 +26909 : 8 +26910 : 9 +26911 : 9 +26912 : 10 +26913 : 10 +26914 : 11 +26915 : 11 +26916 : 11 +26917 : 10 +26918 : 10 +26919 : 9 +26920 : 9 +26921 : 8 +26922 : 8 +26923 : 7 +26924 : 9 +26925 : 8 +26926 : 9 +26927 : 9 +26928 : 10 +26929 : 10 +26930 : 11 +26931 : 11 +26932 : 12 +26933 : 12 +26934 : 13 +26935 : 13 +26936 : 14 +26937 : 14 +26938 : 15 +26939 : 15 +26940 : 16 +26941 : 16 +26942 : 17 +26943 : 17 +26944 : 18 +26945 : 18 +26946 : 19 +26947 : 19 +26948 : 19 +26949 : 19 +26950 : 18 +26951 : 18 +26952 : 17 +26953 : 17 +26954 : 16 +26955 : 16 +26956 : 15 +26957 : 15 +26958 : 14 +26959 : 15 +26960 : 15 +26961 : 16 +26962 : 16 +26963 : 15 +26964 : 15 +26965 : 14 +26966 : 14 +26967 : 13 +26968 : 0 +26969 : 0 +26970 : 417 +26971 : 0 +26972 : 14 +26973 : 13 +26974 : 12 +26975 : 12 +26976 : 11 +26977 : 11 +26978 : 10 +26979 : 10 +26980 : 9 +26981 : 9 +26982 : 8 +26983 : 8 +26984 : 7 +26985 : 7 +26986 : 6 +26987 : 6 +26988 : 5 +26989 : 5 +26990 : 4 +26991 : 4 +26992 : 3 +26993 : 3 +26994 : 2 +26995 : 2 +26996 : 1 +26997 : 1 +26998 : 0 +26999 : 1 +27000 : 1 +27001 : 2 +27002 : 2 +27003 : 3 +27004 : 3 +27005 : 4 +27006 : 4 +27007 : 5 +27008 : 5 +27009 : 6 +27010 : 6 +27011 : 7 +27012 : 7 +27013 : 8 +27014 : 8 +27015 : 9 +27016 : 9 +27017 : 10 +27018 : 10 +27019 : 11 +27020 : 11 +27021 : 10 +27022 : 10 +27023 : 9 +27024 : 9 +27025 : 8 +27026 : 8 +27027 : 7 +27028 : 9 +27029 : 8 +27030 : 9 +27031 : 9 +27032 : 10 +27033 : 10 +27034 : 11 +27035 : 11 +27036 : 12 +27037 : 12 +27038 : 13 +27039 : 13 +27040 : 14 +27041 : 14 +27042 : 15 +27043 : 15 +27044 : 16 +27045 : 16 +27046 : 17 +27047 : 17 +27048 : 18 +27049 : 18 +27050 : 19 +27051 : 19 +27052 : 19 +27053 : 19 +27054 : 18 +27055 : 18 +27056 : 17 +27057 : 17 +27058 : 16 +27059 : 17 +27060 : 16 +27061 : 16 +27062 : 15 +27063 : 16 +27064 : 16 +27065 : 17 +27066 : 17 +27067 : 16 +27068 : 16 +27069 : 15 +27070 : 15 +27071 : 14 +27072 : 0 +27073 : 0 +27074 : 417 +27075 : 0 +27076 : 14 +27077 : 13 +27078 : 13 +27079 : 12 +27080 : 12 +27081 : 11 +27082 : 11 +27083 : 10 +27084 : 10 +27085 : 9 +27086 : 9 +27087 : 8 +27088 : 8 +27089 : 7 +27090 : 7 +27091 : 6 +27092 : 6 +27093 : 5 +27094 : 5 +27095 : 4 +27096 : 4 +27097 : 3 +27098 : 3 +27099 : 2 +27100 : 2 +27101 : 1 +27102 : 1 +27103 : 0 +27104 : 1 +27105 : 1 +27106 : 2 +27107 : 2 +27108 : 3 +27109 : 3 +27110 : 4 +27111 : 4 +27112 : 5 +27113 : 5 +27114 : 6 +27115 : 6 +27116 : 7 +27117 : 7 +27118 : 8 +27119 : 8 +27120 : 9 +27121 : 9 +27122 : 10 +27123 : 10 +27124 : 10 +27125 : 9 +27126 : 9 +27127 : 8 +27128 : 8 +27129 : 7 +27130 : 7 +27131 : 6 +27132 : 8 +27133 : 7 +27134 : 8 +27135 : 8 +27136 : 9 +27137 : 9 +27138 : 10 +27139 : 10 +27140 : 11 +27141 : 11 +27142 : 12 +27143 : 12 +27144 : 13 +27145 : 13 +27146 : 14 +27147 : 14 +27148 : 15 +27149 : 15 +27150 : 16 +27151 : 16 +27152 : 17 +27153 : 17 +27154 : 18 +27155 : 18 +27156 : 18 +27157 : 18 +27158 : 17 +27159 : 17 +27160 : 16 +27161 : 16 +27162 : 15 +27163 : 16 +27164 : 16 +27165 : 16 +27166 : 15 +27167 : 16 +27168 : 16 +27169 : 17 +27170 : 17 +27171 : 16 +27172 : 16 +27173 : 15 +27174 : 15 +27175 : 14 +27176 : 0 +27177 : 0 +27178 : 417 +27179 : 0 +27180 : 15 +27181 : 14 +27182 : 13 +27183 : 13 +27184 : 12 +27185 : 12 +27186 : 11 +27187 : 11 +27188 : 10 +27189 : 10 +27190 : 9 +27191 : 9 +27192 : 8 +27193 : 8 +27194 : 7 +27195 : 7 +27196 : 6 +27197 : 6 +27198 : 5 +27199 : 5 +27200 : 4 +27201 : 4 +27202 : 3 +27203 : 3 +27204 : 2 +27205 : 2 +27206 : 1 +27207 : 1 +27208 : 0 +27209 : 1 +27210 : 1 +27211 : 2 +27212 : 2 +27213 : 3 +27214 : 3 +27215 : 4 +27216 : 4 +27217 : 5 +27218 : 5 +27219 : 6 +27220 : 6 +27221 : 7 +27222 : 7 +27223 : 8 +27224 : 8 +27225 : 9 +27226 : 9 +27227 : 10 +27228 : 10 +27229 : 9 +27230 : 9 +27231 : 8 +27232 : 8 +27233 : 7 +27234 : 7 +27235 : 6 +27236 : 8 +27237 : 7 +27238 : 8 +27239 : 8 +27240 : 9 +27241 : 9 +27242 : 10 +27243 : 10 +27244 : 11 +27245 : 11 +27246 : 12 +27247 : 12 +27248 : 13 +27249 : 13 +27250 : 14 +27251 : 14 +27252 : 15 +27253 : 15 +27254 : 16 +27255 : 16 +27256 : 17 +27257 : 17 +27258 : 18 +27259 : 18 +27260 : 18 +27261 : 18 +27262 : 17 +27263 : 17 +27264 : 16 +27265 : 16 +27266 : 15 +27267 : 16 +27268 : 16 +27269 : 17 +27270 : 16 +27271 : 17 +27272 : 17 +27273 : 18 +27274 : 18 +27275 : 17 +27276 : 17 +27277 : 16 +27278 : 16 +27279 : 15 +27280 : 0 +27281 : 0 +27282 : 417 +27283 : 0 +27284 : 15 +27285 : 14 +27286 : 14 +27287 : 13 +27288 : 13 +27289 : 12 +27290 : 12 +27291 : 11 +27292 : 11 +27293 : 10 +27294 : 10 +27295 : 9 +27296 : 9 +27297 : 8 +27298 : 8 +27299 : 7 +27300 : 7 +27301 : 6 +27302 : 6 +27303 : 5 +27304 : 5 +27305 : 4 +27306 : 4 +27307 : 3 +27308 : 3 +27309 : 2 +27310 : 2 +27311 : 1 +27312 : 1 +27313 : 0 +27314 : 1 +27315 : 1 +27316 : 2 +27317 : 2 +27318 : 3 +27319 : 3 +27320 : 4 +27321 : 4 +27322 : 5 +27323 : 5 +27324 : 6 +27325 : 6 +27326 : 7 +27327 : 7 +27328 : 8 +27329 : 8 +27330 : 9 +27331 : 9 +27332 : 9 +27333 : 8 +27334 : 8 +27335 : 7 +27336 : 7 +27337 : 6 +27338 : 6 +27339 : 5 +27340 : 7 +27341 : 6 +27342 : 7 +27343 : 7 +27344 : 8 +27345 : 8 +27346 : 9 +27347 : 9 +27348 : 10 +27349 : 10 +27350 : 11 +27351 : 11 +27352 : 12 +27353 : 12 +27354 : 13 +27355 : 13 +27356 : 14 +27357 : 14 +27358 : 15 +27359 : 15 +27360 : 16 +27361 : 16 +27362 : 17 +27363 : 17 +27364 : 17 +27365 : 17 +27366 : 16 +27367 : 16 +27368 : 15 +27369 : 15 +27370 : 14 +27371 : 15 +27372 : 15 +27373 : 16 +27374 : 16 +27375 : 17 +27376 : 17 +27377 : 18 +27378 : 18 +27379 : 17 +27380 : 17 +27381 : 16 +27382 : 16 +27383 : 15 +27384 : 0 +27385 : 0 +27386 : 417 +27387 : 0 +27388 : 16 +27389 : 15 +27390 : 14 +27391 : 14 +27392 : 13 +27393 : 13 +27394 : 12 +27395 : 12 +27396 : 11 +27397 : 11 +27398 : 10 +27399 : 10 +27400 : 9 +27401 : 9 +27402 : 8 +27403 : 8 +27404 : 7 +27405 : 7 +27406 : 6 +27407 : 6 +27408 : 5 +27409 : 5 +27410 : 4 +27411 : 4 +27412 : 3 +27413 : 3 +27414 : 2 +27415 : 2 +27416 : 1 +27417 : 1 +27418 : 0 +27419 : 1 +27420 : 1 +27421 : 2 +27422 : 2 +27423 : 3 +27424 : 3 +27425 : 4 +27426 : 4 +27427 : 5 +27428 : 5 +27429 : 6 +27430 : 6 +27431 : 7 +27432 : 7 +27433 : 8 +27434 : 8 +27435 : 9 +27436 : 9 +27437 : 8 +27438 : 8 +27439 : 7 +27440 : 7 +27441 : 6 +27442 : 6 +27443 : 5 +27444 : 7 +27445 : 6 +27446 : 7 +27447 : 7 +27448 : 8 +27449 : 8 +27450 : 9 +27451 : 9 +27452 : 10 +27453 : 10 +27454 : 11 +27455 : 11 +27456 : 12 +27457 : 12 +27458 : 13 +27459 : 13 +27460 : 14 +27461 : 14 +27462 : 15 +27463 : 15 +27464 : 16 +27465 : 16 +27466 : 17 +27467 : 17 +27468 : 17 +27469 : 17 +27470 : 16 +27471 : 16 +27472 : 15 +27473 : 15 +27474 : 14 +27475 : 15 +27476 : 15 +27477 : 16 +27478 : 16 +27479 : 17 +27480 : 17 +27481 : 18 +27482 : 18 +27483 : 18 +27484 : 18 +27485 : 17 +27486 : 17 +27487 : 16 +27488 : 0 +27489 : 0 +27490 : 417 +27491 : 0 +27492 : 16 +27493 : 15 +27494 : 15 +27495 : 14 +27496 : 14 +27497 : 13 +27498 : 13 +27499 : 12 +27500 : 12 +27501 : 11 +27502 : 11 +27503 : 10 +27504 : 10 +27505 : 9 +27506 : 9 +27507 : 8 +27508 : 8 +27509 : 7 +27510 : 7 +27511 : 6 +27512 : 6 +27513 : 5 +27514 : 5 +27515 : 4 +27516 : 4 +27517 : 3 +27518 : 3 +27519 : 2 +27520 : 2 +27521 : 1 +27522 : 1 +27523 : 0 +27524 : 1 +27525 : 1 +27526 : 2 +27527 : 2 +27528 : 3 +27529 : 3 +27530 : 4 +27531 : 4 +27532 : 5 +27533 : 5 +27534 : 6 +27535 : 6 +27536 : 7 +27537 : 7 +27538 : 8 +27539 : 8 +27540 : 8 +27541 : 7 +27542 : 7 +27543 : 6 +27544 : 6 +27545 : 5 +27546 : 5 +27547 : 4 +27548 : 6 +27549 : 5 +27550 : 6 +27551 : 6 +27552 : 7 +27553 : 7 +27554 : 8 +27555 : 8 +27556 : 9 +27557 : 9 +27558 : 10 +27559 : 10 +27560 : 11 +27561 : 11 +27562 : 12 +27563 : 12 +27564 : 13 +27565 : 13 +27566 : 14 +27567 : 14 +27568 : 15 +27569 : 15 +27570 : 16 +27571 : 16 +27572 : 16 +27573 : 16 +27574 : 15 +27575 : 15 +27576 : 14 +27577 : 14 +27578 : 13 +27579 : 14 +27580 : 14 +27581 : 15 +27582 : 15 +27583 : 16 +27584 : 16 +27585 : 17 +27586 : 17 +27587 : 18 +27588 : 18 +27589 : 17 +27590 : 17 +27591 : 16 +27592 : 0 +27593 : 0 +27594 : 417 +27595 : 0 +27596 : 16 +27597 : 16 +27598 : 15 +27599 : 15 +27600 : 14 +27601 : 14 +27602 : 13 +27603 : 13 +27604 : 12 +27605 : 12 +27606 : 11 +27607 : 11 +27608 : 10 +27609 : 10 +27610 : 9 +27611 : 9 +27612 : 8 +27613 : 8 +27614 : 7 +27615 : 7 +27616 : 6 +27617 : 6 +27618 : 5 +27619 : 5 +27620 : 4 +27621 : 4 +27622 : 3 +27623 : 3 +27624 : 2 +27625 : 2 +27626 : 1 +27627 : 1 +27628 : 0 +27629 : 1 +27630 : 1 +27631 : 2 +27632 : 2 +27633 : 3 +27634 : 3 +27635 : 4 +27636 : 4 +27637 : 5 +27638 : 5 +27639 : 6 +27640 : 6 +27641 : 7 +27642 : 7 +27643 : 8 +27644 : 8 +27645 : 7 +27646 : 7 +27647 : 6 +27648 : 6 +27649 : 5 +27650 : 5 +27651 : 4 +27652 : 6 +27653 : 5 +27654 : 6 +27655 : 6 +27656 : 7 +27657 : 7 +27658 : 8 +27659 : 8 +27660 : 9 +27661 : 9 +27662 : 10 +27663 : 10 +27664 : 11 +27665 : 11 +27666 : 12 +27667 : 12 +27668 : 13 +27669 : 13 +27670 : 14 +27671 : 14 +27672 : 15 +27673 : 15 +27674 : 16 +27675 : 16 +27676 : 16 +27677 : 16 +27678 : 15 +27679 : 15 +27680 : 14 +27681 : 14 +27682 : 13 +27683 : 14 +27684 : 14 +27685 : 15 +27686 : 15 +27687 : 16 +27688 : 16 +27689 : 17 +27690 : 17 +27691 : 18 +27692 : 18 +27693 : 18 +27694 : 17 +27695 : 17 +27696 : 0 +27697 : 0 +27698 : 417 +27699 : 0 +27700 : 15 +27701 : 16 +27702 : 16 +27703 : 15 +27704 : 15 +27705 : 14 +27706 : 14 +27707 : 13 +27708 : 13 +27709 : 12 +27710 : 12 +27711 : 11 +27712 : 11 +27713 : 10 +27714 : 10 +27715 : 9 +27716 : 9 +27717 : 8 +27718 : 8 +27719 : 7 +27720 : 7 +27721 : 6 +27722 : 6 +27723 : 5 +27724 : 5 +27725 : 4 +27726 : 4 +27727 : 3 +27728 : 3 +27729 : 2 +27730 : 2 +27731 : 1 +27732 : 1 +27733 : 0 +27734 : 1 +27735 : 1 +27736 : 2 +27737 : 2 +27738 : 3 +27739 : 3 +27740 : 4 +27741 : 4 +27742 : 5 +27743 : 5 +27744 : 6 +27745 : 6 +27746 : 7 +27747 : 7 +27748 : 7 +27749 : 6 +27750 : 6 +27751 : 5 +27752 : 5 +27753 : 4 +27754 : 4 +27755 : 3 +27756 : 5 +27757 : 4 +27758 : 5 +27759 : 5 +27760 : 6 +27761 : 6 +27762 : 7 +27763 : 7 +27764 : 8 +27765 : 8 +27766 : 9 +27767 : 9 +27768 : 10 +27769 : 10 +27770 : 11 +27771 : 11 +27772 : 12 +27773 : 12 +27774 : 13 +27775 : 13 +27776 : 14 +27777 : 14 +27778 : 15 +27779 : 15 +27780 : 15 +27781 : 15 +27782 : 14 +27783 : 14 +27784 : 13 +27785 : 13 +27786 : 12 +27787 : 13 +27788 : 13 +27789 : 14 +27790 : 14 +27791 : 15 +27792 : 15 +27793 : 16 +27794 : 16 +27795 : 17 +27796 : 17 +27797 : 17 +27798 : 16 +27799 : 16 +27800 : 0 +27801 : 0 +27802 : 417 +27803 : 0 +27804 : 15 +27805 : 16 +27806 : 16 +27807 : 16 +27808 : 15 +27809 : 15 +27810 : 14 +27811 : 14 +27812 : 13 +27813 : 13 +27814 : 12 +27815 : 12 +27816 : 11 +27817 : 11 +27818 : 10 +27819 : 10 +27820 : 9 +27821 : 9 +27822 : 8 +27823 : 8 +27824 : 7 +27825 : 7 +27826 : 6 +27827 : 6 +27828 : 5 +27829 : 5 +27830 : 4 +27831 : 4 +27832 : 3 +27833 : 3 +27834 : 2 +27835 : 2 +27836 : 1 +27837 : 1 +27838 : 0 +27839 : 1 +27840 : 1 +27841 : 2 +27842 : 2 +27843 : 3 +27844 : 3 +27845 : 4 +27846 : 4 +27847 : 5 +27848 : 5 +27849 : 6 +27850 : 6 +27851 : 7 +27852 : 7 +27853 : 6 +27854 : 6 +27855 : 5 +27856 : 5 +27857 : 4 +27858 : 4 +27859 : 3 +27860 : 5 +27861 : 4 +27862 : 5 +27863 : 5 +27864 : 6 +27865 : 6 +27866 : 7 +27867 : 7 +27868 : 8 +27869 : 8 +27870 : 9 +27871 : 9 +27872 : 10 +27873 : 10 +27874 : 11 +27875 : 11 +27876 : 12 +27877 : 12 +27878 : 13 +27879 : 13 +27880 : 14 +27881 : 14 +27882 : 15 +27883 : 15 +27884 : 15 +27885 : 15 +27886 : 14 +27887 : 14 +27888 : 13 +27889 : 13 +27890 : 12 +27891 : 13 +27892 : 13 +27893 : 14 +27894 : 14 +27895 : 15 +27896 : 15 +27897 : 16 +27898 : 16 +27899 : 17 +27900 : 17 +27901 : 17 +27902 : 16 +27903 : 16 +27904 : 0 +27905 : 0 +27906 : 417 +27907 : 0 +27908 : 14 +27909 : 15 +27910 : 16 +27911 : 16 +27912 : 16 +27913 : 15 +27914 : 15 +27915 : 14 +27916 : 14 +27917 : 13 +27918 : 13 +27919 : 12 +27920 : 12 +27921 : 11 +27922 : 11 +27923 : 10 +27924 : 10 +27925 : 9 +27926 : 9 +27927 : 8 +27928 : 8 +27929 : 7 +27930 : 7 +27931 : 6 +27932 : 6 +27933 : 5 +27934 : 5 +27935 : 4 +27936 : 4 +27937 : 3 +27938 : 3 +27939 : 2 +27940 : 2 +27941 : 1 +27942 : 1 +27943 : 0 +27944 : 1 +27945 : 1 +27946 : 2 +27947 : 2 +27948 : 3 +27949 : 3 +27950 : 4 +27951 : 4 +27952 : 5 +27953 : 5 +27954 : 6 +27955 : 6 +27956 : 6 +27957 : 5 +27958 : 5 +27959 : 4 +27960 : 4 +27961 : 3 +27962 : 3 +27963 : 2 +27964 : 4 +27965 : 3 +27966 : 4 +27967 : 4 +27968 : 5 +27969 : 5 +27970 : 6 +27971 : 6 +27972 : 7 +27973 : 7 +27974 : 8 +27975 : 8 +27976 : 9 +27977 : 9 +27978 : 10 +27979 : 10 +27980 : 11 +27981 : 11 +27982 : 12 +27983 : 12 +27984 : 13 +27985 : 13 +27986 : 14 +27987 : 14 +27988 : 14 +27989 : 14 +27990 : 13 +27991 : 13 +27992 : 12 +27993 : 12 +27994 : 11 +27995 : 12 +27996 : 12 +27997 : 13 +27998 : 13 +27999 : 14 +28000 : 14 +28001 : 15 +28002 : 15 +28003 : 16 +28004 : 16 +28005 : 16 +28006 : 15 +28007 : 15 +28008 : 0 +28009 : 0 +28010 : 417 +28011 : 0 +28012 : 14 +28013 : 15 +28014 : 16 +28015 : 16 +28016 : 16 +28017 : 16 +28018 : 15 +28019 : 15 +28020 : 14 +28021 : 14 +28022 : 13 +28023 : 13 +28024 : 12 +28025 : 12 +28026 : 11 +28027 : 11 +28028 : 10 +28029 : 10 +28030 : 9 +28031 : 9 +28032 : 8 +28033 : 8 +28034 : 7 +28035 : 7 +28036 : 6 +28037 : 6 +28038 : 5 +28039 : 5 +28040 : 4 +28041 : 4 +28042 : 3 +28043 : 3 +28044 : 2 +28045 : 2 +28046 : 1 +28047 : 1 +28048 : 0 +28049 : 1 +28050 : 1 +28051 : 2 +28052 : 2 +28053 : 3 +28054 : 3 +28055 : 4 +28056 : 4 +28057 : 5 +28058 : 5 +28059 : 6 +28060 : 6 +28061 : 5 +28062 : 5 +28063 : 4 +28064 : 4 +28065 : 3 +28066 : 3 +28067 : 2 +28068 : 4 +28069 : 3 +28070 : 4 +28071 : 4 +28072 : 5 +28073 : 5 +28074 : 6 +28075 : 6 +28076 : 7 +28077 : 7 +28078 : 8 +28079 : 8 +28080 : 9 +28081 : 9 +28082 : 10 +28083 : 10 +28084 : 11 +28085 : 11 +28086 : 12 +28087 : 12 +28088 : 13 +28089 : 13 +28090 : 14 +28091 : 14 +28092 : 14 +28093 : 14 +28094 : 13 +28095 : 13 +28096 : 12 +28097 : 12 +28098 : 11 +28099 : 12 +28100 : 12 +28101 : 13 +28102 : 13 +28103 : 14 +28104 : 14 +28105 : 15 +28106 : 15 +28107 : 16 +28108 : 16 +28109 : 16 +28110 : 15 +28111 : 15 +28112 : 0 +28113 : 0 +28114 : 417 +28115 : 0 +28116 : 13 +28117 : 14 +28118 : 15 +28119 : 15 +28120 : 16 +28121 : 16 +28122 : 16 +28123 : 15 +28124 : 15 +28125 : 14 +28126 : 14 +28127 : 13 +28128 : 13 +28129 : 12 +28130 : 12 +28131 : 11 +28132 : 11 +28133 : 10 +28134 : 10 +28135 : 9 +28136 : 9 +28137 : 8 +28138 : 8 +28139 : 7 +28140 : 7 +28141 : 6 +28142 : 6 +28143 : 5 +28144 : 5 +28145 : 4 +28146 : 4 +28147 : 3 +28148 : 3 +28149 : 2 +28150 : 2 +28151 : 1 +28152 : 1 +28153 : 0 +28154 : 1 +28155 : 1 +28156 : 2 +28157 : 2 +28158 : 3 +28159 : 3 +28160 : 4 +28161 : 4 +28162 : 5 +28163 : 5 +28164 : 5 +28165 : 4 +28166 : 4 +28167 : 3 +28168 : 3 +28169 : 2 +28170 : 2 +28171 : 1 +28172 : 3 +28173 : 2 +28174 : 3 +28175 : 3 +28176 : 4 +28177 : 4 +28178 : 5 +28179 : 5 +28180 : 6 +28181 : 6 +28182 : 7 +28183 : 7 +28184 : 8 +28185 : 8 +28186 : 9 +28187 : 9 +28188 : 10 +28189 : 10 +28190 : 11 +28191 : 11 +28192 : 12 +28193 : 12 +28194 : 13 +28195 : 13 +28196 : 13 +28197 : 13 +28198 : 12 +28199 : 12 +28200 : 11 +28201 : 11 +28202 : 10 +28203 : 11 +28204 : 11 +28205 : 12 +28206 : 12 +28207 : 13 +28208 : 13 +28209 : 14 +28210 : 14 +28211 : 15 +28212 : 15 +28213 : 15 +28214 : 14 +28215 : 14 +28216 : 0 +28217 : 0 +28218 : 417 +28219 : 0 +28220 : 14 +28221 : 15 +28222 : 16 +28223 : 16 +28224 : 17 +28225 : 17 +28226 : 16 +28227 : 16 +28228 : 15 +28229 : 15 +28230 : 14 +28231 : 14 +28232 : 13 +28233 : 13 +28234 : 12 +28235 : 12 +28236 : 11 +28237 : 11 +28238 : 10 +28239 : 10 +28240 : 9 +28241 : 9 +28242 : 8 +28243 : 8 +28244 : 7 +28245 : 7 +28246 : 6 +28247 : 6 +28248 : 5 +28249 : 5 +28250 : 4 +28251 : 4 +28252 : 3 +28253 : 3 +28254 : 2 +28255 : 2 +28256 : 1 +28257 : 1 +28258 : 0 +28259 : 1 +28260 : 1 +28261 : 2 +28262 : 2 +28263 : 3 +28264 : 3 +28265 : 4 +28266 : 4 +28267 : 5 +28268 : 5 +28269 : 5 +28270 : 5 +28271 : 4 +28272 : 4 +28273 : 3 +28274 : 3 +28275 : 2 +28276 : 4 +28277 : 3 +28278 : 4 +28279 : 4 +28280 : 5 +28281 : 5 +28282 : 6 +28283 : 6 +28284 : 7 +28285 : 7 +28286 : 8 +28287 : 8 +28288 : 9 +28289 : 9 +28290 : 10 +28291 : 10 +28292 : 11 +28293 : 11 +28294 : 12 +28295 : 12 +28296 : 13 +28297 : 13 +28298 : 14 +28299 : 14 +28300 : 14 +28301 : 14 +28302 : 13 +28303 : 13 +28304 : 12 +28305 : 12 +28306 : 11 +28307 : 12 +28308 : 12 +28309 : 13 +28310 : 13 +28311 : 14 +28312 : 14 +28313 : 15 +28314 : 15 +28315 : 16 +28316 : 16 +28317 : 16 +28318 : 15 +28319 : 15 +28320 : 0 +28321 : 0 +28322 : 417 +28323 : 0 +28324 : 14 +28325 : 15 +28326 : 16 +28327 : 16 +28328 : 17 +28329 : 17 +28330 : 17 +28331 : 16 +28332 : 16 +28333 : 15 +28334 : 15 +28335 : 14 +28336 : 14 +28337 : 13 +28338 : 13 +28339 : 12 +28340 : 12 +28341 : 11 +28342 : 11 +28343 : 10 +28344 : 10 +28345 : 9 +28346 : 9 +28347 : 8 +28348 : 8 +28349 : 7 +28350 : 7 +28351 : 6 +28352 : 6 +28353 : 5 +28354 : 5 +28355 : 4 +28356 : 4 +28357 : 3 +28358 : 3 +28359 : 2 +28360 : 2 +28361 : 1 +28362 : 1 +28363 : 0 +28364 : 1 +28365 : 1 +28366 : 2 +28367 : 2 +28368 : 3 +28369 : 3 +28370 : 4 +28371 : 4 +28372 : 5 +28373 : 5 +28374 : 5 +28375 : 4 +28376 : 4 +28377 : 3 +28378 : 3 +28379 : 2 +28380 : 4 +28381 : 3 +28382 : 4 +28383 : 4 +28384 : 5 +28385 : 5 +28386 : 6 +28387 : 6 +28388 : 7 +28389 : 7 +28390 : 8 +28391 : 8 +28392 : 9 +28393 : 9 +28394 : 10 +28395 : 10 +28396 : 11 +28397 : 11 +28398 : 12 +28399 : 12 +28400 : 13 +28401 : 13 +28402 : 14 +28403 : 14 +28404 : 14 +28405 : 14 +28406 : 13 +28407 : 13 +28408 : 12 +28409 : 12 +28410 : 11 +28411 : 12 +28412 : 12 +28413 : 13 +28414 : 13 +28415 : 14 +28416 : 14 +28417 : 15 +28418 : 15 +28419 : 16 +28420 : 16 +28421 : 16 +28422 : 15 +28423 : 15 +28424 : 0 +28425 : 0 +28426 : 417 +28427 : 0 +28428 : 15 +28429 : 16 +28430 : 17 +28431 : 17 +28432 : 18 +28433 : 18 +28434 : 17 +28435 : 17 +28436 : 16 +28437 : 16 +28438 : 15 +28439 : 15 +28440 : 14 +28441 : 14 +28442 : 13 +28443 : 13 +28444 : 12 +28445 : 12 +28446 : 11 +28447 : 11 +28448 : 10 +28449 : 10 +28450 : 9 +28451 : 9 +28452 : 8 +28453 : 8 +28454 : 7 +28455 : 7 +28456 : 6 +28457 : 6 +28458 : 5 +28459 : 5 +28460 : 4 +28461 : 4 +28462 : 3 +28463 : 3 +28464 : 2 +28465 : 2 +28466 : 1 +28467 : 1 +28468 : 0 +28469 : 1 +28470 : 1 +28471 : 2 +28472 : 2 +28473 : 3 +28474 : 3 +28475 : 4 +28476 : 4 +28477 : 5 +28478 : 5 +28479 : 5 +28480 : 5 +28481 : 4 +28482 : 4 +28483 : 3 +28484 : 5 +28485 : 4 +28486 : 5 +28487 : 5 +28488 : 6 +28489 : 6 +28490 : 7 +28491 : 7 +28492 : 8 +28493 : 8 +28494 : 9 +28495 : 9 +28496 : 10 +28497 : 10 +28498 : 11 +28499 : 11 +28500 : 12 +28501 : 12 +28502 : 13 +28503 : 13 +28504 : 14 +28505 : 14 +28506 : 15 +28507 : 15 +28508 : 15 +28509 : 15 +28510 : 14 +28511 : 14 +28512 : 13 +28513 : 13 +28514 : 12 +28515 : 13 +28516 : 13 +28517 : 14 +28518 : 14 +28519 : 15 +28520 : 15 +28521 : 16 +28522 : 16 +28523 : 17 +28524 : 17 +28525 : 17 +28526 : 16 +28527 : 16 +28528 : 0 +28529 : 0 +28530 : 417 +28531 : 0 +28532 : 15 +28533 : 16 +28534 : 17 +28535 : 17 +28536 : 18 +28537 : 18 +28538 : 18 +28539 : 17 +28540 : 17 +28541 : 16 +28542 : 16 +28543 : 15 +28544 : 15 +28545 : 14 +28546 : 14 +28547 : 13 +28548 : 13 +28549 : 12 +28550 : 12 +28551 : 11 +28552 : 11 +28553 : 10 +28554 : 10 +28555 : 9 +28556 : 9 +28557 : 8 +28558 : 8 +28559 : 7 +28560 : 7 +28561 : 6 +28562 : 6 +28563 : 5 +28564 : 5 +28565 : 4 +28566 : 4 +28567 : 3 +28568 : 3 +28569 : 2 +28570 : 2 +28571 : 1 +28572 : 1 +28573 : 0 +28574 : 1 +28575 : 1 +28576 : 2 +28577 : 2 +28578 : 3 +28579 : 3 +28580 : 4 +28581 : 4 +28582 : 5 +28583 : 5 +28584 : 5 +28585 : 4 +28586 : 4 +28587 : 3 +28588 : 5 +28589 : 4 +28590 : 5 +28591 : 5 +28592 : 6 +28593 : 6 +28594 : 7 +28595 : 7 +28596 : 8 +28597 : 8 +28598 : 9 +28599 : 9 +28600 : 10 +28601 : 10 +28602 : 11 +28603 : 11 +28604 : 12 +28605 : 12 +28606 : 13 +28607 : 13 +28608 : 14 +28609 : 14 +28610 : 15 +28611 : 15 +28612 : 15 +28613 : 15 +28614 : 14 +28615 : 14 +28616 : 13 +28617 : 13 +28618 : 12 +28619 : 13 +28620 : 13 +28621 : 14 +28622 : 14 +28623 : 15 +28624 : 15 +28625 : 16 +28626 : 16 +28627 : 17 +28628 : 17 +28629 : 17 +28630 : 16 +28631 : 16 +28632 : 0 +28633 : 0 +28634 : 417 +28635 : 0 +28636 : 16 +28637 : 17 +28638 : 18 +28639 : 18 +28640 : 19 +28641 : 19 +28642 : 18 +28643 : 18 +28644 : 17 +28645 : 17 +28646 : 16 +28647 : 16 +28648 : 15 +28649 : 15 +28650 : 14 +28651 : 14 +28652 : 13 +28653 : 13 +28654 : 12 +28655 : 12 +28656 : 11 +28657 : 11 +28658 : 10 +28659 : 10 +28660 : 9 +28661 : 9 +28662 : 8 +28663 : 8 +28664 : 7 +28665 : 7 +28666 : 6 +28667 : 6 +28668 : 5 +28669 : 5 +28670 : 4 +28671 : 4 +28672 : 3 +28673 : 3 +28674 : 2 +28675 : 2 +28676 : 1 +28677 : 1 +28678 : 0 +28679 : 1 +28680 : 1 +28681 : 2 +28682 : 2 +28683 : 3 +28684 : 3 +28685 : 4 +28686 : 4 +28687 : 5 +28688 : 5 +28689 : 5 +28690 : 5 +28691 : 4 +28692 : 6 +28693 : 5 +28694 : 6 +28695 : 6 +28696 : 7 +28697 : 7 +28698 : 8 +28699 : 8 +28700 : 9 +28701 : 9 +28702 : 10 +28703 : 10 +28704 : 11 +28705 : 11 +28706 : 12 +28707 : 12 +28708 : 13 +28709 : 13 +28710 : 14 +28711 : 14 +28712 : 15 +28713 : 15 +28714 : 16 +28715 : 16 +28716 : 16 +28717 : 16 +28718 : 15 +28719 : 15 +28720 : 14 +28721 : 14 +28722 : 13 +28723 : 14 +28724 : 14 +28725 : 15 +28726 : 15 +28727 : 16 +28728 : 16 +28729 : 17 +28730 : 17 +28731 : 18 +28732 : 18 +28733 : 18 +28734 : 17 +28735 : 17 +28736 : 0 +28737 : 0 +28738 : 417 +28739 : 0 +28740 : 16 +28741 : 17 +28742 : 18 +28743 : 18 +28744 : 19 +28745 : 19 +28746 : 19 +28747 : 18 +28748 : 18 +28749 : 17 +28750 : 17 +28751 : 16 +28752 : 16 +28753 : 15 +28754 : 15 +28755 : 14 +28756 : 14 +28757 : 13 +28758 : 13 +28759 : 12 +28760 : 12 +28761 : 11 +28762 : 11 +28763 : 10 +28764 : 10 +28765 : 9 +28766 : 9 +28767 : 8 +28768 : 8 +28769 : 7 +28770 : 7 +28771 : 6 +28772 : 6 +28773 : 5 +28774 : 5 +28775 : 4 +28776 : 4 +28777 : 3 +28778 : 3 +28779 : 2 +28780 : 2 +28781 : 1 +28782 : 1 +28783 : 0 +28784 : 1 +28785 : 1 +28786 : 2 +28787 : 2 +28788 : 3 +28789 : 3 +28790 : 4 +28791 : 4 +28792 : 5 +28793 : 5 +28794 : 5 +28795 : 4 +28796 : 6 +28797 : 5 +28798 : 6 +28799 : 6 +28800 : 7 +28801 : 7 +28802 : 8 +28803 : 8 +28804 : 9 +28805 : 9 +28806 : 10 +28807 : 10 +28808 : 11 +28809 : 11 +28810 : 12 +28811 : 12 +28812 : 13 +28813 : 13 +28814 : 14 +28815 : 14 +28816 : 15 +28817 : 15 +28818 : 16 +28819 : 16 +28820 : 16 +28821 : 16 +28822 : 15 +28823 : 15 +28824 : 14 +28825 : 14 +28826 : 13 +28827 : 14 +28828 : 14 +28829 : 15 +28830 : 15 +28831 : 16 +28832 : 16 +28833 : 17 +28834 : 17 +28835 : 18 +28836 : 18 +28837 : 18 +28838 : 17 +28839 : 17 +28840 : 0 +28841 : 0 +28842 : 417 +28843 : 0 +28844 : 17 +28845 : 18 +28846 : 19 +28847 : 19 +28848 : 20 +28849 : 20 +28850 : 19 +28851 : 19 +28852 : 18 +28853 : 18 +28854 : 17 +28855 : 17 +28856 : 16 +28857 : 16 +28858 : 15 +28859 : 15 +28860 : 14 +28861 : 14 +28862 : 13 +28863 : 13 +28864 : 12 +28865 : 12 +28866 : 11 +28867 : 11 +28868 : 10 +28869 : 10 +28870 : 9 +28871 : 9 +28872 : 8 +28873 : 8 +28874 : 7 +28875 : 7 +28876 : 6 +28877 : 6 +28878 : 5 +28879 : 5 +28880 : 4 +28881 : 4 +28882 : 3 +28883 : 3 +28884 : 2 +28885 : 2 +28886 : 1 +28887 : 1 +28888 : 0 +28889 : 1 +28890 : 1 +28891 : 2 +28892 : 2 +28893 : 3 +28894 : 3 +28895 : 4 +28896 : 4 +28897 : 5 +28898 : 5 +28899 : 5 +28900 : 6 +28901 : 6 +28902 : 7 +28903 : 7 +28904 : 8 +28905 : 8 +28906 : 9 +28907 : 9 +28908 : 10 +28909 : 10 +28910 : 11 +28911 : 11 +28912 : 12 +28913 : 12 +28914 : 13 +28915 : 13 +28916 : 14 +28917 : 14 +28918 : 15 +28919 : 15 +28920 : 16 +28921 : 16 +28922 : 17 +28923 : 17 +28924 : 17 +28925 : 17 +28926 : 16 +28927 : 16 +28928 : 15 +28929 : 15 +28930 : 14 +28931 : 15 +28932 : 15 +28933 : 16 +28934 : 16 +28935 : 17 +28936 : 17 +28937 : 18 +28938 : 18 +28939 : 19 +28940 : 19 +28941 : 19 +28942 : 18 +28943 : 18 +28944 : 0 +28945 : 0 +28946 : 417 +28947 : 0 +28948 : 17 +28949 : 18 +28950 : 19 +28951 : 19 +28952 : 20 +28953 : 20 +28954 : 20 +28955 : 19 +28956 : 19 +28957 : 18 +28958 : 18 +28959 : 17 +28960 : 17 +28961 : 16 +28962 : 16 +28963 : 15 +28964 : 15 +28965 : 14 +28966 : 14 +28967 : 13 +28968 : 13 +28969 : 12 +28970 : 12 +28971 : 11 +28972 : 11 +28973 : 10 +28974 : 10 +28975 : 9 +28976 : 9 +28977 : 8 +28978 : 8 +28979 : 7 +28980 : 7 +28981 : 6 +28982 : 6 +28983 : 5 +28984 : 5 +28985 : 4 +28986 : 4 +28987 : 3 +28988 : 3 +28989 : 2 +28990 : 2 +28991 : 1 +28992 : 1 +28993 : 0 +28994 : 1 +28995 : 1 +28996 : 2 +28997 : 2 +28998 : 3 +28999 : 3 +29000 : 4 +29001 : 4 +29002 : 5 +29003 : 5 +29004 : 6 +29005 : 6 +29006 : 7 +29007 : 7 +29008 : 8 +29009 : 8 +29010 : 9 +29011 : 9 +29012 : 10 +29013 : 10 +29014 : 11 +29015 : 11 +29016 : 12 +29017 : 12 +29018 : 13 +29019 : 13 +29020 : 14 +29021 : 14 +29022 : 15 +29023 : 15 +29024 : 16 +29025 : 16 +29026 : 17 +29027 : 17 +29028 : 17 +29029 : 17 +29030 : 16 +29031 : 16 +29032 : 15 +29033 : 15 +29034 : 14 +29035 : 15 +29036 : 15 +29037 : 16 +29038 : 16 +29039 : 17 +29040 : 17 +29041 : 18 +29042 : 18 +29043 : 19 +29044 : 19 +29045 : 19 +29046 : 18 +29047 : 18 +29048 : 0 +29049 : 0 +29050 : 417 +29051 : 0 +29052 : 16 +29053 : 17 +29054 : 18 +29055 : 18 +29056 : 19 +29057 : 19 +29058 : 20 +29059 : 20 +29060 : 19 +29061 : 19 +29062 : 18 +29063 : 18 +29064 : 17 +29065 : 17 +29066 : 16 +29067 : 16 +29068 : 15 +29069 : 15 +29070 : 14 +29071 : 14 +29072 : 13 +29073 : 13 +29074 : 12 +29075 : 12 +29076 : 11 +29077 : 11 +29078 : 10 +29079 : 10 +29080 : 9 +29081 : 9 +29082 : 8 +29083 : 8 +29084 : 7 +29085 : 7 +29086 : 6 +29087 : 6 +29088 : 5 +29089 : 5 +29090 : 4 +29091 : 4 +29092 : 3 +29093 : 3 +29094 : 2 +29095 : 2 +29096 : 1 +29097 : 1 +29098 : 0 +29099 : 1 +29100 : 1 +29101 : 2 +29102 : 2 +29103 : 3 +29104 : 3 +29105 : 4 +29106 : 4 +29107 : 5 +29108 : 5 +29109 : 6 +29110 : 6 +29111 : 7 +29112 : 7 +29113 : 8 +29114 : 8 +29115 : 9 +29116 : 9 +29117 : 10 +29118 : 10 +29119 : 11 +29120 : 11 +29121 : 12 +29122 : 12 +29123 : 13 +29124 : 13 +29125 : 14 +29126 : 14 +29127 : 15 +29128 : 15 +29129 : 16 +29130 : 16 +29131 : 17 +29132 : 16 +29133 : 16 +29134 : 15 +29135 : 15 +29136 : 14 +29137 : 14 +29138 : 13 +29139 : 14 +29140 : 14 +29141 : 15 +29142 : 15 +29143 : 16 +29144 : 16 +29145 : 17 +29146 : 17 +29147 : 18 +29148 : 18 +29149 : 18 +29150 : 17 +29151 : 17 +29152 : 0 +29153 : 0 +29154 : 417 +29155 : 0 +29156 : 16 +29157 : 17 +29158 : 18 +29159 : 18 +29160 : 19 +29161 : 19 +29162 : 20 +29163 : 20 +29164 : 20 +29165 : 19 +29166 : 19 +29167 : 18 +29168 : 18 +29169 : 17 +29170 : 17 +29171 : 16 +29172 : 16 +29173 : 15 +29174 : 15 +29175 : 14 +29176 : 14 +29177 : 13 +29178 : 13 +29179 : 12 +29180 : 12 +29181 : 11 +29182 : 11 +29183 : 10 +29184 : 10 +29185 : 9 +29186 : 9 +29187 : 8 +29188 : 8 +29189 : 7 +29190 : 7 +29191 : 6 +29192 : 6 +29193 : 5 +29194 : 5 +29195 : 4 +29196 : 4 +29197 : 3 +29198 : 3 +29199 : 2 +29200 : 2 +29201 : 1 +29202 : 1 +29203 : 0 +29204 : 1 +29205 : 1 +29206 : 2 +29207 : 2 +29208 : 3 +29209 : 3 +29210 : 4 +29211 : 4 +29212 : 5 +29213 : 5 +29214 : 6 +29215 : 6 +29216 : 7 +29217 : 7 +29218 : 8 +29219 : 8 +29220 : 9 +29221 : 9 +29222 : 10 +29223 : 10 +29224 : 11 +29225 : 11 +29226 : 12 +29227 : 12 +29228 : 13 +29229 : 13 +29230 : 14 +29231 : 14 +29232 : 15 +29233 : 15 +29234 : 16 +29235 : 16 +29236 : 16 +29237 : 16 +29238 : 15 +29239 : 15 +29240 : 14 +29241 : 14 +29242 : 13 +29243 : 14 +29244 : 14 +29245 : 15 +29246 : 15 +29247 : 16 +29248 : 16 +29249 : 17 +29250 : 17 +29251 : 18 +29252 : 18 +29253 : 18 +29254 : 17 +29255 : 17 +29256 : 0 +29257 : 0 +29258 : 417 +29259 : 0 +29260 : 15 +29261 : 16 +29262 : 17 +29263 : 17 +29264 : 18 +29265 : 18 +29266 : 19 +29267 : 19 +29268 : 20 +29269 : 19 +29270 : 19 +29271 : 18 +29272 : 18 +29273 : 17 +29274 : 17 +29275 : 16 +29276 : 16 +29277 : 15 +29278 : 15 +29279 : 14 +29280 : 14 +29281 : 13 +29282 : 13 +29283 : 12 +29284 : 12 +29285 : 11 +29286 : 11 +29287 : 10 +29288 : 10 +29289 : 9 +29290 : 9 +29291 : 8 +29292 : 8 +29293 : 7 +29294 : 7 +29295 : 6 +29296 : 6 +29297 : 5 +29298 : 5 +29299 : 5 +29300 : 4 +29301 : 4 +29302 : 3 +29303 : 3 +29304 : 2 +29305 : 2 +29306 : 1 +29307 : 1 +29308 : 0 +29309 : 1 +29310 : 1 +29311 : 2 +29312 : 2 +29313 : 3 +29314 : 3 +29315 : 4 +29316 : 4 +29317 : 5 +29318 : 5 +29319 : 6 +29320 : 6 +29321 : 7 +29322 : 7 +29323 : 8 +29324 : 8 +29325 : 9 +29326 : 9 +29327 : 10 +29328 : 10 +29329 : 11 +29330 : 11 +29331 : 12 +29332 : 12 +29333 : 13 +29334 : 13 +29335 : 14 +29336 : 14 +29337 : 15 +29338 : 15 +29339 : 16 +29340 : 15 +29341 : 15 +29342 : 14 +29343 : 14 +29344 : 13 +29345 : 13 +29346 : 12 +29347 : 13 +29348 : 13 +29349 : 14 +29350 : 14 +29351 : 15 +29352 : 15 +29353 : 16 +29354 : 16 +29355 : 17 +29356 : 17 +29357 : 17 +29358 : 16 +29359 : 16 +29360 : 0 +29361 : 0 +29362 : 417 +29363 : 0 +29364 : 15 +29365 : 16 +29366 : 17 +29367 : 17 +29368 : 18 +29369 : 18 +29370 : 19 +29371 : 19 +29372 : 19 +29373 : 18 +29374 : 18 +29375 : 17 +29376 : 17 +29377 : 16 +29378 : 16 +29379 : 15 +29380 : 15 +29381 : 14 +29382 : 14 +29383 : 13 +29384 : 13 +29385 : 12 +29386 : 12 +29387 : 11 +29388 : 11 +29389 : 10 +29390 : 10 +29391 : 9 +29392 : 9 +29393 : 8 +29394 : 8 +29395 : 7 +29396 : 7 +29397 : 6 +29398 : 6 +29399 : 5 +29400 : 5 +29401 : 4 +29402 : 5 +29403 : 5 +29404 : 5 +29405 : 4 +29406 : 4 +29407 : 3 +29408 : 3 +29409 : 2 +29410 : 2 +29411 : 1 +29412 : 1 +29413 : 0 +29414 : 1 +29415 : 1 +29416 : 2 +29417 : 2 +29418 : 3 +29419 : 3 +29420 : 4 +29421 : 4 +29422 : 5 +29423 : 5 +29424 : 6 +29425 : 6 +29426 : 7 +29427 : 7 +29428 : 8 +29429 : 8 +29430 : 9 +29431 : 9 +29432 : 10 +29433 : 10 +29434 : 11 +29435 : 11 +29436 : 12 +29437 : 12 +29438 : 13 +29439 : 13 +29440 : 14 +29441 : 14 +29442 : 15 +29443 : 15 +29444 : 15 +29445 : 15 +29446 : 14 +29447 : 14 +29448 : 13 +29449 : 13 +29450 : 12 +29451 : 13 +29452 : 13 +29453 : 14 +29454 : 14 +29455 : 15 +29456 : 15 +29457 : 16 +29458 : 16 +29459 : 17 +29460 : 17 +29461 : 17 +29462 : 16 +29463 : 16 +29464 : 0 +29465 : 0 +29466 : 417 +29467 : 0 +29468 : 14 +29469 : 15 +29470 : 16 +29471 : 16 +29472 : 17 +29473 : 17 +29474 : 18 +29475 : 18 +29476 : 19 +29477 : 18 +29478 : 18 +29479 : 17 +29480 : 17 +29481 : 16 +29482 : 16 +29483 : 15 +29484 : 15 +29485 : 14 +29486 : 14 +29487 : 13 +29488 : 13 +29489 : 12 +29490 : 12 +29491 : 11 +29492 : 11 +29493 : 10 +29494 : 10 +29495 : 9 +29496 : 9 +29497 : 8 +29498 : 8 +29499 : 7 +29500 : 7 +29501 : 6 +29502 : 6 +29503 : 5 +29504 : 5 +29505 : 4 +29506 : 5 +29507 : 5 +29508 : 5 +29509 : 5 +29510 : 4 +29511 : 4 +29512 : 3 +29513 : 3 +29514 : 2 +29515 : 2 +29516 : 1 +29517 : 1 +29518 : 0 +29519 : 1 +29520 : 1 +29521 : 2 +29522 : 2 +29523 : 3 +29524 : 3 +29525 : 4 +29526 : 4 +29527 : 5 +29528 : 5 +29529 : 6 +29530 : 6 +29531 : 7 +29532 : 7 +29533 : 8 +29534 : 8 +29535 : 9 +29536 : 9 +29537 : 10 +29538 : 10 +29539 : 11 +29540 : 11 +29541 : 12 +29542 : 12 +29543 : 13 +29544 : 13 +29545 : 14 +29546 : 14 +29547 : 15 +29548 : 14 +29549 : 14 +29550 : 13 +29551 : 13 +29552 : 12 +29553 : 12 +29554 : 11 +29555 : 12 +29556 : 12 +29557 : 13 +29558 : 13 +29559 : 14 +29560 : 14 +29561 : 15 +29562 : 15 +29563 : 16 +29564 : 16 +29565 : 16 +29566 : 15 +29567 : 15 +29568 : 0 +29569 : 0 +29570 : 417 +29571 : 0 +29572 : 14 +29573 : 15 +29574 : 16 +29575 : 16 +29576 : 17 +29577 : 17 +29578 : 18 +29579 : 18 +29580 : 18 +29581 : 17 +29582 : 17 +29583 : 16 +29584 : 16 +29585 : 15 +29586 : 15 +29587 : 14 +29588 : 14 +29589 : 13 +29590 : 13 +29591 : 12 +29592 : 12 +29593 : 11 +29594 : 11 +29595 : 10 +29596 : 10 +29597 : 9 +29598 : 9 +29599 : 8 +29600 : 8 +29601 : 7 +29602 : 7 +29603 : 6 +29604 : 6 +29605 : 5 +29606 : 5 +29607 : 4 +29608 : 4 +29609 : 3 +29610 : 4 +29611 : 4 +29612 : 5 +29613 : 5 +29614 : 5 +29615 : 4 +29616 : 4 +29617 : 3 +29618 : 3 +29619 : 2 +29620 : 2 +29621 : 1 +29622 : 1 +29623 : 0 +29624 : 1 +29625 : 1 +29626 : 2 +29627 : 2 +29628 : 3 +29629 : 3 +29630 : 4 +29631 : 4 +29632 : 5 +29633 : 5 +29634 : 6 +29635 : 6 +29636 : 7 +29637 : 7 +29638 : 8 +29639 : 8 +29640 : 9 +29641 : 9 +29642 : 10 +29643 : 10 +29644 : 11 +29645 : 11 +29646 : 12 +29647 : 12 +29648 : 13 +29649 : 13 +29650 : 14 +29651 : 14 +29652 : 14 +29653 : 14 +29654 : 13 +29655 : 13 +29656 : 12 +29657 : 12 +29658 : 11 +29659 : 12 +29660 : 12 +29661 : 13 +29662 : 13 +29663 : 14 +29664 : 14 +29665 : 15 +29666 : 15 +29667 : 16 +29668 : 16 +29669 : 16 +29670 : 15 +29671 : 15 +29672 : 0 +29673 : 0 +29674 : 417 +29675 : 0 +29676 : 13 +29677 : 14 +29678 : 15 +29679 : 15 +29680 : 16 +29681 : 16 +29682 : 17 +29683 : 17 +29684 : 18 +29685 : 17 +29686 : 17 +29687 : 16 +29688 : 16 +29689 : 15 +29690 : 15 +29691 : 14 +29692 : 14 +29693 : 13 +29694 : 13 +29695 : 12 +29696 : 12 +29697 : 11 +29698 : 11 +29699 : 10 +29700 : 10 +29701 : 9 +29702 : 9 +29703 : 8 +29704 : 8 +29705 : 7 +29706 : 7 +29707 : 6 +29708 : 6 +29709 : 5 +29710 : 5 +29711 : 4 +29712 : 4 +29713 : 3 +29714 : 4 +29715 : 4 +29716 : 5 +29717 : 5 +29718 : 5 +29719 : 5 +29720 : 4 +29721 : 4 +29722 : 3 +29723 : 3 +29724 : 2 +29725 : 2 +29726 : 1 +29727 : 1 +29728 : 0 +29729 : 1 +29730 : 1 +29731 : 2 +29732 : 2 +29733 : 3 +29734 : 3 +29735 : 4 +29736 : 4 +29737 : 5 +29738 : 5 +29739 : 6 +29740 : 6 +29741 : 7 +29742 : 7 +29743 : 8 +29744 : 8 +29745 : 9 +29746 : 9 +29747 : 10 +29748 : 10 +29749 : 11 +29750 : 11 +29751 : 12 +29752 : 12 +29753 : 13 +29754 : 13 +29755 : 14 +29756 : 13 +29757 : 13 +29758 : 12 +29759 : 12 +29760 : 11 +29761 : 11 +29762 : 10 +29763 : 11 +29764 : 11 +29765 : 12 +29766 : 12 +29767 : 13 +29768 : 13 +29769 : 14 +29770 : 14 +29771 : 15 +29772 : 15 +29773 : 15 +29774 : 14 +29775 : 14 +29776 : 0 +29777 : 0 +29778 : 417 +29779 : 0 +29780 : 13 +29781 : 14 +29782 : 15 +29783 : 15 +29784 : 16 +29785 : 16 +29786 : 17 +29787 : 17 +29788 : 17 +29789 : 16 +29790 : 16 +29791 : 15 +29792 : 15 +29793 : 14 +29794 : 14 +29795 : 13 +29796 : 13 +29797 : 12 +29798 : 12 +29799 : 11 +29800 : 11 +29801 : 10 +29802 : 10 +29803 : 9 +29804 : 9 +29805 : 8 +29806 : 8 +29807 : 7 +29808 : 7 +29809 : 6 +29810 : 6 +29811 : 5 +29812 : 5 +29813 : 4 +29814 : 4 +29815 : 3 +29816 : 3 +29817 : 2 +29818 : 3 +29819 : 3 +29820 : 4 +29821 : 4 +29822 : 5 +29823 : 5 +29824 : 5 +29825 : 4 +29826 : 4 +29827 : 3 +29828 : 3 +29829 : 2 +29830 : 2 +29831 : 1 +29832 : 1 +29833 : 0 +29834 : 1 +29835 : 1 +29836 : 2 +29837 : 2 +29838 : 3 +29839 : 3 +29840 : 4 +29841 : 4 +29842 : 5 +29843 : 5 +29844 : 6 +29845 : 6 +29846 : 7 +29847 : 7 +29848 : 8 +29849 : 8 +29850 : 9 +29851 : 9 +29852 : 10 +29853 : 10 +29854 : 11 +29855 : 11 +29856 : 12 +29857 : 12 +29858 : 13 +29859 : 13 +29860 : 13 +29861 : 13 +29862 : 12 +29863 : 12 +29864 : 11 +29865 : 11 +29866 : 10 +29867 : 11 +29868 : 11 +29869 : 12 +29870 : 12 +29871 : 13 +29872 : 13 +29873 : 14 +29874 : 14 +29875 : 15 +29876 : 15 +29877 : 15 +29878 : 14 +29879 : 14 +29880 : 0 +29881 : 0 +29882 : 417 +29883 : 0 +29884 : 12 +29885 : 13 +29886 : 14 +29887 : 14 +29888 : 15 +29889 : 15 +29890 : 16 +29891 : 16 +29892 : 17 +29893 : 16 +29894 : 16 +29895 : 15 +29896 : 15 +29897 : 14 +29898 : 14 +29899 : 13 +29900 : 13 +29901 : 12 +29902 : 12 +29903 : 11 +29904 : 11 +29905 : 10 +29906 : 10 +29907 : 9 +29908 : 9 +29909 : 8 +29910 : 8 +29911 : 7 +29912 : 7 +29913 : 6 +29914 : 6 +29915 : 5 +29916 : 5 +29917 : 4 +29918 : 4 +29919 : 3 +29920 : 3 +29921 : 2 +29922 : 3 +29923 : 3 +29924 : 4 +29925 : 4 +29926 : 5 +29927 : 5 +29928 : 5 +29929 : 5 +29930 : 4 +29931 : 4 +29932 : 3 +29933 : 3 +29934 : 2 +29935 : 2 +29936 : 1 +29937 : 1 +29938 : 0 +29939 : 1 +29940 : 1 +29941 : 2 +29942 : 2 +29943 : 3 +29944 : 3 +29945 : 4 +29946 : 4 +29947 : 5 +29948 : 5 +29949 : 6 +29950 : 6 +29951 : 7 +29952 : 7 +29953 : 8 +29954 : 8 +29955 : 9 +29956 : 9 +29957 : 10 +29958 : 10 +29959 : 11 +29960 : 11 +29961 : 12 +29962 : 12 +29963 : 13 +29964 : 12 +29965 : 12 +29966 : 11 +29967 : 11 +29968 : 10 +29969 : 10 +29970 : 9 +29971 : 10 +29972 : 10 +29973 : 11 +29974 : 11 +29975 : 12 +29976 : 12 +29977 : 13 +29978 : 13 +29979 : 14 +29980 : 14 +29981 : 14 +29982 : 13 +29983 : 13 +29984 : 0 +29985 : 0 +29986 : 417 +29987 : 0 +29988 : 12 +29989 : 13 +29990 : 14 +29991 : 14 +29992 : 15 +29993 : 15 +29994 : 16 +29995 : 16 +29996 : 16 +29997 : 15 +29998 : 15 +29999 : 14 +30000 : 14 +30001 : 13 +30002 : 13 +30003 : 12 +30004 : 12 +30005 : 11 +30006 : 11 +30007 : 10 +30008 : 10 +30009 : 9 +30010 : 9 +30011 : 8 +30012 : 8 +30013 : 7 +30014 : 7 +30015 : 6 +30016 : 6 +30017 : 5 +30018 : 5 +30019 : 4 +30020 : 4 +30021 : 3 +30022 : 3 +30023 : 2 +30024 : 2 +30025 : 1 +30026 : 2 +30027 : 2 +30028 : 3 +30029 : 3 +30030 : 4 +30031 : 4 +30032 : 5 +30033 : 5 +30034 : 5 +30035 : 4 +30036 : 4 +30037 : 3 +30038 : 3 +30039 : 2 +30040 : 2 +30041 : 1 +30042 : 1 +30043 : 0 +30044 : 2 +30045 : 1 +30046 : 2 +30047 : 2 +30048 : 3 +30049 : 3 +30050 : 4 +30051 : 4 +30052 : 5 +30053 : 5 +30054 : 6 +30055 : 6 +30056 : 7 +30057 : 7 +30058 : 8 +30059 : 8 +30060 : 9 +30061 : 9 +30062 : 10 +30063 : 10 +30064 : 11 +30065 : 11 +30066 : 12 +30067 : 12 +30068 : 12 +30069 : 12 +30070 : 11 +30071 : 11 +30072 : 10 +30073 : 10 +30074 : 9 +30075 : 10 +30076 : 10 +30077 : 11 +30078 : 11 +30079 : 12 +30080 : 12 +30081 : 13 +30082 : 13 +30083 : 14 +30084 : 14 +30085 : 14 +30086 : 13 +30087 : 13 +30088 : 0 +30089 : 0 +30090 : 417 +30091 : 0 +30092 : 11 +30093 : 12 +30094 : 13 +30095 : 13 +30096 : 14 +30097 : 14 +30098 : 15 +30099 : 15 +30100 : 16 +30101 : 16 +30102 : 17 +30103 : 16 +30104 : 16 +30105 : 15 +30106 : 15 +30107 : 14 +30108 : 14 +30109 : 13 +30110 : 13 +30111 : 12 +30112 : 12 +30113 : 11 +30114 : 11 +30115 : 10 +30116 : 10 +30117 : 9 +30118 : 9 +30119 : 8 +30120 : 8 +30121 : 7 +30122 : 7 +30123 : 6 +30124 : 6 +30125 : 5 +30126 : 5 +30127 : 4 +30128 : 4 +30129 : 3 +30130 : 4 +30131 : 4 +30132 : 5 +30133 : 5 +30134 : 6 +30135 : 6 +30136 : 6 +30137 : 6 +30138 : 5 +30139 : 5 +30140 : 4 +30141 : 4 +30142 : 3 +30143 : 3 +30144 : 2 +30145 : 2 +30146 : 1 +30147 : 2 +30148 : 0 +30149 : 1 +30150 : 1 +30151 : 2 +30152 : 2 +30153 : 3 +30154 : 3 +30155 : 4 +30156 : 4 +30157 : 5 +30158 : 5 +30159 : 6 +30160 : 6 +30161 : 7 +30162 : 7 +30163 : 8 +30164 : 8 +30165 : 9 +30166 : 9 +30167 : 10 +30168 : 10 +30169 : 11 +30170 : 11 +30171 : 12 +30172 : 11 +30173 : 11 +30174 : 10 +30175 : 10 +30176 : 9 +30177 : 9 +30178 : 8 +30179 : 9 +30180 : 9 +30181 : 10 +30182 : 10 +30183 : 11 +30184 : 11 +30185 : 12 +30186 : 12 +30187 : 13 +30188 : 13 +30189 : 13 +30190 : 12 +30191 : 12 +30192 : 0 +30193 : 0 +30194 : 417 +30195 : 0 +30196 : 11 +30197 : 12 +30198 : 13 +30199 : 13 +30200 : 14 +30201 : 14 +30202 : 15 +30203 : 15 +30204 : 16 +30205 : 16 +30206 : 16 +30207 : 15 +30208 : 15 +30209 : 14 +30210 : 14 +30211 : 13 +30212 : 13 +30213 : 12 +30214 : 12 +30215 : 11 +30216 : 11 +30217 : 10 +30218 : 10 +30219 : 9 +30220 : 9 +30221 : 8 +30222 : 8 +30223 : 7 +30224 : 7 +30225 : 6 +30226 : 6 +30227 : 5 +30228 : 5 +30229 : 4 +30230 : 4 +30231 : 3 +30232 : 3 +30233 : 2 +30234 : 3 +30235 : 3 +30236 : 4 +30237 : 4 +30238 : 5 +30239 : 5 +30240 : 6 +30241 : 6 +30242 : 6 +30243 : 5 +30244 : 5 +30245 : 4 +30246 : 4 +30247 : 3 +30248 : 3 +30249 : 2 +30250 : 2 +30251 : 1 +30252 : 1 +30253 : 0 +30254 : 1 +30255 : 1 +30256 : 2 +30257 : 2 +30258 : 3 +30259 : 3 +30260 : 4 +30261 : 4 +30262 : 5 +30263 : 5 +30264 : 6 +30265 : 6 +30266 : 7 +30267 : 7 +30268 : 8 +30269 : 8 +30270 : 9 +30271 : 9 +30272 : 10 +30273 : 10 +30274 : 11 +30275 : 11 +30276 : 11 +30277 : 11 +30278 : 10 +30279 : 10 +30280 : 9 +30281 : 9 +30282 : 8 +30283 : 9 +30284 : 9 +30285 : 10 +30286 : 10 +30287 : 11 +30288 : 11 +30289 : 12 +30290 : 12 +30291 : 13 +30292 : 13 +30293 : 13 +30294 : 12 +30295 : 12 +30296 : 0 +30297 : 0 +30298 : 417 +30299 : 0 +30300 : 10 +30301 : 11 +30302 : 12 +30303 : 12 +30304 : 13 +30305 : 13 +30306 : 14 +30307 : 14 +30308 : 15 +30309 : 15 +30310 : 16 +30311 : 16 +30312 : 16 +30313 : 15 +30314 : 15 +30315 : 14 +30316 : 14 +30317 : 13 +30318 : 13 +30319 : 12 +30320 : 12 +30321 : 11 +30322 : 11 +30323 : 10 +30324 : 10 +30325 : 9 +30326 : 9 +30327 : 8 +30328 : 8 +30329 : 7 +30330 : 7 +30331 : 6 +30332 : 6 +30333 : 5 +30334 : 5 +30335 : 4 +30336 : 4 +30337 : 3 +30338 : 4 +30339 : 4 +30340 : 5 +30341 : 5 +30342 : 6 +30343 : 6 +30344 : 7 +30345 : 7 +30346 : 6 +30347 : 6 +30348 : 5 +30349 : 5 +30350 : 4 +30351 : 4 +30352 : 3 +30353 : 3 +30354 : 2 +30355 : 2 +30356 : 1 +30357 : 1 +30358 : 0 +30359 : 1 +30360 : 1 +30361 : 2 +30362 : 2 +30363 : 3 +30364 : 3 +30365 : 4 +30366 : 4 +30367 : 5 +30368 : 5 +30369 : 6 +30370 : 6 +30371 : 7 +30372 : 7 +30373 : 8 +30374 : 8 +30375 : 9 +30376 : 9 +30377 : 10 +30378 : 10 +30379 : 11 +30380 : 10 +30381 : 10 +30382 : 9 +30383 : 9 +30384 : 8 +30385 : 8 +30386 : 7 +30387 : 8 +30388 : 8 +30389 : 9 +30390 : 9 +30391 : 10 +30392 : 10 +30393 : 11 +30394 : 11 +30395 : 12 +30396 : 12 +30397 : 12 +30398 : 11 +30399 : 11 +30400 : 0 +30401 : 0 +30402 : 417 +30403 : 0 +30404 : 10 +30405 : 11 +30406 : 12 +30407 : 12 +30408 : 13 +30409 : 13 +30410 : 14 +30411 : 14 +30412 : 15 +30413 : 15 +30414 : 16 +30415 : 16 +30416 : 16 +30417 : 15 +30418 : 15 +30419 : 14 +30420 : 14 +30421 : 13 +30422 : 13 +30423 : 12 +30424 : 12 +30425 : 11 +30426 : 11 +30427 : 10 +30428 : 10 +30429 : 9 +30430 : 9 +30431 : 8 +30432 : 8 +30433 : 7 +30434 : 7 +30435 : 6 +30436 : 6 +30437 : 5 +30438 : 5 +30439 : 4 +30440 : 4 +30441 : 3 +30442 : 4 +30443 : 4 +30444 : 5 +30445 : 5 +30446 : 6 +30447 : 6 +30448 : 7 +30449 : 7 +30450 : 7 +30451 : 6 +30452 : 6 +30453 : 5 +30454 : 5 +30455 : 4 +30456 : 4 +30457 : 3 +30458 : 3 +30459 : 2 +30460 : 2 +30461 : 1 +30462 : 1 +30463 : 0 +30464 : 1 +30465 : 1 +30466 : 2 +30467 : 2 +30468 : 3 +30469 : 3 +30470 : 4 +30471 : 4 +30472 : 5 +30473 : 5 +30474 : 6 +30475 : 6 +30476 : 7 +30477 : 7 +30478 : 8 +30479 : 8 +30480 : 9 +30481 : 9 +30482 : 10 +30483 : 10 +30484 : 10 +30485 : 10 +30486 : 9 +30487 : 9 +30488 : 8 +30489 : 8 +30490 : 7 +30491 : 8 +30492 : 8 +30493 : 9 +30494 : 9 +30495 : 10 +30496 : 10 +30497 : 11 +30498 : 11 +30499 : 12 +30500 : 12 +30501 : 12 +30502 : 11 +30503 : 11 +30504 : 0 +30505 : 0 +30506 : 417 +30507 : 0 +30508 : 9 +30509 : 10 +30510 : 11 +30511 : 11 +30512 : 12 +30513 : 12 +30514 : 13 +30515 : 13 +30516 : 14 +30517 : 14 +30518 : 15 +30519 : 15 +30520 : 16 +30521 : 16 +30522 : 16 +30523 : 15 +30524 : 15 +30525 : 14 +30526 : 14 +30527 : 13 +30528 : 13 +30529 : 12 +30530 : 12 +30531 : 11 +30532 : 11 +30533 : 10 +30534 : 10 +30535 : 9 +30536 : 9 +30537 : 8 +30538 : 8 +30539 : 7 +30540 : 7 +30541 : 6 +30542 : 6 +30543 : 5 +30544 : 5 +30545 : 4 +30546 : 5 +30547 : 5 +30548 : 6 +30549 : 6 +30550 : 7 +30551 : 7 +30552 : 8 +30553 : 8 +30554 : 7 +30555 : 7 +30556 : 6 +30557 : 6 +30558 : 5 +30559 : 5 +30560 : 4 +30561 : 4 +30562 : 3 +30563 : 3 +30564 : 2 +30565 : 2 +30566 : 1 +30567 : 1 +30568 : 0 +30569 : 1 +30570 : 1 +30571 : 2 +30572 : 2 +30573 : 3 +30574 : 3 +30575 : 4 +30576 : 4 +30577 : 5 +30578 : 5 +30579 : 6 +30580 : 6 +30581 : 7 +30582 : 7 +30583 : 8 +30584 : 8 +30585 : 9 +30586 : 9 +30587 : 10 +30588 : 9 +30589 : 9 +30590 : 8 +30591 : 8 +30592 : 7 +30593 : 7 +30594 : 6 +30595 : 7 +30596 : 7 +30597 : 8 +30598 : 8 +30599 : 9 +30600 : 9 +30601 : 10 +30602 : 10 +30603 : 11 +30604 : 11 +30605 : 11 +30606 : 10 +30607 : 10 +30608 : 0 +30609 : 0 +30610 : 417 +30611 : 0 +30612 : 9 +30613 : 10 +30614 : 11 +30615 : 11 +30616 : 12 +30617 : 12 +30618 : 13 +30619 : 13 +30620 : 14 +30621 : 14 +30622 : 15 +30623 : 15 +30624 : 16 +30625 : 16 +30626 : 16 +30627 : 15 +30628 : 15 +30629 : 14 +30630 : 14 +30631 : 13 +30632 : 13 +30633 : 12 +30634 : 12 +30635 : 11 +30636 : 11 +30637 : 10 +30638 : 10 +30639 : 9 +30640 : 9 +30641 : 8 +30642 : 8 +30643 : 7 +30644 : 7 +30645 : 6 +30646 : 6 +30647 : 5 +30648 : 5 +30649 : 4 +30650 : 5 +30651 : 5 +30652 : 6 +30653 : 6 +30654 : 7 +30655 : 7 +30656 : 8 +30657 : 8 +30658 : 8 +30659 : 7 +30660 : 7 +30661 : 6 +30662 : 6 +30663 : 5 +30664 : 5 +30665 : 4 +30666 : 4 +30667 : 3 +30668 : 3 +30669 : 2 +30670 : 2 +30671 : 1 +30672 : 1 +30673 : 0 +30674 : 1 +30675 : 1 +30676 : 2 +30677 : 2 +30678 : 3 +30679 : 3 +30680 : 4 +30681 : 4 +30682 : 5 +30683 : 5 +30684 : 6 +30685 : 6 +30686 : 7 +30687 : 7 +30688 : 8 +30689 : 8 +30690 : 9 +30691 : 9 +30692 : 9 +30693 : 9 +30694 : 8 +30695 : 8 +30696 : 7 +30697 : 7 +30698 : 6 +30699 : 7 +30700 : 7 +30701 : 8 +30702 : 8 +30703 : 9 +30704 : 9 +30705 : 10 +30706 : 10 +30707 : 11 +30708 : 11 +30709 : 11 +30710 : 10 +30711 : 10 +30712 : 0 +30713 : 0 +30714 : 417 +30715 : 0 +30716 : 8 +30717 : 9 +30718 : 10 +30719 : 10 +30720 : 11 +30721 : 11 +30722 : 12 +30723 : 12 +30724 : 13 +30725 : 13 +30726 : 14 +30727 : 14 +30728 : 15 +30729 : 15 +30730 : 16 +30731 : 16 +30732 : 16 +30733 : 15 +30734 : 15 +30735 : 14 +30736 : 14 +30737 : 13 +30738 : 13 +30739 : 12 +30740 : 12 +30741 : 11 +30742 : 11 +30743 : 10 +30744 : 10 +30745 : 9 +30746 : 9 +30747 : 8 +30748 : 8 +30749 : 7 +30750 : 7 +30751 : 6 +30752 : 6 +30753 : 5 +30754 : 6 +30755 : 6 +30756 : 7 +30757 : 7 +30758 : 8 +30759 : 8 +30760 : 9 +30761 : 9 +30762 : 8 +30763 : 8 +30764 : 7 +30765 : 7 +30766 : 6 +30767 : 6 +30768 : 5 +30769 : 5 +30770 : 4 +30771 : 4 +30772 : 3 +30773 : 3 +30774 : 2 +30775 : 2 +30776 : 1 +30777 : 1 +30778 : 0 +30779 : 1 +30780 : 1 +30781 : 2 +30782 : 2 +30783 : 3 +30784 : 3 +30785 : 4 +30786 : 4 +30787 : 5 +30788 : 5 +30789 : 6 +30790 : 6 +30791 : 7 +30792 : 7 +30793 : 8 +30794 : 8 +30795 : 9 +30796 : 8 +30797 : 8 +30798 : 7 +30799 : 7 +30800 : 6 +30801 : 6 +30802 : 5 +30803 : 6 +30804 : 6 +30805 : 7 +30806 : 7 +30807 : 8 +30808 : 8 +30809 : 9 +30810 : 9 +30811 : 10 +30812 : 10 +30813 : 10 +30814 : 9 +30815 : 9 +30816 : 0 +30817 : 0 +30818 : 417 +30819 : 0 +30820 : 8 +30821 : 9 +30822 : 10 +30823 : 10 +30824 : 11 +30825 : 11 +30826 : 12 +30827 : 12 +30828 : 13 +30829 : 13 +30830 : 14 +30831 : 14 +30832 : 15 +30833 : 15 +30834 : 16 +30835 : 16 +30836 : 16 +30837 : 15 +30838 : 15 +30839 : 14 +30840 : 14 +30841 : 13 +30842 : 13 +30843 : 12 +30844 : 12 +30845 : 11 +30846 : 11 +30847 : 10 +30848 : 10 +30849 : 9 +30850 : 9 +30851 : 8 +30852 : 8 +30853 : 7 +30854 : 7 +30855 : 6 +30856 : 6 +30857 : 5 +30858 : 6 +30859 : 6 +30860 : 7 +30861 : 7 +30862 : 8 +30863 : 8 +30864 : 9 +30865 : 9 +30866 : 9 +30867 : 8 +30868 : 8 +30869 : 7 +30870 : 7 +30871 : 6 +30872 : 6 +30873 : 5 +30874 : 5 +30875 : 4 +30876 : 4 +30877 : 3 +30878 : 3 +30879 : 2 +30880 : 2 +30881 : 1 +30882 : 1 +30883 : 0 +30884 : 1 +30885 : 1 +30886 : 2 +30887 : 2 +30888 : 3 +30889 : 3 +30890 : 4 +30891 : 4 +30892 : 5 +30893 : 5 +30894 : 6 +30895 : 6 +30896 : 7 +30897 : 7 +30898 : 8 +30899 : 8 +30900 : 8 +30901 : 8 +30902 : 7 +30903 : 7 +30904 : 6 +30905 : 6 +30906 : 5 +30907 : 6 +30908 : 6 +30909 : 7 +30910 : 7 +30911 : 8 +30912 : 8 +30913 : 9 +30914 : 9 +30915 : 10 +30916 : 10 +30917 : 10 +30918 : 9 +30919 : 9 +30920 : 0 +30921 : 0 +30922 : 417 +30923 : 0 +30924 : 7 +30925 : 8 +30926 : 9 +30927 : 9 +30928 : 10 +30929 : 10 +30930 : 11 +30931 : 11 +30932 : 12 +30933 : 12 +30934 : 13 +30935 : 13 +30936 : 14 +30937 : 14 +30938 : 15 +30939 : 15 +30940 : 16 +30941 : 16 +30942 : 16 +30943 : 15 +30944 : 15 +30945 : 14 +30946 : 14 +30947 : 13 +30948 : 13 +30949 : 12 +30950 : 12 +30951 : 11 +30952 : 11 +30953 : 10 +30954 : 10 +30955 : 9 +30956 : 9 +30957 : 8 +30958 : 8 +30959 : 7 +30960 : 7 +30961 : 6 +30962 : 7 +30963 : 7 +30964 : 8 +30965 : 8 +30966 : 9 +30967 : 9 +30968 : 10 +30969 : 10 +30970 : 9 +30971 : 9 +30972 : 8 +30973 : 8 +30974 : 7 +30975 : 7 +30976 : 6 +30977 : 6 +30978 : 5 +30979 : 5 +30980 : 4 +30981 : 4 +30982 : 3 +30983 : 3 +30984 : 2 +30985 : 2 +30986 : 1 +30987 : 1 +30988 : 0 +30989 : 1 +30990 : 1 +30991 : 2 +30992 : 2 +30993 : 3 +30994 : 3 +30995 : 4 +30996 : 4 +30997 : 5 +30998 : 5 +30999 : 6 +31000 : 6 +31001 : 7 +31002 : 7 +31003 : 8 +31004 : 7 +31005 : 7 +31006 : 6 +31007 : 6 +31008 : 5 +31009 : 5 +31010 : 4 +31011 : 5 +31012 : 5 +31013 : 6 +31014 : 6 +31015 : 7 +31016 : 7 +31017 : 8 +31018 : 8 +31019 : 9 +31020 : 9 +31021 : 9 +31022 : 8 +31023 : 8 +31024 : 0 +31025 : 0 +31026 : 417 +31027 : 0 +31028 : 7 +31029 : 8 +31030 : 9 +31031 : 9 +31032 : 10 +31033 : 10 +31034 : 11 +31035 : 11 +31036 : 12 +31037 : 12 +31038 : 13 +31039 : 13 +31040 : 14 +31041 : 14 +31042 : 15 +31043 : 15 +31044 : 16 +31045 : 16 +31046 : 16 +31047 : 15 +31048 : 15 +31049 : 14 +31050 : 14 +31051 : 13 +31052 : 13 +31053 : 12 +31054 : 12 +31055 : 11 +31056 : 11 +31057 : 10 +31058 : 10 +31059 : 9 +31060 : 9 +31061 : 8 +31062 : 8 +31063 : 7 +31064 : 7 +31065 : 6 +31066 : 7 +31067 : 7 +31068 : 8 +31069 : 8 +31070 : 9 +31071 : 9 +31072 : 10 +31073 : 10 +31074 : 10 +31075 : 9 +31076 : 9 +31077 : 8 +31078 : 8 +31079 : 7 +31080 : 7 +31081 : 6 +31082 : 6 +31083 : 5 +31084 : 5 +31085 : 4 +31086 : 4 +31087 : 3 +31088 : 3 +31089 : 2 +31090 : 2 +31091 : 1 +31092 : 1 +31093 : 0 +31094 : 1 +31095 : 1 +31096 : 2 +31097 : 2 +31098 : 3 +31099 : 3 +31100 : 4 +31101 : 4 +31102 : 5 +31103 : 5 +31104 : 6 +31105 : 6 +31106 : 7 +31107 : 7 +31108 : 7 +31109 : 7 +31110 : 6 +31111 : 6 +31112 : 5 +31113 : 5 +31114 : 4 +31115 : 5 +31116 : 5 +31117 : 6 +31118 : 6 +31119 : 7 +31120 : 7 +31121 : 8 +31122 : 8 +31123 : 9 +31124 : 9 +31125 : 9 +31126 : 8 +31127 : 8 +31128 : 0 +31129 : 0 +31130 : 417 +31131 : 0 +31132 : 6 +31133 : 7 +31134 : 8 +31135 : 8 +31136 : 9 +31137 : 9 +31138 : 10 +31139 : 10 +31140 : 11 +31141 : 11 +31142 : 12 +31143 : 12 +31144 : 13 +31145 : 13 +31146 : 14 +31147 : 14 +31148 : 15 +31149 : 15 +31150 : 16 +31151 : 16 +31152 : 16 +31153 : 15 +31154 : 15 +31155 : 14 +31156 : 14 +31157 : 13 +31158 : 13 +31159 : 12 +31160 : 12 +31161 : 11 +31162 : 11 +31163 : 10 +31164 : 10 +31165 : 9 +31166 : 9 +31167 : 8 +31168 : 8 +31169 : 7 +31170 : 8 +31171 : 8 +31172 : 9 +31173 : 9 +31174 : 10 +31175 : 10 +31176 : 11 +31177 : 11 +31178 : 10 +31179 : 10 +31180 : 9 +31181 : 9 +31182 : 8 +31183 : 8 +31184 : 7 +31185 : 7 +31186 : 6 +31187 : 6 +31188 : 5 +31189 : 5 +31190 : 4 +31191 : 4 +31192 : 3 +31193 : 3 +31194 : 2 +31195 : 2 +31196 : 1 +31197 : 1 +31198 : 0 +31199 : 1 +31200 : 1 +31201 : 2 +31202 : 2 +31203 : 3 +31204 : 3 +31205 : 4 +31206 : 4 +31207 : 5 +31208 : 5 +31209 : 6 +31210 : 6 +31211 : 7 +31212 : 6 +31213 : 6 +31214 : 5 +31215 : 5 +31216 : 4 +31217 : 4 +31218 : 3 +31219 : 4 +31220 : 4 +31221 : 5 +31222 : 5 +31223 : 6 +31224 : 6 +31225 : 7 +31226 : 7 +31227 : 8 +31228 : 8 +31229 : 8 +31230 : 7 +31231 : 7 +31232 : 0 +31233 : 0 +31234 : 417 +31235 : 0 +31236 : 6 +31237 : 7 +31238 : 8 +31239 : 8 +31240 : 9 +31241 : 9 +31242 : 10 +31243 : 10 +31244 : 11 +31245 : 11 +31246 : 12 +31247 : 12 +31248 : 13 +31249 : 13 +31250 : 14 +31251 : 14 +31252 : 15 +31253 : 15 +31254 : 16 +31255 : 16 +31256 : 16 +31257 : 15 +31258 : 15 +31259 : 14 +31260 : 14 +31261 : 13 +31262 : 13 +31263 : 12 +31264 : 12 +31265 : 11 +31266 : 11 +31267 : 10 +31268 : 10 +31269 : 9 +31270 : 9 +31271 : 8 +31272 : 8 +31273 : 7 +31274 : 8 +31275 : 8 +31276 : 9 +31277 : 9 +31278 : 10 +31279 : 10 +31280 : 11 +31281 : 11 +31282 : 11 +31283 : 10 +31284 : 10 +31285 : 9 +31286 : 9 +31287 : 8 +31288 : 8 +31289 : 7 +31290 : 7 +31291 : 6 +31292 : 6 +31293 : 5 +31294 : 5 +31295 : 4 +31296 : 4 +31297 : 3 +31298 : 3 +31299 : 2 +31300 : 2 +31301 : 1 +31302 : 1 +31303 : 0 +31304 : 1 +31305 : 1 +31306 : 2 +31307 : 2 +31308 : 3 +31309 : 3 +31310 : 4 +31311 : 4 +31312 : 5 +31313 : 5 +31314 : 6 +31315 : 6 +31316 : 6 +31317 : 6 +31318 : 5 +31319 : 5 +31320 : 4 +31321 : 4 +31322 : 3 +31323 : 4 +31324 : 4 +31325 : 5 +31326 : 5 +31327 : 6 +31328 : 6 +31329 : 7 +31330 : 7 +31331 : 8 +31332 : 8 +31333 : 8 +31334 : 7 +31335 : 7 +31336 : 0 +31337 : 0 +31338 : 417 +31339 : 0 +31340 : 5 +31341 : 6 +31342 : 7 +31343 : 7 +31344 : 8 +31345 : 8 +31346 : 9 +31347 : 9 +31348 : 10 +31349 : 10 +31350 : 11 +31351 : 11 +31352 : 12 +31353 : 12 +31354 : 13 +31355 : 13 +31356 : 14 +31357 : 14 +31358 : 15 +31359 : 15 +31360 : 16 +31361 : 16 +31362 : 16 +31363 : 15 +31364 : 15 +31365 : 14 +31366 : 14 +31367 : 13 +31368 : 13 +31369 : 12 +31370 : 12 +31371 : 11 +31372 : 11 +31373 : 10 +31374 : 10 +31375 : 9 +31376 : 9 +31377 : 8 +31378 : 9 +31379 : 9 +31380 : 10 +31381 : 10 +31382 : 11 +31383 : 11 +31384 : 12 +31385 : 12 +31386 : 11 +31387 : 11 +31388 : 10 +31389 : 10 +31390 : 9 +31391 : 9 +31392 : 8 +31393 : 8 +31394 : 7 +31395 : 7 +31396 : 6 +31397 : 6 +31398 : 5 +31399 : 5 +31400 : 4 +31401 : 4 +31402 : 3 +31403 : 3 +31404 : 2 +31405 : 2 +31406 : 1 +31407 : 1 +31408 : 0 +31409 : 1 +31410 : 1 +31411 : 2 +31412 : 2 +31413 : 3 +31414 : 3 +31415 : 4 +31416 : 4 +31417 : 5 +31418 : 5 +31419 : 6 +31420 : 5 +31421 : 5 +31422 : 4 +31423 : 4 +31424 : 3 +31425 : 3 +31426 : 2 +31427 : 3 +31428 : 3 +31429 : 4 +31430 : 4 +31431 : 5 +31432 : 5 +31433 : 6 +31434 : 6 +31435 : 7 +31436 : 7 +31437 : 7 +31438 : 6 +31439 : 6 +31440 : 0 +31441 : 0 +31442 : 417 +31443 : 0 +31444 : 5 +31445 : 6 +31446 : 7 +31447 : 7 +31448 : 8 +31449 : 8 +31450 : 9 +31451 : 9 +31452 : 10 +31453 : 10 +31454 : 11 +31455 : 11 +31456 : 12 +31457 : 12 +31458 : 13 +31459 : 13 +31460 : 14 +31461 : 14 +31462 : 15 +31463 : 15 +31464 : 16 +31465 : 16 +31466 : 16 +31467 : 15 +31468 : 15 +31469 : 14 +31470 : 14 +31471 : 13 +31472 : 13 +31473 : 12 +31474 : 12 +31475 : 11 +31476 : 11 +31477 : 10 +31478 : 10 +31479 : 9 +31480 : 9 +31481 : 8 +31482 : 9 +31483 : 9 +31484 : 10 +31485 : 10 +31486 : 11 +31487 : 11 +31488 : 12 +31489 : 12 +31490 : 12 +31491 : 11 +31492 : 11 +31493 : 10 +31494 : 10 +31495 : 9 +31496 : 9 +31497 : 8 +31498 : 8 +31499 : 7 +31500 : 7 +31501 : 6 +31502 : 6 +31503 : 5 +31504 : 5 +31505 : 4 +31506 : 4 +31507 : 3 +31508 : 3 +31509 : 2 +31510 : 2 +31511 : 1 +31512 : 1 +31513 : 0 +31514 : 1 +31515 : 1 +31516 : 2 +31517 : 2 +31518 : 3 +31519 : 3 +31520 : 4 +31521 : 4 +31522 : 5 +31523 : 5 +31524 : 5 +31525 : 5 +31526 : 4 +31527 : 4 +31528 : 3 +31529 : 3 +31530 : 2 +31531 : 3 +31532 : 3 +31533 : 4 +31534 : 4 +31535 : 5 +31536 : 5 +31537 : 6 +31538 : 6 +31539 : 7 +31540 : 7 +31541 : 7 +31542 : 6 +31543 : 6 +31544 : 0 +31545 : 0 +31546 : 417 +31547 : 0 +31548 : 4 +31549 : 5 +31550 : 6 +31551 : 6 +31552 : 7 +31553 : 7 +31554 : 8 +31555 : 8 +31556 : 9 +31557 : 9 +31558 : 10 +31559 : 10 +31560 : 11 +31561 : 11 +31562 : 12 +31563 : 12 +31564 : 13 +31565 : 13 +31566 : 14 +31567 : 14 +31568 : 15 +31569 : 15 +31570 : 16 +31571 : 16 +31572 : 16 +31573 : 15 +31574 : 15 +31575 : 14 +31576 : 14 +31577 : 13 +31578 : 13 +31579 : 12 +31580 : 12 +31581 : 11 +31582 : 11 +31583 : 10 +31584 : 10 +31585 : 9 +31586 : 10 +31587 : 10 +31588 : 11 +31589 : 11 +31590 : 12 +31591 : 12 +31592 : 13 +31593 : 13 +31594 : 12 +31595 : 12 +31596 : 11 +31597 : 11 +31598 : 10 +31599 : 10 +31600 : 9 +31601 : 9 +31602 : 8 +31603 : 8 +31604 : 7 +31605 : 7 +31606 : 6 +31607 : 6 +31608 : 5 +31609 : 5 +31610 : 4 +31611 : 4 +31612 : 3 +31613 : 3 +31614 : 2 +31615 : 2 +31616 : 1 +31617 : 1 +31618 : 0 +31619 : 2 +31620 : 1 +31621 : 2 +31622 : 2 +31623 : 3 +31624 : 3 +31625 : 4 +31626 : 4 +31627 : 5 +31628 : 4 +31629 : 4 +31630 : 3 +31631 : 3 +31632 : 2 +31633 : 2 +31634 : 1 +31635 : 2 +31636 : 2 +31637 : 3 +31638 : 3 +31639 : 4 +31640 : 4 +31641 : 5 +31642 : 5 +31643 : 6 +31644 : 6 +31645 : 6 +31646 : 5 +31647 : 5 +31648 : 0 +31649 : 0 +31650 : 417 +31651 : 0 +31652 : 6 +31653 : 7 +31654 : 8 +31655 : 8 +31656 : 9 +31657 : 9 +31658 : 10 +31659 : 10 +31660 : 11 +31661 : 11 +31662 : 12 +31663 : 12 +31664 : 13 +31665 : 13 +31666 : 14 +31667 : 14 +31668 : 15 +31669 : 15 +31670 : 16 +31671 : 16 +31672 : 17 +31673 : 17 +31674 : 17 +31675 : 16 +31676 : 16 +31677 : 15 +31678 : 15 +31679 : 14 +31680 : 14 +31681 : 13 +31682 : 13 +31683 : 12 +31684 : 12 +31685 : 11 +31686 : 11 +31687 : 10 +31688 : 10 +31689 : 9 +31690 : 10 +31691 : 10 +31692 : 11 +31693 : 11 +31694 : 12 +31695 : 12 +31696 : 13 +31697 : 13 +31698 : 13 +31699 : 12 +31700 : 12 +31701 : 11 +31702 : 11 +31703 : 10 +31704 : 10 +31705 : 9 +31706 : 9 +31707 : 8 +31708 : 8 +31709 : 7 +31710 : 7 +31711 : 6 +31712 : 6 +31713 : 5 +31714 : 5 +31715 : 4 +31716 : 4 +31717 : 3 +31718 : 3 +31719 : 2 +31720 : 2 +31721 : 1 +31722 : 2 +31723 : 0 +31724 : 1 +31725 : 1 +31726 : 2 +31727 : 2 +31728 : 3 +31729 : 3 +31730 : 4 +31731 : 4 +31732 : 5 +31733 : 5 +31734 : 5 +31735 : 5 +31736 : 4 +31737 : 4 +31738 : 3 +31739 : 4 +31740 : 4 +31741 : 5 +31742 : 5 +31743 : 6 +31744 : 6 +31745 : 7 +31746 : 7 +31747 : 8 +31748 : 8 +31749 : 8 +31750 : 7 +31751 : 7 +31752 : 0 +31753 : 0 +31754 : 417 +31755 : 0 +31756 : 5 +31757 : 6 +31758 : 7 +31759 : 7 +31760 : 8 +31761 : 8 +31762 : 9 +31763 : 9 +31764 : 10 +31765 : 10 +31766 : 11 +31767 : 11 +31768 : 12 +31769 : 12 +31770 : 13 +31771 : 13 +31772 : 14 +31773 : 14 +31774 : 15 +31775 : 15 +31776 : 16 +31777 : 16 +31778 : 17 +31779 : 17 +31780 : 17 +31781 : 16 +31782 : 16 +31783 : 15 +31784 : 15 +31785 : 14 +31786 : 14 +31787 : 13 +31788 : 13 +31789 : 12 +31790 : 12 +31791 : 11 +31792 : 11 +31793 : 10 +31794 : 11 +31795 : 11 +31796 : 12 +31797 : 12 +31798 : 13 +31799 : 13 +31800 : 14 +31801 : 14 +31802 : 13 +31803 : 13 +31804 : 12 +31805 : 12 +31806 : 11 +31807 : 11 +31808 : 10 +31809 : 10 +31810 : 9 +31811 : 9 +31812 : 8 +31813 : 8 +31814 : 7 +31815 : 7 +31816 : 6 +31817 : 6 +31818 : 5 +31819 : 5 +31820 : 4 +31821 : 4 +31822 : 3 +31823 : 3 +31824 : 2 +31825 : 2 +31826 : 1 +31827 : 1 +31828 : 0 +31829 : 1 +31830 : 1 +31831 : 2 +31832 : 2 +31833 : 3 +31834 : 3 +31835 : 4 +31836 : 4 +31837 : 5 +31838 : 4 +31839 : 4 +31840 : 3 +31841 : 3 +31842 : 2 +31843 : 3 +31844 : 3 +31845 : 4 +31846 : 4 +31847 : 5 +31848 : 5 +31849 : 6 +31850 : 6 +31851 : 7 +31852 : 7 +31853 : 7 +31854 : 6 +31855 : 6 +31856 : 0 +31857 : 0 +31858 : 417 +31859 : 0 +31860 : 6 +31861 : 7 +31862 : 8 +31863 : 8 +31864 : 9 +31865 : 9 +31866 : 10 +31867 : 10 +31868 : 11 +31869 : 11 +31870 : 12 +31871 : 12 +31872 : 13 +31873 : 13 +31874 : 14 +31875 : 14 +31876 : 15 +31877 : 15 +31878 : 16 +31879 : 16 +31880 : 17 +31881 : 17 +31882 : 18 +31883 : 17 +31884 : 17 +31885 : 16 +31886 : 16 +31887 : 15 +31888 : 15 +31889 : 14 +31890 : 14 +31891 : 13 +31892 : 13 +31893 : 12 +31894 : 12 +31895 : 11 +31896 : 11 +31897 : 10 +31898 : 11 +31899 : 11 +31900 : 12 +31901 : 12 +31902 : 13 +31903 : 13 +31904 : 14 +31905 : 14 +31906 : 14 +31907 : 13 +31908 : 13 +31909 : 12 +31910 : 12 +31911 : 11 +31912 : 11 +31913 : 10 +31914 : 10 +31915 : 9 +31916 : 9 +31917 : 8 +31918 : 8 +31919 : 7 +31920 : 7 +31921 : 6 +31922 : 6 +31923 : 5 +31924 : 5 +31925 : 4 +31926 : 4 +31927 : 3 +31928 : 3 +31929 : 2 +31930 : 2 +31931 : 1 +31932 : 1 +31933 : 0 +31934 : 1 +31935 : 1 +31936 : 2 +31937 : 2 +31938 : 3 +31939 : 3 +31940 : 4 +31941 : 4 +31942 : 5 +31943 : 5 +31944 : 4 +31945 : 4 +31946 : 3 +31947 : 4 +31948 : 4 +31949 : 5 +31950 : 5 +31951 : 6 +31952 : 6 +31953 : 7 +31954 : 7 +31955 : 8 +31956 : 8 +31957 : 8 +31958 : 7 +31959 : 7 +31960 : 0 +31961 : 0 +31962 : 417 +31963 : 0 +31964 : 6 +31965 : 7 +31966 : 8 +31967 : 8 +31968 : 9 +31969 : 9 +31970 : 10 +31971 : 10 +31972 : 11 +31973 : 11 +31974 : 12 +31975 : 12 +31976 : 13 +31977 : 13 +31978 : 14 +31979 : 14 +31980 : 15 +31981 : 15 +31982 : 16 +31983 : 16 +31984 : 17 +31985 : 17 +31986 : 18 +31987 : 18 +31988 : 18 +31989 : 17 +31990 : 17 +31991 : 16 +31992 : 16 +31993 : 15 +31994 : 15 +31995 : 14 +31996 : 14 +31997 : 13 +31998 : 13 +31999 : 12 +32000 : 12 +32001 : 11 +32002 : 12 +32003 : 12 +32004 : 13 +32005 : 13 +32006 : 14 +32007 : 14 +32008 : 15 +32009 : 15 +32010 : 14 +32011 : 14 +32012 : 13 +32013 : 13 +32014 : 12 +32015 : 12 +32016 : 11 +32017 : 11 +32018 : 10 +32019 : 10 +32020 : 9 +32021 : 9 +32022 : 8 +32023 : 8 +32024 : 7 +32025 : 7 +32026 : 6 +32027 : 6 +32028 : 5 +32029 : 5 +32030 : 4 +32031 : 4 +32032 : 3 +32033 : 3 +32034 : 2 +32035 : 2 +32036 : 1 +32037 : 1 +32038 : 0 +32039 : 1 +32040 : 1 +32041 : 2 +32042 : 2 +32043 : 3 +32044 : 3 +32045 : 4 +32046 : 4 +32047 : 5 +32048 : 4 +32049 : 4 +32050 : 3 +32051 : 4 +32052 : 4 +32053 : 5 +32054 : 5 +32055 : 6 +32056 : 6 +32057 : 7 +32058 : 7 +32059 : 8 +32060 : 8 +32061 : 8 +32062 : 7 +32063 : 7 +32064 : 0 +32065 : 0 +32066 : 417 +32067 : 0 +32068 : 7 +32069 : 8 +32070 : 9 +32071 : 9 +32072 : 10 +32073 : 10 +32074 : 11 +32075 : 11 +32076 : 12 +32077 : 12 +32078 : 13 +32079 : 13 +32080 : 14 +32081 : 14 +32082 : 15 +32083 : 15 +32084 : 16 +32085 : 16 +32086 : 17 +32087 : 17 +32088 : 18 +32089 : 18 +32090 : 19 +32091 : 18 +32092 : 18 +32093 : 17 +32094 : 17 +32095 : 16 +32096 : 16 +32097 : 15 +32098 : 15 +32099 : 14 +32100 : 14 +32101 : 13 +32102 : 13 +32103 : 12 +32104 : 12 +32105 : 11 +32106 : 12 +32107 : 12 +32108 : 13 +32109 : 13 +32110 : 14 +32111 : 14 +32112 : 15 +32113 : 15 +32114 : 15 +32115 : 14 +32116 : 14 +32117 : 13 +32118 : 13 +32119 : 12 +32120 : 12 +32121 : 11 +32122 : 11 +32123 : 10 +32124 : 10 +32125 : 9 +32126 : 9 +32127 : 8 +32128 : 8 +32129 : 7 +32130 : 7 +32131 : 6 +32132 : 6 +32133 : 5 +32134 : 5 +32135 : 4 +32136 : 4 +32137 : 3 +32138 : 3 +32139 : 2 +32140 : 2 +32141 : 1 +32142 : 1 +32143 : 0 +32144 : 1 +32145 : 1 +32146 : 2 +32147 : 2 +32148 : 3 +32149 : 3 +32150 : 4 +32151 : 4 +32152 : 5 +32153 : 5 +32154 : 4 +32155 : 5 +32156 : 5 +32157 : 6 +32158 : 6 +32159 : 7 +32160 : 7 +32161 : 8 +32162 : 8 +32163 : 9 +32164 : 9 +32165 : 9 +32166 : 8 +32167 : 8 +32168 : 0 +32169 : 0 +32170 : 417 +32171 : 0 +32172 : 7 +32173 : 8 +32174 : 9 +32175 : 9 +32176 : 10 +32177 : 10 +32178 : 11 +32179 : 11 +32180 : 12 +32181 : 12 +32182 : 13 +32183 : 13 +32184 : 14 +32185 : 14 +32186 : 15 +32187 : 15 +32188 : 16 +32189 : 16 +32190 : 17 +32191 : 17 +32192 : 18 +32193 : 18 +32194 : 19 +32195 : 19 +32196 : 19 +32197 : 18 +32198 : 18 +32199 : 17 +32200 : 17 +32201 : 16 +32202 : 16 +32203 : 15 +32204 : 15 +32205 : 14 +32206 : 14 +32207 : 13 +32208 : 13 +32209 : 12 +32210 : 13 +32211 : 13 +32212 : 14 +32213 : 14 +32214 : 15 +32215 : 15 +32216 : 16 +32217 : 16 +32218 : 15 +32219 : 15 +32220 : 14 +32221 : 14 +32222 : 13 +32223 : 13 +32224 : 12 +32225 : 12 +32226 : 11 +32227 : 11 +32228 : 10 +32229 : 10 +32230 : 9 +32231 : 9 +32232 : 8 +32233 : 8 +32234 : 7 +32235 : 7 +32236 : 6 +32237 : 6 +32238 : 5 +32239 : 5 +32240 : 4 +32241 : 4 +32242 : 3 +32243 : 3 +32244 : 2 +32245 : 2 +32246 : 1 +32247 : 1 +32248 : 0 +32249 : 1 +32250 : 1 +32251 : 2 +32252 : 2 +32253 : 3 +32254 : 3 +32255 : 4 +32256 : 4 +32257 : 5 +32258 : 4 +32259 : 5 +32260 : 5 +32261 : 6 +32262 : 6 +32263 : 7 +32264 : 7 +32265 : 8 +32266 : 8 +32267 : 9 +32268 : 9 +32269 : 9 +32270 : 8 +32271 : 8 +32272 : 0 +32273 : 0 +32274 : 417 +32275 : 0 +32276 : 8 +32277 : 9 +32278 : 10 +32279 : 10 +32280 : 11 +32281 : 11 +32282 : 12 +32283 : 12 +32284 : 13 +32285 : 13 +32286 : 14 +32287 : 14 +32288 : 15 +32289 : 15 +32290 : 16 +32291 : 16 +32292 : 17 +32293 : 17 +32294 : 18 +32295 : 18 +32296 : 19 +32297 : 19 +32298 : 20 +32299 : 19 +32300 : 19 +32301 : 18 +32302 : 18 +32303 : 17 +32304 : 17 +32305 : 16 +32306 : 16 +32307 : 15 +32308 : 15 +32309 : 14 +32310 : 14 +32311 : 13 +32312 : 13 +32313 : 12 +32314 : 13 +32315 : 13 +32316 : 14 +32317 : 14 +32318 : 15 +32319 : 15 +32320 : 16 +32321 : 16 +32322 : 16 +32323 : 15 +32324 : 15 +32325 : 14 +32326 : 14 +32327 : 13 +32328 : 13 +32329 : 12 +32330 : 12 +32331 : 11 +32332 : 11 +32333 : 10 +32334 : 10 +32335 : 9 +32336 : 9 +32337 : 8 +32338 : 8 +32339 : 7 +32340 : 7 +32341 : 6 +32342 : 6 +32343 : 5 +32344 : 5 +32345 : 4 +32346 : 4 +32347 : 3 +32348 : 3 +32349 : 2 +32350 : 2 +32351 : 1 +32352 : 1 +32353 : 0 +32354 : 1 +32355 : 1 +32356 : 2 +32357 : 2 +32358 : 3 +32359 : 3 +32360 : 4 +32361 : 4 +32362 : 5 +32363 : 5 +32364 : 6 +32365 : 6 +32366 : 7 +32367 : 7 +32368 : 8 +32369 : 8 +32370 : 9 +32371 : 9 +32372 : 10 +32373 : 10 +32374 : 9 +32375 : 9 +32376 : 0 +32377 : 0 +32378 : 417 +32379 : 0 +32380 : 7 +32381 : 8 +32382 : 9 +32383 : 9 +32384 : 10 +32385 : 10 +32386 : 11 +32387 : 11 +32388 : 12 +32389 : 12 +32390 : 13 +32391 : 13 +32392 : 14 +32393 : 14 +32394 : 15 +32395 : 15 +32396 : 16 +32397 : 16 +32398 : 17 +32399 : 17 +32400 : 18 +32401 : 18 +32402 : 19 +32403 : 19 +32404 : 20 +32405 : 19 +32406 : 19 +32407 : 18 +32408 : 18 +32409 : 17 +32410 : 17 +32411 : 16 +32412 : 16 +32413 : 15 +32414 : 15 +32415 : 14 +32416 : 14 +32417 : 13 +32418 : 14 +32419 : 14 +32420 : 15 +32421 : 15 +32422 : 16 +32423 : 16 +32424 : 17 +32425 : 17 +32426 : 16 +32427 : 16 +32428 : 15 +32429 : 15 +32430 : 14 +32431 : 14 +32432 : 13 +32433 : 13 +32434 : 12 +32435 : 12 +32436 : 11 +32437 : 11 +32438 : 10 +32439 : 10 +32440 : 9 +32441 : 9 +32442 : 8 +32443 : 8 +32444 : 7 +32445 : 7 +32446 : 6 +32447 : 6 +32448 : 5 +32449 : 5 +32450 : 4 +32451 : 4 +32452 : 3 +32453 : 3 +32454 : 2 +32455 : 2 +32456 : 1 +32457 : 1 +32458 : 0 +32459 : 1 +32460 : 1 +32461 : 2 +32462 : 2 +32463 : 3 +32464 : 3 +32465 : 4 +32466 : 4 +32467 : 5 +32468 : 5 +32469 : 6 +32470 : 6 +32471 : 7 +32472 : 7 +32473 : 8 +32474 : 8 +32475 : 9 +32476 : 9 +32477 : 9 +32478 : 8 +32479 : 8 +32480 : 0 +32481 : 0 +32482 : 417 +32483 : 0 +32484 : 7 +32485 : 8 +32486 : 9 +32487 : 9 +32488 : 10 +32489 : 10 +32490 : 11 +32491 : 11 +32492 : 12 +32493 : 12 +32494 : 13 +32495 : 13 +32496 : 14 +32497 : 14 +32498 : 15 +32499 : 15 +32500 : 16 +32501 : 16 +32502 : 17 +32503 : 17 +32504 : 18 +32505 : 18 +32506 : 19 +32507 : 19 +32508 : 20 +32509 : 19 +32510 : 19 +32511 : 18 +32512 : 18 +32513 : 17 +32514 : 17 +32515 : 16 +32516 : 16 +32517 : 15 +32518 : 15 +32519 : 14 +32520 : 14 +32521 : 13 +32522 : 14 +32523 : 14 +32524 : 15 +32525 : 15 +32526 : 16 +32527 : 16 +32528 : 17 +32529 : 17 +32530 : 17 +32531 : 16 +32532 : 16 +32533 : 15 +32534 : 15 +32535 : 14 +32536 : 14 +32537 : 13 +32538 : 13 +32539 : 12 +32540 : 12 +32541 : 11 +32542 : 11 +32543 : 10 +32544 : 10 +32545 : 9 +32546 : 9 +32547 : 8 +32548 : 8 +32549 : 7 +32550 : 7 +32551 : 6 +32552 : 6 +32553 : 5 +32554 : 5 +32555 : 4 +32556 : 4 +32557 : 3 +32558 : 3 +32559 : 2 +32560 : 2 +32561 : 1 +32562 : 1 +32563 : 0 +32564 : 1 +32565 : 1 +32566 : 2 +32567 : 2 +32568 : 3 +32569 : 3 +32570 : 4 +32571 : 4 +32572 : 5 +32573 : 5 +32574 : 6 +32575 : 6 +32576 : 7 +32577 : 7 +32578 : 8 +32579 : 8 +32580 : 9 +32581 : 9 +32582 : 8 +32583 : 8 +32584 : 0 +32585 : 0 +32586 : 417 +32587 : 0 +32588 : 6 +32589 : 7 +32590 : 8 +32591 : 8 +32592 : 9 +32593 : 9 +32594 : 10 +32595 : 10 +32596 : 11 +32597 : 11 +32598 : 12 +32599 : 12 +32600 : 13 +32601 : 13 +32602 : 14 +32603 : 14 +32604 : 15 +32605 : 15 +32606 : 16 +32607 : 16 +32608 : 17 +32609 : 17 +32610 : 18 +32611 : 18 +32612 : 19 +32613 : 19 +32614 : 19 +32615 : 18 +32616 : 18 +32617 : 17 +32618 : 17 +32619 : 16 +32620 : 16 +32621 : 15 +32622 : 15 +32623 : 14 +32624 : 14 +32625 : 13 +32626 : 14 +32627 : 14 +32628 : 15 +32629 : 15 +32630 : 16 +32631 : 16 +32632 : 17 +32633 : 17 +32634 : 16 +32635 : 16 +32636 : 15 +32637 : 15 +32638 : 14 +32639 : 14 +32640 : 13 +32641 : 13 +32642 : 12 +32643 : 12 +32644 : 11 +32645 : 11 +32646 : 10 +32647 : 10 +32648 : 9 +32649 : 9 +32650 : 8 +32651 : 8 +32652 : 7 +32653 : 7 +32654 : 6 +32655 : 6 +32656 : 5 +32657 : 5 +32658 : 4 +32659 : 5 +32660 : 4 +32661 : 4 +32662 : 3 +32663 : 3 +32664 : 2 +32665 : 2 +32666 : 1 +32667 : 1 +32668 : 0 +32669 : 1 +32670 : 1 +32671 : 2 +32672 : 2 +32673 : 3 +32674 : 3 +32675 : 4 +32676 : 4 +32677 : 5 +32678 : 5 +32679 : 6 +32680 : 6 +32681 : 7 +32682 : 7 +32683 : 8 +32684 : 8 +32685 : 8 +32686 : 7 +32687 : 7 +32688 : 0 +32689 : 0 +32690 : 417 +32691 : 0 +32692 : 6 +32693 : 7 +32694 : 8 +32695 : 8 +32696 : 9 +32697 : 9 +32698 : 10 +32699 : 10 +32700 : 11 +32701 : 11 +32702 : 12 +32703 : 12 +32704 : 13 +32705 : 13 +32706 : 14 +32707 : 14 +32708 : 15 +32709 : 15 +32710 : 16 +32711 : 16 +32712 : 17 +32713 : 17 +32714 : 18 +32715 : 18 +32716 : 19 +32717 : 19 +32718 : 19 +32719 : 18 +32720 : 18 +32721 : 17 +32722 : 17 +32723 : 16 +32724 : 16 +32725 : 15 +32726 : 15 +32727 : 14 +32728 : 14 +32729 : 13 +32730 : 14 +32731 : 14 +32732 : 15 +32733 : 15 +32734 : 16 +32735 : 16 +32736 : 17 +32737 : 17 +32738 : 16 +32739 : 16 +32740 : 15 +32741 : 15 +32742 : 14 +32743 : 14 +32744 : 13 +32745 : 13 +32746 : 12 +32747 : 12 +32748 : 11 +32749 : 11 +32750 : 10 +32751 : 10 +32752 : 9 +32753 : 9 +32754 : 8 +32755 : 8 +32756 : 7 +32757 : 7 +32758 : 6 +32759 : 6 +32760 : 5 +32761 : 5 +32762 : 4 +32763 : 5 +32764 : 5 +32765 : 4 +32766 : 4 +32767 : 13 + +***Parents** +0 0 0 0 0 +65535 1 1 1 1 +65535 65535 2 2 2 +65535 65535 65535 3 3 +65535 65535 65535 65535 4 diff --git a/0_ontoout.net b/0_ontoout.net new file mode 100755 index 0000000..b9cd45a --- /dev/null +++ b/0_ontoout.net @@ -0,0 +1,202 @@ +*Vertices 40 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +*Arcs +1 2 1 +2 1 1 +1 27 1 +27 1 1 +2 17 1 +17 2 1 +2 4 1 +4 2 1 +3 35 1 +35 3 1 +3 15 1 +15 3 1 +4 5 1 +5 4 1 +4 39 1 +39 4 1 +5 6 1 +6 5 1 +5 8 1 +8 5 1 +6 7 1 +7 6 1 +6 8 1 +8 6 1 +7 8 1 +8 7 1 +7 9 1 +9 7 1 +8 1 1 +1 8 1 +8 10 1 +10 8 1 +9 22 1 +22 9 1 +9 11 1 +11 9 1 +10 35 1 +35 10 1 +10 12 1 +12 10 1 +11 39 1 +39 11 1 +11 28 1 +28 11 1 +12 38 1 +38 12 1 +12 14 1 +14 12 1 +13 35 1 +35 13 1 +13 29 1 +29 13 1 +14 5 1 +5 14 1 +14 7 1 +7 14 1 +15 5 1 +5 15 1 +15 7 1 +7 15 1 +16 12 1 +12 16 1 +16 23 1 +23 16 1 +17 26 1 +26 17 1 +17 21 1 +21 17 1 +18 23 1 +23 18 1 +18 20 1 +20 18 1 +19 12 1 +12 19 1 +19 13 1 +13 19 1 +20 39 1 +39 20 1 +20 23 1 +23 20 1 +21 37 1 +37 21 1 +21 10 1 +10 21 1 +22 26 1 +26 22 1 +22 24 1 +24 22 1 +23 15 1 +15 23 1 +23 10 1 +10 23 1 +24 25 1 +25 24 1 +24 10 1 +10 24 1 +25 2 1 +2 25 1 +25 18 1 +18 25 1 +26 37 1 +37 26 1 +26 28 1 +28 26 1 +27 22 1 +22 27 1 +27 7 1 +7 27 1 +28 24 1 +24 28 1 +28 8 1 +8 28 1 +29 37 1 +37 29 1 +29 13 1 +13 29 1 +30 37 1 +37 30 1 +30 8 1 +8 30 1 +31 14 1 +14 31 1 +31 13 1 +13 31 1 +32 7 1 +7 32 1 +32 11 1 +11 32 1 +33 37 1 +37 33 1 +33 36 1 +36 33 1 +34 29 1 +29 34 1 +34 36 1 +36 34 1 +35 31 1 +31 35 1 +35 38 1 +38 35 1 +36 15 1 +15 36 1 +36 38 1 +38 36 1 +37 13 1 +13 37 1 +37 21 1 +21 37 1 +38 39 1 +39 38 1 +38 40 1 +40 38 1 +39 40 1 +40 39 1 +39 1 1 +1 39 1 +40 1 1 +1 40 1 +40 29 1 +29 40 1 diff --git a/0_ontorep b/0_ontorep new file mode 100755 index 0000000..224902c --- /dev/null +++ b/0_ontorep @@ -0,0 +1,24 @@ +num_vertices=9 +Network Diameter is = 3 +***Distance matrix** +0 1 2 2 2 1 2 1 1 +1 0 1 1 2 2 2 2 1 +2 1 0 1 1 2 2 3 2 +2 1 1 0 1 1 2 2 2 +2 2 1 1 0 1 1 2 2 +1 2 2 1 1 0 1 1 2 +2 2 2 2 1 1 0 1 1 +1 2 3 2 2 1 1 0 1 +1 1 2 2 2 2 1 1 0 + + +***Parents** +0 0 1 1 5 0 5 0 0 +1 1 1 1 2 0 8 0 1 +1 2 2 2 2 3 4 5 1 +1 3 3 3 3 3 4 5 1 +5 2 4 4 4 4 4 5 6 +5 0 3 5 5 5 5 5 6 +7 8 4 4 6 6 6 6 6 +7 8 1 5 5 7 7 7 7 +8 8 1 1 6 0 8 8 8 diff --git a/100_netout.net b/100_netout.net new file mode 100755 index 0000000..4f0f53b --- /dev/null +++ b/100_netout.net @@ -0,0 +1,138 @@ +*Vertices 10 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +*Arcs +1 4  +1 3  +1 5  +1 5  +1 2  +1 5  +1 4  +1 4  +1 5  +1 2  +1 2  +1 3  +1 4  +1 5  +1 3  +1 4  +1 3  +1 7  +1 5  +1 2  +1 9  +1 8  +1 4  +1 2  +1 2  +1 3  +1 2  +1 3  +1 4  +1 3  +1 4  +1 6  +1 3  +1 5  +1 3  +1 5  +1 2  +1 5  +2 4  +2 10  +2 3  +2 5  +2 5  +2 5  +2 4  +2 4  +2 5  +2 3  +2 4  +2 5  +2 3  +2 4  +2 3  +2 7  +2 5  +2 8  +2 4  +2 3  +2 3  +2 4  +2 3  +2 4  +2 6  +2 3  +2 5  +2 3  +2 5  +2 5  +3 4  +3 10  +3 5  +3 5  +3 5  +3 4  +3 4  +3 5  +3 4  +3 5  +3 4  +3 7  +3 5  +3 9  +3 4  +3 4  +3 4  +3 6  +3 5  +3 5  +3 5  +4 10  +4 5  +4 5  +4 5  +4 5  +4 5  +4 5  +4 9  +4 8  +4 6  +4 5  +4 5  +4 5  +5 10  +5 7  +5 9  +5 8  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 5  +8 1  +8 2  +8 4  +8 5  +9 1  +9 3  +9 4  +9 5  +10 2  +10 3  +10 4  +10 5  diff --git a/100_netroutingtable b/100_netroutingtable new file mode 100755 index 0000000..958b6eb --- /dev/null +++ b/100_netroutingtable @@ -0,0 +1,105 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 2 id 3 - type 2 , +Node :0: Row 1 : Tag 11 id 2 - type 2 , +Node :0: Row 2 : Tag 15 id 4 - type 2 , +Node :0: Row 3 : Tag 19 id 4 - type 2 , +Node :0: Row 4 : Tag 21 id 1 - type 2 , id 4 - type 2 , +Node :0: Row 5 : Tag 22 id 3 - type 2 , +Node :0: Row 6 : Tag 23 id 3 - type 2 , +Node :0: Row 7 : Tag 24 id 4 - type 2 , +Node :0: Row 8 : Tag 26 id 1 - type 2 , +Node :0: Row 9 : Tag 27 id 1 - type 2 , +Node :0: Row 10 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 4 - type 2 , +Node :0: Row 11 : Tag 30 id 2 - type 2 , +Node :0: Row 12 : Tag 35 id 3 - type 2 , +Node :0: Row 13 : Tag 36 id 2 - type 2 , id 6 - type 1 , +Node :0: Row 14 : Tag 37 id 4 - type 2 , +Node :0: Row 15 : Tag 40 id 1 - type 2 , +Node :0: Row 16 : Tag 50 id 8 - type 1 , +Node :0: Row 17 : Tag 57 id 7 - type 1 , +Node :0: Row 18 : Tag 58 id 3 - type 2 , +Node :0: Row 19 : Tag 59 id 1 - type 2 , +Node :0: Row 20 : Tag 62 id 1 - type 2 , id 2 - type 2 , +Node :0: Row 21 : Tag 63 id 1 - type 2 , +Node :0: Row 22 : Tag 67 id 2 - type 2 , id 3 - type 2 , +Node :0: Row 23 : Tag 68 id 2 - type 2 , +Node :0: Row 24 : Tag 69 id 3 - type 2 , +Node :0: Row 25 : Tag 70 id 5 - type 1 , +Node :0: Row 26 : Tag 72 id 2 - type 2 , +Node :0: Row 27 : Tag 73 id 4 - type 2 , +Node :0: Row 28 : Tag 82 id 2 - type 2 , +Node :0: Row 29 : Tag 84 id 4 - type 2 , +Node :0: Row 30 : Tag 90 id 1 - type 2 , +Node :0: Row 31 : Tag 98 id 4 - type 2 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 2 id 3 - type 2 , +Node :1: Row 1 : Tag 3 id 9 - type 1 , +Node :1: Row 2 : Tag 11 id 2 - type 2 , +Node :1: Row 3 : Tag 15 id 4 - type 2 , +Node :1: Row 4 : Tag 19 id 4 - type 2 , +Node :1: Row 5 : Tag 21 id 4 - type 2 , +Node :1: Row 6 : Tag 22 id 3 - type 2 , +Node :1: Row 7 : Tag 23 id 3 - type 2 , +Node :1: Row 8 : Tag 24 id 4 - type 2 , +Node :1: Row 9 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 4 - type 2 , +Node :1: Row 10 : Tag 30 id 2 - type 2 , +Node :1: Row 11 : Tag 35 id 3 - type 2 , +Node :1: Row 12 : Tag 36 id 2 - type 2 , id 6 - type 1 , +Node :1: Row 13 : Tag 37 id 4 - type 2 , +Node :1: Row 14 : Tag 57 id 7 - type 1 , +Node :1: Row 15 : Tag 58 id 3 - type 2 , +Node :1: Row 16 : Tag 62 id 2 - type 2 , +Node :1: Row 17 : Tag 67 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 18 : Tag 68 id 2 - type 2 , +Node :1: Row 19 : Tag 69 id 3 - type 2 , +Node :1: Row 20 : Tag 70 id 5 - type 1 , +Node :1: Row 21 : Tag 72 id 2 - type 2 , +Node :1: Row 22 : Tag 73 id 4 - type 2 , +Node :1: Row 23 : Tag 82 id 2 - type 2 , +Node :1: Row 24 : Tag 84 id 4 - type 2 , +Node :1: Row 25 : Tag 98 id 4 - type 2 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 2 id 3 - type 2 , +Node :2: Row 1 : Tag 3 id 9 - type 1 , +Node :2: Row 2 : Tag 15 id 4 - type 2 , +Node :2: Row 3 : Tag 19 id 4 - type 2 , +Node :2: Row 4 : Tag 21 id 4 - type 2 , +Node :2: Row 5 : Tag 22 id 3 - type 2 , +Node :2: Row 6 : Tag 23 id 3 - type 2 , +Node :2: Row 7 : Tag 24 id 4 - type 2 , +Node :2: Row 8 : Tag 29 id 3 - type 2 , id 4 - type 2 , +Node :2: Row 9 : Tag 35 id 3 - type 2 , +Node :2: Row 10 : Tag 36 id 6 - type 1 , +Node :2: Row 11 : Tag 37 id 4 - type 2 , +Node :2: Row 12 : Tag 50 id 8 - type 1 , +Node :2: Row 13 : Tag 58 id 3 - type 2 , +Node :2: Row 14 : Tag 67 id 3 - type 2 , +Node :2: Row 15 : Tag 69 id 3 - type 2 , +Node :2: Row 16 : Tag 70 id 5 - type 1 , +Node :2: Row 17 : Tag 73 id 4 - type 2 , +Node :2: Row 18 : Tag 84 id 4 - type 2 , +Node :2: Row 19 : Tag 98 id 4 - type 2 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 3 id 9 - type 1 , +Node :3: Row 1 : Tag 15 id 4 - type 2 , +Node :3: Row 2 : Tag 19 id 4 - type 2 , +Node :3: Row 3 : Tag 21 id 4 - type 2 , +Node :3: Row 4 : Tag 24 id 4 - type 2 , +Node :3: Row 5 : Tag 29 id 4 - type 2 , +Node :3: Row 6 : Tag 37 id 4 - type 2 , +Node :3: Row 7 : Tag 50 id 8 - type 1 , +Node :3: Row 8 : Tag 57 id 7 - type 1 , +Node :3: Row 9 : Tag 70 id 5 - type 1 , +Node :3: Row 10 : Tag 73 id 4 - type 2 , +Node :3: Row 11 : Tag 84 id 4 - type 2 , +Node :3: Row 12 : Tag 98 id 4 - type 2 , +Printing routing table of router node:4 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :4: Row 0 : Tag 3 id 9 - type 1 , +Node :4: Row 1 : Tag 36 id 6 - type 1 , +Node :4: Row 2 : Tag 50 id 8 - type 1 , +Node :4: Row 3 : Tag 57 id 7 - type 1 , diff --git a/100_netstrucrep b/100_netstrucrep new file mode 100755 index 0000000..56314d4 --- /dev/null +++ b/100_netstrucrep @@ -0,0 +1,33 @@ +num_vertices=10 +Network Diameter is = 3 +***Distance matrix** +0 1 1 1 1 1 1 1 1 2 +2 0 1 1 1 1 1 1 2 1 +2 2 0 1 1 1 1 2 1 1 +2 2 2 0 1 1 2 1 1 1 +2 2 2 2 0 3 1 1 1 1 +1 1 1 1 2 0 2 2 2 2 +1 1 1 2 1 2 0 2 2 2 +1 1 2 1 1 2 2 0 2 2 +1 2 1 1 1 2 2 2 0 2 +3 1 1 1 1 2 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 50 +2 : 38 +3 : 2 + +***Parents** +0 0 0 0 0 0 0 0 0 1 +5 1 1 1 1 1 1 1 2 1 +5 5 2 2 2 2 2 3 2 2 +5 5 5 3 3 3 4 3 3 3 +6 6 6 7 4 0 4 4 4 4 +5 5 5 5 0 5 0 0 0 1 +6 6 6 0 6 0 6 0 0 1 +7 7 0 7 7 0 0 7 0 1 +8 0 8 8 8 0 0 0 8 2 +5 9 9 9 9 1 1 1 2 9 diff --git a/11_netout.net b/11_netout.net new file mode 100755 index 0000000..d971cce --- /dev/null +++ b/11_netout.net @@ -0,0 +1,72 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 2 1 +1 3 1 +1 5 1 +1 6 1 +1 2 1 +1 4 1 +1 2 1 +1 4 1 +1 7 1 +1 3 1 +1 4 1 +1 2 1 +1 2 1 +1 4 1 +1 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 3 1 +2 5 1 +2 6 1 +2 4 1 +2 4 1 +2 7 1 +2 3 1 +2 4 1 +2 4 1 +2 3 1 +3 4 1 +3 8 1 +3 5 1 +3 6 1 +3 4 1 +3 4 1 +3 7 1 +3 4 1 +3 4 1 +4 8 1 +4 5 1 +4 6 1 +4 7 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/11_netroutingtable b/11_netroutingtable new file mode 100755 index 0000000..3c44c29 --- /dev/null +++ b/11_netroutingtable @@ -0,0 +1,51 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, +Node 0: Row 3:Tag 9: id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, +Node 0: Row 5:Tag 11: id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, +Node 1: Row 8:Tag 19: id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, +Node 1: Row 10:Tag 26: id 3 - type 2, +Node 1: Row 11:Tag 27: id 2 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 10: id 4 - type 1, +Node 2: Row 2:Tag 11: id 5 - type 1, +Node 2: Row 3:Tag 12: id 3 - type 2, +Node 2: Row 4:Tag 16: id 3 - type 2, +Node 2: Row 5:Tag 17: id 6 - type 1, +Node 2: Row 6:Tag 20: id 3 - type 2, +Node 2: Row 7:Tag 26: id 3 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 6: id 7 - type 1, +Node 3: Row 1:Tag 10: id 4 - type 1, +Node 3: Row 2:Tag 11: id 5 - type 1, +Node 3: Row 3:Tag 17: id 6 - type 1, + diff --git a/11_netstrucrep b/11_netstrucrep new file mode 100755 index 0000000..dc1e303 --- /dev/null +++ b/11_netstrucrep @@ -0,0 +1,49 @@ +***Routing table length histogram** +Length : Freq + 4 : 1 + 8 : 1 + 12 : 1 + 15 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 32 + 2 : 7 + +***Routing table max width histogram** +Max width : Num of pairs + 1 : 1 + 2 : 3 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 38 + 2 : 18 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 0 1 1 1 1 1 1 +Nd/Tg 3 : 2 2 0 1 1 1 1 1 +Nd/Tg 4 : 2 2 2 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 4 1 1 1 1 1 1 1 +Nd/Tg 2 : 4 4 2 2 2 2 2 2 +Nd/Tg 3 : 4 4 4 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/11_perfrep b/11_perfrep new file mode 100755 index 0000000..cefecef --- /dev/null +++ b/11_perfrep @@ -0,0 +1,105 @@ +***Database Report at time 11 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 16 +Queries_sent_from_RouterNode : 100 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 45 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 402 + +Responses_sent_from_ResourceNode : 6 +Responses_sent_from_RouterNode : 41 + +Num_of_good_responses : 4 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 201 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 0 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 610 + +Queries_sent_from_UserNode (query packets) : 0 +Num_responses_sent_for_UserNode : 0 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 0 + +Num_total_queries_generated (rtr, res, user): 116 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 47 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 6: 0 + 3: 0: 1: 6: 0 + 6: 1: 2: 14: 2 + 9: 0: 1: 2: 0 + 10: 1: 1: 13: 1 + 11: 1: 0: 11: 0 + 12: 0: 2: 9: 0 + 15: 0: 1: 2: 0 + 16: 0: 1: 4: 0 + 17: 1: 1: 5: 1 + 19: 0: 1: 3: 0 + 20: 0: 1: 4: 0 + 21: 0: 1: 2: 0 + 23: 0: 1: 1: 0 + 26: 0: 2: 6: 0 + 27: 0: 1: 3: 0 + 33: 0: 1: 1: 0 + 35: 0: 1: 1: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 4 , sum_num_resources = 8 , sum_num_queries = 47 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.0851 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 20 + 2: 23 + 3: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 48 + 2: 127 + 3: 26 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 0, sum_num_queries = 0, RouterNode_k= 3 +Recall rate per query for external queries not yet available + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 0 +Hit rate per query for external queries not yet available + diff --git a/13_netout.net b/13_netout.net new file mode 100755 index 0000000..63c2554 --- /dev/null +++ b/13_netout.net @@ -0,0 +1,67 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 2  +1 4  +1 8  +1 2  +1 3  +1 4  +1 6  +1 7  +1 3  +1 2  +1 4  +1 2  +1 3  +1 4  +1 5  +2 4  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 3  +2 4  +2 3  +2 4  +2 5  +3 4  +3 4  +3 8  +3 4  +3 6  +3 7  +3 4  +3 4  +3 5  +4 8  +4 6  +4 7  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/13_netroutingtable b/13_netroutingtable new file mode 100755 index 0000000..97c8497 --- /dev/null +++ b/13_netroutingtable @@ -0,0 +1,32 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :2: Row 2 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 3 : Tag 6 id 3 - type 2 , +Node :2: Row 4 : Tag 7 id 3 - type 2 , +Node :2: Row 5 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 1 id 7 - type 1 , +Node :3: Row 1 : Tag 4 id 5 - type 1 , id 6 - type 1 , +Node :3: Row 2 : Tag 8 id 4 - type 1 , diff --git a/13_netstrucrep b/13_netstrucrep new file mode 100755 index 0000000..41bba8b --- /dev/null +++ b/13_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +2 0 1 1 1 1 1 1 +2 2 0 1 1 1 1 1 +2 2 2 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 38 +2 : 1376390520 + +***Parents** +0 0 0 0 0 0 0 0 +4 1 1 1 1 1 1 1 +4 4 2 2 2 2 2 2 +4 4 4 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/13_perfrep b/13_perfrep new file mode 100755 index 0000000..aa999c9 --- /dev/null +++ b/13_perfrep @@ -0,0 +1,47 @@ +***Database Report : Time :13*** +Queries_sent_from_ResourceNode :32 +Queries_sent_from_RouterNode :91 +Num_responses_sent :233 +Num_of_good_responses :0 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :0 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :1344 +Queries_sent_from_UserNode :0 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :0 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :1147 +num_global_responses :233 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 11 : 0 +1 : 5 : 24 : 0 +3 : 1 : 4 : 0 +4 : 4 : 33 : 0 +5 : 4 : 11 : 0 +6 : 2 : 12 : 0 +7 : 5 : 20 : 0 +8 : 1 : 8 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 24, sum_num_queries = 123, RouterNode_k = 3 +Recall rate per query = 0 +Contents of hops_before_response_ctr : +1 : 116 +2 : 117 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 0, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query for external queries not yet available diff --git a/17_netout.net b/17_netout.net new file mode 100755 index 0000000..63c2554 --- /dev/null +++ b/17_netout.net @@ -0,0 +1,67 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 2  +1 4  +1 8  +1 2  +1 3  +1 4  +1 6  +1 7  +1 3  +1 2  +1 4  +1 2  +1 3  +1 4  +1 5  +2 4  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 3  +2 4  +2 3  +2 4  +2 5  +3 4  +3 4  +3 8  +3 4  +3 6  +3 7  +3 4  +3 4  +3 5  +4 8  +4 6  +4 7  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/17_netroutingtable b/17_netroutingtable new file mode 100755 index 0000000..97c8497 --- /dev/null +++ b/17_netroutingtable @@ -0,0 +1,32 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :2: Row 2 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 3 : Tag 6 id 3 - type 2 , +Node :2: Row 4 : Tag 7 id 3 - type 2 , +Node :2: Row 5 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 1 id 7 - type 1 , +Node :3: Row 1 : Tag 4 id 5 - type 1 , id 6 - type 1 , +Node :3: Row 2 : Tag 8 id 4 - type 1 , diff --git a/17_netstrucrep b/17_netstrucrep new file mode 100755 index 0000000..2f07d6b --- /dev/null +++ b/17_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +2 0 1 1 1 1 1 1 +2 2 0 1 1 1 1 1 +2 2 2 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 38 +2 : 1376390538 + +***Parents** +0 0 0 0 0 0 0 0 +4 1 1 1 1 1 1 1 +4 4 2 2 2 2 2 2 +4 4 4 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/17_perfrep b/17_perfrep new file mode 100755 index 0000000..6c89161 --- /dev/null +++ b/17_perfrep @@ -0,0 +1,47 @@ +***Database Report : Time :17*** +Queries_sent_from_ResourceNode :48 +Queries_sent_from_RouterNode :182 +Num_responses_sent :296 +Num_of_good_responses :0 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :46 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :1903 +Queries_sent_from_UserNode :0 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :0 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :1643 +num_global_responses :296 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 21 : 0 +1 : 5 : 43 : 0 +3 : 1 : 10 : 0 +4 : 4 : 58 : 0 +5 : 4 : 19 : 0 +6 : 2 : 24 : 0 +7 : 5 : 43 : 0 +8 : 1 : 12 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 24, sum_num_queries = 230, RouterNode_k = 3 +Recall rate per query = 0 +Contents of hops_before_response_ctr : +1 : 151 +2 : 145 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 0, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query for external queries not yet available diff --git a/1_netout.net b/1_netout.net new file mode 100755 index 0000000..2bf952a --- /dev/null +++ b/1_netout.net @@ -0,0 +1,409 @@ +*Vertices 50 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +*Arcs +1 24 1 +1 3 1 +1 13 1 +1 46 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 3 1 +1 4 1 +1 13 1 +1 2 1 +1 13 1 +1 2 1 +1 4 1 +1 3 1 +1 3 1 +1 24 1 +1 2 1 +1 33 1 +1 45 1 +1 2 1 +1 24 1 +1 4 1 +1 24 1 +1 24 1 +1 13 1 +1 13 1 +2 3 1 +2 3 1 +2 8 1 +2 4 1 +2 4 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 3 1 +2 3 1 +2 8 1 +2 44 1 +2 4 1 +2 8 1 +2 8 1 +3 9 1 +3 5 1 +3 9 1 +3 25 1 +3 9 1 +3 26 1 +3 10 1 +3 12 1 +3 12 1 +3 5 1 +3 10 1 +3 18 1 +3 18 1 +3 16 1 +3 5 1 +3 25 1 +3 26 1 +3 10 1 +3 18 1 +3 12 1 +3 26 1 +3 5 1 +3 16 1 +3 25 1 +3 9 1 +3 10 1 +3 5 1 +3 25 1 +3 12 1 +3 18 1 +3 26 1 +3 26 1 +3 10 1 +3 25 1 +3 9 1 +3 12 1 +3 16 1 +3 16 1 +3 18 1 +4 5 1 +4 6 1 +4 22 1 +4 29 1 +4 7 1 +4 29 1 +4 8 1 +4 6 1 +4 19 1 +4 29 1 +4 5 1 +4 29 1 +4 6 1 +4 8 1 +4 5 1 +4 6 1 +4 19 1 +4 29 1 +4 7 1 +4 19 1 +4 8 1 +4 22 1 +4 5 1 +4 33 1 +4 7 1 +4 5 1 +4 19 1 +4 22 1 +4 6 1 +4 8 1 +4 7 1 +4 22 1 +4 8 1 +4 22 1 +4 7 1 +5 6 1 +5 25 1 +5 6 1 +5 11 1 +5 14 1 +5 15 1 +5 6 1 +5 14 1 +5 11 1 +5 6 1 +5 25 1 +5 15 1 +5 14 1 +5 11 1 +5 25 1 +5 11 1 +5 14 1 +5 15 1 +5 25 1 +5 35 1 +5 6 1 +5 11 1 +5 15 1 +5 25 1 +5 15 1 +6 17 1 +6 7 1 +6 17 1 +6 17 1 +6 11 1 +6 17 1 +6 11 1 +6 7 1 +6 11 1 +6 7 1 +6 11 1 +6 17 1 +6 35 1 +6 11 1 +6 36 1 +6 7 1 +6 7 1 +7 9 1 +7 9 1 +7 32 1 +7 9 1 +7 10 1 +7 12 1 +7 12 1 +7 10 1 +7 16 1 +7 10 1 +7 12 1 +7 16 1 +7 9 1 +7 10 1 +7 47 1 +7 12 1 +7 10 1 +7 9 1 +7 12 1 +7 16 1 +7 16 1 +8 14 1 +8 18 1 +8 15 1 +8 18 1 +8 14 1 +8 18 1 +8 15 1 +8 14 1 +8 14 1 +8 15 1 +8 18 1 +8 15 1 +8 15 1 +8 18 1 +9 17 1 +9 48 1 +9 13 1 +9 17 1 +9 17 1 +9 17 1 +9 13 1 +9 13 1 +9 21 1 +9 28 1 +9 21 1 +9 42 1 +9 40 1 +9 21 1 +9 17 1 +9 28 1 +9 21 1 +9 21 1 +9 28 1 +9 13 1 +9 28 1 +9 28 1 +9 49 1 +9 13 1 +10 37 1 +10 31 1 +11 22 1 +11 22 1 +11 22 1 +11 22 1 +11 22 1 +12 20 1 +12 20 1 +12 19 1 +12 43 1 +12 21 1 +12 19 1 +12 19 1 +12 20 1 +12 21 1 +12 40 1 +12 21 1 +12 20 1 +12 20 1 +12 19 1 +12 21 1 +12 21 1 +13 50 1 +13 47 1 +13 38 1 +14 27 1 +14 20 1 +14 20 1 +14 27 1 +14 27 1 +14 20 1 +14 20 1 +14 20 1 +14 27 1 +14 27 1 +15 50 1 +15 27 1 +15 27 1 +15 27 1 +15 27 1 +15 27 1 +15 38 1 +15 49 1 +16 30 1 +16 23 1 +16 39 1 +16 23 1 +16 30 1 +16 23 1 +16 30 1 +16 23 1 +16 44 1 +16 30 1 +16 23 1 +17 37 1 +17 48 1 +17 26 1 +17 26 1 +17 26 1 +17 42 1 +17 26 1 +17 26 1 +18 32 1 +19 30 1 +19 30 1 +19 30 1 +19 41 1 +19 30 1 +19 31 1 +20 29 1 +20 29 1 +20 29 1 +20 29 1 +20 29 1 +21 23 1 +21 24 1 +21 23 1 +21 23 1 +21 34 1 +21 23 1 +21 24 1 +21 24 1 +21 24 1 +21 24 1 +21 23 1 +23 43 1 +26 28 1 +26 28 1 +26 28 1 +26 28 1 +26 28 1 +27 46 1 +28 39 1 +29 45 1 +30 34 1 +30 41 1 +30 36 1 +31 10 1 +31 19 1 +32 7 1 +32 18 1 +33 1 1 +33 4 1 +34 21 1 +34 30 1 +35 5 1 +35 6 1 +36 6 1 +36 30 1 +37 10 1 +37 17 1 +38 13 1 +38 15 1 +39 16 1 +39 28 1 +40 9 1 +40 12 1 +41 19 1 +41 30 1 +42 9 1 +42 17 1 +43 12 1 +43 23 1 +44 2 1 +44 16 1 +45 1 1 +45 29 1 +46 1 1 +46 27 1 +47 7 1 +47 13 1 +48 9 1 +48 17 1 +49 9 1 +49 15 1 +50 13 1 +50 15 1 diff --git a/1_netroutingtable b/1_netroutingtable new file mode 100755 index 0000000..dfffc42 --- /dev/null +++ b/1_netroutingtable @@ -0,0 +1,349 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 1: id 23 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 12 - type 2, +Node 0: Row 2:Tag 4: id 45 - type 1, +Node 0: Row 3:Tag 6: id 2 - type 2, +Node 0: Row 4:Tag 7: id 3 - type 2, +Node 0: Row 5:Tag 8: id 3 - type 2, +Node 0: Row 6:Tag 9: id 1 - type 2, +Node 0: Row 7:Tag 10: id 2 - type 2, +Node 0: Row 8:Tag 11: id 3 - type 2, id 12 - type 2, +Node 0: Row 9:Tag 12: id 1 - type 2, id 12 - type 2, +Node 0: Row 10:Tag 15: id 1 - type 2, +Node 0: Row 11:Tag 16: id 3 - type 2, +Node 0: Row 12:Tag 19: id 2 - type 2, +Node 0: Row 13:Tag 20: id 2 - type 2, id 23 - type 2, +Node 0: Row 14:Tag 21: id 1 - type 2, +Node 0: Row 15:Tag 23: id 32 - type 1, +Node 0: Row 16:Tag 25: id 44 - type 1, +Node 0: Row 17:Tag 26: id 1 - type 2, +Node 0: Row 18:Tag 28: id 23 - type 2, +Node 0: Row 19:Tag 29: id 3 - type 2, +Node 0: Row 20:Tag 30: id 23 - type 2, +Node 0: Row 21:Tag 33: id 23 - type 2, +Node 0: Row 22:Tag 34: id 12 - type 2, +Node 0: Row 23:Tag 39: id 12 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 3: id 2 - type 2, +Node 1: Row 1:Tag 6: id 2 - type 2, id 7 - type 2, +Node 1: Row 2:Tag 7: id 3 - type 2, +Node 1: Row 3:Tag 8: id 3 - type 2, +Node 1: Row 4:Tag 10: id 2 - type 2, +Node 1: Row 5:Tag 11: id 3 - type 2, id 7 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, +Node 1: Row 7:Tag 19: id 2 - type 2, +Node 1: Row 8:Tag 20: id 2 - type 2, id 7 - type 2, +Node 1: Row 9:Tag 21: id 43 - type 1, +Node 1: Row 10:Tag 29: id 3 - type 2, +Node 1: Row 11:Tag 33: id 7 - type 2, +Node 1: Row 12:Tag 36: id 7 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 1: id 8 - type 2, +Node 2: Row 1:Tag 2: id 4 - type 2, +Node 2: Row 2:Tag 4: id 8 - type 2, id 24 - type 2, +Node 2: Row 3:Tag 5: id 8 - type 2, id 25 - type 2, +Node 2: Row 4:Tag 6: id 9 - type 2, +Node 2: Row 5:Tag 7: id 11 - type 2, +Node 2: Row 6:Tag 8: id 11 - type 2, +Node 2: Row 7:Tag 9: id 4 - type 2, id 9 - type 2, id 17 - type 2, +Node 2: Row 8:Tag 11: id 17 - type 2, +Node 2: Row 9:Tag 12: id 15 - type 2, +Node 2: Row 10:Tag 15: id 4 - type 2, +Node 2: Row 11:Tag 16: id 24 - type 2, id 25 - type 2, +Node 2: Row 12:Tag 17: id 9 - type 2, id 17 - type 2, +Node 2: Row 13:Tag 18: id 11 - type 2, +Node 2: Row 14:Tag 19: id 25 - type 2, +Node 2: Row 15:Tag 22: id 4 - type 2, id 15 - type 2, +Node 2: Row 16:Tag 23: id 24 - type 2, +Node 2: Row 17:Tag 25: id 8 - type 2, id 9 - type 2, +Node 2: Row 18:Tag 27: id 4 - type 2, id 24 - type 2, +Node 2: Row 19:Tag 30: id 11 - type 2, +Node 2: Row 20:Tag 31: id 17 - type 2, id 25 - type 2, +Node 2: Row 21:Tag 32: id 25 - type 2, +Node 2: Row 22:Tag 33: id 9 - type 2, +Node 2: Row 23:Tag 34: id 24 - type 2, +Node 2: Row 24:Tag 36: id 8 - type 2, id 11 - type 2, id 15 - type 2, +Node 2: Row 25:Tag 37: id 15 - type 2, id 17 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 4 - type 2, id 5 - type 2, +Node 3: Row 1:Tag 3: id 21 - type 2, id 28 - type 2, +Node 3: Row 2:Tag 4: id 6 - type 2, id 28 - type 2, +Node 3: Row 3:Tag 6: id 7 - type 2, +Node 3: Row 4:Tag 7: id 5 - type 2, id 18 - type 2, +Node 3: Row 5:Tag 8: id 28 - type 2, +Node 3: Row 6:Tag 9: id 4 - type 2, id 28 - type 2, +Node 3: Row 7:Tag 11: id 5 - type 2, id 7 - type 2, +Node 3: Row 8:Tag 15: id 4 - type 2, +Node 3: Row 9:Tag 16: id 5 - type 2, id 18 - type 2, id 28 - type 2, +Node 3: Row 10:Tag 17: id 6 - type 2, id 18 - type 2, +Node 3: Row 11:Tag 20: id 7 - type 2, id 21 - type 2, +Node 3: Row 12:Tag 22: id 4 - type 2, +Node 3: Row 13:Tag 23: id 32 - type 1, +Node 3: Row 14:Tag 24: id 6 - type 2, +Node 3: Row 15:Tag 27: id 4 - type 2, +Node 3: Row 16:Tag 29: id 18 - type 2, id 21 - type 2, +Node 3: Row 17:Tag 33: id 5 - type 2, id 7 - type 2, +Node 3: Row 18:Tag 35: id 6 - type 2, id 21 - type 2, +Node 3: Row 19:Tag 36: id 7 - type 2, id 21 - type 2, +Node 3: Row 20:Tag 38: id 6 - type 2, + +Printing routing table of router node: 4 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 4: Row 0:Tag 2: id 5 - type 2, +Node 4: Row 1:Tag 4: id 24 - type 2, +Node 4: Row 2:Tag 7: id 5 - type 2, id 10 - type 2, +Node 4: Row 3:Tag 8: id 13 - type 2, +Node 4: Row 4:Tag 10: id 14 - type 2, +Node 4: Row 5:Tag 11: id 5 - type 2, +Node 4: Row 6:Tag 12: id 13 - type 2, +Node 4: Row 7:Tag 14: id 10 - type 2, +Node 4: Row 8:Tag 16: id 5 - type 2, id 24 - type 2, +Node 4: Row 9:Tag 18: id 14 - type 2, +Node 4: Row 10:Tag 19: id 13 - type 2, +Node 4: Row 11:Tag 22: id 10 - type 2, +Node 4: Row 12:Tag 23: id 24 - type 2, +Node 4: Row 13:Tag 25: id 10 - type 2, +Node 4: Row 14:Tag 26: id 13 - type 2, +Node 4: Row 15:Tag 27: id 14 - type 2, id 24 - type 2, +Node 4: Row 16:Tag 30: id 34 - type 1, +Node 4: Row 17:Tag 33: id 5 - type 2, +Node 4: Row 18:Tag 34: id 10 - type 2, id 14 - type 2, id 24 - type 2, +Node 4: Row 19:Tag 35: id 14 - type 2, + +Printing routing table of router node: 5 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 5: Row 0:Tag 1: id 16 - type 2, +Node 5: Row 1:Tag 4: id 6 - type 2, id 16 - type 2, +Node 5: Row 2:Tag 6: id 16 - type 2, +Node 5: Row 3:Tag 7: id 10 - type 2, +Node 5: Row 4:Tag 9: id 16 - type 2, +Node 5: Row 5:Tag 14: id 10 - type 2, +Node 5: Row 6:Tag 17: id 6 - type 2, +Node 5: Row 7:Tag 22: id 10 - type 2, +Node 5: Row 8:Tag 24: id 6 - type 2, +Node 5: Row 9:Tag 25: id 10 - type 2, id 16 - type 2, +Node 5: Row 10:Tag 30: id 34 - type 1, +Node 5: Row 11:Tag 34: id 10 - type 2, id 35 - type 1, +Node 5: Row 12:Tag 35: id 6 - type 2, +Node 5: Row 13:Tag 38: id 6 - type 2, + +Printing routing table of router node: 6 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 6: Row 0:Tag 1: id 8 - type 2, +Node 6: Row 1:Tag 4: id 8 - type 2, id 31 - type 1, +Node 6: Row 2:Tag 5: id 8 - type 2, +Node 6: Row 3:Tag 6: id 9 - type 2, +Node 6: Row 4:Tag 7: id 11 - type 2, +Node 6: Row 5:Tag 8: id 11 - type 2, +Node 6: Row 6:Tag 9: id 9 - type 2, +Node 6: Row 7:Tag 12: id 15 - type 2, +Node 6: Row 8:Tag 17: id 9 - type 2, +Node 6: Row 9:Tag 18: id 11 - type 2, +Node 6: Row 10:Tag 22: id 15 - type 2, +Node 6: Row 11:Tag 25: id 8 - type 2, id 9 - type 2, id 46 - type 1, +Node 6: Row 12:Tag 30: id 11 - type 2, +Node 6: Row 13:Tag 33: id 9 - type 2, +Node 6: Row 14:Tag 36: id 8 - type 2, id 11 - type 2, id 15 - type 2, +Node 6: Row 15:Tag 37: id 15 - type 2, + +Printing routing table of router node: 7 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 7: Row 0:Tag 8: id 13 - type 2, +Node 7: Row 1:Tag 9: id 17 - type 2, +Node 7: Row 2:Tag 10: id 14 - type 2, +Node 7: Row 3:Tag 11: id 17 - type 2, +Node 7: Row 4:Tag 12: id 13 - type 2, +Node 7: Row 5:Tag 17: id 17 - type 2, +Node 7: Row 6:Tag 18: id 14 - type 2, +Node 7: Row 7:Tag 19: id 13 - type 2, +Node 7: Row 8:Tag 26: id 13 - type 2, +Node 7: Row 9:Tag 27: id 14 - type 2, +Node 7: Row 10:Tag 31: id 17 - type 2, +Node 7: Row 11:Tag 34: id 14 - type 2, +Node 7: Row 12:Tag 35: id 14 - type 2, +Node 7: Row 13:Tag 37: id 17 - type 2, + +Printing routing table of router node: 8 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 8: Row 0:Tag 1: id 16 - type 2, +Node 8: Row 1:Tag 2: id 47 - type 1, +Node 8: Row 2:Tag 3: id 12 - type 2, +Node 8: Row 3:Tag 4: id 16 - type 2, +Node 8: Row 4:Tag 6: id 16 - type 2, +Node 8: Row 5:Tag 9: id 16 - type 2, +Node 8: Row 6:Tag 11: id 12 - type 2, +Node 8: Row 7:Tag 12: id 12 - type 2, id 20 - type 2, +Node 8: Row 8:Tag 18: id 27 - type 2, +Node 8: Row 9:Tag 19: id 20 - type 2, +Node 8: Row 10:Tag 20: id 41 - type 1, +Node 8: Row 11:Tag 22: id 39 - type 1, +Node 8: Row 12:Tag 23: id 20 - type 2, +Node 8: Row 13:Tag 25: id 16 - type 2, +Node 8: Row 14:Tag 28: id 27 - type 2, +Node 8: Row 15:Tag 29: id 20 - type 2, +Node 8: Row 16:Tag 30: id 20 - type 2, +Node 8: Row 17:Tag 33: id 27 - type 2, +Node 8: Row 18:Tag 34: id 12 - type 2, +Node 8: Row 19:Tag 35: id 27 - type 2, +Node 8: Row 20:Tag 37: id 27 - type 2, id 48 - type 1, +Node 8: Row 21:Tag 39: id 12 - type 2, + +Printing routing table of router node: 9 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 9: Row 0:Tag 2: id 36 - type 1, +Node 9: Row 1:Tag 37: id 30 - type 1, + +Printing routing table of router node: 10 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 10: Row 0:Tag 3: id 21 - type 2, +Node 10: Row 1:Tag 20: id 21 - type 2, +Node 10: Row 2:Tag 29: id 21 - type 2, +Node 10: Row 3:Tag 35: id 21 - type 2, +Node 10: Row 4:Tag 36: id 21 - type 2, + +Printing routing table of router node: 11 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 11: Row 0:Tag 3: id 19 - type 2, +Node 11: Row 1:Tag 5: id 19 - type 2, +Node 11: Row 2:Tag 7: id 18 - type 2, +Node 11: Row 3:Tag 10: id 42 - type 1, +Node 11: Row 4:Tag 12: id 20 - type 2, +Node 11: Row 5:Tag 16: id 18 - type 2, +Node 11: Row 6:Tag 17: id 18 - type 2, +Node 11: Row 7:Tag 19: id 19 - type 2, id 20 - type 2, +Node 11: Row 8:Tag 22: id 39 - type 1, +Node 11: Row 9:Tag 23: id 20 - type 2, +Node 11: Row 10:Tag 24: id 19 - type 2, +Node 11: Row 11:Tag 26: id 19 - type 2, +Node 11: Row 12:Tag 29: id 18 - type 2, id 20 - type 2, +Node 11: Row 13:Tag 30: id 20 - type 2, + +Printing routing table of router node: 12 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 12: Row 0:Tag 0: id 49 - type 1, +Node 12: Row 1:Tag 25: id 46 - type 1, +Node 12: Row 2:Tag 37: id 37 - type 1, + +Printing routing table of router node: 13 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 13: Row 0:Tag 1: id 26 - type 2, +Node 13: Row 1:Tag 3: id 19 - type 2, +Node 13: Row 2:Tag 5: id 19 - type 2, +Node 13: Row 3:Tag 7: id 26 - type 2, +Node 13: Row 4:Tag 18: id 26 - type 2, +Node 13: Row 5:Tag 19: id 19 - type 2, +Node 13: Row 6:Tag 24: id 19 - type 2, +Node 13: Row 7:Tag 26: id 19 - type 2, +Node 13: Row 8:Tag 34: id 26 - type 2, +Node 13: Row 9:Tag 35: id 26 - type 2, + +Printing routing table of router node: 14 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 14: Row 0:Tag 0: id 49 - type 1, +Node 14: Row 1:Tag 1: id 26 - type 2, +Node 14: Row 2:Tag 7: id 26 - type 2, +Node 14: Row 3:Tag 18: id 26 - type 2, +Node 14: Row 4:Tag 34: id 26 - type 2, +Node 14: Row 5:Tag 35: id 26 - type 2, +Node 14: Row 6:Tag 37: id 37 - type 1, id 48 - type 1, + +Printing routing table of router node: 15 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 15: Row 0:Tag 0: id 29 - type 2, +Node 15: Row 1:Tag 1: id 22 - type 2, +Node 15: Row 2:Tag 4: id 38 - type 1, +Node 15: Row 3:Tag 6: id 22 - type 2, id 29 - type 2, +Node 15: Row 4:Tag 11: id 22 - type 2, +Node 15: Row 5:Tag 18: id 29 - type 2, +Node 15: Row 6:Tag 19: id 22 - type 2, +Node 15: Row 7:Tag 21: id 43 - type 1, +Node 15: Row 8:Tag 24: id 29 - type 2, +Node 15: Row 9:Tag 35: id 22 - type 2, + +Printing routing table of router node: 16 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 16: Row 0:Tag 2: id 36 - type 1, id 47 - type 1, +Node 16: Row 1:Tag 5: id 25 - type 2, +Node 16: Row 2:Tag 16: id 25 - type 2, +Node 16: Row 3:Tag 19: id 25 - type 2, +Node 16: Row 4:Tag 20: id 41 - type 1, +Node 16: Row 5:Tag 31: id 25 - type 2, +Node 16: Row 6:Tag 32: id 25 - type 2, + +Printing routing table of router node: 17 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 17: Row 0:Tag 4: id 31 - type 1, + +Printing routing table of router node: 18 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 18: Row 0:Tag 0: id 29 - type 2, +Node 18: Row 1:Tag 6: id 29 - type 2, +Node 18: Row 2:Tag 18: id 29 - type 2, +Node 18: Row 3:Tag 23: id 40 - type 1, +Node 18: Row 4:Tag 24: id 29 - type 2, +Node 18: Row 5:Tag 37: id 30 - type 1, + +Printing routing table of router node: 19 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 19: Row 0:Tag 3: id 28 - type 2, +Node 19: Row 1:Tag 4: id 28 - type 2, +Node 19: Row 2:Tag 8: id 28 - type 2, +Node 19: Row 3:Tag 9: id 28 - type 2, +Node 19: Row 4:Tag 16: id 28 - type 2, + +Printing routing table of router node: 20 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 20: Row 0:Tag 1: id 22 - type 2, id 23 - type 2, +Node 20: Row 1:Tag 6: id 22 - type 2, +Node 20: Row 2:Tag 11: id 22 - type 2, +Node 20: Row 3:Tag 12: id 33 - type 1, +Node 20: Row 4:Tag 19: id 22 - type 2, +Node 20: Row 5:Tag 20: id 23 - type 2, +Node 20: Row 6:Tag 28: id 23 - type 2, +Node 20: Row 7:Tag 30: id 23 - type 2, +Node 20: Row 8:Tag 33: id 23 - type 2, +Node 20: Row 9:Tag 35: id 22 - type 2, + +Routing table of router node 21 is empty + +Printing routing table of router node: 22 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 22: Row 0:Tag 10: id 42 - type 1, + +Routing table of router node 23 is empty + +Routing table of router node 24 is empty + +Printing routing table of router node: 25 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 25: Row 0:Tag 18: id 27 - type 2, +Node 25: Row 1:Tag 28: id 27 - type 2, +Node 25: Row 2:Tag 33: id 27 - type 2, +Node 25: Row 3:Tag 35: id 27 - type 2, +Node 25: Row 4:Tag 37: id 27 - type 2, + +Printing routing table of router node: 26 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 26: Row 0:Tag 4: id 45 - type 1, + +Printing routing table of router node: 27 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 27: Row 0:Tag 4: id 38 - type 1, + +Printing routing table of router node: 28 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 28: Row 0:Tag 25: id 44 - type 1, + +Printing routing table of router node: 29 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 29: Row 0:Tag 12: id 33 - type 1, +Node 29: Row 1:Tag 23: id 40 - type 1, +Node 29: Row 2:Tag 34: id 35 - type 1, + diff --git a/1_netstrucrep b/1_netstrucrep new file mode 100755 index 0000000..310abc0 --- /dev/null +++ b/1_netstrucrep @@ -0,0 +1,157 @@ +***Routing table length histogram** +Length : Freq + 0 : 3 + 1 : 5 + 2 : 1 + 3 : 2 + 5 : 3 + 6 : 1 + 7 : 2 + 10 : 3 + 13 : 1 + 14 : 3 + 16 : 1 + 20 : 1 + 21 : 1 + 22 : 1 + 24 : 1 + 26 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 213 + 2 : 43 + 3 : 6 + +***Routing table max width histogram** +Max width : Num of pairs + 0 : 3 + 1 : 14 + 2 : 9 + 3 : 4 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 50 + 1 : 137 + 2 : 298 + 3 : 438 + 4 : 443 + 5 : 394 + 6 : 288 + 7 : 156 + 8 : 77 + 9 : 21 + 10 : 3 +32767 : 195 + +num_vertices = 50 +Network Diameter is 32767 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : Nd/Tg 9 : Nd/Tg 10 : Nd/Tg 11 : Nd/Tg 12 : Nd/Tg 13 : Nd/Tg 14 : Nd/Tg 15 : Nd/Tg 16 : Nd/Tg 17 : Nd/Tg 18 : Nd/Tg 19 : Nd/Tg 20 : Nd/Tg 21 : Nd/Tg 22 : Nd/Tg 23 : Nd/Tg 24 : Nd/Tg 25 : Nd/Tg 26 : Nd/Tg 27 : Nd/Tg 28 : Nd/Tg 29 : Nd/Tg 30 : Nd/Tg 31 : Nd/Tg 32 : Nd/Tg 33 : Nd/Tg 34 : Nd/Tg 35 : Nd/Tg 36 : Nd/Tg 37 : Nd/Tg 38 : Nd/Tg 39 : Nd/Tg 40 : Nd/Tg 41 : Nd/Tg 42 : Nd/Tg 43 : Nd/Tg 44 : Nd/Tg 45 : Nd/Tg 46 : Nd/Tg 47 : Nd/Tg 48 : Nd/Tg 49 : Nd/Tg 50 : +Nd/Tg 1 : 0 1 1 1 2 2 2 2 2 2 3 2 1 3 3 2 3 2 2 3 3 2 3 1 2 2 2 3 2 3 3 3 1 4 3 3 3 2 3 3 3 3 3 2 1 1 2 3 3 2 +Nd/Tg 2 : 3 0 1 1 2 2 2 1 2 2 3 2 3 2 2 2 3 2 2 3 3 2 3 4 2 2 3 3 2 3 3 3 2 4 3 3 3 3 3 3 3 3 3 1 3 4 3 3 3 3 +Nd/Tg 3 : 5 3 0 4 1 2 3 4 1 1 2 1 2 2 2 1 2 1 2 2 2 3 2 3 1 1 3 2 3 2 2 2 5 3 2 3 2 3 2 2 3 2 2 2 4 4 3 2 2 3 +Nd/Tg 4 : 2 3 3 0 1 1 1 1 2 2 2 2 3 2 2 2 2 2 1 3 3 1 3 3 2 3 3 3 1 2 2 2 1 3 2 2 3 3 3 3 2 3 3 3 2 3 2 3 3 3 +Nd/Tg 5 : 4 5 5 5 0 1 2 6 3 3 1 3 3 1 1 3 2 4 4 2 4 2 4 5 1 3 2 4 3 3 4 3 5 4 1 2 3 2 4 4 4 3 4 4 4 3 3 3 2 2 +Nd/Tg 6 : 6 4 5 5 2 0 1 5 2 2 1 2 3 3 3 2 1 3 3 3 3 2 3 4 3 2 4 3 4 2 3 2 6 3 1 1 2 4 3 3 3 2 3 3 5 5 2 2 3 4 +Nd/Tg 7 : 5 3 4 4 5 4 0 4 1 1 5 1 2 5 3 1 2 2 2 2 2 5 2 3 5 3 4 2 3 2 2 1 5 3 5 3 2 3 2 2 3 2 2 2 4 5 1 2 2 3 +Nd/Tg 8 : 4 5 5 5 6 6 3 0 3 4 7 4 3 1 1 4 4 1 5 2 4 6 5 5 6 5 2 4 3 5 5 2 5 5 7 6 5 2 5 4 6 4 5 5 4 3 4 4 2 2 +Nd/Tg 9 : 5 5 6 6 7 5 3 6 0 3 6 2 1 7 2 3 1 5 3 3 1 7 2 2 7 2 3 1 4 3 4 4 6 2 6 4 2 2 2 1 4 1 3 4 5 4 2 1 1 2 +Nd/Tg 10 : 9 8 9 9 7 5 6 9 4 0 6 6 5 8 6 6 2 8 2 7 5 7 6 6 8 3 7 4 8 3 1 7 10 4 6 4 1 6 5 5 3 3 7 7 9 8 6 3 5 6 +Nd/Tg 11 : 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 0 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 1 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 +Nd/Tg 12 : 4 5 5 5 6 4 5 6 2 3 5 0 3 7 4 5 3 6 1 1 1 6 2 2 6 4 5 3 2 2 2 6 5 2 5 3 4 4 4 1 2 3 1 6 3 5 4 3 3 4 +Nd/Tg 13 : 5 5 6 6 7 6 2 6 3 3 7 3 0 7 2 3 4 4 4 4 4 7 4 5 7 5 3 4 5 4 4 3 6 5 7 5 4 1 4 4 5 4 4 4 6 4 1 4 3 1 +Nd/Tg 14 : 3 4 4 4 5 5 5 5 5 5 6 5 4 0 6 5 6 5 5 1 6 5 6 4 5 5 1 6 2 6 6 6 4 7 6 6 6 5 6 6 6 6 6 5 3 2 5 6 6 5 +Nd/Tg 15 : 3 4 4 4 5 5 4 5 2 5 6 4 2 6 0 5 3 5 5 5 3 5 4 4 5 4 1 3 5 5 6 5 4 4 6 6 4 1 4 3 6 3 5 5 4 2 3 3 1 1 +Nd/Tg 16 : 5 2 3 3 4 3 4 3 4 4 4 3 5 4 4 0 4 4 3 4 3 4 1 4 4 4 5 2 4 1 4 5 4 2 4 2 5 5 1 4 2 5 2 1 5 6 5 5 5 5 +Nd/Tg 17 : 7 6 7 7 8 7 5 7 2 2 8 4 3 8 4 4 0 7 4 5 3 8 4 4 8 1 5 2 6 5 3 6 8 4 8 6 1 4 3 3 5 1 5 5 7 6 4 1 3 4 +Nd/Tg 18 : 7 5 6 6 7 6 2 6 3 3 7 3 4 7 5 3 4 0 4 4 4 7 4 5 7 5 6 4 5 4 4 1 7 5 7 5 4 5 4 4 5 4 4 4 6 7 3 4 4 5 +Nd/Tg 19 : 9 7 8 8 5 3 4 8 5 2 4 5 6 6 6 5 4 6 0 6 3 5 4 4 6 5 7 6 7 1 1 5 9 2 4 2 3 7 6 6 1 5 5 6 8 8 5 5 6 7 +Nd/Tg 20 : 3 4 4 4 5 5 5 5 5 5 6 5 4 6 6 5 6 5 5 0 6 5 6 4 5 5 5 6 1 6 6 6 4 7 6 6 6 5 6 6 6 6 6 5 2 4 5 6 6 5 +Nd/Tg 21 : 7 8 8 8 6 4 5 9 5 6 5 3 6 7 7 6 5 7 4 4 0 6 1 1 7 6 8 6 5 2 5 6 8 1 5 3 6 7 7 4 3 6 2 7 6 8 6 6 6 7 +Nd/Tg 22 : 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 0 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 +Nd/Tg 23 : 6 7 7 7 8 6 7 8 4 5 7 2 5 9 6 7 5 8 3 3 3 8 0 4 8 6 7 5 4 4 4 8 7 4 7 5 6 6 6 3 4 5 1 8 5 7 6 5 5 6 +Nd/Tg 24 : 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 0 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 +Nd/Tg 25 : 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 0 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 +Nd/Tg 26 : 8 5 6 6 7 6 7 6 7 7 7 6 8 7 7 3 7 7 6 7 6 7 4 7 7 0 8 1 7 4 7 8 7 5 7 5 8 8 2 7 5 8 5 4 8 9 8 8 8 8 +Nd/Tg 27 : 2 3 3 3 4 4 4 4 4 4 5 4 3 5 5 4 5 4 4 5 5 4 5 3 4 4 0 5 4 5 5 5 3 6 5 5 5 4 5 5 5 5 5 4 3 1 4 5 5 4 +Nd/Tg 28 : 7 4 5 5 6 5 6 5 6 6 6 5 7 6 6 2 6 6 5 6 5 6 3 6 6 6 7 0 6 3 6 7 6 4 6 4 7 7 1 6 4 7 4 3 7 8 7 7 7 7 +Nd/Tg 29 : 2 3 3 3 4 4 4 4 4 4 5 4 3 5 5 4 5 4 4 5 5 4 5 3 4 4 4 5 0 5 5 5 3 6 5 5 5 4 5 5 5 5 5 4 1 3 4 5 5 4 +Nd/Tg 30 : 8 6 7 7 4 2 3 7 4 4 3 4 5 5 5 4 3 5 2 5 2 4 3 3 5 4 6 5 6 0 3 4 8 1 3 1 4 6 5 5 1 4 4 5 7 7 4 4 5 6 +Nd/Tg 31 : 10 8 9 9 6 4 5 9 5 1 5 6 6 7 7 6 3 7 1 7 4 6 5 5 7 4 8 5 8 2 0 6 10 3 5 3 2 7 6 6 2 4 6 7 9 9 6 4 6 7 +Nd/Tg 32 : 6 4 5 5 6 5 1 5 2 2 6 2 3 6 4 2 3 1 3 3 3 6 3 4 6 4 5 3 4 3 3 0 6 4 6 4 3 4 3 3 4 3 3 3 5 6 2 3 3 4 +Nd/Tg 33 : 1 2 2 1 2 2 2 2 3 3 3 3 2 3 3 3 3 3 2 4 4 2 4 2 3 3 3 4 2 3 3 3 0 4 3 3 4 3 4 4 3 4 4 3 2 2 3 4 4 3 +Nd/Tg 34 : 8 7 8 8 5 3 4 8 5 5 4 4 6 6 6 5 4 6 3 5 1 5 2 2 6 5 7 6 6 1 4 5 9 0 4 2 5 7 6 5 2 5 3 6 7 8 5 5 6 7 +Nd/Tg 35 : 5 5 6 6 1 1 2 6 3 3 2 3 4 2 2 3 2 4 4 3 4 3 4 5 2 3 3 4 4 3 4 3 6 4 0 2 3 3 4 4 4 3 4 4 5 4 3 3 3 3 +Nd/Tg 36 : 7 5 6 6 3 1 2 6 3 3 2 3 4 4 4 3 2 4 3 4 3 3 4 4 4 3 5 4 5 1 4 3 7 2 2 0 3 5 4 4 2 3 4 4 6 6 3 3 4 5 +Nd/Tg 37 : 8 7 8 8 8 6 6 8 3 1 7 5 4 9 5 5 1 8 3 6 4 8 5 5 9 2 6 3 7 4 2 7 9 5 7 5 0 5 4 4 4 2 6 6 8 7 5 2 4 5 +Nd/Tg 38 : 4 5 5 5 6 6 3 6 3 4 7 4 1 7 1 4 4 5 5 5 4 6 5 5 6 5 2 4 6 5 5 4 5 5 7 6 5 0 5 4 6 4 5 5 5 3 2 4 2 2 +Nd/Tg 39 : 6 3 4 4 5 4 5 4 5 5 5 4 6 5 5 1 5 5 4 5 4 5 2 5 5 5 6 1 5 2 5 6 5 3 5 3 6 6 0 5 3 6 3 2 6 7 6 6 6 6 +Nd/Tg 40 : 5 6 6 6 7 5 4 7 1 4 6 1 2 8 3 4 2 6 2 2 2 7 3 3 7 3 4 2 3 3 3 5 6 3 6 4 3 3 3 0 3 2 2 5 4 5 3 2 2 3 +Nd/Tg 41 : 9 7 8 8 5 3 4 8 5 3 4 5 6 6 6 5 4 6 1 6 3 5 4 4 6 5 7 6 7 1 2 5 9 2 4 2 4 7 6 6 0 5 5 6 8 8 5 5 6 7 +Nd/Tg 42 : 6 6 7 7 8 6 4 7 1 3 7 3 2 8 3 4 1 6 4 4 2 8 3 3 8 2 4 2 5 4 4 5 7 3 7 5 2 3 3 2 5 0 4 5 6 5 3 2 2 3 +Nd/Tg 43 : 5 6 6 6 7 5 6 7 3 4 6 1 4 8 5 6 4 7 2 2 2 7 1 3 7 5 6 4 3 3 3 7 6 3 6 4 5 5 5 2 3 4 0 7 4 6 5 4 4 5 +Nd/Tg 44 : 4 1 2 2 3 3 3 2 3 3 4 3 4 3 3 1 4 3 3 4 4 3 2 5 3 3 4 3 3 2 4 4 3 3 4 3 4 4 2 4 3 4 3 0 4 5 4 4 4 4 +Nd/Tg 45 : 1 2 2 2 3 3 3 3 3 3 4 3 2 4 4 3 4 3 3 4 4 3 4 2 3 3 3 4 1 4 4 4 2 5 4 4 4 3 4 4 4 4 4 3 0 2 3 4 4 3 +Nd/Tg 46 : 1 2 2 2 3 3 3 3 3 3 4 3 2 4 4 3 4 3 3 4 4 3 4 2 3 3 1 4 3 4 4 4 2 5 4 4 4 3 4 4 4 4 4 3 2 0 3 4 4 3 +Nd/Tg 47 : 6 4 5 5 6 5 1 5 2 2 6 2 1 6 3 2 3 3 3 3 3 6 3 4 6 4 4 3 4 3 3 2 6 4 6 4 3 2 3 3 4 3 3 3 5 5 0 3 3 2 +Nd/Tg 48 : 6 6 7 7 8 6 4 7 1 3 7 3 2 8 3 4 1 6 4 4 2 8 3 3 8 2 4 2 5 4 4 5 7 3 7 5 2 3 3 2 5 2 4 5 6 5 3 0 2 3 +Nd/Tg 49 : 4 5 5 5 6 6 4 6 1 4 7 3 2 7 1 4 2 6 4 4 2 6 3 3 6 3 2 2 5 4 5 5 5 3 7 5 3 2 3 2 5 2 4 5 5 3 3 2 0 2 +Nd/Tg 50 : 4 5 5 5 6 6 3 6 3 4 7 4 1 7 1 4 4 5 5 5 4 6 5 5 6 5 2 4 6 5 5 4 5 5 7 6 5 2 5 4 6 4 5 5 5 3 2 4 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : Nd/Tg 9 : Nd/Tg 10 : Nd/Tg 11 : Nd/Tg 12 : Nd/Tg 13 : Nd/Tg 14 : Nd/Tg 15 : Nd/Tg 16 : Nd/Tg 17 : Nd/Tg 18 : Nd/Tg 19 : Nd/Tg 20 : Nd/Tg 21 : Nd/Tg 22 : Nd/Tg 23 : Nd/Tg 24 : Nd/Tg 25 : Nd/Tg 26 : Nd/Tg 27 : Nd/Tg 28 : Nd/Tg 29 : Nd/Tg 30 : Nd/Tg 31 : Nd/Tg 32 : Nd/Tg 33 : Nd/Tg 34 : Nd/Tg 35 : Nd/Tg 36 : Nd/Tg 37 : Nd/Tg 38 : Nd/Tg 39 : Nd/Tg 40 : Nd/Tg 41 : Nd/Tg 42 : Nd/Tg 43 : Nd/Tg 44 : Nd/Tg 45 : Nd/Tg 46 : Nd/Tg 47 : Nd/Tg 48 : Nd/Tg 49 : +Nd/Tg 0 : 0 0 0 0 2 3 3 1 2 2 4 2 0 4 4 2 5 2 3 11 8 3 15 0 2 2 45 8 3 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 0 0 12 8 8 12 +Nd/Tg 1 : 32 1 1 1 2 3 3 1 2 2 4 2 8 7 7 2 5 2 3 11 8 3 15 20 2 2 13 8 3 15 9 6 3 20 4 5 9 14 15 8 18 8 11 1 28 26 6 8 8 14 +Nd/Tg 2 : 44 43 2 1 2 4 5 1 2 2 4 2 8 4 4 2 8 2 11 11 8 10 15 20 2 2 13 8 19 15 9 17 3 20 4 5 9 12 15 8 18 8 11 15 28 26 12 8 8 12 +Nd/Tg 3 : 32 0 0 3 3 3 3 3 6 6 4 6 8 4 4 6 5 7 3 11 8 3 15 0 4 16 13 8 3 18 18 6 3 29 4 5 9 14 15 8 18 8 11 15 28 0 6 8 8 14 +Nd/Tg 4 : 45 43 0 0 4 4 5 1 6 6 4 6 37 4 4 6 5 31 11 13 8 10 15 20 4 16 13 8 19 35 9 6 0 29 4 5 16 14 15 8 29 16 11 15 28 26 6 16 14 14 +Nd/Tg 5 : 44 43 1 1 34 5 5 1 6 6 5 6 8 4 4 6 5 31 11 11 8 10 15 20 4 16 13 8 19 35 9 6 3 29 5 5 16 12 15 8 29 16 11 15 28 26 6 16 8 12 +Nd/Tg 6 : 44 43 1 1 2 35 6 1 6 6 5 6 8 7 48 6 8 31 11 11 8 3 15 20 2 16 14 8 19 15 9 6 3 20 5 29 9 12 15 8 18 8 11 15 28 26 6 8 8 12 +Nd/Tg 7 : 45 0 0 0 2 3 31 7 48 6 4 6 37 7 7 6 8 7 11 13 8 3 15 0 2 16 13 8 19 15 9 17 0 20 4 29 9 14 15 8 18 8 11 15 28 26 6 8 14 14 +Nd/Tg 8 : 45 43 0 0 2 35 46 1 8 36 5 39 8 7 48 38 8 31 11 11 8 3 20 20 2 16 14 8 19 33 9 6 0 20 5 29 16 12 27 8 18 8 22 15 28 26 12 8 8 12 +Nd/Tg 9 : 45 43 1 1 34 35 5 1 41 9 5 39 8 4 48 38 36 31 30 11 33 10 20 20 4 16 14 25 19 18 9 6 3 29 5 29 9 12 27 8 18 16 22 15 28 26 12 16 8 12 +Nd/Tg 10 : 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 10 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 10 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 +Nd/Tg 11 : 44 0 0 0 2 35 5 1 39 30 5 11 8 4 48 38 8 2 11 11 11 3 20 20 2 16 14 8 19 18 18 6 0 20 5 29 9 12 27 11 18 8 11 1 28 0 12 8 8 12 +Nd/Tg 12 : 45 43 0 0 2 35 46 1 6 6 5 6 12 7 37 6 8 31 11 11 8 3 15 20 2 16 14 8 19 15 9 6 0 20 5 29 9 12 15 8 18 8 11 15 28 26 12 8 14 12 +Nd/Tg 13 : 45 0 0 0 2 3 3 1 2 2 4 2 0 13 4 2 5 2 3 13 8 3 15 0 2 2 13 8 19 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 28 26 12 8 8 12 +Nd/Tg 14 : 45 0 0 0 2 3 46 1 48 2 4 39 37 4 14 2 8 2 3 11 8 3 20 0 2 16 14 8 3 33 9 6 0 20 4 5 16 14 27 8 18 8 22 1 0 26 12 8 14 14 +Nd/Tg 15 : 32 43 1 1 2 35 3 1 2 2 5 42 8 7 7 15 5 2 40 11 33 3 15 20 2 2 13 38 3 15 18 6 3 29 5 29 9 14 15 11 29 8 22 15 28 26 6 8 8 14 +Nd/Tg 16 : 45 43 1 1 2 35 46 1 41 36 5 39 8 7 48 38 16 31 30 11 8 3 20 20 2 16 14 25 19 15 9 6 3 20 5 29 16 12 27 8 18 16 22 15 28 26 12 16 8 12 +Nd/Tg 17 : 44 43 1 1 2 35 31 1 6 6 5 6 8 7 48 6 8 17 11 11 8 3 15 20 2 16 14 8 19 15 9 17 3 20 5 29 9 12 15 8 18 8 11 15 28 26 6 8 8 12 +Nd/Tg 18 : 44 43 1 1 34 35 5 1 6 30 5 6 8 4 4 6 5 31 18 11 33 10 20 20 4 16 13 8 19 18 18 6 3 29 5 29 9 12 15 8 18 16 22 15 28 26 6 16 8 12 +Nd/Tg 19 : 44 0 0 0 2 3 3 1 2 2 4 2 0 4 4 2 5 2 3 19 8 3 15 0 2 2 45 8 19 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 28 0 12 8 8 12 +Nd/Tg 20 : 44 0 0 0 34 35 5 1 39 30 5 42 8 4 48 6 5 31 11 11 20 10 20 20 4 16 13 8 19 33 18 6 0 20 5 29 16 12 15 11 29 8 22 15 28 0 6 8 8 12 +Nd/Tg 21 : 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 21 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 +Nd/Tg 22 : 44 0 0 0 2 35 5 1 39 30 5 42 8 4 48 38 8 2 11 11 11 3 22 20 2 16 14 8 19 18 18 6 0 20 5 29 9 12 27 11 18 8 22 1 28 0 12 8 8 12 +Nd/Tg 23 : 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 23 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 +Nd/Tg 24 : 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 24 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 +Nd/Tg 25 : 32 43 1 1 2 35 3 1 2 2 5 42 8 7 7 38 5 2 40 11 33 3 15 20 2 25 13 25 3 15 18 6 3 29 5 29 9 14 27 11 29 8 22 15 28 26 6 8 8 14 +Nd/Tg 26 : 45 0 0 0 2 3 3 1 2 2 4 2 0 4 4 2 5 2 3 11 8 3 15 0 2 2 26 8 3 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 0 26 12 8 8 12 +Nd/Tg 27 : 32 43 1 1 2 35 3 1 2 2 5 42 8 7 7 38 5 2 40 11 33 3 15 20 2 2 13 27 3 15 18 6 3 29 5 29 9 14 27 11 29 8 22 15 28 26 6 8 8 14 +Nd/Tg 28 : 44 0 0 0 2 3 3 1 2 2 4 2 0 4 4 2 5 2 3 11 8 3 15 0 2 2 45 8 28 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 28 0 12 8 8 12 +Nd/Tg 29 : 44 43 1 1 34 35 5 1 6 6 5 6 8 4 4 6 5 31 40 11 33 10 20 20 4 16 13 8 19 29 18 6 3 29 5 29 16 12 15 8 29 16 22 15 28 26 6 16 8 12 +Nd/Tg 30 : 44 43 1 1 34 35 5 1 41 30 5 6 8 4 4 6 36 31 30 11 33 10 20 20 4 16 13 25 19 18 30 6 3 29 5 29 9 12 27 8 18 16 22 15 28 26 6 16 8 12 +Nd/Tg 31 : 44 43 1 1 2 35 31 1 6 6 5 6 8 7 48 6 8 31 11 11 8 3 15 20 2 16 14 8 19 15 9 31 3 20 5 29 9 12 15 8 18 8 11 15 28 26 6 8 8 12 +Nd/Tg 32 : 32 0 0 32 3 3 3 3 2 2 4 2 0 4 4 2 5 2 3 11 8 3 15 0 2 2 45 8 3 18 18 6 32 29 4 5 9 12 15 8 18 8 11 1 0 0 6 8 8 12 +Nd/Tg 33 : 44 43 1 1 34 35 5 1 6 6 5 42 8 4 4 6 5 31 40 11 33 10 20 20 4 16 13 8 19 33 18 6 0 33 5 29 16 12 15 11 29 16 22 15 28 26 6 16 8 12 +Nd/Tg 34 : 45 43 0 0 34 34 5 1 6 6 4 6 8 4 4 6 5 31 11 13 8 10 15 20 4 16 13 8 19 35 9 6 0 29 34 5 16 14 15 8 29 16 11 15 28 26 6 16 14 14 +Nd/Tg 35 : 44 43 1 1 34 35 5 1 6 6 5 6 8 4 4 6 5 31 40 11 33 10 15 20 4 16 13 8 19 35 9 6 3 29 5 35 16 12 15 8 29 16 11 15 28 26 6 16 8 12 +Nd/Tg 36 : 45 43 1 1 34 35 46 1 41 36 5 39 8 7 48 38 36 31 30 11 8 10 20 20 2 16 14 25 19 18 9 6 3 20 5 29 36 12 27 8 18 16 22 15 28 26 12 16 8 12 +Nd/Tg 37 : 45 0 0 0 2 3 46 1 48 6 4 6 37 4 37 6 8 31 11 11 8 3 15 0 2 16 14 8 3 15 9 6 0 20 4 29 9 37 15 8 18 8 11 15 0 26 12 8 14 12 +Nd/Tg 38 : 32 43 1 1 2 35 3 1 2 2 5 42 8 7 7 38 5 2 40 11 33 3 15 20 2 2 13 38 3 15 18 6 3 29 5 29 9 14 38 11 29 8 22 15 28 26 6 8 8 14 +Nd/Tg 39 : 44 0 0 0 2 35 46 1 39 30 5 39 8 4 48 38 8 31 11 11 8 3 20 20 2 16 14 8 19 18 18 6 0 20 5 29 16 12 27 39 18 8 11 15 28 26 12 8 8 12 +Nd/Tg 40 : 44 43 1 1 34 35 5 1 6 30 5 6 8 4 4 6 5 31 40 11 33 10 20 20 4 16 13 8 19 40 18 6 3 29 5 29 9 12 15 8 40 16 22 15 28 26 6 16 8 12 +Nd/Tg 41 : 45 43 0 0 2 35 46 1 41 36 5 39 8 7 48 38 41 31 11 11 8 3 20 20 2 16 14 8 19 33 9 6 0 20 5 29 16 12 27 8 18 41 22 15 28 26 12 8 8 12 +Nd/Tg 42 : 44 0 0 0 2 35 5 1 39 30 5 42 8 4 48 38 8 2 11 11 11 3 42 20 2 16 14 8 19 18 18 6 0 20 5 29 9 12 27 11 18 8 42 1 28 0 12 8 8 12 +Nd/Tg 43 : 32 43 1 1 2 3 3 1 2 2 4 2 8 7 7 43 5 2 3 11 8 3 15 20 2 2 13 38 3 15 9 6 3 29 4 29 9 14 15 8 29 8 22 43 28 26 6 8 8 14 +Nd/Tg 44 : 44 0 0 0 2 3 3 1 2 2 4 2 0 4 4 2 5 2 3 11 8 3 15 0 2 2 45 8 44 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 44 0 12 8 8 12 +Nd/Tg 45 : 45 0 0 0 2 3 3 1 2 2 4 2 0 4 4 2 5 2 3 11 8 3 15 0 2 2 45 8 3 15 9 6 0 20 4 5 9 12 15 8 18 8 11 1 0 45 12 8 8 12 +Nd/Tg 46 : 44 43 1 1 2 35 46 1 6 6 5 6 46 7 37 6 8 31 11 11 8 3 15 20 2 16 14 8 19 15 9 6 3 20 5 29 9 12 15 8 18 8 11 15 28 26 46 8 8 12 +Nd/Tg 47 : 45 43 0 0 2 35 46 1 47 36 5 39 8 7 48 38 47 31 11 11 8 3 20 20 2 16 14 8 19 33 9 6 0 20 5 29 16 12 27 8 18 8 22 15 28 26 12 47 8 12 +Nd/Tg 48 : 45 0 0 0 2 3 46 1 48 36 4 39 8 4 48 38 8 2 11 11 8 3 20 20 2 16 14 8 19 33 9 6 0 20 4 29 16 14 27 8 18 8 22 15 0 26 12 8 48 14 +Nd/Tg 49 : 45 0 0 0 2 3 46 1 48 6 4 6 49 4 49 6 8 31 11 11 8 3 15 0 2 16 14 8 3 15 9 6 0 20 4 29 9 12 15 8 18 8 11 15 0 26 12 8 14 49 + + diff --git a/1_perfrep b/1_perfrep new file mode 100755 index 0000000..e4aed1a --- /dev/null +++ b/1_perfrep @@ -0,0 +1,121 @@ +***Database Report at time 1 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 40 +Queries_sent_from_RouterNode : 858 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 70 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 2184 + +Responses_sent_from_ResourceNode : 4 +Responses_sent_from_RouterNode : 78 + +Num_of_good_responses : 0 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 0 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 0 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 3234 + +Queries_sent_from_UserNode (query packets) : 0 +Num_responses_sent_for_UserNode : 0 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 0 + +Num_total_queries_generated (rtr, res, user): 898 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 82 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 0: 1: 1: 44: 0 + 1: 0: 5: 61: 0 + 2: 2: 2: 28: 0 + 3: 0: 5: 51: 0 + 4: 3: 5: 67: 0 + 5: 0: 3: 58: 0 + 6: 0: 7: 54: 0 + 7: 0: 7: 69: 0 + 8: 0: 4: 35: 0 + 9: 0: 6: 32: 0 + 10: 1: 2: 16: 0 + 11: 0: 6: 33: 0 + 12: 1: 6: 22: 0 + 14: 0: 1: 6: 0 + 15: 0: 2: 8: 0 + 16: 0: 6: 24: 0 + 17: 0: 5: 16: 0 + 18: 0: 6: 24: 0 + 19: 0: 6: 18: 0 + 20: 1: 4: 14: 0 + 21: 1: 1: 4: 0 + 22: 1: 3: 11: 0 + 23: 2: 3: 11: 0 + 24: 0: 3: 12: 0 + 25: 2: 4: 16: 0 + 26: 0: 4: 8: 0 + 27: 0: 3: 9: 0 + 28: 0: 2: 6: 0 + 29: 0: 4: 12: 0 + 30: 1: 3: 11: 0 + 31: 0: 2: 6: 0 + 32: 0: 1: 3: 0 + 33: 0: 6: 16: 0 + 34: 1: 5: 17: 0 + 35: 0: 7: 19: 0 + 36: 0: 5: 18: 0 + 37: 3: 3: 15: 0 + 38: 0: 1: 6: 0 + 39: 0: 1: 6: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 0 , sum_num_resources = 146 , sum_num_queries = 865 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.0000 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 82 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 0, sum_num_queries = 0, RouterNode_k= 3 +Recall rate per query for external queries not yet available + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 0 +Hit rate per query for external queries not yet available + diff --git a/200_netout.net b/200_netout.net new file mode 100755 index 0000000..3a2bbe6 --- /dev/null +++ b/200_netout.net @@ -0,0 +1,392 @@ +*Vertices 10 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +*Arcs +1 4  +1 4  +1 3  +1 3  +1 5  +1 5  +1 5  +1 5  +1 2  +1 5  +1 5  +1 2  +1 4  +1 4  +1 4  +1 4  +1 5  +1 5  +1 2  +1 2  +1 2  +1 2  +1 3  +1 4  +1 5  +1 5  +1 4  +1 3  +1 3  +1 3  +1 4  +1 4  +1 3  +1 7  +1 3  +1 7  +1 5  +1 5  +1 2  +1 2  +1 9  +1 8  +1 4  +1 4  +1 2  +1 2  +1 2  +1 3  +1 3  +1 2  +1 2  +1 2  +1 3  +1 4  +1 4  +1 3  +1 3  +1 3  +1 4  +1 4  +1 6  +1 3  +1 3  +1 5  +1 5  +1 3  +1 3  +1 5  +1 5  +1 2  +1 2  +1 5  +1 5  +2 4  +2 4  +2 10  +2 10  +2 3  +2 3  +2 5  +2 5  +2 1  +2 1  +2 5  +2 5  +2 5  +2 5  +2 4  +2 4  +2 4  +2 4  +2 5  +2 5  +2 3  +2 4  +2 5  +2 5  +2 3  +2 4  +2 3  +2 3  +2 4  +2 4  +2 1  +2 1  +2 3  +2 7  +2 3  +2 5  +2 5  +2 1  +2 1  +2 8  +2 4  +2 4  +2 3  +2 3  +2 3  +2 4  +2 3  +2 4  +2 3  +2 3  +2 4  +2 4  +2 6  +2 3  +2 3  +2 5  +2 5  +2 1  +2 1  +2 3  +2 3  +2 1  +2 1  +2 5  +2 5  +2 1  +2 1  +2 1  +2 1  +2 1  +2 1  +2 5  +2 5  +3 4  +3 4  +3 10  +3 5  +3 1  +3 5  +3 1  +3 5  +3 5  +3 5  +3 2  +3 5  +3 2  +3 4  +3 4  +3 4  +3 4  +3 5  +3 5  +3 2  +3 2  +3 2  +3 2  +3 4  +3 5  +3 4  +3 5  +3 4  +3 1  +3 4  +3 1  +3 7  +3 5  +3 5  +3 2  +3 2  +3 1  +3 1  +3 9  +3 4  +3 4  +3 2  +3 2  +3 2  +3 2  +3 2  +3 2  +3 4  +3 4  +3 4  +3 4  +3 6  +3 5  +3 5  +3 1  +3 1  +3 1  +3 1  +3 5  +3 5  +3 1  +3 1  +3 2  +3 2  +3 1  +3 1  +3 1  +3 1  +3 5  +3 5  +4 10  +4 10  +4 3  +4 3  +4 5  +4 1  +4 5  +4 1  +4 5  +4 5  +4 5  +4 2  +4 5  +4 2  +4 5  +4 5  +4 2  +4 2  +4 2  +4 2  +4 5  +4 3  +4 3  +4 5  +4 3  +4 3  +4 1  +4 1  +4 3  +4 3  +4 5  +4 5  +4 2  +4 2  +4 1  +4 1  +4 9  +4 8  +4 2  +4 2  +4 2  +4 3  +4 3  +4 2  +4 2  +4 2  +4 3  +4 3  +4 3  +4 3  +4 6  +4 3  +4 3  +4 5  +4 5  +4 1  +4 1  +4 3  +4 3  +4 1  +4 1  +4 5  +4 5  +4 1  +4 1  +4 2  +4 2  +4 1  +4 1  +4 1  +4 1  +4 5  +4 5  +5 4  +5 4  +5 10  +5 10  +5 3  +5 3  +5 1  +5 1  +5 2  +5 2  +5 4  +5 4  +5 4  +5 4  +5 2  +5 2  +5 2  +5 2  +5 3  +5 4  +5 3  +5 4  +5 3  +5 3  +5 1  +5 4  +5 1  +5 4  +5 7  +5 3  +5 3  +5 2  +5 2  +5 1  +5 1  +5 9  +5 8  +5 4  +5 4  +5 2  +5 2  +5 2  +5 3  +5 2  +5 3  +5 2  +5 2  +5 3  +5 4  +5 3  +5 4  +5 3  +5 3  +5 4  +5 4  +5 3  +5 3  +5 1  +5 1  +5 3  +5 3  +5 1  +5 1  +5 1  +5 1  +5 2  +5 2  +5 1  +5 1  +5 1  +5 1  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 5  +8 1  +8 2  +8 4  +8 5  +9 1  +9 3  +9 4  +9 5  +10 2  +10 3  +10 4  +10 5  diff --git a/200_netroutingtable b/200_netroutingtable new file mode 100755 index 0000000..8bc56ce --- /dev/null +++ b/200_netroutingtable @@ -0,0 +1,173 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 2 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 1 : Tag 11 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 2 : Tag 15 id 4 - type 2 , id 4 - type 2 , +Node :0: Row 3 : Tag 19 id 4 - type 2 , id 4 - type 2 , +Node :0: Row 4 : Tag 21 id 1 - type 2 , id 4 - type 2 , id 4 - type 2 , id 1 - type 2 , +Node :0: Row 5 : Tag 22 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 6 : Tag 23 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 7 : Tag 24 id 4 - type 2 , id 4 - type 2 , +Node :0: Row 8 : Tag 26 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 9 : Tag 27 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 10 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 4 - type 2 , id 4 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 11 : Tag 30 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 12 : Tag 35 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 13 : Tag 36 id 2 - type 2 , id 6 - type 1 , id 2 - type 2 , id 6 - type 1 , +Node :0: Row 14 : Tag 37 id 4 - type 2 , id 4 - type 2 , +Node :0: Row 15 : Tag 40 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 16 : Tag 50 id 8 - type 1 , +Node :0: Row 17 : Tag 57 id 7 - type 1 , +Node :0: Row 18 : Tag 58 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 19 : Tag 59 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 20 : Tag 62 id 1 - type 2 , id 2 - type 2 , id 2 - type 2 , id 1 - type 2 , +Node :0: Row 21 : Tag 63 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 22 : Tag 67 id 2 - type 2 , id 3 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 23 : Tag 68 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 24 : Tag 69 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 25 : Tag 70 id 5 - type 1 , +Node :0: Row 26 : Tag 72 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 27 : Tag 73 id 4 - type 2 , id 4 - type 2 , +Node :0: Row 28 : Tag 82 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 29 : Tag 84 id 4 - type 2 , id 4 - type 2 , +Node :0: Row 30 : Tag 90 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 31 : Tag 98 id 4 - type 2 , id 4 - type 2 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 2 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 1 : Tag 3 id 9 - type 1 , id 9 - type 1 , +Node :1: Row 2 : Tag 11 id 2 - type 2 , id 2 - type 2 , +Node :1: Row 3 : Tag 15 id 4 - type 2 , id 4 - type 2 , id 0 - type 2 , id 0 - type 2 , +Node :1: Row 4 : Tag 19 id 4 - type 2 , id 4 - type 2 , +Node :1: Row 5 : Tag 21 id 4 - type 2 , id 4 - type 2 , +Node :1: Row 6 : Tag 22 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 7 : Tag 23 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 8 : Tag 24 id 4 - type 2 , id 4 - type 2 , +Node :1: Row 9 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 4 - type 2 , id 4 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :1: Row 10 : Tag 30 id 2 - type 2 , id 2 - type 2 , +Node :1: Row 11 : Tag 35 id 3 - type 2 , id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , +Node :1: Row 12 : Tag 36 id 2 - type 2 , id 6 - type 1 , id 2 - type 2 , +Node :1: Row 13 : Tag 37 id 4 - type 2 , id 4 - type 2 , +Node :1: Row 14 : Tag 49 id 0 - type 2 , id 0 - type 2 , +Node :1: Row 15 : Tag 57 id 7 - type 1 , +Node :1: Row 16 : Tag 58 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 17 : Tag 62 id 2 - type 2 , id 2 - type 2 , +Node :1: Row 18 : Tag 67 id 2 - type 2 , id 3 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :1: Row 19 : Tag 68 id 2 - type 2 , id 2 - type 2 , +Node :1: Row 20 : Tag 69 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 21 : Tag 70 id 5 - type 1 , +Node :1: Row 22 : Tag 72 id 2 - type 2 , id 2 - type 2 , +Node :1: Row 23 : Tag 73 id 4 - type 2 , id 4 - type 2 , +Node :1: Row 24 : Tag 77 id 0 - type 2 , id 0 - type 2 , +Node :1: Row 25 : Tag 82 id 2 - type 2 , id 2 - type 2 , +Node :1: Row 26 : Tag 83 id 0 - type 2 , id 0 - type 2 , +Node :1: Row 27 : Tag 84 id 4 - type 2 , id 4 - type 2 , +Node :1: Row 28 : Tag 86 id 0 - type 2 , id 0 - type 2 , +Node :1: Row 29 : Tag 92 id 0 - type 2 , id 0 - type 2 , +Node :1: Row 30 : Tag 93 id 0 - type 2 , id 0 - type 2 , +Node :1: Row 31 : Tag 98 id 4 - type 2 , id 4 - type 2 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 2 id 3 - type 2 , id 3 - type 2 , +Node :2: Row 1 : Tag 3 id 9 - type 1 , +Node :2: Row 2 : Tag 15 id 4 - type 2 , id 0 - type 2 , id 4 - type 2 , id 0 - type 2 , +Node :2: Row 3 : Tag 19 id 4 - type 2 , id 4 - type 2 , +Node :2: Row 4 : Tag 21 id 4 - type 2 , id 1 - type 2 , id 4 - type 2 , id 1 - type 2 , +Node :2: Row 5 : Tag 22 id 3 - type 2 , id 3 - type 2 , +Node :2: Row 6 : Tag 23 id 3 - type 2 , id 3 - type 2 , +Node :2: Row 7 : Tag 24 id 4 - type 2 , id 4 - type 2 , +Node :2: Row 8 : Tag 26 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 9 : Tag 27 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 10 : Tag 29 id 3 - type 2 , id 4 - type 2 , id 3 - type 2 , id 4 - type 2 , +Node :2: Row 11 : Tag 35 id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , +Node :2: Row 12 : Tag 36 id 6 - type 1 , +Node :2: Row 13 : Tag 37 id 4 - type 2 , id 4 - type 2 , +Node :2: Row 14 : Tag 40 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 15 : Tag 49 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 16 : Tag 50 id 8 - type 1 , +Node :2: Row 17 : Tag 58 id 3 - type 2 , id 3 - type 2 , +Node :2: Row 18 : Tag 59 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 19 : Tag 62 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 20 : Tag 63 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 21 : Tag 67 id 3 - type 2 , id 3 - type 2 , +Node :2: Row 22 : Tag 69 id 3 - type 2 , id 3 - type 2 , +Node :2: Row 23 : Tag 70 id 5 - type 1 , +Node :2: Row 24 : Tag 73 id 4 - type 2 , id 4 - type 2 , +Node :2: Row 25 : Tag 77 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 26 : Tag 83 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 27 : Tag 84 id 4 - type 2 , id 4 - type 2 , +Node :2: Row 28 : Tag 86 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 29 : Tag 90 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 30 : Tag 92 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 31 : Tag 93 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 32 : Tag 98 id 4 - type 2 , id 4 - type 2 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 3 id 9 - type 1 , id 9 - type 1 , +Node :3: Row 1 : Tag 11 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 2 : Tag 15 id 4 - type 2 , id 0 - type 2 , id 4 - type 2 , id 0 - type 2 , +Node :3: Row 3 : Tag 19 id 4 - type 2 , id 4 - type 2 , +Node :3: Row 4 : Tag 21 id 4 - type 2 , id 1 - type 2 , id 4 - type 2 , id 1 - type 2 , +Node :3: Row 5 : Tag 24 id 4 - type 2 , id 4 - type 2 , +Node :3: Row 6 : Tag 26 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 7 : Tag 27 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 8 : Tag 29 id 4 - type 2 , id 2 - type 2 , id 2 - type 2 , id 4 - type 2 , +Node :3: Row 9 : Tag 30 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 10 : Tag 35 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 11 : Tag 36 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 12 : Tag 37 id 4 - type 2 , id 4 - type 2 , +Node :3: Row 13 : Tag 40 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 14 : Tag 49 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 15 : Tag 50 id 8 - type 1 , +Node :3: Row 16 : Tag 57 id 7 - type 1 , +Node :3: Row 17 : Tag 59 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 18 : Tag 62 id 1 - type 2 , id 2 - type 2 , id 2 - type 2 , id 1 - type 2 , +Node :3: Row 19 : Tag 63 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 20 : Tag 67 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 21 : Tag 68 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 22 : Tag 70 id 5 - type 1 , +Node :3: Row 23 : Tag 72 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 24 : Tag 73 id 4 - type 2 , id 4 - type 2 , +Node :3: Row 25 : Tag 77 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 26 : Tag 82 id 2 - type 2 , id 2 - type 2 , +Node :3: Row 27 : Tag 83 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 28 : Tag 84 id 4 - type 2 , id 4 - type 2 , +Node :3: Row 29 : Tag 86 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 30 : Tag 90 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 31 : Tag 92 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 32 : Tag 93 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 33 : Tag 98 id 4 - type 2 , id 4 - type 2 , +Printing routing table of router node:4 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :4: Row 0 : Tag 2 id 3 - type 2 , id 3 - type 2 , +Node :4: Row 1 : Tag 3 id 9 - type 1 , id 9 - type 1 , +Node :4: Row 2 : Tag 11 id 2 - type 2 , id 2 - type 2 , +Node :4: Row 3 : Tag 15 id 0 - type 2 , id 0 - type 2 , +Node :4: Row 4 : Tag 21 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 5 : Tag 22 id 3 - type 2 , id 3 - type 2 , +Node :4: Row 6 : Tag 23 id 3 - type 2 , id 3 - type 2 , +Node :4: Row 7 : Tag 26 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 8 : Tag 27 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 9 : Tag 29 id 2 - type 2 , id 3 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :4: Row 10 : Tag 30 id 2 - type 2 , id 2 - type 2 , +Node :4: Row 11 : Tag 35 id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , +Node :4: Row 12 : Tag 36 id 6 - type 1 , id 2 - type 2 , id 2 - type 2 , +Node :4: Row 13 : Tag 40 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 14 : Tag 49 id 0 - type 2 , id 0 - type 2 , +Node :4: Row 15 : Tag 50 id 8 - type 1 , +Node :4: Row 16 : Tag 57 id 7 - type 1 , +Node :4: Row 17 : Tag 58 id 3 - type 2 , id 3 - type 2 , +Node :4: Row 18 : Tag 59 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 19 : Tag 62 id 1 - type 2 , id 2 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :4: Row 20 : Tag 63 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 21 : Tag 67 id 2 - type 2 , id 3 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :4: Row 22 : Tag 68 id 2 - type 2 , id 2 - type 2 , +Node :4: Row 23 : Tag 69 id 3 - type 2 , id 3 - type 2 , +Node :4: Row 24 : Tag 72 id 2 - type 2 , id 2 - type 2 , +Node :4: Row 25 : Tag 77 id 0 - type 2 , id 0 - type 2 , +Node :4: Row 26 : Tag 82 id 2 - type 2 , id 2 - type 2 , +Node :4: Row 27 : Tag 83 id 0 - type 2 , id 0 - type 2 , +Node :4: Row 28 : Tag 86 id 0 - type 2 , id 0 - type 2 , +Node :4: Row 29 : Tag 90 id 1 - type 2 , id 1 - type 2 , +Node :4: Row 30 : Tag 92 id 0 - type 2 , id 0 - type 2 , +Node :4: Row 31 : Tag 93 id 0 - type 2 , id 0 - type 2 , diff --git a/200_netstrucrep b/200_netstrucrep new file mode 100755 index 0000000..4241933 --- /dev/null +++ b/200_netstrucrep @@ -0,0 +1,32 @@ +num_vertices=10 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 1 2 +1 0 1 1 1 1 1 1 2 1 +1 1 0 1 1 1 1 2 1 1 +1 1 1 0 1 1 2 1 1 1 +1 1 1 1 0 2 1 1 1 1 +1 1 1 1 2 0 2 2 2 2 +1 1 1 2 1 2 0 2 2 2 +1 1 2 1 1 2 2 0 2 2 +1 2 1 1 1 2 2 2 0 2 +2 1 1 1 1 2 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 60 +2 : 68 + +***Parents** +0 0 0 0 0 0 0 0 0 1 +1 1 1 1 1 1 1 1 2 1 +2 2 2 2 2 2 2 3 2 2 +3 3 3 3 3 3 4 3 3 3 +4 4 4 4 4 0 4 4 4 4 +5 5 5 5 0 5 0 0 0 1 +6 6 6 0 6 0 6 0 0 1 +7 7 0 7 7 0 0 7 0 1 +8 0 8 8 8 0 0 0 8 2 +1 9 9 9 9 1 1 1 2 9 diff --git a/21_netout.net b/21_netout.net new file mode 100755 index 0000000..d971cce --- /dev/null +++ b/21_netout.net @@ -0,0 +1,72 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 2 1 +1 3 1 +1 5 1 +1 6 1 +1 2 1 +1 4 1 +1 2 1 +1 4 1 +1 7 1 +1 3 1 +1 4 1 +1 2 1 +1 2 1 +1 4 1 +1 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 3 1 +2 5 1 +2 6 1 +2 4 1 +2 4 1 +2 7 1 +2 3 1 +2 4 1 +2 4 1 +2 3 1 +3 4 1 +3 8 1 +3 5 1 +3 6 1 +3 4 1 +3 4 1 +3 7 1 +3 4 1 +3 4 1 +4 8 1 +4 5 1 +4 6 1 +4 7 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/21_netroutingtable b/21_netroutingtable new file mode 100755 index 0000000..3c44c29 --- /dev/null +++ b/21_netroutingtable @@ -0,0 +1,51 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, +Node 0: Row 3:Tag 9: id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, +Node 0: Row 5:Tag 11: id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, +Node 1: Row 8:Tag 19: id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, +Node 1: Row 10:Tag 26: id 3 - type 2, +Node 1: Row 11:Tag 27: id 2 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 10: id 4 - type 1, +Node 2: Row 2:Tag 11: id 5 - type 1, +Node 2: Row 3:Tag 12: id 3 - type 2, +Node 2: Row 4:Tag 16: id 3 - type 2, +Node 2: Row 5:Tag 17: id 6 - type 1, +Node 2: Row 6:Tag 20: id 3 - type 2, +Node 2: Row 7:Tag 26: id 3 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 6: id 7 - type 1, +Node 3: Row 1:Tag 10: id 4 - type 1, +Node 3: Row 2:Tag 11: id 5 - type 1, +Node 3: Row 3:Tag 17: id 6 - type 1, + diff --git a/21_netstrucrep b/21_netstrucrep new file mode 100755 index 0000000..dc1e303 --- /dev/null +++ b/21_netstrucrep @@ -0,0 +1,49 @@ +***Routing table length histogram** +Length : Freq + 4 : 1 + 8 : 1 + 12 : 1 + 15 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 32 + 2 : 7 + +***Routing table max width histogram** +Max width : Num of pairs + 1 : 1 + 2 : 3 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 38 + 2 : 18 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 0 1 1 1 1 1 1 +Nd/Tg 3 : 2 2 0 1 1 1 1 1 +Nd/Tg 4 : 2 2 2 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 4 1 1 1 1 1 1 1 +Nd/Tg 2 : 4 4 2 2 2 2 2 2 +Nd/Tg 3 : 4 4 4 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/21_perfrep b/21_perfrep new file mode 100755 index 0000000..c07f38a --- /dev/null +++ b/21_perfrep @@ -0,0 +1,105 @@ +***Database Report at time 21 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 32 +Queries_sent_from_RouterNode : 100 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 74 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 431 + +Responses_sent_from_ResourceNode : 10 +Responses_sent_from_RouterNode : 41 + +Num_of_good_responses : 4 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 206 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 688 + +Queries_sent_from_UserNode (query packets) : 0 +Num_responses_sent_for_UserNode : 0 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 0 + +Num_total_queries_generated (rtr, res, user): 132 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 51 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 6: 0 + 3: 0: 1: 6: 0 + 6: 1: 2: 18: 2 + 9: 0: 1: 2: 0 + 10: 1: 1: 17: 1 + 11: 1: 0: 15: 0 + 12: 0: 2: 9: 0 + 15: 0: 1: 2: 0 + 16: 0: 1: 4: 0 + 17: 1: 1: 9: 1 + 19: 0: 1: 3: 0 + 20: 0: 1: 4: 0 + 21: 0: 1: 2: 0 + 23: 0: 1: 1: 0 + 26: 0: 2: 6: 0 + 27: 0: 1: 3: 0 + 33: 0: 1: 1: 0 + 35: 0: 1: 1: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 4 , sum_num_resources = 8 , sum_num_queries = 59 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.0678 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 24 + 2: 23 + 3: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 48 + 2: 127 + 3: 31 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 0, sum_num_queries = 0, RouterNode_k= 3 +Recall rate per query for external queries not yet available + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 0 +Hit rate per query for external queries not yet available + diff --git a/25_netout.net b/25_netout.net new file mode 100755 index 0000000..63c2554 --- /dev/null +++ b/25_netout.net @@ -0,0 +1,67 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 2  +1 4  +1 8  +1 2  +1 3  +1 4  +1 6  +1 7  +1 3  +1 2  +1 4  +1 2  +1 3  +1 4  +1 5  +2 4  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 3  +2 4  +2 3  +2 4  +2 5  +3 4  +3 4  +3 8  +3 4  +3 6  +3 7  +3 4  +3 4  +3 5  +4 8  +4 6  +4 7  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/25_netroutingtable b/25_netroutingtable new file mode 100755 index 0000000..97c8497 --- /dev/null +++ b/25_netroutingtable @@ -0,0 +1,32 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :2: Row 2 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 3 : Tag 6 id 3 - type 2 , +Node :2: Row 4 : Tag 7 id 3 - type 2 , +Node :2: Row 5 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 1 id 7 - type 1 , +Node :3: Row 1 : Tag 4 id 5 - type 1 , id 6 - type 1 , +Node :3: Row 2 : Tag 8 id 4 - type 1 , diff --git a/25_netstrucrep b/25_netstrucrep new file mode 100755 index 0000000..9e5a90a --- /dev/null +++ b/25_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +2 0 1 1 1 1 1 1 +2 2 0 1 1 1 1 1 +2 2 2 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 38 +2 : 1376390574 + +***Parents** +0 0 0 0 0 0 0 0 +4 1 1 1 1 1 1 1 +4 4 2 2 2 2 2 2 +4 4 4 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/25_perfrep b/25_perfrep new file mode 100755 index 0000000..45ca246 --- /dev/null +++ b/25_perfrep @@ -0,0 +1,47 @@ +***Database Report : Time :25*** +Queries_sent_from_ResourceNode :64 +Queries_sent_from_RouterNode :273 +Num_responses_sent :669 +Num_of_good_responses :35 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :728 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :3711 +Queries_sent_from_UserNode :0 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :0 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :3078 +num_global_responses :669 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 31 : 0 +1 : 5 : 61 : 11 +3 : 1 : 14 : 0 +4 : 4 : 80 : 24 +5 : 4 : 31 : 0 +6 : 2 : 38 : 0 +7 : 5 : 66 : 0 +8 : 1 : 16 : 0 +Values for recall rate calculation : sum_num_good_responses = 35, sum_num_resources = 24, sum_num_queries = 337, RouterNode_k = 3 +Recall rate per query = 0.830861 +Contents of hops_before_response_ctr : +1 : 263 +2 : 406 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 0, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query for external queries not yet available diff --git a/29_netout.net b/29_netout.net new file mode 100755 index 0000000..0fd9910 --- /dev/null +++ b/29_netout.net @@ -0,0 +1,145 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 4  +1 2  +1 4  +1 8  +1 4  +1 2  +1 8  +1 2  +1 2  +1 3  +1 4  +1 6  +1 7  +1 4  +1 3  +1 3  +1 3  +1 2  +1 4  +1 4  +1 2  +1 2  +1 3  +1 4  +1 4  +1 2  +1 3  +1 5  +2 4  +2 1  +2 1  +2 4  +2 4  +2 8  +2 1  +2 1  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 4  +2 3  +2 3  +2 1  +2 1  +2 3  +2 4  +2 4  +2 3  +2 4  +2 1  +2 1  +2 4  +2 3  +2 5  +3 4  +3 1  +3 4  +3 1  +3 4  +3 8  +3 1  +3 2  +3 4  +3 1  +3 2  +3 2  +3 2  +3 4  +3 6  +3 7  +3 4  +3 6  +3 7  +3 1  +3 1  +3 4  +3 2  +3 4  +3 2  +3 4  +3 1  +3 2  +3 4  +3 1  +3 2  +3 5  +4 1  +4 1  +4 8  +4 1  +4 2  +4 1  +4 2  +4 8  +4 2  +4 2  +4 6  +4 7  +4 3  +4 3  +4 6  +4 7  +4 1  +4 3  +4 1  +4 3  +4 2  +4 2  +4 1  +4 2  +4 3  +4 1  +4 2  +4 3  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/29_netroutingtable b/29_netroutingtable new file mode 100755 index 0000000..3e01613 --- /dev/null +++ b/29_netroutingtable @@ -0,0 +1,39 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , id 3 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , id 0 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 3 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 4 : Tag 5 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 5 : Tag 6 id 3 - type 2 , id 1 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :2: Row 6 : Tag 7 id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 0 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 1 : Tag 1 id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 0 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :3: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 3 : Tag 4 id 5 - type 1 , id 6 - type 1 , id 2 - type 2 , id 2 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :3: Row 4 : Tag 5 id 0 - type 2 , id 2 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :3: Row 5 : Tag 6 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 6 : Tag 7 id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :3: Row 7 : Tag 8 id 4 - type 1 , diff --git a/29_netstrucrep b/29_netstrucrep new file mode 100755 index 0000000..3a9a106 --- /dev/null +++ b/29_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +1 0 1 1 1 1 1 1 +1 1 0 1 1 1 1 1 +1 1 1 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 44 +2 : 1376390586 + +***Parents** +0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 +2 2 2 2 2 2 2 2 +3 3 3 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/29_perfrep b/29_perfrep new file mode 100755 index 0000000..b7e07cd --- /dev/null +++ b/29_perfrep @@ -0,0 +1,47 @@ +***Database Report : Time :29*** +Queries_sent_from_ResourceNode :80 +Queries_sent_from_RouterNode :273 +Num_responses_sent :944 +Num_of_good_responses :290 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :996 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :6039 +Queries_sent_from_UserNode :0 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :0 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :5131 +num_global_responses :944 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 31 : 32 +1 : 5 : 65 : 50 +3 : 1 : 14 : 0 +4 : 4 : 88 : 53 +5 : 4 : 31 : 17 +6 : 2 : 38 : 28 +7 : 5 : 66 : 110 +8 : 1 : 20 : 0 +Values for recall rate calculation : sum_num_good_responses = 290, sum_num_resources = 24, sum_num_queries = 353, RouterNode_k = 3 +Recall rate per query = 6.57224 +Contents of hops_before_response_ctr : +1 : 339 +2 : 605 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 0, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query for external queries not yet available diff --git a/31_netout.net b/31_netout.net new file mode 100755 index 0000000..401b91c --- /dev/null +++ b/31_netout.net @@ -0,0 +1,158 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/31_netroutingtable b/31_netroutingtable new file mode 100755 index 0000000..297b050 --- /dev/null +++ b/31_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, +Node 0: Row 5:Tag 11: id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/31_netstrucrep b/31_netstrucrep new file mode 100755 index 0000000..c664c36 --- /dev/null +++ b/31_netstrucrep @@ -0,0 +1,54 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 10 + 2 : 37 + 3 : 7 + 4 : 4 + 5 : 1 + 6 : 1 + +***Routing table max width histogram** +Max width : Num of pairs + 3 : 1 + 4 : 1 + 5 : 1 + 6 : 1 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/31_perfrep b/31_perfrep new file mode 100755 index 0000000..62d0c59 --- /dev/null +++ b/31_perfrep @@ -0,0 +1,105 @@ +***Database Report at time 31 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 32 +Queries_sent_from_RouterNode : 250 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 74 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 1062 + +Responses_sent_from_ResourceNode : 10 +Responses_sent_from_RouterNode : 57 + +Num_of_good_responses : 26 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 235 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 1485 + +Queries_sent_from_UserNode (query packets) : 0 +Num_responses_sent_for_UserNode : 0 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 0 + +Num_total_queries_generated (rtr, res, user): 282 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 67 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 14: 2 + 3: 0: 1: 14: 2 + 6: 1: 2: 25: 10 + 9: 0: 1: 17: 0 + 10: 1: 1: 24: 4 + 11: 1: 0: 22: 0 + 12: 0: 2: 20: 4 + 15: 0: 1: 10: 0 + 16: 0: 1: 16: 0 + 17: 1: 1: 16: 2 + 19: 0: 1: 7: 0 + 20: 0: 1: 8: 0 + 21: 0: 1: 6: 0 + 23: 0: 1: 4: 0 + 26: 0: 2: 14: 2 + 27: 0: 1: 7: 0 + 33: 0: 1: 4: 0 + 35: 0: 1: 4: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 22 , sum_num_resources = 8 , sum_num_queries = 99 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.2222 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 40 + 2: 23 + 3: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 48 + 2: 156 + 3: 31 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 0, sum_num_queries = 0, RouterNode_k= 3 +Recall rate per query for external queries not yet available + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 0 +Hit rate per query for external queries not yet available + diff --git a/33_netout.net b/33_netout.net new file mode 100755 index 0000000..0fd9910 --- /dev/null +++ b/33_netout.net @@ -0,0 +1,145 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 4  +1 2  +1 4  +1 8  +1 4  +1 2  +1 8  +1 2  +1 2  +1 3  +1 4  +1 6  +1 7  +1 4  +1 3  +1 3  +1 3  +1 2  +1 4  +1 4  +1 2  +1 2  +1 3  +1 4  +1 4  +1 2  +1 3  +1 5  +2 4  +2 1  +2 1  +2 4  +2 4  +2 8  +2 1  +2 1  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 4  +2 3  +2 3  +2 1  +2 1  +2 3  +2 4  +2 4  +2 3  +2 4  +2 1  +2 1  +2 4  +2 3  +2 5  +3 4  +3 1  +3 4  +3 1  +3 4  +3 8  +3 1  +3 2  +3 4  +3 1  +3 2  +3 2  +3 2  +3 4  +3 6  +3 7  +3 4  +3 6  +3 7  +3 1  +3 1  +3 4  +3 2  +3 4  +3 2  +3 4  +3 1  +3 2  +3 4  +3 1  +3 2  +3 5  +4 1  +4 1  +4 8  +4 1  +4 2  +4 1  +4 2  +4 8  +4 2  +4 2  +4 6  +4 7  +4 3  +4 3  +4 6  +4 7  +4 1  +4 3  +4 1  +4 3  +4 2  +4 2  +4 1  +4 2  +4 3  +4 1  +4 2  +4 3  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/33_netroutingtable b/33_netroutingtable new file mode 100755 index 0000000..3e01613 --- /dev/null +++ b/33_netroutingtable @@ -0,0 +1,39 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , id 3 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , id 0 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 3 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 4 : Tag 5 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 5 : Tag 6 id 3 - type 2 , id 1 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :2: Row 6 : Tag 7 id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 0 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 1 : Tag 1 id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 0 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :3: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 3 : Tag 4 id 5 - type 1 , id 6 - type 1 , id 2 - type 2 , id 2 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :3: Row 4 : Tag 5 id 0 - type 2 , id 2 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :3: Row 5 : Tag 6 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 6 : Tag 7 id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :3: Row 7 : Tag 8 id 4 - type 1 , diff --git a/33_netstrucrep b/33_netstrucrep new file mode 100755 index 0000000..36e48d0 --- /dev/null +++ b/33_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +1 0 1 1 1 1 1 1 +1 1 0 1 1 1 1 1 +1 1 1 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 44 +2 : 1376390598 + +***Parents** +0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 +2 2 2 2 2 2 2 2 +3 3 3 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/33_perfrep b/33_perfrep new file mode 100755 index 0000000..99ef785 --- /dev/null +++ b/33_perfrep @@ -0,0 +1,51 @@ +***Database Report : Time :33*** +Queries_sent_from_ResourceNode :96 +Queries_sent_from_RouterNode :417 +Num_responses_sent :1039 +Num_of_good_responses :325 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :1366 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :7945 +Queries_sent_from_UserNode :12 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :34 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :6980 +num_global_responses :1039 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 47 : 32 +1 : 5 : 93 : 61 +3 : 1 : 22 : 0 +4 : 4 : 116 : 77 +5 : 4 : 51 : 17 +6 : 2 : 54 : 28 +7 : 5 : 106 : 110 +8 : 1 : 24 : 0 +Values for recall rate calculation : sum_num_good_responses = 325, sum_num_resources = 24, sum_num_queries = 513, RouterNode_k = 3 +Recall rate per query = 5.06823 +Contents of hops_before_response_ctr : +1 : 406 +2 : 633 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +0 : 2 : 3 : 0 +1 : 5 : 3 : 0 +5 : 4 : 3 : 0 +8 : 1 : 3 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 12, sum_num_queries = 12, RouterNode_k = 3 +Recall rate per query for external queries = 0 diff --git a/37_netout.net b/37_netout.net new file mode 100755 index 0000000..0fd9910 --- /dev/null +++ b/37_netout.net @@ -0,0 +1,145 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 4  +1 2  +1 4  +1 8  +1 4  +1 2  +1 8  +1 2  +1 2  +1 3  +1 4  +1 6  +1 7  +1 4  +1 3  +1 3  +1 3  +1 2  +1 4  +1 4  +1 2  +1 2  +1 3  +1 4  +1 4  +1 2  +1 3  +1 5  +2 4  +2 1  +2 1  +2 4  +2 4  +2 8  +2 1  +2 1  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 4  +2 3  +2 3  +2 1  +2 1  +2 3  +2 4  +2 4  +2 3  +2 4  +2 1  +2 1  +2 4  +2 3  +2 5  +3 4  +3 1  +3 4  +3 1  +3 4  +3 8  +3 1  +3 2  +3 4  +3 1  +3 2  +3 2  +3 2  +3 4  +3 6  +3 7  +3 4  +3 6  +3 7  +3 1  +3 1  +3 4  +3 2  +3 4  +3 2  +3 4  +3 1  +3 2  +3 4  +3 1  +3 2  +3 5  +4 1  +4 1  +4 8  +4 1  +4 2  +4 1  +4 2  +4 8  +4 2  +4 2  +4 6  +4 7  +4 3  +4 3  +4 6  +4 7  +4 1  +4 3  +4 1  +4 3  +4 2  +4 2  +4 1  +4 2  +4 3  +4 1  +4 2  +4 3  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/37_netroutingtable b/37_netroutingtable new file mode 100755 index 0000000..3e01613 --- /dev/null +++ b/37_netroutingtable @@ -0,0 +1,39 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , id 3 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , id 0 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 3 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 4 : Tag 5 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 5 : Tag 6 id 3 - type 2 , id 1 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :2: Row 6 : Tag 7 id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 0 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 1 : Tag 1 id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 0 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :3: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 3 : Tag 4 id 5 - type 1 , id 6 - type 1 , id 2 - type 2 , id 2 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :3: Row 4 : Tag 5 id 0 - type 2 , id 2 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :3: Row 5 : Tag 6 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 6 : Tag 7 id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :3: Row 7 : Tag 8 id 4 - type 1 , diff --git a/37_netstrucrep b/37_netstrucrep new file mode 100755 index 0000000..9c75309 --- /dev/null +++ b/37_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +1 0 1 1 1 1 1 1 +1 1 0 1 1 1 1 1 +1 1 1 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 44 +2 : 1376390610 + +***Parents** +0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 +2 2 2 2 2 2 2 2 +3 3 3 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/37_perfrep b/37_perfrep new file mode 100755 index 0000000..bbbba2b --- /dev/null +++ b/37_perfrep @@ -0,0 +1,52 @@ +***Database Report : Time :37*** +Queries_sent_from_ResourceNode :112 +Queries_sent_from_RouterNode :417 +Num_responses_sent :2317 +Num_of_good_responses :618 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :2646 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :21857 +Queries_sent_from_UserNode :12 +Num_responses_sent_for_UserNode :8 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :42 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :19614 +num_global_responses :2325 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 47 : 54 +1 : 5 : 97 : 114 +3 : 1 : 22 : 0 +4 : 4 : 124 : 130 +5 : 4 : 51 : 33 +6 : 2 : 54 : 56 +7 : 5 : 106 : 231 +8 : 1 : 28 : 0 +Values for recall rate calculation : sum_num_good_responses = 618, sum_num_resources = 24, sum_num_queries = 529, RouterNode_k = 3 +Recall rate per query = 9.34594 +Contents of hops_before_response_ctr : +1 : 665 +2 : 1652 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +2 : 8 +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +0 : 2 : 3 : 0 +1 : 5 : 3 : 0 +5 : 4 : 3 : 0 +8 : 1 : 3 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 12, sum_num_queries = 12, RouterNode_k = 3 +Recall rate per query for external queries = 0 diff --git a/41_netout.net b/41_netout.net new file mode 100755 index 0000000..401b91c --- /dev/null +++ b/41_netout.net @@ -0,0 +1,158 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/41_netroutingtable b/41_netroutingtable new file mode 100755 index 0000000..297b050 --- /dev/null +++ b/41_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, +Node 0: Row 5:Tag 11: id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/41_netstrucrep b/41_netstrucrep new file mode 100755 index 0000000..c664c36 --- /dev/null +++ b/41_netstrucrep @@ -0,0 +1,54 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 10 + 2 : 37 + 3 : 7 + 4 : 4 + 5 : 1 + 6 : 1 + +***Routing table max width histogram** +Max width : Num of pairs + 3 : 1 + 4 : 1 + 5 : 1 + 6 : 1 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/41_perfrep b/41_perfrep new file mode 100755 index 0000000..743a7c7 --- /dev/null +++ b/41_perfrep @@ -0,0 +1,105 @@ +***Database Report at time 41 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 48 +Queries_sent_from_RouterNode : 250 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 158 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 1345 + +Responses_sent_from_ResourceNode : 14 +Responses_sent_from_RouterNode : 94 + +Num_of_good_responses : 26 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 833 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 1909 + +Queries_sent_from_UserNode (query packets) : 0 +Num_responses_sent_for_UserNode : 0 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 0 + +Num_total_queries_generated (rtr, res, user): 298 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 108 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 14: 2 + 3: 0: 1: 14: 2 + 6: 1: 2: 29: 10 + 9: 0: 1: 17: 0 + 10: 1: 1: 28: 4 + 11: 1: 0: 26: 0 + 12: 0: 2: 20: 4 + 15: 0: 1: 10: 0 + 16: 0: 1: 16: 0 + 17: 1: 1: 20: 2 + 19: 0: 1: 7: 0 + 20: 0: 1: 8: 0 + 21: 0: 1: 6: 0 + 23: 0: 1: 4: 0 + 26: 0: 2: 14: 2 + 27: 0: 1: 7: 0 + 33: 0: 1: 4: 0 + 35: 0: 1: 4: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 22 , sum_num_resources = 8 , sum_num_queries = 111 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.1982 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 53 + 2: 48 + 3: 7 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 225 + 2: 521 + 3: 87 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 0, sum_num_queries = 0, RouterNode_k= 3 +Recall rate per query for external queries not yet available + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 0 +Hit rate per query for external queries not yet available + diff --git a/45_netout.net b/45_netout.net new file mode 100755 index 0000000..0fd9910 --- /dev/null +++ b/45_netout.net @@ -0,0 +1,145 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 4  +1 2  +1 4  +1 8  +1 4  +1 2  +1 8  +1 2  +1 2  +1 3  +1 4  +1 6  +1 7  +1 4  +1 3  +1 3  +1 3  +1 2  +1 4  +1 4  +1 2  +1 2  +1 3  +1 4  +1 4  +1 2  +1 3  +1 5  +2 4  +2 1  +2 1  +2 4  +2 4  +2 8  +2 1  +2 1  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 4  +2 3  +2 3  +2 1  +2 1  +2 3  +2 4  +2 4  +2 3  +2 4  +2 1  +2 1  +2 4  +2 3  +2 5  +3 4  +3 1  +3 4  +3 1  +3 4  +3 8  +3 1  +3 2  +3 4  +3 1  +3 2  +3 2  +3 2  +3 4  +3 6  +3 7  +3 4  +3 6  +3 7  +3 1  +3 1  +3 4  +3 2  +3 4  +3 2  +3 4  +3 1  +3 2  +3 4  +3 1  +3 2  +3 5  +4 1  +4 1  +4 8  +4 1  +4 2  +4 1  +4 2  +4 8  +4 2  +4 2  +4 6  +4 7  +4 3  +4 3  +4 6  +4 7  +4 1  +4 3  +4 1  +4 3  +4 2  +4 2  +4 1  +4 2  +4 3  +4 1  +4 2  +4 3  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/45_netroutingtable b/45_netroutingtable new file mode 100755 index 0000000..3e01613 --- /dev/null +++ b/45_netroutingtable @@ -0,0 +1,39 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , id 3 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , id 0 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 3 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 4 : Tag 5 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 5 : Tag 6 id 3 - type 2 , id 1 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :2: Row 6 : Tag 7 id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 0 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 1 : Tag 1 id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 0 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :3: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 3 : Tag 4 id 5 - type 1 , id 6 - type 1 , id 2 - type 2 , id 2 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :3: Row 4 : Tag 5 id 0 - type 2 , id 2 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :3: Row 5 : Tag 6 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 6 : Tag 7 id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :3: Row 7 : Tag 8 id 4 - type 1 , diff --git a/45_netstrucrep b/45_netstrucrep new file mode 100755 index 0000000..149d36c --- /dev/null +++ b/45_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +1 0 1 1 1 1 1 1 +1 1 0 1 1 1 1 1 +1 1 1 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 44 +2 : 1376390634 + +***Parents** +0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 +2 2 2 2 2 2 2 2 +3 3 3 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/45_perfrep b/45_perfrep new file mode 100755 index 0000000..cd07aac --- /dev/null +++ b/45_perfrep @@ -0,0 +1,53 @@ +***Database Report : Time :45*** +Queries_sent_from_ResourceNode :128 +Queries_sent_from_RouterNode :561 +Num_responses_sent :4893 +Num_of_good_responses :1246 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :13842 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :50801 +Queries_sent_from_UserNode :24 +Num_responses_sent_for_UserNode :8 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :84 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :46028 +num_global_responses :4901 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 67 : 90 +1 : 5 : 129 : 202 +3 : 1 : 30 : 0 +4 : 4 : 152 : 200 +5 : 4 : 67 : 123 +6 : 2 : 70 : 113 +7 : 5 : 142 : 518 +8 : 1 : 32 : 0 +Values for recall rate calculation : sum_num_good_responses = 1246, sum_num_resources = 24, sum_num_queries = 689, RouterNode_k = 3 +Recall rate per query = 14.4673 +Contents of hops_before_response_ctr : +1 : 983 +2 : 3910 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +2 : 8 +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +0 : 2 : 6 : 0 +1 : 5 : 3 : 0 +5 : 4 : 6 : 0 +6 : 2 : 3 : 0 +8 : 1 : 3 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 14, sum_num_queries = 21, RouterNode_k = 3 +Recall rate per query for external queries = 0 diff --git a/49_netout.net b/49_netout.net new file mode 100755 index 0000000..0fd9910 --- /dev/null +++ b/49_netout.net @@ -0,0 +1,145 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 4  +1 2  +1 4  +1 8  +1 4  +1 2  +1 8  +1 2  +1 2  +1 3  +1 4  +1 6  +1 7  +1 4  +1 3  +1 3  +1 3  +1 2  +1 4  +1 4  +1 2  +1 2  +1 3  +1 4  +1 4  +1 2  +1 3  +1 5  +2 4  +2 1  +2 1  +2 4  +2 4  +2 8  +2 1  +2 1  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 4  +2 3  +2 3  +2 1  +2 1  +2 3  +2 4  +2 4  +2 3  +2 4  +2 1  +2 1  +2 4  +2 3  +2 5  +3 4  +3 1  +3 4  +3 1  +3 4  +3 8  +3 1  +3 2  +3 4  +3 1  +3 2  +3 2  +3 2  +3 4  +3 6  +3 7  +3 4  +3 6  +3 7  +3 1  +3 1  +3 4  +3 2  +3 4  +3 2  +3 4  +3 1  +3 2  +3 4  +3 1  +3 2  +3 5  +4 1  +4 1  +4 8  +4 1  +4 2  +4 1  +4 2  +4 8  +4 2  +4 2  +4 6  +4 7  +4 3  +4 3  +4 6  +4 7  +4 1  +4 3  +4 1  +4 3  +4 2  +4 2  +4 1  +4 2  +4 3  +4 1  +4 2  +4 3  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/49_netroutingtable b/49_netroutingtable new file mode 100755 index 0000000..3e01613 --- /dev/null +++ b/49_netroutingtable @@ -0,0 +1,39 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , id 3 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , id 3 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , id 0 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , id 0 - type 2 , id 0 - type 2 , id 3 - type 2 , id 2 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , id 0 - type 2 , id 3 - type 2 , id 0 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :2: Row 3 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 4 : Tag 5 id 0 - type 2 , id 0 - type 2 , +Node :2: Row 5 : Tag 6 id 3 - type 2 , id 1 - type 2 , id 3 - type 2 , id 1 - type 2 , +Node :2: Row 6 : Tag 7 id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , id 3 - type 2 , id 0 - type 2 , id 1 - type 2 , +Node :2: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 0 id 0 - type 2 , id 0 - type 2 , +Node :3: Row 1 : Tag 1 id 7 - type 1 , id 0 - type 2 , id 1 - type 2 , id 0 - type 2 , id 1 - type 2 , id 7 - type 1 , +Node :3: Row 2 : Tag 3 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 3 : Tag 4 id 5 - type 1 , id 6 - type 1 , id 2 - type 2 , id 2 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :3: Row 4 : Tag 5 id 0 - type 2 , id 2 - type 2 , id 0 - type 2 , id 2 - type 2 , +Node :3: Row 5 : Tag 6 id 1 - type 2 , id 1 - type 2 , +Node :3: Row 6 : Tag 7 id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , id 0 - type 2 , id 1 - type 2 , id 2 - type 2 , +Node :3: Row 7 : Tag 8 id 4 - type 1 , diff --git a/49_netstrucrep b/49_netstrucrep new file mode 100755 index 0000000..2e19393 --- /dev/null +++ b/49_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +1 0 1 1 1 1 1 1 +1 1 0 1 1 1 1 1 +1 1 1 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 44 +2 : 1376390646 + +***Parents** +0 0 0 0 0 0 0 0 +1 1 1 1 1 1 1 1 +2 2 2 2 2 2 2 2 +3 3 3 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/49_perfrep b/49_perfrep new file mode 100755 index 0000000..bedcba7 --- /dev/null +++ b/49_perfrep @@ -0,0 +1,53 @@ +***Database Report : Time :49*** +Queries_sent_from_ResourceNode :144 +Queries_sent_from_RouterNode :705 +Num_responses_sent :4958 +Num_of_good_responses :1246 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :29074 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :52363 +Queries_sent_from_UserNode :24 +Num_responses_sent_for_UserNode :8 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :84 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :47525 +num_global_responses :4966 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 83 : 90 +1 : 5 : 161 : 202 +3 : 1 : 42 : 0 +4 : 4 : 176 : 200 +5 : 4 : 87 : 123 +6 : 2 : 86 : 113 +7 : 5 : 178 : 518 +8 : 1 : 36 : 0 +Values for recall rate calculation : sum_num_good_responses = 1246, sum_num_resources = 24, sum_num_queries = 849, RouterNode_k = 3 +Recall rate per query = 11.7409 +Contents of hops_before_response_ctr : +1 : 1048 +2 : 3910 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +2 : 8 +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +0 : 2 : 6 : 0 +1 : 5 : 3 : 0 +5 : 4 : 6 : 0 +6 : 2 : 3 : 0 +8 : 1 : 3 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 14, sum_num_queries = 21, RouterNode_k = 3 +Recall rate per query for external queries = 0 diff --git a/51_netout.net b/51_netout.net new file mode 100755 index 0000000..401b91c --- /dev/null +++ b/51_netout.net @@ -0,0 +1,158 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/51_netroutingtable b/51_netroutingtable new file mode 100755 index 0000000..297b050 --- /dev/null +++ b/51_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, +Node 0: Row 5:Tag 11: id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/51_netstrucrep b/51_netstrucrep new file mode 100755 index 0000000..c664c36 --- /dev/null +++ b/51_netstrucrep @@ -0,0 +1,54 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 10 + 2 : 37 + 3 : 7 + 4 : 4 + 5 : 1 + 6 : 1 + +***Routing table max width histogram** +Max width : Num of pairs + 3 : 1 + 4 : 1 + 5 : 1 + 6 : 1 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/51_perfrep b/51_perfrep new file mode 100755 index 0000000..78278e7 --- /dev/null +++ b/51_perfrep @@ -0,0 +1,111 @@ +***Database Report at time 51 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 48 +Queries_sent_from_RouterNode : 250 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 158 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 1345 + +Responses_sent_from_ResourceNode : 14 +Responses_sent_from_RouterNode : 96 + +Num_of_good_responses : 30 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 927 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 1911 + +Queries_sent_from_UserNode (query packets) : 15 +Num_responses_sent_for_UserNode : 0 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 24 + +Num_total_queries_generated (rtr, res, user): 313 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 110 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 14: 2 + 3: 0: 1: 14: 2 + 6: 1: 2: 29: 12 + 9: 0: 1: 17: 0 + 10: 1: 1: 28: 5 + 11: 1: 0: 26: 0 + 12: 0: 2: 20: 4 + 15: 0: 1: 10: 0 + 16: 0: 1: 16: 0 + 17: 1: 1: 20: 3 + 19: 0: 1: 7: 0 + 20: 0: 1: 8: 0 + 21: 0: 1: 6: 0 + 23: 0: 1: 4: 0 + 26: 0: 2: 14: 2 + 27: 0: 1: 7: 0 + 33: 0: 1: 4: 0 + 35: 0: 1: 4: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 26 , sum_num_resources = 8 , sum_num_queries = 111 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.2342 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 53 + 2: 48 + 3: 9 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 225 + 2: 605 + 3: 97 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 0 + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 1, sum_num_queries = 3, RouterNode_k= 3 +Recall rate per query for user queries = 0.000000 + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 0 + 20: 0: 3: 0 + 22: 0: 3: 0 + 33: 0: 3: 0 + 36: 0: 3: 0 + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 15 +Hit rate per query for user queries = 0.0000 + diff --git a/5_netout.net b/5_netout.net new file mode 100755 index 0000000..63c2554 --- /dev/null +++ b/5_netout.net @@ -0,0 +1,67 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 2  +1 4  +1 8  +1 2  +1 3  +1 4  +1 6  +1 7  +1 3  +1 2  +1 4  +1 2  +1 3  +1 4  +1 5  +2 4  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 3  +2 4  +2 3  +2 4  +2 5  +3 4  +3 4  +3 8  +3 4  +3 6  +3 7  +3 4  +3 4  +3 5  +4 8  +4 6  +4 7  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/5_netroutingtable b/5_netroutingtable new file mode 100755 index 0000000..97c8497 --- /dev/null +++ b/5_netroutingtable @@ -0,0 +1,32 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :2: Row 2 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 3 : Tag 6 id 3 - type 2 , +Node :2: Row 4 : Tag 7 id 3 - type 2 , +Node :2: Row 5 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 1 id 7 - type 1 , +Node :3: Row 1 : Tag 4 id 5 - type 1 , id 6 - type 1 , +Node :3: Row 2 : Tag 8 id 4 - type 1 , diff --git a/5_netstrucrep b/5_netstrucrep new file mode 100755 index 0000000..c5257a2 --- /dev/null +++ b/5_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +2 0 1 1 1 1 1 1 +2 2 0 1 1 1 1 1 +2 2 2 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 38 +2 : 1376390484 + +***Parents** +0 0 0 0 0 0 0 0 +4 1 1 1 1 1 1 1 +4 4 2 2 2 2 2 2 +4 4 4 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/5_perfrep b/5_perfrep new file mode 100755 index 0000000..2fcc309 --- /dev/null +++ b/5_perfrep @@ -0,0 +1,45 @@ +***Database Report : Time :5*** +Queries_sent_from_ResourceNode :0 +Queries_sent_from_RouterNode :0 +Num_responses_sent :0 +Num_of_good_responses :0 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :0 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :0 +Queries_sent_from_UserNode :0 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :0 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :36 +num_global_responses :0 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 0 : 0 +1 : 5 : 0 : 0 +3 : 1 : 0 : 0 +4 : 4 : 0 : 0 +5 : 4 : 0 : 0 +6 : 2 : 0 : 0 +7 : 5 : 0 : 0 +8 : 1 : 0 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 24, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query not yet available +Contents of hops_before_response_ctr : +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 0, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query for external queries not yet available diff --git a/61_netout.net b/61_netout.net new file mode 100755 index 0000000..5fe7382 --- /dev/null +++ b/61_netout.net @@ -0,0 +1,172 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 5 1 +1 6 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 1 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 1 1 +2 7 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/61_netroutingtable b/61_netroutingtable new file mode 100755 index 0000000..2bdcce9 --- /dev/null +++ b/61_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 0: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, id 0 - type 2, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, id 6 - type 1, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/61_netstrucrep b/61_netstrucrep new file mode 100755 index 0000000..9418ebe --- /dev/null +++ b/61_netstrucrep @@ -0,0 +1,51 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 2 + 2 : 44 + 3 : 4 + 4 : 8 + 6 : 2 + +***Routing table max width histogram** +Max width : Num of pairs + 4 : 2 + 6 : 2 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/61_perfrep b/61_perfrep new file mode 100755 index 0000000..e241674 --- /dev/null +++ b/61_perfrep @@ -0,0 +1,112 @@ +***Database Report at time 61 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 64 +Queries_sent_from_RouterNode : 410 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 252 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 2245 + +Responses_sent_from_ResourceNode : 18 +Responses_sent_from_RouterNode : 109 + +Num_of_good_responses : 55 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 927 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 3098 + +Queries_sent_from_UserNode (query packets) : 15 +Num_responses_sent_for_UserNode : 4 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 28 + +Num_total_queries_generated (rtr, res, user): 489 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 131 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 18: 3 + 3: 0: 1: 18: 3 + 6: 1: 2: 41: 15 + 9: 0: 1: 21: 3 + 10: 1: 1: 36: 7 + 11: 1: 0: 30: 0 + 12: 0: 2: 28: 10 + 15: 0: 1: 22: 1 + 16: 0: 1: 24: 4 + 17: 1: 1: 36: 4 + 19: 0: 1: 11: 0 + 20: 0: 1: 16: 0 + 21: 0: 1: 14: 0 + 23: 0: 1: 8: 0 + 26: 0: 2: 22: 5 + 27: 0: 1: 11: 0 + 33: 0: 1: 8: 0 + 35: 0: 1: 8: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 41 , sum_num_resources = 8 , sum_num_queries = 163 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.2515 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 70 + 2: 48 + 3: 9 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 225 + 2: 605 + 3: 97 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + 2: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 0 + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 1, sum_num_queries = 3, RouterNode_k= 3 +Recall rate per query for user queries = 0.000000 + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 0 + 20: 0: 3: 0 + 22: 0: 3: 0 + 33: 0: 3: 0 + 36: 0: 3: 0 + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 15 +Hit rate per query for user queries = 0.0000 + diff --git a/71_netout.net b/71_netout.net new file mode 100755 index 0000000..5fe7382 --- /dev/null +++ b/71_netout.net @@ -0,0 +1,172 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 5 1 +1 6 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 1 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 1 1 +2 7 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/71_netroutingtable b/71_netroutingtable new file mode 100755 index 0000000..2bdcce9 --- /dev/null +++ b/71_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 0: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, id 0 - type 2, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, id 6 - type 1, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/71_netstrucrep b/71_netstrucrep new file mode 100755 index 0000000..9418ebe --- /dev/null +++ b/71_netstrucrep @@ -0,0 +1,51 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 2 + 2 : 44 + 3 : 4 + 4 : 8 + 6 : 2 + +***Routing table max width histogram** +Max width : Num of pairs + 4 : 2 + 6 : 2 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/71_perfrep b/71_perfrep new file mode 100755 index 0000000..5937fff --- /dev/null +++ b/71_perfrep @@ -0,0 +1,112 @@ +***Database Report at time 71 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 64 +Queries_sent_from_RouterNode : 410 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 336 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 2575 + +Responses_sent_from_ResourceNode : 22 +Responses_sent_from_RouterNode : 125 + +Num_of_good_responses : 59 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 1911 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 3532 + +Queries_sent_from_UserNode (query packets) : 15 +Num_responses_sent_for_UserNode : 4 +Num_of_good_responses_for_UserNode : 0 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 28 + +Num_total_queries_generated (rtr, res, user): 489 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 151 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 18: 3 + 3: 0: 1: 18: 3 + 6: 1: 2: 41: 17 + 9: 0: 1: 21: 3 + 10: 1: 1: 36: 8 + 11: 1: 0: 30: 0 + 12: 0: 2: 28: 10 + 15: 0: 1: 22: 1 + 16: 0: 1: 24: 4 + 17: 1: 1: 36: 5 + 19: 0: 1: 11: 0 + 20: 0: 1: 16: 0 + 21: 0: 1: 14: 0 + 23: 0: 1: 8: 0 + 26: 0: 2: 22: 5 + 27: 0: 1: 11: 0 + 33: 0: 1: 8: 0 + 35: 0: 1: 8: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 45 , sum_num_resources = 8 , sum_num_queries = 163 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.2761 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 75 + 2: 63 + 3: 9 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 436 + 2: 1208 + 3: 267 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + 2: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 0 + +Values for recall rate calculation for user queries +sum_num_good_responses = 0 , sum_num_resources = 1, sum_num_queries = 3, RouterNode_k= 3 +Recall rate per query for user queries = 0.000000 + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 0 + 20: 0: 3: 0 + 22: 0: 3: 0 + 33: 0: 3: 0 + 36: 0: 3: 0 + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 0 , sum_num_queries = 15 +Hit rate per query for user queries = 0.0000 + diff --git a/81_netout.net b/81_netout.net new file mode 100755 index 0000000..5fe7382 --- /dev/null +++ b/81_netout.net @@ -0,0 +1,172 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 5 1 +1 6 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 1 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 1 1 +2 7 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/81_netroutingtable b/81_netroutingtable new file mode 100755 index 0000000..2bdcce9 --- /dev/null +++ b/81_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 0: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, id 0 - type 2, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, id 6 - type 1, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/81_netstrucrep b/81_netstrucrep new file mode 100755 index 0000000..9418ebe --- /dev/null +++ b/81_netstrucrep @@ -0,0 +1,51 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 2 + 2 : 44 + 3 : 4 + 4 : 8 + 6 : 2 + +***Routing table max width histogram** +Max width : Num of pairs + 4 : 2 + 6 : 2 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/81_perfrep b/81_perfrep new file mode 100755 index 0000000..fd1082a --- /dev/null +++ b/81_perfrep @@ -0,0 +1,112 @@ +***Database Report at time 81 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 80 +Queries_sent_from_RouterNode : 410 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 430 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 2669 + +Responses_sent_from_ResourceNode : 26 +Responses_sent_from_RouterNode : 125 + +Num_of_good_responses : 59 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 1911 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 3740 + +Queries_sent_from_UserNode (query packets) : 15 +Num_responses_sent_for_UserNode : 4 +Num_of_good_responses_for_UserNode : 4 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 28 + +Num_total_queries_generated (rtr, res, user): 505 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 155 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 18: 3 + 3: 0: 1: 18: 3 + 6: 1: 2: 45: 17 + 9: 0: 1: 21: 3 + 10: 1: 1: 40: 8 + 11: 1: 0: 34: 0 + 12: 0: 2: 28: 10 + 15: 0: 1: 22: 1 + 16: 0: 1: 24: 4 + 17: 1: 1: 40: 5 + 19: 0: 1: 11: 0 + 20: 0: 1: 16: 0 + 21: 0: 1: 14: 0 + 23: 0: 1: 8: 0 + 26: 0: 2: 22: 5 + 27: 0: 1: 11: 0 + 33: 0: 1: 8: 0 + 35: 0: 1: 8: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 45 , sum_num_resources = 8 , sum_num_queries = 175 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.2571 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 79 + 2: 63 + 3: 9 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 436 + 2: 1208 + 3: 267 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + 2: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 4 + +Values for recall rate calculation for user queries +sum_num_good_responses = 4 , sum_num_resources = 1, sum_num_queries = 3, RouterNode_k= 3 +Recall rate per query for user queries = 1.333333 + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 4 + 20: 0: 3: 0 + 22: 0: 3: 0 + 33: 0: 3: 0 + 36: 0: 3: 0 + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 4 , sum_num_queries = 15 +Hit rate per query for user queries = 0.2667 + diff --git a/91_netout.net b/91_netout.net new file mode 100755 index 0000000..0c1f52d --- /dev/null +++ b/91_netout.net @@ -0,0 +1,174 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 3 1 +1 3 1 +1 3 1 +1 3 1 +1 4 1 +1 8 1 +1 4 1 +1 2 1 +1 2 1 +1 3 1 +1 5 1 +1 3 1 +1 5 1 +1 6 1 +1 6 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 7 1 +1 3 1 +1 3 1 +1 4 1 +1 4 1 +1 2 1 +1 2 1 +1 2 1 +1 4 1 +1 4 1 +1 2 1 +1 3 1 +1 3 1 +2 3 1 +2 3 1 +2 3 1 +2 3 1 +2 4 1 +2 8 1 +2 4 1 +2 1 1 +2 8 1 +2 1 1 +2 3 1 +2 5 1 +2 3 1 +2 5 1 +2 6 1 +2 6 1 +2 4 1 +2 4 1 +2 4 1 +2 4 1 +2 7 1 +2 1 1 +2 1 1 +2 7 1 +2 3 1 +2 3 1 +2 4 1 +2 4 1 +2 1 1 +2 1 1 +2 4 1 +2 4 1 +2 3 1 +2 3 1 +2 1 1 +2 1 1 +2 1 1 +2 1 1 +3 4 1 +3 8 1 +3 1 1 +3 1 1 +3 4 1 +3 8 1 +3 2 1 +3 2 1 +3 5 1 +3 6 1 +3 6 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 2 1 +3 2 1 +3 4 1 +3 4 1 +3 7 1 +3 1 1 +3 1 1 +3 7 1 +3 4 1 +3 4 1 +3 2 1 +3 2 1 +3 1 1 +3 1 1 +3 4 1 +3 2 1 +3 4 1 +3 2 1 +3 1 1 +3 1 1 +3 1 1 +3 1 1 +4 3 1 +4 3 1 +4 3 1 +4 3 1 +4 8 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 5 1 +4 3 1 +4 3 1 +4 5 1 +4 6 1 +4 6 1 +4 2 1 +4 2 1 +4 2 1 +4 2 1 +4 7 1 +4 1 1 +4 1 1 +4 7 1 +4 3 1 +4 3 1 +4 2 1 +4 2 1 +4 1 1 +4 1 1 +4 2 1 +4 2 1 +4 3 1 +4 3 1 +4 1 1 +4 1 1 +4 1 1 +4 1 1 +5 1 1 +5 2 1 +5 3 1 +5 4 1 +6 1 1 +6 2 1 +6 3 1 +6 4 1 +7 1 1 +7 2 1 +7 3 1 +7 4 1 +8 1 1 +8 2 1 +8 3 1 +8 4 1 diff --git a/91_netroutingtable b/91_netroutingtable new file mode 100755 index 0000000..0345363 --- /dev/null +++ b/91_netroutingtable @@ -0,0 +1,72 @@ +Printing routing table of router node: 0 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 0: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 0: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 0: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, +Node 0: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 0: Row 4:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 0: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 0: Row 6:Tag 12: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 0: Row 8:Tag 16: id 3 - type 2, id 3 - type 2, +Node 0: Row 9:Tag 17: id 6 - type 1, +Node 0: Row 10:Tag 19: id 2 - type 2, id 2 - type 2, +Node 0: Row 11:Tag 20: id 3 - type 2, id 3 - type 2, +Node 0: Row 12:Tag 21: id 1 - type 2, id 1 - type 2, +Node 0: Row 13:Tag 26: id 1 - type 2, id 3 - type 2, id 3 - type 2, id 1 - type 2, +Node 0: Row 14:Tag 27: id 2 - type 2, id 2 - type 2, + +Printing routing table of router node: 1 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 1: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 1: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 1: Row 2:Tag 6: id 3 - type 2, id 7 - type 1, id 3 - type 2, id 0 - type 2, id 7 - type 1, id 0 - type 2, +Node 1: Row 3:Tag 10: id 2 - type 2, id 4 - type 1, id 2 - type 2, id 4 - type 1, +Node 1: Row 4:Tag 11: id 5 - type 1, id 5 - type 1, +Node 1: Row 5:Tag 12: id 3 - type 2, id 3 - type 2, +Node 1: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 1: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, id 6 - type 1, +Node 1: Row 8:Tag 19: id 2 - type 2, id 2 - type 2, +Node 1: Row 9:Tag 20: id 3 - type 2, id 3 - type 2, +Node 1: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 1: Row 11:Tag 26: id 3 - type 2, id 3 - type 2, +Node 1: Row 12:Tag 27: id 2 - type 2, id 2 - type 2, +Node 1: Row 13:Tag 33: id 0 - type 2, id 0 - type 2, +Node 1: Row 14:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 2 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 2: Row 0:Tag 6: id 3 - type 2, id 7 - type 1, id 0 - type 2, id 0 - type 2, id 3 - type 2, id 7 - type 1, +Node 2: Row 1:Tag 9: id 1 - type 2, id 1 - type 2, +Node 2: Row 2:Tag 10: id 4 - type 1, +Node 2: Row 3:Tag 11: id 5 - type 1, id 5 - type 1, +Node 2: Row 4:Tag 12: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 5:Tag 15: id 1 - type 2, id 1 - type 2, +Node 2: Row 6:Tag 16: id 3 - type 2, id 3 - type 2, +Node 2: Row 7:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, id 6 - type 1, +Node 2: Row 8:Tag 20: id 3 - type 2, id 3 - type 2, +Node 2: Row 9:Tag 21: id 1 - type 2, id 1 - type 2, +Node 2: Row 10:Tag 23: id 0 - type 2, id 0 - type 2, +Node 2: Row 11:Tag 26: id 3 - type 2, id 1 - type 2, id 3 - type 2, id 1 - type 2, +Node 2: Row 12:Tag 33: id 0 - type 2, id 0 - type 2, +Node 2: Row 13:Tag 35: id 0 - type 2, id 0 - type 2, + +Printing routing table of router node: 3 +Node id : Row i :Tag : List of Node id - node_type that are attached... +Node 3: Row 0:Tag 2: id 2 - type 2, id 2 - type 2, +Node 3: Row 1:Tag 3: id 2 - type 2, id 2 - type 2, +Node 3: Row 2:Tag 6: id 7 - type 1, id 0 - type 2, id 0 - type 2, +Node 3: Row 3:Tag 9: id 1 - type 2, id 1 - type 2, +Node 3: Row 4:Tag 10: id 4 - type 1, id 2 - type 2, id 2 - type 2, id 4 - type 1, +Node 3: Row 5:Tag 11: id 5 - type 1, id 5 - type 1, +Node 3: Row 6:Tag 12: id 1 - type 2, id 1 - type 2, +Node 3: Row 7:Tag 15: id 1 - type 2, id 1 - type 2, +Node 3: Row 8:Tag 17: id 6 - type 1, id 0 - type 2, id 0 - type 2, id 6 - type 1, +Node 3: Row 9:Tag 19: id 2 - type 2, id 2 - type 2, +Node 3: Row 10:Tag 21: id 1 - type 2, id 1 - type 2, +Node 3: Row 11:Tag 23: id 0 - type 2, id 0 - type 2, +Node 3: Row 12:Tag 26: id 1 - type 2, id 1 - type 2, +Node 3: Row 13:Tag 27: id 2 - type 2, id 2 - type 2, +Node 3: Row 14:Tag 33: id 0 - type 2, id 0 - type 2, +Node 3: Row 15:Tag 35: id 0 - type 2, id 0 - type 2, + diff --git a/91_netstrucrep b/91_netstrucrep new file mode 100755 index 0000000..ff2947a --- /dev/null +++ b/91_netstrucrep @@ -0,0 +1,51 @@ +***Routing table length histogram** +Length : Freq + 14 : 1 + 15 : 2 + 16 : 1 + +***Routing table width histogram** +Width : Freq + 1 : 2 + 2 : 44 + 3 : 2 + 4 : 10 + 6 : 2 + +***Routing table max width histogram** +Max width : Num of pairs + 4 : 2 + 6 : 2 + +***Distance distribution/histogram** +Distance : Num of pairs + 0 : 8 + 1 : 44 + 2 : 12 + +num_vertices = 8 +Network Diameter is 2 +***Distance matrix** +# Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : Nd/Tg 8 : +Nd/Tg 1 : 0 1 1 1 1 1 1 1 +Nd/Tg 2 : 1 0 1 1 1 1 1 1 +Nd/Tg 3 : 1 1 0 1 1 1 1 1 +Nd/Tg 4 : 1 1 1 0 1 1 1 1 +Nd/Tg 5 : 1 1 1 1 0 2 2 2 +Nd/Tg 6 : 1 1 1 1 2 0 2 2 +Nd/Tg 7 : 1 1 1 1 2 2 0 2 +Nd/Tg 8 : 1 1 1 1 2 2 2 0 + + +***Parents** +# Nd/Tg 0 : Nd/Tg 1 : Nd/Tg 2 : Nd/Tg 3 : Nd/Tg 4 : Nd/Tg 5 : Nd/Tg 6 : Nd/Tg 7 : +Nd/Tg 0 : 0 0 0 0 0 0 0 0 +Nd/Tg 1 : 1 1 1 1 1 1 1 1 +Nd/Tg 2 : 2 2 2 2 2 2 2 2 +Nd/Tg 3 : 3 3 3 3 3 3 3 3 +Nd/Tg 4 : 4 4 4 4 4 0 0 0 +Nd/Tg 5 : 5 5 5 5 0 5 0 0 +Nd/Tg 6 : 6 6 6 6 0 0 6 0 +Nd/Tg 7 : 7 7 7 7 0 0 0 7 + + diff --git a/91_perfrep b/91_perfrep new file mode 100755 index 0000000..da0805d --- /dev/null +++ b/91_perfrep @@ -0,0 +1,112 @@ +***Database Report at time 91 ticks *** + + The following figures are for the message packets, not unique user level queries + +Queries_sent_from_ResourceNode : 80 +Queries_sent_from_RouterNode : 570 + +Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : 430 +Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : 3446 + +Responses_sent_from_ResourceNode : 26 +Responses_sent_from_RouterNode : 141 + +Num_of_good_responses : 82 # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to + +Num_duplicate_message_dropped : 2005 +Num_looping_message_dropped : 0 +Num_queries_dropped_for_TTL : 6 + +Num_total_message_generated (due to internal network ops - query, forwarding, response) : 4693 + +Queries_sent_from_UserNode (query packets) : 15 +Num_responses_sent_for_UserNode : 4 +Num_of_good_responses_for_UserNode : 4 +Num_duplicate_message_dropped_for_UserNode : 0 +Num_looping_message_dropped_for_UserNode : 0 +Num_queries_dropped_for_TTL_for_UserNode : 0 +Num_responses_dropped_for_TTL_for_UserNode : 0 + +Num_total_message_generated_for_UserNode (query, forwarding, response) : 28 + +Num_total_queries_generated (rtr, res, user): 665 # This is total of all resource, router, user nodes +Num_total_responses_generated (rtr, res, user): 171 # This is total of all resource, router, user nodes + +Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) : +Contents of num_resource_with_specific_tag +Tag : res: rtr: queries: good responses from routers + 2: 0: 1: 22: 3 + 3: 0: 1: 22: 3 + 6: 1: 2: 53: 22 + 9: 0: 1: 25: 3 + 10: 1: 1: 44: 9 + 11: 1: 0: 34: 0 + 12: 0: 2: 36: 13 + 15: 0: 1: 26: 4 + 16: 0: 1: 28: 6 + 17: 1: 1: 44: 8 + 19: 0: 1: 27: 0 + 20: 0: 1: 28: 2 + 21: 0: 1: 26: 1 + 23: 0: 1: 24: 0 + 26: 0: 2: 30: 8 + 27: 0: 1: 15: 0 + 33: 0: 1: 12: 0 + 35: 0: 1: 12: 0 + +Values for recall rate calculation for network internal operation (advertising operations only) +sum_num_good_responses = 60 , sum_num_resources = 8 , sum_num_queries = 207 , RouterNode_k = 3 +Recall rate per query for internal network operations = 0.2899 + +Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr +Parameters used to generate the histogram : DatabaseHistResolution : 1, DatabaseMaxHops : 100 ,num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 95 + 2: 63 + 3: 9 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for network's internal operation: Contents of longevity_of_message_ctr_for_TTL +Parameters used to generate the histogram : DatabaseHistResolution : 1 , DatabaseMaxHops : 100 , num_buckets : 8 +Histogram contents - +Hops :Freq + 1: 436 + 2: 1302 + 3: 267 + +Analysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : 1 , DatabaseMaxHops_for_UserNode : 100 , num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + 2: 4 + +Analysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) +for user queries: Contents of hops_before_response_ctr_for_UserNode +Parameters used to generate the histogram : +DatabaseHistResolution_for_UserNode : 1, DatabaseMaxHops_for_UserNode : 100, num_buckets_for_UserNode : 8 +Histogram contents - +Hops :Freq + +Analysis of Query-Response statistics for user queries across all tags for which a resource exists : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 4 + +Values for recall rate calculation for user queries +sum_num_good_responses = 4 , sum_num_resources = 1, sum_num_queries = 3, RouterNode_k= 3 +Recall rate per query for user queries = 1.333333 + +Analysis of Query-Response statistics across all tags for user queries : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode +Tag : res : queries: responses + 11: 1: 3: 4 + 20: 0: 3: 0 + 22: 0: 3: 0 + 33: 0: 3: 0 + 36: 0: 3: 0 + +Values for hit/success rate calculation for user queries +sum_num_good_responses = 4 , sum_num_queries = 15 +Hit rate per query for user queries = 0.2667 + diff --git a/9_netout.net b/9_netout.net new file mode 100755 index 0000000..63c2554 --- /dev/null +++ b/9_netout.net @@ -0,0 +1,67 @@ +*Vertices 8 +1 +2 +3 +4 +5 +6 +7 +8 +*Arcs +1 4  +1 2  +1 4  +1 8  +1 2  +1 3  +1 4  +1 6  +1 7  +1 3  +1 2  +1 4  +1 2  +1 3  +1 4  +1 5  +2 4  +2 4  +2 8  +2 3  +2 4  +2 6  +2 7  +2 3  +2 4  +2 3  +2 4  +2 5  +3 4  +3 4  +3 8  +3 4  +3 6  +3 7  +3 4  +3 4  +3 5  +4 8  +4 6  +4 7  +4 5  +5 1  +5 2  +5 3  +5 4  +6 1  +6 2  +6 3  +6 4  +7 1  +7 2  +7 3  +7 4  +8 1  +8 2  +8 3  +8 4  diff --git a/9_netroutingtable b/9_netroutingtable new file mode 100755 index 0000000..97c8497 --- /dev/null +++ b/9_netroutingtable @@ -0,0 +1,32 @@ +Printing routing table of router node:0 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :0: Row 0 : Tag 0 id 3 - type 2 , +Node :0: Row 1 : Tag 1 id 1 - type 2 , id 3 - type 2 , id 7 - type 1 , +Node :0: Row 2 : Tag 3 id 1 - type 2 , +Node :0: Row 3 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :0: Row 4 : Tag 5 id 2 - type 2 , +Node :0: Row 5 : Tag 6 id 1 - type 2 , id 3 - type 2 , +Node :0: Row 6 : Tag 7 id 1 - type 2 , id 2 - type 2 , id 3 - type 2 , +Node :0: Row 7 : Tag 8 id 4 - type 1 , +Printing routing table of router node:1 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :1: Row 0 : Tag 0 id 3 - type 2 , +Node :1: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :1: Row 2 : Tag 4 id 2 - type 2 , id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :1: Row 3 : Tag 5 id 2 - type 2 , +Node :1: Row 4 : Tag 6 id 3 - type 2 , +Node :1: Row 5 : Tag 7 id 2 - type 2 , id 3 - type 2 , +Node :1: Row 6 : Tag 8 id 4 - type 1 , +Printing routing table of router node:2 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :2: Row 0 : Tag 0 id 3 - type 2 , +Node :2: Row 1 : Tag 1 id 3 - type 2 , id 7 - type 1 , +Node :2: Row 2 : Tag 4 id 3 - type 2 , id 5 - type 1 , id 6 - type 1 , +Node :2: Row 3 : Tag 6 id 3 - type 2 , +Node :2: Row 4 : Tag 7 id 3 - type 2 , +Node :2: Row 5 : Tag 8 id 4 - type 1 , +Printing routing table of router node:3 +Node id : Row i : Description tag : List of Node id - node_type that are attached..... +Node :3: Row 0 : Tag 1 id 7 - type 1 , +Node :3: Row 1 : Tag 4 id 5 - type 1 , id 6 - type 1 , +Node :3: Row 2 : Tag 8 id 4 - type 1 , diff --git a/9_netstrucrep b/9_netstrucrep new file mode 100755 index 0000000..3ef2b4f --- /dev/null +++ b/9_netstrucrep @@ -0,0 +1,28 @@ +num_vertices=8 +Network Diameter is = 2 +***Distance matrix** +0 1 1 1 1 1 1 1 +2 0 1 1 1 1 1 1 +2 2 0 1 1 1 1 1 +2 2 2 0 1 1 1 1 +1 1 1 1 0 2 2 2 +1 1 1 1 2 0 2 2 +1 1 1 1 2 2 0 2 +1 1 1 1 2 2 2 0 + + +***Distance distribution/histogram** +Distance : Num of pairs +0 : 0 +1 : 38 +2 : 1376390502 + +***Parents** +0 0 0 0 0 0 0 0 +4 1 1 1 1 1 1 1 +4 4 2 2 2 2 2 2 +4 4 4 3 3 3 3 3 +4 4 4 4 4 0 0 0 +5 5 5 5 0 5 0 0 +6 6 6 6 0 0 6 0 +7 7 7 7 0 0 0 7 diff --git a/9_perfrep b/9_perfrep new file mode 100755 index 0000000..4cc04ba --- /dev/null +++ b/9_perfrep @@ -0,0 +1,46 @@ +***Database Report : Time :9*** +Queries_sent_from_ResourceNode :16 +Queries_sent_from_RouterNode :91 +Num_responses_sent :35 +Num_of_good_responses :0 +Num_duplicate_message_dropped :0 +Num_message_dropped_for_TTL :0 +Num_queries_dropped_for_TTL :0 +Num_responses_dropped_for_TTL :0 +Num_total_message_generated :484 +Queries_sent_from_UserNode :0 +Num_responses_sent_for_UserNode :0 +Num_of_good_responses_for_UserNode :0 +Num_duplicate_message_dropped_for_UserNode :0 +Num_queries_dropped_for_TTL_for_UserNode :0 +Num_responses_dropped_for_TTL_for_UserNode :0 +Num_total_message_generated_for_UserNode :0 +DatabaseHistResolution :1 +DatabaseMaxHops :100 +num_buckets :8 +num_global_queries :485 +num_global_responses :35 +Contents of num_resource_with_specific_tag +Tag :resources:queries:responses +0 : 2 : 11 : 0 +1 : 5 : 20 : 0 +3 : 1 : 4 : 0 +4 : 4 : 25 : 0 +5 : 4 : 11 : 0 +6 : 2 : 12 : 0 +7 : 5 : 20 : 0 +8 : 1 : 4 : 0 +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 24, sum_num_queries = 107, RouterNode_k = 3 +Recall rate per query = 0 +Contents of hops_before_response_ctr : +1 : 35 +Contents of longevity_of_message_ctr : +DatabaseHistResolution_for_UserNode :1 +DatabaseMaxHops_for_UserNode :100 +num_buckets_for_UserNode :8 +Contents of hops_before_response_ctr_for_UserNode : +Contents of longevity_of_message_ctr_for_UserNode : +Contents of Num_of_good_responses_for_specific_tag_for_UserNode : +Tag :resources:queries:responses +Values for recall rate calculation : sum_num_good_responses = 0, sum_num_resources = 0, sum_num_queries = 0, RouterNode_k = 3 +Recall rate per query for external queries not yet available diff --git a/Analyst.cpp b/Analyst.cpp new file mode 100755 index 0000000..f8e98db --- /dev/null +++ b/Analyst.cpp @@ -0,0 +1,359 @@ +#include "ForwardDeclaration.hpp" +//#include "Allheader.hpp" +#include "Analyst.hpp" +#include "Infrastructure.hpp" +#include "Node.hpp" + +#include "Input.hpp" //For supporting resetting of the rpouting table histogram counter arrays + +#ifdef DEBUG +#include "IO_Reporter.hpp" +#include +#endif + +#include + +#include +#include +#include + +#include +#include // for boost::tie + + +//Analyst::Analyst(Infrastructure * passed_If_ptr) {If_ptr = passed_If_ptr;} +Analyst::Analyst(){ + + //list_of_edges = NULL; + //weight = NULL; + diameter = 0; + num_edges = 0; + provisioned = 0; + return; + }; + + +Analyst::~Analyst() + { + +#ifdef DEBUG + printf("Starting cleaning up Analyst\n"); +#endif + + //Cleanup these datastructures only if they were used ! + if (network_struct_report_required) { + printf("Reached here 3, network_struct_report_required %d\n", network_struct_report_required); + + for (int i = 0; i ::iterator list_of_router_nodes_itr; + /* std::map list_of_router_nodes; */ + + std::vector< RouterNode *>::iterator list_of_router_nodes_itr; + /* + RoutingTable routing_table; + list knowledge; + list *routing_table_row_obj_ptr; + + typedef std::pair Edge; + + Infrastructure - std::vector list_of_router_nodes; + + */ + RoutingTableIterator routing_table_itr; + RoutingTableRowIterator routing_table_row_itr; + + //For extracting edges from resource node's reverse routing table (known router list) + /* + Infrastructure - std::vector list_of_router_nodes; + + std::map< unsigned int, RouterNode *> known_routers; + */ + std::vector::iterator list_of_resource_nodes_itr; + std::map< unsigned int, RouterNode*>::iterator known_routers_itr; + + //.For the Routing table histogram + unsigned int curr_routing_table_max_width; + memset(routing_table_length_histogram,0,(If_ptr->param_ptr->RouterNode_routing_table_max_length+1)*4); //set all counters to zero + memset(routing_table_width_histogram,0,(If_ptr->param_ptr->RouterNode_routing_table_max_length+1)*4); //set all counters to zero + memset(routing_table_max_width_histogram,0,(If_ptr->param_ptr->RouterNode_routing_table_max_length+1)*4); //set all counters to zero + + num_vertices = If_ptr->list_of_router_nodes.size() + If_ptr->list_of_resource_nodes.size(); + +#ifdef DEBUG + printf("Analyst::extract_edge_list() : Wrtiting edge_list....\n"); +#endif + + num_edges=0; + list_of_router_nodes_itr = If_ptr->list_of_router_nodes.begin(); + //Go to each router node + //while( list_of_router_nodes_itr != (If_ptr->list_of_router_nodes).end() ) + for (unsigned int i= (If_ptr->list_of_router_nodes).size(); + i>0 ; i--) + { + + + routing_table_itr = (*list_of_router_nodes_itr)->routing_table.begin(); + + //For finding current routing table max width + curr_routing_table_max_width =0; + + + //For each router node, traverse the routing table, for each node entry add an edge + //while( routing_table_itr != (*list_of_router_nodes_itr)->routing_table.end() ) + for (unsigned int j= (*list_of_router_nodes_itr)->routing_table.size(); + j>0; j--) + { + + + + //No need to extract edge if it is not required + if (If_ptr->param_ptr->network_struct_report_required) + { + + routing_table_row_itr = ((*routing_table_itr).second)->destinations.begin(); + + + /* + current router node is (*list_of_router_nodes_itr), its id is list_of_router_nodes_itr->id + its routing table is list_of_router_nodes_itr->routing_table, + each row in that routing table is + + */ + + //while (routing_table_row_itr != ((*routing_table_itr).second).end()) + for (unsigned int k= ((*routing_table_itr).second)->destinations.size(); + k>0; k--) + { + + (list_of_edges[num_edges]).first = (*list_of_router_nodes_itr)->id ; + + (list_of_edges[num_edges]).second = (*routing_table_row_itr)->id ; + + weight[num_edges] = 1; + + routing_table_row_itr++; + /* + //Protection against memory underprovisioning + if (num_edges >= (If_ptr->provisioned_capacity.edge_list - 1) ) + { + printf("Run time error 1, need more memory to extract edges, exiting from Analyst::extract_edge_list()\n"); + exit(1); + } + */ + + num_edges++; + + } + + }//if (If_ptr->param_ptr->network_struct_report_required) + + /* + + if (((*routing_table_itr).second)->destinations.size() > If_ptr->param_ptr->RouterNode_routing_table_max_width) + { + printf("Run time error 4, need more memory for routing_table_width_histogram, index is %d, exiting from Analyst::extract_edge_list()\n", ((*routing_table_itr).second)->destinations.size()); + exit(1); + } + */ + + //Generate the max width for this routing table row + if (curr_routing_table_max_width < ((*routing_table_itr).second)->destinations.size() ) + curr_routing_table_max_width = ((*routing_table_itr).second)->destinations.size(); + //Record the freq of width + routing_table_width_histogram[ ((*routing_table_itr).second)->destinations.size()]++; + + routing_table_itr++; + } + /* + if ( (*list_of_router_nodes_itr)->routing_table.size() > If_ptr->param_ptr->RouterNode_routing_table_max_length ) + { + printf("Run time error 5, need more memory for routing_table_length_histogram, index is %d , exiting from Analyst::extract_edge_list()\n", + (*list_of_router_nodes_itr)->routing_table.size() ); + exit(1); + } + */ + //Record the max width for this routing table row + routing_table_max_width_histogram[ curr_routing_table_max_width ]++; + //Record routing_table_length + routing_table_length_histogram[(*list_of_router_nodes_itr)->routing_table.size()]++; + + + list_of_router_nodes_itr++; + + } + + //No need to extract edge if it is not required + if (If_ptr->param_ptr->network_struct_report_required) + { + //Go to each resource node's known_router list, and draw edges from that resource node to those router nodes in that list + + list_of_resource_nodes_itr = If_ptr->list_of_resource_nodes.begin(); + + //while( list_of_resource_nodes_itr != (If_ptr->list_of_resource_nodes).end() ) + for (unsigned int i= (If_ptr->list_of_resource_nodes).size(); + i>0; i--) + { + known_routers_itr = (*list_of_resource_nodes_itr)->known_routers.begin(); + + //while (known_routers_itr != (*list_of_resource_nodes_itr)->known_routers.end()) + for (unsigned int j= (*list_of_resource_nodes_itr)->known_routers.size(); + j>0; j--) + { + list_of_edges[num_edges] = Edge( (*list_of_resource_nodes_itr)->id , (*known_routers_itr).first ); + + weight[num_edges] = 1; + + known_routers_itr++; + num_edges++; + + /* + //Protection against memory underprovisioning + if (num_edges >= (If_ptr->provisioned_capacity.edge_list - 1) ) + { + printf("Run time error 2, need more memory to extract edges, exiting from Analyst::extract_edge_list()\n"); + exit(1); + } + */ + } + list_of_resource_nodes_itr++; + } + + }//if if (If_ptr->param_ptr->network_struct_report_required) + + return; +}; + + +int Analyst::generate_distance_matrix() { + +/* + //Making the matrices ready for bellman_ford for distance calculation from node 0 + std::vector distance(num_vertices, std::numeric_limits::max()); + std::vector parent(num_vertices,-1); + std::vector< std::vector > distance_creator_vector(num_vertices, distance); + all_distances = distance_creator_vector; + std::vector< std::vector > parent_creator_vector(num_vertices,parent); + all_parents = parent_creator_vector; + + EdgeGraph bellman_g(list_of_edges, (list_of_edges + num_edges) ); + + //Create the distance and parent matrix + for (int j = 0; j < num_vertices; ++j) + { + all_distances[j][j] = 0; + all_parents[j][j] = j; + + r = bellman_ford_shortest_paths(bellman_g, int (num_vertices), + boost::weight_map(weight).distance_map(&((all_distances[j])[0])).predecessor_map(&((all_parents[j])[0]))); + + for (int k = 0; k < num_vertices; ++k) + if (all_distances[j][k] > diameter) diameter = all_distances[j][k]; + } + +*/ + //printf("Reached here 1...\n"); + + bool r; + //unsigned int j,k; + //Making the matrices ready for bellman_ford for distance calculation from node 0 + std::vector distance(num_vertices, std::numeric_limits::max()); + std::vector parent(num_vertices,-1); + std::vector< std::vector > distance_creator_vector(num_vertices, distance); + //thanks to deep copy !! + all_distances = distance_creator_vector; + std::vector< std::vector > parent_creator_vector(num_vertices,parent); + //thanks to deep copy !! + all_parents = parent_creator_vector; + + EdgeGraph bellman_g(list_of_edges, (list_of_edges + num_edges) ); + diameter =0; + + memset(distance_histogram,0,(std::numeric_limits::max()+1)*4); //set all counters to zero + + //Create the distance and parent matrix + for (unsigned int j = 0; j < num_vertices; ++j) + { + + all_distances[j][j] = 0; + all_parents[j][j] = j; + + r = bellman_ford_shortest_paths(bellman_g, int (num_vertices), + boost::weight_map(weight).distance_map(&((all_distances[j])[0])).predecessor_map(&((all_parents[j])[0]))); + //printf("Reached here 2...%d\n",j); + + for (unsigned int k = 0; k < num_vertices; ++k) + { + /* + if ((all_distances[j][k]) > (std::numeric_limits::max()) ) + { + printf("Run time error 3, need more memory for distance_histogram, index is %d , exiting from Analyst::generate_distance_matrix()\n", + (all_distances[j][k]) ); + exit(1); + } + */ + + if (all_distances[j][k] > diameter) diameter = all_distances[j][k]; + distance_histogram[(all_distances[j][k])]++; + //printf("Reached here 3...%d\n",k); + + } + + } + + return diameter; +}; + + + +/* +void Analyst::write_performance_report(char *performance_report_file_name , Tick passed_current_time) { + + + return; +}; + +*/ diff --git a/Analyst.hpp b/Analyst.hpp new file mode 100755 index 0000000..aa1621d --- /dev/null +++ b/Analyst.hpp @@ -0,0 +1,38 @@ +//#include "Allheader.hpp" +#ifndef ANALYST_HPP +#define ANALYST_HPP + +#include "ForwardDeclaration.hpp" //For u_8 + +class Analyst { + int provisioned; + + public: + int network_struct_report_required; + + unsigned int num_vertices, num_edges; + std::vector< std::vector< int > > all_distances; + std::vector< std::vector< Tag > > all_parents; + int diameter; + + + Edge *list_of_edges; + unsigned char *weight; + unsigned int *distance_histogram; + + unsigned int *routing_table_length_histogram; + unsigned int *routing_table_width_histogram; + unsigned int *routing_table_max_width_histogram; + + Infrastructure *If_ptr; + + Analyst(); + void extract_edge_list(); + int generate_distance_matrix(); + //void write_performance_report(char *performance_report_file_name, Tick passed_current_time ); + + ~Analyst(); + +}; + +#endif // #ifndef ANALYST_HPP diff --git a/Analyst.o b/Analyst.o new file mode 100755 index 0000000..ae4381f Binary files /dev/null and b/Analyst.o differ diff --git a/CVS/Entries b/CVS/Entries new file mode 100755 index 0000000..6c9d4c8 --- /dev/null +++ b/CVS/Entries @@ -0,0 +1,134 @@ +/Event.cpp/1.1/Fri Oct 12 17:23:21 2007// +/List.hpp/1.1/Fri Oct 12 17:23:28 2007// +/configv1.dat/1.1/Fri Oct 12 17:23:38 2007// +/configv2.dat/1.1/Fri Oct 12 17:23:38 2007// +/configv3.dat/1.1/Fri Oct 12 17:23:38 2007// +/configv4.dat/1.1/Fri Oct 12 17:23:38 2007// +/configv.dat/1.1/Fri Oct 12 17:23:38 2007// +/OperationSimulator.hpp/1.1/Fri Oct 12 17:23:28 2007// +/Scheduler_old.cpp/1.1/Fri Oct 12 17:23:21 2007// +/test.cpp/1.1/Fri Oct 12 17:23:21 2007// +/Functor.hpp/1.2/Mon Nov 12 23:41:08 2007// +/Infrastructure.hpp/1.2/Mon Nov 12 23:41:08 2007// +/Message.cpp/1.3/Mon Nov 12 23:41:26 2007// +/0_netout.net/1.1/Mon Nov 12 23:43:17 2007// +/0_netroutingtable/1.1/Mon Nov 12 23:43:17 2007// +/0_netstrucrep/1.1/Mon Nov 12 23:43:17 2007// +/100_netout.net/1.1/Mon Nov 12 23:43:17 2007// +/100_netroutingtable/1.1/Mon Nov 12 23:43:17 2007// +/100_netstrucrep/1.1/Mon Nov 12 23:43:17 2007// +/13_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/13_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/13_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/13_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/17_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/17_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/17_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/17_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/200_netout.net/1.1/Mon Nov 12 23:43:17 2007// +/200_netroutingtable/1.1/Mon Nov 12 23:43:17 2007// +/200_netstrucrep/1.1/Mon Nov 12 23:43:17 2007// +/25_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/25_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/25_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/25_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/29_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/29_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/29_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/29_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/33_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/33_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/33_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/33_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/37_netout.net/1.1/Mon Oct 15 23:37:09 2007// +/37_netroutingtable/1.1/Mon Oct 15 23:37:09 2007// +/37_netstrucrep/1.1/Mon Oct 15 23:37:09 2007// +/37_perfrep/1.1/Mon Oct 15 23:37:09 2007// +/45_netout.net/1.1/Mon Oct 15 23:38:39 2007// +/45_netroutingtable/1.1/Mon Oct 15 23:38:39 2007// +/45_netstrucrep/1.1/Mon Oct 15 23:38:39 2007// +/45_perfrep/1.1/Mon Oct 15 23:38:39 2007// +/49_netout.net/1.1/Mon Oct 15 23:38:42 2007// +/49_netroutingtable/1.1/Mon Oct 15 23:38:42 2007// +/49_netstrucrep/1.1/Mon Oct 15 23:38:42 2007// +/49_perfrep/1.1/Mon Oct 15 23:38:42 2007// +/5_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/5_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/5_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/5_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/9_netout.net/1.1/Mon Oct 15 23:36:53 2007// +/9_netroutingtable/1.1/Mon Oct 15 23:36:53 2007// +/9_netstrucrep/1.1/Mon Oct 15 23:36:53 2007// +/9_perfrep/1.1/Mon Oct 15 23:36:53 2007// +/config_1.dat/1.1/Mon Nov 12 23:45:09 2007// +/configm.dat/1.1/Mon Nov 12 23:45:09 2007// +/configu.dat/1.1/Mon Nov 12 23:45:09 2007// +/11_netout.net/1.2/Mon Nov 12 23:52:39 2007// +/11_netroutingtable/1.2/Mon Nov 12 23:52:39 2007// +/21_netout.net/1.2/Mon Nov 12 23:52:39 2007// +/21_netroutingtable/1.2/Mon Nov 12 23:52:39 2007// +/91_netout.net/1.2/Mon Nov 12 23:52:39 2007// +/91_netroutingtable/1.2/Mon Nov 12 23:52:39 2007// +/0_ontoout.net/1.3/Thu Nov 15 23:19:11 2007// +/11_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/11_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/1_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/1_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/1_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/1_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/21_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/21_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/31_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/31_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/31_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/31_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/41_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/41_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/41_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/41_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/51_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/51_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/51_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/51_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/61_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/61_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/61_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/61_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/71_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/71_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/71_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/71_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/81_netout.net/1.3/Thu Nov 15 23:19:11 2007// +/81_netroutingtable/1.3/Thu Nov 15 23:19:11 2007// +/81_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/81_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/91_netstrucrep/1.3/Thu Nov 15 23:19:11 2007// +/91_perfrep/1.3/Thu Nov 15 23:19:11 2007// +/IO_Reporter.hpp/1.3/Thu Nov 15 23:19:11 2007// +/Message.hpp/1.5/Thu Nov 15 23:19:11 2007// +/configbig.dat/1.2/Thu Nov 15 23:19:11 2007// +D/semantic//// +/Analyst.hpp/1.5/Tue Nov 27 23:13:00 2007// +/Database.hpp/1.4/Tue Nov 27 23:13:00 2007// +/Event.hpp/1.3/Tue Nov 27 23:13:00 2007// +/ForwardDeclaration.hpp/1.3/Tue Nov 27 23:13:00 2007// +/Infrastructure.cpp/1.3/Tue Nov 27 23:13:00 2007// +/Input.hpp/1.4/Tue Nov 27 23:13:00 2007// +/Listener.cpp/1.3/Tue Nov 27 23:13:00 2007// +/Listener.hpp/1.3/Tue Nov 27 23:13:00 2007// +/OntologyRepository.cpp/1.4/Tue Nov 27 23:13:00 2007// +/OntologyRepository.hpp/1.4/Tue Nov 27 23:13:00 2007// +/ProxyAgent.hpp/1.4/Tue Nov 27 23:13:00 2007// +/Scheduler.cpp/1.3/Tue Nov 27 23:13:00 2007// +/Scheduler.hpp/1.2/Tue Nov 27 23:13:00 2007// +/SmallWorldGenerator.hpp/1.2/Tue Nov 27 23:13:00 2007// +/Analyst.cpp/1.7/Tue Nov 27 23:14:00 2007// +/Database.cpp/1.5/Tue Nov 27 23:14:00 2007// +/IO_Reporter.cpp/1.8/Tue Nov 27 23:14:00 2007// +/Input.cpp/1.5/Tue Nov 27 23:14:00 2007// +/Makefile/1.9/Tue Nov 27 23:14:00 2007// +/Node.cpp/1.10/Tue Nov 27 23:14:00 2007// +/Node.hpp/1.8/Tue Nov 27 23:14:00 2007// +/ReleaseNotes.txt/1.5/Tue Nov 27 23:14:00 2007// +/config.dat/1.4/Tue Nov 27 23:14:00 2007// +/simulation.cpp/1.7/Tue Nov 27 23:14:00 2007// diff --git a/CVS/Repository b/CVS/Repository new file mode 100755 index 0000000..ca846c5 --- /dev/null +++ b/CVS/Repository @@ -0,0 +1 @@ +semantic diff --git a/CVS/Root b/CVS/Root new file mode 100755 index 0000000..c42ba94 --- /dev/null +++ b/CVS/Root @@ -0,0 +1 @@ +/home/cvs diff --git a/Database.cpp b/Database.cpp new file mode 100755 index 0000000..ce958cd --- /dev/null +++ b/Database.cpp @@ -0,0 +1,303 @@ +#include "ForwardDeclaration.hpp" +#include "Database.hpp" +#include "Input.hpp" + +//#include +#include "ForwardDeclaration.hpp" //Got from hpp +#include "Input.hpp" //Got from hpp +#include "Infrastructure.hpp" //Added , troubleshooot circular hpp depepndency if this one gives problem + + +Database::Database(Infrastructure* passed_If_ptr) //constructor +//Database::Database(InputParameters *passed_param_ptr) +{ + If_ptr = passed_If_ptr; + param_ptr = If_ptr->param_ptr; + //param_ptr = passed_param_ptr; + + Queries_sent_from_ResourceNode =0; //unique : (query_seq_no + source_node) + Queries_sent_from_RouterNode =0 ; //unique + + Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode =0; + Queries_forwarded_by_RouterNode_orgininated_from_RouterNode =0; + + Responses_sent_from_ResourceNode =0; + Responses_sent_from_RouterNode =0; + + //Num_responses_sent =0;// # unique -- node that generates the respnse + query seq that triggerred this response + Num_of_good_responses =0 ;//rx decides whether it is a good response or not, not yet implemented with full meaning, for now any response received from a router node is a good response. + + Num_duplicate_message_dropped =0; + Num_message_dropped_for_TTL =0; + Num_queries_dropped_for_TTL=0; + Num_responses_dropped_for_TTL=0; + + Num_total_message_generated = 0; //Suneil-total load on the network, + +/* + DatabaseHistResolution=0; + DatabaseMaxHops=0; + + DatabaseHistResolution=param_ptr->DatabaseHistResolution; //user input param : Default is 5 + if (DatabaseHistResolution==0) //catch if defaults didn't come in for whatever reason + DatabaseHistResolution=5; //if so, give it the default + + DatabaseMaxHops=param_ptr->DatabaseMaxHops; //user input param : Default is 100 + if (DatabaseMaxHops==0) //catch if defaults didn't come in for whatever reason + DatabaseMaxHops=100; //if so, give it the default +*/ + + num_buckets = (param_ptr->DatabaseMaxHops/param_ptr->DatabaseHistResolution) ; + //rename the counter array -- to be called hops_before_response_ctr + //add array -- longevity_of_message_ctr_for_TTL + //modify function to calculate for both arrays. as second argument add the type --i.e which array to increment. + + hops_before_response_ctr= new unsigned int[num_buckets+2]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + if (!hops_before_response_ctr) + { + cout << "Database::Database():Error: memory could not be allocated for hops_before_response_ctr"; + exit(1); + } + memset(hops_before_response_ctr,0,(num_buckets+2)*4); //set all counters to zero + + longevity_of_message_ctr_for_TTL= new unsigned int[num_buckets+2]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + if (!longevity_of_message_ctr_for_TTL) + { + cout << "Database::Database():Error: memory could not be allocated for longevity_of_message_ctr_for_TTL"; + exit(1); + } + memset(longevity_of_message_ctr_for_TTL,0,(num_buckets+2)*4); //set all counters to zero + + longevity_of_message_ctr_for_loop = new unsigned int[num_buckets+2]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + if (!longevity_of_message_ctr_for_loop) + { + cout << "Database::Database():Error: memory could not be allocated for longevity_of_message_ctr_for_loop"; + exit(1); + } + memset(longevity_of_message_ctr_for_loop,0,(num_buckets+2)*4); //set all counters to zero + + + //To record how many resoource exist with specific tag (the index), get total num of tags from ontology rep + num_resource_with_specific_tag = new unsigned int[ param_ptr->num_words]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + num_router_with_specific_tag = new unsigned int[ param_ptr->num_words]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + + if (!num_resource_with_specific_tag || !num_router_with_specific_tag) + { + cout << "Database::Database():Error: memory could not be allocated for num_resource_with_specific_tag or num_router_with_specific_tag"; + exit(1); + } + memset(num_resource_with_specific_tag,0, param_ptr->num_words*4); //set all counters to zero + memset(num_router_with_specific_tag,0, param_ptr->num_words*4); //set all counters to zero + + + Num_of_good_responses_for_specific_tag = new unsigned int[ param_ptr->num_words]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + if (!Num_of_good_responses_for_specific_tag) + { + cout << "Database::Database():Error: memory could not be allocated for Num_of_good_responses_for_specific_tag"; + exit(1); + } + memset(Num_of_good_responses_for_specific_tag,0, param_ptr->num_words*4 ); //set all counters to zero + + Num_of_queries_for_specific_tag = new unsigned int[ param_ptr->num_words]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + if (!Num_of_queries_for_specific_tag) + { + cout << "Database::Database():Error: memory could not be allocated for Num_of_queries_for_specific_tag_from_UserNode"; + exit(1); + } + memset(Num_of_queries_for_specific_tag,0, param_ptr->num_words*4 ); //set all counters to zero + + + + + //UserNode counters + + Queries_sent_from_UserNode=0; + + Num_responses_sent_for_UserNode=0; + Num_of_good_responses_for_UserNode=0; + + Num_duplicate_message_dropped_for_UserNode=0; + + Num_queries_dropped_for_TTL_for_UserNode=0; //Suneil | ctr number_queries dropped for ttl //figure out from where you are updating the above ctr. + Num_responses_dropped_for_TTL_for_UserNode=0;// Suneil | ctr number_responses dropped for ttl. + + Num_reponses_dropped_when_no_active_listeners =0; + Num_reponses_dropped_when_no_active_listeners_for_UserNode =0; + + + + num_buckets_for_UserNode= (param_ptr->DatabaseMaxHops_for_UserNode/param_ptr->DatabaseHistResolution_for_UserNode); + + hops_before_response_ctr_for_UserNode = new unsigned int[num_buckets_for_UserNode + 2]; + if (!hops_before_response_ctr_for_UserNode) + { + cout << "Database::Database():Error: memory could not be allocated for hops_before_response_ctr_for_UserNode"; + exit(1); + } + memset(hops_before_response_ctr_for_UserNode,0,(num_buckets_for_UserNode + 2)*4); //set all counters to zero + + longevity_of_message_ctr_for_TTL_for_UserNode = new unsigned int[num_buckets_for_UserNode + 2]; + if (!longevity_of_message_ctr_for_TTL_for_UserNode) + { + cout << "Database::Database():Error: memory could not be allocated for longevity_of_message_ctr_for_TTL_for_UserNode"; + exit(1); + } + memset(longevity_of_message_ctr_for_TTL_for_UserNode,0,(num_buckets_for_UserNode + 2)*4); //set all counters to zero + + + longevity_of_message_ctr_for_loop_for_UserNode = new unsigned int[num_buckets_for_UserNode + 2]; + if (!longevity_of_message_ctr_for_loop_for_UserNode) + { + cout << "Database::Database():Error: memory could not be allocated for longevity_of_message_ctr_for_loop_for_UserNode"; + exit(1); + } + memset(longevity_of_message_ctr_for_loop_for_UserNode,0,(num_buckets_for_UserNode + 2)*4); //set all counters to zero + + + Num_of_good_responses_for_specific_tag_for_UserNode = new unsigned int[ param_ptr->num_words]; + if (!Num_of_good_responses_for_specific_tag_for_UserNode) + { + cout << "Database::Database():Error: memory could not be allocated for Num_of_good_responses_for_specific_tag_for_UserNode"; + exit(1); + } + memset(Num_of_good_responses_for_specific_tag_for_UserNode,0, param_ptr->num_words*4); //set all counters to zero + + Num_of_queries_for_specific_tag_from_UserNode = new unsigned int[ param_ptr->num_words]; //the +2 : 1 - catch_all bucket, 1 - 0 hop bucket, just-in-case + if (!Num_of_queries_for_specific_tag_from_UserNode) + { + cout << "Database::Database():Error: memory could not be allocated for Num_of_queries_for_specific_tag_from_UserNode"; + exit(1); + } + memset(Num_of_queries_for_specific_tag_from_UserNode,0, param_ptr->num_words*4); //set all counters to zero + + //sm24, Amit - 25 Aug + Num_total_queries_generated = 0; + Num_total_responses_generated = 0; + + return; + +}; //close of constructor + +Database::~Database() //destructor +{ +#ifdef DEBUG + printf("Started cleaning up for Database\n"); +#endif + + delete [] num_resource_with_specific_tag; + + delete[] longevity_of_message_ctr_for_TTL; + delete[] hops_before_response_ctr; + delete[] Num_of_good_responses_for_specific_tag; + delete [] Num_of_queries_for_specific_tag; + + //UserNode counters + delete[] longevity_of_message_ctr_for_TTL_for_UserNode; + delete[] hops_before_response_ctr_for_UserNode; + delete[] Num_of_good_responses_for_specific_tag_for_UserNode; + delete [] Num_of_queries_for_specific_tag_from_UserNode; + +#ifdef DEBUG + printf("Finished cleaning up for Database\n"); +#endif + + return; +}//close of destructor + +/* +void Database::take_snapshot() +{ + +} //close of take_snapsot +*/ + +//Suneil, pls update the method with user node couunters +void Database::record_hops(unsigned int hop_count, unsigned int *passed_ctr) + +{ + + histogram_index = hop_count/ param_ptr->DatabaseHistResolution; + + /* + float temp; + int i; + + if (hop_count==0) //if zero hops, increment that + { + ++(passed_ctr[0]); return; + } + else + */ + if (hop_count > param_ptr->DatabaseMaxHops ) //if a value greater than the permitted number of hops then push to overflow bucket + { + //++(passed_ctr[DatabaseMaxHops]); + (passed_ctr[histogram_index +1])++; + + return; + } + + else {//all other cases, increment appropriate bucket; + //temp=(hop_count/DatabaseHistResolution); + //i=(int) ceil(temp); + (passed_ctr[histogram_index])++; + return; + } +}//close of hops_at_resposnses + + +/* +//Suneil, pls update the method with user node couunters +void Database::hops_before_response(unsigned int hop_count, MessageType message_type) + +{ + + float temp; + int i; + switch (message_type) + { + + case QUERY: {//1=Query + if (hop_count==0) //if zero hops, increment that + { + ++(longevity_of_message_ctr_for_TTL[0]); return; + } + + else if (hop_count >DatabaseMaxHops ) //if a value greater than the permitted number of hops then push to overflow bucket + {++(longevity_of_message_ctr_for_TTL[DatabaseMaxHops]); return; + } + + else {//all other cases, increment appropriate bucket; + temp=(hop_count/DatabaseHistResolution); + i=(int) ceil(temp); + ++(longevity_of_message_ctr_for_TTL[i]); + return; + } + break; + } + + case RESPONSE: { //2=Response + if (hop_count==0) //if zero hops, increment that + { + ++(hops_before_response_ctr[0]); return; + } + + else if (hop_count >DatabaseMaxHops ) //if a value greater than the permitted number of hops then push to overflow bucket + {++(hops_before_response_ctr[DatabaseMaxHops]); return; + } + + else {//all other cases, increment appropriate bucket; + temp=(hop_count/DatabaseHistResolution); + i=(int) ceil(temp); + ++(hops_before_response_ctr[i]); + return; + } + break; + } + default:{ cout<<"ERROR::Bad Type Identifier for type of drop at hops_at_response"; break; } + + }//close of switch +}//close of hops_at_resposnses + +*/ + + diff --git a/Database.hpp b/Database.hpp new file mode 100755 index 0000000..6b365da --- /dev/null +++ b/Database.hpp @@ -0,0 +1,108 @@ +#ifndef DATABASE_HPP +#define DATABASE_HPP +//#include "ForwardDeclaration.hpp" +//#include "Input.hpp" + +#include +#include + + +class Database { + private: + InputParameters *param_ptr; + Infrastructure *If_ptr; + int histogram_index; + public: + + //Counters for internal queries + + unsigned int Queries_sent_from_ResourceNode; + unsigned int Queries_sent_from_RouterNode; + + unsigned int Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode; + unsigned int Queries_forwarded_by_RouterNode_orgininated_from_RouterNode; + + unsigned int *Num_of_queries_for_specific_tag; + + unsigned int Responses_sent_from_ResourceNode; + unsigned int Responses_sent_from_RouterNode; + + unsigned int Num_of_good_responses; + + + unsigned int *num_resource_with_specific_tag; + unsigned int *num_router_with_specific_tag; + + unsigned int *Num_of_good_responses_for_specific_tag; + + unsigned int Num_duplicate_message_dropped; + unsigned int Num_message_dropped_for_TTL; + unsigned int Num_looping_message_dropped; + + unsigned int Num_queries_dropped_for_TTL; //Suneil | ctr number_queries dropped for ttl //figure out from where you are updating the above ctr. + unsigned int Num_responses_dropped_for_TTL;// Suneil | ctr number_responses dropped for ttl. + + unsigned int Num_total_message_generated; //Suneil | add ctr: num_total_mesasge_generated; //total load on the network, + + /* + unsigned int DatabaseHistResolution; //user input param + unsigned int DatabaseMaxHops; //user input param + + unsigned int DatabaseHistResolution_for_UserNode; //user input param + unsigned int DatabaseMaxHops_for_UserNode; //user input param + */ + + //sm24 + unsigned int Num_total_queries_generated; + unsigned int Num_total_responses_generated; + + unsigned int *hops_before_response_ctr; //used for the histogram + unsigned int *longevity_of_message_ctr_for_TTL; //Suneil + unsigned int *longevity_of_message_ctr_for_loop; + + unsigned num_buckets; + + //Counters for external queries + unsigned int Queries_sent_from_UserNode; + unsigned int *Num_of_queries_for_specific_tag_from_UserNode; + + unsigned int Num_responses_sent_for_UserNode; + unsigned int Num_of_good_responses_for_UserNode; + + unsigned int *Num_of_good_responses_for_specific_tag_for_UserNode; + + unsigned int Num_duplicate_message_dropped_for_UserNode; + unsigned int Num_looping_message_dropped_for_UserNode; + + unsigned int Num_reponses_dropped_when_no_active_listeners; + unsigned int Num_reponses_dropped_when_no_active_listeners_for_UserNode; + + unsigned int Num_queries_dropped_for_TTL_for_UserNode; //Suneil | ctr number_queries dropped for ttl //figure out from where you are updating the above ctr. + unsigned int Num_responses_dropped_for_TTL_for_UserNode;// Suneil | ctr number_responses dropped for ttl. + + unsigned int Num_total_message_generated_for_UserNode; //Suneil | add ctr: num_total_mesasge_generated; //total load on the network, + + + unsigned int DatabaseHistResolution_for_UserNode; //user input param + unsigned int DatabaseMaxHops_for_UserNode; //user input param + + unsigned int *hops_before_response_ctr_for_UserNode; //used for the histogram + unsigned int *longevity_of_message_ctr_for_TTL_for_UserNode; //Suneil + unsigned int *longevity_of_message_ctr_for_loop_for_UserNode; + + unsigned num_buckets_for_UserNode; + + Database(Infrastructure* passed_If_ptr); //does some param + //Database(InputParameters *passed_param_ptr); + ~Database(); //explicit destructor, has a delete function for * array + + //void take_snapshot(); //creates a snapshot of all the above values when called + //void hops_at_response(unsigned int hop_count, MessageType message_type); // creates the histrogram for average number of hops for good responses + void Database::record_hops(unsigned int hop_count, unsigned int *passed_ctr); + + + +}; + +#endif // #ifndef DATABASE_HPP + diff --git a/Database.o b/Database.o new file mode 100755 index 0000000..bb0e4f6 Binary files /dev/null and b/Database.o differ diff --git a/Event.cpp b/Event.cpp new file mode 100755 index 0000000..bca866c --- /dev/null +++ b/Event.cpp @@ -0,0 +1,39 @@ +#include "ForwardDeclaration.hpp" +//#include "Allheader.hpp" +#include "Event.hpp" +#include "Functor.hpp" +#include "Node.hpp" +#include "Infrastructure.hpp" + +Event::Event() +{ + time = 0; + start_time =0; + handler = NULL; + +#ifdef DEBUG + node_ptr = NULL; + //Message *message_to_handle_ptr; + event_id = 0; +#endif + + return; +}; + +Event::Event(Functor &passedFunctor){ + handler = &passedFunctor; +#ifdef DEBUG + //message_to_handle_ptr = 0; + event_id = 0; +#endif + + return; +}; + + +Event::~Event() + { + delete handler; + return; + }; + diff --git a/Event.hpp b/Event.hpp new file mode 100755 index 0000000..f720143 --- /dev/null +++ b/Event.hpp @@ -0,0 +1,29 @@ +#ifndef EVENT_HPP +#define EVENT_HPP +//#include "Functor.hpp" +//#include "Node.hpp" + +class Event { + public: + Tick time; + Tick start_time; + Functor *handler; + +#ifdef DEBUG + Node *node_ptr; + //Message *message_to_handle_ptr; + unsigned int event_id; +#endif + + Event(); + Event(Functor &passedFunctor); + + ~Event(); + + friend bool operator==(const Event& e1,const Event& e2){ + return e1.time==e2.time && e1.start_time==e2.start_time && e1.handler ==e2.handler; + } +}; + +#endif //#ifndef EVENT_HPP + diff --git a/Event.o b/Event.o new file mode 100755 index 0000000..599ad3f Binary files /dev/null and b/Event.o differ diff --git a/ForwardDeclaration.hpp b/ForwardDeclaration.hpp new file mode 100755 index 0000000..41edd40 --- /dev/null +++ b/ForwardDeclaration.hpp @@ -0,0 +1,160 @@ +#ifndef FORWARDDECLARATION_HPP +#define FORWARDDECLARATION_HPP + +#include +#include +#include +#include +#include +#include + + +#include +#include +#include + +#include + + +#define RES_NODE 1 +#define RTR_NODE 2 +#define RES_RTR_NODE 3 +#define GENERATION_PHASE 1 +#define OPERATION_PHASE 2 + + +enum NodeType {PRIMARY_NODE, RESOURCE_NODE, ROUTER_NODE , USER_NODE, BIRTHAGENT_USER_NODE, BIRTHAGENT_RESOURCE_NODE, BIRTHAGENT_ROUTER_NODE }; +enum MessageType { BLANK_MESSAGE, QUERY, RESPONSE, FEEDBACK }; +//enum MessageDestinationFilter { TO_RESOURCE_NODE = TO_RES_NODE, TO_ROUTER_NODE = TO_RTR_NODE }; +enum MessageDestinationFilter { TO_RESOURCE_NODE = 1, TO_ROUTER_NODE = 2 }; +//enum SimulationPhase { GENERATION_PHASE = 1, OPERATION_PHASE =2 }; + +class Analyst; + +class Database; +class Event; +class Functor; + +class Message; +class Query; +class Response; +class Feedback; + + +class Node; +class ResourceNode; +class RouterNode; +class UserNode; + +//class Handler; +class Listener; +class QueryHandler; + +class Infrastructure; +class IO_Reporter; +class InputParameters; +class Scheduler; + +class SmallWorldGraph; +class OntologyRepository; + +template class SpecificFunctor; +template class BirthAgent ; + + +//typedef unsigned Tag; +typedef unsigned short Tag; +//typedef unsigned int Tag; + +typedef unsigned char u_8; +typedef unsigned int Tick; + +//typedef std::vector< Tag > Description; + +//typedef std::map< Tag, Tag > Description; +typedef std::set< Tag > Description; + +typedef std::list< RouterNode * > BootstrapNodeList; + +//typedef std::pair< Tag, Tag > Edge; +typedef std::pair< Tag, Tag > Edge; + +//typedef std::pair Edge; +typedef boost::adjacency_list<> AdjGraph; + +typedef boost::small_world_iterator< boost::minstd_rand, AdjGraph > SWGen; + + +//For Bellman +typedef boost::edge_list EdgeGraph; + + +//For router state +#ifdef DUPPACK_SET +typedef std::pair< unsigned int, unsigned int > NodeId_QuerySeqNum; +typedef std::set< NodeId_QuerySeqNum > QueryAlreadyReceived; +#endif + + +using namespace std; + +//void operation_simulation(); + +//*************These are for trimming routing table and known routers list ********************* +class KnownRouterIndexElement ; +class KnownRoutersIndexEncapsulator; + + + + + + +#ifdef DEBUG + +//void inline print_map_description( std::map< Tag, Tag > &description_to_print ) +void inline print_map_description( std::set &description_to_print ) +{ + //std::map< Tag, Tag >::iterator map_itr = description_to_print.begin(); + Description::iterator description_itr = description_to_print.begin(); + + while ( description_itr != description_to_print.end() ) + { + printf(" %u ", (*description_itr) ); + description_itr++; + } + printf("\n"); +}; +#endif + +#ifdef DEBUG + +void inline print_map_known_routers( std::map< unsigned int, RouterNode *> &known_routers_to_print ) +{ + std::map< unsigned int, RouterNode *>::iterator map_itr = known_routers_to_print.begin(); + while ( map_itr != known_routers_to_print.end() ) + { + printf(" %u ", (*map_itr).first ); + map_itr++; + } + printf("\n"); +}; +#endif + +/* +#ifdef DEBUG +template +void inline print_map(specific_map &map_to_print) +{ + typename specific_map::iterator map_itr = map_to_print.begin(); + while ( map_itr != map_to_print.end() ) + { + printf(" %u ", (*map_itr).first ); + map_itr++; + } + printf("\n"); +} +#endif +*/ +#endif // #ifndef FORWARDDECLARATION_HPP + + diff --git a/Functor.hpp b/Functor.hpp new file mode 100755 index 0000000..b565b3b --- /dev/null +++ b/Functor.hpp @@ -0,0 +1,74 @@ +//#include "Allheader.hpp" +#ifndef FUNCTOR_HPP +#define FUNCTOR_HPP + +#include //To differenciate functor for Nodes + +#include "ForwardDeclaration.hpp" +#include "Infrastructure.hpp" +#include "Node.hpp" +#include "Listener.hpp" +#include + +class Functor { + public: + virtual void operator()() = 0; + virtual ~Functor() + { + return; + } +}; + +template class SpecificFunctor: public Functor { + public: + + void (TClass::*fpt)(); + TClass* pt2Object; + //bool kill_object_on_death; + + SpecificFunctor(TClass* _pt2Object, void(TClass::*_fpt)()); + + virtual void operator()(); + + /*Specifically for Nodes, IO_Reporter - do not allow the functor to delete the parent object + instead clear the event list manually at exit. This will allow the parent + objects to remain alive even they use one shot timers. This might be causing us the bug when + IO_Reporter is called it throws error. For all other objects (Listener,QueryHandler) kill the object + */ + + ~SpecificFunctor() + { + + /* + if ( (typeid(*pt2Object) != typeid(BirthAgent)) && (typeid(*pt2Object) != typeid(BirthAgent)) && + (typeid(*pt2Object) != typeid(IO_Reporter)) + && (typeid(*pt2Object) != typeid(RouterNode)) && (typeid(*pt2Object) != typeid(ResourceNode)) ) + */ + if ( (typeid(*pt2Object) == typeid(Listener)) || (typeid(*pt2Object) == typeid(QueryHandler)) ) + // if ( typeid(*pt2Object) == typeid(QueryHandler) )//Listeners will be killed during resource node heartbeat cleanup + { + //td::cout<<"Deleting "< +inline +SpecificFunctor::SpecificFunctor(TClass* _pt2Object, void(TClass::*_fpt)() /*,bool passed_kill_object_on_death = 1*/) { + pt2Object = _pt2Object; + fpt= _fpt; + //kill_object_on_death = passed_kill_object_on_death; + return; + }; + +template +inline +void SpecificFunctor::operator()() { + (*pt2Object.*fpt)(); + return; +}; + + +#endif diff --git a/IO_Reporter.cpp b/IO_Reporter.cpp new file mode 100755 index 0000000..c715768 --- /dev/null +++ b/IO_Reporter.cpp @@ -0,0 +1,1136 @@ +#include "ForwardDeclaration.hpp" +#include "Input.hpp" +#include "IO_Reporter.hpp" +#include "Event.hpp" +#include "Infrastructure.hpp" +#include "Functor.hpp" +#include "Node.hpp" //Added later +//#include "Scheduler.hpp" + +//#include "SmallWorldGenerator.hpp" + + +#include +#include +#include + +#include "ForwardDeclaration.hpp" +#include "Database.hpp" +#include "Message.hpp"//Added for the NODE_VISTED_LIST_SIZE + + +IO_Reporter::IO_Reporter(Infrastructure* passed_If_ptr) +{ + If_ptr = passed_If_ptr; + return; +}; + +IO_Reporter::~IO_Reporter() +{ + return; +}; + + +void IO_Reporter::read_input_parameter(char *passed_input_file_name, Infrastructure* passed_If_ptr) { + + If_ptr = passed_If_ptr; + param_ptr = If_ptr->param_ptr; + std::istringstream *ss_ptr; + std::string smline; + std::ifstream file (passed_input_file_name,std::ios::in); + if (file.is_open()) + { + while(!file.eof()) + { + float float_value; unsigned int value; char temp[1000];char temp2[100]; + smline.clear(); + getline(file,smline); + + //std::istringstream ss(smline); + ss_ptr = new istringstream(smline); + (*ss_ptr)>>temp; //the first part is the variable name + + if (strcmp(temp, "network_struct_report_required") ==0 ) { (*ss_ptr)>>value; param_ptr->network_struct_report_required = value ;If_ptr->analyst.network_struct_report_required = value; } + + else if (strcmp(temp, "snapshot_reporter_period") ==0 ) { (*ss_ptr)>>value; param_ptr->snapshot_reporter_period = value ; } + else if (strcmp(temp, "snapshot_reporter_start_time") ==0 ) { (*ss_ptr)>>value; param_ptr->snapshot_reporter_start_time = value ; } + else if (strcmp(temp, "oneshot_reporter_time") ==0 ) { (*ss_ptr)>>value; param_ptr->oneshot_reporter_time = value ; } + + + else if (strcmp(temp, "run_for_ticks") ==0 ) { (*ss_ptr)>>value; param_ptr->run_for_ticks = value; } + else if (strcmp(temp, "bootstrap_threashold") ==0 ) { (*ss_ptr)>>value; param_ptr->bootstrap_threashold = value ; } + else if (strcmp(temp, "message_time_to_live") ==0 ) { (*ss_ptr)>>value; param_ptr->message_time_to_live = value ; } + else if (strcmp(temp, "query_time_to_live") ==0 ) { (*ss_ptr)>>value; param_ptr->query_time_to_live = value ; } + + else if (strcmp(temp, "ResourceNode_vitality") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_vitality = value ; } + else if (strcmp(temp, "ResourceNode_extroversion") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_extroversion = value ; } + else if (strcmp(temp, "ResourceNode_delay") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_delay = value ; } + else if (strcmp(temp, "ResourceNode_response_timeout") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_response_timeout = value ; } + else if (strcmp(temp, "ResourceNode_max_description") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_max_description = value ; } + + else if (strcmp(temp, "ResourceNode_known_routers_floor") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_known_routers_floor = value ; } + else if (strcmp(temp, "ResourceNode_known_routers_trim_threshold") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_known_routers_trim_threshold = value ; } + else if (strcmp(temp, "ResourceNode_known_routers_capacity") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_known_routers_capacity = value ; } + else if (strcmp(temp, "ResourceNode_translation_radius") ==0 ) { (*ss_ptr)>>value; param_ptr->ResourceNode_translation_radius = value ; } + + else if (strcmp(temp, "RouterNode_vitality") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_vitality = value ; } + else if (strcmp(temp, "RouterNode_extroversion") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_extroversion = value ; } + else if (strcmp(temp, "RouterNode_delay") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_delay = value ; } + else if (strcmp(temp, "RouterNode_response_timeout") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_response_timeout = value ; } + else if (strcmp(temp, "RouterNode_num_centroid_tags_to_explore_per_period") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_num_centroid_tags_to_explore_per_period = value ; } + else if (strcmp(temp, "RouterNode_num_exploration_queries_to_submit_per_period") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_num_exploration_queries_to_submit_per_period = value ; } + else if (strcmp(temp, "RouterNode_k") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_k = value ; } + else if (strcmp(temp, "RouterNode_duplicate_message_cache_timeout") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_duplicate_message_cache_timeout = value ; } + else if (strcmp(temp, "RouterNode_max_description") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_max_description = value ; } + + else if (strcmp(temp, "RouterNode_known_routers_floor") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_known_routers_floor = value ; } + else if (strcmp(temp, "RouterNode_known_routers_trim_threshold") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_known_routers_trim_threshold =value;} //addded 5/16 :: 23:25hrs + else if (strcmp(temp, "RouterNode_known_routers_capacity") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_known_routers_capacity = value ; } + + else if (strcmp(temp, "RouterNode_routing_table_length_floor") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_length_floor =value;} //addded 5/16 :: 23:25hrs + else if (strcmp(temp, "RouterNode_routing_table_length_trim_threshold") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_length_trim_threshold = value ; } + else if (strcmp(temp, "RouterNode_routing_table_min_num_resource_nodes") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_min_num_resource_nodes =value;} //addded 5/16 :: 23:25hrs + else if (strcmp(temp, "RouterNode_routing_table_max_length") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_max_length =value;} //addded 5/16 :: 23:25hrs + + else if (strcmp(temp, "RouterNode_routing_table_width_floor") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_width_floor = value ; } + else if (strcmp(temp, "RouterNode_routing_table_width_threshold") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_width_threshold =value;} //addded 5/16 :: 23:25hrs + else if (strcmp(temp, "RouterNode_routing_table_max_width") ==0 ) { (*ss_ptr)>>value; param_ptr->RouterNode_routing_table_max_width = value ; } + + else if (strcmp(temp, "UserNode_vitality") ==0 ) { (*ss_ptr)>>value; param_ptr->UserNode_vitality = value ; } + else if (strcmp(temp, "UserNode_extroversion") ==0 ) { (*ss_ptr)>>value; param_ptr->UserNode_extroversion = value ; } + else if (strcmp(temp, "UserNode_response_timeout") ==0 ) { (*ss_ptr)>>value; param_ptr->UserNode_response_timeout = value ; } + else if (strcmp(temp, "UserNode_num_queries_to_submit_per_period") ==0 ) { (*ss_ptr)>>value; param_ptr->UserNode_num_queries_to_submit_per_period = value ; } + + + else if (strcmp(temp, "Birth_ResourceNode_start_time") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_ResourceNode_start_time = value ; } + else if (strcmp(temp, "Birth_ResourceNode_period") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_ResourceNode_period = value ; } + else if (strcmp(temp, "Birth_ResourceNode_total_num_cycles") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_ResourceNode_total_num_cycles = value ; } + else if (strcmp(temp, "Birth_ResourceNode_num_cycles_per_heartbeat") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_ResourceNode_num_cycles_per_heartbeat = value ; } + + else if (strcmp(temp, "Birth_RouterNode_start_time") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_RouterNode_start_time = value ; } + else if (strcmp(temp, "Birth_RouterNode_period") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_RouterNode_period = value; } + else if (strcmp(temp, "Birth_RouterNode_total_num_cycles") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_RouterNode_total_num_cycles = value ; } + else if (strcmp(temp, "Birth_RouterNode_num_cycles_per_heartbeat") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_RouterNode_num_cycles_per_heartbeat = value ; } + + else if (strcmp(temp, "Birth_UserNode_start_time") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_UserNode_start_time = value ; } + else if (strcmp(temp, "Birth_UserNode_period") ==0 ) { (*ss_ptr)>>value; param_ptr->Birth_UserNode_period = value ; } + + + else if (strcmp(temp, "num_words") ==0 ) { (*ss_ptr)>>value; param_ptr->num_words = value ; } + else if (strcmp(temp, "degree_of_associativity_of_words") ==0 ) { (*ss_ptr)>>value; param_ptr->degree_of_associativity_of_words = value ; } + else if (strcmp(temp, "sw_model_probability") ==0 ) { (*ss_ptr)>>float_value; param_ptr->sw_model_probability = float_value ; } + + + else if (strcmp(temp, "input_onto_file_name") ==0 ) { (*ss_ptr)>>temp2; strcpy(param_ptr->input_onto_file_name,temp2); ; } + else if (strcmp(temp, "output_onto_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy(param_ptr->output_onto_file_name, temp2) ; } + else if (strcmp(temp, "output_onto_report_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy(param_ptr->output_onto_report_file_name , temp2 ) ; } //added 5/17 ::00:36hrs + else if (strcmp(temp, "output_network_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy( param_ptr->output_network_file_name , temp2 ) ; } + else if (strcmp(temp, "structural_report_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy( param_ptr->structural_report_file_name , temp2 ) ; } + else if (strcmp(temp, "generation_performance_report_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy(param_ptr->generation_performance_report_file_name , temp2 ) ; } + else if (strcmp(temp, "operation_performance_report_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy(param_ptr->operation_performance_report_file_name , temp2 ) ; } + else if (strcmp(temp, "routing_table_content_report_file_name") ==0 ) { (*ss_ptr)>>temp2;strcpy(param_ptr->routing_table_content_report_file_name , temp2 ) ; } //added 5/17 ::00:36hrs + + + else if (strcmp(temp, "DatabaseHistResolution") ==0 ) { (*ss_ptr)>>value; param_ptr->DatabaseHistResolution = value ; }//added 6/22 ::09:00hrs + else if (strcmp(temp, "DatabaseMaxHops") ==0 ) { (*ss_ptr)>>value; param_ptr->DatabaseMaxHops = value ; }//added 6/22 ::09:00hrs + else if (strcmp(temp, "DatabaseHistResolution_for_UserNode") ==0 ) { (*ss_ptr)>>value; param_ptr->DatabaseHistResolution_for_UserNode = value ; }//added 6/22 ::09:00hrs + else if (strcmp(temp, "DatabaseMaxHops_for_UserNode") ==0 ) { (*ss_ptr)>>value; param_ptr->DatabaseMaxHops_for_UserNode = value ; }//added 6/22 ::09:00hrs + + else if (strcmp(temp, "trace_source_node_id") ==0 ) { (*ss_ptr)>>value; param_ptr->trace_source_node_id = value ; } + else if (strcmp(temp, "trace_destination_node_id") ==0 ) { (*ss_ptr)>>value; param_ptr->trace_destination_node_id = value ; } + else if (strcmp(temp, "trace_tag") ==0 ) { (*ss_ptr)>>value; param_ptr->trace_tag = value ; } + + + // else {std::cout<message_time_to_live >= NODE_VISTED_LIST_SIZE || param_ptr->query_time_to_live >= NODE_VISTED_LIST_SIZE ) + { + printf("Error: the time to live parameter should be greater than NODE_VISTED_LIST_SIZE\n"); + exit(1); + } + + +}; + +void IO_Reporter::write_input_parameter_on_screen_from(char * passed_input_file_name ) { + /* + snapshot_reporter_period 10 + snapshot_reporter_start_time 1 + oneshot_reporter_time 0 + + run_for_ticks 100 + bootstrap_threashold 4 + message_time_to_live 3 # For queries and responses inside the network + query_time_to_live 10 # For user queries + + + ResourceNode_vitality 20 + ResourceNode_extroversion 3 # + ResourceNode_delay 5 + ResourceNode_response_timeout 10 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." + ResourceNode_max_description 1 + + RouterNode_vitality 30 + RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 1 doesnt recall any resource with Tag 12 + RouterNode_num_centroid_tags_to_explore_per_period 2 # This parameter limits how many centroid topics around which exploration will be done per period + RouterNode_num_exploration_queries_to_submit_per_period 5 # This parameter limits how many queries the router node can submit for exploration + RouterNode_delay 5 + RouterNode_response_timeout 30 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." + RouterNode_k 3 + RouterNode_duplicate_message_cache_timeout 0 + RouterNode_max_description 5 + RouterNode_routing_table_max_length 8 + RouterNode_routing_table_max_width 8 + + UserNode_vitality 50 + UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to + UserNode_response_timeout 30 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." + UserNode_num_queries_to_submit_per_period 5 + + + Birth_ResourceNode_start_time 0 + Birth_ResourceNode_period 10 + Birth_ResourceNode_total_num_cycles 4 + Birth_ResourceNode_num_cycles_per_heartbeat 4 + + Birth_RouterNode_start_time 0 + Birth_RouterNode_period 10 + Birth_RouterNode_total_num_cycles 4 + Birth_RouterNode_num_cycles_per_heartbeat 4 + + Birth_UserNode_start_time 25 + Birth_UserNode_period 20 + + num_words 40 + degree_of_associativity_of_words 4 + sw_model_probability 0.02 + + input_onto_file_name ontoin + output_onto_file_name ontoout.net + output_onto_report_file_name ontorep + output_network_file_name netout.net + structural_report_file_name netstrucrep + generation_performance_report_file_name perfrep + operation_performance_report_file_name oprnetperfrep + routing_table_content_report_file_name netroutingtable + + DatabaseHistResolution 1 + DatabaseMaxHops 100 + DatabaseHistResolution_for_UserNode 1 + DatabaseMaxHops_for_UserNode 100 + + trace_source_node_id 0 + trace_destination_node_id 3 + trace_tag 6 + */ + + std::cout<<" ** Parameters after reading from file **"< > &all_distances, + const std::vector< std::vector > &all_parents, const unsigned int *distance_histogram, + const unsigned int *routing_table_length_histogram, + const unsigned int *routing_table_width_histogram, + const unsigned int *routing_table_max_width_histogram, + char *passed_struct_report_file_name, Tick passed_current_time) + { + + + #ifdef DEBUG + printf("called :write_structural_report with num_vertices = %d , diameter = %d\n",num_vertices,diameter); + #endif + char filename[30]; + snprintf(filename,30,"%ld_%s",passed_current_time,passed_struct_report_file_name); + + std::FILE * fileptr; + fileptr=fopen(filename,"w"); + + if (!fileptr) + { + printf("\nUnable to open file to write network : Aborting WRITE\n"); + return; + } + else{ + + std::vector< std::vector >::iterator row_it; + + std::vector< std::vector >::iterator row_end; + + std::vector::iterator col_it; + std::vector::iterator col_end; + + //int i,j; + + + + if (routing_table_length_histogram !=NULL) + { + #ifdef DEBUG + printf("Starting to write routing table length histogram \n"); + #endif + + fprintf(fileptr,"***Routing table length histogram**\nLength : Freq \n"); + + for(unsigned int j=0;jparam_ptr->RouterNode_routing_table_max_length+1;j++) + if (routing_table_length_histogram[j]) + fprintf(fileptr,"%5u : %5u \n",j,routing_table_length_histogram[j]); + + fprintf(fileptr,"\n"); + + } + + if (routing_table_width_histogram !=NULL) + { + #ifdef DEBUG + printf("Starting to write routing table width histogram \n"); + #endif + + fprintf(fileptr,"***Routing table width histogram**\nWidth : Freq \n"); + + for(unsigned int j=0;jparam_ptr->RouterNode_routing_table_max_width+1;j++) + if (routing_table_width_histogram[j]) + fprintf(fileptr,"%5u : %5u \n",j,routing_table_width_histogram[j]); + + fprintf(fileptr,"\n"); + + } + + if (routing_table_max_width_histogram !=NULL) + { + #ifdef DEBUG + printf("Starting to write routing table max width histogram \n"); + #endif + + fprintf(fileptr,"***Routing table max width histogram**\nMax width : Num of pairs \n"); + + for(unsigned int j=0;jparam_ptr->RouterNode_routing_table_max_width+1;j++) + if (routing_table_max_width_histogram[j]) + fprintf(fileptr,"%5u : %5u \n",j,routing_table_max_width_histogram[j]); + + fprintf(fileptr,"\n"); + + } + + //Is structural report is noot required do not write the following rest of the items + if (If_ptr->param_ptr->network_struct_report_required) { + + if (distance_histogram !=NULL) + { + #ifdef DEBUG + printf("Starting to write distance histogram \n"); + #endif + + fprintf(fileptr,"***Distance distribution/histogram**\nDistance : Num of pairs \n"); + + for(int j=0;jnetwork_struct_report_required) + + }//close of else, for file opening verifcations + + fclose(fileptr); + + return; + +}; + + + +/**/ + +void IO_Reporter::write_performance_report(char *passed_perf_report_file_name , Tick current_time){ + + //This would print all the database counters to a file, with prefix as time, and suffix as passed_perf_report_file_name + //similar to IO_Reporter::write_structural_report(....) + + + //Suneil : Added:July-21st :1:45pm + unsigned int sum_num_resources, sum_num_good_responses,sum_num_queries ; + float recall_rate_per_query; + char filename[30]; + snprintf(filename,30,"%ld_%s",current_time,passed_perf_report_file_name); + + std::FILE * fileptr; + fileptr=fopen(filename,"w"); + if (!fileptr) + { + printf("\nUnable to open file to write network : Aborting WRITE\n"); + return; + } + + else{ + + fprintf(fileptr,"***Database Report at time %u ticks *** \n\n The following figures are for the message packets, not unique user level queries \n\n",current_time); + + fprintf(fileptr,"Queries_sent_from_ResourceNode : %u \n",If_ptr->database_ptr->Queries_sent_from_ResourceNode); + fprintf(fileptr,"Queries_sent_from_RouterNode : %u \n\n",If_ptr->database_ptr->Queries_sent_from_RouterNode); + + fprintf(fileptr,"Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode : %u \n",If_ptr->database_ptr->Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode); + fprintf(fileptr,"Queries_forwarded_by_RouterNode_orgininated_from_RouterNode : %u \n\n",If_ptr->database_ptr->Queries_forwarded_by_RouterNode_orgininated_from_RouterNode); + + fprintf(fileptr,"Responses_sent_from_ResourceNode : %u \n",If_ptr->database_ptr->Responses_sent_from_ResourceNode); + fprintf(fileptr,"Responses_sent_from_RouterNode : %u \n\n",If_ptr->database_ptr->Responses_sent_from_RouterNode); + + fprintf(fileptr,"Num_of_good_responses : %u # These are the response received from router nodes only, as resources/ routers are interested to identify router to whom they can attach to \n\n",If_ptr->database_ptr->Num_of_good_responses); + + fprintf(fileptr,"Num_duplicate_message_dropped : %u \n",If_ptr->database_ptr->Num_duplicate_message_dropped); + fprintf(fileptr,"Num_looping_message_dropped : %u \n",If_ptr->database_ptr->Num_looping_message_dropped); + fprintf(fileptr,"Num_queries_dropped_for_TTL : %u \n\n",If_ptr->database_ptr->Num_queries_dropped_for_TTL);; + + fprintf(fileptr,"Num_reponses_dropped_when_no_active_listeners : %u \n\n",If_ptr->database_ptr->Num_reponses_dropped_when_no_active_listeners);; + + fprintf(fileptr,"Num_total_message_generated (due to internal network ops - query, forwarding, response) : %u \n\n",If_ptr->database_ptr->Num_total_message_generated); + + fprintf(fileptr,"Queries_sent_from_UserNode (query packets) : %u\n",If_ptr->database_ptr->Queries_sent_from_UserNode); + fprintf(fileptr,"Num_responses_sent_for_UserNode : %u\n",If_ptr->database_ptr->Num_responses_sent_for_UserNode); + fprintf(fileptr,"Num_of_good_responses_for_UserNode : %u\n",If_ptr->database_ptr->Num_of_good_responses_for_UserNode); + fprintf(fileptr,"Num_duplicate_message_dropped_for_UserNode : %u\n", If_ptr->database_ptr->Num_duplicate_message_dropped_for_UserNode); + fprintf(fileptr,"Num_looping_message_dropped_for_UserNode : %u\n", If_ptr->database_ptr->Num_looping_message_dropped_for_UserNode); + fprintf(fileptr,"Num_queries_dropped_for_TTL_for_UserNode : %u\n", If_ptr->database_ptr->Num_queries_dropped_for_TTL_for_UserNode); + fprintf(fileptr,"Num_responses_dropped_for_TTL_for_UserNode : %u\n\n",If_ptr->database_ptr->Num_responses_dropped_for_TTL_for_UserNode); + + fprintf(fileptr,"Num_total_message_generated_for_UserNode (query, forwarding, response) : %u \n\n",If_ptr->database_ptr->Num_total_message_generated_for_UserNode); + + //sm24 + fprintf(fileptr,"Num_total_queries_generated (rtr, res, user): %u # This is total of all resource, router, user nodes\n",If_ptr->database_ptr->Num_total_queries_generated); + fprintf(fileptr,"Num_total_responses_generated (rtr, res, user): %u # This is total of all resource, router, user nodes \n\n",If_ptr->database_ptr->Num_total_responses_generated); + + fprintf (fileptr,"Analysis of Query-Response statistics across all tags for internal network operations (advertising operations only) :\nContents of num_resource_with_specific_tag \n"); + fprintf (fileptr,"Tag : res: rtr: queries: good responses from routers\n"); + + + sum_num_resources=0,sum_num_good_responses=0,sum_num_queries=0; + for(unsigned int i=0; i<(If_ptr->param_ptr->num_words);i++) + { + if (If_ptr->database_ptr->num_resource_with_specific_tag[i] + If_ptr->database_ptr->num_router_with_specific_tag[i] ) + { + fprintf(fileptr,"%4d:%4u:%4u:%8u:%5u \n", + i, + If_ptr->database_ptr->num_resource_with_specific_tag[i], + If_ptr->database_ptr->num_router_with_specific_tag[i], + If_ptr->database_ptr->Num_of_queries_for_specific_tag[i], + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag[i]); + } + if ( (If_ptr->database_ptr->num_resource_with_specific_tag[i] + If_ptr->database_ptr->num_router_with_specific_tag[i] )>=2 && + If_ptr->database_ptr->num_router_with_specific_tag[i] > 0 ) + { + sum_num_resources = sum_num_resources + If_ptr->database_ptr->num_router_with_specific_tag[i] ; + sum_num_good_responses = sum_num_good_responses + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag[i]; + sum_num_queries = sum_num_queries + If_ptr->database_ptr->Num_of_queries_for_specific_tag[i] * + (If_ptr->database_ptr->num_resource_with_specific_tag[i] + If_ptr->database_ptr->num_router_with_specific_tag[i] ); + + } + } + + + fprintf(fileptr,"\nValues for recall rate calculation for network internal operation (advertising operations only) \nsum_num_good_responses = %u , sum_num_resources = %u , sum_num_queries = %u , RouterNode_k = %u \n", + sum_num_good_responses, + sum_num_resources, + sum_num_queries, + If_ptr->param_ptr->RouterNode_k); + + if (sum_num_queries) + { + recall_rate_per_query = ((float) sum_num_good_responses); + recall_rate_per_query = recall_rate_per_query /sum_num_queries ; + + + fprintf(fileptr,"Recall rate per query for internal network operations = %.4f \n\n",recall_rate_per_query); + + } else { + fprintf(fileptr,"Recall rate per query not yet available \n\n"); + } + + + fprintf(fileptr,"Analysis of Query-Response time response for network's internal operation: Contents of hops_before_response_ctr \n"); + fprintf(fileptr,"Parameters used to generate the histogram : DatabaseHistResolution : %u, DatabaseMaxHops : %u ,num_buckets : %u \n", + If_ptr->param_ptr->DatabaseHistResolution, + If_ptr->param_ptr->DatabaseMaxHops, + If_ptr->database_ptr->num_buckets); + + fprintf(fileptr,"Histogram contents - \nHops :Freq \n"); + + for(int i=0;i<(If_ptr->database_ptr->num_buckets +1);i++) + if(If_ptr->database_ptr->hops_before_response_ctr[i]) + fprintf(fileptr,"%5d:%5u\n", + i, + If_ptr->database_ptr->hops_before_response_ctr[i] ); + + fprintf(fileptr,"\nAnalysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) \nfor network's internal operation: Contents of longevity_of_message_ctr_for_TTL\n"); + fprintf(fileptr,"Parameters used to generate the histogram : DatabaseHistResolution : %u , DatabaseMaxHops : %u , num_buckets : %u \n", + If_ptr->param_ptr->DatabaseHistResolution, + If_ptr->param_ptr->DatabaseMaxHops, + If_ptr->database_ptr->num_buckets); + + fprintf(fileptr,"Histogram contents - \nHops :Freq \n"); + + for(int i=0;i<(If_ptr->database_ptr->num_buckets +1);i++) + if(If_ptr->database_ptr->longevity_of_message_ctr_for_TTL[i]) + fprintf(fileptr,"%5d:%5u\n", + i, + If_ptr->database_ptr->longevity_of_message_ctr_for_TTL[i] ); + + fprintf(fileptr,"\nAnalysis of Query-Response time response for user queries: Contents of hops_before_response_ctr_for_UserNode \n"); + fprintf(fileptr,"Parameters used to generate the histogram : DatabaseHistResolution_for_UserNode : %u , DatabaseMaxHops_for_UserNode : %u , num_buckets_for_UserNode : %u \n", + If_ptr->param_ptr->DatabaseHistResolution_for_UserNode, + If_ptr->param_ptr->DatabaseMaxHops_for_UserNode, + If_ptr->database_ptr->num_buckets_for_UserNode); + + fprintf(fileptr,"Histogram contents - \nHops :Freq \n"); + + for(int i=0;i<(If_ptr->database_ptr->num_buckets_for_UserNode +1);i++) + if(If_ptr->database_ptr->hops_before_response_ctr_for_UserNode[i]) + fprintf(fileptr,"%5d:%5u\n", + i, + If_ptr->database_ptr->hops_before_response_ctr_for_UserNode[i] ); + + + fprintf(fileptr,"\nAnalysis of duplicate packet's longevity (hops before they were identified as dup packets and dropped) \n"); + fprintf(fileptr,"for user queries: Contents of hops_before_response_ctr_for_UserNode \n"); + fprintf(fileptr,"Parameters used to generate the histogram : \nDatabaseHistResolution_for_UserNode : %u, DatabaseMaxHops_for_UserNode : %u, num_buckets_for_UserNode : %u\n", + If_ptr->param_ptr->DatabaseHistResolution_for_UserNode, + If_ptr->param_ptr->DatabaseMaxHops_for_UserNode, + If_ptr->database_ptr->num_buckets_for_UserNode); + + fprintf(fileptr,"Histogram contents - \nHops :Freq \n"); + + for(int i=0;i<(If_ptr->database_ptr->num_buckets_for_UserNode +1);i++) + if(If_ptr->database_ptr->longevity_of_message_ctr_for_TTL_for_UserNode[i]) + fprintf(fileptr,"%5d:%5u\n", + i, + If_ptr->database_ptr->longevity_of_message_ctr_for_TTL_for_UserNode[i]); + + fprintf(fileptr,"\nAnalysis of Query-Response statistics for user queries across all tags for which a resource exists :\n"); + fprintf(fileptr,"Contents of Num_of_good_responses_for_specific_tag_for_UserNode \n"); + fprintf(fileptr,"Tag : res : queries: responses \n"); + + sum_num_resources =0,sum_num_good_responses=0,sum_num_queries=0; + for(unsigned int i=0; i<(If_ptr->param_ptr->num_words);i++) + { + if (If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[i] && + If_ptr->database_ptr->num_resource_with_specific_tag[i]) + { + fprintf(fileptr,"%5d:%5u:%8u:%5u\n", + i, + If_ptr->database_ptr->num_resource_with_specific_tag[i], + If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[i], + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag_for_UserNode[i]); + + sum_num_resources = sum_num_resources + If_ptr->database_ptr->num_resource_with_specific_tag[i]; + sum_num_good_responses = sum_num_good_responses + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag_for_UserNode[i]; + sum_num_queries = sum_num_queries + If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[i] * + If_ptr->database_ptr->num_resource_with_specific_tag[i] ; + + } + } + + + fprintf(fileptr,"\nValues for recall rate calculation for user queries \nsum_num_good_responses = %u , sum_num_resources = %u, sum_num_queries = %u, RouterNode_k= %u \n", + sum_num_good_responses, + sum_num_resources, + sum_num_queries, + If_ptr->param_ptr->RouterNode_k); + + if (sum_num_queries) + { + + recall_rate_per_query = ((float) sum_num_good_responses); + recall_rate_per_query = recall_rate_per_query /sum_num_queries ; + + fprintf(fileptr,"Recall rate per query for user queries = %f \n\n",recall_rate_per_query); + } else fprintf(fileptr,"Recall rate per query for external queries not yet available \n\n"); + + + fprintf(fileptr,"Analysis of Query-Response statistics across all tags for user queries :\n"); + fprintf(fileptr,"Contents of Num_of_good_responses_for_specific_tag_for_UserNode\n"); + fprintf(fileptr,"Tag : res : queries: responses \n"); + + sum_num_good_responses=0,sum_num_queries=0; + for(unsigned int i=0;i<(If_ptr->param_ptr->num_words);i++) + { + if (If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[i] ) + { + fprintf(fileptr,"%5d:%5u:%8u:%5u\n",i,If_ptr->database_ptr->num_resource_with_specific_tag[i], + If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[i], + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag_for_UserNode[i]); + + sum_num_good_responses = sum_num_good_responses + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag_for_UserNode[i]; + sum_num_queries = sum_num_queries + If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[i]; + + } + } + + fprintf(fileptr,"\nValues for hit/success rate calculation for user queries \nsum_num_good_responses = %u , sum_num_queries = %u \n", + sum_num_good_responses, sum_num_queries); + + if (sum_num_queries) + { + + recall_rate_per_query = ((float) sum_num_good_responses); + recall_rate_per_query = recall_rate_per_query /sum_num_queries ; + + fprintf(fileptr,"Hit rate per query for user queries = %.4f \n\n",recall_rate_per_query); + + } else fprintf(fileptr,"Hit rate per query for external queries not yet available \n\n"); + + + }//close of else + //file.close(); + fclose(fileptr); + return; +}; + +/**/ + + +void IO_Reporter::write_routing_table_content_report(char * passed_routing_table_content_report_file_name, Tick passed_current_time) + { + + RoutingTableIterator print_routing_table_row_itr; + RoutingTableRowIterator print_routing_table_entry_itr; + std::vector::iterator list_of_router_nodes_itr; + //unsigned int i; + + char fname[30]; + snprintf(fname,30,"%d_%s",passed_current_time,passed_routing_table_content_report_file_name); + std::FILE * fileptr; + fileptr=fopen(fname,"w"); + if(!fileptr) + { + printf("\nError: Unable to open file to write routing table contents : Aborting WRITE\n"); + return; + } + else + { +#ifdef DEBUG + printf("Writing Routing Table Entry\n"); +#endif + + //The code below will print the routing table in a file with the passed given name + + list_of_router_nodes_itr = If_ptr->list_of_router_nodes.begin(); + //while ( list_of_router_nodes_itr != If_ptr->list_of_router_nodes.end() ) + for (unsigned int m= (If_ptr->list_of_router_nodes).size(); + m>0; m--) + { + + if (!(*list_of_router_nodes_itr)->routing_table.empty()) + { + + print_routing_table_row_itr = (*list_of_router_nodes_itr)->routing_table.begin(); + + fprintf(fileptr,"Printing routing table of router node: %u \n",(*list_of_router_nodes_itr)->id); + fprintf(fileptr,"Node id : Row i :Tag : RsNdNum :List of Node id(node_type) that are attached...\n"); + //i=0; + //while (print_routing_table_row_itr != (*list_of_router_nodes_itr)->routing_table.end()) + for (unsigned int j= (*list_of_router_nodes_itr)->routing_table.size(),i=0; + j>0; j--,i++) + { + fprintf(fileptr,"Node%5u: Row %4u:Tag %4u: %4u :", + (*list_of_router_nodes_itr)->id,i,(*print_routing_table_row_itr).first,(*print_routing_table_row_itr).second->num_resource_nodes ); + + print_routing_table_entry_itr = (*print_routing_table_row_itr).second->destinations.begin() ; + + //while ( print_routing_table_entry_itr != (*print_routing_table_row_itr).second.end() ) + for (unsigned int k= ((*print_routing_table_row_itr).second)->destinations.size(); + k>0; k--) + { + fprintf(fileptr," %u(%u), ",(*print_routing_table_entry_itr)->id,(*print_routing_table_entry_itr)->node_type); + print_routing_table_entry_itr++; + } + fprintf(fileptr,"\n"); + print_routing_table_row_itr++; + //i++; + } + + } else + fprintf(fileptr,"Routing table of router node %u is empty \n",(*list_of_router_nodes_itr)->id); + + list_of_router_nodes_itr++; + + fprintf(fileptr,"\n"); //Prints a line after each node's routing table content + + } + + }//close of else + fclose(fileptr); + + return; + }; + + + + + + + +void IO_Reporter::schedule_periodic(Tick passed_period, Tick passed_start_time) +{ + + period = passed_period; + start_time = passed_start_time; + + + //Schedule itself + //Create an event + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; +#endif + + //Create a functor, assign the object and its handling method corresponding to the event + functor_handler_ptr = new SpecificFunctor( this, &IO_Reporter::heartbeat ); + + handler_schedule_event_ptr->handler= functor_handler_ptr; + //Setup the periodicty + handler_schedule_event_ptr->time = period; + handler_schedule_event_ptr->start_time = start_time; + //Schedule the periodic event + If_ptr->scheduler_ptr->schedule_periodic( handler_schedule_event_ptr); + + return; +}; + + +void IO_Reporter::schedule_event( Tick passed_oneshot_time) +{ + + //Schedule itself + //Create an event + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; +#endif + + //Create a functor, assign the object and its handling method corresponding to the event + functor_handler_ptr = new SpecificFunctor( this, &IO_Reporter::heartbeat ); + + handler_schedule_event_ptr->handler= functor_handler_ptr; + //Setup the periodicty + handler_schedule_event_ptr->time = passed_oneshot_time; + //Schedule the periodic event + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); + +#ifdef DEBUG_IO + printf( " Created EventReporter: with passed_time = %u \n", passed_oneshot_time ); +#endif + return; +}; + + + + +void IO_Reporter::heartbeat() +{ + + printf("Reporting network status at time %u\n", If_ptr->scheduler_ptr->now() ); + + + + + //Extract the network to make edge list , which will be used for shortest distance generation + (If_ptr->analyst).extract_edge_list(); + + + + if (operational_phase & GENERATION_PHASE) + { + + #ifdef DEBUG_IO + printf("Analyst::heartbeat(): Wiriting edge_list....\n"); + + write_edge_list(); + + #endif + + //Dont generate pajek file if edge list is not generated in the first place. + if (If_ptr->param_ptr->network_struct_report_required){ + + printf("Dumping the network to pajek file...\n"); + + write_network_to_pajek_file( (If_ptr->analyst).num_vertices,(If_ptr->analyst).num_edges, + (If_ptr->analyst).list_of_edges, + (If_ptr->analyst).weight, param_ptr->output_network_file_name, If_ptr->scheduler_ptr->now() ); + + printf("Finished dumpting the network in file : %u_%s\n",If_ptr->scheduler_ptr->now(), param_ptr->output_network_file_name); + } + + printf("Analysing the generated network...\n"); + + //Generating distance matrix and network diameter + if (If_ptr->param_ptr->network_struct_report_required) + printf("The diameter of the generated network is %d\n", (If_ptr->analyst).generate_distance_matrix() ); + + + #ifdef DEBUG_IO + printf("IO_Reporter::heartbeat():Writing edge_list....\n"); + + write_edge_list(); + + #endif + + printf("Dumping the network structural report to file...\n"); + + + write_structural_report( (If_ptr->analyst).num_vertices, + (If_ptr->analyst).diameter, + (If_ptr->analyst).all_distances, (If_ptr->analyst).all_parents, + (If_ptr->analyst).distance_histogram, + (If_ptr->analyst).routing_table_length_histogram, + (If_ptr->analyst).routing_table_width_histogram, + (If_ptr->analyst).routing_table_max_width_histogram, + param_ptr->structural_report_file_name, If_ptr->scheduler_ptr->now() ); + + + + printf("Finished dumping the network structural report to file : %u_%s\n", If_ptr->scheduler_ptr->now(), param_ptr->structural_report_file_name); + + printf("Dumping the routing table contents to file...\n"); + + write_routing_table_content_report(param_ptr->routing_table_content_report_file_name, If_ptr->scheduler_ptr->now()); + + printf("Finished dumping routing table contents to file : %u_%s\n", If_ptr->scheduler_ptr->now(), param_ptr->routing_table_content_report_file_name); + + printf("Dumping the network generation performance to file...\n"); + + write_performance_report(param_ptr->generation_performance_report_file_name, If_ptr->scheduler_ptr->now()); + + printf("Finished dumping the network generation performance to file : %u_%s\n", If_ptr->scheduler_ptr->now(), param_ptr->generation_performance_report_file_name); + + + + + #ifdef DEBUG_FAULT + //print_all_nodes(); + #endif + } +/* + if (operational_phase & OPERATION_PHASE) + { + + printf("Dumping the network operation performance to file...\n"); + + write_performance_report(param_ptr->operation_performance_report_file_name, If_ptr->scheduler_ptr->now()); + + printf("Finished dumping the network operation performance to file : %u_%s\n", If_ptr->scheduler_ptr->now(), param_ptr->operation_performance_report_file_name); + + } +*/ + return; +}; + + +#ifdef DEBUG + +void IO_Reporter::write_edge_list() { + + for (unsigned int i = 0;i < (If_ptr->analyst).num_edges ;i++ ) + { + printf( "%u : %u -> %u : %d\n",i,((If_ptr->analyst).list_of_edges[i]).first, + ((If_ptr->analyst).list_of_edges[i]).second, (If_ptr->analyst).weight[i] ); + + } + printf("Finished wrtiting edge_list....\n"); + + return; +}; + + +void IO_Reporter::print_all_nodes() { + + std::vector::iterator list_of_resource_nodes_itr; + std::vector::iterator list_of_router_nodes_itr; + ResourceNode * resource_node_ptr; + RouterNode * router_node_ptr; + + unsigned int num_router_nodes = If_ptr->list_of_router_nodes.size(); + unsigned int num_resource_nodes = If_ptr->list_of_resource_nodes.size(); + + //unsigned int i; + printf("Printing all nodes....\n"); + + printf("RouterNodes : "); + + list_of_router_nodes_itr = If_ptr->list_of_router_nodes.begin(); + for (unsigned int i=0; i < num_router_nodes ;i++, list_of_router_nodes_itr++ ) + { + printf(" %u,", (*list_of_router_nodes_itr)->id); + + } + + printf("\n"); + + printf("ResourceNodes : "); + + list_of_resource_nodes_itr = If_ptr->list_of_resource_nodes.begin(); + for (unsigned int i=0 ; + iid); + + } + printf("\n"); + + return; +}; + +#endif + + + + diff --git a/IO_Reporter.hpp b/IO_Reporter.hpp new file mode 100755 index 0000000..2fa4155 --- /dev/null +++ b/IO_Reporter.hpp @@ -0,0 +1,61 @@ +#ifndef IO_REPORTER_HPP +#define IO_REPORTER_HPP + + +class IO_Reporter { + + SpecificFunctor *functor_handler_ptr; + Event *handler_schedule_event_ptr; + + Infrastructure* If_ptr; + Tick period; + Tick start_time; + Tick oneshot_time; + InputParameters *param_ptr; + + public: + //SimulationPhase operational_phase; + int operational_phase; + + + IO_Reporter(Infrastructure* passed_If_ptr); + ~IO_Reporter(); + void read_input_parameter(char * passed_input_file_name, Infrastructure* passed_If_ptr); + void verify_config_data(); //To verify the config data provided + + void write_input_parameter_on_screen_from(char * passed_input_file_name); + + void write_network_to_pajek_file(unsigned int num_vertices, unsigned int num_edges, + const Edge *list_of_edges, const unsigned char *weight, char *passed_output_file_name , Tick current_time); + + void write_structural_report(unsigned int num_vertices, int diameter, + const std::vector< std::vector > &all_distances, + const std::vector< std::vector > &all_parents, const unsigned int *distance_histogram, + const unsigned int *routing_table_length_histogram, + const unsigned int *routing_table_width_histogram, + const unsigned int *routing_table_max_width_histogram, + char *passed_struct_report_file_name, Tick current_time ); + + void write_performance_report(char *passed_perf_report_file_name , Tick current_time); + + void write_routing_table_content_report(char * passed_routing_table_content_report_file_name, + Tick passed_current_time); + + void schedule_periodic(Tick passed_period, Tick passed_start_time); + void schedule_event(Tick passed_oneshot_time); + + void heartbeat(); + +#ifdef DEBUG + + void print_all_nodes(); + + void write_edge_list(); + +#endif + +}; + + + +#endif diff --git a/IO_Reporter.o b/IO_Reporter.o new file mode 100755 index 0000000..4dbdb6e Binary files /dev/null and b/IO_Reporter.o differ diff --git a/Infrastructure.cpp b/Infrastructure.cpp new file mode 100755 index 0000000..4f10233 --- /dev/null +++ b/Infrastructure.cpp @@ -0,0 +1,128 @@ +#include "ForwardDeclaration.hpp" +//#include "Allheader.hpp" +#include "Infrastructure.hpp" + +#include "Analyst.hpp" +#include "Scheduler.hpp" +#include "Database.hpp" +#include "IO_Reporter.hpp" +#include "Event.hpp" +#include "Node.hpp" + +#include "OntologyRepository.hpp" //Got from hpp +#include "Input.hpp" //Got from hpp + + +Infrastructure::Infrastructure() { + + scheduler_ptr = new Scheduler(this); + param_ptr =new InputParameters; + IO_Reporter_ptr = new IO_Reporter(this); + + analyst.If_ptr = this; + agent_id = 0;user_node_id = 3; + //query_id=0;response_id=0; + database_ptr = new Database(this); +#ifdef DEBUG + event_id = 0; +#endif + return; +}; + + + +Infrastructure::~Infrastructure() + { + +#ifdef DEBUG + printf("Started cleaning up for Infrastructure\n"); +#endif + + + /* + OntologyRepository *onto_repository_ptr; + InputParameters *param_ptr; + IO_Reporter *IO_Reporter_ptr; + + std::vector list_of_resource_nodes; + std::vector list_of_router_nodes; + + Database *database_ptr; + */ + + delete param_ptr; + delete IO_Reporter_ptr; + delete onto_repository_ptr; + delete database_ptr; + delete scheduler_ptr; + + /*This statement now doesnt holde true because the functor doesnt delete the parent + element anymore, read the comment in functor code- + Cleaning node list are not neccessary as these nodes get deleted when + the event schedule is cleaned, the functor destroys these node objects + through the heartbeat handler functor linkages */ + + std::vector::iterator list_of_resource_nodes_itr; + std::vector::iterator list_of_router_nodes_itr; + std::vector::iterator list_of_user_nodes_itr; + //std::map::iterator list_of_messages_itr; + std::map::iterator list_of_queries_itr; + std::map::iterator list_of_responses_itr; + + //std::set< Message*>::iterator list_of_messages_itr; + + unsigned int num_elements_to_clear; + + + for (num_elements_to_clear = list_of_router_nodes.size(),list_of_router_nodes_itr = list_of_router_nodes.begin(); + num_elements_to_clear >0 ; + num_elements_to_clear--,list_of_router_nodes_itr++ ) + { + delete (*list_of_router_nodes_itr); + } +#ifdef DEBUG + printf("Finished deleting all router nodes\n"); +#endif + + for (num_elements_to_clear = list_of_resource_nodes.size(),list_of_resource_nodes_itr = list_of_resource_nodes.begin(); + num_elements_to_clear >0 ; + num_elements_to_clear--,list_of_resource_nodes_itr++) + { + delete (*list_of_resource_nodes_itr); + } +#ifdef DEBUG + printf("Finished deleting all resource nodes\n"); +#endif + + for (num_elements_to_clear = list_of_user_nodes.size(),list_of_user_nodes_itr = list_of_user_nodes.begin(); + num_elements_to_clear >0 ; + num_elements_to_clear--,list_of_user_nodes_itr++) + { + delete (*list_of_user_nodes_itr); + } +#ifdef DEBUG + printf("Finished deleting all user nodes\n"); +#endif + + list_of_resource_nodes.clear(); + list_of_router_nodes.clear(); + list_of_user_nodes.clear(); + +#ifdef DEBUG + printf("Finished cleaning up list of nodes\n"); +#endif + +/* + delete user_node_ptr; +#ifdef DEBUG + printf("Finished deleting user node\n"); +#endif +*/ + + +#ifdef DEBUG + printf("Finished cleaning up for Infrastructure\n"); +#endif + return; + }; + diff --git a/Infrastructure.hpp b/Infrastructure.hpp new file mode 100755 index 0000000..f6a66d1 --- /dev/null +++ b/Infrastructure.hpp @@ -0,0 +1,60 @@ +#ifndef INFRASTRUCTURE_HPP +#define INFRASTRUCTURE_HPP + +#include "ForwardDeclaration.hpp" +#include "Scheduler.hpp" +//#include "Database.hpp" +#include "Analyst.hpp" +//#include "Event.hpp" +//#include "OntologyRepository.hpp" +//#include "IO_Reporter.hpp" +//#include "Input.hpp" +#include "Node.hpp" //For the UserNode + +class Infrastructure { + public: + Scheduler* scheduler_ptr; + OntologyRepository *onto_repository_ptr; + unsigned int agent_id, user_node_id ; //, query_id, response_id; + InputParameters *param_ptr; + IO_Reporter *IO_Reporter_ptr; + + //UserNode* user_node_ptr; + + struct capacity_data + { + unsigned int edge_list; + } provisioned_capacity; + + std::vector list_of_resource_nodes; + std::vector list_of_router_nodes; + std::vector list_of_user_nodes; + //std::map list_of_messages; + //std::map list_of_queries; + //std::map list_of_responses; + + //std::set< Message*> list_of_messages; + + Analyst analyst; + Database *database_ptr; + + Infrastructure(); + //Infrastructure(OntologyRepository &passed_onto_repositiory) {onto_repositiory_ptr = &passed_onto_repositiory;} +#ifdef DEBUG + unsigned int event_id; +#endif + + ~Infrastructure(); + +/* +#ifdef DEBUG_FAULT + void print_list_of_queries(unsigned int start_position); +#endif +*/ + + +}; + + +#endif + diff --git a/Infrastructure.o b/Infrastructure.o new file mode 100755 index 0000000..cee6c07 Binary files /dev/null and b/Infrastructure.o differ diff --git a/Input.cpp b/Input.cpp new file mode 100755 index 0000000..c4d6219 --- /dev/null +++ b/Input.cpp @@ -0,0 +1,111 @@ +#include "ForwardDeclaration.hpp" +//#include "Allheader.hpp" +#include "Input.hpp" + +InputParameters::InputParameters () //constructor + +{ + //Default Simulation Parameters : Should be overwritten if necessary from read_input_parameters() + //Simulation parameters + + network_struct_report_required = 0; + snapshot_reporter_period = 100; + snapshot_reporter_start_time = 0; + oneshot_reporter_time = 1; + + run_for_ticks = 205; + + bootstrap_threashold = 4; + + //Message parameters + message_time_to_live = 5; + query_time_to_live = 10; + + //ResourceNode parameters + ResourceNode_vitality = 10; + ResourceNode_extroversion = 3; + ResourceNode_delay = 1; + ResourceNode_response_timeout = 100; + ResourceNode_max_description = 1; + + ResourceNode_known_routers_floor = 4; + ResourceNode_known_routers_trim_threshold = 7; + ResourceNode_known_routers_capacity = 12; + + ResourceNode_translation_radius = 1; + + //RouterNode parameters + RouterNode_vitality = 20; + RouterNode_extroversion = 1; + RouterNode_delay = 1; + RouterNode_response_timeout = 100; + RouterNode_num_centroid_tags_to_explore_per_period = 2; + RouterNode_num_exploration_queries_to_submit_per_period = 5; + RouterNode_k = 3; + RouterNode_duplicate_message_cache_timeout = 50; + RouterNode_max_description = 9; + + RouterNode_known_routers_floor =4; + RouterNode_known_routers_trim_threshold = 7; + RouterNode_known_routers_capacity = 12; + + RouterNode_routing_table_length_floor = 8 ; + RouterNode_routing_table_length_trim_threshold = 12; + RouterNode_routing_table_min_num_resource_nodes = 4; + RouterNode_routing_table_max_length = 15; + + RouterNode_routing_table_width_floor = 4; + RouterNode_routing_table_width_threshold = 6; + RouterNode_routing_table_max_width = 10; + + UserNode_vitality = 10; + UserNode_extroversion = 3; + UserNode_response_timeout = 50; + UserNode_num_queries_to_submit_per_period = 5; + + + //Birth proxy agent for resource nodes parameters + Birth_ResourceNode_start_time = 20; + Birth_ResourceNode_period = 20; + Birth_ResourceNode_total_num_cycles = 5; + Birth_ResourceNode_num_cycles_per_heartbeat = 5; + + //Birth proxy agent for router node parameters + Birth_RouterNode_start_time = 0; + Birth_RouterNode_period = 30; + Birth_RouterNode_total_num_cycles = 5; + Birth_RouterNode_num_cycles_per_heartbeat = 5; + + //Birth proxy agent for user node + Birth_UserNode_start_time = 100; + Birth_UserNode_period = 100; + + //Ontology generator parameter + num_words = 100; + degree_of_associativity_of_words = 4; + sw_model_probability = 0.02; + + //File names + strcpy(input_onto_file_name,"ontoin"); + strcpy(output_onto_file_name,"ontoout.net"); + strcpy(output_onto_report_file_name,"ontorep"); + strcpy(output_network_file_name,"netout.net"); + strcpy(structural_report_file_name,"netstrucrep"); + strcpy(generation_performance_report_file_name,"gennetperfrep"); + strcpy(operation_performance_report_file_name,"oprnetperfrep"); + strcpy(routing_table_content_report_file_name,"netroutingtable"); + + //Database related + DatabaseHistResolution = 5; + DatabaseMaxHops = 40; + DatabaseHistResolution_for_UserNode = 5; + DatabaseMaxHops_for_UserNode = 40; + + trace_source_node_id =0; + trace_destination_node_id =0; + trace_tag = 0; + + return; +} // close of constructor + + diff --git a/Input.hpp b/Input.hpp new file mode 100755 index 0000000..fc4ed2d --- /dev/null +++ b/Input.hpp @@ -0,0 +1,116 @@ +#ifndef INPUT_HPP +#define INPUT_HPP + +#include + +class InputParameters{ + public: + + //Simulation parameters + + int network_struct_report_required; + + Tick snapshot_reporter_period; + Tick snapshot_reporter_start_time; + Tick oneshot_reporter_time; + + Tick run_for_ticks; + + unsigned int bootstrap_threashold; + + //Message parameters + unsigned int message_time_to_live; + unsigned int query_time_to_live; + + //ResourceNode parameters + unsigned int ResourceNode_vitality; + unsigned int ResourceNode_extroversion; + Tick ResourceNode_delay; + Tick ResourceNode_response_timeout; + unsigned int ResourceNode_max_description; + + int ResourceNode_known_routers_floor; + int ResourceNode_known_routers_trim_threshold; + int ResourceNode_known_routers_capacity; + + int ResourceNode_translation_radius; + + //RouterNode parameters + unsigned int RouterNode_vitality; + unsigned int RouterNode_extroversion; + Tick RouterNode_delay; + Tick RouterNode_response_timeout; + unsigned int RouterNode_num_centroid_tags_to_explore_per_period; + unsigned int RouterNode_num_exploration_queries_to_submit_per_period; + int RouterNode_k; + unsigned int RouterNode_duplicate_message_cache_timeout; + unsigned int RouterNode_max_description; + + int RouterNode_known_routers_floor; + int RouterNode_known_routers_trim_threshold; + int RouterNode_known_routers_capacity; + + int RouterNode_routing_table_length_floor; + int RouterNode_routing_table_length_trim_threshold; + int RouterNode_routing_table_max_length; + + int RouterNode_routing_table_width_floor; + int RouterNode_routing_table_width_threshold; + int RouterNode_routing_table_min_num_resource_nodes; + int RouterNode_routing_table_max_width; + + unsigned int UserNode_vitality; + unsigned int UserNode_extroversion; + Tick UserNode_response_timeout; + unsigned int UserNode_num_queries_to_submit_per_period; + + //Birth proxy agent for resource nodes parameters + Tick Birth_ResourceNode_start_time; + Tick Birth_ResourceNode_period; + unsigned int Birth_ResourceNode_total_num_cycles; + unsigned int Birth_ResourceNode_num_cycles_per_heartbeat; + + //Birth proxy agent for router node parameters + Tick Birth_RouterNode_start_time; + Tick Birth_RouterNode_period; + unsigned int Birth_RouterNode_total_num_cycles; + unsigned int Birth_RouterNode_num_cycles_per_heartbeat; + + Tick Birth_UserNode_start_time; + Tick Birth_UserNode_period; + + //Ontology generator parameter + unsigned int num_words; + unsigned int degree_of_associativity_of_words; + float sw_model_probability; + + //File names + char input_onto_file_name[20]; + char output_onto_file_name[20]; + char output_onto_report_file_name[20]; + char output_network_file_name[20]; + char structural_report_file_name[20]; + char generation_performance_report_file_name[20]; + char operation_performance_report_file_name[20]; + char routing_table_content_report_file_name[20]; + + //added 5/16/07 Night + unsigned int DatabaseHistResolution; + unsigned int DatabaseMaxHops; + + unsigned int DatabaseHistResolution_for_UserNode; + unsigned int DatabaseMaxHops_for_UserNode; + + unsigned int trace_source_node_id; + unsigned int trace_destination_node_id; + Tag trace_tag; + + InputParameters(); + + + }; //close of class + + + +#endif INPUT_HPP + diff --git a/Input.o b/Input.o new file mode 100755 index 0000000..a57ef34 Binary files /dev/null and b/Input.o differ diff --git a/List.hpp b/List.hpp new file mode 100755 index 0000000..1a9681b --- /dev/null +++ b/List.hpp @@ -0,0 +1,419 @@ +#ifndef LIST_HPP +#define LIST_HPP + +#include + +//template class List ; +//template class ElementHolder ; + +//ElementHolder itr; + +///List::iterator itr; + +//ElementHolder::iterator == ElementHolder + +#ifdef DEBUG + #include + #include "Message.hpp" +#endif + + +template +class ElementHolder { + //typedef ElementHolder iterator; + public: + Element *held_content_element_ptr; + ElementHolder *next_holder_ptr; + ElementHolder *prev_holder_ptr; + ElementHolder() { + held_content_element_ptr = NULL; + next_holder_ptr = NULL; + prev_holder_ptr = NULL; + return; + } + + Element& content(); + + ElementHolder* next(){ + + return next_holder_ptr; + }; + //ElementHolder* operator++() { next(); } + + ~ElementHolder() + { + delete held_content_element_ptr; + return; + } + +}; + + +template +inline Element& ElementHolder::content() { + + return (*held_content_element_ptr); + } + + +template +class List { + private: + //Element *curr_element_ptr; + ElementHolder *curr_element_holder_ptr; + //ElementHolder *begin_holder_ptr; + //ElementHolder *end_holder_ptr; + unsigned int _size; + ElementHolder* element_holders; + ElementHolder* last_element_holder_ptr; + public: + List(); + ElementHolder* begin(); + ElementHolder* end(); + //ElementHolder* insert(ElementHolder *insert_position_ptr, Element &element_to_insert); + void insert(ElementHolder *insert_position_ptr, Element &element_to_insert); + ElementHolder* erase(ElementHolder *insert_position_ptr); + //Element & pop(); + //void push(Element& element_to_push); + + bool empty() ; + unsigned int size(); + void clear(); + +#ifdef DEBUG + void print_all_elements(); + void print_element(unsigned int event_id_to_print); + +#endif //for debug only + + ~List() + { + +#ifdef DEBUG + printf("Started cleaning up for List\n"); +#endif + + clear(); + +#ifdef DEBUG + printf("Finished cleaning up for List\n"); +#endif + return; + } +}; + + +/* +template +Element& List::pop() +{ + if (empty()) + { + + for (int i=0; i<1024; i++) + { + insert(begin(), *(new Element)); + } + + } + curr_element_ptr = (begin()).held_content_element_ptr; + element_holders = element_holders->next_holder_ptr; + element_holders->prev_holder_ptr + + return *curr_element_ptr; + +}; + + +template +void List::push(Element& element_to_push) +{ + + insert( begin(), element_to_push); + +}; + +*/ + +template +List::List() { + + curr_element_holder_ptr = NULL; + element_holders = NULL; + last_element_holder_ptr = NULL; + _size =0; + return; +} + +template +void List::clear() { + + while (element_holders != NULL) + { + curr_element_holder_ptr = element_holders->next_holder_ptr; + delete element_holders; + element_holders = curr_element_holder_ptr; + + } + return; +} + + + + +template +inline ElementHolder* List::begin() { + + //return (!_size) ? NULL : element_holders; + return element_holders; +} + + +template +inline ElementHolder* List::end() { + + return NULL; + +} + + + +template +//Complies to the STL semantics, return iterator to the element inserted +//inline ElementHolder* List::insert(ElementHolder *insert_position_ptr, Element &element_to_insert) { +inline void List::insert(ElementHolder *insert_position_ptr, Element &element_to_insert) { + if (_size ==0 ) + { + + //Empty list + element_holders = new ElementHolder; + element_holders->prev_holder_ptr = NULL; + element_holders->next_holder_ptr = NULL; + last_element_holder_ptr = element_holders; + + element_holders->held_content_element_ptr = &element_to_insert; + + //Complies to the STL semantics, return iterator to the element inserted + //curr_element_holder_ptr = element_holders; + + + } else { + + if (insert_position_ptr ==NULL) + { + + //This insertion point is at the end + last_element_holder_ptr->next_holder_ptr = new ElementHolder; + last_element_holder_ptr->next_holder_ptr->prev_holder_ptr = last_element_holder_ptr; + last_element_holder_ptr->next_holder_ptr->next_holder_ptr = NULL; + last_element_holder_ptr = last_element_holder_ptr->next_holder_ptr; + + last_element_holder_ptr->held_content_element_ptr = &element_to_insert; + + //Complies to the STL semantics, return iterator to the element inserted + //curr_element_holder_ptr = last_element_holder_ptr; + + } else { + + //The insertion point is at the middle or front + + curr_element_holder_ptr = insert_position_ptr->prev_holder_ptr; + + insert_position_ptr->prev_holder_ptr = new ElementHolder; + + + if ( curr_element_holder_ptr !=NULL ) + { + //The insert point is at the middle + curr_element_holder_ptr->next_holder_ptr = insert_position_ptr->prev_holder_ptr; + + } else //The insertion point is at front, so update first element pointer + element_holders = insert_position_ptr->prev_holder_ptr; + + + insert_position_ptr->prev_holder_ptr->next_holder_ptr = insert_position_ptr; + insert_position_ptr->prev_holder_ptr->prev_holder_ptr = curr_element_holder_ptr; + + insert_position_ptr->prev_holder_ptr->held_content_element_ptr = &element_to_insert; + + //Complies to the STL semantics, return iterator to the element inserted + //curr_element_holder_ptr = insert_position_ptr->prev_holder_ptr; + + } + } + _size++; + + +#ifdef DEBUG_LIST + print_all_elements(); +#endif + + //Complies to the STL semantics, return iterator to the element inserted + //return curr_element_holder_ptr; + return; +} + + +template +inline ElementHolder* List::erase(ElementHolder *insert_position_ptr) { + + + curr_element_holder_ptr = insert_position_ptr->next_holder_ptr; + + //Case the Event to erase is the first Event + if ( insert_position_ptr->prev_holder_ptr != NULL ) + { +#ifdef DEBUG_LIST + printf("List::erase(), Reached here 1\n"); +#endif + + insert_position_ptr->prev_holder_ptr->next_holder_ptr = insert_position_ptr->next_holder_ptr; + } + else + { +#ifdef DEBUG_LIST + printf("List::erase(), Reached here 2\n"); +#endif + + element_holders = insert_position_ptr->next_holder_ptr; + } + + //Case the Event to erase is the last Event + if ( insert_position_ptr->next_holder_ptr != NULL ) + + { +#ifdef DEBUG_LIST + printf("List::erase(), Reached here 3\n"); +#endif + insert_position_ptr->next_holder_ptr->prev_holder_ptr = insert_position_ptr->prev_holder_ptr; + } + else + { +#ifdef DEBUG_LIST + printf("List::erase(), Reached here 4\n"); +#endif + + last_element_holder_ptr = insert_position_ptr->prev_holder_ptr; + } + + //delete insert_position_ptr->held_content_element_ptr; +#ifdef DEBUG_LIST + printf("List::erase(), Reached here 5\n"); +#endif + + delete insert_position_ptr; + _size--; + +#ifdef DEBUG_LIST + printf("List::erase(), Reached here 6\n"); +#endif + + return curr_element_holder_ptr; + +} + + +template +inline bool List::empty() { + //return (element_holders == NULL)? 1 : 0; + + return (!_size) ? 1 : 0; + +} + +template +inline unsigned int List::size() { +#ifdef DEBUG_LIST + printf("List:: size() called event_id %u, time %u\n", held_content_element_ptr->event_id, held_content_element_ptr->time); +#endif + + return _size; +} + +#ifdef DEBUG + +template +void List::print_all_elements() { + unsigned int j=0; + printf("Starting to print all elements in the schedule of size %u\n", size()); + curr_element_holder_ptr = begin(); + while (curr_element_holder_ptr != end() /*&& j < 50*/) + { + + printf("position %u, event_id %u, time %u, start_time %u \n", j, ((*curr_element_holder_ptr).content()).event_id, + ((*curr_element_holder_ptr).content()).time, ((*curr_element_holder_ptr).content()).start_time ); + + /* + printf("position %u, event_id %u, id %u ,type %d, time %u \n", j, ((*curr_element_holder_ptr).content()).event_id, + ((*curr_element_holder_ptr).content()).node_ptr->id, + ((*curr_element_holder_ptr).content()).node_ptr->node_type, ((*curr_element_holder_ptr).content()).time ); + + printf("Going to touch ((*curr_element_holder_ptr).content()).query_to_handle_ptr \n"); + + if ( ( ((*curr_element_holder_ptr).content()).query_to_handle_ptr == 0) ) + { + printf("((*curr_element_holder_ptr).content()).query_to_handle_ptr ==0\n"); + } + else + { + printf("List::print_all_elements(): position is %u, ", j); + printf(" query_to_handle_ptr->source_node_ptr %u, ", + ((*curr_element_holder_ptr).content()).query_to_handle_ptr->source_node_ptr); + printf(" query_to_handle_ptr->source_node_ptr->id %u\n", + ((*curr_element_holder_ptr).content()).query_to_handle_ptr->source_node_ptr->id); + + if ( ((*curr_element_holder_ptr).content()).query_to_handle_ptr->source_node_ptr->id >1000 ) + { + printf("Problematic QueryHandler found\n"); + printf("position %u, id %u ,type %d, time %u ", j, ((*curr_element_holder_ptr).content()).node_ptr->id, + ((*curr_element_holder_ptr).content()).node_ptr->node_type, ((*curr_element_holder_ptr).content()).time ); + + } + } + */ + + curr_element_holder_ptr = curr_element_holder_ptr->next(); + j++; + } + printf("Printing all elements of schedule is over\n"); + return; +} + + + +template +void List::print_element(unsigned int event_id_to_print) { + unsigned int j=0; + printf("Starting to print event_id %u from event schedule size %u\n", event_id_to_print, size()); + curr_element_holder_ptr = begin(); + while (curr_element_holder_ptr != end() /*&& j < 50*/) + { + if ( ((*curr_element_holder_ptr).content()).event_id == event_id_to_print) + { + + + printf("event_id %u, position %u, id %u ,type %d, time %u, query_to_handle_ptr->source_node_id %u \n", ((*curr_element_holder_ptr).content()).event_id, j, + ((*curr_element_holder_ptr).content()).node_ptr->id, + ((*curr_element_holder_ptr).content()).node_ptr->node_type, ((*curr_element_holder_ptr).content()).time, + ((*curr_element_holder_ptr).content()).query_to_handle_ptr->source_node_id ); + } + + curr_element_holder_ptr = curr_element_holder_ptr->next(); + j++; + } + printf("Printing event_id %u of schedule is over\n", event_id_to_print); + return; +} + + + + + +#endif //for debug only + + + +#endif //for entire hpp file + +/*( typeid( ((*curr_element_holder_ptr).content()).handler->fpt) == typeid(&QueryHandler::handler_for_response_to_sender) ) && */ + diff --git a/Listener.cpp b/Listener.cpp new file mode 100755 index 0000000..c010301 --- /dev/null +++ b/Listener.cpp @@ -0,0 +1,168 @@ +#include "ForwardDeclaration.hpp" +//#include "Allheader.hpp" +#include "Listener.hpp" +#include "Message.hpp" +#include "Node.hpp" +#include "Infrastructure.hpp" +#include "OntologyRepository.hpp" +#include "Input.hpp" + +Listener::Listener(ResourceNode *passed_parent_node_ptr , unsigned int passed_query_seq_num ) + { + query_seq_num = passed_query_seq_num; + parent_node_ptr = passed_parent_node_ptr; + //expired =0; + return; + }; + + +Listener::~Listener() + { + //unsigned int num_elements_to_clear; + + //std::list::iterator responses_itr; + responses_itr = responses.begin(); + for (unsigned int num_elements_to_clear = responses.size(); + num_elements_to_clear >0 ; + num_elements_to_clear--,responses_itr++ ) + { + //sm24, Amit - Aug 25, Do book keeping before deleting the response + //parent_node_ptr->If_ptr->list_of_responses.erase((*responses_itr)->id); + + delete *responses_itr; + } + responses.clear(); + //Removes itself from the parent nodes listener array + parent_node_ptr->listener_array.erase( query_seq_num);//?? This is not a good idea as trouble during destruction of resource node + return; + }; + + +void Listener::recv(Response &recvd_response) + { + responses.push_back(&recvd_response); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + + if (parent_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + recvd_response.source_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_destination_node_id && + (*(recvd_response.description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + { + printf("Reached here 1\n"); + + printf("Ticks:%u : node %u,type %d, : Noted a response from node %u, type %d, for tag %u and query_seq_num %u\n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), + parent_node_ptr->id, parent_node_ptr->node_type, + //recvd_response.source_node_ptr->node_type, (*(recvd_response.description.begin())).first, + recvd_response.source_node_ptr->id, recvd_response.source_node_ptr->node_type, + (*(recvd_response.description.begin())), recvd_response.query_seq_num); + //printf("Total response received so far at listner id %u is %u, the expiry status is %d\n", id, responses.size(), expired); + printf("Ticks:%u : node %u,type %d : Total response received so far at listner id %u is %u\n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), + parent_node_ptr->id, parent_node_ptr->node_type, + id, responses.size() ); + } +#endif + return; + }; + + +void Listener::handle_recvd_responses() { + + responses_itr = responses.begin(); + + for (int i = responses.size() ; + i>0 ;i--, responses_itr++ ) + { + //curr_response_ptr = responses.front(); +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + + if (parent_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + (*responses_itr)->source_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_destination_node_id && + (*((*responses_itr)->description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : node %u,type %d : Processing total %u responses at listener id %u for Tag %u, received responses from %u \n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), parent_node_ptr->id, + parent_node_ptr->node_type,responses.size(), id, (*((*responses_itr)->description.begin())) , + (*responses_itr)->source_node_ptr->id); + + +#endif + + + + parent_node_ptr->handle_recvd_response(*responses_itr); + + //parent_node_ptr->If_ptr->list_of_messages.erase(curr_response_ptr->id); + //sm24 + //parent_node_ptr->If_ptr->list_of_responses.erase(curr_response_ptr->id); + + delete *responses_itr; + //parent_node_ptr->If_ptr->list_of_messages.erase(curr_response_ptr); + //responses.pop_front(); //This also deletes the response + + + }//End of for loop + + responses.clear(); + + //expired = 1; + + return; +}; + + + + +/* +void Listener::handle_recvd_responses() { + + + while(!responses.empty()) + { + curr_response_ptr = responses.front(); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + + if (parent_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : node %u,type %d : Processing total %u responses at listener id %u for Tag %u, received responses from %u \n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), parent_node_ptr->id, + parent_node_ptr->node_type,responses.size(), id, (*(curr_response_ptr->description.begin())) , + curr_response_ptr->source_node_ptr->id); + + +#endif + + + + parent_node_ptr->handle_recvd_response(curr_response_ptr); + + //parent_node_ptr->If_ptr->list_of_messages.erase(curr_response_ptr->id); + //sm24 + //parent_node_ptr->If_ptr->list_of_responses.erase(curr_response_ptr->id); + + delete curr_response_ptr; + //parent_node_ptr->If_ptr->list_of_messages.erase(curr_response_ptr); + //responses.pop_front(); //This also deletes the response + + + }//End of while loop + + //expired = 1; + + return; +}; +*/ diff --git a/Listener.hpp b/Listener.hpp new file mode 100755 index 0000000..b78c2f0 --- /dev/null +++ b/Listener.hpp @@ -0,0 +1,35 @@ +#ifndef LISTENER_HPP +#define LISTENER_HPP + + +//class Listener:public Handler { +class Listener { + //Response *curr_response_ptr; + + //RouterNode *router_node_ptr; //Is this required ? + + unsigned int query_seq_num; + + public: + +#ifdef DEBUG + unsigned int id; //For troubleshooting +#endif + + + ResourceNode *parent_node_ptr; //Update this + //int expired; + std::list responses; + std::list::iterator responses_itr; + Listener(ResourceNode *passed_parent_node_ptr , unsigned int passed_query_seq_num ); + void recv(Response &recvd_response); + void handle_recvd_responses(); + + ~Listener(); + +}; + + + +#endif + diff --git a/Listener.o b/Listener.o new file mode 100755 index 0000000..f34e557 Binary files /dev/null and b/Listener.o differ diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..0e14155 --- /dev/null +++ b/Makefile @@ -0,0 +1,43 @@ +CC=g++34 +#CFLAGS= -c -w -O2 -DDUPPACK_SET +#CFLAGS= -c -w -O2 -DDEBUG -DSET -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DSET -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DSET -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DDUPPACK_SET -DSELECTIVE_PACKET_FILTER -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DDUPPACK_CACHE -DSELECTIVE_PACKET_FILTER -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DDETECT_LOOP -DSELECTIVE_PACKET_FILTER -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DSELECTIVE_PACKET_FILTER -g +CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DDUPPACK_CACHE -DDETECT_LOOP -DSELECTIVE_PACKET_FILTER -g +#CFLAGS= -c -w -O2 -DDUPPACK_CACHE -DDETECT_LOOP -g +#CFLAGS= -c -w -O2 -DDEBUG -DDEBUG_L1 -DDEBUG_L2 -DDUPPACK_SET -DSELECTIVE_PACKET_FILTER -DDEBUG_FAULT2 -g + + + +OBJS = $(SRCS:.cpp=.o) +#SRCS = OntologyRepository.cpp Database.cpp Event.cpp Infrastructure.cpp Analyst.cpp Node.cpp Listener.cpp IO_Reporter.cpp Input.cpp Scheduler.cpp simulation.cpp + +SRCS = OntologyRepository.cpp Database.cpp Event.cpp Infrastructure.cpp Analyst.cpp Node.cpp Listener.cpp IO_Reporter.cpp Input.cpp Scheduler.cpp simulation.cpp +EXECUTABLE = simulation + +all: $(SRCS) $(EXECUTABLE) +# $(CC) ${OBJS} -o $(EXECUTABLE) + + +$(EXECUTABLE) : $(OBJS) + $(CC) ${OBJS} -o $@ + + +.cpp.o: + $(CC) $(CFLAGS) $< -o $@ + +#${OBJS} + + + +#simulation_test.o: simulation_test.cpp +# $(CC) $(CFLAGS) simulation.cpp > error1.txt + + +clean: + rm -rf *.o $(EXECUTABLE) + diff --git a/Message.cpp b/Message.cpp new file mode 100755 index 0000000..a0ad123 --- /dev/null +++ b/Message.cpp @@ -0,0 +1,35 @@ +#include "ForwardDeclaration.hpp" +//#include "Allheader.hpp" + +#include "Message.hpp" + +//All methods are taken to hpp file for inlining + + /* +//Message::Message(unsigned int passed_id){ +Message::Message(){ + + //id = passed_id; + source_node_id =0; + source_node_ptr = NULL; + + destination_node_id = 0; + destination_node_ptr = NULL; + + query_seq_num = 0; + + hop_count = 0; + time_to_live = 0; + type = BLANK_MESSAGE; + only_to_node_type = TO_RESOURCE_NODE | TO_ROUTER_NODE; + return; +}; + +Response::Response(){type = RESPONSE;return;}; +Query::Query(){type = QUERY; return;}; +Feedback::Feedback(){type = FEEDBACK; return;}; +*/ +//Response::Response(unsigned int passed_id):Message(passed_id) {type = RESPONSE;return;}; +//Query::Query(unsigned int passed_id):Message(passed_id){type = QUERY; return;}; +//Feedback::Feedback(unsigned int passed_id):Message(passed_id){type = FEEDBACK; return;}; + diff --git a/Message.hpp b/Message.hpp new file mode 100755 index 0000000..697d3b7 --- /dev/null +++ b/Message.hpp @@ -0,0 +1,89 @@ +#ifndef MESSAGE_HPP +#define MESSAGE_HPP + +#define NODE_VISTED_LIST_SIZE 64 +#define NODE_VISTED_LIST_BYTES 256 //64 *4 =256 + + +//#include "ForwardDeclaration.hpp" + +class Message { + public: + //unsigned int id; + unsigned int source_node_id; + ResourceNode* source_node_ptr; + + unsigned int destination_node_id; + ResourceNode* destination_node_ptr; + int only_to_node_type; + unsigned int query_seq_num; + Description description; + unsigned int hop_count; + unsigned int time_to_live; + enum MessageType type; + + +#ifdef DETECT_LOOP + unsigned int node_visited[NODE_VISTED_LIST_SIZE]; + //node_visted has 63 entries and one length of list field, node_visted[0] is the length of the list, as the TTL is small so we just take 63 to be conservative enough. +#endif + + + //Message(); + //Message(unsigned int passed_id); + Message::Message(){ + + //id = passed_id; + source_node_id =0; + source_node_ptr = NULL; + + destination_node_id = 0; + destination_node_ptr = NULL; + + query_seq_num = 0; + + hop_count = 0; + time_to_live = 0; + type = BLANK_MESSAGE; + only_to_node_type = TO_RESOURCE_NODE | TO_ROUTER_NODE; + +#ifdef DETECT_LOOP + memset( node_visited,0,NODE_VISTED_LIST_BYTES);//Set the list to zero, because 64 * sizeof(unsigned int) = 256 +#endif + + return; + }; + + virtual ~Message(){}; +}; + +class Response:public Message { + public: + //Response(); + //Response(unsigned int passed_id); + Response::Response(){type = RESPONSE;return;}; + +}; + +class Query:public Message { + public: + //int only_to_node_type;//Changed to bit flag type and pushed into base class + //Query(); + //Query(unsigned int passed_id); + Query::Query(){type = QUERY; return;}; + + +}; + +class Feedback:public Message { + public: + //int only_to_node_type;//Changed to bit flag type and pushed into base class + //Feedback(); + //Feedback(unsigned int passed_id); + Feedback::Feedback(){type = FEEDBACK; return;}; + +}; + + +#endif + diff --git a/Message.o b/Message.o new file mode 100755 index 0000000..66309fb Binary files /dev/null and b/Message.o differ diff --git a/Node.cpp b/Node.cpp new file mode 100755 index 0000000..a6706c6 --- /dev/null +++ b/Node.cpp @@ -0,0 +1,2972 @@ +#include +#include //For merge +#include +#include +#include + + +//#include "Allheader.hpp" + +#include "ForwardDeclaration.hpp" +#include "Node.hpp" +#include "Infrastructure.hpp" +#include "Listener.hpp" +#include "Message.hpp" +#include "Functor.hpp" +#include "OntologyRepository.hpp" +#include "Scheduler.hpp" +#include "Input.hpp" +#include "Database.hpp" + + +//*************These are for trimming routing table and known routers list ********************* + +KnownRouterIndexElement::KnownRouterIndexElement(RouterNode *passed_RouterNode_ptr ): RouterNode_ptr(passed_RouterNode_ptr), + id(passed_RouterNode_ptr->id), birth_ticks( passed_RouterNode_ptr->If_ptr->scheduler_ptr->now() ) {}; + + +inline void ResourceNode::trim_known_routers(){ + //KnownRoutersIndex::iterator &known_routers_index_itr = *known_routers_index_itr_ptr; + KnownRoutersIndexIterator known_routers_index_itr, known_routers_index_begin; + known_routers_index_itr = known_routers_index_begin = (*known_routers_index_ptr).index.begin(); + //Locate the range + for (int fi = (*known_routers_index_ptr).size(); fi > known_routers_floor ;fi--, known_routers_index_itr++ ) + { + known_routers.erase((*known_routers_index_itr)->id); + delete (*known_routers_index_itr); + } + (*known_routers_index_ptr).erase( known_routers_index_begin, known_routers_index_itr ); + + return; +}; + +//New +inline void RouterNode::trim_routing_table_length(){ + + //routing_table_itr = routing_table.begin(); //*(routing_table[tag]) + routing_table_index_itr = routing_table_index.begin(); + //Locate the range + for (int fi = routing_table_index.size(); fi > routing_table_length_floor ;fi--, routing_table_index_itr++ ) + { + delete (*(routing_table.find(*routing_table_index_itr))).second; + routing_table.erase( *routing_table_index_itr ); + + //Remove from knowlede vector also + /* + knowledge_itr = knowledge.begin(); + for (int fj= knowledge.size();fj >0 && *knowledge_itr != *routing_table_index_itr ;fj--,knowledge_itr++ ){}; + knowledge.erase( knowledge_itr ); + */ + + knowledge.erase(remove(knowledge.begin(), knowledge.end(), *routing_table_index_itr), knowledge.end()); + + } + routing_table_index.erase( routing_table_index.begin(), routing_table_index_itr ); + + return; + +}; + + +inline void RouterNode::trim_routing_table_specific_width(RoutingTableRow * row_to_trim_ptr){ + + + Destinations &destinations_to_trim = row_to_trim_ptr->destinations; +/* + printf("Ticks %u: Node %u: RouterNode::trim_routing_table_specific_width(), size before trimming is %d, routing_table_width_floor is %d, routing_table_min_num_resource_nodes is %d, num of res is %d\n", + If_ptr->scheduler_ptr->now(), id, destinations_to_trim.size(),routing_table_width_floor, routing_table_min_num_resource_nodes, row_to_trim_ptr->num_resource_nodes ); + + print_destinations(destinations_to_trim); +*/ + + routing_table_entry_itr = destinations_to_trim.begin(); //*(routing_table[tag]) + //routing_table_entry_to_remove_itr = routing_table_entry_itr; + //Locate the range + + for (int fi = destinations_to_trim.size(); + fi > routing_table_width_floor && routing_table_entry_itr != destinations_to_trim.end() ; + routing_table_entry_itr++ ) + { + //printf(" %u(%u) ", (*routing_table_entry_itr)->id, (*routing_table_entry_itr)->node_type ); + if ( ((*routing_table_entry_itr)->node_type == ROUTER_NODE ) || + row_to_trim_ptr->num_resource_nodes > routing_table_min_num_resource_nodes ) + { + //printf(" -erased "); + + destinations_to_trim.erase( routing_table_entry_itr ); + + if ((*routing_table_entry_itr)->node_type == RESOURCE_NODE) row_to_trim_ptr->num_resource_nodes--; + + fi--; + routing_table_entry_itr = destinations_to_trim.begin();//routing_table_entry_itr; + } + + //printf(", "); + + }; + + //printf("\n"); + + //printf("Ticks %u: Node %u: RouterNode::trim_routing_table_specific_width(), size after trimming is %d, num of res is %d\n", If_ptr->scheduler_ptr->now(), id, destinations_to_trim.size(), row_to_trim_ptr->num_resource_nodes ); + //print_destinations(destinations_to_trim); + + return; +}; + + + +inline void RouterNode::trim_routing_table_all_widths(){ + + //for_each(routing_table.begin(), routing_table.end(), RouterNode::trim_routing_table_specific_col); + routing_table_itr = routing_table.begin(); + + for (int fi = routing_table.size();fi >0 ;fi--, routing_table_itr++ ) + { + if ( (*routing_table_itr).second->destinations.size() > routing_table_width_threshold ) + { + trim_routing_table_specific_width( (*routing_table_itr).second ); + } + } + + return; +}; + + +//*************Above these are for trimming routing table and known routers list ********************* + + + + + + + + + +inline +QueryHandler::QueryHandler() +{ + /*expired =0;*/ + response_to_send_ptr = NULL; + query_to_send_ptr = NULL; + return; +}; + +/* +#ifdef DEBUG +inline +QueryHandler::QueryHandler(Infrastructure *passed_If_ptr) +{ + If_ptr = passed_If_ptr; + response_to_send_ptr = NULL; + query_to_send_ptr = NULL; + return; +}; +#endif +*/ + +/* + +QueryHandler::~QueryHandler() +{ + if (response_to_send_ptr) delete response_to_send_ptr; + else delete query_to_send_ptr; + //if (query_to_send_ptr) delete query_to_send_ptr; + return; +}; +*/ + +inline +void QueryHandler::transmit_response() +{ + //Send response +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( response_to_send_ptr->destination_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + parent_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_destination_node_id && + (*(response_to_send_ptr->description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u, type %d: submitting response with query seq num %u, to node %u, type %d to node %u, type %d\n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), parent_node_ptr->id, parent_node_ptr->node_type, + response_to_send_ptr->query_seq_num, response_to_send_ptr->destination_node_ptr->id , response_to_send_ptr->destination_node_ptr->node_type, + response_to_send_ptr->destination_node_ptr->id, response_to_send_ptr->destination_node_ptr->node_type ); +#endif + response_to_send_ptr->destination_node_ptr->submit_response( *response_to_send_ptr ); + //expired = 1; + return; +}; + +inline +void QueryHandler::transmit_query() +{ + +#ifdef DEBUG_L2 + + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_send_ptr->source_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + (*(query_to_send_ptr->description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u, type %d forwarding query with query_seq num %u, source node %u, type %d, with tag %u to node %u, type %d\n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), parent_node_ptr->id, parent_node_ptr->node_type, + query_to_send_ptr->query_seq_num, query_to_send_ptr->source_node_ptr->id , query_to_send_ptr->source_node_ptr->node_type, + (*(query_to_send_ptr->description.begin())), + query_to_send_ptr->destination_node_ptr->id, query_to_send_ptr->destination_node_ptr->node_type ); +#endif + + query_to_send_ptr->destination_node_ptr->submit_query( *query_to_send_ptr ); + //expired = 1; + return; +}; + + + + + + + +Node::Node(Infrastructure* passed_If_ptr) +{ + If_ptr = passed_If_ptr; + node_type = PRIMARY_NODE; + return; +}; + + +ResourceNode::ResourceNode( unsigned int passed_message_time_to_live, + + NodeType passed_node_type_to_pass_on, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr) : Node(passed_If_ptr) + { + node_type = passed_node_type_to_pass_on; + translation_radius = passed_translation_radius; + + //For trimming + known_routers_floor = passed_known_routers_floor; + known_routers_trim_threshold = passed_known_routers_trim_threshold; + known_routers_capacity = passed_known_routers_capacity; + this_ptr = this; + known_routers_index_ptr = new KnownRoutersIndexEncapsulator(this); + + num_queries_to_submit_per_period = passed_num_queries_to_submit_per_period; + message_time_to_live = passed_message_time_to_live; + id = passed_id; + vitality = passed_vitality; + extroversion = passed_extroversion; + delay = passed_delay; + current_query_sequence_id = 0; + response_timeout = passed_response_timeout; + + description = passed_description; + bootstrap_nodes = passed_bootstrap_nodes; + + current_query_sequence_id =0; + /*Push it in resource node list for time being, will check and remove later in router node constructor if needed*/ + + If_ptr->list_of_resource_nodes.push_back(this); + +#ifdef DEBUG + listener_seq_id = 0; +#endif + + +#ifdef DEBUG + printf("Ticks:%u : Node %u : Node being created...\n", + If_ptr->scheduler_ptr->now(), id ); +#endif + +#ifdef DEBUG_NODE + + printf(" passed_message_time_to_live %u, passed_routing_table_capacity %u, passed_k %d, \n \ + passed_id %u, passed_vitality %d, passed_extroversion %d, passed_response_timeout %u, \n ", + + passed_message_time_to_live, passed_routing_table_capacity, passed_k, + passed_id, passed_vitality, passed_extroversion, passed_response_timeout ); + +#endif + + begin_life(/*bootstrap_nodes*/); + return; + }; + + ResourceNode::~ResourceNode() + { + cleanup(); + } + +inline void ResourceNode::cleanup(){ + +#ifdef DEBUG_NODE + printf("Resource node id %u getting deleted\n", /*(*bootstrap_nodes_itr)->id, */ id); +#endif + + description.clear(); + bootstrap_nodes.clear(); + + /*for (num_elements = query_bag_for_advertising.size(),query_itr = query_bag_for_advertising.begin(); + num_elements >0 ; + num_elements--,query_itr++ )*/ + query_itr = query_bag_for_advertising.begin(); + for (int fi = query_bag_for_advertising.size(); + fi >0 ; + fi--,query_itr++ ) + { + //sm24 + //If_ptr->list_of_queries.erase((*query_itr)->id); + delete (*query_itr); + } + query_bag_for_advertising.clear(); //Requires cleaning of Queries + +#ifdef DEBUG_NODE + printf("~ResourceNode(): Reached here, cleaning Listneners...\n"); +#endif + + /*for (num_elements = listener_array.size(),listener_itr = listener_array.begin(); + num_elements >0 ; + num_elements--,listener_itr++ )*/ + listener_itr = listener_array.begin(); + for (int fi = listener_array.size(); + fi >0 ; + fi--,listener_itr++ ) + delete (*listener_itr).second; + + listener_array.clear();// Requires cleaning of Listener pointers + + known_routers.clear(); + //query_handler_array.clear(); + +#ifdef DEBUG_NODE + printf("Finished cleaning up for Router node %u \n", id); +#endif + return; + } + + RouterNode::~RouterNode() + { +#ifdef DEBUG_NODE + printf("Router node id %u getting deleted\n", id); +#endif + + /*for (num_elements = query_bag_for_exploring.size(),query_itr = query_bag_for_exploring.begin(); + num_elements >0 ; + num_elements--,query_itr++ )*/ + query_itr = query_bag_for_exploring.begin(); + for (int fi = query_bag_for_exploring.size(); + fi >0 ; + fi--,query_itr++ ) + { + //If_ptr->list_of_queries.erase((*query_itr)->id); + delete (*query_itr); + } + query_bag_for_exploring.clear(); //Requires cleaning of Queries + + nearest_k.clear(); + knowledge.clear(); + resources_attached.clear(); + routers_attached.clear(); + descriptions_to_explore.clear(); + + RoutingTableIterator routing_table_itr = routing_table.begin(); + //while (routing_table_itr != routing_table.end()) + for(int fi=routing_table.size();fi>0;fi--) + { + ((*routing_table_itr).second)->destinations.clear(); + routing_table_itr++; + } + + routing_table.clear(); + +#ifdef DUPPACK_SET + query_already_received_set.clear(); +#endif + +#ifdef DUPPACK_CACHE + message_key_cache.clear(); +#endif +#ifdef DEBUG_NODE + printf("Finished cleaning up for Router node %u \n", id); +#endif + cleanup(); + + return; + } + +inline void ResourceNode::begin_life(/*BootstrapNodeList &bootstrap_nodes*/) { + /*typedef std::list< RouterNode * > BootstrapNodeList;*/ + + + bootstrap_action(); + + //To do, Schedule itself + //Create an event + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; +#endif + + //Create a functor, assign the object and its handling method corresponding to the event + /*SpecificFunctor(TClass* _pt2Object, void(TClass::*_fpt)()); */ + SpecificFunctor *functor_resource_node_ptr = + new SpecificFunctor( this, &ResourceNode::heartbeat ); + + handler_schedule_event_ptr->handler= functor_resource_node_ptr; + //Setup the periodicty + handler_schedule_event_ptr->time = vitality; + //Schedule the periodic event + If_ptr->scheduler_ptr->schedule_periodic( handler_schedule_event_ptr); + + return; + +}; + + +inline void ResourceNode::bootstrap_action(){ + + BootstrapNodeList::iterator bootstrap_nodes_itr = bootstrap_nodes.begin(); + //For each bootstrap node + //while (bootstrap_nodes_itr != bootstrap_nodes.end()) + for(int fi= bootstrap_nodes.size();fi>0;fi--) + { + + //router_node_to_attach_to_ptr = dynamic_cast(*bootstrap_nodes_itr); + router_node_to_attach_to_ptr = *bootstrap_nodes_itr; + +#ifdef DEBUG_NODE + printf("Inserting router node %u, type %u to known list of %u \n", router_node_to_attach_to_ptr->id, + router_node_to_attach_to_ptr->node_type, id); +#endif + + //Mark this as known anyway + known_routers.insert( + make_pair( (*router_node_to_attach_to_ptr).id , router_node_to_attach_to_ptr ) + ); +#ifdef DEBUG_L1 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + router_node_to_attach_to_ptr->id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("Ticks:%u : Node %u requesting router node %u to attach it \n", + If_ptr->scheduler_ptr->now(),id, router_node_to_attach_to_ptr->id ); +#endif + + if (! (*router_node_to_attach_to_ptr).attach_request(this)) + std::cout << "Node : "<< id << "failed to bootstrap with routernode : "<< + (*router_node_to_attach_to_ptr).id < known_routers; */ + { + +#ifdef DEBUG_NODE + printf("Bootstraping to router node : %u succeeded \n", router_node_to_attach_to_ptr->id); +#endif + } + + bootstrap_nodes_itr++; + + } + +#ifdef DEBUG + printf("Ticks:%u : Node %u: The routers known to this node are : ",If_ptr->scheduler_ptr->now(),id ); + print_map_known_routers( known_routers ); +#endif + + + //Update the query bag for self advertising purpose + update_query_bag(description, query_bag_for_advertising ); + + +#ifdef DEBUG_NODE + printf("Ticks:%u : Node %u, node type : %d : finished updating query bag\n", + If_ptr->scheduler_ptr->now(),id, node_type); +#endif + + +} + + +inline +void ResourceNode::heartbeat() { + +#ifdef DEBUG_NODE + printf("Ticks:%u : Node %u, node type %d : ResourceNode::heartbeat()... \n", + If_ptr->scheduler_ptr->now(),id, node_type); +#endif + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + { + printf("Ticks:%u : Node %u: ResourceNode::heartbeat()......\n", If_ptr->scheduler_ptr->now(),id ); + } +#endif + + periodic_housekeeping(); + + //Advertise itself + seek_new_routers_to_attach_to(); + + +#ifdef DEBUG_NODE + + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + print_listener_status(); +#endif + +#ifdef DEBUG_NODE + printf("ResourceNode::heartbeat(): Node heartbeat of node id %u, node type : %d, finished seeking routers to attach\n", id, node_type); +#endif + return; +}; + +//Known router trimming +inline +void ResourceNode::periodic_housekeeping(){ + + if (known_routers.size() > known_routers_capacity) trim_known_routers(); + +}; + + + + +inline +void RouterNode::heartbeat() { + + //print_routing_table(); + +#ifdef DEBUG_NODE + printf("RouterNode::heartbeat(): Node heartbeat of node id %u, node type : %d \n", id, node_type); +#endif + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + { + printf("Ticks:%u : Node %u: RouterNode::heartbeat()......\n", If_ptr->scheduler_ptr->now(),id ); + } +#endif + + periodic_housekeeping(); + + //Advertise itself + seek_new_routers_to_attach_to(); + +#ifdef DEBUG_NODE + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + print_listener_status(); +#endif + + //Try to update its routing table (brought in from the RouterNode() ) + + /* + //Update router's resources that will be used to update the routing table, removed from RouterNode() + update_descriptions_to_explore(); + update_query_bag(descriptions_to_explore, query_bag_for_exploring); + + curr_query_bag_for_exploring_itr = query_bag_for_exploring.begin(); + + //Try to update its routing table + seek_new_resources_to_update_routing_table(); + + */ + + //Update router's resources that will be used to update the routing table + update_descriptions_to_explore(); + + /*Update the query bag for only those tags for which queries can be send (withing budget), + insert at the end of the list, then if budget is left out, send queries from the front of the list + based on the given list itr, the list itr needs to be updated based on the index + */ + + seek_new_resources_to_update_routing_table(); + + +#ifdef DEBUG_NODE + printf("RouterNode::heartbeat(): Node heartbeat of node id %u, node type : %d, finished seeking routers to attach\n", id, node_type); +#endif + return; +}; + + +inline void ResourceNode::seek_new_routers_to_attach_to() { + + /* Insert itself to its own known_routers list, this will ensure that the router sends queries + to all the other router nodes it knows through its routing table, in addition to its known_router list + this also requires that the rouuter should not respond to itself !! Fix that also in RouterNode::submit_query method*/ + //If itself is not inserted then insert itself, i.e. first time + if ( (node_type == ROUTER_NODE) && ( known_routers.find( id ) == known_routers.end() ) ) + { + + router_node_to_attach_to_ptr = dynamic_cast(this); + + // std::map< unsigned int, RouterNode *> known_routers; + known_routers.insert( + //make_pair( id , *(&router_node_to_attach_to_ptr) ) + make_pair( id , router_node_to_attach_to_ptr ) + ); + } + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + + { + + printf("Ticks:%u : Node %u: The routers attached to this node are : ", If_ptr->scheduler_ptr->now(),id ); + print_map_known_routers( known_routers ); + printf("Ticks:%u : Node %u: Advertising phase: Seeking new routers, sending %u queries, other routers should start receiving them...\n", + If_ptr->scheduler_ptr->now(),id , query_bag_for_advertising.size() ); + } +#endif + + query_itr = query_bag_for_advertising.begin(); + + send_queries_from(query_bag_for_advertising, query_itr, query_bag_for_advertising.size()); + + return; +} + + + + +inline void ResourceNode::send_queries_from(std::list &query_bag, std::list::iterator & curr_query_bag_itr , int num_queries_to_send) { + + + //For each query + //query_itr = query_bag.begin(); + //while ( query_itr != query_bag.end() ) + //for (num_elements = 0 ; num_elements < num_queries_to_send;num_elements++ ) + for(int fi=0;fiparam_ptr->trace_source_node_id && + (*((*curr_query_bag_itr)->description.begin())) == If_ptr->param_ptr->trace_tag ) + +#ifdef ALL_USERNODE_PACKETS + || ( node_type == USER_NODE ) +#endif + ) + +#endif + + printf("Ticks:%u : Node id %u, node type : %d : allocating a listener with id %u, for tag %u, query seq num to use is %u, scheduling its time out, the event_id is %u\n", + If_ptr->scheduler_ptr->now(),id, node_type, listener_seq_id, (*((*curr_query_bag_itr)->description.begin())), + current_query_sequence_id, If_ptr->event_id ); +#endif + + //Setup a dedicated listener for this query + listener_ptr = new Listener(this, current_query_sequence_id); + +#ifdef DEBUG + listener_ptr->id = listener_seq_id; //For troubleshooting + listener_seq_id++; +#endif + + + //Insert Listener in the array + //current_query_sequence_id_ptr = new int; + //*current_query_sequence_id_ptr = current_query_sequence_id; + //listener_array.insert( make_pair(*current_query_sequence_id_ptr, listener_ptr) ); + //The line below replaces the three lines above, this cut downs memory leakage due to (new int) + listener_array.insert( make_pair(current_query_sequence_id, listener_ptr) ); + + //Schedule the time out for this listener; + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; + //handler_schedule_event_ptr->message_to_handle_ptr = 0; + +#endif + + /*SpecificFunctor(TClass* _pt2Object, void(TClass::*_fpt)());*/ + functor_listener_ptr = new SpecificFunctor( listener_ptr, + &Listener::handle_recvd_responses ); + + handler_schedule_event_ptr->handler= functor_listener_ptr; + handler_schedule_event_ptr->time = response_timeout + If_ptr->scheduler_ptr->now(); + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); + + //Identify a router from the aquinstance list, submit a query to it + router_node_address_itr = known_routers.begin(); + //while (router_node_address_itr != known_routers.end()) + for(int fi=known_routers.size();fi>0;fi--) + { + //Make a new Query + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + //If_ptr->query_id++; + If_ptr->database_ptr->Num_total_queries_generated++; + //SM: ADD PROBE - new message generated by router--node : update total message generation + //Suneil Jul-1 + + switch (node_type) + { + case RESOURCE_NODE: + If_ptr->database_ptr->Queries_sent_from_ResourceNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->Num_of_queries_for_specific_tag[*( (*curr_query_bag_itr)->description.begin() )]++; + break; + case ROUTER_NODE: + If_ptr->database_ptr->Queries_sent_from_RouterNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->Num_of_queries_for_specific_tag[*( (*curr_query_bag_itr)->description.begin() )]++; + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Queries_sent_from_UserNode++; + If_ptr->database_ptr->Num_total_message_generated_for_UserNode++; + If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[*( (*curr_query_bag_itr)->description.begin() )]++; + + + } + + //*query_ptr = *(*query_itr); + *query_ptr = *(*curr_query_bag_itr); //This is where the problem lies + + //(*query_ptr).id = If_ptr->query_id - 1; // This solves the previous problem, that id was rewritten when the whole query obj was copied + + query_ptr->query_seq_num = current_query_sequence_id; + + query_ptr->destination_node_ptr = (*router_node_address_itr).second; + //query_ptr->destination_node_id = query_ptr->destination_node_ptr->id; + query_ptr->destination_node_id = (*router_node_address_itr).first; //Reduces memory dereferencing and cache hit + + + /* std::map< unsigned int, RouterNode *> known_routers;*/ +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id) + && (*((*query_ptr).description.begin())) == If_ptr->param_ptr->trace_tag +#ifdef ALL_USERNODE_PACKETS + /*|| ( node_type == USER_NODE ) */ +#endif + + ) + +#endif + { + + printf("Ticks:%u : Node %u: Sending query to router id %u, query_seq_num as %u, filter %u, with description tags :", + If_ptr->scheduler_ptr->now(),id ,(*(*router_node_address_itr).second).id, query_ptr->query_seq_num, query_ptr->only_to_node_type ); + print_map_description( (*curr_query_bag_itr)->description ); + } +#endif + + query_ptr->destination_node_ptr->submit_query(*query_ptr); + + router_node_address_itr++; + }//end of loop for routers + + //query_itr++; + curr_query_bag_itr++; + current_query_sequence_id++; + + }//end of loop for queries + + + return; +} + + + +inline void RouterNode::update_descriptions_to_explore() { + + /* + For each description item (tag), get all the tags from ontology repository within "extroversion" hops + from the given description item, then load these descriptions in the "descriptions_to_explore" + */ + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("Ticks:%u : Node %u: Exploration phase ...\n", If_ptr->scheduler_ptr->now(),id ); + +#endif + + + /*for (num_elements = num_centroid_tags_to_explore_per_period; + num_elements > 0 ; + num_elements--,description_budget_itr++ )*/ + for (int fi= num_centroid_tags_to_explore_per_period; + fi > 0 ; + fi--,description_budget_itr++ ) + { + //If all description centroid topics are scanned once, then increment the radius and start scanning again + if (description_budget_itr == description.end()) + { + semantic_space_inner_radius = semantic_space_inner_radius + extroversion; + description_budget_itr = description.begin(); + } + + /*If_ptr->onto_repository_ptr->generate_new_neighbors_to_explore( (*description_budget_itr), semantic_space_inner_radius, + extroversion, nearest_k);*/ + generate_new_neighbors_to_explore( (*description_budget_itr) , semantic_space_inner_radius, + extroversion /*, nearest_k*/); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + printf("Ticks:%u : Node %u: RouterNode %u, type %d : for centroid tag %u and inner radius %u, the nearest_k contents are : ", + If_ptr->scheduler_ptr->now(),id, id, node_type, *description_budget_itr, semantic_space_inner_radius); + +#endif + + /*for (num_elements1 = nearest_k.size(),nearest_k_itr = nearest_k.begin(); + num_elements1 > 0 ; + num_elements1--,nearest_k_itr++ )*/ + nearest_k_itr = nearest_k.begin(); + for (int fj = nearest_k.size(); + fj > 0 ; + fj--,nearest_k_itr++ ) + { + //Attempts to insert, if matching item does not exist then returns true + //and the item is inserted in the temp_description_to_explore + //This filter out only the new tags that were not explored earlier + if ( (descriptions_to_explore.insert( *nearest_k_itr )).second ) + temp_descriptions_to_explore.insert( *nearest_k_itr ) ; + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + printf("%u ,", *nearest_k_itr); + +#endif + } + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) + +#endif + printf("\n"); +#endif + + + + } + + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) + { + printf("Ticks:%u : Node %u: RouterNode %u, type %d : the descriptions_to_explore conents are : ", + If_ptr->scheduler_ptr->now(),id, id, node_type); + + /* for (num_elements = descriptions_to_explore.size(),description_itr = descriptions_to_explore.begin(); + num_elements > 0 ; + num_elements--,description_itr++ )*/ + description_itr = descriptions_to_explore.begin(); + for (int fk = descriptions_to_explore.size(); + fk > 0 ; + fk--,description_itr++ ) + printf("%u ,", *description_itr); + printf("\n"); + + printf("Ticks:%u : Node %u: RouterNode %u, type %d : the temp_descriptions_to_explore contents are : ", + If_ptr->scheduler_ptr->now(),id, id, node_type); + + + /* for (num_elements = temp_descriptions_to_explore.size(), + description_itr = temp_descriptions_to_explore.begin(); + num_elements > 0 ; + num_elements--,description_itr++ )*/ + + description_itr = temp_descriptions_to_explore.begin(); + for (int fk = temp_descriptions_to_explore.size(); + fk > 0 ; + fk--,description_itr++ ) + printf("%u ,", *description_itr); + printf("\n"); + + } +#endif + +#endif + +}; + + + + + +inline void RouterNode::seek_new_resources_to_update_routing_table() { + + +#ifdef DEBUG_NODE + printf("\nNode id %u, node type : %d : seek_new_resources_to_update_routing_table(): finished updating query bag\n", id, node_type); +#endif +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + { + + printf("Ticks:%u : Node %u: The routers attached to this node are : ",If_ptr->scheduler_ptr->now(),id ); + print_map_known_routers( known_routers ); + printf("Ticks:%u : Node %u: Exploration phase : Seeking new resources and routers, sending %u queries, other resources and routers should start receiving them...\n" + , If_ptr->scheduler_ptr->now(),id , num_queries_to_submit_per_period); + + } +#endif + + + for ( num_elements1 = num_queries_to_submit_per_period ; + num_elements1 > 0 && ! (temp_descriptions_to_explore.empty()) ; + num_elements1--) + { + + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + + + //If_ptr->query_id++; + + query_ptr->source_node_id = id; + query_ptr->source_node_ptr = this; + query_ptr->time_to_live = message_time_to_live; + switch (node_type) + { + case RESOURCE_NODE: + query_ptr->only_to_node_type = TO_ROUTER_NODE; + break; + + case USER_NODE: + query_ptr->only_to_node_type = TO_RESOURCE_NODE; + + } + + query_ptr->description.insert( *(temp_descriptions_to_explore.begin()) ); //Copy semantics so should not be probblem + + query_bag_for_exploring.push_back(query_ptr); + temp_query_bag_for_exploring.push_back(query_ptr); + + temp_descriptions_to_explore.erase( (temp_descriptions_to_explore.begin()) ); + + + }// Loop on description + + query_itr = temp_query_bag_for_exploring.begin(); + send_queries_from(temp_query_bag_for_exploring, query_itr, temp_query_bag_for_exploring.size() ); + temp_query_bag_for_exploring.clear(); + + //If residual budget is left out then send queries from old queries from query_bag_for_exploring + query_itr = query_bag_for_exploring.begin(); + if (num_elements1) + send_queries_from(query_bag_for_exploring, query_itr, num_elements1 ); + + return; + +}; + + + +inline void ResourceNode::update_query_bag(Description &from_description, std::list &to_query_bag){ + + description_itr = from_description.begin(); +#ifdef DEBUG_NODE + if (node_type == USER_NODE) + printf("Ticks:%u : Node id %u, node type : %d : update_query_bag_for_advertising() : total description size is %d, Tag values are: ", + If_ptr->scheduler_ptr->now(),id, node_type, description.size() ); +#endif + + //while ( description_itr != from_description.end()) + for(int fi=from_description.size();fi>0;fi--) + { + //tag_to_use_for_query_ptr = new Tag;//This was source of memeory leak !! removed it + //*tag_to_use_for_query_ptr = (*description_itr); + + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + + + //If_ptr->query_id++; + + query_ptr->source_node_id = id; + query_ptr->source_node_ptr = this; + query_ptr->time_to_live = message_time_to_live; + switch (node_type) + { + case RESOURCE_NODE: + query_ptr->only_to_node_type = TO_ROUTER_NODE; + break; + /* The Query normaly has this fixed to both nodes, so save a few instructions here by not repeating + case ROUTER_NODE: + query_ptr->only_to_node_type = TO_RESOURCE_NODE | TO_ROUTER_NODE; + break; + */ + + case USER_NODE: + query_ptr->only_to_node_type = TO_RESOURCE_NODE; + + } + + //query_ptr->description.insert( *tag_to_use_for_query_ptr ); + query_ptr->description.insert( *description_itr ); //Copy semantics so should not be probblem + + to_query_bag.push_back(query_ptr); + + description_itr++; + +#ifdef DEBUG_NODE + if (node_type == USER_NODE) + printf(" %d ", *description_itr); +#endif + + + + }// Loop on description + +#ifdef DEBUG_NODE + if (node_type == USER_NODE) + printf("\n"); +#endif + + + return; +}; //end of update_query_bag_for_advertising() + + + + +inline void ResourceNode::submit_response(Response &submitted_response) { + + submitted_response.hop_count++; + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + submitted_response.source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(submitted_response.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Response with query_seq_num %u, Tag %u, received by Node id %u, node type %d, with source node %u, type %d\n", + //If_ptr->scheduler_ptr->now(),submitted_response.query_seq_num, (*(submitted_response.description.begin())).first , id, node_type, submitted_response.source_node_ptr->id, submitted_response.source_node_ptr->node_type ); + If_ptr->scheduler_ptr->now(),id, submitted_response.query_seq_num, (*(submitted_response.description.begin())) , id, node_type, submitted_response.source_node_ptr->id, submitted_response.source_node_ptr->node_type ); + //printf("Response received by Node id %u, node type : %d \n", id, node_type); + //if (submitted_response.source_node_id == id) printf("This router node has submitted a response to itself\n"); +#endif + + + if ( submitted_response.destination_node_id != id ) + { std::cout << "Error: This node :" << id << + " should not receive this response from node :" + << submitted_response.source_node_id << ", the destination actually is " + <list_of_responses.erase(submitted_response.id); + delete &submitted_response; + + //If_ptr->list_of_messages.erase(&submitted_response); + + cout<<"Deleted the response"< listener_array; + + if ( listener_itr != listener_array.end() ) + { + (*((*listener_itr).second)).recv(submitted_response); + + } + else { + /* + std::cout << "Ticks:"<scheduler_ptr->now()<<" : Node "<list_of_responses.erase(submitted_response.id); + delete &submitted_response; + If_ptr->database_ptr->Num_reponses_dropped_when_no_active_listeners++; + + //If_ptr->list_of_messages.erase(&submitted_response); + + //cout<<"Deleted the response"<id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id && + (*(submitted_query.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Query with query_seq_num %u, Tag %u, received by Node id %u, node type %d, with source node node %u, type %d\n", + //If_ptr->scheduler_ptr->now(),submitted_query.query_seq_num, (*(submitted_query.description.begin())).first, id, + If_ptr->scheduler_ptr->now(),id,submitted_query.query_seq_num, (*(submitted_query.description.begin())), id, + node_type, submitted_query.source_node_ptr->id, submitted_query.source_node_ptr->node_type ); + + //printf("Response received by Node id %u, node type : %d \n", id, node_type); + //if (submitted_response.source_node_id == id) printf("This router node has submitted a response to itself\n"); +#endif + + /* + if (submitted_query.source_node_id != id) submitted_query.hop_count++; //Why is this like this ?? What is the point of incrementing hoop count again ? + else cout <<"Error : this resource node has submitted a query to itself\n"<< endl; + */ + if (submitted_query.source_node_id == id) + { + cout <<"Error : this resource node has submitted a query to itself\n"<< endl; + goto drop_query; + } + + + //if (submitted_query.hop_count >= submitted_query.time_to_live) + if ( can_accept_message(submitted_query) ) + { + + //description_matched = verify_against_description(Query &submitted_query); + /* + If matched, then allocate a handler with response action + if not matched then drop it is not for this resource node + */ + +#ifdef DEBUG_NODE + printf("ResourceNode::submit_query(): Reached here 1: Query received by Node id %u, node type : %d : ", id, node_type); +#endif + + //if ( ( submitted_query.source_node_id != id) && verify_against_description(submitted_query) ) + if ( verify_against_description(submitted_query) ) //No need for submitted_query.source_node_id != id, as that is already checked above + { + +#ifdef DEBUG_NODE + printf("ResourceNode::submit_query(): Reached here 2 : Query received by Node id %u, node type : %d : allocating a query handler, scheduling its response action\n", id, node_type); +#endif + + response_action(submitted_query); + } + + } + + drop_query: + //Now drop the message + //sm24 + //If_ptr->list_of_queries.erase(submitted_query.id); + delete &submitted_query; + + //If_ptr->list_of_messages.erase(&submitted_query); + + //Also report this to the database that query has been deleted (for matching of memory leakage audit purpose + + return; +}; + + + +inline void ResourceNode::response_action(Query &query_to_handle) { + + /*Check for message only_to_node_type filter, if not meant for router + then this function should have no impact (returns) */ + + if ( (query_to_handle.source_node_ptr->node_type== USER_NODE) && + !( + ((query_to_handle.only_to_node_type & TO_ROUTER_NODE) && (node_type == ROUTER_NODE)) || + + ((query_to_handle.only_to_node_type & TO_RESOURCE_NODE) && (node_type == RESOURCE_NODE)) + ) + ) + { + + return; + } + + //send response to sender + //Construct a response + response_ptr = new Response(); + + //sm24 + //If_ptr->list_of_responses.insert(make_pair(If_ptr->response_id,response_ptr)); + + //If_ptr->response_id++; + If_ptr->database_ptr->Num_total_responses_generated++; + //SM: ADD PROBE : Update num responses sent: 'total-responses' + + + switch (query_to_handle.source_node_ptr->node_type) + { + case RESOURCE_NODE: + If_ptr->database_ptr->Responses_sent_from_ResourceNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->record_hops(query_to_handle.hop_count,If_ptr->database_ptr->hops_before_response_ctr ); //Suneil + break; + + case ROUTER_NODE: + If_ptr->database_ptr->Responses_sent_from_RouterNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->record_hops(query_to_handle.hop_count,If_ptr->database_ptr->hops_before_response_ctr ); //Suneil + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_responses_sent_for_UserNode++; + If_ptr->database_ptr->Num_total_message_generated_for_UserNode++; + If_ptr->database_ptr->record_hops(query_to_handle.hop_count,If_ptr->database_ptr->hops_before_response_ctr_for_UserNode ); //Suneil + + } + + response_ptr->time_to_live = message_time_to_live; + + response_ptr->source_node_id = id; + response_ptr->source_node_ptr = this; + + response_ptr->destination_node_id = query_to_handle.source_node_id; + response_ptr->destination_node_ptr = query_to_handle.source_node_ptr; + + response_ptr->query_seq_num = query_to_handle.query_seq_num; + response_ptr->description = query_to_handle.description ; + response_ptr->hop_count = 0; + + + //Transfer the list content to the response, so that src node could infer from that +#ifdef DETECT_LOOP + //unsigned int node_visited[64]; + memcpy( response_ptr->node_visited, query_to_handle.node_visited, NODE_VISTED_LIST_BYTES); +#endif + + query_handler_ptr = new QueryHandler(); + query_handler_ptr->response_to_send_ptr = response_ptr; + + //Schedule the wake up time for this QueryHandler; + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG_NODE + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id && + (*(query_to_handle.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: ResourceNode::response_action(): query description %u copied to response description %u\n", + //(*(query_to_handle.description.begin())).first, (*(response_ptr->description.begin())).first ); + If_ptr->scheduler_ptr->now(),id,(*(query_to_handle.description.begin())), (*(response_ptr->description.begin())) ); +#endif + + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; + //handler_schedule_event_ptr->message_to_handle_ptr = &query_to_handle; + query_handler_ptr->parent_node_ptr = this; +#endif + + //Set up handler with submit response function + functor_handler_ptr = new SpecificFunctor( query_handler_ptr, + &QueryHandler::transmit_response); + + handler_schedule_event_ptr->handler= functor_handler_ptr; + handler_schedule_event_ptr->time = delay + If_ptr->scheduler_ptr->now(); + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); + + + return; +}; + + + + +inline int ResourceNode::verify_against_description(Query &submitted_query) { + + /*For now we define success as if atleast the query's description and node's + description matches for one tag */ + //For each tag in the query, try to identify a matching tag in the node's description + description_itr = submitted_query.description.begin(); + //while (description_itr != submitted_query.description.end()) + for(int fi= submitted_query.description.size();fi>0;fi--) + { + //Check if there is a single match + + if ( description.find( (*description_itr) ) != description.end() ) return 1; + + //if ( *( (relevance( *description_itr )).begin()) <= translation_radius ) return 1; + + description_itr++; + } + + + return 0; +}; + + + +inline bool ResourceNode::can_accept_message(Message &submitted_message){ + + //Check for TTL + if (submitted_message.hop_count > submitted_message.time_to_live) + { + //Update the TTL counters in database, Report dropping due to TTL + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it has expired TTL, the hop count was %u, the TTL was %u\n", + submitted_message.hop_count, submitted_message.time_to_live ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL++; + } + break; + case USER_NODE: + //For external queries from user node + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL_for_UserNode++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL_for_UserNode++; + } + + }//End of outer switch + + + return 0; + } + + return 1; + +}; + + + +inline bool RouterNode::can_accept_message(Message &submitted_message){ + + + //Check for TTL + if (submitted_message.hop_count > submitted_message.time_to_live) + { + //Update the TTL counters in database + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it has expired TTL, the hop count was %u, the TTL was %u\n", + submitted_message.hop_count, submitted_message.time_to_live ); +#endif + + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL++; + } + break; + case USER_NODE: + //For external queries from user node + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL_for_UserNode++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL_for_UserNode++; + } + + }//End of outer switch + + + return 0; + } + + //Check for duplicate packets + +#ifdef DUPPACK_SET + query_key = make_pair( submitted_message.source_node_ptr->id, submitted_message.query_seq_num ); + if ( query_already_received_set.find( query_key ) + != query_already_received_set.end() ) + { + //Update the duplicate message counters in database + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id ) && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it is duplicate, identified by DUPPACK_SET\n" ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + If_ptr->database_ptr->Num_duplicate_message_dropped++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL ); //Suneil + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_duplicate_message_dropped_for_UserNode++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL_for_UserNode ); //Suneil + }//End of switch + + return 0; + } +#ifdef DEBUG_L2 + else + +#ifdef SELECTIVE_PACKET_FILTER + if ( (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id ) && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", unique message\n" ); +#endif + query_already_received_set.insert( query_already_received_set.begin(), query_key ); + +#endif //End of DUPPACK_SET + +#ifdef DUPPACK_CACHE + + //Check for duplicate packets + /*message_key = Message_key( submitted_message.source_node_ptr->id, + submitted_message.query_seq_num, If_ptr->god.now() + If_ptr->param_ptr->RouterNode_duplicate_message_cache_timeout );*/ + //message_key.id = submitted_message.source_node_id; + //message_key.seq_num = submitted_message.query_seq_num; + message_key.key.first = submitted_message.source_node_id; + message_key.key.second = submitted_message.query_seq_num; + + message_key.time_to_expire = If_ptr->scheduler_ptr->now() + If_ptr->param_ptr->RouterNode_duplicate_message_cache_timeout; + + if ( message_key_cache.find( message_key ) != message_key_cache.end() ) + { + //Update the duplicate message counters in database + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it is duplicate, identified by DUPPACK_CACHE\n" ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + If_ptr->database_ptr->Num_duplicate_message_dropped++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL ); //Suneil + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_duplicate_message_dropped_for_UserNode++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL_for_UserNode ); //Suneil + + }//End of switch + + + + return 0; + } +#ifdef DEBUG_L2 + else +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", unique message\n" ); +#endif + + message_key_cache.insert( message_key_cache.begin(), message_key ); +#endif //End of DUPPACK_CACHE + + +//added Suneil 9/28/07 +#ifdef DETECT_LOOP + + //Check for duplicate receipt in the node. + //Duplicate receipt is searched for by traversing a list of visited nodes from the node_visited[]. + //node_visited has 63 entries and one length field. node_visited[0] is the length field. + //Duplicate packets are dropped. + +/*First check whether the current node is in the list - if list length is 0 then not in the list, if non 0 length then actually search +if present in the list, then mark it as duplicate packet and return 0 (that the packet cant be accepted) +if not present in the list then insert the node id at the position given by length field +*/ + if(submitted_message.node_visited[0]) + { + + //Actually search the list + for (int i=1; i <= submitted_message.node_visited[0]; i++) + { + if (submitted_message.node_visited[i]== id) + { + //Dup packet !! +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it going in loops, identified by DETECT_LOOP\n" ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + If_ptr->database_ptr->Num_looping_message_dropped++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_loop ); //Suneil + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_looping_message_dropped_for_UserNode++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_loop_for_UserNode ); //Suneil + + }//End of switch + + + return 0; + } + } + + } + + submitted_message.node_visited[0]++; + submitted_message.node_visited[submitted_message.node_visited[0]] = id; + +#ifdef DEBUG_L2 +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + printf(", non-looping message\n" ); +#endif + +#endif //close of DETECT_LOOP + + + return 1; + +}; + + + +RouterNode::RouterNode( unsigned int passed_message_time_to_live, + + NodeType passed_node_type_to_pass_on, + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr ) : + ResourceNode( passed_message_time_to_live, + + passed_node_type_to_pass_on, + passed_known_routers_floor, + passed_known_routers_trim_threshold, + passed_known_routers_capacity, + + passed_translation_radius, + + passed_routing_table_length_floor, + passed_routing_table_length_trim_threshold, + passed_routing_table_max_length, + + passed_routing_table_width_floor, + passed_routing_table_width_threshold, + passed_routing_table_min_num_resource_nodes, + passed_routing_table_max_width, + + passed_k, passed_num_centroid_tags_to_explore_per_period, + passed_num_queries_to_submit_per_period, + passed_description, passed_id, passed_vitality, passed_extroversion, + passed_delay, + passed_response_timeout, passed_bootstrap_nodes, + passed_If_ptr ) + + ,routing_table_index(( routing_table_rows_greater_than(this_ptr) )) //For trimming + { + routing_table_length_floor = passed_routing_table_length_floor; + routing_table_length_trim_threshold = passed_routing_table_length_trim_threshold; + routing_table_max_length = passed_routing_table_max_length; + + routing_table_width_floor = passed_routing_table_width_floor; + routing_table_width_threshold = passed_routing_table_width_threshold; + routing_table_min_num_resource_nodes = passed_routing_table_min_num_resource_nodes; + routing_table_max_width = passed_routing_table_max_width; + + k= passed_k; /*routing_table_capacity = passed_routing_table_capacity; */ routing_table_size =0; + + //Insert itself in the infrastructure holder std::map list_of_router_nodes; */ + //Remove itself from resource list, to avoid duplication + If_ptr->list_of_resource_nodes.pop_back(); + If_ptr->list_of_router_nodes.push_back( this ); + +#ifdef DEBUG_NODE + printf("Node %u inserted itself to the router list\n", id); +#endif +#ifdef DEBUG_L1 + printf("Ticks:%u : Node %u: This created node %u is a router node\n",If_ptr->scheduler_ptr->now(),id, id); +#endif +#ifdef DEBUG_L2 + print_routing_table(); +#endif + num_centroid_tags_to_explore_per_period = passed_num_centroid_tags_to_explore_per_period; + semantic_space_inner_radius = 0;//To ensure that explorations starts with focus vertices + description_budget_itr = description.begin(); + + descriptions_to_explore = passed_description; // This will ensure that temp_descriptions_to_explore does not get loaded with description items + + all_distances_ptr = &(If_ptr->onto_repository_ptr->all_distances); + num_vertices_at_onto_ptr = &(If_ptr->onto_repository_ptr->num_vertices) ; + return; + }; + + + + +inline void RouterNode::submit_query(Query &submitted_query) +{ + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( submitted_query.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id + && (*(submitted_query.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + { + + /* + + printf("Ticks:%u ",If_ptr->scheduler_ptr->now()); + printf(": Query with query_seq_num %u Tag %u, ",submitted_query.query_seq_num, (*(submitted_query.description.begin())) ); + printf(" received by Router Node id %u, type %d with source node %u, type %d\n", + id, node_type, submitted_query.source_node_id, submitted_query.source_node_ptr->node_type ); + */ + + printf("Ticks:%u : Node %u: Query with query_seq_num %u Tag %u, received by Router Node id %u, type %d with source node %u, type %d, tag %u\n", + //If_ptr->scheduler_ptr->now(),submitted_query.query_seq_num, (*(submitted_query.description.begin())).first , + If_ptr->scheduler_ptr->now(),id,submitted_query.query_seq_num, (*(submitted_query.description.begin())) , + id, node_type, submitted_query.source_node_id, submitted_query.source_node_ptr->node_type,(*(submitted_query.description.begin())) ); + //printf("RouterNode::submit_query(): Query content: node id %u, seq num %u \n", submitted_query.source_node_id, submitted_query.query_seq_num); + } +#endif + +/* + if (submitted_query.source_node_id != id) submitted_query.hop_count++; //Why is this like this ?? See comments in similar situation in resource node +#ifdef DEBUG_NODE + else cout <<"This router node has submitted a query to itself\n"<< endl; +#endif +*/ + + if (submitted_query.source_node_id != id) + submitted_query.hop_count++; +#ifdef DEBUG_NODE + else std::cout <<"This router node has submitted a query to itself\n"<< endl; +#endif + + //Checks for TTL + if (can_accept_message(submitted_query)) + { + + //Match against description + //description_matched = verify_against_description(Query &submitted_query); + + /* + If matched, then allocate a handler with response action + if not matched then setup handler with multicast action + */ + //Ensure that the query submitted to itself (router node) is not matched with its own description + if ( ( submitted_query.source_node_id != id) && verify_against_description(submitted_query) ) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( submitted_query.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_query.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + //printf("Match found for Tag %u, so will be sending a response\n", (*(submitted_query.description.begin())).first ); + printf("Ticks:%u : Node %u: Match found for Tag %u, so will be sending a response back to query orginator node %u, type %u\n", + If_ptr->scheduler_ptr->now(),id,(*(submitted_query.description.begin())), + submitted_query.source_node_ptr->id, submitted_query.source_node_ptr->node_type); +#endif + + response_action(submitted_query); + + + + } + + selective_multicast_action(submitted_query); + + + } + + //Now drop it anyway + //sm24 + //If_ptr->list_of_queries.erase(submitted_query.id); + delete &submitted_query; + + + //If_ptr->list_of_messages.erase(&submitted_query); + + //Also report this to the database that query has been deleted (for matching of memory leakage audit purpose + + return; +} + +//This method decides the routing of packets +inline void RouterNode::selective_multicast_action(Query &query_to_handle) { + + description_itr = query_to_handle.description.begin(); +//printf("Reached here 1\n"); + //while ( description_itr != query_to_handle.description.end()) + for(int fi=query_to_handle.description.size();fi>0;fi--) + { +//printf("Reached here 2\n"); + //nearest_k = If_ptr->onto_repository_ptr->nearest_neighbors( (*description_itr),k, knowledge ); + //If_ptr->onto_repository_ptr->generate_nearest_neighbors( (*description_itr),k, knowledge, nearest_k ); + generate_nearest_neighbors( (*description_itr)/*,k, knowledge, nearest_k */ ); +//printf("Reached here 3\n"); +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*description_itr) == If_ptr->param_ptr->trace_tag ) +#endif + { + printf("Ticks:%u : Node %u: For query_seq num %u, source node %u, Tag %u matched to top k =%u routing table Tags:", + If_ptr->scheduler_ptr->now(), id, + query_to_handle.query_seq_num, query_to_handle.source_node_ptr->id , (*description_itr), k ); + + print_nearest_k(); + + printf("Ticks:%u : Node %u: For query_seq num %u, source node %u, Tag %u matched to top k =%u routing table tag-node pair entries : ", + If_ptr->scheduler_ptr->now(), id, + query_to_handle.query_seq_num, query_to_handle.source_node_ptr->id , (*description_itr), k ); + + } +#endif + + nearest_k_itr = nearest_k.begin(); + //for (int i=nearest_k.size(); nearest_k_itr != nearest_k.end() ; /*i++,*/ nearest_k_itr++) + /*for(num_elements = nearest_k.size(),nearest_k_itr = nearest_k.begin(); + num_elements >0 ; num_elements--, nearest_k_itr++)*/ + + for (int i = nearest_k.size(); i >0 ; i--,nearest_k_itr++ ) + { + routing_table_entry_itr = (routing_table[*nearest_k_itr])->destinations.begin(); + //while (routing_table_entry_itr != (routing_table[*nearest_k_itr]).end()) + for(int fi= (routing_table[*nearest_k_itr])->destinations.size();fi>0;fi--) + { + /* + This if block implements the filter, if the query is meant only for a particular class of node, + it goes only to the nodes of that class. + Simiilarly the filter ensures that any packet from a node is not forwarded back to that node + */ + + /* + if ( ( (*routing_table_entry_itr)->node_type == query_to_handle.only_to_node_type) && + ( (*routing_table_entry_itr)->id != query_to_handle.source_node_id) ) + */ + if ( routing_filter( (*routing_table_entry_itr), query_to_handle) ) + { + + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + //If_ptr->query_id++; + //If_ptr->database_ptr->Num_total_queries_generated++; + //Suneil: SM: ADD PROBE -- query generation -- update total messages generated. + switch (query_to_handle.source_node_ptr->node_type) + { + case RESOURCE_NODE: + If_ptr->database_ptr->Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode++; + If_ptr->database_ptr->Num_total_message_generated++; + + case ROUTER_NODE: + If_ptr->database_ptr->Queries_forwarded_by_RouterNode_orgininated_from_RouterNode++; + If_ptr->database_ptr->Num_total_message_generated++; + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_total_message_generated_for_UserNode++; + } + + /*Make a deep copy of the received query, to multicast it all the nodes + in the row of the routing table */ + *query_ptr = query_to_handle; + + query_ptr->destination_node_ptr = *routing_table_entry_itr; + query_ptr->destination_node_id = (*routing_table_entry_itr)->id; + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*description_itr) == If_ptr->param_ptr->trace_tag ) +#endif + printf(" tag %u:next hop node %u, type %u,", *nearest_k_itr, (*routing_table_entry_itr)->id, (*routing_table_entry_itr)->node_type ); + +#endif + + + //Seems + query_handler_ptr = new QueryHandler(); + query_handler_ptr->query_to_send_ptr = query_ptr; + + //Schedule the wake up time for this QueryHandler; + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; + //handler_schedule_event_ptr->message_to_handle_ptr = &query_to_handle; + query_handler_ptr->parent_node_ptr = this; +#endif + + //Setup handler with multicast action + functor_handler_ptr = new SpecificFunctor( query_handler_ptr, + &QueryHandler::transmit_query); + + handler_schedule_event_ptr->handler = functor_handler_ptr; + handler_schedule_event_ptr->time = delay + If_ptr->scheduler_ptr->now(); + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); + } + + + routing_table_entry_itr++; + + + } + } + + + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*description_itr) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("\n"); +#endif + + + description_itr++; + }// Loop on description + + return; + +}; + + +inline bool RouterNode::routing_filter( ResourceNode *resource_node_entry_in_routing_table_ptr, Query &query_to_route ) +{ + // This if block implements the filter, if the query is meant only for a particular class of node, + //it goes only to the nodes of that class. + //Simiilarly the filter ensures that any packet from a node is not forwarded back to that node + /* + switch (query_to_route.only_to_node_type) + { + case TO_RES_NODE : + + break; + case TO_RTR_NODE : + + break; + case TO_RES_RTR_NODE : + + break; + default : + return 0; + } + */ + /*This ensures that the a query is forwarded to the node types which is mentioned int the message filter (see Message.hpp) + is not forwarded to its source ever */ + + return (resource_node_entry_in_routing_table_ptr->node_type & query_to_route.only_to_node_type) && + ( resource_node_entry_in_routing_table_ptr->id != query_to_route.source_node_id); + +}; + + +inline int RouterNode::attach_request(ResourceNode* passed_node_ptr) { + +//printf("Before attaching RT is - \n"); print_routing_table(); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("Ticks:%u : Node %u : Attach request received from node %u, type %d", + If_ptr->scheduler_ptr->now(),id, passed_node_ptr->id ,passed_node_ptr->node_type); +#endif + + if ( can_accept(passed_node_ptr) ) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + + printf(" for Tags : ", + id, passed_node_ptr->id ,passed_node_ptr->node_type); +#endif + + + // if ( routing_table_size >= routing_table_capacity ) free_space_in_routing_table(); + + //Get the passed node's description's tags, for each tag, take action + description_itr = passed_node_ptr->description.begin(); + //while (description_itr != passed_node_ptr->description.end()) + for(int fi=passed_node_ptr->description.size() ;fi>0;fi--) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + //printf("%u ", (*description_itr).first); + printf("%u ", (*description_itr)); +#endif + + //Check if there is a single match + //if ( description.find( (*description_itr).first ) == description.end() ) //Why are we matching against description, should match against routing table + //if ( routing_table.find( (*description_itr).first ) == routing_table.end() ) + if ( routing_table.find( (*description_itr) ) == routing_table.end() ) + { + //No match , so new row in the routing table is needed + + + //But check for space for a new row/rows + //RT length trimming + if (routing_table.size() >= routing_table_max_length ) trim_routing_table_length(); + + //Insert in knowledge repository and in new routing table row + //knowledge.push_back((*description_itr).first); + knowledge.push_back((*description_itr)); + + //Also push the tags in its own description, so that the routing table entries also becomes description + //descriptions_to_explore.insert((*description_itr)); + if ( (descriptions_to_explore.insert( *description_itr )).second ) + temp_descriptions_to_explore.insert( *description_itr ) ; //This is added to adapt it to the incremental exploration + + //Create a routing table row entry + //routing_table_row_obj_ptr = new list; + //routing_table_row_obj.clear(); + + routing_table_row_obj_ptr = new RoutingTableRow(this_ptr); + (routing_table_row_obj_ptr->destinations).insert(passed_node_ptr); + //Increment the resource counter + if (passed_node_ptr->node_type == RESOURCE_NODE) routing_table_row_obj_ptr->num_resource_nodes++; + + //routing_table_row_obj.push_back( passed_node_ptr ); + + routing_table.insert( make_pair( (*description_itr), routing_table_row_obj_ptr) ); + + //Need to insert the new tag in the routing_table_index also + routing_table_index.insert(*description_itr); + + + } + else + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("(matched) "); +#endif + + routing_table_row_obj_ptr = (*(routing_table).find(*description_itr) ).second; + + //Specific Width trimming + if (routing_table_row_obj_ptr->destinations.size() >= routing_table_max_width) + trim_routing_table_specific_width(routing_table_row_obj_ptr); + + //Tag already exists, so just enter in the suitable row, only if the node is not already present, if not present then increment the res node counter + if( (routing_table_row_obj_ptr->destinations).insert(passed_node_ptr).second && (passed_node_ptr->node_type == RESOURCE_NODE) ) + //If true Increment the resource node counter + routing_table_row_obj_ptr->num_resource_nodes++; + + + } + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(", "); +#endif + + description_itr++; + } + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(" : suceeded"); +#endif + //printf("After attaching RT is - \n"); print_routing_table(); + + //routing_table_capacity++; + return 1; + } + else + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(" : failed"); +#endif + //printf("After attaching RT is - \n"); print_routing_table(); + + return 0; + } +} + + + +inline void RouterNode::periodic_housekeeping() { + + //RT length trimming + if (routing_table.size() >= routing_table_length_trim_threshold ) trim_routing_table_length(); + + //Cleanup the duplicate_message_cache + +#ifdef DUPPACK_CACHE + +#ifdef DEBUG_L2 +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + printf("Ticks %u: Node %u: RouterNode::periodic_housekeeping(): Cleaning up cache....\n", + If_ptr->scheduler_ptr->now(), id ); +#endif + + message_key_cache_itr = message_key_cache.begin(); + //message_key_to_remove_itr = message_key_cache_itr; + Tick curr_time = If_ptr->scheduler_ptr->now(); + + //while ( message_key_cache_itr != message_key_cache.end() ) + for(int fi = message_key_cache.size();fi>0;fi--) + { + //message_key_cache_itr++; + if ( (*message_key_cache_itr).time_to_expire <= curr_time ) + { + //message_key_cache.erase(message_key_to_remove_itr); + //message_key_to_remove_itr = message_key_cache.begin(); + message_key_cache.erase(message_key_cache_itr++); + fi--; + } + else { + + ++message_key_cache_itr; + } + + } +#endif + return; +}; + +inline +void ResourceNode::handle_recvd_response(Response *curr_response_ptr) { + + /* Check whether the response is from router or resource node. + There should not be any response from any resource node - why ??? with such protocol the routing table can not be populated !! + because only the resource seeks to attach, not router !! Ensure that the old protocol isnt working- now it is ok + because in the query update bag, the queries now have the filter fixed to bboth res and rtr nodes, earlier it was only to rtr nodes + */ + /* + if (curr_response_ptr->source_node_ptr->node_type != ROUTER_NODE) + { + std::cout<<"Error: The response to seek_router_node() query is not from a router node, troubleshoot" <source_node_ptr->node_type == ROUTER_NODE) + { + +/* +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Processing response received from node %u, type %d, tag %u, query_seq_num %u \n", + If_ptr->scheduler_ptr->now(),id, curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num); + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num); +#endif +*/ + + //No need to check if USER_NODE, becoz this virtual methhod will only kick in if RESOURCE_NODE + //Report num of response + //Suneil + If_ptr->database_ptr->Num_of_good_responses++; //This ok for time being as we consider all reponses received as good response + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag[*(curr_response_ptr->description.begin())]++; + //SM:ADD PROBE- update good-response counter. + + + + /* + Update resource nodes addressbook - known_routers + check if the current response is from a router node that it has already attached to in past. + if that router node is not in the attached to list then attach to it, else ignore that response + Also check that for an entry which is itself there should not be any action taken-> this is + not a problem as we ensure that a router/resource node does not respond to itself + */ + //if ( ( known_routers.find( (responses.front()).source_node_id ) == + if ( ( known_routers.find( curr_response_ptr->source_node_id ) == + known_routers.end() ) ) + { + //New router, so send attach request +#ifdef DEBUG_LISTENER + printf("Listener::handle_recvd_responses() : ((responses.front()).source_node_ptr)->id is %u, type is %d \n", + //((responses.front()).source_node_ptr)->id, ((responses.front()).source_node_ptr)->node_type ); + curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type ); +#endif + + //Dynamic ptr casting to derived class + //router_node_ptr = dynamic_cast(curr_response_ptr->source_node_ptr); + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Sending attach request to node %u, type %u for tag %u query_seq_num %u\n", + If_ptr->scheduler_ptr->now(),id,curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num ); +#endif + + //router_node_ptr->attach_request(this); + curr_response_ptr->source_node_ptr->attach_request(this); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(" for Tag %u\n ",(*(curr_response_ptr->description.begin())) );//This is to ensure that attache request is related to a tag +#endif + /* + known_routers.insert( + make_pair( curr_response_ptr->source_node_id , + dynamic_cast< RouterNode* >( curr_response_ptr->source_node_ptr ) ) + ); + */ + + curr_router_ptr = dynamic_cast< RouterNode* >( curr_response_ptr->source_node_ptr ); + + known_routers.insert( make_pair( curr_response_ptr->source_node_id , curr_router_ptr) ); + + //This is a new router, so insert it in the known_routers_index + (*known_routers_index_ptr).insert(curr_router_ptr); + + } +#ifdef DEBUG_L2 + + else + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + + printf("Ticks:%u : Node %u: Seems this router node %u is already known to %u and was attached to %u earlier, so not sending attach request now\n", + If_ptr->scheduler_ptr->now(),id, curr_response_ptr->source_node_ptr->id, id, curr_response_ptr->source_node_ptr->id); +#endif + + + } + + /*If this node is also a router node then, insert the sender in it routing table, + and known resource node list, description etc. All these are in the method */ + if (node_type == ROUTER_NODE) update_routing_table_action(curr_response_ptr); + + return; +}; + + + +inline void RouterNode::update_routing_table_action(Response *curr_response_ptr) { + + switch (curr_response_ptr->source_node_ptr->node_type) + { + case RES_NODE: + /* + check if the current response is from a resource node that it has already attached to its own routing table in past. + if that resource node is not in the attached to list then attach to it, else ignore that response + */ + if ( ( resources_attached.find( curr_response_ptr->source_node_id ) == + resources_attached.end() ) ) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u : Inserting this resource node %u, type %u for tag %u query_seq_num %u, to its own (node %u, type %d) routing table\n", + If_ptr->scheduler_ptr->now(),id, curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num, + id, node_type); +#endif + //New resource node, so send attach request to itself + attach_request(curr_response_ptr->source_node_ptr); + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(" for Tag %u\n",(*(curr_response_ptr->description.begin())) );//This is to ensure that attache request is related to a tag +#endif + + + + //Insert into the known resource list + resources_attached.insert( + make_pair( curr_response_ptr->source_node_id , curr_response_ptr->source_node_ptr ) + ); + + } +#ifdef DEBUG_L2 + + else + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag) +#endif + + printf("Ticks:%u : Node %u : Seems this resource node %u is already known to this node %u and was inserted in the routing table earlier, so not inserting again\n", + If_ptr->scheduler_ptr->now(),id ,curr_response_ptr->source_node_ptr->id, id); +#endif + break; + case RTR_NODE: + /* + check if the current response is from a router node that it has already attached to its own routing table in past. + if that router node is not in the attached to list then attach to it, else ignore that response + Also check that for an entry which is itself there should not be any action taken-> this is + not a problem as we ensure that a router/resource node does not respond to itself + */ + //if ( ( known_routers.find( (responses.front()).source_node_id ) == + if ( ( routers_attached.find( curr_response_ptr->source_node_id ) == + routers_attached.end() ) ) + { + //New router, so send attach request + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u : Inserting this router node %u, type %u for tag %u query_seq_num %u, to its own (node %u, type %d) routing table\n", + If_ptr->scheduler_ptr->now(),id ,curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num, + id, node_type); +#endif + + + attach_request(curr_response_ptr->source_node_ptr); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(" for Tag %u\n",(*(curr_response_ptr->description.begin())) );//This is to ensure that attache request is related to a tag +#endif + + + routers_attached.insert( + make_pair( curr_response_ptr->source_node_id , + dynamic_cast< RouterNode* >( curr_response_ptr->source_node_ptr ) ) + ); + + + } +#ifdef DEBUG_L2 + + else { + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag) +#endif + + printf("Ticks:%u : Node %u : Seems this router node %u is already known to this node %u and was inserted in the routing table earlier, so not inserting again\n", + If_ptr->scheduler_ptr->now(),id , curr_response_ptr->query_seq_num,curr_response_ptr->source_node_ptr->id, id, id); + } +#endif + } + + + + return; + +}; + + +//Need to fix these two later +//inline void RouterNode::free_space_in_routing_table() { return;}; +inline int RouterNode::can_accept(Node* passed_node_ptr) {return 1;}; + + + + +inline void RouterNode::generate_nearest_neighbors(Tag focus_vertice /*, int k, const std::vector &neighbors, std::list &nearest_k*/) { + + nearest_k.clear(); //The list object is made a permenant resource for reuse + //unsigned int current_list_size=0; + + //for (unsigned int num_vertices_i=0;num_vertices_i < neighbors.size() ; num_vertices_i++) + for (unsigned int num_vertices_io=0,current_list_size=0,fko = knowledge.size(); fko>0 ; num_vertices_io++,fko--) + { + nearest_k_itr = nearest_k.begin(); + if (current_list_size < k) //We havent recorded the nearest k yet, so fill it up + { + + //Insert the node in the return list, at proper location + //Find location to insert + for( int i = nearest_k.size(); + i>0 && (*all_distances_ptr)[focus_vertice][knowledge[num_vertices_io]] < (*all_distances_ptr)[focus_vertice][*nearest_k_itr]; + i-- ) nearest_k_itr++; + + nearest_k.insert(nearest_k_itr,knowledge[num_vertices_io]); + current_list_size++; + + } else { //nearest k neighbors have been recorded, now lets adjust the list + /*First check whether the current neghbor will be within nearest k, if yes then + Remove the biggest element in the list to create a space for a nearer neighbor */ + + if ( (*all_distances_ptr)[focus_vertice][knowledge[num_vertices_io]] < (*all_distances_ptr)[focus_vertice][*nearest_k_itr]) + { + nearest_k.pop_front(); + + //Insert nearer neighbor + //Find location to insert + nearest_k_itr = nearest_k.begin(); + for( int i = nearest_k.size(); + i>0 && (*all_distances_ptr)[focus_vertice][knowledge[num_vertices_io]] < (*all_distances_ptr)[focus_vertice][*nearest_k_itr]; + i-- ) nearest_k_itr++; + + nearest_k.insert(nearest_k_itr,knowledge[num_vertices_io]); + + } //end of if ( all_distances[focus_vertice][neighbors[i]] < *nearest_k_itr) + + }//end of if (current_list_size < k) + + + }//end of for loop + + return; +}; + +inline int RouterNode::distance(Tag vertice1, Tag vertice2) { + + return (*all_distances_ptr)[vertice1][vertice2]; + +}; + +inline void RouterNode::generate_neighbors_to_explore(Tag focus_vertice, int radius /*, std::list &nearest_k*/) { + + nearest_k.clear(); + for (unsigned int num_vertices_io=0; num_vertices_io < *num_vertices_at_onto_ptr ; num_vertices_io++) + { + if ( (*all_distances_ptr)[focus_vertice][num_vertices_io] <= radius) + nearest_k.push_back( num_vertices_io ); + } + + return ; +}; + + +//Code added by Suneil for the exploration around the known areas. +// added 10/18/07 + +inline void RouterNode::generate_new_neighbors_to_explore(Tag focus_vertice, int inner_radius, int radius_increment /*, std::list &nearest_k*/) { + + nearest_k.clear(); + + int outer_radius = inner_radius + radius_increment ; + + for (unsigned int num_vertices_io=0; num_vertices_io < *num_vertices_at_onto_ptr ; num_vertices_io++) + { + //we are trying to find those nodes that are outside the current radius, with the outer circle being the hop radius + // plus the radius_increment. But since we don't want to rediscover the already known nodes, we ask for those + // nodes that are outside the inner_radius but inside the circle of inner_radius + radius_increment. + // Circular strip of Inside radius = inner_radius, outer radius = inner_radius + radius_increment. + if ( ((*all_distances_ptr)[focus_vertice][num_vertices_io] > inner_radius) && ((*all_distances_ptr)[focus_vertice][num_vertices_io] <= outer_radius) ) + nearest_k.push_back( num_vertices_io ); + + } + + return ; +}; + + + + + + + + +UserNode::UserNode(unsigned int passed_message_time_to_live, + + NodeType passed_node_type_to_pass_on, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr ) : + ResourceNode(passed_message_time_to_live, + + passed_node_type_to_pass_on, + + passed_known_routers_floor, + passed_known_routers_trim_threshold, + passed_known_routers_capacity, + + passed_translation_radius, + + passed_routing_table_length_floor, + passed_routing_table_length_trim_threshold, + passed_routing_table_max_length, + + passed_routing_table_width_floor, + passed_routing_table_width_threshold, + passed_routing_table_min_num_resource_nodes, + passed_routing_table_max_width, + + + passed_k, passed_num_centroid_tags_to_explore_per_period, + passed_num_queries_to_submit_per_period, + passed_description, passed_id, passed_vitality, passed_extroversion, + passed_delay, + passed_response_timeout, passed_bootstrap_nodes, + passed_If_ptr ) + { + //Get the user noode out of the resource node list + If_ptr->list_of_resource_nodes.pop_back(); + If_ptr->list_of_user_nodes.push_back(this); + + }; + + + +void UserNode::heartbeat(){ + +#ifdef DEBUG + printf("Ticks:%u : Node %u, node type : %d: UserNode::heartbeat()...... \n", If_ptr->scheduler_ptr->now(),id, node_type); +#endif + + + /* + Choose k random tags, load them in the description (clear description before that), + update query bag, generate random bootstrap nodes, and send the queries to those nodes + */ + + + generate_random_description(num_queries_to_submit_per_period); + + //Flush the query_bag_for_advertising, to get started with new queries + query_bag_for_advertising.clear(); + + update_query_bag(description, query_bag_for_advertising ); + generate_random_bootstrap_nodes(extroversion); + query_itr = query_bag_for_advertising.begin(); + send_queries_from( query_bag_for_advertising, query_itr, query_bag_for_advertising.size() ); + +}; + +inline +void UserNode::handle_recvd_response(Response *curr_response_ptr) { + + + //Check for errors, or malformed responses + if (curr_response_ptr->source_node_ptr->node_type != RESOURCE_NODE || curr_response_ptr->destination_node_id != id ) + std::cout<<"Error: UserNode::handle_recvd_response(): malformed response received at UserNode"<param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) + +#ifdef ALL_USERNODE_PACKETS + || ( node_type == USER_NODE ) +#endif + ) + +#endif + printf("Ticks:%u : Node %u: Noted successful recall from node %u, type %u for tag %u query_seq_num %u\n", + If_ptr->scheduler_ptr->now(),id,curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num ); +#endif + + + //Report good responses + If_ptr->database_ptr->Num_of_good_responses_for_UserNode++; + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag_for_UserNode[*(curr_response_ptr->description.begin())]++; + } +}; + + + + +void inline UserNode::generate_random_description(unsigned int num_description) { + int i=0; +#ifdef DEBUG + printf("Ticks:%u : Node %u: User Queries submitted to network for tags :",If_ptr->scheduler_ptr->now(),id ); +#endif + description.clear(); + +#ifdef DEBUG_L2 +#ifdef SELECTIVE_PACKET_FILTER + if (If_ptr->param_ptr->trace_source_node_id == 4294967292) + { + description.insert( If_ptr->param_ptr->trace_tag ); + printf(" %u,", If_ptr->param_ptr->trace_tag); + i++; + } +#endif +#endif + + //Fill the description with random tags + //for (int i=0;ionto_repository_ptr->num_vertices)+1); + generated_random_tag = (rand() % If_ptr->onto_repository_ptr->num_vertices); + + //generated_random_description.insert( make_pair( generated_random_tag, generated_random_tag) ); + if (description.find(generated_random_tag) == description.end()) + { + description.insert( generated_random_tag ); + i++; +#ifdef DEBUG + printf(" %u,", generated_random_tag); +#endif + } + } + +#ifdef DEBUG + printf("\n"); +#endif + return; + }; + + +void inline UserNode::generate_random_bootstrap_nodes(unsigned int num_bootstrap_nodes) { + + + //Flush the bootstrap list from the old cycle + known_routers.clear(); + index_of_nodes_to_bootstrap_to.clear(); + +#ifdef DEBUG + printf("Ticks:%u : Node %u: User Queries will be submitted to routers with ids :",If_ptr->scheduler_ptr->now(),id); +#endif + + for (int i=0;ilist_of_router_nodes.size() ) ); + + if (index_of_nodes_to_bootstrap_to.find(generated_random_index) == index_of_nodes_to_bootstrap_to.end()) + { + //index_of_nodes_to_bootstrap_to.insert( make_pair(generated_random_index, generated_random_index) ); + index_of_nodes_to_bootstrap_to.insert( generated_random_index ); + router_node_to_attach_to_ptr = If_ptr->list_of_router_nodes[ generated_random_index ]; + +#ifdef DEBUG + printf(" %u", router_node_to_attach_to_ptr->id ); +#endif + + //nodes_to_bootstrap_to.push_back( &(*(If_ptr->list_of_router_nodes[ generated_random_index ])) ); + known_routers.insert( + make_pair( generated_random_index , router_node_to_attach_to_ptr ) + ); + + i++; + } +#ifdef DEBUG_FAULT1 + else + { + printf("skipped %u ,", generated_random_index); + } +#endif + } + +#ifdef DEBUG + + printf("\n"); +#endif + + return; + +}; + + + + +#ifdef DEBUG + + +inline void ResourceNode::print_query(Query &submitted_query){ + printf("source_node_id %u, destination_node_id %u, query_seq_num %u,hop_count %u, time_to_live %u, type %d\n", + submitted_query.source_node_id, submitted_query.destination_node_id, + submitted_query.query_seq_num, submitted_query.hop_count, submitted_query.time_to_live, submitted_query.type ); + +/* + printf("Verifying pointers \n"); + printf("source_node_ptr->id %u, destination_node_ptr->id %u\n", submitted_query.source_node_ptr->id, + submitted_query.destination_node_ptr->id); +*/ + return; +} + + + +/* +void ResourceNode::print_listener_status(){ + + // std::map listener_array; + + listener_itr = listener_array.begin(); + + printf("Tick: %u , Node %u, type %d : Printing listener status.....\n", If_ptr->scheduler_ptr->now(), id, node_type ); + + while (listener_itr != listener_array.end() ) + { + printf("Tick: %u , Node %u, type %d : Listener id %u has %u responses in it, expiry status %d\n", + If_ptr->scheduler_ptr->now(), id, node_type, + (*listener_itr).second->id, (*listener_itr).second->responses.size(), (*listener_itr).second->expired ); + + listener_itr++; + } + + return; +}; +*/ +#endif + +#ifdef DEBUG_L2 + +inline void RouterNode::print_destinations(Destinations &destinations){ + + printf("Destinations are : "); + routing_table_entry_itr = destinations.begin(); + for (int fi = destinations.size();fi >0 ;fi --, routing_table_entry_itr++ ) + { + printf(" %u (%u), ", (*routing_table_entry_itr)->id, (*routing_table_entry_itr)->node_type ); + } + printf("\n"); + return; +} + + +inline void RouterNode::print_routing_table_index(){ + + printf("routing_table_index contents are : "); + routing_table_index_itr = routing_table_index.begin(); + while(routing_table_index_itr != routing_table_index.end() ) + { + printf(" %u, ", *routing_table_index_itr); + routing_table_index_itr++; + } + + +} + + + + +inline void RouterNode::print_routing_table() + { + // + RoutingTableIterator print_routing_table_row_itr; + RoutingTableRowIterator print_routing_table_entry_itr; + + print_routing_table_row_itr = routing_table.begin(); + + printf("Ticks:%u : Node %u: Printing routing table of router node: ",If_ptr->scheduler_ptr->now(),id); + if (!routing_table.empty()) + { + cout<<"Node id : Row i : Res node num : Description tag : List of Node id(node_type) that are attached....."<num_resource_nodes ; + + + print_routing_table_entry_itr = (*print_routing_table_row_itr).second->destinations.begin() ; + + while ( print_routing_table_entry_itr != (*print_routing_table_row_itr).second->destinations.end() ) + { + cout<<" id "<<(*print_routing_table_entry_itr)->id<<"("<<(*print_routing_table_entry_itr)->node_type<<") ,"; + + print_routing_table_entry_itr++; + } + cout<0 ; num_elements--, nearest_k_itr++)*/ + for (int i = nearest_k.size(); i >0; i--, nearest_k_itr++) + printf(" %u,",*nearest_k_itr); + printf("\n"); + + + return; + } + + +#endif + diff --git a/Node.hpp b/Node.hpp new file mode 100755 index 0000000..67c04f5 --- /dev/null +++ b/Node.hpp @@ -0,0 +1,729 @@ +/* To do + attach_after seek new routers + check acceptability criteria to accept a node in router + Manage routing table size + bootstrap to more than one node +*/ +//#include "Allheader.hpp" +#ifndef NODE_HPP +#define NODE_HPP +#include "ForwardDeclaration.hpp" +#include "Infrastructure.hpp" +//#include "Input.hpp" + +/* +typedef std::map > RoutingTable ; +typedef std::list RoutingTableRow ; +typedef RoutingTable::iterator RoutingTableIterator ; +typedef RoutingTableRow::iterator RoutingTableRowIterator ; +*/ + +//*************These are for trimming routing table and known routers list ********************* + +inline bool greater_than(std::multiset< int > multiset1, std::multiset< int > multiset2){ + + std::multiset< int >::iterator multiset1_itr = multiset1.begin(), multiset2_itr = multiset2.begin(); + int fi,fj; + + for ( fi = multiset1.size(),fj = multiset2.size(); fi>0 && fj>0 ;fi--,fj--) + { + + if (*multiset1_itr == *multiset2_itr) + { + multiset1_itr++ , multiset2_itr++; + } + else { + + //return *multiset1_itr < *multiset2_itr ; //ascending + return *multiset1_itr > *multiset2_itr ;//descending + } + } + + //Haven't returned yet and the foor loop exited, so that means the two input multiset have equal entries atleast the common portions + //return (fifj);//descending +}; + +inline bool greater_than_strict(std::multiset< int > multiset1, std::multiset< int > multiset2, unsigned int id1, unsigned int id2){ + + std::multiset< int >::iterator multiset1_itr = multiset1.begin(), multiset2_itr = multiset2.begin(); + int fi,fj; + + for ( fi = multiset1.size(),fj = multiset2.size(); fi>0 && fj>0 ;fi--,fj--) + { + + if (*multiset1_itr == *multiset2_itr) + { + multiset1_itr++ , multiset2_itr++; + } + else { + + //return *multiset1_itr < *multiset2_itr ; //ascending + return *multiset1_itr > *multiset2_itr ;//descending + } + } + + //Haven't returned yet and the foor loop exited, so that means the two input multiset have equal entries atleast the common portions + if (fi==fj) + { + //If they are equal, that means the relevance multiset is exactly the same, in that case we need to enforce stricter ordering based on node ids + return id1> id2; //Descending + } + //return (fifj);//descending + +}; + + + +//if return is 0 then neither greater or equal, if returned 1 then equal, if 2 then greater +inline int equal_and_greater(std::multiset< int > multiset1, std::multiset< int > multiset2){ + + std::multiset< int >::iterator multiset1_itr = multiset1.begin(), multiset2_itr = multiset2.begin(); + int fi,fj; + + for ( fi = multiset1.size(),fj = multiset2.size(); fi>0 && fj>0 ;fi--,fj--) + { + if (*multiset1_itr == *multiset2_itr) + { + multiset1_itr++ ; multiset2_itr++; + } + else { + return ((*multiset1_itr > *multiset2_itr) ? 2 : (*multiset1_itr == *multiset2_itr)? 1 : 0) ; + } + } + + return (fi < fj) ? 0: (fi > fj) ? 2: 1; + +}; + + + + +//*************Above these are for trimming routing table and known routers list ********************* + + + + +//class QueryHandler:public Handler { +class QueryHandler { + public: +#ifdef DEBUG + ResourceNode *parent_node_ptr; //Update this + //Infrastructure *If_ptr; +#endif + //int expired; + + Response *response_to_send_ptr; + Query *query_to_send_ptr; + + + QueryHandler(); +/* +#ifdef DEBUG + QueryHandler(Infrastructure *passed_If_ptr); +#endif +*/ + + //~QueryHandler(); + + void transmit_response(); + void transmit_query(); + +}; + + + class Node { + + public: + unsigned int id; + + QueryHandler *query_handler_ptr; + Listener *listener_ptr; + + Event *handler_schedule_event_ptr; + Infrastructure *If_ptr; + NodeType node_type; + + Node(Infrastructure* passed_If_ptr); + virtual void heartbeat(){}; + virtual ~Node(){}; + +}; + + + +class ResourceNode:public Node { + + public: + //unsigned int num_elements; + unsigned int num_elements1; + + unsigned int num_queries_to_submit_per_period; + + +#ifdef DEBUG + unsigned int listener_seq_id; //For troubleshooting +#endif + + std::vector< std::vector > *all_distances_ptr; + unsigned int *num_vertices_at_onto_ptr ; + + + //int description_matched; + + Query *query_ptr; + Response *response_ptr; + //std::list* neighboring_tags_ptr; + + BootstrapNodeList bootstrap_nodes; + + Tag *tag_to_use_for_query_ptr; + //int *current_query_sequence_id_ptr; + + SpecificFunctor *functor_handler_ptr; + + SpecificFunctor *functor_listener_ptr; + + std::list query_bag_for_advertising; + //bool query_with_tag_does_not_exist; + + std::list::iterator query_itr; + Description::iterator description_itr; + + std::map listener_array; + std::map< unsigned int, RouterNode *> known_routers; + + std::map::iterator listener_itr, listener_to_remove_itr; + std::map< unsigned int, RouterNode *>::iterator router_node_address_itr; + + RouterNode *router_node_to_attach_to_ptr; + + //std::list query_handler_array; + //std::list::iterator query_handler_itr, query_handler_to_remove_itr; + + + //void drop_expired_listeners(); + + void attach_listener(Listener &listener, unsigned int query_sequence_id); + //void attach_query_handler(QueryHandler *passed_query_handler_ptr); + //void drop_expired_query_handlers(); + + void seek_new_routers_to_attach_to(); + //void update_query_bag_for_advertising(); + + void update_query_bag(Description &from_description, std::list &to_query_bag); + + + + int verify_against_description(Query &submitted_query); + void response_action(Query &query_to_handle); + + virtual void handle_recvd_response(Response *curr_response_ptr); + virtual void update_routing_table_action(Response *curr_response_ptr){};//=0; + virtual int attach_request(ResourceNode* passed_node_ptr){};//=0;Added to avoid dynamic cast + + void ResourceNode::send_queries_from(std::list &query_bag , std::list::iterator &curr_query_bag_itr, int num_queries_to_send ); + + virtual bool can_accept_message(Message &submitted_message); + + unsigned int vitality; + unsigned int extroversion; + Tick delay; + Description description; + + unsigned int message_time_to_live; + //unsigned int routing_table_capacity; + unsigned int current_query_sequence_id; + Tick response_timeout; + + ResourceNode(unsigned int passed_message_time_to_live, + + NodeType node_type_to_pass_on, + int known_routers_floor, + int known_routers_trim_threshold, + int known_routers_capacity, + + int translation_radius, + + int routing_table_length_floor, + int routing_table_length_trim_threshold, + int routing_table_max_length, + + int routing_table_width_floor, + int routing_table_width_threshold, + int routing_table_min_num_resource_nodes, + int routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr ); + + void begin_life(/*BootstrapNodeList &bootstrap_nodes*/); + virtual void bootstrap_action(); + void heartbeat(); + void submit_response(Response &submitted_response); + virtual void submit_query(Query &submitted_query); + + virtual void periodic_housekeeping();//{}; Activated housekeeping for resource node also + void cleanup(); + +#ifdef DEBUG + void print_query(Query &submitted_query); + void print_listener_status(); +#endif + + ~ResourceNode(); + + +//*************These are for trimming routing table and known routers list ********************* + int known_routers_floor; + int known_routers_trim_threshold; + int known_routers_capacity; + + int translation_radius; + + ResourceNode *this_ptr; + + RouterNode *curr_router_ptr; + + KnownRoutersIndexEncapsulator *known_routers_index_ptr; + //void *known_routers_index_itr_ptr; + + std::multiset< int > relevance( Tag tag1){ + std::multiset< int > temp_multiset; + description_itr = description.begin(); + + for (int fi= description.size();fi>0 ;fi--, description_itr++ ) + temp_multiset.insert( ((*all_distances_ptr)[*description_itr][tag1] )); + return temp_multiset; + + }; + + + std::multiset relevance( Description description2){ + std::multiset< int > temp_multiset; + Description::iterator description2_itr; + description_itr = description.begin(); + + for (int fi= description.size();fi>0 ;fi--, description_itr++ ) + { + description2_itr = description2.begin(); + for (int fj= description2.size();fj>0 ;fj--, description2_itr++ ) + { + temp_multiset.insert( ((*all_distances_ptr)[*description_itr][*description2_itr] )); + + } + } + return temp_multiset; + + }; + + void trim_known_routers(); + + +//*************Above these are for trimming routing table and known routers list ********************* + + +}; + + + //Copy from here + class routing_table_rows_greater_than { + public: + ResourceNode *parent_ptr; + routing_table_rows_greater_than(ResourceNode *passed_parent_ptr):parent_ptr(passed_parent_ptr){};//parent_ptr= passed_parent_ptr;}; + bool operator()(Tag tag1, Tag tag2) //const + { + return greater_than((*parent_ptr).relevance( tag1), (*parent_ptr).relevance( tag2)); + } + }; + +/* + class routing_table_cols_greater_than { + public: + ResourceNode *parent_ptr; + routing_table_cols_greater_than(ResourceNode *passed_parent_ptr):parent_ptr(passed_parent_ptr){};//{parent_ptr =passed_parent_ptr;}; + bool operator()(ResourceNode* ResourceNode_ptr1, ResourceNode* ResourceNode_ptr2) //const + { + return greater_than((*parent_ptr).relevance( ResourceNode_ptr1->description ), (*parent_ptr).relevance( ResourceNode_ptr2->description )); + } + }; +*/ + class routing_table_cols_greater_than_strict { + public: + ResourceNode *parent_ptr; + routing_table_cols_greater_than_strict(ResourceNode *passed_parent_ptr):parent_ptr(passed_parent_ptr){};//{parent_ptr =passed_parent_ptr;}; + bool operator()(ResourceNode* ResourceNode_ptr1, ResourceNode* ResourceNode_ptr2) //const + { + return greater_than_strict((*parent_ptr).relevance( ResourceNode_ptr1->description ), (*parent_ptr).relevance( ResourceNode_ptr2->description ), + ResourceNode_ptr1->id, ResourceNode_ptr2->id); + } + }; + + + + + +//Old ones from ver 1.15 +/* +typedef std::multiset Destinations; +typedef std::map RoutingTable ; +//typedef RoutingTableRow::iterator RoutingTableRowIterator; +typedef RoutingTable::iterator RoutingTableIterator ; +typedef Destinations::iterator RoutingTableRowIterator; +*/ + +//*************These are for trimming routing table and known routers list ********************* + +//typedef std::multiset Destinations; +typedef std::set Destinations; + +class RoutingTableRow { + public: + Destinations destinations; + unsigned int num_resource_nodes; + RoutingTableRow(ResourceNode* this_ptr) : destinations( (routing_table_cols_greater_than_strict(this_ptr)) ) {num_resource_nodes = 0;}; + void insert(ResourceNode* &res_ptr) { destinations.insert(res_ptr); } +}; + +typedef std::map RoutingTable ; //New +typedef std::multiset RoutingTableIndex ; //new +typedef Destinations::iterator RoutingTableRowIterator; +typedef RoutingTable::iterator RoutingTableIterator ; +typedef RoutingTableIndex::iterator RoutingTableIndexIterator ; //New + + + +//*************Above these are for trimming routing table and known routers list ********************* + + + + + + + +class UserNode:public ResourceNode { + + std::set index_of_nodes_to_bootstrap_to; + Tag generated_random_tag; + unsigned int generated_random_index; + + //RouterNode *generated_random_bootstrap_node_ptr; + + public: + UserNode(unsigned int passed_message_time_to_live, + + NodeType node_type_to_pass_on, + int known_routers_floor, + int known_routers_trim_threshold, + int known_routers_capacity, + + int translation_radius, + + int routing_table_length_floor, + int routing_table_length_trim_threshold, + int routing_table_max_length, + + int routing_table_width_floor, + int routing_table_width_threshold, + int routing_table_min_num_resource_nodes, + int routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr); + + void bootstrap_action(){}; + void generate_random_description(unsigned int num_description); + void generate_random_bootstrap_nodes(unsigned int num_bootstrap_nodes) ; + + void heartbeat(); + void handle_recvd_response(Response *curr_response_ptr); + ~UserNode(){ index_of_nodes_to_bootstrap_to.clear();cleanup(); }; + +}; + + +#ifdef DUPPACK_CACHE +class Message_key { + + public: + //unsigned int id; + //unsigned int seq_num; + std::pair key; + Tick time_to_expire; + + Message_key(){key.first =0;key.second =0;time_to_expire=0; }; + Message_key(const Message_key& passed_message_key){ + key = passed_message_key.key; + //id = passed_message_key.id; + //seq_num = passed_message_key.seq_num; + time_to_expire = passed_message_key.time_to_expire; + }; + + Message_key(unsigned int passed_id,unsigned int passed_seq_num, Tick passed_time_to_expire){ + //id = passed_id; + //seq_num = passed_seq_num; + key = make_pair( passed_id, passed_seq_num); + time_to_expire = passed_time_to_expire; + }; + + friend bool operator==(const Message_key& k1,const Message_key& k2){ + //return k1.id==k2.id && k1.seq_num==k2.seq_num; + return k1.key == k2.key; + } + friend bool operator!=(const Message_key& k1,const Message_key& k2){ + //return k1.id!=k2.id || k1.seq_num!=k2.seq_num; + return k1.key != k2.key; + } + friend bool operator>(const Message_key& k1,const Message_key& k2){ + //return k1.id>k2.id ; + //return k1.seq_num>k2.seq_num ; + return k1.key>k2.key; + + } + friend bool operator<(const Message_key& k1,const Message_key& k2){ + // return k1.id nearest_k; + std::list::iterator nearest_k_itr; + + unsigned int routing_table_size; + //std::list *routing_table_row_obj_ptr; + //std::list routing_table_row_obj; + RoutingTableRow *routing_table_row_obj_ptr; + + std::map< unsigned int, RouterNode *> routers_attached; + std::map< unsigned int, ResourceNode *> resources_attached; + std::list query_bag_for_exploring; + std::list::iterator curr_query_bag_for_exploring_itr; + //std::list::reverse_iterator query_rev_itr; + + std::list temp_query_bag_for_exploring; + std::vector knowledge; + + //std::list::iterator routing_table_entry_itr; //From QueryHandler + RoutingTableRowIterator routing_table_entry_itr; //From QueryHandler + + Description descriptions_to_explore; + Description temp_descriptions_to_explore; + + unsigned int num_centroid_tags_to_explore_per_period; + + Description::iterator description_budget_itr;//Has memory and tracks from which centroid topic to start again + + unsigned int semantic_space_inner_radius; + + //For duplicate message testing +#ifdef DUPPACK_SET + QueryAlreadyReceived query_already_received_set; + QueryAlreadyReceived::iterator query_already_received_set_itr; + NodeId_QuerySeqNum query_key; +#endif + +#ifdef DUPPACK_CACHE + std::set message_key_cache; + std::set::iterator message_key_cache_itr;//, message_key_to_remove_itr ; + Message_key message_key; +#endif + + void update_descriptions_to_explore(); + + void seek_new_resources_to_update_routing_table(); + //void free_space_in_routing_table(); + int can_accept(Node* passed_node_ptr); + void selective_multicast_action(Query &query_to_handle); + bool can_accept_message(Message &submitted_message); + + //OntologyRepository services + void generate_nearest_neighbors(Tag focus_vertice /*, int k, const std::vector &neighbors, std::list &nearest_k*/); + + void generate_neighbors_to_explore(Tag focus_vertice , int radius /*, std::list &nearest_k*/); + + void generate_new_neighbors_to_explore(Tag focus_vertice , int inner_radius, int radius_increment /*, std::list &nearest_k */);//From Suneil + + int distance(Tag vertice1, Tag vertice2); + + + public: + //RoutingTable routing_table; + RoutingTable routing_table; + + unsigned int k; + //unsigned int routing_table_capacity; //Moved to ResourceNode + RouterNode(unsigned int passed_message_time_to_live, + + NodeType node_type_to_pass_on, + int known_routers_floor, + int known_routers_trim_threshold, + int known_routers_capacity, + + int translation_radius, + + int routing_table_length_floor, + int routing_table_length_trim_threshold, + int routing_table_max_length, + + int routing_table_width_floor, + int routing_table_width_threshold, + int routing_table_min_num_resource_nodes, + int routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr); + + void heartbeat(); + + void submit_query(Query &submitted_query); + int attach_request(ResourceNode* passed_node_ptr); + bool routing_filter( ResourceNode *resource_node_entry_in_routing_table_ptr, Query &query_to_route ); + void periodic_housekeeping(); + + void update_routing_table_action(Response *curr_response_ptr); + + ~RouterNode(); + + +#ifdef DEBUG_L2 + void print_routing_table(); + void print_nearest_k(); + void RouterNode::print_routing_table_index(); + void print_destinations(Destinations &destinations); +#endif + +//*************These are for trimming routing table and known routers list ********************* + + std::vector::iterator knowledge_itr; + + int routing_table_length_floor; + int routing_table_length_trim_threshold; + int routing_table_max_length; + + int routing_table_width_floor; + int routing_table_width_threshold; + int routing_table_min_num_resource_nodes; + int routing_table_max_width; + + RoutingTableIndex routing_table_index; + + RoutingTableIterator routing_table_itr ; + + RoutingTableIndexIterator routing_table_index_itr ;//New + //RoutingTableRowIterator routing_table_entry_to_remove_itr; + + RouterNode(Infrastructure *passed_If_ptr); + + void trim_routing_table_length(); + + //void trim_routing_table_specific_width(Destinations &destinations_to_trim); + void trim_routing_table_specific_width(RoutingTableRow* row_to_trim_ptr); + + void trim_routing_table_all_widths(); + + + +}; + + + + + +class KnownRouterIndexElement { + public: + RouterNode *RouterNode_ptr; + unsigned int id; + unsigned int performance; + //Ticks birth_ticks; + unsigned int birth_ticks; + KnownRouterIndexElement(RouterNode *passed_RouterNode_ptr ); +}; + + +class known_routers_index_less_than { + public: + ResourceNode *parent_ptr; + known_routers_index_less_than (ResourceNode *passed_parent_ptr):parent_ptr(passed_parent_ptr){};//parent_ptr= passed_parent_ptr;}; + bool operator()(KnownRouterIndexElement* element_ptr1, KnownRouterIndexElement* element_ptr2){ + + switch (equal_and_greater( (*(element_ptr1->RouterNode_ptr)).relevance( (*parent_ptr).description ), (*(element_ptr2->RouterNode_ptr)).relevance( (*parent_ptr).description ) ) ) + { + case 0: + return 0; + break; + + case 1: + + return (element_ptr1->birth_ticks < element_ptr2->birth_ticks) ? 1 : 0; + break; + + case 2: + + return 1; + } + + } + +}; + + +typedef std::multiset< KnownRouterIndexElement*, known_routers_index_less_than > KnownRoutersIndex; +typedef KnownRoutersIndex::iterator KnownRoutersIndexIterator; + +//class KnownRoutersIndexIterator: public KnownRoutersIndex::iterator; + +class KnownRoutersIndexEncapsulator { + + KnownRouterIndexElement* index_element_ptr; + + public: + KnownRoutersIndex index; + + KnownRoutersIndexEncapsulator(ResourceNode* passed_ResourceNode_ptr):index(( known_routers_index_less_than(passed_ResourceNode_ptr) )){}; + + void insert(RouterNode* RouterNode_ptr){ + + index_element_ptr = new KnownRouterIndexElement(RouterNode_ptr /*,RouterNode_ptr->If_ptr->scheduler_ptr->now()*/); + + index.insert(index_element_ptr); + + } + + int size(){ int temp; temp = index.size(); return temp; } + //KnownRoutersIndex::iterator begin(){return index.begin();} + KnownRoutersIndexIterator begin(){return index.begin();} + void erase(KnownRoutersIndexIterator &start_itr, KnownRoutersIndexIterator &end_itr){ + + index.erase(start_itr, end_itr); + } +}; + + + + + + + +#endif + diff --git a/Node.o b/Node.o new file mode 100755 index 0000000..d0c24fb Binary files /dev/null and b/Node.o differ diff --git a/Node_debug.cpp b/Node_debug.cpp new file mode 100755 index 0000000..3536e5f --- /dev/null +++ b/Node_debug.cpp @@ -0,0 +1,2956 @@ +#include +#include //For merge +#include +#include +#include + + +//#include "Allheader.hpp" + +#include "ForwardDeclaration.hpp" +#include "Node.hpp" +#include "Infrastructure.hpp" +#include "Listener.hpp" +#include "Message.hpp" +#include "Functor.hpp" +#include "OntologyRepository.hpp" +#include "Scheduler.hpp" +#include "Input.hpp" +#include "Database.hpp" + + +//*************These are for trimming routing table and known routers list ********************* + +KnownRouterIndexElement::KnownRouterIndexElement(RouterNode *passed_RouterNode_ptr ): RouterNode_ptr(passed_RouterNode_ptr), + id(passed_RouterNode_ptr->id), birth_ticks( passed_RouterNode_ptr->If_ptr->scheduler_ptr->now() ) {}; + + +inline void ResourceNode::trim_known_routers(){ + //KnownRoutersIndex::iterator &known_routers_index_itr = *known_routers_index_itr_ptr; + KnownRoutersIndexIterator known_routers_index_itr, known_routers_index_begin; + known_routers_index_itr = known_routers_index_begin = (*known_routers_index_ptr).index.begin(); + //Locate the range + for (int fi = (*known_routers_index_ptr).size(); fi > known_routers_floor ;fi--, known_routers_index_itr++ ) + { + known_routers.erase((*known_routers_index_itr)->id); + delete (*known_routers_index_itr); + } + (*known_routers_index_ptr).erase( known_routers_index_begin, known_routers_index_itr ); + + return; +}; + +//New +inline void RouterNode::trim_routing_table_length(){ + + printf("Ticks %u: Node %u: RouterNode::trim_routing_table_length(), size before trimming is %d, routing_table_length_floor is %d\n", + If_ptr->scheduler_ptr->now(), id, routing_table.size(),routing_table_length_floor ); +print_routing_table();print_routing_table_index(); + //routing_table_itr = routing_table.begin(); //*(routing_table[tag]) + routing_table_index_itr = routing_table_index.begin(); + //Locate the range + for (int fi = routing_table_index.size(); fi > routing_table_length_floor ;fi--, routing_table_index_itr++ ) + { + printf(" index %u : tag %u, ", fi, *routing_table_index_itr ); + delete (*(routing_table.find(*routing_table_index_itr))).second; + routing_table.erase( *routing_table_index_itr ); + + //Remove from knowlede vector also + /* + knowledge_itr = knowledge.begin(); + for (int fj= knowledge.size();fj >0 && *knowledge_itr != *routing_table_index_itr ;fj--,knowledge_itr++ ){}; + knowledge.erase( knowledge_itr ); + */ + + knowledge.erase(remove(knowledge.begin(), knowledge.end(), *routing_table_index_itr), knowledge.end()); + + } + printf("\n"); + routing_table_index.erase( routing_table_index.begin(), routing_table_index_itr ); + printf("Ticks %u: Node %u: RouterNode::trim_routing_table_length(), size after trimming is %d\n", If_ptr->scheduler_ptr->now(), id, routing_table.size() ); + + return; + +}; + + +inline void RouterNode::trim_routing_table_specific_width(RoutingTableRow * row_to_trim_ptr){ + + Destinations &destinations_to_trim = row_to_trim_ptr->destinations; + routing_table_entry_itr = destinations_to_trim.begin(); //*(routing_table[tag]) + //routing_table_entry_to_remove_itr = routing_table_entry_itr; + //Locate the range + + for (int fi = destinations_to_trim.size(); + fi > routing_table_width_floor && routing_table_entry_itr != destinations_to_trim.end() ; + routing_table_entry_itr++ ) + { + + if ( ((*routing_table_entry_itr)->node_type == ROUTER_NODE ) || + row_to_trim_ptr->num_resource_nodes > routing_table_min_num_resource_nodes ) + { + + destinations_to_trim.erase( routing_table_entry_itr ); + + row_to_trim_ptr->num_resource_nodes--; + fi--; + routing_table_entry_itr = destinations_to_trim.begin();//routing_table_entry_itr; + } + + }; + + //destinations_to_trim.erase( destinations_to_trim.begin(), routing_table_entry_itr ); + + return; +}; + + + +inline void RouterNode::trim_routing_table_all_widths(){ + + //for_each(routing_table.begin(), routing_table.end(), RouterNode::trim_routing_table_specific_col); + routing_table_itr = routing_table.begin(); + + for (int fi = routing_table.size();fi >0 ;fi--, routing_table_itr++ ) + { + if ( (*routing_table_itr).second->destinations.size() > routing_table_width_threshold ) + { + trim_routing_table_specific_width( (*routing_table_itr).second ); + } + } + + return; +}; + + +//*************Above these are for trimming routing table and known routers list ********************* + + + + + + + + + +inline +QueryHandler::QueryHandler() +{ + /*expired =0;*/ + response_to_send_ptr = NULL; + query_to_send_ptr = NULL; + return; +}; + +/* +#ifdef DEBUG +inline +QueryHandler::QueryHandler(Infrastructure *passed_If_ptr) +{ + If_ptr = passed_If_ptr; + response_to_send_ptr = NULL; + query_to_send_ptr = NULL; + return; +}; +#endif +*/ + +/* + +QueryHandler::~QueryHandler() +{ + if (response_to_send_ptr) delete response_to_send_ptr; + else delete query_to_send_ptr; + //if (query_to_send_ptr) delete query_to_send_ptr; + return; +}; +*/ + +inline +void QueryHandler::transmit_response() +{ + //Send response +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( response_to_send_ptr->destination_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + parent_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_destination_node_id && + (*(response_to_send_ptr->description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u, type %d: submitting response with query seq num %u, to node %u, type %d to node %u, type %d\n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), parent_node_ptr->id, parent_node_ptr->node_type, + response_to_send_ptr->query_seq_num, response_to_send_ptr->destination_node_ptr->id , response_to_send_ptr->destination_node_ptr->node_type, + response_to_send_ptr->destination_node_ptr->id, response_to_send_ptr->destination_node_ptr->node_type ); +#endif + response_to_send_ptr->destination_node_ptr->submit_response( *response_to_send_ptr ); + //expired = 1; + return; +}; + +inline +void QueryHandler::transmit_query() +{ + +#ifdef DEBUG_L2 + + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_send_ptr->source_node_ptr->id == parent_node_ptr->If_ptr->param_ptr->trace_source_node_id && + (*(query_to_send_ptr->description.begin())) == parent_node_ptr->If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u, type %d forwarding query with query_seq num %u, source node %u, type %d, with tag %u to node %u, type %d\n", + parent_node_ptr->If_ptr->scheduler_ptr->now(), parent_node_ptr->id, parent_node_ptr->node_type, + query_to_send_ptr->query_seq_num, query_to_send_ptr->source_node_ptr->id , query_to_send_ptr->source_node_ptr->node_type, + (*(query_to_send_ptr->description.begin())), + query_to_send_ptr->destination_node_ptr->id, query_to_send_ptr->destination_node_ptr->node_type ); +#endif + + query_to_send_ptr->destination_node_ptr->submit_query( *query_to_send_ptr ); + //expired = 1; + return; +}; + + + + + + + +Node::Node(Infrastructure* passed_If_ptr) +{ + If_ptr = passed_If_ptr; + node_type = PRIMARY_NODE; + return; +}; + + +ResourceNode::ResourceNode( unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr) : Node(passed_If_ptr) + { + //For trimming + known_routers_floor = passed_known_routers_floor; + known_routers_trim_threshold = passed_known_routers_trim_threshold; + known_routers_capacity = passed_known_routers_capacity; + this_ptr = this; + known_routers_index_ptr = new KnownRoutersIndexEncapsulator(this); + + num_queries_to_submit_per_period = passed_num_queries_to_submit_per_period; + message_time_to_live = passed_message_time_to_live; + id = passed_id; + vitality = passed_vitality; + extroversion = passed_extroversion; + delay = passed_delay; + current_query_sequence_id = 0; + response_timeout = passed_response_timeout; + + description = passed_description; + bootstrap_nodes = passed_bootstrap_nodes; + + current_query_sequence_id =0; + node_type = RESOURCE_NODE; + /*Push it in resource node list for time being, will check and remove later in router node constructor if needed*/ + + If_ptr->list_of_resource_nodes.push_back(this); + +#ifdef DEBUG + listener_seq_id = 0; +#endif + + +#ifdef DEBUG + printf("Ticks:%u : Node %u : Node being created...\n", + If_ptr->scheduler_ptr->now(), id ); +#endif + +#ifdef DEBUG_NODE + + printf(" passed_message_time_to_live %u, passed_routing_table_capacity %u, passed_k %d, \n \ + passed_id %u, passed_vitality %d, passed_extroversion %d, passed_response_timeout %u, \n ", + + passed_message_time_to_live, passed_routing_table_capacity, passed_k, + passed_id, passed_vitality, passed_extroversion, passed_response_timeout ); + +#endif + + begin_life(bootstrap_nodes); + return; + }; + + ResourceNode::~ResourceNode() + { + cleanup(); + } + +inline void ResourceNode::cleanup(){ + +#ifdef DEBUG_NODE + printf("Resource node id %u getting deleted\n", /*(*bootstrap_nodes_itr)->id, */ id); +#endif + + description.clear(); + bootstrap_nodes.clear(); + + /*for (num_elements = query_bag_for_advertising.size(),query_itr = query_bag_for_advertising.begin(); + num_elements >0 ; + num_elements--,query_itr++ )*/ + query_itr = query_bag_for_advertising.begin(); + for (int fi = query_bag_for_advertising.size(); + fi >0 ; + fi--,query_itr++ ) + { + //sm24 + //If_ptr->list_of_queries.erase((*query_itr)->id); + delete (*query_itr); + } + query_bag_for_advertising.clear(); //Requires cleaning of Queries + +#ifdef DEBUG_NODE + printf("~ResourceNode(): Reached here, cleaning Listneners...\n"); +#endif + + /*for (num_elements = listener_array.size(),listener_itr = listener_array.begin(); + num_elements >0 ; + num_elements--,listener_itr++ )*/ + listener_itr = listener_array.begin(); + for (int fi = listener_array.size(); + fi >0 ; + fi--,listener_itr++ ) + delete (*listener_itr).second; + + listener_array.clear();// Requires cleaning of Listener pointers + + known_routers.clear(); + //query_handler_array.clear(); + +#ifdef DEBUG_NODE + printf("Finished cleaning up for Router node %u \n", id); +#endif + return; + } + + RouterNode::~RouterNode() + { +#ifdef DEBUG_NODE + printf("Router node id %u getting deleted\n", id); +#endif + + /*for (num_elements = query_bag_for_exploring.size(),query_itr = query_bag_for_exploring.begin(); + num_elements >0 ; + num_elements--,query_itr++ )*/ + query_itr = query_bag_for_exploring.begin(); + for (int fi = query_bag_for_exploring.size(); + fi >0 ; + fi--,query_itr++ ) + { + //If_ptr->list_of_queries.erase((*query_itr)->id); + delete (*query_itr); + } + query_bag_for_exploring.clear(); //Requires cleaning of Queries + + nearest_k.clear(); + knowledge.clear(); + resources_attached.clear(); + routers_attached.clear(); + descriptions_to_explore.clear(); + + RoutingTableIterator routing_table_itr = routing_table.begin(); + //while (routing_table_itr != routing_table.end()) + for(int fi=routing_table.size();fi>0;fi--) + { + ((*routing_table_itr).second)->destinations.clear(); + routing_table_itr++; + } + + routing_table.clear(); + +#ifdef DUPPACK_SET + query_already_received_set.clear(); +#endif + +#ifdef DUPPACK_CACHE + message_key_cache.clear(); +#endif +#ifdef DEBUG_NODE + printf("Finished cleaning up for Router node %u \n", id); +#endif + cleanup(); + + return; + } + +inline void ResourceNode::begin_life(BootstrapNodeList &bootstrap_nodes) { + /*typedef std::list< RouterNode * > BootstrapNodeList;*/ + + + bootstrap_action(); + + //To do, Schedule itself + //Create an event + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; +#endif + + //Create a functor, assign the object and its handling method corresponding to the event + /*SpecificFunctor(TClass* _pt2Object, void(TClass::*_fpt)()); */ + SpecificFunctor *functor_resource_node_ptr = + new SpecificFunctor( this, &ResourceNode::heartbeat ); + + handler_schedule_event_ptr->handler= functor_resource_node_ptr; + //Setup the periodicty + handler_schedule_event_ptr->time = vitality; + //Schedule the periodic event + If_ptr->scheduler_ptr->schedule_periodic( handler_schedule_event_ptr); + + return; + +}; + + +inline void ResourceNode::bootstrap_action(){ + + BootstrapNodeList::iterator bootstrap_nodes_itr = bootstrap_nodes.begin(); + //For each bootstrap node + //while (bootstrap_nodes_itr != bootstrap_nodes.end()) + for(int fi= bootstrap_nodes.size();fi>0;fi--) + { + + //router_node_to_attach_to_ptr = dynamic_cast(*bootstrap_nodes_itr); + router_node_to_attach_to_ptr = *bootstrap_nodes_itr; + +#ifdef DEBUG_NODE + printf("Inserting router node %u, type %u to known list of %u \n", router_node_to_attach_to_ptr->id, + router_node_to_attach_to_ptr->node_type, id); +#endif + + //Mark this as known anyway + known_routers.insert( + make_pair( (*router_node_to_attach_to_ptr).id , router_node_to_attach_to_ptr ) + ); +#ifdef DEBUG_L1 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + router_node_to_attach_to_ptr->id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("Ticks:%u : Node %u requesting router node %u to attach it \n", + If_ptr->scheduler_ptr->now(),id, router_node_to_attach_to_ptr->id ); +#endif + + if (! (*router_node_to_attach_to_ptr).attach_request(this)) + std::cout << "Node : "<< id << "failed to bootstrap with routernode : "<< + (*router_node_to_attach_to_ptr).id < known_routers; */ + { + +#ifdef DEBUG_NODE + printf("Bootstraping to router node : %u succeeded \n", router_node_to_attach_to_ptr->id); +#endif + } + + bootstrap_nodes_itr++; + + } + +#ifdef DEBUG + printf("Ticks:%u : Node %u: The routers known to this node are : ",If_ptr->scheduler_ptr->now(),id ); + print_map_known_routers( known_routers ); +#endif + + + //Update the query bag for self advertising purpose + update_query_bag(description, query_bag_for_advertising ); + + +#ifdef DEBUG_NODE + printf("Ticks:%u : Node %u, node type : %d : finished updating query bag\n", + If_ptr->scheduler_ptr->now(),id, node_type); +#endif + + +} + + +inline +void ResourceNode::heartbeat() { + +#ifdef DEBUG_NODE + printf("Ticks:%u : Node %u, node type %d : ResourceNode::heartbeat()... \n", + If_ptr->scheduler_ptr->now(),id, node_type); +#endif + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + { + printf("Ticks:%u : Node %u: ResourceNode::heartbeat()......\n", If_ptr->scheduler_ptr->now(),id ); + } +#endif + + periodic_housekeeping(); + + //Advertise itself + seek_new_routers_to_attach_to(); + + +#ifdef DEBUG_NODE + + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + print_listener_status(); +#endif + +#ifdef DEBUG_NODE + printf("ResourceNode::heartbeat(): Node heartbeat of node id %u, node type : %d, finished seeking routers to attach\n", id, node_type); +#endif + return; +}; + +//Known router trimming +inline +void ResourceNode::periodic_housekeeping(){ + + if (known_routers.size() > known_routers_capacity) trim_known_routers(); + +}; + + + + +inline +void RouterNode::heartbeat() { + +#ifdef DEBUG_NODE + printf("RouterNode::heartbeat(): Node heartbeat of node id %u, node type : %d \n", id, node_type); +#endif + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + { + printf("Ticks:%u : Node %u: RouterNode::heartbeat()......\n", If_ptr->scheduler_ptr->now(),id ); + } +#endif + print_routing_table(); + print_routing_table_index(); + + periodic_housekeeping(); + + //Advertise itself + seek_new_routers_to_attach_to(); + +#ifdef DEBUG_NODE + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + print_listener_status(); +#endif + + //Try to update its routing table (brought in from the RouterNode() ) + + /* + //Update router's resources that will be used to update the routing table, removed from RouterNode() + update_descriptions_to_explore(); + update_query_bag(descriptions_to_explore, query_bag_for_exploring); + + curr_query_bag_for_exploring_itr = query_bag_for_exploring.begin(); + + //Try to update its routing table + seek_new_resources_to_update_routing_table(); + + */ + + //Update router's resources that will be used to update the routing table + update_descriptions_to_explore(); + + /*Update the query bag for only those tags for which queries can be send (withing budget), + insert at the end of the list, then if budget is left out, send queries from the front of the list + based on the given list itr, the list itr needs to be updated based on the index + */ + + seek_new_resources_to_update_routing_table(); + + +#ifdef DEBUG_NODE + printf("RouterNode::heartbeat(): Node heartbeat of node id %u, node type : %d, finished seeking routers to attach\n", id, node_type); +#endif + return; +}; + + +inline void ResourceNode::seek_new_routers_to_attach_to() { + + /* Insert itself to its own known_routers list, this will ensure that the router sends queries + to all the other router nodes it knows through its routing table, in addition to its known_router list + this also requires that the rouuter should not respond to itself !! Fix that also in RouterNode::submit_query method*/ + //If itself is not inserted then insert itself, i.e. first time + if ( (node_type == ROUTER_NODE) && ( known_routers.find( id ) == known_routers.end() ) ) + { + + router_node_to_attach_to_ptr = dynamic_cast(this); + + // std::map< unsigned int, RouterNode *> known_routers; + known_routers.insert( + //make_pair( id , *(&router_node_to_attach_to_ptr) ) + make_pair( id , router_node_to_attach_to_ptr ) + ); + } + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + + { + + printf("Ticks:%u : Node %u: The routers attached to this node are : ", If_ptr->scheduler_ptr->now(),id ); + print_map_known_routers( known_routers ); + printf("Ticks:%u : Node %u: Advertising phase: Seeking new routers, sending %u queries, other routers should start receiving them...\n", + If_ptr->scheduler_ptr->now(),id , query_bag_for_advertising.size() ); + } +#endif + + query_itr = query_bag_for_advertising.begin(); + + send_queries_from(query_bag_for_advertising, query_itr, query_bag_for_advertising.size()); + + return; +} + + + + +inline void ResourceNode::send_queries_from(std::list &query_bag, std::list::iterator & curr_query_bag_itr , int num_queries_to_send) { + + + //For each query + //query_itr = query_bag.begin(); + //while ( query_itr != query_bag.end() ) + //for (num_elements = 0 ; num_elements < num_queries_to_send;num_elements++ ) + for(int fi=0;fiparam_ptr->trace_source_node_id && + (*((*curr_query_bag_itr)->description.begin())) == If_ptr->param_ptr->trace_tag ) + +#ifdef ALL_USERNODE_PACKETS + || ( node_type == USER_NODE ) +#endif + ) + +#endif + + printf("Ticks:%u : Node id %u, node type : %d : allocating a listener with id %u, for tag %u, query seq num to use is %u, scheduling its time out, the event_id is %u\n", + If_ptr->scheduler_ptr->now(),id, node_type, listener_seq_id, (*((*curr_query_bag_itr)->description.begin())), + current_query_sequence_id, If_ptr->event_id ); +#endif + + //Setup a dedicated listener for this query + listener_ptr = new Listener(this, current_query_sequence_id); + +#ifdef DEBUG + listener_ptr->id = listener_seq_id; //For troubleshooting + listener_seq_id++; +#endif + + + //Insert Listener in the array + //current_query_sequence_id_ptr = new int; + //*current_query_sequence_id_ptr = current_query_sequence_id; + //listener_array.insert( make_pair(*current_query_sequence_id_ptr, listener_ptr) ); + //The line below replaces the three lines above, this cut downs memory leakage due to (new int) + listener_array.insert( make_pair(current_query_sequence_id, listener_ptr) ); + + //Schedule the time out for this listener; + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; + //handler_schedule_event_ptr->message_to_handle_ptr = 0; + +#endif + + /*SpecificFunctor(TClass* _pt2Object, void(TClass::*_fpt)());*/ + functor_listener_ptr = new SpecificFunctor( listener_ptr, + &Listener::handle_recvd_responses ); + + handler_schedule_event_ptr->handler= functor_listener_ptr; + handler_schedule_event_ptr->time = response_timeout + If_ptr->scheduler_ptr->now(); + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); + + //Identify a router from the aquinstance list, submit a query to it + router_node_address_itr = known_routers.begin(); + //while (router_node_address_itr != known_routers.end()) + for(int fi=known_routers.size();fi>0;fi--) + { + //Make a new Query + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + //If_ptr->query_id++; + If_ptr->database_ptr->Num_total_queries_generated++; + //SM: ADD PROBE - new message generated by router--node : update total message generation + //Suneil Jul-1 + + switch (node_type) + { + case RESOURCE_NODE: + If_ptr->database_ptr->Queries_sent_from_ResourceNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->Num_of_queries_for_specific_tag[*( (*curr_query_bag_itr)->description.begin() )]++; + break; + case ROUTER_NODE: + If_ptr->database_ptr->Queries_sent_from_RouterNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->Num_of_queries_for_specific_tag[*( (*curr_query_bag_itr)->description.begin() )]++; + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Queries_sent_from_UserNode++; + If_ptr->database_ptr->Num_total_message_generated_for_UserNode++; + If_ptr->database_ptr->Num_of_queries_for_specific_tag_from_UserNode[*( (*curr_query_bag_itr)->description.begin() )]++; + + + } + + //*query_ptr = *(*query_itr); + *query_ptr = *(*curr_query_bag_itr); //This is where the problem lies + + //(*query_ptr).id = If_ptr->query_id - 1; // This solves the previous problem, that id was rewritten when the whole query obj was copied + + query_ptr->query_seq_num = current_query_sequence_id; + + query_ptr->destination_node_ptr = (*router_node_address_itr).second; + //query_ptr->destination_node_id = query_ptr->destination_node_ptr->id; + query_ptr->destination_node_id = (*router_node_address_itr).first; //Reduces memory dereferencing and cache hit + + + /* std::map< unsigned int, RouterNode *> known_routers;*/ +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id) + && (*((*query_ptr).description.begin())) == If_ptr->param_ptr->trace_tag +#ifdef ALL_USERNODE_PACKETS + /*|| ( node_type == USER_NODE ) */ +#endif + + ) + +#endif + { + + printf("Ticks:%u : Node %u: Sending query to router id %u, query_seq_num as %u, filter %u, with description tags :", + If_ptr->scheduler_ptr->now(),id ,(*(*router_node_address_itr).second).id, query_ptr->query_seq_num, query_ptr->only_to_node_type ); + print_map_description( (*curr_query_bag_itr)->description ); + } +#endif + + query_ptr->destination_node_ptr->submit_query(*query_ptr); + + router_node_address_itr++; + }//end of loop for routers + + //query_itr++; + curr_query_bag_itr++; + current_query_sequence_id++; + + }//end of loop for queries + + + return; +} + + + +inline void RouterNode::update_descriptions_to_explore() { + + /* + For each description item (tag), get all the tags from ontology repository within "extroversion" hops + from the given description item, then load these descriptions in the "descriptions_to_explore" + */ + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("Ticks:%u : Node %u: Exploration phase ...\n", If_ptr->scheduler_ptr->now(),id ); + +#endif + + + /*for (num_elements = num_centroid_tags_to_explore_per_period; + num_elements > 0 ; + num_elements--,description_budget_itr++ )*/ + for (int fi= num_centroid_tags_to_explore_per_period; + fi > 0 ; + fi--,description_budget_itr++ ) + { + //If all description centroid topics are scanned once, then increment the radius and start scanning again + if (description_budget_itr == description.end()) + { + semantic_space_inner_radius = semantic_space_inner_radius + extroversion; + description_budget_itr = description.begin(); + } + + /*If_ptr->onto_repository_ptr->generate_new_neighbors_to_explore( (*description_budget_itr), semantic_space_inner_radius, + extroversion, nearest_k);*/ + generate_new_neighbors_to_explore( (*description_budget_itr) , semantic_space_inner_radius, + extroversion /*, nearest_k*/); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + printf("Ticks:%u : Node %u: RouterNode %u, type %d : for centroid tag %u and inner radius %u, the nearest_k contents are : ", + If_ptr->scheduler_ptr->now(),id, id, node_type, *description_budget_itr, semantic_space_inner_radius); + +#endif + + /*for (num_elements1 = nearest_k.size(),nearest_k_itr = nearest_k.begin(); + num_elements1 > 0 ; + num_elements1--,nearest_k_itr++ )*/ + nearest_k_itr = nearest_k.begin(); + for (int fj = nearest_k.size(); + fj > 0 ; + fj--,nearest_k_itr++ ) + { + //Attempts to insert, if matching item does not exist then returns true + //and the item is inserted in the temp_description_to_explore + //This filter out only the new tags that were not explored earlier + if ( (descriptions_to_explore.insert( *nearest_k_itr )).second ) + temp_descriptions_to_explore.insert( *nearest_k_itr ) ; + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + printf("%u ,", *nearest_k_itr); + +#endif + } + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) + +#endif + printf("\n"); +#endif + + + + } + + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) + { + printf("Ticks:%u : Node %u: RouterNode %u, type %d : the descriptions_to_explore conents are : ", + If_ptr->scheduler_ptr->now(),id, id, node_type); + + /* for (num_elements = descriptions_to_explore.size(),description_itr = descriptions_to_explore.begin(); + num_elements > 0 ; + num_elements--,description_itr++ )*/ + description_itr = descriptions_to_explore.begin(); + for (int fk = descriptions_to_explore.size(); + fk > 0 ; + fk--,description_itr++ ) + printf("%u ,", *description_itr); + printf("\n"); + + printf("Ticks:%u : Node %u: RouterNode %u, type %d : the temp_descriptions_to_explore contents are : ", + If_ptr->scheduler_ptr->now(),id, id, node_type); + + + /* for (num_elements = temp_descriptions_to_explore.size(), + description_itr = temp_descriptions_to_explore.begin(); + num_elements > 0 ; + num_elements--,description_itr++ )*/ + + description_itr = temp_descriptions_to_explore.begin(); + for (int fk = temp_descriptions_to_explore.size(); + fk > 0 ; + fk--,description_itr++ ) + printf("%u ,", *description_itr); + printf("\n"); + + } +#endif + +#endif + +}; + + + + + +inline void RouterNode::seek_new_resources_to_update_routing_table() { + + +#ifdef DEBUG_NODE + printf("\nNode id %u, node type : %d : seek_new_resources_to_update_routing_table(): finished updating query bag\n", id, node_type); +#endif +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + + { + + printf("Ticks:%u : Node %u: The routers attached to this node are : ",If_ptr->scheduler_ptr->now(),id ); + print_map_known_routers( known_routers ); + printf("Ticks:%u : Node %u: Exploration phase : Seeking new resources and routers, sending %u queries, other resources and routers should start receiving them...\n" + , If_ptr->scheduler_ptr->now(),id , num_queries_to_submit_per_period); + + } +#endif + + + for ( num_elements1 = num_queries_to_submit_per_period ; + num_elements1 > 0 && ! (temp_descriptions_to_explore.empty()) ; + num_elements1--) + { + + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + + + //If_ptr->query_id++; + + query_ptr->source_node_id = id; + query_ptr->source_node_ptr = this; + query_ptr->time_to_live = message_time_to_live; + switch (node_type) + { + case RESOURCE_NODE: + query_ptr->only_to_node_type = TO_ROUTER_NODE; + break; + + case USER_NODE: + query_ptr->only_to_node_type = TO_RESOURCE_NODE; + + } + + query_ptr->description.insert( *(temp_descriptions_to_explore.begin()) ); //Copy semantics so should not be probblem + + query_bag_for_exploring.push_back(query_ptr); + temp_query_bag_for_exploring.push_back(query_ptr); + + temp_descriptions_to_explore.erase( (temp_descriptions_to_explore.begin()) ); + + + }// Loop on description + + query_itr = temp_query_bag_for_exploring.begin(); + send_queries_from(temp_query_bag_for_exploring, query_itr, temp_query_bag_for_exploring.size() ); + temp_query_bag_for_exploring.clear(); + + //If residual budget is left out then send queries from old queries from query_bag_for_exploring + query_itr = query_bag_for_exploring.begin(); + if (num_elements1) + send_queries_from(query_bag_for_exploring, query_itr, num_elements1 ); + + return; + +}; + + + +inline void ResourceNode::update_query_bag(Description &from_description, std::list &to_query_bag){ + + description_itr = from_description.begin(); +#ifdef DEBUG_NODE + if (node_type == USER_NODE) + printf("Ticks:%u : Node id %u, node type : %d : update_query_bag_for_advertising() : total description size is %d, Tag values are: ", + If_ptr->scheduler_ptr->now(),id, node_type, description.size() ); +#endif + + //while ( description_itr != from_description.end()) + for(int fi=from_description.size();fi>0;fi--) + { + //tag_to_use_for_query_ptr = new Tag;//This was source of memeory leak !! removed it + //*tag_to_use_for_query_ptr = (*description_itr); + + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + + + //If_ptr->query_id++; + + query_ptr->source_node_id = id; + query_ptr->source_node_ptr = this; + query_ptr->time_to_live = message_time_to_live; + switch (node_type) + { + case RESOURCE_NODE: + query_ptr->only_to_node_type = TO_ROUTER_NODE; + break; + /* The Query normaly has this fixed to both nodes, so save a few instructions here by not repeating + case ROUTER_NODE: + query_ptr->only_to_node_type = TO_RESOURCE_NODE | TO_ROUTER_NODE; + break; + */ + + case USER_NODE: + query_ptr->only_to_node_type = TO_RESOURCE_NODE; + + } + + //query_ptr->description.insert( *tag_to_use_for_query_ptr ); + query_ptr->description.insert( *description_itr ); //Copy semantics so should not be probblem + + to_query_bag.push_back(query_ptr); + + description_itr++; + +#ifdef DEBUG_NODE + if (node_type == USER_NODE) + printf(" %d ", *description_itr); +#endif + + + + }// Loop on description + +#ifdef DEBUG_NODE + if (node_type == USER_NODE) + printf("\n"); +#endif + + + return; +}; //end of update_query_bag_for_advertising() + + + + +inline void ResourceNode::submit_response(Response &submitted_response) { + + submitted_response.hop_count++; + +#ifdef DEBUG_L2 + //printf("ResourceNode::submit_response: Reached here \n"); + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + submitted_response.source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(submitted_response.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Response with query_seq_num %u, Tag %u, received by Node id %u, node type %d, with source node %u, type %d\n", + //If_ptr->scheduler_ptr->now(),submitted_response.query_seq_num, (*(submitted_response.description.begin())).first , id, node_type, submitted_response.source_node_ptr->id, submitted_response.source_node_ptr->node_type ); + If_ptr->scheduler_ptr->now(),id, submitted_response.query_seq_num, (*(submitted_response.description.begin())) , id, node_type, submitted_response.source_node_ptr->id, submitted_response.source_node_ptr->node_type ); + //printf("Response received by Node id %u, node type : %d \n", id, node_type); + //if (submitted_response.source_node_id == id) printf("This router node has submitted a response to itself\n"); +#endif + + + if ( submitted_response.destination_node_id != id ) + { std::cout << "Error: This node :" << id << + " should not receive this response from node :" + << submitted_response.source_node_id << ", the destination actually is " + <list_of_responses.erase(submitted_response.id); + delete &submitted_response; + + //If_ptr->list_of_messages.erase(&submitted_response); + + cout<<"Deleted the response"< listener_array; + + if ( listener_itr != listener_array.end() ) + { + (*((*listener_itr).second)).recv(submitted_response); + + } + else { + + std::cout << "Ticks:"<scheduler_ptr->now()<<" : Node "<list_of_responses.erase(submitted_response.id); + delete &submitted_response; + + //If_ptr->list_of_messages.erase(&submitted_response); + + cout<<"Deleted the response"<id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id && + (*(submitted_query.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Query with query_seq_num %u, Tag %u, received by Node id %u, node type %d, with source node node %u, type %d\n", + //If_ptr->scheduler_ptr->now(),submitted_query.query_seq_num, (*(submitted_query.description.begin())).first, id, + If_ptr->scheduler_ptr->now(),id,submitted_query.query_seq_num, (*(submitted_query.description.begin())), id, + node_type, submitted_query.source_node_ptr->id, submitted_query.source_node_ptr->node_type ); + + //printf("Response received by Node id %u, node type : %d \n", id, node_type); + //if (submitted_response.source_node_id == id) printf("This router node has submitted a response to itself\n"); +#endif + + /* + if (submitted_query.source_node_id != id) submitted_query.hop_count++; //Why is this like this ?? What is the point of incrementing hoop count again ? + else cout <<"Error : this resource node has submitted a query to itself\n"<< endl; + */ + if (submitted_query.source_node_id == id) + { + cout <<"Error : this resource node has submitted a query to itself\n"<< endl; + goto drop_query; + } + + + //if (submitted_query.hop_count >= submitted_query.time_to_live) + if ( can_accept_message(submitted_query) ) + { + + //description_matched = verify_against_description(Query &submitted_query); + /* + If matched, then allocate a handler with response action + if not matched then drop it is not for this resource node + */ + +#ifdef DEBUG_NODE + printf("ResourceNode::submit_query(): Reached here 1: Query received by Node id %u, node type : %d : ", id, node_type); +#endif + + //if ( ( submitted_query.source_node_id != id) && verify_against_description(submitted_query) ) + if ( verify_against_description(submitted_query) ) //No need for submitted_query.source_node_id != id, as that is already checked above + { + +#ifdef DEBUG_NODE + printf("ResourceNode::submit_query(): Reached here 2 : Query received by Node id %u, node type : %d : allocating a query handler, scheduling its response action\n", id, node_type); +#endif + + response_action(submitted_query); + } + + } + + drop_query: + //Now drop the message + //sm24 + //If_ptr->list_of_queries.erase(submitted_query.id); + delete &submitted_query; + + //If_ptr->list_of_messages.erase(&submitted_query); + + //Also report this to the database that query has been deleted (for matching of memory leakage audit purpose + + return; +}; + + + +inline void ResourceNode::response_action(Query &query_to_handle) { + + /*Check for message only_to_node_type filter, if not meant for router + then this function should have no impact (returns) */ + + if ( (query_to_handle.source_node_ptr->node_type== USER_NODE) && + !( + ((query_to_handle.only_to_node_type & TO_ROUTER_NODE) && (node_type == ROUTER_NODE)) || + + ((query_to_handle.only_to_node_type & TO_RESOURCE_NODE) && (node_type == RESOURCE_NODE)) + ) + ) + { + + return; + } + + //send response to sender + //Construct a response + response_ptr = new Response(); + + //sm24 + //If_ptr->list_of_responses.insert(make_pair(If_ptr->response_id,response_ptr)); + + //If_ptr->response_id++; + If_ptr->database_ptr->Num_total_responses_generated++; + //SM: ADD PROBE : Update num responses sent: 'total-responses' + + + switch (query_to_handle.source_node_ptr->node_type) + { + case RESOURCE_NODE: + If_ptr->database_ptr->Responses_sent_from_ResourceNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->record_hops(query_to_handle.hop_count,If_ptr->database_ptr->hops_before_response_ctr ); //Suneil + break; + + case ROUTER_NODE: + If_ptr->database_ptr->Responses_sent_from_RouterNode++; + If_ptr->database_ptr->Num_total_message_generated++; + If_ptr->database_ptr->record_hops(query_to_handle.hop_count,If_ptr->database_ptr->hops_before_response_ctr ); //Suneil + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_responses_sent_for_UserNode++; + If_ptr->database_ptr->Num_total_message_generated_for_UserNode++; + If_ptr->database_ptr->record_hops(query_to_handle.hop_count,If_ptr->database_ptr->hops_before_response_ctr_for_UserNode ); //Suneil + + } + + response_ptr->time_to_live = message_time_to_live; + + response_ptr->source_node_id = id; + response_ptr->source_node_ptr = this; + + response_ptr->destination_node_id = query_to_handle.source_node_id; + response_ptr->destination_node_ptr = query_to_handle.source_node_ptr; + + response_ptr->query_seq_num = query_to_handle.query_seq_num; + response_ptr->description = query_to_handle.description ; + response_ptr->hop_count = 0; + + + //Transfer the list content to the response, so that src node could infer from that +#ifdef DETECT_LOOP + //unsigned int node_visited[64]; + memcpy( response_ptr->node_visited, query_to_handle.node_visited, NODE_VISTED_LIST_BYTES); +#endif + + query_handler_ptr = new QueryHandler(); + query_handler_ptr->response_to_send_ptr = response_ptr; + + //Schedule the wake up time for this QueryHandler; + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG_NODE + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id && + (*(query_to_handle.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: ResourceNode::response_action(): query description %u copied to response description %u\n", + //(*(query_to_handle.description.begin())).first, (*(response_ptr->description.begin())).first ); + If_ptr->scheduler_ptr->now(),id,(*(query_to_handle.description.begin())), (*(response_ptr->description.begin())) ); +#endif + + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; + //handler_schedule_event_ptr->message_to_handle_ptr = &query_to_handle; + query_handler_ptr->parent_node_ptr = this; +#endif + + //Set up handler with submit response function + functor_handler_ptr = new SpecificFunctor( query_handler_ptr, + &QueryHandler::transmit_response); + + handler_schedule_event_ptr->handler= functor_handler_ptr; + handler_schedule_event_ptr->time = delay + If_ptr->scheduler_ptr->now(); + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); + + + return; +}; + + + + +inline int ResourceNode::verify_against_description(Query &submitted_query) { + + /*For now we define success as if atleast the query's description and node's + description matches for one tag */ + //For each tag in the query, try to identify a matching tag in the node's description + description_itr = submitted_query.description.begin(); + //while (description_itr != submitted_query.description.end()) + for(int fi= submitted_query.description.size();fi>0;fi--) + { + //Check if there is a single match + //if ( description.find( (*description_itr).first ) != description.end() ) + if ( description.find( (*description_itr) ) != description.end() ) + { + +#ifdef DEBUG_NODE + printf("Ticks:%u : Node %u: ResourceNode::verify_against_description():Received by node %u, type %u, match found for the query\n", + If_ptr->scheduler_ptr->now(),id ,id, node_type); +#endif + return 1; + } + description_itr++; + } + +#ifdef DEBUG_NODE + printf("ResourceNode::verify_against_description(): Reached here 1: Received by node %u, type %u, no match found for the query\n", id, node_type); +#endif + + return 0; +}; + + + +inline bool ResourceNode::can_accept_message(Message &submitted_message){ + + //Check for TTL + if (submitted_message.hop_count > submitted_message.time_to_live) + { + //Update the TTL counters in database, Report dropping due to TTL + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it has expired TTL, the hop count was %u, the TTL was %u\n", + submitted_message.hop_count, submitted_message.time_to_live ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL++; + } + break; + case USER_NODE: + //For external queries from user node + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL_for_UserNode++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL_for_UserNode++; + } + + }//End of outer switch + + + return 0; + } + + return 1; + +}; + + + +inline bool RouterNode::can_accept_message(Message &submitted_message){ + + + //Check for TTL + if (submitted_message.hop_count > submitted_message.time_to_live) + { + //Update the TTL counters in database + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it has expired TTL, the hop count was %u, the TTL was %u\n", + submitted_message.hop_count, submitted_message.time_to_live ); +#endif + + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL++; + } + break; + case USER_NODE: + //For external queries from user node + switch (submitted_message.type ) + { + case QUERY: + If_ptr->database_ptr->Num_queries_dropped_for_TTL_for_UserNode++; + break; + case RESPONSE: + If_ptr->database_ptr->Num_responses_dropped_for_TTL_for_UserNode++; + } + + }//End of outer switch + + + return 0; + } + + //Check for duplicate packets + +#ifdef DUPPACK_SET + query_key = make_pair( submitted_message.source_node_ptr->id, submitted_message.query_seq_num ); + if ( query_already_received_set.find( query_key ) + != query_already_received_set.end() ) + { + //Update the duplicate message counters in database + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id ) && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it is duplicate, identified by DUPPACK_SET\n" ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + If_ptr->database_ptr->Num_duplicate_message_dropped++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL ); //Suneil + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_duplicate_message_dropped_for_UserNode++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL_for_UserNode ); //Suneil + }//End of switch + + return 0; + } +#ifdef DEBUG_L2 + else + +#ifdef SELECTIVE_PACKET_FILTER + if ( (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id ) && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", unique message\n" ); +#endif + query_already_received_set.insert( query_already_received_set.begin(), query_key ); + +#endif //End of DUPPACK_SET + +#ifdef DUPPACK_CACHE + + //Check for duplicate packets + /*message_key = Message_key( submitted_message.source_node_ptr->id, + submitted_message.query_seq_num, If_ptr->god.now() + If_ptr->param_ptr->RouterNode_duplicate_message_cache_timeout );*/ + //message_key.id = submitted_message.source_node_id; + //message_key.seq_num = submitted_message.query_seq_num; + message_key.key.first = submitted_message.source_node_id; + message_key.key.second = submitted_message.query_seq_num; + + message_key.time_to_expire = If_ptr->scheduler_ptr->now() + If_ptr->param_ptr->RouterNode_duplicate_message_cache_timeout; + + if ( message_key_cache.find( message_key ) != message_key_cache.end() ) + { + //Update the duplicate message counters in database + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it is duplicate, identified by DUPPACK_CACHE\n" ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + If_ptr->database_ptr->Num_duplicate_message_dropped++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL ); //Suneil + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_duplicate_message_dropped_for_UserNode++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_TTL_for_UserNode ); //Suneil + + }//End of switch + + + + return 0; + } +#ifdef DEBUG_L2 + else +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", unique message\n" ); +#endif + + message_key_cache.insert( message_key_cache.begin(), message_key ); +#endif //End of DUPPACK_CACHE + + +//added Suneil 9/28/07 +#ifdef DETECT_LOOP + + //Check for duplicate receipt in the node. + //Duplicate receipt is searched for by traversing a list of visited nodes from the node_visited[]. + //node_visited has 63 entries and one length field. node_visited[0] is the length field. + //Duplicate packets are dropped. + +/*First check whether the current node is in the list - if list length is 0 then not in the list, if non 0 length then actually search +if present in the list, then mark it as duplicate packet and return 0 (that the packet cant be accepted) +if not present in the list then insert the node id at the position given by length field +*/ + if(submitted_message.node_visited[0]) + { + + //Actually search the list + for (int i=1; i <= submitted_message.node_visited[0]; i++) + { + if (submitted_message.node_visited[i]== id) + { + //Dup packet !! +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(", but dropped as it going in loops, identified by DETECT_LOOP\n" ); +#endif + + switch (submitted_message.source_node_ptr->node_type) + { + case RESOURCE_NODE: + case ROUTER_NODE: + If_ptr->database_ptr->Num_looping_message_dropped++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_loop ); //Suneil + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_looping_message_dropped_for_UserNode++; + If_ptr->database_ptr->record_hops(submitted_message.hop_count,If_ptr->database_ptr->longevity_of_message_ctr_for_loop_for_UserNode ); //Suneil + + }//End of switch + + + return 0; + } + } + + } + + submitted_message.node_visited[0]++; + submitted_message.node_visited[submitted_message.node_visited[0]] = id; + +#ifdef DEBUG_L2 +#ifdef SELECTIVE_PACKET_FILTER + if (submitted_message.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_message.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + printf(", non-looping message\n" ); +#endif + +#endif //close of DETECT_LOOP + + + return 1; + +}; + + + +RouterNode::RouterNode( unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr ) : + ResourceNode( passed_message_time_to_live, + + passed_known_routers_floor, + passed_known_routers_trim_threshold, + passed_known_routers_capacity, + + passed_routing_table_length_floor, + passed_routing_table_length_trim_threshold, + passed_routing_table_max_length, + + passed_routing_table_width_floor, + passed_routing_table_width_threshold, + passed_routing_table_min_num_resource_nodes, + passed_routing_table_max_width, + + passed_k, passed_num_centroid_tags_to_explore_per_period, + passed_num_queries_to_submit_per_period, + passed_description, passed_id, passed_vitality, passed_extroversion, + passed_delay, + passed_response_timeout, passed_bootstrap_nodes, + passed_If_ptr ) + + ,routing_table_index(( routing_table_rows_greater_than(this_ptr) )) //For trimming + { + + routing_table_length_floor = passed_routing_table_length_floor; + routing_table_length_trim_threshold = passed_routing_table_length_trim_threshold; + routing_table_max_length = passed_routing_table_max_length; + + routing_table_width_floor = passed_routing_table_width_floor; + routing_table_width_threshold = passed_routing_table_width_threshold; + routing_table_min_num_resource_nodes = passed_routing_table_min_num_resource_nodes; + routing_table_max_width = passed_routing_table_max_width; + + k= passed_k; /*routing_table_capacity = passed_routing_table_capacity; */ routing_table_size =0; + + node_type = ROUTER_NODE; + //Insert itself in the infrastructure holder std::map list_of_router_nodes; */ + //Remove itself from resource list, to avoid duplication + If_ptr->list_of_resource_nodes.pop_back(); + If_ptr->list_of_router_nodes.push_back( this ); + +#ifdef DEBUG_NODE + printf("Node %u inserted itself to the router list\n", id); +#endif +#ifdef DEBUG_L1 + printf("Ticks:%u : Node %u: This created node %u is a router node\n",If_ptr->scheduler_ptr->now(),id, id); +#endif +#ifdef DEBUG_L2 + print_routing_table(); +#endif + num_centroid_tags_to_explore_per_period = passed_num_centroid_tags_to_explore_per_period; + semantic_space_inner_radius = 0;//To ensure that explorations starts with focus vertices + description_budget_itr = description.begin(); + + descriptions_to_explore = passed_description; // This will ensure that temp_descriptions_to_explore does not get loaded with description items + + all_distances_ptr = &(If_ptr->onto_repository_ptr->all_distances); + num_vertices_at_onto_ptr = &(If_ptr->onto_repository_ptr->num_vertices) ; + return; + }; + + + + +inline void RouterNode::submit_query(Query &submitted_query) +{ + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( submitted_query.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id + && (*(submitted_query.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + { + + /* + + printf("Ticks:%u ",If_ptr->scheduler_ptr->now()); + printf(": Query with query_seq_num %u Tag %u, ",submitted_query.query_seq_num, (*(submitted_query.description.begin())) ); + printf(" received by Router Node id %u, type %d with source node %u, type %d\n", + id, node_type, submitted_query.source_node_id, submitted_query.source_node_ptr->node_type ); + */ + + printf("Ticks:%u : Node %u: Query with query_seq_num %u Tag %u, received by Router Node id %u, type %d with source node %u, type %d, tag %u\n", + //If_ptr->scheduler_ptr->now(),submitted_query.query_seq_num, (*(submitted_query.description.begin())).first , + If_ptr->scheduler_ptr->now(),id,submitted_query.query_seq_num, (*(submitted_query.description.begin())) , + id, node_type, submitted_query.source_node_id, submitted_query.source_node_ptr->node_type,(*(submitted_query.description.begin())) ); + //printf("RouterNode::submit_query(): Query content: node id %u, seq num %u \n", submitted_query.source_node_id, submitted_query.query_seq_num); + } +#endif + +/* + if (submitted_query.source_node_id != id) submitted_query.hop_count++; //Why is this like this ?? See comments in similar situation in resource node +#ifdef DEBUG_NODE + else cout <<"This router node has submitted a query to itself\n"<< endl; +#endif +*/ + + if (submitted_query.source_node_id != id) + submitted_query.hop_count++; +#ifdef DEBUG_NODE + else std::cout <<"This router node has submitted a query to itself\n"<< endl; +#endif + + //Checks for TTL + if (can_accept_message(submitted_query)) + { + + //Match against description + //description_matched = verify_against_description(Query &submitted_query); + + /* + If matched, then allocate a handler with response action + if not matched then setup handler with multicast action + */ + //Ensure that the query submitted to itself (router node) is not matched with its own description + if ( ( submitted_query.source_node_id != id) && verify_against_description(submitted_query) ) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( submitted_query.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*(submitted_query.description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + //printf("Match found for Tag %u, so will be sending a response\n", (*(submitted_query.description.begin())).first ); + printf("Ticks:%u : Node %u: Match found for Tag %u, so will be sending a response back to query orginator node %u, type %u\n", + If_ptr->scheduler_ptr->now(),id,(*(submitted_query.description.begin())), + submitted_query.source_node_ptr->id, submitted_query.source_node_ptr->node_type); +#endif + + response_action(submitted_query); + + + + } + + selective_multicast_action(submitted_query); + + + } + + //Now drop it anyway + //sm24 + //If_ptr->list_of_queries.erase(submitted_query.id); + delete &submitted_query; + + + //If_ptr->list_of_messages.erase(&submitted_query); + + //Also report this to the database that query has been deleted (for matching of memory leakage audit purpose + + return; +} + +//This method decides the routing of packets +inline void RouterNode::selective_multicast_action(Query &query_to_handle) { + + description_itr = query_to_handle.description.begin(); +//printf("Reached here 1\n"); + //while ( description_itr != query_to_handle.description.end()) + for(int fi=query_to_handle.description.size();fi>0;fi--) + { +//printf("Reached here 2\n"); + //nearest_k = If_ptr->onto_repository_ptr->nearest_neighbors( (*description_itr),k, knowledge ); + //If_ptr->onto_repository_ptr->generate_nearest_neighbors( (*description_itr),k, knowledge, nearest_k ); + generate_nearest_neighbors( (*description_itr)/*,k, knowledge, nearest_k */ ); +//printf("Reached here 3\n"); +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*description_itr) == If_ptr->param_ptr->trace_tag ) +#endif + { + printf("Ticks:%u : Node %u: For query_seq num %u, source node %u, Tag %u matched to top k =%u routing table Tags:", + If_ptr->scheduler_ptr->now(), id, + query_to_handle.query_seq_num, query_to_handle.source_node_ptr->id , (*description_itr), k ); + + print_nearest_k(); + + printf("Ticks:%u : Node %u: For query_seq num %u, source node %u, Tag %u matched to top k =%u routing table tag-node pair entries : ", + If_ptr->scheduler_ptr->now(), id, + query_to_handle.query_seq_num, query_to_handle.source_node_ptr->id , (*description_itr), k ); + + } +#endif + + nearest_k_itr = nearest_k.begin(); +//printf("Reached here 4\n"); + //for (int i=nearest_k.size(); nearest_k_itr != nearest_k.end() ; /*i++,*/ nearest_k_itr++) + /*for(num_elements = nearest_k.size(),nearest_k_itr = nearest_k.begin(); + num_elements >0 ; num_elements--, nearest_k_itr++)*/ + + for (int i = nearest_k.size(); i >0 ; i--,nearest_k_itr++ ) + { +//printf("Reached here 5\n"); + routing_table_entry_itr = (routing_table[*nearest_k_itr])->destinations.begin(); +//printf("Reached here 6\n"); + //while (routing_table_entry_itr != (routing_table[*nearest_k_itr]).end()) + for(int fi= (routing_table[*nearest_k_itr])->destinations.size();fi>0;fi--) + { +//printf("Reached here 7\n"); + /* + This if block implements the filter, if the query is meant only for a particular class of node, + it goes only to the nodes of that class. + Simiilarly the filter ensures that any packet from a node is not forwarded back to that node + */ + + /* + if ( ( (*routing_table_entry_itr)->node_type == query_to_handle.only_to_node_type) && + ( (*routing_table_entry_itr)->id != query_to_handle.source_node_id) ) + */ + if ( routing_filter( (*routing_table_entry_itr), query_to_handle) ) + { + +//printf("Reached here 8\n"); + query_ptr = new Query(); + //query_ptr = new Query(If_ptr->query_id); + //sm24 + + //If_ptr->list_of_queries.insert(make_pair(If_ptr->query_id,query_ptr)); + //If_ptr->query_id++; + //If_ptr->database_ptr->Num_total_queries_generated++; + //Suneil: SM: ADD PROBE -- query generation -- update total messages generated. + switch (query_to_handle.source_node_ptr->node_type) + { + case RESOURCE_NODE: + If_ptr->database_ptr->Queries_forwarded_by_RouterNode_orgininated_from_ResourceNode++; + If_ptr->database_ptr->Num_total_message_generated++; + + case ROUTER_NODE: + If_ptr->database_ptr->Queries_forwarded_by_RouterNode_orgininated_from_RouterNode++; + If_ptr->database_ptr->Num_total_message_generated++; + + break; + case USER_NODE: + //For external queries from user node + If_ptr->database_ptr->Num_total_message_generated_for_UserNode++; + } + + /*Make a deep copy of the received query, to multicast it all the nodes + in the row of the routing table */ + *query_ptr = query_to_handle; + + query_ptr->destination_node_ptr = *routing_table_entry_itr; + query_ptr->destination_node_id = (*routing_table_entry_itr)->id; + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*description_itr) == If_ptr->param_ptr->trace_tag ) +#endif + printf(" tag %u:next hop node %u, type %u,", *nearest_k_itr, (*routing_table_entry_itr)->id, (*routing_table_entry_itr)->node_type ); + +#endif + + + //Seems + query_handler_ptr = new QueryHandler(); + query_handler_ptr->query_to_send_ptr = query_ptr; + + //Schedule the wake up time for this QueryHandler; + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + handler_schedule_event_ptr->node_ptr = this; + //handler_schedule_event_ptr->message_to_handle_ptr = &query_to_handle; + query_handler_ptr->parent_node_ptr = this; +#endif + + //Setup handler with multicast action + functor_handler_ptr = new SpecificFunctor( query_handler_ptr, + &QueryHandler::transmit_query); + + handler_schedule_event_ptr->handler = functor_handler_ptr; + handler_schedule_event_ptr->time = delay + If_ptr->scheduler_ptr->now(); + If_ptr->scheduler_ptr->schedule_event( handler_schedule_event_ptr); +//printf("Reached here 9\n"); + } + + + routing_table_entry_itr++; + + + } + } + + + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( query_to_handle.source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + (*description_itr) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("\n"); +#endif + + + description_itr++; + }// Loop on description + + return; + +}; + + +inline bool RouterNode::routing_filter( ResourceNode *resource_node_entry_in_routing_table_ptr, Query &query_to_route ) +{ + // This if block implements the filter, if the query is meant only for a particular class of node, + //it goes only to the nodes of that class. + //Simiilarly the filter ensures that any packet from a node is not forwarded back to that node + /* + switch (query_to_route.only_to_node_type) + { + case TO_RES_NODE : + + break; + case TO_RTR_NODE : + + break; + case TO_RES_RTR_NODE : + + break; + default : + return 0; + } + */ + /*This ensures that the a query is forwarded to the node types which is mentioned int the message filter (see Message.hpp) + is not forwarded to its source ever */ + + return (resource_node_entry_in_routing_table_ptr->node_type & query_to_route.only_to_node_type) && + ( resource_node_entry_in_routing_table_ptr->id != query_to_route.source_node_id); + +}; + + +inline int RouterNode::attach_request(ResourceNode* passed_node_ptr) { + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("Ticks:%u : Node %u : Attach request received from node %u, type %d", + If_ptr->scheduler_ptr->now(),id, passed_node_ptr->id ,passed_node_ptr->node_type); +#endif + + if ( can_accept(passed_node_ptr) ) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + + printf(" for Tags : ", + id, passed_node_ptr->id ,passed_node_ptr->node_type); +#endif + + + // if ( routing_table_size >= routing_table_capacity ) free_space_in_routing_table(); + + //Get the passed node's description's tags, for each tag, take action + description_itr = passed_node_ptr->description.begin(); + //while (description_itr != passed_node_ptr->description.end()) + for(int fi=passed_node_ptr->description.size() ;fi>0;fi--) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + //printf("%u ", (*description_itr).first); + printf("%u ", (*description_itr)); +#endif + + //Check if there is a single match + //if ( description.find( (*description_itr).first ) == description.end() ) //Why are we matching against description, should match against routing table + //if ( routing_table.find( (*description_itr).first ) == routing_table.end() ) + if ( routing_table.find( (*description_itr) ) == routing_table.end() ) + { +//printf("Reached here 1\n"); + //No match , so new row in the routing table is needed + +//printf("Reached here 2\n"); + + //But check for space for a new row/rows + //RT length trimming + if (routing_table.size() >= routing_table_max_length ) trim_routing_table_length(); + + //Insert in knowledge repository and in new routing table row + //knowledge.push_back((*description_itr).first); + knowledge.push_back((*description_itr)); +//printf("Reached here 3\n"); + + //Also push the tags in its own description, so that the routing table entries also becomes description + //descriptions_to_explore.insert((*description_itr)); + if ( (descriptions_to_explore.insert( *description_itr )).second ) + temp_descriptions_to_explore.insert( *description_itr ) ; //This is added to adapt it to the incremental exploration +//printf("Reached here 4\n"); + + //Create a routing table row entry + //routing_table_row_obj_ptr = new list; + //routing_table_row_obj.clear(); + + routing_table_row_obj_ptr = new RoutingTableRow(this_ptr); + (routing_table_row_obj_ptr->destinations).insert(passed_node_ptr); +//printf("Reached here 5\n"); + //Increment the resource counter + if (passed_node_ptr->node_type == RESOURCE_NODE) routing_table_row_obj_ptr->num_resource_nodes++; + + //routing_table_row_obj.push_back( passed_node_ptr ); + + routing_table.insert( make_pair( (*description_itr), routing_table_row_obj_ptr) ); +//printf("Reached here 6\n"); + + printf("\nPrint routing table index before insertion\n");print_routing_table_index(); + //Need to insert the new tag in the routing_table_index also + routing_table_index.insert(*description_itr); + printf("\nPrint routing table index after insertion\n");print_routing_table_index(); + +//printf("Reached here 7\n"); + + } + else + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf("(matched) "); +#endif +//printf("Reached here 1a\n"); + + routing_table_row_obj_ptr = (*(routing_table).find(*description_itr) ).second; + + //Specific Width trimming + if (routing_table_row_obj_ptr->destinations.size() > routing_table_max_width) + trim_routing_table_specific_width(routing_table_row_obj_ptr); +//printf("Reached here 2a\n"); + + //Tag already exists, so just enter in the suitable row + //((*(routing_table).find(*description_itr)).second->destinations).insert(passed_node_ptr); + (routing_table_row_obj_ptr->destinations).insert(passed_node_ptr); + //Increment the resource counter + if (passed_node_ptr->node_type == RESOURCE_NODE) routing_table_row_obj_ptr->num_resource_nodes++; +//printf("Reached here 3a\n"); + + + } + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(", "); +#endif + + description_itr++; + } + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(" : suceeded"); +#endif + + //routing_table_capacity++; + return 1; + } + else + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( passed_node_ptr->id == If_ptr->param_ptr->trace_source_node_id && + id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(" : failed"); +#endif + + return 0; + } +} + + + +inline void RouterNode::periodic_housekeeping() { + + //RT length trimming + if (routing_table.size() >= routing_table_length_trim_threshold ) trim_routing_table_length(); + + //Cleanup the duplicate_message_cache + +#ifdef DUPPACK_CACHE + +#ifdef DEBUG_L2 +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id ) +#endif + printf("Ticks %u: Node %u: RouterNode::periodic_housekeeping(): Cleaning up cache....\n", + If_ptr->scheduler_ptr->now(), id ); +#endif + + message_key_cache_itr = message_key_cache.begin(); + //message_key_to_remove_itr = message_key_cache_itr; + Tick curr_time = If_ptr->scheduler_ptr->now(); + + //while ( message_key_cache_itr != message_key_cache.end() ) + for(int fi = message_key_cache.size();fi>0;fi--) + { + //message_key_cache_itr++; + if ( (*message_key_cache_itr).time_to_expire <= curr_time ) + { + //message_key_cache.erase(message_key_to_remove_itr); + //message_key_to_remove_itr = message_key_cache.begin(); + message_key_cache.erase(message_key_cache_itr++); + fi--; + } + else { + + ++message_key_cache_itr; + } + + } +#endif + return; +}; + +inline +void ResourceNode::handle_recvd_response(Response *curr_response_ptr) { + + /* Check whether the response is from router or resource node. + There should not be any response from any resource node - why ??? with such protocol the routing table can not be populated !! + because only the resource seeks to attach, not router !! Ensure that the old protocol isnt working- now it is ok + because in the query update bag, the queries now have the filter fixed to bboth res and rtr nodes, earlier it was only to rtr nodes + */ + /* + if (curr_response_ptr->source_node_ptr->node_type != ROUTER_NODE) + { + std::cout<<"Error: The response to seek_router_node() query is not from a router node, troubleshoot" <source_node_ptr->node_type == ROUTER_NODE) + { + +/* +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Processing response received from node %u, type %d, tag %u, query_seq_num %u \n", + If_ptr->scheduler_ptr->now(),id, curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num); + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num); +#endif +*/ + + //No need to check if USER_NODE, becoz this virtual methhod will only kick in if RESOURCE_NODE + //Report num of response + //Suneil + If_ptr->database_ptr->Num_of_good_responses++; //This ok for time being as we consider all reponses received as good response + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag[*(curr_response_ptr->description.begin())]++; + //SM:ADD PROBE- update good-response counter. + + + + /* + Update resource nodes addressbook - known_routers + check if the current response is from a router node that it has already attached to in past. + if that router node is not in the attached to list then attach to it, else ignore that response + Also check that for an entry which is itself there should not be any action taken-> this is + not a problem as we ensure that a router/resource node does not respond to itself + */ + //if ( ( known_routers.find( (responses.front()).source_node_id ) == + if ( ( known_routers.find( curr_response_ptr->source_node_id ) == + known_routers.end() ) ) + { + //New router, so send attach request +#ifdef DEBUG_LISTENER + printf("Listener::handle_recvd_responses() : ((responses.front()).source_node_ptr)->id is %u, type is %d \n", + //((responses.front()).source_node_ptr)->id, ((responses.front()).source_node_ptr)->node_type ); + curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type ); +#endif + + //Dynamic ptr casting to derived class + //router_node_ptr = dynamic_cast(curr_response_ptr->source_node_ptr); + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u: Sending attach request to node %u, type %u for tag %u query_seq_num %u\n", + If_ptr->scheduler_ptr->now(),id,curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num ); +#endif + + //router_node_ptr->attach_request(this); + curr_response_ptr->source_node_ptr->attach_request(this); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id ) +#endif + + printf(" for Tag %u\n ",(*(curr_response_ptr->description.begin())) );//This is to ensure that attache request is related to a tag +#endif + /* + known_routers.insert( + make_pair( curr_response_ptr->source_node_id , + dynamic_cast< RouterNode* >( curr_response_ptr->source_node_ptr ) ) + ); + */ + + curr_router_ptr = dynamic_cast< RouterNode* >( curr_response_ptr->source_node_ptr ); + + known_routers.insert( make_pair( curr_response_ptr->source_node_id , curr_router_ptr) ); + + //This is a new router, so insert it in the known_routers_index + (*known_routers_index_ptr).insert(curr_router_ptr); + + } +#ifdef DEBUG_L2 + + else + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + + printf("Ticks:%u : Node %u: Seems this router node %u is already known to %u and was attached to %u earlier, so not sending attach request now\n", + If_ptr->scheduler_ptr->now(),id, curr_response_ptr->source_node_ptr->id, id, curr_response_ptr->source_node_ptr->id); +#endif + + + } + + /*If this node is also a router node then, insert the sender in it routing table, + and known resource node list, description etc. All these are in the method */ + if (node_type == ROUTER_NODE) update_routing_table_action(curr_response_ptr); + + return; +}; + + + +inline void RouterNode::update_routing_table_action(Response *curr_response_ptr) { + + switch (curr_response_ptr->source_node_ptr->node_type) + { + case RES_NODE: + /* + check if the current response is from a resource node that it has already attached to its own routing table in past. + if that resource node is not in the attached to list then attach to it, else ignore that response + */ + if ( ( resources_attached.find( curr_response_ptr->source_node_id ) == + resources_attached.end() ) ) + { + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u : Inserting this resource node %u, type %u for tag %u query_seq_num %u, to its own (node %u, type %d) routing table\n", + If_ptr->scheduler_ptr->now(),id, curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num, + id, node_type); +#endif + //New resource node, so send attach request to itself + attach_request(curr_response_ptr->source_node_ptr); + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(" for Tag %u\n",(*(curr_response_ptr->description.begin())) );//This is to ensure that attache request is related to a tag +#endif + + + + //Insert into the known resource list + resources_attached.insert( + make_pair( curr_response_ptr->source_node_id , curr_response_ptr->source_node_ptr ) + ); + + } +#ifdef DEBUG_L2 + + else + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag) +#endif + + printf("Ticks:%u : Node %u : Seems this resource node %u is already known to this node %u and was inserted in the routing table earlier, so not inserting again\n", + If_ptr->scheduler_ptr->now(),id ,curr_response_ptr->source_node_ptr->id, id); +#endif + break; + case RTR_NODE: + /* + check if the current response is from a router node that it has already attached to its own routing table in past. + if that router node is not in the attached to list then attach to it, else ignore that response + Also check that for an entry which is itself there should not be any action taken-> this is + not a problem as we ensure that a router/resource node does not respond to itself + */ + //if ( ( known_routers.find( (responses.front()).source_node_id ) == + if ( ( routers_attached.find( curr_response_ptr->source_node_id ) == + routers_attached.end() ) ) + { + //New router, so send attach request + + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf("Ticks:%u : Node %u : Inserting this router node %u, type %u for tag %u query_seq_num %u, to its own (node %u, type %d) routing table\n", + If_ptr->scheduler_ptr->now(),id ,curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + //(*(curr_response_ptr->description.begin())).first, curr_response_ptr->query_seq_num, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num, + id, node_type); +#endif + + + attach_request(curr_response_ptr->source_node_ptr); + +#ifdef DEBUG_L2 + +#ifdef SELECTIVE_PACKET_FILTER + if ( (id == If_ptr->param_ptr->trace_source_node_id || id == If_ptr->param_ptr->trace_destination_node_id ) && + (curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id || + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_source_node_id )&& + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) +#endif + + printf(" for Tag %u\n",(*(curr_response_ptr->description.begin())) );//This is to ensure that attache request is related to a tag +#endif + + + routers_attached.insert( + make_pair( curr_response_ptr->source_node_id , + dynamic_cast< RouterNode* >( curr_response_ptr->source_node_ptr ) ) + ); + + + } +#ifdef DEBUG_L2 + + else { + +#ifdef SELECTIVE_PACKET_FILTER + if (id == If_ptr->param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag) +#endif + + printf("Ticks:%u : Node %u : Seems this router node %u is already known to this node %u and was inserted in the routing table earlier, so not inserting again\n", + If_ptr->scheduler_ptr->now(),id , curr_response_ptr->query_seq_num,curr_response_ptr->source_node_ptr->id, id, id); + } +#endif + } + + + + return; + +}; + + +//Need to fix these two later +//inline void RouterNode::free_space_in_routing_table() { return;}; +inline int RouterNode::can_accept(Node* passed_node_ptr) {return 1;}; + + + + +inline void RouterNode::generate_nearest_neighbors(Tag focus_vertice /*, int k, const std::vector &neighbors, std::list &nearest_k*/) { + + nearest_k.clear(); //The list object is made a permenant resource for reuse + //unsigned int current_list_size=0; + + //for (unsigned int num_vertices_i=0;num_vertices_i < neighbors.size() ; num_vertices_i++) + for (unsigned int num_vertices_io=0,current_list_size=0,fko = knowledge.size(); fko>0 ; num_vertices_io++,fko--) + { + nearest_k_itr = nearest_k.begin(); + if (current_list_size < k) //We havent recorded the nearest k yet, so fill it up + { + + //Insert the node in the return list, at proper location + //Find location to insert + for( int i = nearest_k.size(); + i>0 && (*all_distances_ptr)[focus_vertice][knowledge[num_vertices_io]] < (*all_distances_ptr)[focus_vertice][*nearest_k_itr]; + i-- ) nearest_k_itr++; + + nearest_k.insert(nearest_k_itr,knowledge[num_vertices_io]); + current_list_size++; + + } else { //nearest k neighbors have been recorded, now lets adjust the list + /*First check whether the current neghbor will be within nearest k, if yes then + Remove the biggest element in the list to create a space for a nearer neighbor */ + + if ( (*all_distances_ptr)[focus_vertice][knowledge[num_vertices_io]] < (*all_distances_ptr)[focus_vertice][*nearest_k_itr]) + { + nearest_k.pop_front(); + + //Insert nearer neighbor + //Find location to insert + nearest_k_itr = nearest_k.begin(); + for( int i = nearest_k.size(); + i>0 && (*all_distances_ptr)[focus_vertice][knowledge[num_vertices_io]] < (*all_distances_ptr)[focus_vertice][*nearest_k_itr]; + i-- ) nearest_k_itr++; + + nearest_k.insert(nearest_k_itr,knowledge[num_vertices_io]); + + } //end of if ( all_distances[focus_vertice][neighbors[i]] < *nearest_k_itr) + + }//end of if (current_list_size < k) + + + }//end of for loop + + return; +}; + +inline int RouterNode::distance(Tag vertice1, Tag vertice2) { + + return (*all_distances_ptr)[vertice1][vertice2]; + +}; + +inline void RouterNode::generate_neighbors_to_explore(Tag focus_vertice, int radius /*, std::list &nearest_k*/) { + + nearest_k.clear(); + for (unsigned int num_vertices_io=0; num_vertices_io < *num_vertices_at_onto_ptr ; num_vertices_io++) + { + if ( (*all_distances_ptr)[focus_vertice][num_vertices_io] <= radius) + nearest_k.push_back( num_vertices_io ); + } + + return ; +}; + + +//Code added by Suneil for the exploration around the known areas. +// added 10/18/07 + +inline void RouterNode::generate_new_neighbors_to_explore(Tag focus_vertice, int inner_radius, int radius_increment /*, std::list &nearest_k*/) { + + nearest_k.clear(); + + int outer_radius = inner_radius + radius_increment ; + + for (unsigned int num_vertices_io=0; num_vertices_io < *num_vertices_at_onto_ptr ; num_vertices_io++) + { + //we are trying to find those nodes that are outside the current radius, with the outer circle being the hop radius + // plus the radius_increment. But since we don't want to rediscover the already known nodes, we ask for those + // nodes that are outside the inner_radius but inside the circle of inner_radius + radius_increment. + // Circular strip of Inside radius = inner_radius, outer radius = inner_radius + radius_increment. + if ( ((*all_distances_ptr)[focus_vertice][num_vertices_io] > inner_radius) && ((*all_distances_ptr)[focus_vertice][num_vertices_io] <= outer_radius) ) + nearest_k.push_back( num_vertices_io ); + + } + + return ; +}; + + + + + + + + +UserNode::UserNode(unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr ) : + ResourceNode(passed_message_time_to_live, + + passed_known_routers_floor, + passed_known_routers_trim_threshold, + passed_known_routers_capacity, + + passed_routing_table_length_floor, + passed_routing_table_length_trim_threshold, + passed_routing_table_max_length, + + passed_routing_table_width_floor, + passed_routing_table_width_threshold, + passed_routing_table_min_num_resource_nodes, + passed_routing_table_max_width, + + + passed_k, passed_num_centroid_tags_to_explore_per_period, + passed_num_queries_to_submit_per_period, + passed_description, passed_id, passed_vitality, passed_extroversion, + passed_delay, + passed_response_timeout, passed_bootstrap_nodes, + passed_If_ptr ) + { + node_type = USER_NODE; + //Get the user noode out of the resource node list + If_ptr->list_of_resource_nodes.pop_back(); + If_ptr->list_of_user_nodes.push_back(this); + + }; + + + +void UserNode::heartbeat(){ + +#ifdef DEBUG + printf("Ticks:%u : Node %u, node type : %d: UserNode::heartbeat()...... \n", If_ptr->scheduler_ptr->now(),id, node_type); +#endif + + + /* + Choose k random tags, load them in the description (clear description before that), + update query bag, generate random bootstrap nodes, and send the queries to those nodes + */ + + + generate_random_description(num_queries_to_submit_per_period); + + //Flush the query_bag_for_advertising, to get started with new queries + query_bag_for_advertising.clear(); + + update_query_bag(description, query_bag_for_advertising ); + generate_random_bootstrap_nodes(extroversion); + query_itr = query_bag_for_advertising.begin(); + send_queries_from( query_bag_for_advertising, query_itr, query_bag_for_advertising.size() ); + +}; + +inline +void UserNode::handle_recvd_response(Response *curr_response_ptr) { + + + //Check for errors, or malformed responses + if (curr_response_ptr->source_node_ptr->node_type != RESOURCE_NODE || curr_response_ptr->destination_node_id != id ) + std::cout<<"Error: UserNode::handle_recvd_response(): malformed response received at UserNode"<param_ptr->trace_source_node_id && + curr_response_ptr->source_node_ptr->id == If_ptr->param_ptr->trace_destination_node_id && + (*(curr_response_ptr->description.begin())) == If_ptr->param_ptr->trace_tag ) + +#ifdef ALL_USERNODE_PACKETS + || ( node_type == USER_NODE ) +#endif + ) + +#endif + printf("Ticks:%u : Node %u: Noted successful recall from node %u, type %u for tag %u query_seq_num %u\n", + If_ptr->scheduler_ptr->now(),id,curr_response_ptr->source_node_ptr->id, curr_response_ptr->source_node_ptr->node_type, + (*(curr_response_ptr->description.begin())), curr_response_ptr->query_seq_num ); +#endif + + + //Report good responses + If_ptr->database_ptr->Num_of_good_responses_for_UserNode++; + If_ptr->database_ptr->Num_of_good_responses_for_specific_tag_for_UserNode[*(curr_response_ptr->description.begin())]++; + } +}; + + + + +void inline UserNode::generate_random_description(unsigned int num_description) { + int i=0; +#ifdef DEBUG + printf("Ticks:%u : Node %u: User Queries submitted to network for tags :",If_ptr->scheduler_ptr->now(),id ); +#endif + description.clear(); + +#ifdef DEBUG_L2 +#ifdef SELECTIVE_PACKET_FILTER + if (If_ptr->param_ptr->trace_source_node_id == 4294967292) + { + description.insert( If_ptr->param_ptr->trace_tag ); + printf(" %u,", If_ptr->param_ptr->trace_tag); + i++; + } +#endif +#endif + + //Fill the description with random tags + //for (int i=0;ionto_repository_ptr->num_vertices)+1); + generated_random_tag = (rand() % If_ptr->onto_repository_ptr->num_vertices); + + //generated_random_description.insert( make_pair( generated_random_tag, generated_random_tag) ); + if (description.find(generated_random_tag) == description.end()) + { + description.insert( generated_random_tag ); + i++; +#ifdef DEBUG + printf(" %u,", generated_random_tag); +#endif + } + } + +#ifdef DEBUG + printf("\n"); +#endif + return; + }; + + +void inline UserNode::generate_random_bootstrap_nodes(unsigned int num_bootstrap_nodes) { + + + //Flush the bootstrap list from the old cycle + known_routers.clear(); + index_of_nodes_to_bootstrap_to.clear(); + +#ifdef DEBUG + printf("Ticks:%u : Node %u: User Queries will be submitted to routers with ids :",If_ptr->scheduler_ptr->now(),id); +#endif + + for (int i=0;ilist_of_router_nodes.size() ) ); + + if (index_of_nodes_to_bootstrap_to.find(generated_random_index) == index_of_nodes_to_bootstrap_to.end()) + { + //index_of_nodes_to_bootstrap_to.insert( make_pair(generated_random_index, generated_random_index) ); + index_of_nodes_to_bootstrap_to.insert( generated_random_index ); + router_node_to_attach_to_ptr = If_ptr->list_of_router_nodes[ generated_random_index ]; + +#ifdef DEBUG + printf(" %u", router_node_to_attach_to_ptr->id ); +#endif + + //nodes_to_bootstrap_to.push_back( &(*(If_ptr->list_of_router_nodes[ generated_random_index ])) ); + known_routers.insert( + make_pair( generated_random_index , router_node_to_attach_to_ptr ) + ); + + i++; + } +#ifdef DEBUG_FAULT1 + else + { + printf("skipped %u ,", generated_random_index); + } +#endif + } + +#ifdef DEBUG + + printf("\n"); +#endif + + return; + +}; + + + + +#ifdef DEBUG + +inline void ResourceNode::print_query(Query &submitted_query){ + printf("source_node_id %u, destination_node_id %u, query_seq_num %u,hop_count %u, time_to_live %u, type %d\n", + submitted_query.source_node_id, submitted_query.destination_node_id, + submitted_query.query_seq_num, submitted_query.hop_count, submitted_query.time_to_live, submitted_query.type ); + +/* + printf("Verifying pointers \n"); + printf("source_node_ptr->id %u, destination_node_ptr->id %u\n", submitted_query.source_node_ptr->id, + submitted_query.destination_node_ptr->id); +*/ + return; +} + + + +/* +void ResourceNode::print_listener_status(){ + + // std::map listener_array; + + listener_itr = listener_array.begin(); + + printf("Tick: %u , Node %u, type %d : Printing listener status.....\n", If_ptr->scheduler_ptr->now(), id, node_type ); + + while (listener_itr != listener_array.end() ) + { + printf("Tick: %u , Node %u, type %d : Listener id %u has %u responses in it, expiry status %d\n", + If_ptr->scheduler_ptr->now(), id, node_type, + (*listener_itr).second->id, (*listener_itr).second->responses.size(), (*listener_itr).second->expired ); + + listener_itr++; + } + + return; +}; +*/ +#endif + +#ifdef DEBUG_L2 + +inline void RouterNode::print_routing_table_index(){ + + printf("routing_table_index contents are : "); + routing_table_index_itr = routing_table_index.begin(); + while(routing_table_index_itr != routing_table_index.end() ) + { + printf(" %u, ", *routing_table_index_itr); + routing_table_index_itr++; + } + + +} + + + + +inline void RouterNode::print_routing_table() + { + // + RoutingTableIterator print_routing_table_row_itr; + RoutingTableRowIterator print_routing_table_entry_itr; + + print_routing_table_row_itr = routing_table.begin(); + + printf("Ticks:%u : Node %u: Printing routing table of router node: ",If_ptr->scheduler_ptr->now(),id); + if (!routing_table.empty()) + { + cout<<"Node id : Row i : Description tag : List of Node id - node_type that are attached....."<destinations.begin() ; + + while ( print_routing_table_entry_itr != (*print_routing_table_row_itr).second->destinations.end() ) + { + cout<<" id "<<(*print_routing_table_entry_itr)->id<<" - type "<<(*print_routing_table_entry_itr)->node_type<<" ,"; + + print_routing_table_entry_itr++; + } + cout<0 ; num_elements--, nearest_k_itr++)*/ + for (int i = nearest_k.size(); i >0; i--, nearest_k_itr++) + printf(" %u,",*nearest_k_itr); + printf("\n"); + + + return; + } + + +#endif + diff --git a/OntologyRepository.cpp b/OntologyRepository.cpp new file mode 100755 index 0000000..4c804de --- /dev/null +++ b/OntologyRepository.cpp @@ -0,0 +1,171 @@ +#include "OntologyRepository.hpp" +#include "ForwardDeclaration.hpp" //Got from hpp +//#include "Allheader.hpp" + +OntologyRepository::OntologyRepository(Edge *list_of_edges, unsigned char *weight, unsigned int num_vert, unsigned int num_edg) { + + bool r; + num_vertices = num_vert; + num_edges = num_edg; + diameter=0; + //Making the matrices ready for bellman_ford for distance calculation from node 0 + std::vector distance(num_vertices, std::numeric_limits::max()); + std::vector parent(num_vertices,-1); + std::vector< std::vector > distance_creator_vector(num_vertices, distance); + all_distances = distance_creator_vector; + std::vector< std::vector > parent_creator_vector(num_vertices,parent); + all_parents = parent_creator_vector; + + EdgeGraph bellman_g(list_of_edges, (list_of_edges + num_edges) ); + + //Create the distance and parent matrix + for (unsigned int j = 0; j < num_vertices; ++j) + { + all_distances[j][j] = 0; + all_parents[j][j] = j; + + r = bellman_ford_shortest_paths(bellman_g, int (num_vertices), + boost::weight_map(weight).distance_map(&((all_distances[j])[0])).predecessor_map(&((all_parents[j])[0]))); + + for (unsigned int k = 0; k < num_vertices; ++k) + if (all_distances[j][k] > diameter) diameter = all_distances[j][k]; + } + return; +}; + + +OntologyRepository::~OntologyRepository() + { +#ifdef DEBUG + printf("Started cleaning up for OntologyRepository\n"); +#endif + + std::vector< std::vector >::iterator all_distances_itr; + std::vector< std::vector >::iterator all_parents_itr; + + unsigned int num_elements_to_clear; + + + for (num_elements_to_clear = all_distances.size(),all_distances_itr = all_distances.begin(); + num_elements_to_clear >0 ; + num_elements_to_clear--,all_distances_itr++ ) + { + (*all_distances_itr).clear(); + } + + for (num_elements_to_clear = all_parents.size(),all_parents_itr = all_parents.begin(); + num_elements_to_clear >0 ; + num_elements_to_clear--,all_parents_itr++ ) + { + (*all_parents_itr).clear(); + } + + all_parents.clear(); + all_distances.clear(); +#ifdef DEBUG + printf("Finished cleaning up for OntologyRepository\n"); +#endif + return; + } + + +/* + +void OntologyRepository::generate_nearest_neighbors(Tag focus_vertice, unsigned int k, const std::vector &neighbors, std::list &nearest_k) { + + nearest_k.clear(); //The list object is made a permenant resource for reuse + + current_list_size=0; + + //for (unsigned int num_vertices_i=0;num_vertices_i < neighbors.size() ; num_vertices_i++) + for (unsigned int num_vertices_i=0,fk = neighbors.size(); fk>0 ; num_vertices_i++,fk--) + { + nearest_k_itr = nearest_k.begin(); + if (current_list_size < k) //We havent recorded the nearest k yet, so fill it up + { + + //Insert the node in the return list, at proper location + //Find location to insert + //while ( !(nearest_k_itr == nearest_k.end()) && + // all_distances[focus_vertice][neighbors[num_vertices_i]] < all_distances[focus_vertice][*nearest_k_itr]) nearest_k_itr++; + // + for( int i = nearest_k.size(); + i>0 && all_distances[focus_vertice][neighbors[num_vertices_i]] < all_distances[focus_vertice][*nearest_k_itr]; + i-- ) nearest_k_itr++; + + nearest_k.insert(nearest_k_itr,neighbors[num_vertices_i]); + current_list_size++; + + } else { //nearest k neighbors have been recorded, now lets adjust the list + //First check whether the current neghbor will be within nearest k, if yes then + Remove the biggest element in the list to create a space for a nearer neighbor // + + if ( all_distances[focus_vertice][neighbors[num_vertices_i]] < all_distances[focus_vertice][*nearest_k_itr]) + { + nearest_k.pop_front(); + + //Insert nearer neighbor + //Find location to insert + nearest_k_itr = nearest_k.begin(); + //while (!(nearest_k_itr == nearest_k.end()) && + // all_distances[focus_vertice][neighbors[num_vertices_i]] < all_distances[focus_vertice][*nearest_k_itr]) nearest_k_itr++; + // + for( int i = nearest_k.size(); + i>0 && all_distances[focus_vertice][neighbors[num_vertices_i]] < all_distances[focus_vertice][*nearest_k_itr]; + i-- ) nearest_k_itr++; + + nearest_k.insert(nearest_k_itr,neighbors[num_vertices_i]); + + } //end of if ( all_distances[focus_vertice][neighbors[i]] < *nearest_k_itr) + + }//end of if (current_list_size < k) + + + }//end of for loop + + return; +}; + +int OntologyRepository::distance(Tag vertice1, Tag vertice2) { + + return all_distances[vertice1][vertice2]; + +}; + +void OntologyRepository::generate_neighbors_to_explore(Tag focus_vertice, unsigned int radius, std::list &nearest_k) { + + nearest_k.clear(); + for (unsigned int num_vertices_i=0; num_vertices_i < num_vertices ; num_vertices_i++) + { + if ( all_distances[focus_vertice][num_vertices_i] <= radius) + nearest_k.push_back( num_vertices_i ); + } + + return ; +}; + + +//Code added by Suneil for the exploration around the known areas. +// added 10/18/07 + +void OntologyRepository::generate_new_neighbors_to_explore(Tag focus_vertice, unsigned int inner_radius, unsigned int radius_increment, std::list &nearest_k) { + + nearest_k.clear(); + + unsigned int outer_radius = inner_radius + radius_increment ; + + for (unsigned int num_vertices_i=0; num_vertices_i < num_vertices ; num_vertices_i++) + { + //we are trying to find those nodes that are outside the current radius, with the outer circle being the hop radius + // plus the radius_increment. But since we don't want to rediscover the already known nodes, we ask for those + // nodes that are outside the inner_radius but inside the circle of inner_radius + radius_increment. + // Circular strip of Inside radius = inner_radius, outer radius = inner_radius + radius_increment. + if ( (all_distances[focus_vertice][num_vertices_i] > inner_radius) && (all_distances[focus_vertice][num_vertices_i] <= outer_radius) ) + nearest_k.push_back( num_vertices_i ); + + } + + return ; +}; + +*/ diff --git a/OntologyRepository.hpp b/OntologyRepository.hpp new file mode 100755 index 0000000..3280b30 --- /dev/null +++ b/OntologyRepository.hpp @@ -0,0 +1,51 @@ +#ifndef ONTOLOGY_HPP +#define ONTOLOGY_HPP + +#include +#include + +#include +#include +#include + +#include +#include // for boost::tie + +#include "ForwardDeclaration.hpp" + +//using namespace boost; + +class OntologyRepository { + + private: + //std::list nearest_k; + //std::list::iterator nearest_k_itr; + //Description nearest_description; + //unsigned int current_list_size; + //unsigned int num_vertices_i; + + public: + + unsigned int num_vertices, num_edges; + int diameter; + + std::vector< std::vector > all_distances; + std::vector< std::vector > all_parents; + + OntologyRepository(Edge *list_of_edges, unsigned char *weight, unsigned int num_vert, unsigned int num_edg); +/* + void generate_nearest_neighbors(Tag focus_vertice, unsigned int k, const std::vector &neighbors, std::list &nearest_k); + + void generate_neighbors_to_explore(Tag focus_vertice, unsigned int radius, std::list &nearest_k); + + void generate_new_neighbors_to_explore(Tag focus_vertice, unsigned int inner_radius, unsigned int radius_increment, std::list &nearest_k);//From Suneil + + int distance(Tag vertice1, Tag vertice2); +*/ + ~OntologyRepository(); + +}; + + + +#endif diff --git a/OntologyRepository.o b/OntologyRepository.o new file mode 100755 index 0000000..4157992 Binary files /dev/null and b/OntologyRepository.o differ diff --git a/OperationSimulator.hpp b/OperationSimulator.hpp new file mode 100755 index 0000000..74002f9 --- /dev/null +++ b/OperationSimulator.hpp @@ -0,0 +1,17 @@ +#ifndef OPERATIONSIMULATOR_HPP +#define OPERATIONSIMULATOR_HPP + +#include "ForwardDeclaration.hpp" + +#include "Node.hpp" +#include "Infrastructure.hpp" + + +void operation_simulation(Infrastructure * If_ptr); + +void operation_simulation(Infrastructure * If_ptr) { + + +}; + +#endif diff --git a/Pool.hpp b/Pool.hpp new file mode 100755 index 0000000..3e07758 --- /dev/null +++ b/Pool.hpp @@ -0,0 +1,56 @@ +#ifndef POOL_HPP +#define POOL_HPP +#include + +#include "ForwardDeclaration.hpp" +//#include "Event.hpp" + +template < class SpecificElement> +class Pool { + + unsigned int reload_size; + SpecificElement *curr_element_ptr; + + std::list available; + + void reload(unsigned int passed_reload_size){ + + for (unsigned int fi= passed_reload_size;fi>0 ;fi-- ) + { + curr_element_ptr = new SpecificElement(); + available.push_back(curr_element_ptr); + } + + }; + + public: + + Pool(unsigned int passed_pool_size, unsigned int passed_reload_size): reload_size(passed_reload_size) { + + reload(passed_pool_size); + + } + + + SpecificElement * get(){ + + if (!available.size()) reload(reload_size); + + curr_element_ptr = available.front(); + available.pop_front(); + + return curr_element_ptr; + } + + void return_freed(SpecificElement* &element_ptr){ + available.push_back(element_ptr); + + }; + + int size(){ return available.size();} + +}; + + + +#endif diff --git a/ProxyAgent.hpp b/ProxyAgent.hpp new file mode 100755 index 0000000..f03e047 --- /dev/null +++ b/ProxyAgent.hpp @@ -0,0 +1,676 @@ +/*To do + random description generator + complete creation of nodes + +*/ + +/* +class ProxyAgent:private Node { + + Tick period; + Tick start_time; + unsigned int num_cycles; + ProxyAgent( Tick passed_period, Tick passed_start_time,unsigned int passed_num_cycles) + { period =passed_period; start_time= passed_start_time; num_cycles = passed_num_cycles;}; + +}; +*/ +#ifndef PROXYAGENT_HPP +#define PROXYAGENT_HPP + +#include "ForwardDeclaration.hpp" + +#include "Node.hpp" +#include "Listener.hpp" +#include "Event.hpp" +#include "Infrastructure.hpp" +#include "OntologyRepository.hpp" + +#include "Database.hpp" //For num_resource_with_specific_tag + +template < class SpecificNode> +class BirthAgent : public Node { + + Tick period; + Tick start_time; + unsigned int total_budget; + int num_cycles_per_heartbeat; + + //unsigned int budget_for_router; + int budget_for_per_heartbeat; + + SpecificNode *agent_ptr; + //RouterNode* router_node_ptr; + + int bootstrap_threashold; + unsigned int message_time_to_live; + + NodeType node_type_to_pass_on; + int known_routers_floor; + int known_routers_trim_threshold; + int known_routers_capacity; + + int translation_radius; + + int routing_table_length_floor; + int routing_table_length_trim_threshold; + int routing_table_max_length; + + int routing_table_width_floor; + int routing_table_width_threshold; + int routing_table_min_num_resource_nodes; + int routing_table_max_width; + + int k; + int num_centroid_tags_to_explore_per_period; + int num_queries_to_submit_per_period; + + int max_num_description; + unsigned int vitality; + int extroversion; + Tick delay; + Tick response_timeout; + Infrastructure* If_ptr; + + Description generated_random_description; + Tag generated_random_tag; + + RouterNode *generated_random_bootstrap_node_ptr; + unsigned int generated_random_index; + BootstrapNodeList nodes_to_bootstrap_to; + //std::map index_of_nodes_to_bootstrap_to; + std::set index_of_nodes_to_bootstrap_to; + + SpecificFunctor *functor_handler_ptr; + Event *handler_schedule_event_ptr; + + + public: + BirthAgent( unsigned int passed_bootstrap_threashold, Tick passed_start_time, Tick passed_period, + unsigned int passed_total_num_cycles, int passed_num_cycles_per_heartbeat, + unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_max_num_description, + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, + Infrastructure* passed_If_ptr ); + + void setup(unsigned int passed_bootstrap_threashold, Tick passed_start_time, Tick passed_period, + unsigned int passed_total_num_cycles, int passed_num_cycles_per_heartbeat, + unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_max_num_description, + int passed_k,int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, + Infrastructure* passed_If_ptr ); + + void generate_random_description(int num_description); + + void generate_random_bootstrap_nodes( int num_bootstrap_nodes) ; + + void heartbeat(); + + ~BirthAgent() + { +#ifdef DEBUG + printf("Started cleaning up for BirthAgent\n"); +#endif + nodes_to_bootstrap_to.clear(); + index_of_nodes_to_bootstrap_to.clear(); + generated_random_description.clear(); + +#ifdef DEBUG + printf("Finished cleaning up for BirthAgent\n"); +#endif + + } +}; + + +template +BirthAgent::BirthAgent( unsigned int passed_bootstrap_threashold, Tick passed_start_time, Tick passed_period, + unsigned int passed_total_num_cycles, int passed_num_cycles_per_heartbeat, + unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_max_num_description, + int passed_k, int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, + Infrastructure* passed_If_ptr ) : Node(passed_If_ptr) + { + + if (typeid(SpecificNode) == typeid(ResourceNode) ) + { + node_type = BIRTHAGENT_RESOURCE_NODE; node_type_to_pass_on = RESOURCE_NODE; + id = std::numeric_limits::max(); + } + else if (typeid(SpecificNode) == typeid(RouterNode)) + { + node_type = BIRTHAGENT_ROUTER_NODE; node_type_to_pass_on = ROUTER_NODE; + id = std::numeric_limits::max() - 1; + } + else if (typeid(SpecificNode) == typeid(UserNode)) + { + node_type = BIRTHAGENT_USER_NODE; node_type_to_pass_on = USER_NODE; + id = std::numeric_limits::max() - 2; + } + + setup( passed_bootstrap_threashold, passed_start_time, passed_period, + passed_total_num_cycles, passed_num_cycles_per_heartbeat, + passed_message_time_to_live, + + passed_known_routers_floor, + passed_known_routers_trim_threshold, + passed_known_routers_capacity, + + passed_translation_radius, + + passed_routing_table_length_floor, + passed_routing_table_length_trim_threshold, + passed_routing_table_max_length, + + passed_routing_table_width_floor, + passed_routing_table_width_threshold, + passed_routing_table_min_num_resource_nodes, + passed_routing_table_max_width, + + passed_max_num_description, + passed_k, passed_num_centroid_tags_to_explore_per_period, + passed_num_queries_to_submit_per_period, + passed_vitality, passed_extroversion, + passed_delay, + passed_response_timeout, + passed_If_ptr ); + + return; + }; + + +template +void inline BirthAgent::setup(unsigned int passed_bootstrap_threashold, Tick passed_start_time, Tick passed_period, + unsigned int passed_total_num_cycles, int passed_num_cycles_per_heartbeat, + unsigned int passed_message_time_to_live, + + int passed_known_routers_floor, + int passed_known_routers_trim_threshold, + int passed_known_routers_capacity, + + int passed_translation_radius, + + int passed_routing_table_length_floor, + int passed_routing_table_length_trim_threshold, + int passed_routing_table_max_length, + + int passed_routing_table_width_floor, + int passed_routing_table_width_threshold, + int passed_routing_table_min_num_resource_nodes, + int passed_routing_table_max_width, + + int passed_max_num_description, + int passed_k,int passed_num_centroid_tags_to_explore_per_period, + int passed_num_queries_to_submit_per_period, + unsigned int passed_vitality, int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, + Infrastructure* passed_If_ptr ) + + { + + //agent_ptr =NULL; + period =passed_period; start_time= passed_start_time; + total_budget = passed_total_num_cycles; num_cycles_per_heartbeat = passed_num_cycles_per_heartbeat; + + bootstrap_threashold = passed_bootstrap_threashold; + start_time= passed_start_time; period = passed_period; + message_time_to_live = passed_message_time_to_live; + + known_routers_floor = passed_known_routers_floor; + known_routers_trim_threshold = passed_known_routers_trim_threshold; + known_routers_capacity = passed_known_routers_capacity; + + translation_radius = passed_translation_radius; + + routing_table_length_floor = passed_routing_table_length_floor; + routing_table_length_trim_threshold = passed_routing_table_length_trim_threshold; + routing_table_max_length = passed_routing_table_max_length; + + routing_table_width_floor = passed_routing_table_width_floor; + routing_table_width_threshold = passed_routing_table_width_threshold; + routing_table_min_num_resource_nodes = passed_routing_table_min_num_resource_nodes; + routing_table_max_width = passed_routing_table_max_width; + + + max_num_description = passed_max_num_description; k= passed_k; + num_centroid_tags_to_explore_per_period = passed_num_centroid_tags_to_explore_per_period; + num_queries_to_submit_per_period = passed_num_queries_to_submit_per_period; + vitality = passed_vitality; + extroversion = passed_extroversion; + delay = passed_delay; + response_timeout = passed_response_timeout; + If_ptr = passed_If_ptr; + + //Schedule itself + //Create an event + handler_schedule_event_ptr = new Event; + +#ifdef DEBUG + handler_schedule_event_ptr->event_id = If_ptr->event_id; + If_ptr->event_id++; + //handler_schedule_event_ptr->node_ptr = this; +#endif + + //Create a functor, assign the object and its handling method corresponding to the event + functor_handler_ptr = new SpecificFunctor( this, &BirthAgent::heartbeat ); + + handler_schedule_event_ptr->handler= functor_handler_ptr; + //Setup the periodicty + handler_schedule_event_ptr->time = period; + handler_schedule_event_ptr->start_time = start_time; + + //Schedule the periodic event + If_ptr->scheduler_ptr->schedule_periodic( handler_schedule_event_ptr); + +#ifdef DEBUG_PROXY + printf( " Created BirthAgent: with \n passed_bootstrap_threashold = %u , passed_start_time %u \n ,\ + passed_period %u, passed_num_cycles %u, passed_message_time_to_live %u \n \ + passed_routing_table_capacity %u, passed_max_num_description %u, passed_k %d, passed_vitality %d, \n \ + passed_delay, passed_extroversion %d, passed_response_timeout %u \n", + + passed_bootstrap_threashold, passed_start_time, + passed_period, passed_num_cycles, passed_message_time_to_live, + passed_routing_table_capacity, passed_max_num_description, passed_k, passed_vitality, + passed_delay, passed_extroversion, passed_response_timeout ); +#endif + return; + }; + + + + + + +template +void inline BirthAgent::generate_random_description( int num_description) { + +#ifdef DEBUG + printf("Generated random descriptions are :"); +#endif + generated_random_description.clear(); + + //Fill the description with random tags + for (int i=0;ionto_repository_ptr->num_vertices)+1); + generated_random_tag = (rand() % If_ptr->onto_repository_ptr->num_vertices); + + //generated_random_description.insert( make_pair( generated_random_tag, generated_random_tag) ); + generated_random_description.insert( generated_random_tag ); + + //Also update the counter which records the num of resources for a given tag + if (node_type == BIRTHAGENT_RESOURCE_NODE) + If_ptr->database_ptr->num_resource_with_specific_tag[ generated_random_tag ]++; + + if (node_type == BIRTHAGENT_ROUTER_NODE) + If_ptr->database_ptr->num_router_with_specific_tag[ generated_random_tag ]++; + +#ifdef DEBUG + printf(" %u", generated_random_tag); +#endif + + } + +#ifdef DEBUG + printf("\n"); +#endif + return; + }; + +template +void inline BirthAgent::generate_random_bootstrap_nodes( int num_bootstrap_nodes) { + +#ifdef DEBUG + printf("\nEnough bootstrap routers can be found\n"); + printf("Bootstrap nodes for this agent are :"); +#endif + + //Flush the bootstrap list from the old cycle + nodes_to_bootstrap_to.clear(); + index_of_nodes_to_bootstrap_to.clear(); + +#ifdef DEBUG_PROXY + printf("\nBoot strap list cleared\n"); +#endif + + for (int i=0;ilist_of_router_nodes.size() ) ); + + if (index_of_nodes_to_bootstrap_to.find(generated_random_index) == index_of_nodes_to_bootstrap_to.end()) + { + //index_of_nodes_to_bootstrap_to.insert( make_pair(generated_random_index, generated_random_index) ); + index_of_nodes_to_bootstrap_to.insert( generated_random_index ); +#ifdef DEBUG + printf(" id %u, type %d", (If_ptr->list_of_router_nodes[ generated_random_index ])->id, + (If_ptr->list_of_router_nodes[ generated_random_index ])->node_type ); +#endif + + //nodes_to_bootstrap_to.push_back( &(*(If_ptr->list_of_router_nodes[ generated_random_index ])) ); + nodes_to_bootstrap_to.push_back( (If_ptr->list_of_router_nodes[ generated_random_index ]) ); + i++; + } +#ifdef DEBUG_PROXY + else + { + printf("skipped %u ,", generated_random_index); + } +#endif + } + +#ifdef DEBUG + + printf("\n"); +#endif + + return; + +}; + + +template +void inline BirthAgent::heartbeat(){ + +#ifdef DEBUG + printf("BirthAgent :heartbeat node id %u, node type %d : fired at %u ticks \n", id, node_type, If_ptr->scheduler_ptr->now()); +#endif + + budget_for_per_heartbeat = num_cycles_per_heartbeat; + + //Check if enough router exist for bootstrapping, if not then create them + if( If_ptr->list_of_router_nodes.size() < bootstrap_threashold ) + { + + switch (node_type) + { + + case BIRTHAGENT_RESOURCE_NODE: + +#ifdef DEBUG + printf("Not enough bootstrap routers can be found, waiting for bootstrap routers to be added...\n"); +#endif + + return; + break; + + case BIRTHAGENT_ROUTER_NODE: + +#ifdef DEBUG + printf("Not enough router nodes existing to bootstrap, so creating some intial bootstrap router nodes \n"); +#endif + + + for (int i=0; ( i < bootstrap_threashold ) && ( total_budget > 0 ) && ( budget_for_per_heartbeat > 0 ); + i++, total_budget--,budget_for_per_heartbeat--) + { + + /* + unsigned int passed_message_time_to_live, unsigned int passed_routing_table_capacity, + int passed_k, Description passed_description, unsigned int passed_id, int passed_vitality, + int passed_extroversion, Tick passed_response_timeout, + BootstrapNodeList &passed_bootstrap_nodes, Infrastructure* passed_If_ptr + */ + generate_random_description(max_num_description); + + agent_ptr = new SpecificNode(message_time_to_live, + + node_type_to_pass_on, + known_routers_floor, + known_routers_trim_threshold, + known_routers_capacity, + + translation_radius, + + routing_table_length_floor, + routing_table_length_trim_threshold, + routing_table_max_length, + + routing_table_width_floor, + routing_table_width_threshold, + routing_table_min_num_resource_nodes, + routing_table_max_width, + + k, num_centroid_tags_to_explore_per_period, num_queries_to_submit_per_period, + generated_random_description, If_ptr->agent_id, vitality, extroversion, + delay, response_timeout, nodes_to_bootstrap_to, If_ptr ); + + /* Push in the router node generated in the previous cycle, + this will avoid bootstrapping to itself */ + nodes_to_bootstrap_to.push_back( If_ptr->list_of_router_nodes.back()); + + If_ptr->agent_id++; + } + + }//end of switch + + } + + + for (; ( total_budget > 0 ) && ( budget_for_per_heartbeat > 0 ); total_budget--,budget_for_per_heartbeat-- ) + { + // + //Create bootstrap nodes depending on whether this is a router or resource birth agent + switch (node_type) + { + case BIRTHAGENT_USER_NODE: + + nodes_to_bootstrap_to.clear(); + + break; + + case BIRTHAGENT_RESOURCE_NODE: + //If there is not enough router nodes available in the network, then wait in case this is a resource node birth agent + if ( If_ptr->list_of_router_nodes.size() < bootstrap_threashold ) + { +#ifdef DEBUG + printf("Not enough bootstrap routers can be found, waiting for bootstrap routers to be added...\n"); +#endif + return; + } + + case BIRTHAGENT_ROUTER_NODE: + generate_random_bootstrap_nodes(bootstrap_threashold); + + } + + + /* + ResourceNode(unsigned int passed_message_time_to_live, unsigned int passed_routing_table_capacity, + unsigned int passed_k,unsigned int passed_num_centroid_tags_to_explore_per_period, + unsigned int passed_num_queries_to_submit_per_period, + Description &passed_description, unsigned int passed_id, unsigned int passed_vitality, unsigned int passed_extroversion, + Tick passed_delay, + Tick passed_response_timeout, BootstrapNodeList &passed_bootstrap_nodes, + Infrastructure* passed_If_ptr ); + */ + + //Create bootstrap nodes depending on whether this is a router or resource birth agent + switch (node_type) + { + + case BIRTHAGENT_USER_NODE: + + generated_random_description.clear(); + + + agent_ptr = new SpecificNode(message_time_to_live, + + node_type_to_pass_on, + known_routers_floor, + known_routers_trim_threshold, + known_routers_capacity, + + translation_radius, + + routing_table_length_floor, + routing_table_length_trim_threshold, + routing_table_max_length, + + routing_table_width_floor, + routing_table_width_threshold, + routing_table_min_num_resource_nodes, + routing_table_max_width, + + k, 0, num_queries_to_submit_per_period, + generated_random_description, (std::numeric_limits::max() - If_ptr->user_node_id), + vitality, extroversion, + delay, response_timeout, nodes_to_bootstrap_to, If_ptr ); + + If_ptr->user_node_id++; + + break; + + + case BIRTHAGENT_RESOURCE_NODE: + generate_random_description(1); + + agent_ptr = new SpecificNode(message_time_to_live, + + node_type_to_pass_on, + known_routers_floor, + known_routers_trim_threshold, + known_routers_capacity, + + translation_radius, + + routing_table_length_floor, + routing_table_length_trim_threshold, + routing_table_max_length, + + routing_table_width_floor, + routing_table_width_threshold, + routing_table_min_num_resource_nodes, + routing_table_max_width, + + + k, 0, num_queries_to_submit_per_period, + generated_random_description, If_ptr->agent_id, vitality, extroversion, delay, response_timeout, + nodes_to_bootstrap_to, If_ptr ); + + If_ptr->agent_id++; + + break; + + case BIRTHAGENT_ROUTER_NODE: + generate_random_description(max_num_description); + + agent_ptr = new SpecificNode(message_time_to_live, + + node_type_to_pass_on, + known_routers_floor, + known_routers_trim_threshold, + known_routers_capacity, + + translation_radius, + + routing_table_length_floor, + routing_table_length_trim_threshold, + routing_table_max_length, + + routing_table_width_floor, + routing_table_width_threshold, + routing_table_min_num_resource_nodes, + routing_table_max_width, + + + k, num_centroid_tags_to_explore_per_period, num_queries_to_submit_per_period, + generated_random_description, If_ptr->agent_id, vitality, extroversion, delay, response_timeout, + nodes_to_bootstrap_to, If_ptr ); + + If_ptr->agent_id++; + + }//End of switch + + +#ifdef DEBUG + printf("Successfully created node %u of type %d\n", agent_ptr->id, agent_ptr->node_type); +#endif + + + }//end of for loop for num_cycles_per_heartbeat + + //If all cycles/budget have been exhausted then cancel the peridic task + // if (total_cycle_counter >= total_num_cycles ) + if (total_budget <=0 ) + { + //Cancel the periodic event + If_ptr->scheduler_ptr->cancel_periodic( handler_schedule_event_ptr); + +#ifdef DEBUG + printf("Canceled birth agent node %u, type %d\n", id, node_type); +#endif + } + + return; +}; + + + + + + +#endif + + diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt new file mode 100755 index 0000000..ab2339c --- /dev/null +++ b/ReleaseNotes.txt @@ -0,0 +1,389 @@ + Notes for ver 1.31 +Time - Nov 27, 8.09AM +What this code contains + +1) The routing table report now contains the res num for each row, it will help troouble shoot protocol deficiencies + + +//1) Dynamic translation in the res nodes have been added so now matching is done within the translation radius. + + +earlier Notes for ver 1.31 +Time - Nov 26, 10.32PM +What this code contains + +1) For all the dynamic array mem allocation, the memset ranges are matched with allocation lengths, just in case that doesnt corrupt memory + or give false readings in the counters due to preexisting junk values. + + + +earlier Notes for ver 1.30 +Time - Nov 26, 8.54PM +What this code contains + +1) There is no point in generating useless pajek file if edge list in not extracted (see pt 1 in ver 1.30), so deactivated in the IO reporter heartbeat + +2) The description to query matching should not be absolutely strict (to allow vocub translation), there should be some radius in the semantic space to match + to the query). this radius is now implemented in the + +earlier Notes for ver 1.30 +Time - Nov 26, 20.54PM +What this code contains + +1) Deactivting the extraction of edge list and distance generation process. These are things which is deemed to hog memory +a) In simulation.cpp provisioned the edge list capacity to 2, if these are not required then the provisioned (2 units) memory is memset to 0 +b) The calling of generate distance matrix is made conditional to network_struct_report_required (this should be turned to 0 in the config file) +c) extract_edge_list() is called how ever writing the edge_list and weight arrays are deactivated if config files tells to do so. +d) The diameter and num_edges in Analyst are set to 0 in the Ananlyst constructor, so that they become harmless (even some junk may be there after allocation), + so that no loop can start which are suppose to iterate in this range to write the network list etc. +e) Also made changes in write structural report, now only the histograms are written always and rest adjacency matrix + and parent etc are written whenever required. +f) Made chages in the Analyst destructers and introduced a new int to store whether struc rep is required or not, + all distances and parent datastructures are now cleaned up if they were used in the first place ! otherwise + they will throw seg fault ! + +2) Fixed a possible mem corruption bug, the memset for distance_histogram was not doing memset for enough range. + + +earlier Notes for ver 1.29 +Time - Nov 26, 4.11PM +What this code contains + +1) The error message (2 of them,) when responses are dropped, are removed. +2) Instead of the error message, a counter is added. + + + +earlier Notes for ver 1.28 +Time - Nov 26, 3.04PM +What this code contains + +1) The commented traces for troubleshooting removed +2) Changing the Destinations from multiset to set, with stricter ordering based on id when the relevances are identical + (this will catch is the inserted node is identical or not), along with this we need to also change the res node incrementing, + if the res node is already present in the destination, then it the res node counter in the row should not be incremented, at all. + + + + +earlier Notes for ver 1.27 +Time - Nov 26, 2.12PM +What this code contains + +1) The checking of the memory allocation in simulation (for Ananlyst) and SmallWorld generator is fixed with proper ranges for the array declarations. +2) The RTindex is modified to be mutiset instead of set, as that caused the seg fault bug by overflowing the histogram arrays, +3) The list of edges and weight are reduced in terms of memory, earlier they are overprovisioned. +4) The trimming of RT length is fixed +5) The trimming of RT width is fixed - the res num was not decrmenting properly - was decrementing for all trimming, + now it is decremented for only res node erasing +6) The node_type is passed from proxy birth agent, so that they send right type when attaching during bootstraping, + so that res num accounting is done properly +7) The destination list has a problem, duplicate res nodes are being allowed, this can be fixed by making the comparing much more stricter + and then using set inctead of multiset. +8) There is difference between build with traces and without traces - need to see if any essential statement went inside the debug conditional compilation. + earlier there used to be seg fault at Tick 0 when build without traces. + + +earlier Notes for ver 1.26 +Time - Nov 25, 12.31 PM +What this code contains + +1) The explorations is not done if the routing table size threashold point is reached. Seems this improves the internal recall rate, +reduce the network operations traffic significantly. + +2) extract_edge_list is deactivated, this solved the seg fault in the middle and also at the end. + + +earlier Notes for ver 1.25 +Time - Nov 25, 5.42 AM +What this code contains + +1) Fixed the memsets in Database and Ananlyst to their correct sizes. + +2) Reporter execution still has problems 2 - seg fault at the end for weight deletion, the segfault in middle just after a reporter action + +3) Changed the printf in case there is memory underprovisioning + + + +earlier Notes for ver 1.25 +Time - Nov 25, 5.42 AM +What this code contains + +1) Fixed the seg fault at the end of progr run, it was because the event_itrs were not incremented in the destrcutor of the sched + +2) There are still problems -another seg fault at the end - Ananlyst's weight and edge list deletion throws fault, +specially weight, seems these are getting corrupted + +earlier Notes for ver 1.24 +Time - Nov 25, 4.03 AM +What this code contains + +1) Added the deleting of the event in the cancel periodic, after erase + +2) Used another pointer to keep reference to the event to delete in the execute event schedule. The deleting of the event +is carried after the erase, this was required to allow the multiset data structure to find the element to erase. + +3) Modified incrementing of the num res counter for the row object + +4) If the word graph edge list array is not provisioned as n *2 * degree then it would give seg fault, this is fixed + + +Notes for ver 1.23 +Time - Nov 24, 7.53PM +What this code contains + +1) The scheduler methods are now changed, they will take event pointer instead of the event object, +that way we can save memory copies during function call. +This is important for performance as these methods are in critical path. + +2) When configbig.dat is used, the program goes haywire after , config1.dat gives seg fault, use this file to troubleshoot, +this problem starts happening when num of nodes goes beyond 50,50. seems something to do with memory provisioning somewhere + +3a)reduced the memory provisioning for list of edges and weights for the main network, multiplied by the length and width of +the routing table instead of num of nodes -1, lets see if there is any problems. + +3b) Also reduced the memory provisioning for list of edges and weights for the ontology graph. +It is now increased to care of the larger degree of associativity of words, but this didnt solve the problem (pt 2, ver 1.22) + + + + +earlier Release Notes for ver 1.22 +Time - Nov 24, 7.24PM +What this code contains + +1) The Scheduler is overhauled, instead of our own List, we are now using multiset for the schedules. +That made it easier for sorting (automatic by the multiset insert) and insertion. + +2) Observed a problem from ver 1.21 (atleast, may be also ver 1.19 also) onwards - seg fault coming at the return path of the main. +With this issue we may still get outputs, but scalability is not reliable, because suspect that it is due to some memory corruption due to +itr overflowing. + +Release Notes for ver 1.21 (yet to be fully test) +Time - Nov 23, 10.42PM +What this code contains + +1) The recall rate calculation is fixed for the internal queries and external user queries, recall rate = sum of responses / sum of ( queries * nodes present) + + +earlier Release Notes for ver 1.20 (yet to be fully test) +Time - Nov 23, 7.25PM +What this code contains + +1) The message key bug is fixed (the size of the for loop was not correct, though it didnt give and faults) +the fi index was reduced after every erase + +2) The instead of begining the search of the second key from the very beginning, the itr was incremented properly , +so that search can start from the next element. this reduced the complexity of the set search. + + +earlier Release Notes for ver 1.19 (yet to fully test) +Time - Nov 23, 5.45PM +What this code contains + +1) pt 4a of earlier ver 1.19 is rectified, the knowledge vector is removed by remove-erase STL algorithm (which are demmed to be optimized) + + + +earlier Release Notes for ver 1.19 (still running in testbench) +Time - Nov 23, 12.40PM +What this code contains + +1) Trimming methods activated, changes made to quite some places to deploy, like the indexes are updated, +res counters for each row is incremented + +2) The specific row width trim method is changed suitably to accomodate the feature that maintains min number +of res node destinations. This is important because other wise the network will over fit to routers only. + +3) The tag for which routing table rows are removed, is also removed from knowledge. + +4) There are several performance problems - +a) The searching and deletion from knowledge vector is expensive (linear search) +b) The searching and deletion from destinitions multiset is expensive (linear search) + + +earlier Release Notes for ver 1.18 +Time - Nov 22, 4.11PM +What this code contains + +1) Trimming methods not activated, but Destination data structure is now ordered, based on the releavance to the router's description, +so that means order in which queries will be forwarded will change from the unordered version (ver 1.17 and below). + +earlier Release Notes for ver 1.17 +Time - Nov 22, 11.25AM +What this code contains + +1) The data structures and methods for trimming are mearged with the main code. But trimming not deployed as yet. + +earlier Release Notes for ver 1.16 +Time - Nov 21, 8.43PM +What this code contains + +1) The 9 trimming parameters for routing table length, width, known routers list are passed to the node classes. + + + +earlier Release Notes for ver 1.15 +Time - Nov 19, 7.33PM +What this code contains + +1) The routing table row structure is changed - couunter is added, row obj are not accessed thru pointers, no nested containers + + +earlier Release Notes for ver 1.14 +Time - Nov 16, 5.22PM +What this code contains + +1) The routing table and row obj definition is consolidated in one place (Node.hpp) to ease the routing table transitions + + +earlier Release Notes for ver 1.13 +Time - Nov 16, 12.44PM noon +What this code contains + +1) OntologyRepository services mearged with RouterNode + +earlier Release Notes for ver 1.12 +Time - Nov 16, 10.34AM +What this code contains + +1) Listener optimized also + + +earlier Release Notes for ver 1.11 +Time - Nov 16, 2.53AM +What this code contains + +1) Optimized all while loops in other remaining files to for loops (except Listner). + + + +earlier Release Notes for ver 1.10 +Time - Nov 16, 1.55AM +What this code contains + +1) Optimized all while loops in Node.cpp to for loops. +2) Changed all unsigned int to int, which are likely to be small + + +earlier Release Notes for ver 1.09 +Time - Nov 14, 8.29 AM +What this code contains + +1) Optimized the nearest_k iterating for loop, so that less function call on nearest_k is made. + + + + +earlier Release Notes for ver 1.08 +Time - Nov 13, 11 AM +What this code contains + +1) Fixed the bug that was corrupting routing table of node 9, 12, 19 +the nearest_k_itr was overflowing, without check on nearest_k.end(), this because sometimes +this list will contain less than k items + +earlier Release Notes for ver 1.07 +Time - Nov 12, 6.47PM +What this code contains + +1) The following was added after removing older names and values- + RouterNode_routing_table_max_length = 8; + RouterNode_routing_table_max_width = 8; + +2) Following routing table histogram counter arrays were added- + unsigned int *routing_table_length_histogram; + unsigned int *routing_table_width_histogram; + unsigned int *routing_table_max_width_histogram; + +3) A bug left out in the routing table printing - it prints a junk tag for some nodes at the end. + + +earlier Release Notes for ver 1.06 +Time - Nov 12, 11.50AM +What this code contains + +1) Added performance counter to count packet dropped for looping +2)Changed -DDUPACK_LIST to -DDETECT_LOOP + + +earlier Release Notes for ver 1.05 +Time - Nov 12, 10.54AM +What this code contains + +1) Added structure for validation of config data, time to live parameters are validated + +2) nodes visited list is copied to response , so that source node can infer from it, +upon receiving a response + + +earlier Release Notes for ver 1.04 +Time - Nov 11, 6.37PM +What this code contains + +1) Fixed the pajek IO writing format + +2) Fixed the bug in exploration - the centroid budget, scanning and semantic radius now smoothly increments + +3) Fixed new bug introduced in IO_Reporter::write_performance_report(), during fprintf conversion + + +earlier Release Notes for ver 1.03 +Time - Nov 11, 2PM +What this code contains + + +1) Mearged IO_Reporter fprintf stuff done by Suneil + + +earlier Release Notes for ver 1.02 +Time - Nov 11, 11.04AM +What this code contains + +1) moved the update_description_to_explore() & seek_new_resources_to_update_routing_table() in the routernode heartbeat. +This is in preparation for this following feature - Router nodes updates its description to explore in each heartbeat, +earlier it only explored the description that was inititalized at birth time. However the feature is not added at this +time, only preparation is done. + +2) Fixed RouterNode_num_exploration_queries_to_submit_per_period to type int in Input.hpp, it was earlier type Tick + +3) Ok , we are also changing for the exploration +changed - RouterNode::update_descriptions_to_explore() & RouterNode::seek_new_resources_to_update_routing_table() + +4) Changed all node parameters from int to unsigned int + +5) The advertising and exploring schemes are fixed in this way - the advertising scheme for rtr node always advertises +itself to both rtr and res node (the res nodes only advertises to rtr nodes), and the exploration is done for tags which +are away from centroid tags (description), but doesnt include the centroid tags (becoz the advertising takes care of that. +The description to explore is preloaded with centroid tags to filter away tags which are centroid tags (so that +temp_description to explore doesnt ever inserts centroid tags), this avoids duplicate query sending (even with different +seq num). This minimizes message traffic. + +6) The exploration doesn't fully work yet - need to ensure that while next batch of centroid topics are explored, the +incremental radius should hold to same value, now it is getting incremented. will fix this in next version. + +earlier ver 1.01 notes +Time - Nov 10, 10.49AM +What this code contains + +1) The ResourceNode::update_query_bag() now contain logic that takes care to add only those queries +whose descriptions are new, it checks the query bag for existing query descriptions that already +been updated and only add those queries that are new, this will be suitable for incremental exploration + + +earlier ver 1.0 notes +Time - Nov 10, 8.52 AM +What the code includes - + +1) Duplicate packets and loop prevention implemented with SET, CACHE and LIST +however this are not properly rationalized, because duplicate and looping should both be applied together, +havent yet checked the code whether both can be applied or not, seems it can be but havent yet tested the +impact of both loop prevention and duplicate packet filtering + +2) reporting generation are verified, but formating not yet reader friendly, +except the float recall rate is not being printed with C++ file IO, +will have to wait for Suneil to give the fprintf modifications + +3) All basic networking functionalities are verified + diff --git a/Scheduler.cpp b/Scheduler.cpp new file mode 100755 index 0000000..893e1b4 --- /dev/null +++ b/Scheduler.cpp @@ -0,0 +1,189 @@ +#include "ForwardDeclaration.hpp" +#include "Scheduler.hpp" +#include "Event.hpp" +#include "Node.hpp" + +#include "Functor.hpp" //Added, but remove if this gives problem, probably this is ok +#include "IO_Reporter.hpp" + + +Scheduler::~Scheduler() + { +#ifdef DEBUG + printf("Started cleaning up for Scheduler\nStarted cleaning up the event schedule\n%u residual events needs cleaning up\n",event_schedule.size() ); +#endif + run_event_itr = event_schedule.begin(); + for (unsigned int fi = event_schedule.size() ;fi>0 ;fi--,run_event_itr++ ) + { + delete *run_event_itr; + } + event_schedule.clear(); + /* + //Fire all the residual events to clean them up + + while (!event_schedule.empty()) + { + (*((event_itr->content()).handler))(); + event_itr = event_schedule.erase(event_itr); + } + */ +#ifdef DEBUG + printf("Finished cleaning up the event schedule\nStarted cleaning up the periodic schedule\n"); +#endif + run_periodic_itr = periodic_schedule.begin(); + for (unsigned int fi = periodic_schedule.size() ;fi>0 ;fi--,run_periodic_itr++ ) + { + delete *run_periodic_itr; + } + periodic_schedule.clear(); + +#ifdef DEBUG + printf("Finished cleaning up the periodic schedule\nFinished cleaning up for Scheduler\n"); +#endif + return; +}; + + + + + + +//Scheduler methods + //run() + void Scheduler::run(Tick run_for_ticks){ + + //std::list< Event >::iterator run_event_itr; + + event_to_compare_ptr->time = ticks=0; + +#ifdef DEBUG_SCHED1 + printf("run():Entering, run_for_ticks is %u\n", run_for_ticks); +#endif + + //Event *event_to_return_ptr; + + while ( (ticks < run_for_ticks) ) + { +#ifdef DEBUG + //Remove later, only for Test + std::cout<< "Ticks: "<< ticks <time++; + + }//End of main while loop + + return; + } //End of run() + + + + + +inline void Scheduler::execute_event_schedule() +{ + //printf("Event schedule execution starting....\n"); + + //Find the events to execute + for (run_event_itr = event_schedule.find(event_to_compare_ptr); + run_event_itr != event_schedule.end() && (*run_event_itr)->time == ticks ; + ) + { + //( *( (run_event_itr->content()).handler ))(); + // (*(*run_event_itr)).handler(); + + (*( (*(*run_event_itr)).handler ))(); + + event_to_delete_ptr = *run_event_itr; + event_schedule.erase(run_event_itr++); + delete event_to_delete_ptr; + + }//End of running events + + //printf("Event schedule execution over\n"); + return; +} + + +inline void Scheduler::execute_periodic_schedule(){ + + /* + while ( !(run_event_itr == periodic_schedule.end()) && + (!( ( (ticks - (run_event_itr->content()).start_time )% (run_event_itr->content()).time ) ==0 ) + || (ticks < (run_event_itr->content()).start_time) + ) + ) + */ + //printf("Periodic schedule execution starting....\n"); + + //Find the events to execute + for (run_periodic_itr = periodic_schedule.begin(); + run_periodic_itr != periodic_schedule.end() ; + run_periodic_itr++ + ) + { + + if( + ticks && ( + ( ( (ticks - (*run_periodic_itr)->start_time )% ( (*run_periodic_itr)->time ) ==0 ) ) || + (ticks < (*run_periodic_itr)->start_time) + ) || + !ticks && !(*run_periodic_itr)->start_time + ) + { + //( *( (run_event_itr->content()).handler ))(); + // (*(*run_periodic_itr)).handler(); + + (*( (*(*run_periodic_itr)).handler ))(); + + }//end if + + }//End of running events + + //printf("Periodic schedule execution over\n"); + +}; + + + + +//All the methods below have been moved to hpp file for inlining, and ability to get called by other files + +void Scheduler::schedule_event(Event *passed_event_ptr){ + + event_schedule.insert( passed_event_ptr ); + return; +}; + + + +void Scheduler::schedule_periodic(Event *passed_event_ptr){ + + periodic_schedule.insert( passed_event_ptr ); + return; + +}; + + +void Scheduler::cancel_periodic(Event *passed_event_ptr){ + + periodic_schedule.erase( passed_event_ptr ); + delete passed_event_ptr; + return; + +}; + + + +void Scheduler::modify_periodic(Event *passed_event_ptr){ + printf("Scheduler::modify_periodic() not implemented\n"); + exit(1); + return; +}; + + + diff --git a/Scheduler.hpp b/Scheduler.hpp new file mode 100755 index 0000000..5a9152f --- /dev/null +++ b/Scheduler.hpp @@ -0,0 +1,70 @@ +#ifndef SCHEDULER_HPP +#define SCHEDULER_HPP + +#include "ForwardDeclaration.hpp" +//#include "List.hpp" +#include "Event.hpp" + + +class event_less{ + public: + bool operator()(Event * event_ptr1, Event * event_ptr2){ + + return (*event_ptr1).time < (*event_ptr2).time ; + + }; + +}; + + + + +class Scheduler { + +private: +// ElementHolder* event_itr; +// ElementHolder* run_event_itr; +#ifdef DEBUG + int i; +#endif + Infrastructure *If_ptr; + + +public: + Tick ticks; +// List event_schedule; +// List periodic_schedule; + +//methods + Scheduler(Infrastructure *passed_If_ptr){If_ptr = passed_If_ptr;event_to_compare_ptr =new Event;}; + Tick now() {return ticks;}; + void run(Tick run_for_ticks); + + void execute_event_schedule(); + void execute_periodic_schedule(); + + void schedule_event(Event *passed_event_ptr); + void schedule_periodic(Event *passed_event_ptr); + void cancel_periodic(Event *passed_event_ptr); + void modify_periodic(Event *passed_event_ptr); + + ~Scheduler(); + +#ifdef DEBUG_FAULT + void periodic_schedule_print() { periodic_schedule.print_all_elements();}; +#endif + + //These items below are added for the optimized scheduler + std::multiset::iterator run_event_itr; + std::multiset::iterator run_periodic_itr; + + std::multiset event_schedule; + std::multiset periodic_schedule; + + Event *event_to_compare_ptr; + Event *event_to_delete_ptr; + + +}; + +#endif diff --git a/Scheduler.o b/Scheduler.o new file mode 100755 index 0000000..cd2de81 Binary files /dev/null and b/Scheduler.o differ diff --git a/Scheduler_old.cpp b/Scheduler_old.cpp new file mode 100755 index 0000000..d37923d --- /dev/null +++ b/Scheduler_old.cpp @@ -0,0 +1,319 @@ +#include "ForwardDeclaration.hpp" +#include "Scheduler.hpp" +#include "Event.hpp" +#include "Node.hpp" + +#include "List.hpp" //Got from hpp +#include "Functor.hpp" //Added, but remove if this gives problem, probably this is ok +#include "IO_Reporter.hpp" + + +Scheduler::~Scheduler() + { +#ifdef DEBUG + printf("Started cleaning up for Scheduler\n"); +#endif + event_schedule.clear(); + periodic_schedule.clear(); + +#ifdef DEBUG + printf("Finished cleaning up for Scheduler\n"); +#endif + return; + }; + + + + + + +//Scheduler methods + //run() + void Scheduler::run(Tick run_for_ticks){ + + //std::list< Event >::iterator run_event_itr; + ElementHolder* run_event_itr; + + ticks=0; +#ifdef DEBUG_SCHED + printf("run():Entering, run_for_ticks is %u\n", run_for_ticks); +#endif + +#ifdef DEBUG + int i=0; +#endif + + //Event *event_to_return_ptr; + + while (ticks < run_for_ticks) + { +#ifdef DEBUG + //Remove later, only for Test + std::cout<< "Ticks: "<< ticks <content() ).time <= ticks) + { + +#ifdef DEBUG_SCHED + //printf("Going to fire Event from Event schedule list position %d out of %d\n", i, event_schedule.size()); + //printf("Going to fire Event from Event schedule list position %d out of %u, event_id %u, node id %u, type is %d, time is %u\n", + // i, event_schedule.size(), (run_event_itr->content()).event_id, (run_event_itr->content()).node_ptr->id, (run_event_itr->content()).node_ptr->node_type,(run_event_itr->content()).time ); + + if (ticks == 50) + // event_schedule.print_all_elements(); + //event_schedule.print_element(66); + printf("Going to fire Event from Event schedule list position %d out of %u, event_id %u, time is %u\n", + i, event_schedule.size(), (run_event_itr->content()).event_id, (run_event_itr->content()).time ); + /**/ +#endif + + //(*((*run_event_itr).handler))(); + //run_event_itr = event_schedule.erase(run_event_itr); + + //(*(((*run_event_itr).content()).handler))(); + (*((run_event_itr->content()).handler))(); +#ifdef DEBUG_SCHED + //printf("Finshed firing event from Event schedule position %d out of %d, event_id %u,node id was %u, time was %u\n", + // i, event_schedule.size(), (run_event_itr->content()).event_id,(run_event_itr->content()).node_ptr->id, (run_event_itr->content()).time); + //event_schedule.print_element(66); + if (ticks == 50) + printf("Finshed firing event from Event schedule position %d out of %d, event_id %u,time was %u\n", + i, event_schedule.size(), (run_event_itr->content()).event_id,(run_event_itr->content()).time); + +#endif + + run_event_itr = event_schedule.erase(run_event_itr); + +#ifdef DEBUG_SCHED + printf("Finished erasing event from event schedule \n"); +#endif + + + }//End of running events + + + //Executing periodic tasks + run_event_itr = periodic_schedule.begin(); + +#ifdef DEBUG + i=0; +#endif + + while ( !periodic_schedule.empty() && !(run_event_itr == periodic_schedule.end()) ) + { + +#ifdef DEBUG_SCHED + printf("Renetering periodic schedule loop, iteration %d \n", i); + //printf("Time is %u , next periodic event id is %u, time is %u\n", ticks, + //(run_event_itr->content()).node_ptr->id, (run_event_itr->content()).time ); + printf("Time is %u , periodic event_id is %u, event time is %u\n", ticks, + (run_event_itr->content()).event_id, (run_event_itr->content()).time, (run_event_itr->content()).start_time ); + printf("Time mod is %u \n", (ticks % (run_event_itr->content()).time) ); + +#endif + /* + while ( !(run_event_itr == periodic_schedule.end()) && + !( (ticks % (*run_event_itr).time) ==0 ) ) + */ + while ( !(run_event_itr == periodic_schedule.end()) && + /* ( ((run_event_itr->content()).start_time==0) || (ticks < (run_event_itr->content()).start_time) )&& */ + !( ( (ticks - (run_event_itr->content()).start_time)% (run_event_itr->content()).time) ==0 ) ) + { + +#ifdef DEBUG_SCHED + printf("Time is %u , periodic event_id is %u, event time is %u, start_time is %u,\n", ticks, + (run_event_itr->content()).event_id, (run_event_itr->content()).time , (run_event_itr->content()).start_time ); + + printf("Time mod is %u \n", ((ticks - (run_event_itr->content()).start_time)% (run_event_itr->content()).time ) ); +#endif + //run_event_itr++; + run_event_itr = run_event_itr->next(); + +#ifdef DEBUG_SCHED + printf("Skipping iteration %d \n", i); +#endif + + +#ifdef DEBUG + i++; +#endif + } + + if (!(run_event_itr == periodic_schedule.end())) + { + +#ifdef DEBUG_SCHED + //printf("Going to fire Event from Periodic schedule list position %d out of %d,event_id %u, the id of the event is %u, type is %d\n", + //i, periodic_schedule.size(), (run_event_itr->content()).event_id,(run_event_itr->content()).node_ptr->id , (run_event_itr->content()).node_ptr->node_type ); + //periodic_schedule.print_all_elements(); + //event_schedule.print_element(66); + printf("Going to fire Event from Periodic schedule list position %d out of %d,event_id %u\n", + i, periodic_schedule.size(), (run_event_itr->content()).event_id ); + +#endif + + //(*((*run_event_itr).handler))(); + (*((run_event_itr->content()).handler))(); + + //run_event_itr++; + run_event_itr = run_event_itr->next(); + +#ifdef DEBUG_SCHED + printf("Finshed firing event from Periodic schedule list position %d out of %d\n", i, periodic_schedule.size()); + i++; + //event_schedule.print_all_elements(); + //event_schedule.print_element(66); + + +#endif + } + + }//End of running periodic tasks + ticks++; + + }//End of main while loop + + return; + } //End of run() + + +//All the methods below have been moved to hpp file for inlining, and ability to get called by other files + + + void Scheduler::schedule_event(Event &passed_event) + { +#ifdef DEBUG_SCHED + printf("schedule_event():Entering \n"); +#endif +#ifdef DEBUG + int i=0; +#endif + + event_itr = event_schedule.begin(); + + //while ( !(event_itr == event_schedule.end()) && (*event_itr).time < passed_event.time && + while ( !(event_itr == event_schedule.end()) && (event_itr->content()).time <= passed_event.time && + !event_schedule.empty() ) { + + //event_itr++; + event_itr = event_itr->next(); + +#ifdef DEBUG + i++; +#endif + + } + + event_schedule.insert(event_itr, passed_event ); +#ifdef DEBUG_SCHED + printf("Inserted Event at Event schedule list position %d out of %d with event_id %u, time as %d\n", + i, event_schedule.size(), passed_event.event_id, passed_event.time ); + //event_schedule.print_all_elements(); +#endif + return; + } + + + + void Scheduler::schedule_periodic(Event &passed_event) + { + +#ifdef DEBUG_SCHED + printf("schedule_periodic():Entering \n"); +#endif +#ifdef DEBUG + int i=0; +#endif + + event_itr = periodic_schedule.begin(); + + //while ( !(event_itr == periodic_schedule.end()) && (*event_itr).time < passed_event.time && + while ( !(event_itr == periodic_schedule.end()) && ((event_itr->content()).time <= passed_event.time ) && + !periodic_schedule.empty() ) { + + //event_itr++; + event_itr = event_itr->next(); + +#ifdef DEBUG + i++; +#endif + + } +#ifdef DEBUG_SCHED + printf("schedule_periodic():Reached here 1 \n"); +#endif + + periodic_schedule.insert(event_itr, passed_event ); + +#ifdef DEBUG_SCHED + printf("Inserted Event at Periodic schedule list position %d out of %d with event_id %u, time as %d\n", + i, periodic_schedule.size(), passed_event.event_id, passed_event.time); + //event_schedule.print_all_elements(); +#endif + return; + } + + void Scheduler::cancel_periodic(Event &passed_event) + { + + //std::list::iterator event_itr; + + //Get and make an event + event_itr = periodic_schedule.begin(); + + /* + while ( !(event_itr == periodic_schedule.end()) && !((*event_itr).handler == passed_event.handler) && + !periodic_schedule.empty() ) event_itr++; + */ + /* + while ( !(event_itr == periodic_schedule.end()) && !((event_itr->content()).handler == passed_event.handler) && + !periodic_schedule.empty() ) event_itr = event_itr->next(); + */ + while ( !(event_itr == periodic_schedule.end()) && !((event_itr->content()) == passed_event) ) + event_itr = event_itr->next(); +#ifdef DEBUG_SCHED + printf("Scheduler::cancel_periodic(), Reached here 1\n"); +#endif + + periodic_schedule.erase(event_itr); +#ifdef DEBUG_SCHED + printf("Scheduler::cancel_periodic(), Reached here 2\n"); +#endif + return; + } + + + + void Scheduler::modify_periodic(Event &passed_event) + { + + //std::list::iterator event_itr; + + //Get and make an event + event_itr = periodic_schedule.begin(); + + /* + while ( !(event_itr == periodic_schedule.end()) && !((*event_itr).handler == passed_event.handler) && + !periodic_schedule.empty() ) event_itr++; + */ + while ( !(event_itr == periodic_schedule.end()) && !((event_itr->content()) == passed_event) && + !periodic_schedule.empty() ) event_itr = event_itr->next(); + + //(*event_itr).time = passed_event.time; + (event_itr->content()).time = passed_event.time; + return; + } + + diff --git a/SmallWorldGenerator.hpp b/SmallWorldGenerator.hpp new file mode 100755 index 0000000..4a959f3 --- /dev/null +++ b/SmallWorldGenerator.hpp @@ -0,0 +1,77 @@ +#ifndef SMALLWORLD_HPP +#define SMALLWORLD_HPP + +#include "ForwardDeclaration.hpp" //For u_8 + +class SmallWorldGraph { + + public: + unsigned int num_vertices, num_edges; + + Edge *list_of_edges; + unsigned char *weight; + unsigned int degree_of_associativity_of_words; + + SmallWorldGraph( unsigned int num_vert, unsigned int node_degree, float sw_model_probability,unsigned int passed_degree_of_associativity_of_words ); + + + ~SmallWorldGraph() + { +#ifdef DEBUG + printf("Started cleaning up for SmallWorldGraph\n"); +#endif + + delete [] list_of_edges; + delete [] weight; + +#ifdef DEBUG + printf("Finished cleaning up for SmallWorldGraph\n"); +#endif + + return; + } +}; + +SmallWorldGraph::SmallWorldGraph( unsigned int num_vert, unsigned int node_degree, float sw_model_probability,unsigned int passed_degree_of_associativity_of_words ){ + + degree_of_associativity_of_words = passed_degree_of_associativity_of_words; + //typedef boost::adjacency_list AdjGraph; + boost::minstd_rand gen; + SWGen sw_edge_itr, sw_edge_itr_past; + + boost::graph_traits::edge_iterator ei, edge_end; + + num_vertices = num_vert; + + sw_edge_itr_past = SWGen(); + //SWGen sw_edge_itr_past(); + sw_edge_itr = SWGen(gen, num_vertices, node_degree, sw_model_probability); + //SWGen sw_edge_itr(gen, num_vertices, node_degree, sw_model_probability); + AdjGraph sw_g(sw_edge_itr, sw_edge_itr_past, num_vertices); + + list_of_edges = new Edge [num_vertices * 2* degree_of_associativity_of_words]; //These are fixed to scale the number of words + weight = new unsigned char [num_vertices * 2* degree_of_associativity_of_words]; //These are fixed to scale the number of words + + if (!list_of_edges) + { + cout << "simulation: Error: memory could not be allocated for SmallWorldGraph::list_of_edges"; + exit(1); + } + if (!weight) + { + cout << "simulation: Error: memory could not be allocated for SmallWorldGraph::weight"; + exit(1); + } + + num_edges=0; + for(tie(ei, edge_end) = edges(sw_g); ei != edge_end; ++ei, num_edges = num_edges+2) { + list_of_edges[num_edges] = Edge( source(*ei, sw_g), target(*ei,sw_g) ); + list_of_edges[num_edges+1] = Edge( target(*ei,sw_g) , source(*ei, sw_g) ); + weight[num_edges] = 1; + weight[num_edges+1] = 1; + } + return; +};//End of constructor + + +#endif diff --git a/config.dat b/config.dat new file mode 100755 index 0000000..d0ccdf1 --- /dev/null +++ b/config.dat @@ -0,0 +1,89 @@ +network_struct_report_required 0 # A value 0 stop network extraction and ananlysis, this is choosen to reduce memory demand + +snapshot_reporter_period 40 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 202 +bootstrap_threashold 2 +message_time_to_live 5 # For queries and responses inside the network +query_time_to_live 5 # For user queries + +ResourceNode_known_routers_floor 2 +ResourceNode_known_routers_trim_threshold 3 +ResourceNode_known_routers_capacity 4 + +ResourceNode_translation_radius 1 + +RouterNode_known_routers_floor 2 +RouterNode_known_routers_trim_threshold 3 +RouterNode_known_routers_capacity 4 + +RouterNode_routing_table_length_floor 3 +RouterNode_routing_table_length_trim_threshold 4 +RouterNode_routing_table_max_length 5 + +RouterNode_routing_table_width_floor 3 +RouterNode_routing_table_width_threshold 4 +RouterNode_routing_table_min_num_resource_nodes 2 +RouterNode_routing_table_max_width 4 + +ResourceNode_vitality 10 +ResourceNode_extroversion 3 # +ResourceNode_delay 3 +ResourceNode_response_timeout 13 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 1 doesnt recall any resource with Tag 12 +RouterNode_num_centroid_tags_to_explore_per_period 2 # This parameter limits how many centroid topics around which exploration will be done per period +RouterNode_num_exploration_queries_to_submit_per_period 5 # This parameter limits how many queries the router node can submit for exploration +RouterNode_delay 3 +RouterNode_response_timeout 13 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 10 +RouterNode_max_description 2 + +UserNode_vitality 20 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 10 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 80 +Birth_ResourceNode_total_num_cycles 4 +Birth_ResourceNode_num_cycles_per_heartbeat 4 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 80 +Birth_RouterNode_total_num_cycles 4 +Birth_RouterNode_num_cycles_per_heartbeat 4 + +Birth_UserNode_start_time 10 +Birth_UserNode_period 20 + +num_words 40 +degree_of_associativity_of_words 4 +sw_model_probability 0.7 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 9 +trace_destination_node_id 12 +trace_tag 6 + + + diff --git a/config17.dat b/config17.dat new file mode 100755 index 0000000..e8fe1b7 --- /dev/null +++ b/config17.dat @@ -0,0 +1,88 @@ +network_struct_report_required 0 # A value 0 stop network extraction and ananlysis, this is choosen to reduce memory demand + +snapshot_reporter_period 40 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 202 +bootstrap_threashold 2 +message_time_to_live 5 # For queries and responses inside the network +query_time_to_live 5 # For user queries + +ResourceNode_known_routers_floor 2 +ResourceNode_known_routers_trim_threshold 3 +ResourceNode_known_routers_capacity 4 + +ResourceNode_translation_radius 1 + +RouterNode_known_routers_floor 2 +RouterNode_known_routers_trim_threshold 3 +RouterNode_known_routers_capacity 4 +RouterNode_routing_table_length_floor 3 +RouterNode_routing_table_length_trim_threshold 4 +RouterNode_routing_table_max_length 5 + +RouterNode_routing_table_width_floor 3 +RouterNode_routing_table_width_threshold 4 +RouterNode_routing_table_min_num_resource_nodes 2 +RouterNode_routing_table_max_width 4 + +ResourceNode_vitality 10 +ResourceNode_extroversion 3 # +ResourceNode_delay 3 +ResourceNode_response_timeout 13 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 1 doesnt recall any resource with Tag 12 +RouterNode_num_centroid_tags_to_explore_per_period 2 # This parameter limits how many centroid topics around which exploration will be done per period +RouterNode_num_exploration_queries_to_submit_per_period 5 # This parameter limits how many queries the router node can submit for exploration +RouterNode_delay 3 +RouterNode_response_timeout 13 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 10 +RouterNode_max_description 2 + +UserNode_vitality 20 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 10 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 80 +Birth_ResourceNode_total_num_cycles 40 +Birth_ResourceNode_num_cycles_per_heartbeat 40 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 80 +Birth_RouterNode_total_num_cycles 20 +Birth_RouterNode_num_cycles_per_heartbeat 20 + +Birth_UserNode_start_time 10 +Birth_UserNode_period 20 + +num_words 40 +degree_of_associativity_of_words 4 +sw_model_probability 0.7 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 9 +trace_destination_node_id 12 +trace_tag 6 + + + diff --git a/config18.dat b/config18.dat new file mode 100755 index 0000000..d9e4deb --- /dev/null +++ b/config18.dat @@ -0,0 +1,89 @@ +network_struct_report_required 0 # A value 0 stop network extraction and ananlysis, this is choosen to reduce memory demand + +snapshot_reporter_period 40 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 202 +bootstrap_threashold 2 +message_time_to_live 5 # For queries and responses inside the network +query_time_to_live 5 # For user queries + +ResourceNode_known_routers_floor 2 +ResourceNode_known_routers_trim_threshold 3 +ResourceNode_known_routers_capacity 4 + +ResourceNode_translation_radius 1 + +RouterNode_known_routers_floor 2 +RouterNode_known_routers_trim_threshold 3 +RouterNode_known_routers_capacity 4 + +RouterNode_routing_table_length_floor 3 +RouterNode_routing_table_length_trim_threshold 4 +RouterNode_routing_table_max_length 5 + +RouterNode_routing_table_width_floor 3 +RouterNode_routing_table_width_threshold 4 +RouterNode_routing_table_min_num_resource_nodes 2 +RouterNode_routing_table_max_width 4 + +ResourceNode_vitality 10 +ResourceNode_extroversion 3 # +ResourceNode_delay 3 +ResourceNode_response_timeout 13 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 1 doesnt recall any resource with Tag 12 +RouterNode_num_centroid_tags_to_explore_per_period 2 # This parameter limits how many centroid topics around which exploration will be done per period +RouterNode_num_exploration_queries_to_submit_per_period 5 # This parameter limits how many queries the router node can submit for exploration +RouterNode_delay 3 +RouterNode_response_timeout 13 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 10 +RouterNode_max_description 2 + +UserNode_vitality 20 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 10 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 80 +Birth_ResourceNode_total_num_cycles 100 +Birth_ResourceNode_num_cycles_per_heartbeat 100 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 80 +Birth_RouterNode_total_num_cycles 100 +Birth_RouterNode_num_cycles_per_heartbeat 100 + +Birth_UserNode_start_time 10 +Birth_UserNode_period 20 + +num_words 40 +degree_of_associativity_of_words 4 +sw_model_probability 0.7 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 9 +trace_destination_node_id 12 +trace_tag 6 + + + diff --git a/config18big.dat b/config18big.dat new file mode 100755 index 0000000..dd1669c --- /dev/null +++ b/config18big.dat @@ -0,0 +1,89 @@ +network_struct_report_required 1 + +snapshot_reporter_period 40 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 546 +bootstrap_threashold 2 +message_time_to_live 5 # For queries and responses inside the network +query_time_to_live 5 # For user queries + +ResourceNode_known_routers_floor 2 +ResourceNode_known_routers_trim_threshold 3 +ResourceNode_known_routers_capacity 4 + +ResourceNode_translation_radius 1 + +RouterNode_known_routers_floor 2 +RouterNode_known_routers_trim_threshold 3 +RouterNode_known_routers_capacity 4 + +RouterNode_routing_table_length_floor 3 +RouterNode_routing_table_length_trim_threshold 4 +RouterNode_routing_table_max_length 5 + +RouterNode_routing_table_width_floor 3 +RouterNode_routing_table_width_threshold 4 +RouterNode_routing_table_min_num_resource_nodes 2 +RouterNode_routing_table_max_width 4 + +ResourceNode_vitality 10 +ResourceNode_extroversion 3 # +ResourceNode_delay 3 +ResourceNode_response_timeout 13 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 1 doesnt recall any resource with Tag 12 +RouterNode_num_centroid_tags_to_explore_per_period 2 # This parameter limits how many centroid topics around which exploration will be done per period +RouterNode_num_exploration_queries_to_submit_per_period 5 # This parameter limits how many queries the router node can submit for exploration +RouterNode_delay 3 +RouterNode_response_timeout 13 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 10 +RouterNode_max_description 2 + +UserNode_vitality 20 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 10 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 80 +Birth_ResourceNode_total_num_cycles 1600 +Birth_ResourceNode_num_cycles_per_heartbeat 1600 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 80 +Birth_RouterNode_total_num_cycles 400 +Birth_RouterNode_num_cycles_per_heartbeat 400 + +Birth_UserNode_start_time 10 +Birth_UserNode_period 20 + +num_words 40 +degree_of_associativity_of_words 4 +sw_model_probability 0.7 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 9 +trace_destination_node_id 12 +trace_tag 6 + + + diff --git a/config_1.dat b/config_1.dat new file mode 100755 index 0000000..3fb6a57 --- /dev/null +++ b/config_1.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 10 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 100 +bootstrap_threashold 4 +message_time_to_live 3 # For queries and responses inside the network +query_time_to_live 10 # For user queries + + +ResourceNode_vitality 20 +ResourceNode_extroversion 3 # +ResourceNode_delay 5 +ResourceNode_response_timeout 10 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +ResourceNode_max_description 1 + +RouterNode_vitality 30 +RouterNode_extroversion 0 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 0 doesnt recall any resource with Tag 12 +RouterNode_delay 5 +RouterNode_response_timeout 30 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 20 +RouterNode_max_description 5 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 50 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 30 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 4 +Birth_ResourceNode_num_cycles_per_heartbeat 4 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 4 +Birth_RouterNode_num_cycles_per_heartbeat 4 + +Birth_UserNode_start_time 25 +Birth_UserNode_period 20 + +num_words 40 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 0 +trace_destination_node_id 1 +trace_tag 6 + + + diff --git a/configbig.dat b/configbig.dat new file mode 100755 index 0000000..e86e1c3 --- /dev/null +++ b/configbig.dat @@ -0,0 +1,71 @@ +snapshot_reporter_period 46 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 100 +bootstrap_threashold 2 +message_time_to_live 10 # For queries and responses inside the network +query_time_to_live 10 # For user queries + + +ResourceNode_vitality 20 +ResourceNode_extroversion 3 # +ResourceNode_delay 5 +ResourceNode_response_timeout 40 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +ResourceNode_max_description 1 + +RouterNode_vitality 30 +RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources, a bigger value may cause better recall performance, for example value 1 doesnt recall any resource with Tag 12 +RouterNode_num_centroid_tags_to_explore_per_period 2 # This parameter limits how many centroid topics around which exploration will be done per period +RouterNode_num_exploration_queries_to_submit_per_period 5 # This parameter limits how many queries the router node can submit for exploration +RouterNode_delay 5 +RouterNode_response_timeout 40 # This param should be suffciently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 10 +RouterNode_max_description 5 +RouterNode_routing_table_max_length 1024 +RouterNode_routing_table_max_width 1024 + +UserNode_vitality 50 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 40 # This param should be sufficiently big to handle the delay in the network, else will kill listeners even before all response arrive, and throw "May be an error.." +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 20 +Birth_ResourceNode_num_cycles_per_heartbeat 20 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 30 +Birth_RouterNode_num_cycles_per_heartbeat 30 + +Birth_UserNode_start_time 25 +Birth_UserNode_period 20 + +num_words 40 +degree_of_associativity_of_words 4 +sw_model_probability 0.7 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 9 +trace_destination_node_id 12 +trace_tag 6 + + + diff --git a/configm.dat b/configm.dat new file mode 100755 index 0000000..ce19924 --- /dev/null +++ b/configm.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 50 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 50 +bootstrap_threashold 4 +message_time_to_live 2 +query_time_to_live 10 + + +ResourceNode_vitality 10 +ResourceNode_extroversion 1 # +ResourceNode_delay 5 +ResourceNode_response_timeout 50 +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 # This one decides the radius from the centroid topics to explore, to get resources +RouterNode_delay 5 +RouterNode_response_timeout 50 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 50 +RouterNode_max_description 9 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 50 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 100 +Birth_ResourceNode_num_cycles_per_heartbeat 5 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 100 +Birth_RouterNode_num_cycles_per_heartbeat 5 + +Birth_UserNode_start_time 20 +Birth_UserNode_period 20 + +num_words 100 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 4294967292 +trace_destination_node_id 4 +trace_tag 15 + + + diff --git a/configu.dat b/configu.dat new file mode 100755 index 0000000..89eeeda --- /dev/null +++ b/configu.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 50 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 50 +bootstrap_threashold 4 +message_time_to_live 2 +query_time_to_live 10 + + +ResourceNode_vitality 10 +ResourceNode_extroversion 1 +ResourceNode_delay 5 +ResourceNode_response_timeout 50 +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 +RouterNode_delay 5 +RouterNode_response_timeout 50 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 50 +RouterNode_max_description 9 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 +UserNode_response_timeout 50 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 100 +Birth_ResourceNode_num_cycles_per_heartbeat 5 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 100 +Birth_RouterNode_num_cycles_per_heartbeat 5 + +Birth_UserNode_start_time 20 +Birth_UserNode_period 20 + +num_words 100 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 4294967292 +trace_destination_node_id 4 +trace_tag 15 + + + diff --git a/configv.dat b/configv.dat new file mode 100755 index 0000000..89eeeda --- /dev/null +++ b/configv.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 50 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 50 +bootstrap_threashold 4 +message_time_to_live 2 +query_time_to_live 10 + + +ResourceNode_vitality 10 +ResourceNode_extroversion 1 +ResourceNode_delay 5 +ResourceNode_response_timeout 50 +ResourceNode_max_description 1 + +RouterNode_vitality 10 +RouterNode_extroversion 1 +RouterNode_delay 5 +RouterNode_response_timeout 50 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 50 +RouterNode_max_description 9 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 +UserNode_response_timeout 50 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 100 +Birth_ResourceNode_num_cycles_per_heartbeat 5 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 100 +Birth_RouterNode_num_cycles_per_heartbeat 5 + +Birth_UserNode_start_time 20 +Birth_UserNode_period 20 + +num_words 100 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 4294967292 +trace_destination_node_id 4 +trace_tag 15 + + + diff --git a/configv1.dat b/configv1.dat new file mode 100755 index 0000000..9d2739b --- /dev/null +++ b/configv1.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 4 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 50 +bootstrap_threashold 4 +message_time_to_live 3 +query_time_to_live 10 + + +ResourceNode_vitality 5 +ResourceNode_extroversion 3 # +ResourceNode_delay 5 +ResourceNode_response_timeout 20 +ResourceNode_max_description 1 + +RouterNode_vitality 8 +RouterNode_extroversion 0 # This one decides the radius from the centroid topics to explore, to get resources +RouterNode_delay 5 +RouterNode_response_timeout 20 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 20 +RouterNode_max_description 5 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 10 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 4 +Birth_ResourceNode_num_cycles_per_heartbeat 4 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 4 +Birth_RouterNode_num_cycles_per_heartbeat 4 + +Birth_UserNode_start_time 20 +Birth_UserNode_period 20 + +num_words 9 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 6 +trace_destination_node_id 2 +trace_tag 4 + + + diff --git a/configv2.dat b/configv2.dat new file mode 100755 index 0000000..c5c324e --- /dev/null +++ b/configv2.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 4 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 50 +bootstrap_threashold 4 +message_time_to_live 3 +query_time_to_live 10 + + +ResourceNode_vitality 5 +ResourceNode_extroversion 3 # +ResourceNode_delay 5 +ResourceNode_response_timeout 20 +ResourceNode_max_description 1 + +RouterNode_vitality 8 +RouterNode_extroversion 3 # This one decides the radius from the centroid topics to explore, to get resources +RouterNode_delay 5 +RouterNode_response_timeout 20 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 20 +RouterNode_max_description 5 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 # This one decides how many routers nodes to bootstrap to +UserNode_response_timeout 10 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 4 +Birth_ResourceNode_num_cycles_per_heartbeat 4 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 4 +Birth_RouterNode_num_cycles_per_heartbeat 4 + +Birth_UserNode_start_time 20 +Birth_UserNode_period 20 + +num_words 9 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 6 +trace_destination_node_id 2 +trace_tag 4 + + + diff --git a/configv3.dat b/configv3.dat new file mode 100755 index 0000000..ae8ad16 --- /dev/null +++ b/configv3.dat @@ -0,0 +1,71 @@ +snapshot_reporter_period 50 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +generation_phase_run_for_ticks 100 +operation_phase_run_for_ticks 1 +bootstrap_threashold 4 +message_time_to_live 2 +query_time_to_live 10 + + +ResourceNode_vitality 10 +ResourceNode_extroversion 1 +ResourceNode_delay 5 +ResourceNode_response_timeout 50 +ResourceNode_max_description 1 + +RouterNode_vitality 20 +RouterNode_extroversion 1 +RouterNode_delay 5 +RouterNode_response_timeout 50 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 50 +RouterNode_max_description 9 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 +UserNode_response_timeout 50 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 10 +Birth_ResourceNode_num_cycles_per_heartbeat 5 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 10 +Birth_RouterNode_num_cycles_per_heartbeat 5 + +Birth_UserNode_start_time 30 +Birth_UserNode_period 30 + +num_words 100 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 4294967292 +trace_destination_node_id 4 +trace_tag 15 + + + diff --git a/configv4.dat b/configv4.dat new file mode 100755 index 0000000..6aa6f88 --- /dev/null +++ b/configv4.dat @@ -0,0 +1,70 @@ +snapshot_reporter_period 50 +snapshot_reporter_start_time 1 +oneshot_reporter_time 0 + +run_for_ticks 50 +bootstrap_threashold 4 +message_time_to_live 2 +query_time_to_live 10 + + +ResourceNode_vitality 10 +ResourceNode_extroversion 1 +ResourceNode_delay 5 +ResourceNode_response_timeout 50 +ResourceNode_max_description 1 + +RouterNode_vitality 5 +RouterNode_extroversion 1 +RouterNode_delay 5 +RouterNode_response_timeout 20 +RouterNode_num_queries_to_submit_per_period 5 +RouterNode_k 3 +RouterNode_duplicate_message_cache_timeout 10 +RouterNode_max_description 9 +RouterNode_routing_table_capacity 1000 +RouterNode_max_router_out_interfaces 1000 + +UserNode_vitality 10 +UserNode_extroversion 3 +UserNode_response_timeout 15 +UserNode_num_queries_to_submit_per_period 5 + + +Birth_ResourceNode_start_time 0 +Birth_ResourceNode_period 10 +Birth_ResourceNode_total_num_cycles 10 +Birth_ResourceNode_num_cycles_per_heartbeat 5 + +Birth_RouterNode_start_time 0 +Birth_RouterNode_period 10 +Birth_RouterNode_total_num_cycles 10 +Birth_RouterNode_num_cycles_per_heartbeat 5 + +Birth_UserNode_start_time 20 +Birth_UserNode_period 10 + +num_words 100 +degree_of_associativity_of_words 4 +sw_model_probability 0.02 + +input_onto_file_name ontoin +output_onto_file_name ontoout.net +output_onto_report_file_name ontorep +output_network_file_name netout.net +structural_report_file_name netstrucrep +generation_performance_report_file_name perfrep +operation_performance_report_file_name oprnetperfrep +routing_table_content_report_file_name netroutingtable + +DatabaseHistResolution 1 +DatabaseMaxHops 100 +DatabaseHistResolution_for_UserNode 1 +DatabaseMaxHops_for_UserNode 100 + +trace_source_node_id 4294967292 +trace_destination_node_id 4 +trace_tag 15 + + + diff --git a/diff-comp-base-set b/diff-comp-base-set new file mode 100755 index 0000000..501ae03 --- /dev/null +++ b/diff-comp-base-set @@ -0,0 +1,5880 @@ +437a438 +> , unique message +439a441 +> , unique message +441a444 +> , unique message +444a448 +> , unique message +605a610 +> , but dropped as it is duplicate +608c613 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +610a616 +> , but dropped as it is duplicate +613c619 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +616c622 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +619c625 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +622c628 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +625c631 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +628c634 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +635c641 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +638c644 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +641c647 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +656,657c662,663 +< Node id 6, node type : 1 : allocating a listener with id 1, scheduling its time out, the event_id is 528 +< Sending query to router id 0, query id as 560, query_seq_num as 1, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 1, scheduling its time out, the event_id is 454 +> Sending query to router id 0, query id as 514, query_seq_num as 1, filter 2, with description tags : 4 +659c665,666 +< Sending query to router id 1, query id as 566, query_seq_num as 1, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 520, query_seq_num as 1, filter 2, with description tags : 4 +661c668,669 +< Sending query to router id 2, query id as 571, query_seq_num as 1, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 525, query_seq_num as 1, filter 2, with description tags : 4 +662a671 +> , unique message +664c673 +< Sending query to router id 3, query id as 575, query_seq_num as 1, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 529, query_seq_num as 1, filter 2, with description tags : 4 +665a675 +> , unique message +825,887d834 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 2, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 2, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 2, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 2, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 1, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 submitting response with query seq num 0, to node 6, type 1 to node 6, type 1 +< Ticks:15 : Response with query_seq_num 0, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:15 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 0 +< Total response received so far at listner id 0 is 4 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 submitting response with query seq num 0, to node 6, type 1 to node 6, type 1 +< Ticks:15 : Response with query_seq_num 0, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:15 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 0 +< Total response received so far at listner id 0 is 7 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 submitting response with query seq num 0, to node 6, type 1 to node 6, type 1 +< Ticks:15 : Response with query_seq_num 0, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:15 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 0 +< Total response received so far at listner id 0 is 8 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:15 : Node 2, type 2 forwarding query with query_seq num 0, source node 6, type 1 to node 3, type 2 +< Ticks:15 : Query with query_seq_num 0 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +889a837 +> , but dropped as it is duplicate +892c840 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +894a843 +> , but dropped as it is duplicate +897c846 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +900c849 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +903c852 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +906c855 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +909c858 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +912c861 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +919c868 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +922c871 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +925c874 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +940,941c889,890 +< Node id 6, node type : 1 : allocating a listener with id 2, scheduling its time out, the event_id is 1376 +< Sending query to router id 0, query id as 1222, query_seq_num as 2, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 2, scheduling its time out, the event_id is 710 +> Sending query to router id 0, query id as 717, query_seq_num as 2, filter 2, with description tags : 4 +943c892,893 +< Sending query to router id 1, query id as 1228, query_seq_num as 2, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 723, query_seq_num as 2, filter 2, with description tags : 4 +945c895,896 +< Sending query to router id 2, query id as 1233, query_seq_num as 2, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 728, query_seq_num as 2, filter 2, with description tags : 4 +946a898 +> , unique message +948c900 +< Sending query to router id 3, query id as 1237, query_seq_num as 2, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 732, query_seq_num as 2, filter 2, with description tags : 4 +949a902 +> , unique message +1109,1171d1061 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 2, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 2, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 2, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 2, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 1, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 submitting response with query seq num 1, to node 6, type 1 to node 6, type 1 +< Ticks:20 : Response with query_seq_num 1, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:20 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 1 +< Total response received so far at listner id 1 is 4 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 submitting response with query seq num 1, to node 6, type 1 to node 6, type 1 +< Ticks:20 : Response with query_seq_num 1, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:20 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 1 +< Total response received so far at listner id 1 is 7 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 submitting response with query seq num 1, to node 6, type 1 to node 6, type 1 +< Ticks:20 : Response with query_seq_num 1, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:20 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 1 +< Total response received so far at listner id 1 is 8 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:20 : Node 2, type 2 forwarding query with query_seq num 1, source node 6, type 1 to node 3, type 2 +< Ticks:20 : Query with query_seq_num 1 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +1173a1064 +> , but dropped as it is duplicate +1176c1067 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1178a1070 +> , but dropped as it is duplicate +1181c1073 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1184c1076 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1187c1079 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1190c1082 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1193c1085 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1196c1088 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1203c1095 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1206c1098 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1209c1101 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1224,1225c1116,1117 +< Node id 6, node type : 1 : allocating a listener with id 3, scheduling its time out, the event_id is 2309 +< Sending query to router id 0, query id as 2046, query_seq_num as 3, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 3, scheduling its time out, the event_id is 1130 +> Sending query to router id 0, query id as 1167, query_seq_num as 3, filter 2, with description tags : 4 +1227c1119,1120 +< Sending query to router id 1, query id as 2052, query_seq_num as 3, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 1173, query_seq_num as 3, filter 2, with description tags : 4 +1229c1122,1123 +< Sending query to router id 2, query id as 2057, query_seq_num as 3, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 1178, query_seq_num as 3, filter 2, with description tags : 4 +1230a1125 +> , unique message +1232c1127 +< Sending query to router id 3, query id as 2061, query_seq_num as 3, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 1182, query_seq_num as 3, filter 2, with description tags : 4 +1233a1129 +> , unique message +1251c1147 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1369c1265 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1382c1278 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1395c1291 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1398,1404c1294 +< Ticks:25 : Total 12 responses noted at listener id 0 of node 6 type 1 are: +< from node 2, type 2, tag 4, query_seq_num 0 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 0 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 0 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +--- +> Ticks:25 : Total 2 responses noted at listener id 0 of node 6 type 1 are: +1407,1469d1296 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 2, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 2, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 2, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 2, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 1, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 submitting response with query seq num 2, to node 6, type 1 to node 6, type 1 +< Ticks:25 : Response with query_seq_num 2, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:25 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 2 +< Total response received so far at listner id 2 is 4 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 submitting response with query seq num 2, to node 6, type 1 to node 6, type 1 +< Ticks:25 : Response with query_seq_num 2, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:25 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 2 +< Total response received so far at listner id 2 is 7 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 submitting response with query seq num 2, to node 6, type 1 to node 6, type 1 +< Ticks:25 : Response with query_seq_num 2, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:25 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 2 +< Total response received so far at listner id 2 is 8 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:25 : Node 2, type 2 forwarding query with query_seq num 2, source node 6, type 1 to node 3, type 2 +< Ticks:25 : Query with query_seq_num 2 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +1471a1299 +> , but dropped as it is duplicate +1474c1302 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1476a1305 +> , but dropped as it is duplicate +1479c1308 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1482c1311 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1485c1314 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1488c1317 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1491c1320 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1494c1323 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1501c1330 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1504c1333 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1507c1336 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +1518c1347 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1627,1628c1456,1457 +< Node id 6, node type : 1 : allocating a listener with id 4, scheduling its time out, the event_id is 3536 +< Sending query to router id 0, query id as 3107, query_seq_num as 4, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 4, scheduling its time out, the event_id is 1752 +> Sending query to router id 0, query id as 1761, query_seq_num as 4, filter 2, with description tags : 4 +1630c1459,1460 +< Sending query to router id 1, query id as 3113, query_seq_num as 4, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 1767, query_seq_num as 4, filter 2, with description tags : 4 +1632c1462,1463 +< Sending query to router id 2, query id as 3118, query_seq_num as 4, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 1772, query_seq_num as 4, filter 2, with description tags : 4 +1633a1465 +> , unique message +1635c1467 +< Sending query to router id 3, query id as 3122, query_seq_num as 4, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 1776, query_seq_num as 4, filter 2, with description tags : 4 +1636a1469 +> , unique message +1649c1482 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1662c1495 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1676c1509 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1690c1523 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1705c1538 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +1723c1556 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +21579c21412 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +22040c21873 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +22506c22339 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +22977c22810 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +23453c23286 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +23934c23767 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +24420c24253 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +24911c24744 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +25407c25240 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +25908c25741 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +26414c26247 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +26925c26758 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +27441c27274 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +27962c27795 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +28488c28321 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +29019c28852 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +29555c29388 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +30096c29929 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +30642c30475 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +31193c31026 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +31749c31582 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +32310c32143 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +32876c32709 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +33447c33280 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +34023c33856 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +34604c34437 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +35190c35023 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +35781c35614 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +36377c36210 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +36978c36811 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +37584c37417 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38195c38028 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38602c38435 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38645c38478 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38690c38523 +< Time is 29 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 29 , periodic event_id is 1157, event time is 10, start_time is 0, +38695,38699c38528 +< Ticks:30 : Total 12 responses noted at listener id 1 of node 6 type 1 are: +< from node 2, type 2, tag 4, query_seq_num 1 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 1 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +--- +> Ticks:30 : Total 2 responses noted at listener id 1 of node 6 type 1 are: +38702,38766d38530 +< from node 2, type 2, tag 4, query_seq_num 1 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 2, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 2, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 2, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 2, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 1, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 submitting response with query seq num 3, to node 6, type 1 to node 6, type 1 +< Ticks:30 : Response with query_seq_num 3, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:30 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 3 +< Total response received so far at listner id 3 is 4 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 submitting response with query seq num 3, to node 6, type 1 to node 6, type 1 +< Ticks:30 : Response with query_seq_num 3, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:30 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 3 +< Total response received so far at listner id 3 is 7 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 submitting response with query seq num 3, to node 6, type 1 to node 6, type 1 +< Ticks:30 : Response with query_seq_num 3, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:30 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 3 +< Total response received so far at listner id 3 is 8 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:30 : Node 2, type 2 forwarding query with query_seq num 3, source node 6, type 1 to node 3, type 2 +< Ticks:30 : Query with query_seq_num 3 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +38768a38533 +> , but dropped as it is duplicate +38771c38536 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38773a38539 +> , but dropped as it is duplicate +38776c38542 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38779c38545 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38782c38548 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38785c38551 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38788c38554 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38791c38557 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38798c38564 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38801c38567 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38804c38570 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +38816c38582 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38831c38597 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38856c38622 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38876c38642 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38884,38885c38650,38651 +< Node id 6, node type : 1 : allocating a listener with id 5, scheduling its time out, the event_id is 6247 +< Sending query to router id 0, query id as 5527, query_seq_num as 5, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 5, scheduling its time out, the event_id is 2263 +> Sending query to router id 0, query id as 2223, query_seq_num as 5, filter 2, with description tags : 4 +38887c38653,38654 +< Sending query to router id 1, query id as 5538, query_seq_num as 5, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 2234, query_seq_num as 5, filter 2, with description tags : 4 +38889c38656,38657 +< Sending query to router id 2, query id as 5549, query_seq_num as 5, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 2245, query_seq_num as 5, filter 2, with description tags : 4 +38890a38659 +> , unique message +38892c38661 +< Sending query to router id 3, query id as 5558, query_seq_num as 5, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 2254, query_seq_num as 5, filter 2, with description tags : 4 +38893a38663 +> , unique message +38909c38679 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38929c38699 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38954c38724 +< Going to fire Event from Periodic schedule list position 9 out of 10,event_id 2336 +--- +> Going to fire Event from Periodic schedule list position 9 out of 10,event_id 1157 +38957,38968c38727,38738 +< Sending query to router id 0, query id as 5607, query_seq_num as 0, filter 1, with description tags : 0 +< Sending query to router id 1, query id as 5610, query_seq_num as 0, filter 1, with description tags : 0 +< Sending query to router id 2, query id as 5611, query_seq_num as 0, filter 1, with description tags : 0 +< Sending query to router id 0, query id as 5613, query_seq_num as 1, filter 1, with description tags : 1 +< Sending query to router id 1, query id as 5616, query_seq_num as 1, filter 1, with description tags : 1 +< Sending query to router id 2, query id as 5620, query_seq_num as 1, filter 1, with description tags : 1 +< Sending query to router id 0, query id as 5623, query_seq_num as 2, filter 1, with description tags : 5 +< Sending query to router id 1, query id as 5624, query_seq_num as 2, filter 1, with description tags : 5 +< Sending query to router id 2, query id as 5627, query_seq_num as 2, filter 1, with description tags : 5 +< Sending query to router id 0, query id as 5632, query_seq_num as 3, filter 1, with description tags : 8 +< Sending query to router id 1, query id as 5636, query_seq_num as 3, filter 1, with description tags : 8 +< Sending query to router id 2, query id as 5638, query_seq_num as 3, filter 1, with description tags : 8 +--- +> Sending query to router id 0, query id as 2303, query_seq_num as 0, filter 1, with description tags : 0 +> Sending query to router id 1, query id as 2306, query_seq_num as 0, filter 1, with description tags : 0 +> Sending query to router id 2, query id as 2307, query_seq_num as 0, filter 1, with description tags : 0 +> Sending query to router id 0, query id as 2309, query_seq_num as 1, filter 1, with description tags : 1 +> Sending query to router id 1, query id as 2312, query_seq_num as 1, filter 1, with description tags : 1 +> Sending query to router id 2, query id as 2316, query_seq_num as 1, filter 1, with description tags : 1 +> Sending query to router id 0, query id as 2319, query_seq_num as 2, filter 1, with description tags : 5 +> Sending query to router id 1, query id as 2320, query_seq_num as 2, filter 1, with description tags : 5 +> Sending query to router id 2, query id as 2323, query_seq_num as 2, filter 1, with description tags : 5 +> Sending query to router id 0, query id as 2328, query_seq_num as 3, filter 1, with description tags : 8 +> Sending query to router id 1, query id as 2332, query_seq_num as 3, filter 1, with description tags : 8 +> Sending query to router id 2, query id as 2334, query_seq_num as 3, filter 1, with description tags : 8 +38983c38753 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +38998c38768 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39048c38818 +< Time is 31 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 31 , periodic event_id is 1157, event time is 10, start_time is 0, +39064c38834 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39079c38849 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39124c38894 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39144c38914 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39164c38934 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39184c38954 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39186c38956 +< Time is 32 , periodic event_id is 2336, event time is 10 +--- +> Time is 32 , periodic event_id is 1157, event time is 10 +39189c38959 +< Time is 32 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 32 , periodic event_id is 1157, event time is 10, start_time is 0, +39205c38975 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39220c38990 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +39238c39008 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +59094c58864 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +59555c59325 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +60021c59791 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +60492c60262 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +60968c60738 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +61449c61219 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +61935c61705 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +62426c62196 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +62922c62692 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +63423c63193 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +63929c63699 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +64440c64210 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +64956c64726 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +65477c65247 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +66003c65773 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +66534c66304 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +67070c66840 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +67611c67381 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +68157c67927 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +68708c68478 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +69264c69034 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +69825c69595 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +70391c70161 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +70962c70732 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +71538c71308 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +72119c71889 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +72705c72475 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +73296c73066 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +73892c73662 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +74493c74263 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +75099c74869 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +75710c75480 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76117c75887 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76160c75930 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76205c75975 +< Time is 33 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 33 , periodic event_id is 1157, event time is 10, start_time is 0, +76221c75991 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76236c76006 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76286c76056 +< Time is 34 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 34 , periodic event_id is 1157, event time is 10, start_time is 0, +76291,76297c76061 +< Ticks:35 : Total 12 responses noted at listener id 2 of node 6 type 1 are: +< from node 2, type 2, tag 4, query_seq_num 2 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 2 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 2 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +--- +> Ticks:35 : Total 2 responses noted at listener id 2 of node 6 type 1 are: +76300,76611d76063 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 1, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 submitting response with query seq num 4, to node 6, type 1 to node 6, type 1 +< Ticks:35 : Response with query_seq_num 4, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:35 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 4 +< Total response received so far at listner id 4 is 4 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 submitting response with query seq num 4, to node 6, type 1 to node 6, type 1 +< Ticks:35 : Response with query_seq_num 4, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:35 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 4 +< Total response received so far at listner id 4 is 7 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 submitting response with query seq num 4, to node 6, type 1 to node 6, type 1 +< Ticks:35 : Response with query_seq_num 4, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:35 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 4 +< Total response received so far at listner id 4 is 8 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 2, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 3, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 1, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 0, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:35 : Node 3, type 2 forwarding query with query_seq num 4, source node 6, type 1 to node 2, type 2 +< Ticks:35 : Query with query_seq_num 4 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +76613a76066 +> , but dropped as it is duplicate +76616c76069 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76619c76072 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76621a76075 +> , but dropped as it is duplicate +76623a76078 +> , but dropped as it is duplicate +76625a76081 +> , but dropped as it is duplicate +76628c76084 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76631c76087 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76634c76090 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76637c76093 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76640c76096 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76643c76099 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76646c76102 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76648a76105 +> , but dropped as it is duplicate +76650a76108 +> , but dropped as it is duplicate +76653c76111 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76656c76114 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76659c76117 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76662c76120 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76665c76123 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76671a76130 +> , but dropped as it is duplicate +76673a76133 +> , but dropped as it is duplicate +76676c76136 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76678a76139 +> , but dropped as it is duplicate +76681c76142 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76683a76145 +> , but dropped as it is duplicate +76686c76148 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76689c76151 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76691a76154 +> , but dropped as it is duplicate +76693a76157 +> , but dropped as it is duplicate +76695a76160 +> , but dropped as it is duplicate +76698c76163 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76700a76166 +> , but dropped as it is duplicate +76703c76169 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76706c76172 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76709c76175 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +76721c76187 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76736c76202 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76761c76227 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76781c76247 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76789,76790c76255,76256 +< Node id 6, node type : 1 : allocating a listener with id 6, scheduling its time out, the event_id is 13257 +< Sending query to router id 0, query id as 12100, query_seq_num as 6, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 6, scheduling its time out, the event_id is 3741 +> Sending query to router id 0, query id as 3754, query_seq_num as 6, filter 2, with description tags : 4 +76792c76258,76259 +< Sending query to router id 1, query id as 12111, query_seq_num as 6, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 3765, query_seq_num as 6, filter 2, with description tags : 4 +76794c76261,76262 +< Sending query to router id 2, query id as 12122, query_seq_num as 6, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 3776, query_seq_num as 6, filter 2, with description tags : 4 +76795a76264 +> , unique message +76797c76266 +< Sending query to router id 3, query id as 12131, query_seq_num as 6, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 3785, query_seq_num as 6, filter 2, with description tags : 4 +76798a76268 +> , unique message +76814c76284 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76834c76304 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76859c76329 +< Time is 35 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 35 , periodic event_id is 1157, event time is 10, start_time is 0, +76875c76345 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76890c76360 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76940c76410 +< Time is 36 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 36 , periodic event_id is 1157, event time is 10, start_time is 0, +76956c76426 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76971c76441 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +76989c76459 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +96845c96315 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +97306c96776 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +97772c97242 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +98243c97713 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +98719c98189 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +99200c98670 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +99686c99156 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +100177c99647 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +100673c100143 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +101174c100644 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +101680c101150 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +102191c101661 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +102707c102177 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +103228c102698 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +103754c103224 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +104285c103755 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +104821c104291 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +105362c104832 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +105908c105378 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +106459c105929 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +107015c106485 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +107576c107046 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +108142c107612 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +108713c108183 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +109289c108759 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +109870c109340 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +110456c109926 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +111047c110517 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +111643c111113 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +112244c111714 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +112850c112320 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +113461c112931 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +113868c113338 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +113911c113381 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +113956c113426 +< Time is 37 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 37 , periodic event_id is 1157, event time is 10, start_time is 0, +113972c113442 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +113987c113457 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +114037c113507 +< Time is 38 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 38 , periodic event_id is 1157, event time is 10, start_time is 0, +114053c113523 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +114068c113538 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +114118c113588 +< Time is 39 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 39 , periodic event_id is 1157, event time is 10, start_time is 0, +114123,114127c113593 +< Ticks:40 : Total 12 responses noted at listener id 3 of node 6 type 1 are: +< from node 2, type 2, tag 4, query_seq_num 3 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 3 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +--- +> Ticks:40 : Total 2 responses noted at listener id 3 of node 6 type 1 are: +114130,115119d113595 +< from node 2, type 2, tag 4, query_seq_num 3 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 5 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 8 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 11 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 12 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 13 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 16 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 3, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 1, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 21 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 0, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 2, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 22 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 23 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 submitting response with query seq num 5, to node 6, type 1 to node 6, type 1 +< Ticks:40 : Response with query_seq_num 5, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:40 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 5 +< Total response received so far at listner id 5 is 24 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 0, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 1, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:40 : Node 2, type 2 forwarding query with query_seq num 5, source node 6, type 1 to node 3, type 2 +< Ticks:40 : Query with query_seq_num 5 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +115137a113614 +> , but dropped as it is duplicate +115140c113617 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115143c113620 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115145a113623 +> , but dropped as it is duplicate +115147a113626 +> , but dropped as it is duplicate +115149a113629 +> , but dropped as it is duplicate +115152c113632 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115155c113635 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115158c113638 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115161c113641 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115164c113644 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115167c113647 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115170c113650 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115172a113653 +> , but dropped as it is duplicate +115174a113656 +> , but dropped as it is duplicate +115177c113659 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115180c113662 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115183c113665 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115186c113668 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115189c113671 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115195a113678 +> , but dropped as it is duplicate +115197a113681 +> , but dropped as it is duplicate +115200c113684 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115202a113687 +> , but dropped as it is duplicate +115205c113690 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115207a113693 +> , but dropped as it is duplicate +115210c113696 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115213c113699 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115215a113702 +> , but dropped as it is duplicate +115217a113705 +> , but dropped as it is duplicate +115219a113708 +> , but dropped as it is duplicate +115222c113711 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115224a113714 +> , but dropped as it is duplicate +115227c113717 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115230c113720 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115233c113723 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +115245c113735 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115260c113750 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115285c113775 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115305c113795 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115313,115314c113803,113804 +< Node id 6, node type : 1 : allocating a listener with id 7, scheduling its time out, the event_id is 22829 +< Sending query to router id 0, query id as 20824, query_seq_num as 7, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 7, scheduling its time out, the event_id is 3947 +> Sending query to router id 0, query id as 3908, query_seq_num as 7, filter 2, with description tags : 4 +115316c113806,113807 +< Sending query to router id 1, query id as 20835, query_seq_num as 7, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 3919, query_seq_num as 7, filter 2, with description tags : 4 +115318c113809,113810 +< Sending query to router id 2, query id as 20846, query_seq_num as 7, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 3930, query_seq_num as 7, filter 2, with description tags : 4 +115319a113812 +> , unique message +115321c113814 +< Sending query to router id 3, query id as 20855, query_seq_num as 7, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 3939, query_seq_num as 7, filter 2, with description tags : 4 +115322a113816 +> , unique message +115338c113832 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115358c113852 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115378c113872 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115398c113892 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115418c113912 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115438c113932 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115440c113934 +< Time is 40 , periodic event_id is 2336, event time is 10 +--- +> Time is 40 , periodic event_id is 1157, event time is 10 +115443c113937 +< Going to fire Event from Periodic schedule list position 9 out of 10,event_id 2336 +--- +> Going to fire Event from Periodic schedule list position 9 out of 10,event_id 1157 +115446,115457c113940,113951 +< Sending query to router id 0, query id as 22244, query_seq_num as 4, filter 1, with description tags : 0 +< Sending query to router id 1, query id as 22247, query_seq_num as 4, filter 1, with description tags : 0 +< Sending query to router id 2, query id as 22248, query_seq_num as 4, filter 1, with description tags : 0 +< Sending query to router id 0, query id as 22250, query_seq_num as 5, filter 1, with description tags : 2 +< Sending query to router id 1, query id as 22255, query_seq_num as 5, filter 1, with description tags : 2 +< Sending query to router id 2, query id as 22260, query_seq_num as 5, filter 1, with description tags : 2 +< Sending query to router id 0, query id as 22266, query_seq_num as 6, filter 1, with description tags : 5 +< Sending query to router id 1, query id as 22267, query_seq_num as 6, filter 1, with description tags : 5 +< Sending query to router id 2, query id as 22270, query_seq_num as 6, filter 1, with description tags : 5 +< Sending query to router id 0, query id as 22275, query_seq_num as 7, filter 1, with description tags : 6 +< Sending query to router id 1, query id as 22278, query_seq_num as 7, filter 1, with description tags : 6 +< Sending query to router id 2, query id as 22281, query_seq_num as 7, filter 1, with description tags : 6 +--- +> Sending query to router id 0, query id as 5328, query_seq_num as 4, filter 1, with description tags : 0 +> Sending query to router id 1, query id as 5331, query_seq_num as 4, filter 1, with description tags : 0 +> Sending query to router id 2, query id as 5332, query_seq_num as 4, filter 1, with description tags : 0 +> Sending query to router id 0, query id as 5334, query_seq_num as 5, filter 1, with description tags : 2 +> Sending query to router id 1, query id as 5339, query_seq_num as 5, filter 1, with description tags : 2 +> Sending query to router id 2, query id as 5344, query_seq_num as 5, filter 1, with description tags : 2 +> Sending query to router id 0, query id as 5350, query_seq_num as 6, filter 1, with description tags : 5 +> Sending query to router id 1, query id as 5351, query_seq_num as 6, filter 1, with description tags : 5 +> Sending query to router id 2, query id as 5354, query_seq_num as 6, filter 1, with description tags : 5 +> Sending query to router id 0, query id as 5359, query_seq_num as 7, filter 1, with description tags : 6 +> Sending query to router id 1, query id as 5362, query_seq_num as 7, filter 1, with description tags : 6 +> Sending query to router id 2, query id as 5365, query_seq_num as 7, filter 1, with description tags : 6 +115472c113966 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115487c113981 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +115505c113999 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +135361c133855 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +135822c134316 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +136288c134782 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +136759c135253 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +137235c135729 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +137716c136210 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +138202c136696 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +138693c137187 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +139189c137683 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +139690c138184 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +140196c138690 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +140707c139201 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +141223c139717 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +141744c140238 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +142270c140764 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +142801c141295 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +143337c141831 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +143878c142372 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +144424c142918 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +144975c143469 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +145531c144025 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +146092c144586 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +146658c145152 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +147229c145723 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +147805c146299 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +148386c146880 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +148972c147466 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +149563c148057 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +150159c148653 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +150760c149254 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +151366c149860 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +151977c150471 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152384c150878 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152427c150921 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152472c150966 +< Time is 41 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 41 , periodic event_id is 1157, event time is 10, start_time is 0, +152488c150982 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152503c150997 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152553c151047 +< Time is 42 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 42 , periodic event_id is 1157, event time is 10, start_time is 0, +152569c151063 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152584c151078 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152634c151128 +< Time is 43 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 43 , periodic event_id is 1157, event time is 10, start_time is 0, +152650c151144 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152665c151159 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +152715c151209 +< Time is 44 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 44 , periodic event_id is 1157, event time is 10, start_time is 0, +152720c151214 +< Ticks:45 : Total 12 responses noted at listener id 4 of node 6 type 1 are: +--- +> Ticks:45 : Total 2 responses noted at listener id 4 of node 6 type 1 are: +152723,153716d151216 +< from node 2, type 2, tag 4, query_seq_num 4 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 4 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 4 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 5 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 8 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 11 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 12 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 13 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 16 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 3, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 1, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 21 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 0, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 2, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 22 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 23 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 submitting response with query seq num 6, to node 6, type 1 to node 6, type 1 +< Ticks:45 : Response with query_seq_num 6, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:45 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 6 +< Total response received so far at listner id 6 is 24 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 0, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 1, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:45 : Node 2, type 2 forwarding query with query_seq num 6, source node 6, type 1 to node 3, type 2 +< Ticks:45 : Query with query_seq_num 6 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +153718a151219 +> , but dropped as it is duplicate +153721c151222 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153724c151225 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153726a151228 +> , but dropped as it is duplicate +153728a151231 +> , but dropped as it is duplicate +153730a151234 +> , but dropped as it is duplicate +153733c151237 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153736c151240 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153739c151243 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153742c151246 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153745c151249 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153748c151252 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153751c151255 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153753a151258 +> , but dropped as it is duplicate +153755a151261 +> , but dropped as it is duplicate +153758c151264 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153761c151267 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153764c151270 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153767c151273 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153770c151276 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153776a151283 +> , but dropped as it is duplicate +153778a151286 +> , but dropped as it is duplicate +153781c151289 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153783a151292 +> , but dropped as it is duplicate +153786c151295 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153788a151298 +> , but dropped as it is duplicate +153791c151301 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153794c151304 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153796a151307 +> , but dropped as it is duplicate +153798a151310 +> , but dropped as it is duplicate +153800a151313 +> , but dropped as it is duplicate +153803c151316 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153805a151319 +> , but dropped as it is duplicate +153808c151322 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153811c151325 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153814c151328 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +153826c151340 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +153841c151355 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +153859c151373 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +173715c171229 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +174176c171690 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +174642c172156 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +175113c172627 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +175589c173103 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +176070c173584 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +176556c174070 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +177047c174561 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +177543c175057 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +178044c175558 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +178550c176064 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +179061c176575 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +179577c177091 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +180098c177612 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +180624c178138 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +181155c178669 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +181691c179205 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +182232c179746 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +182778c180292 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +183329c180843 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +183885c181399 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +184446c181960 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +185012c182526 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +185583c183097 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +186159c183673 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +186740c184254 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +187326c184840 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +187917c185431 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +188513c186027 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +189114c186628 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +189720c187234 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190331c187845 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190738c188252 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190781c188295 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190801c188315 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190821c188335 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190829,190830c188343,188344 +< Node id 6, node type : 1 : allocating a listener with id 8, scheduling its time out, the event_id is 50479 +< Sending query to router id 0, query id as 46106, query_seq_num as 8, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 8, scheduling its time out, the event_id is 5485 +> Sending query to router id 0, query id as 5448, query_seq_num as 8, filter 2, with description tags : 4 +190832c188346,188347 +< Sending query to router id 1, query id as 46117, query_seq_num as 8, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 5459, query_seq_num as 8, filter 2, with description tags : 4 +190834c188349,188350 +< Sending query to router id 2, query id as 46128, query_seq_num as 8, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 5470, query_seq_num as 8, filter 2, with description tags : 4 +190835a188352 +> , unique message +190837c188354 +< Sending query to router id 3, query id as 46137, query_seq_num as 8, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 5479, query_seq_num as 8, filter 2, with description tags : 4 +190838a188356 +> , unique message +190854c188372 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190874c188392 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190899c188417 +< Time is 45 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 45 , periodic event_id is 1157, event time is 10, start_time is 0, +190915c188433 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190930c188448 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +190980c188498 +< Time is 46 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 46 , periodic event_id is 1157, event time is 10, start_time is 0, +190996c188514 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191011c188529 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191061c188579 +< Time is 47 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 47 , periodic event_id is 1157, event time is 10, start_time is 0, +191077c188595 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191092c188610 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191137c188655 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191157c188675 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191177c188695 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191197c188715 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191199c188717 +< Time is 48 , periodic event_id is 2336, event time is 10 +--- +> Time is 48 , periodic event_id is 1157, event time is 10 +191202c188720 +< Time is 48 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 48 , periodic event_id is 1157, event time is 10, start_time is 0, +191218c188736 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191233c188751 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +191251c188769 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +211107c208625 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +211568c209086 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +212034c209552 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +212505c210023 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +212981c210499 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +213462c210980 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +213948c211466 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +214439c211957 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +214935c212453 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +215436c212954 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +215942c213460 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +216453c213971 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +216969c214487 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +217490c215008 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +218016c215534 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +218547c216065 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +219083c216601 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +219624c217142 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +220170c217688 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +220721c218239 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +221277c218795 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +221838c219356 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +222404c219922 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +222975c220493 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +223551c221069 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +224132c221650 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +224718c222236 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +225309c222827 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +225905c223423 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +226506c224024 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +227112c224630 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +227723c225241 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +228130c225648 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +228173c225691 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +228218c225736 +< Time is 49 , periodic event_id is 2336, event time is 10, start_time is 0, +--- +> Time is 49 , periodic event_id is 1157, event time is 10, start_time is 0, +228223,228239c225741 +< Ticks:50 : Total 24 responses noted at listener id 5 of node 6 type 1 are: +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +--- +> Ticks:50 : Total 2 responses noted at listener id 5 of node 6 type 1 are: +228242,229233d225743 +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< from node 2, type 2, tag 4, query_seq_num 5 +< ResourceNode::handle_recvd_response(): Seems this router 2 is already known to 6 and was attached to 2 earlier +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 5 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 8 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 11 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 12 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 13 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 16 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 3, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 1, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 21 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 0, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 2, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 2, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 22 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 23 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 submitting response with query seq num 7, to node 6, type 1 to node 6, type 1 +< Ticks:50 : Response with query_seq_num 7, Tag 4, received by Node id 6, node type 1, with source node 2, type 2 +< Ticks:50 : Noted a response at node 6 type 1, from node 2, type 2, with tag 4 and query_seq_num 7 +< Total response received so far at listner id 7 is 24 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 0, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 0, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 1, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 1, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +< Ticks:50 : Node 2, type 2 forwarding query with query_seq num 7, source node 6, type 1 to node 3, type 2 +< Ticks:50 : Query with query_seq_num 7 Tag 4, received by Router Node id 3, type 2 with source node 6, type 1 +< , but dropped as it has expired TTL, the hop count was 3, the TTL was 3 +229235a225746 +> , but dropped as it is duplicate +229238c225749 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229241c225752 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229243a225755 +> , but dropped as it is duplicate +229245a225758 +> , but dropped as it is duplicate +229247a225761 +> , but dropped as it is duplicate +229250c225764 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229253c225767 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229256c225770 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229259c225773 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229262c225776 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229265c225779 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229268c225782 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229270a225785 +> , but dropped as it is duplicate +229272a225788 +> , but dropped as it is duplicate +229275c225791 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229278c225794 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229281c225797 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229284c225800 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229287c225803 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229293a225810 +> , but dropped as it is duplicate +229295a225813 +> , but dropped as it is duplicate +229298c225816 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229300a225819 +> , but dropped as it is duplicate +229303c225822 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229305a225825 +> , but dropped as it is duplicate +229308c225828 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229311c225831 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229313a225834 +> , but dropped as it is duplicate +229315a225837 +> , but dropped as it is duplicate +229317a225840 +> , but dropped as it is duplicate +229320c225843 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229322a225846 +> , but dropped as it is duplicate +229325c225849 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229328c225852 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229331c225855 +< Match found for Tag 4, so will be sending a response +--- +> , but dropped as it is duplicate +229343c225867 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +229358c225882 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +229383c225907 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +229403c225927 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +229411,229412c225935,225936 +< Node id 6, node type : 1 : allocating a listener with id 9, scheduling its time out, the event_id is 69617 +< Sending query to router id 0, query id as 63675, query_seq_num as 9, filter 2, with description tags : 4 +--- +> Node id 6, node type : 1 : allocating a listener with id 9, scheduling its time out, the event_id is 6927 +> Sending query to router id 0, query id as 6945, query_seq_num as 9, filter 2, with description tags : 4 +229414c225938,225939 +< Sending query to router id 1, query id as 63686, query_seq_num as 9, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 1, query id as 6956, query_seq_num as 9, filter 2, with description tags : 4 +229416c225941,225942 +< Sending query to router id 2, query id as 63697, query_seq_num as 9, filter 2, with description tags : 4 +--- +> , unique message +> Sending query to router id 2, query id as 6967, query_seq_num as 9, filter 2, with description tags : 4 +229417a225944 +> , unique message +229419c225946 +< Sending query to router id 3, query id as 63706, query_seq_num as 9, filter 2, with description tags : 4 +--- +> Sending query to router id 3, query id as 6976, query_seq_num as 9, filter 2, with description tags : 4 +229420a225948 +> , unique message +229436c225964 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +229456c225984 +< position 9, event_id 2336, time 10, start_time 0 +--- +> position 9, event_id 1157, time 10, start_time 0 +229481c226009 +< Going to fire Event from Periodic schedule list position 9 out of 10,event_id 2336 +--- +> Going to fire Event from Periodic schedule list position 9 out of 10,event_id 1157 +229484,229492c226012,226020 +< Sending query to router id 0, query id as 63754, query_seq_num as 8, filter 1, with description tags : 0 +< Sending query to router id 2, query id as 63757, query_seq_num as 8, filter 1, with description tags : 0 +< Sending query to router id 3, query id as 63759, query_seq_num as 8, filter 1, with description tags : 0 +< Sending query to router id 0, query id as 63763, query_seq_num as 9, filter 1, with description tags : 2 +< Sending query to router id 2, query id as 63768, query_seq_num as 9, filter 1, with description tags : 2 +< Sending query to router id 3, query id as 63774, query_seq_num as 9, filter 1, with description tags : 2 +< Sending query to router id 0, query id as 63781, query_seq_num as 10, filter 1, with description tags : 6 +< Sending query to router id 2, query id as 63784, query_seq_num as 10, filter 1, with description tags : 6 +< Sending query to router id 3, query id as 63789, query_seq_num as 10, filter 1, with description tags : 6 +--- +> Sending query to router id 0, query id as 7024, query_seq_num as 8, filter 1, with description tags : 0 +> Sending query to router id 2, query id as 7027, query_seq_num as 8, filter 1, with description tags : 0 +> Sending query to router id 3, query id as 7029, query_seq_num as 8, filter 1, with description tags : 0 +> Sending query to router id 0, query id as 7033, query_seq_num as 9, filter 1, with description tags : 2 +> Sending query to router id 2, query id as 7038, query_seq_num as 9, filter 1, with description tags : 2 +> Sending query to router id 3, query id as 7044, query_seq_num as 9, filter 1, with description tags : 2 +> Sending query to router id 0, query id as 7051, query_seq_num as 10, filter 1, with description tags : 6 +> Sending query to router id 2, query id as 7054, query_seq_num as 10, filter 1, with description tags : 6 +> Sending query to router id 3, query id as 7059, query_seq_num as 10, filter 1, with description tags : 6 +229514c226042 +< 19257 residual events needs cleaning up +--- +> 1561 residual events needs cleaning up +229526,229529c226054,226057 +< 63795 total queries generated +< 17449 residual queries left to delete +< 6597 total response generated +< 1689 residual responses left to delete +--- +> 7065 total queries generated +> 1377 residual queries left to delete +> 637 total response generated +> 65 residual responses left to delete diff --git a/diff-out b/diff-out new file mode 100755 index 0000000..e69de29 diff --git a/simulation b/simulation new file mode 100755 index 0000000..2de510b Binary files /dev/null and b/simulation differ diff --git a/simulation.cpp b/simulation.cpp new file mode 100755 index 0000000..0fe6746 --- /dev/null +++ b/simulation.cpp @@ -0,0 +1,509 @@ + +#include + +//For onto +#include +#include +#include +#include + +#include //For random generator +#include +#include +#include + +#include +#include +#include + +#include +#include // for boost::tie + +#include // for boost::graph_traits +#include +#include +#include + +#include + +//For std::numeric_limits::max() & memset() +#include + +#include "ForwardDeclaration.hpp"//Forward declaration to get rid of circular dependency +#include "Node.hpp" +#include "ProxyAgent.hpp" + + +#include "SmallWorldGenerator.hpp" + +#include "OntologyRepository.hpp" +#include "OperationSimulator.hpp" +#include "IO_Reporter.hpp" +#include "Scheduler.hpp" + +#include "Infrastructure.hpp" +#include "Input.hpp" //This contains the list of input parameters +#include "Functor.hpp" +#include "Listener.hpp" +#include "Message.hpp" +#include "Event.hpp" +#include "Database.hpp" +#include "Analyst.hpp" + + +//Suneil's code +unsigned int get_dist_mat(SmallWorldGraph *our_SmallWorldGraph); +std::vector< std::vector< int > > swg_all_distances; +std::vector< std::vector< Tag > > swg_all_parents; +//Suneil's code + +//Infrastructure *g_If_ptr; + +int main(int argc, char *argv[]) +{ + //Description dummy_description; + + //BootstrapNodeList dummy_bootstrapNodeList; + + unsigned int ontology_network_diameter; + + char input_file_name[20]; + unsigned int num_vertices; + //Create infrastructure + Infrastructure our_Infrastructure; + + our_Infrastructure.analyst.If_ptr = &our_Infrastructure; + + printf("Created Infrastructure for simulation...\n"); + + if(argc<2) + { + printf("Provide the config input file name : "); + scanf("%s", input_file_name); + } + else + strcpy(input_file_name,argv[1]); + + + //Read all parameters from a file/ console + our_Infrastructure.IO_Reporter_ptr->read_input_parameter(input_file_name, &our_Infrastructure ); + + printf("\nThe input parameters read from file :%s are below \n", input_file_name); + + our_Infrastructure.IO_Reporter_ptr->write_input_parameter_on_screen_from(input_file_name ); + + num_vertices = our_Infrastructure.param_ptr->Birth_ResourceNode_total_num_cycles + + our_Infrastructure.param_ptr->Birth_RouterNode_total_num_cycles; + + + /* + struct provisioned_capacity + { + unsigned int edge_list; + }; + */ + if (our_Infrastructure.param_ptr->network_struct_report_required) + our_Infrastructure.provisioned_capacity.edge_list = num_vertices * + our_Infrastructure.param_ptr->RouterNode_routing_table_max_width * + our_Infrastructure.param_ptr->RouterNode_routing_table_max_length; //Need to fix this patch thing with proper expression + + else our_Infrastructure.provisioned_capacity.edge_list = 2; + + //Provisioning the Analyst + + our_Infrastructure.analyst.list_of_edges= new Edge [our_Infrastructure.provisioned_capacity.edge_list]; + if (!our_Infrastructure.analyst.list_of_edges) + { + cout << "simulation: Error: memory could not be allocated for Analyst::list_of_edges"; + exit(1); + } + + our_Infrastructure.analyst.weight = new u_8 [our_Infrastructure.provisioned_capacity.edge_list]; + if (!our_Infrastructure.analyst.weight) + { + cout << "simulation: Error: memory could not be allocated for Analyst::weight"; + exit(1); + } + + if (!our_Infrastructure.param_ptr->network_struct_report_required) { + + memset(our_Infrastructure.analyst.list_of_edges, 0, our_Infrastructure.provisioned_capacity.edge_list * 4); + memset(our_Infrastructure.analyst.weight, 0, our_Infrastructure.provisioned_capacity.edge_list * 4); + + } + + //if (our_Infrastructure.param_ptr->network_struct_report_required) + our_Infrastructure.analyst.distance_histogram = new unsigned int [std::numeric_limits::max()+1]; + //else our_Infrastructure.analyst.distance_histogram = new unsigned int [2];//Dont allocate much if structural reports are not required + + if (!our_Infrastructure.analyst.distance_histogram) + { + cout << "simulation: Error: memory could not be allocated for Analyst::distance_histogram"; + exit(1); + } + + + our_Infrastructure.analyst.routing_table_length_histogram = new unsigned int [our_Infrastructure.param_ptr->RouterNode_routing_table_max_length+1]; + if (!our_Infrastructure.analyst.routing_table_length_histogram) + { + cout << "simulation: Error: memory could not be allocated for Analyst::routing_table_length_histogram"; + exit(1); + } + + + our_Infrastructure.analyst.routing_table_width_histogram = new unsigned int [our_Infrastructure.param_ptr->RouterNode_routing_table_max_width+1]; + if (!our_Infrastructure.analyst.routing_table_width_histogram) + { + cout << "simulation: Error: memory could not be allocated for Analyst::routing_table_width_histogram"; + exit(1); + } + + + our_Infrastructure.analyst.routing_table_max_width_histogram = new unsigned int [our_Infrastructure.param_ptr->RouterNode_routing_table_max_width+1]; + if (!our_Infrastructure.analyst.routing_table_max_width_histogram) + { + cout << "simulation: Error: memory could not be allocated for Analyst::routing_table_max_width_histogram"; + exit(1); + } + + + + + if (our_Infrastructure.param_ptr->snapshot_reporter_period > 0) + { + printf("\n\nScheduling periodic snap shot reporter with periodicity %u, starting at %u\n", + our_Infrastructure.param_ptr->snapshot_reporter_period, our_Infrastructure.param_ptr->snapshot_reporter_start_time); + + our_Infrastructure.IO_Reporter_ptr->schedule_periodic(our_Infrastructure.param_ptr->snapshot_reporter_period, + our_Infrastructure.param_ptr->snapshot_reporter_start_time); + } + + if (our_Infrastructure.param_ptr->oneshot_reporter_time > 0) + { + printf("Scheduling one shot reporter at time %u\n", our_Infrastructure.param_ptr->oneshot_reporter_time); + + our_Infrastructure.IO_Reporter_ptr->schedule_event(our_Infrastructure.param_ptr->oneshot_reporter_time); + } + + printf("\n\nStarting to build the ontology.....\n"); + + SmallWorldGraph our_SmallWorldGraph(our_Infrastructure.param_ptr->num_words,our_Infrastructure.param_ptr->degree_of_associativity_of_words, + our_Infrastructure.param_ptr->sw_model_probability, our_Infrastructure.param_ptr->degree_of_associativity_of_words) ; + + our_Infrastructure.IO_Reporter_ptr->write_network_to_pajek_file(our_SmallWorldGraph.num_vertices,our_SmallWorldGraph.num_edges, our_SmallWorldGraph.list_of_edges, our_SmallWorldGraph.weight, + our_Infrastructure.param_ptr->output_onto_file_name, 0); + +///Suneil's code + + printf("Finished building the ontology, wrote to file :%s\n", our_Infrastructure.param_ptr->output_onto_file_name); + + ontology_network_diameter = get_dist_mat(&our_SmallWorldGraph); + cout<<"Ontology Network Diameter = "<output_onto_report_file_name); + + our_Infrastructure.IO_Reporter_ptr->write_structural_report(our_SmallWorldGraph.num_vertices, + ontology_network_diameter, swg_all_distances, swg_all_parents, + NULL, NULL,NULL, NULL, + our_Infrastructure.param_ptr->output_onto_report_file_name, 0); + + ///Suneil's code + + + + printf("Starting network generation phase of the simulation...\n"); + + //Generate or Load ontology from file + our_Infrastructure.onto_repository_ptr + = new OntologyRepository(our_SmallWorldGraph.list_of_edges, + our_SmallWorldGraph.weight, our_SmallWorldGraph.num_vertices, our_SmallWorldGraph.num_edges); + + + printf("Starting network generation process...\n"); +#ifdef DEBUG + enum NodeType primary_node, birthagent_resource_node, birthagent_router_node, birthagent_user_node, user_node, resource_node, router_node; + + primary_node = PRIMARY_NODE; birthagent_resource_node = BIRTHAGENT_RESOURCE_NODE; + birthagent_router_node = BIRTHAGENT_ROUTER_NODE; resource_node = RESOURCE_NODE; + router_node = ROUTER_NODE; birthagent_user_node = BIRTHAGENT_USER_NODE; + user_node = USER_NODE; + + printf("PRIMARY NODE has type %d, BIRTHAGENT_ROUTER_NODE has type %d, BIRTHAGENT_RESOURCE_NODE has type %d, BIRTHAGENT_USER_NODE has type %d, ROUTER NODE has type %d, RESOURCE NODE has type %d, USER_NODE has type %d, \n", + primary_node , birthagent_router_node, birthagent_resource_node, birthagent_user_node, router_node, resource_node, user_node ); +#endif + //Create all types of proxy agents (for all type of nodes) + + + //Router node injection + BirthAgent our_BirthAgent_RouterNode( + + our_Infrastructure.param_ptr->bootstrap_threashold, + our_Infrastructure.param_ptr->Birth_RouterNode_start_time, + our_Infrastructure.param_ptr->Birth_RouterNode_period , + our_Infrastructure.param_ptr->Birth_RouterNode_total_num_cycles, + our_Infrastructure.param_ptr->Birth_RouterNode_num_cycles_per_heartbeat, + + + our_Infrastructure.param_ptr->message_time_to_live, + + + our_Infrastructure.param_ptr->RouterNode_known_routers_floor, + our_Infrastructure.param_ptr->RouterNode_known_routers_trim_threshold, + our_Infrastructure.param_ptr->RouterNode_known_routers_capacity, + + our_Infrastructure.param_ptr->ResourceNode_translation_radius, + + our_Infrastructure.param_ptr->RouterNode_routing_table_length_floor, + our_Infrastructure.param_ptr->RouterNode_routing_table_length_trim_threshold, + our_Infrastructure.param_ptr->RouterNode_routing_table_max_length, + + our_Infrastructure.param_ptr->RouterNode_routing_table_width_floor, + our_Infrastructure.param_ptr->RouterNode_routing_table_width_threshold, + our_Infrastructure.param_ptr->RouterNode_routing_table_min_num_resource_nodes, + our_Infrastructure.param_ptr->RouterNode_routing_table_max_width, + + + our_Infrastructure.param_ptr->RouterNode_max_description, + our_Infrastructure.param_ptr->RouterNode_k, + our_Infrastructure.param_ptr->RouterNode_num_centroid_tags_to_explore_per_period, + our_Infrastructure.param_ptr->RouterNode_num_exploration_queries_to_submit_per_period, + + our_Infrastructure.param_ptr->RouterNode_vitality, + our_Infrastructure.param_ptr->RouterNode_extroversion, + our_Infrastructure.param_ptr->RouterNode_delay, + our_Infrastructure.param_ptr->RouterNode_response_timeout, + + &our_Infrastructure ); + + + BirthAgent our_BirthAgent_ResourceNode( + + our_Infrastructure.param_ptr->bootstrap_threashold, + our_Infrastructure.param_ptr->Birth_ResourceNode_start_time, + our_Infrastructure.param_ptr->Birth_ResourceNode_period , + our_Infrastructure.param_ptr->Birth_ResourceNode_total_num_cycles, + our_Infrastructure.param_ptr->Birth_ResourceNode_num_cycles_per_heartbeat, + + our_Infrastructure.param_ptr->message_time_to_live, + + + our_Infrastructure.param_ptr->ResourceNode_known_routers_floor, + our_Infrastructure.param_ptr->ResourceNode_known_routers_trim_threshold, + our_Infrastructure.param_ptr->ResourceNode_known_routers_capacity, + + our_Infrastructure.param_ptr->ResourceNode_translation_radius, + + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + + + our_Infrastructure.param_ptr->ResourceNode_max_description, /*For now assume only a single tag*/ + 0, + 0, + 0, + + our_Infrastructure.param_ptr->ResourceNode_vitality, + our_Infrastructure.param_ptr->ResourceNode_extroversion, + our_Infrastructure.param_ptr->ResourceNode_delay, + our_Infrastructure.param_ptr->ResourceNode_response_timeout, + + &our_Infrastructure ); + + //Want report for generation and operations only + our_Infrastructure.IO_Reporter_ptr->operational_phase = GENERATION_PHASE | OPERATION_PHASE ; + + //our_Infrastructure.scheduler_ptr->run(our_Infrastructure.param_ptr->generation_phase_run_for_ticks + 1 ); + + //printf("Finished network generation phase of the simulation...\n\n"); + + + //printf("Starting network operation process...\n"); + + + BirthAgent our_BirthAgent_UserNode( + + 0, + our_Infrastructure.param_ptr->Birth_UserNode_start_time, + our_Infrastructure.param_ptr->Birth_UserNode_period, + 1, + 1, + + our_Infrastructure.param_ptr->query_time_to_live, + + 0, + 0, + 0, + + 0, + + 0, + 0, + 0, + + 0, + 0, + 0, + 0, + + + 0, + 0, + 0, + our_Infrastructure.param_ptr->UserNode_num_queries_to_submit_per_period, + + our_Infrastructure.param_ptr->UserNode_vitality, + our_Infrastructure.param_ptr->UserNode_extroversion, + 0, + our_Infrastructure.param_ptr->UserNode_response_timeout, + + &our_Infrastructure ); + + + /* + our_Infrastructure.user_node_ptr = new UserNode( + our_Infrastructure.param_ptr->message_time_to_live, + 0, + 0, + 0, + our_Infrastructure.param_ptr->UserNode_num_queries_to_submit_per_period, + dummy_description, + (std::numeric_limits::max() - 2), + our_Infrastructure.param_ptr->UserNode_vitality, + 0, + 0, + our_Infrastructure.param_ptr->UserNode_response_timeout, + dummy_bootstrapNodeList, + &our_Infrastructure + ); + */ + + //Want report for operations only + //our_Infrastructure.IO_Reporter_ptr->operational_phase = OPERATION_PHASE ; + + printf("Staring network generation and operation phase of the simulation together (based on start time of user node birth agents)...\n\n"); + + //Run simulation + our_Infrastructure.scheduler_ptr->run(our_Infrastructure.param_ptr->run_for_ticks + 1 ); + + printf("Finished network generation & operation phase of the simulation...\n\n"); + + printf("Deleteing all memory objects created in simulation main program.....\n"); + + std::vector< std::vector< int > >::iterator swg_all_distances_itr = swg_all_distances.begin(); + //while (swg_all_distances_itr != swg_all_distances.end()) + for (unsigned int i= swg_all_distances.size(); + i >0;i-- ) + { + (*swg_all_distances_itr).clear(); + swg_all_distances_itr++; + } + swg_all_distances.clear(); + + std::vector< std::vector< Tag > >::iterator swg_all_parents_itr = swg_all_parents.begin(); + //while (swg_all_parents_itr != swg_all_parents.end()) + for (unsigned int i= swg_all_parents.size(); + i >0;i-- ) + { + (*swg_all_parents_itr).clear(); + swg_all_parents_itr++; + } + swg_all_parents.clear(); + + + printf("Finished deleting all memory objects to reclaim memory from main program\n"); + + return 0; +} + + + + +unsigned int get_dist_mat(SmallWorldGraph *our_SmallWorldGraph) +{ + + bool r; + + //Making the matrices ready for bellman_ford for distance calculation from node 0 + std::vector distance(our_SmallWorldGraph->num_vertices, std::numeric_limits::max()); + std::vector parent(our_SmallWorldGraph->num_vertices,-1); + std::vector< std::vector > distance_creator_vector(our_SmallWorldGraph->num_vertices, distance); + //thanks to deep copy !! + swg_all_distances = distance_creator_vector; + std::vector< std::vector > parent_creator_vector(our_SmallWorldGraph->num_vertices,parent); + //thanks to deep copy !! + swg_all_parents = parent_creator_vector; + unsigned int diameter=0; + EdgeGraph bellman_g(our_SmallWorldGraph->list_of_edges, (our_SmallWorldGraph->list_of_edges + our_SmallWorldGraph->num_edges) ); + + //Create the distance and parent matrix + for (int j = 0; j < our_SmallWorldGraph->num_vertices; ++j) + { + swg_all_distances[j][j] = 0; + swg_all_parents[j][j] = j; + + r = bellman_ford_shortest_paths(bellman_g, int (our_SmallWorldGraph->num_vertices), + boost::weight_map(our_SmallWorldGraph->weight).distance_map(&((swg_all_distances[j])[0])).predecessor_map(&((swg_all_parents[j])[0]))); + + for (int k = 0; k < our_SmallWorldGraph->num_vertices; ++k) + if (swg_all_distances[j][k] > diameter) diameter = swg_all_distances[j][k]; + } + + return diameter; + + +} + + +/* +//Input parameter list + +//Simulation parameters +unsigned int run_for_ticks = 1000; +unsigned int bootstrap_threashold = 5; + +//Message parameters +unsigned int message_time_to_live = 100; + +//ResourceNode parameters +int ResourceNode_vitality = 10; +int ResourceNode_extroversion = 3; +Tick ResourceNode_response_timeout = 100; + +//RouterNode parameters +int RouterNode_vitality = 10; +int RouterNode_extroversion = 3; +Tick RouterNode_response_timeout = 100; +int RouterNode_k = 3; +unsigned int RouterNode_routing_table_max_length = 1000; + + +//Birth proxy agent for resource nodes parameters +Tick Birth_ResourceNode_start_time = 200; +Tick Birth_ResourceNode_period = 20; +unsigned int Birth_ResourceNode_num_cycles = 10; + +//Birth proxy agent for router node parameters +Tick Birth_RouterNode_start_time = 0; +Tick Birth_RouterNode_period = 100; +unsigned int Birth_RouterNode_num_cycles = 5; + +//Ontology generator parameter +unsigned int num_words = 100; +unsigned int degree_of_associativity_of_words = 4; +float sw_model_probability = 0.02; + +//File names +char input_onto_file_name[20] = "ontoint"; +char output_onto_file_name[20] = "ontoout"; +char output_network_file_name[20] = "netout"; +char structural_report_file_name[20] = "strucrep"; +char performance_report_file_name[20] = "perfrep"; + +*/ + diff --git a/simulation.o b/simulation.o new file mode 100755 index 0000000..317da81 Binary files /dev/null and b/simulation.o differ diff --git a/test.cpp b/test.cpp new file mode 100755 index 0000000..3715c84 --- /dev/null +++ b/test.cpp @@ -0,0 +1,68 @@ +#include +#include + + +#define RANGE 16 + + +int main(int argc, char *argv[]) +{ + int* weight; + int *weight_ptr, *weight_ptr0, *weight_ptr1, *weight_ptr2; + + printf("Hello, world\n"); + + weight = new int[RANGE]; + memset(weight,0,RANGE); + int &val0 = weight[0], &val1= weight[1], &val2 = weight[2]; + + //Loads the memory + for (int i=0;i