aboutsummaryrefslogtreecommitdiff
path: root/advtrains/textures/advtrains_track_swlst.png
blob: 314bd2d9e3b7699e338f3c7a989b509d8130bf80 (plain)
ofshex dumpascii
0000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 00 00 00 01 00 08 06 00 00 00 5c 72 a8 .PNG........IHDR.............\r.
0020 66 00 00 00 06 62 4b 47 44 00 ff 00 ff 00 ff a0 bd a7 93 00 00 00 09 70 48 59 73 00 00 0e c3 00 f....bKGD..............pHYs.....
0040 00 0e c3 01 c7 6f a8 64 00 00 00 07 74 49 4d 45 07 e0 06 09 13 14 28 2d a3 69 8e 00 00 20 00 49 .....o.d....tIME......(-.i.....I
0060 44 41 54 78 da ec bd 7b b0 6c d9 59 1f f6 fb be b5 f6 a3 bb cf eb 9e fb 9a d1 8c 34 44 08 3d 91 DATx...{.l.Y...............4D.=.
0080 46 96 90 c5 c3 63 85 87 31 89 1d 84 41 11 02 83 a1 1c 97 5d 06 59 8e 0b 8a 40 e2 14 45 62 92 0a F....c..1...A......].Y...@..Eb..
00a0 58 3c 24 21 9b c4 65 1b 17 18 11 c0 21 29 57 2a 60 23 92 d8 45 40 32 46 02 24 d0 48 08 8d 9e 33 X<$!..e.....!)W*`#..E@2F.$.H...3
00c0 f7 79 ce e9 d3 dd 7b ef b5 d6 f7 e5 8f b5 d6 ee dd 7d cf c8 23 cd cc 95 e6 de fd bb d5 75 cf bd .y....{..........}..#........u..
00e0 b7 ef 39 dd bd f7 fa 1e bf ef f7 7d 1f 30 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 ..9........}.0b...#F..1b...#F..1
0100 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 b...#F..1b...#F..1b...#F..1b...#
0120 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 F..1b...#F..1b...#F..1b...#F..1b
0140 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 ...#F..1b...#F..1b...#F..1b...#F
0160 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 ..1b...#F..1b...#F..1b...#F..1b.
0180 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c ..#F..1b...#F..1b...#F..1b...#F.
01a0 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 .1b...#F..1b...#F..1b...#F..1b..
01c0 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 .#F..1b...#F..1b...#F..1b...#F..
01e0 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 1b...#F..1b...#F..1b...#F..1b...
0200 23 46 8c 18 31 62 c4 88 11 23 46 3c 79 d0 dd f2 46 5f f2 e2 17 4e 00 bc 0d 44 7f 95 c8 62 67 67 #F..1b...#F<y...F_...N...D...bgg
0220 86 e9 74 8a c9 64 82 67 3f fb d9 d8 df df 07 11 a1 eb 3a 84 10 20 22 f0 de 43 44 60 ad 45 55 55 ..t..d.g?.........:..."..CD`.EUU
0240 00 80 f9 7c 8e 8f 7f fc e3 38 3d 3d c5 c9 c9 09 6e de bc 89 dd dd 5d 4c a7 93 5f 25 a2 6f 7e d7 ...|.....8==....n.....]L.._%.o~.
0260 bb de 7d 3c de 56 b7 07 2f 7f f9 83 fb 0a fd 85 66 d5 fe f9 c5 62 81 c3 c3 43 ec ed ed 61 6f 6f ..}<.V../.......f....b...C...aoo
0280 0f 0f 3c f0 00 f6 f6 f6 20 22 58 2e 97 70 ce 41 55 a1 aa 20 22 d4 75 8d dd dd 5d 10 11 ae 5d bb ..<......"X..p.AU...".u...]...].
02a0 86 8f 7c e4 23 58 2c 16 e9 71 8a a2 b0 a8 eb fa e1 b2 28 bf f4 ff fb ad df be 79 a7 7e 86 f6 6e ..|.#X,..q........(.......y.~..n
02c0 b9 59 76 66 33 a8 2a 44 14 ad f3 50 55 00 80 aa c2 7b 8f 10 02 88 a8 ff 7b 22 82 b5 b6 ff 3a 3f .Yvf3.*D...PU....{......{"....:?
02e0 57 44 20 22 bd 91 c8 5f 7b ef c1 44 e3 a9 bc 9d de 8b 19 80 f4 6e 8c 88 fa 6b 95 af 57 be 9e db WD."..._{..D.........n...k..W...
0300 7f de fe fb e1 ff cd cf 13 09 08 c1 dd d1 17 f5 ae 31 00 93 c9 04 0a 14 c1 07 74 7e 01 22 02 33 .................1........t~.".3
0320 a3 28 0a 54 55 85 b2 2c 37 0e 38 00 30 73 ff 7b 36 0e c3 e7 e4 af bd f7 f0 de 83 30 1a 80 cf 59 .(.TU..,7.8.0s.{6..........0...Y
0340 10 bb f5 d1 6f 1f fe 6d 9c 65 00 f2 f5 26 62 ec ed ed a1 2c ab 23 d5 10 46 03 70 27 dc 26 44 44 ....o..m.e...&b....,.#..F.p'.&DD
0360 4c f7 fb 74 3d f3 05 37 c6 c0 5a 8b a2 28 a0 aa bd 67 1f de 40 c6 18 d4 75 0d 00 70 ce c1 5a db L..t=..7..Z..(...g..@...u..p..Z.
0380 df 2c 00 52 14 20 e3 59 bc cd 30 c6 40 44 2a 42 fc 95 23 b1 1c d1 65 03 9d 8d f8 f0 9a e5 74 2f .,.R...Y..0.@D*B..#...e.......t/
03a0 5f e7 fc ef cc 1c ff 6c 2c 88 e9 b2 ef 82 19 0d c0 1d 00 1f 02 ab d7 83 e0 fd 46 b8 38 0c 19 69 _......l,.................F.8..i
03c0 2b 84 cf 9e 61 3b 74 cc c6 23 3f 9f a0 20 e0 22 8d 39 c0 6d 86 1a 91 70 af 48 80 2a 6e 89 d0 c2 +...a;t..#?....".9.m...p.H.*n...
03e0 c0 d8 6f 5f db e1 75 dd be be f9 11 82 b4 22 9f 26 8c 18 0d c0 33 c9 5b b0 74 ae 5b 0e c9 a0 7c ..o_..u.......".&....3.[.t.[...|
0400 a3 0c c3 fe b3 c2 7c 22 da f8 f7 7c 03 19 63 60 8c 01 31 43 45 56 aa ea c6 43 79 fb d0 36 8d a8 ......|"...|..c`..1CEV...Cy..6..
0420 06 0d 41 a0 2a 6b 83 9c 0c f4 d0 e3 6f 5f bb 1c 15 88 48 6f 0c 36 a2 3f 51 94 93 f2 a8 aa 2a 37 ..A.*k......o_....Ho.6.?Q.....*7
0440 1a 80 3b 00 41 c4 06 1f ee f5 de 6f 78 8b ed 90 7f f8 88 cf 8d 06 c0 7b df 1b 82 61 f4 d0 3f 98 ..;.A......ox..........{...a..?.
0460 5e a2 8a 12 c0 62 3c 9a b7 2b 00 40 2d 82 67 0d 3d 78 4e eb 86 e1 fc d0 a8 6f 73 3b 39 92 cb 11 ^....b<..+.@-.g.=xN......os;9...
0480 43 4e 1d 00 05 80 cb 77 7a 48 77 d7 18 00 d7 75 d2 76 ee d8 79 0f 66 7b 4b b8 b7 ed e1 87 51 00 CN.....wzHw....u.v..y.f{K.....Q.
04a0 51 cc 2f f3 0d b5 1d 4a 1a 36 60 a6 93 10 30 12 01 b7 95 d8 51 01 d0 0d a3 fb a1 51 ce 1e 7e 78 Q./....J.6`...0.....Q......Q..~x
04c0 ad b7 23 81 6c 00 86 55 9d fe 7b 01 2b 10 dd d1 24 20 df 35 11 40 f0 a2 12 ae c7 1b 01 b7 18 00 ..#.l..U..{.+...$..5.@..........
04e0 7d 02 a9 de f0 79 c3 9c d2 58 0b c3 76 4e 3c 52 00 b7 13 02 15 66 0e cc 66 93 93 d9 8a ce 86 dc }....y...X..vN<R.....f..f.......
0500 cd 59 a9 c0 76 8a d0 ff 0e 5c bb c3 29 80 bb c7 00 78 1f 94 88 ae 58 6b 41 83 ba f1 b6 b7 df f6 .Y..v....\..)....x....XkA.......
0520 0e 39 cf 3f 8b 1f c8 cf 0f 21 c0 07 ff d8 58 06 bc cd 06 20 68 00 70 94 73 f8 27 aa 03 18 5e e3 .9.?.....!....X.....h.p.s.'...^.
0540 c7 7b a4 e7 3f 76 a7 7f 86 77 4d 0a d0 76 0e 00 9a 98 fb d9 8d 90 f1 f1 08 a3 7c d8 cf 62 93 37 .{..?v...wM..v............|..b.7
0560 22 06 55 18 6b 1c e9 dd 6d 00 5e fb da d7 d2 3d f7 dc 83 d9 6c c6 c6 18 0d 21 a0 eb 3a 7d db db ".U.k...m.^....=....l....!..:}..
0580 de f6 b4 b8 51 02 49 10 f9 a4 a8 bc e0 f1 3c f9 a7 13 02 9d 25 0a 8a f7 43 34 28 4c 74 c7 ab 3a ....Q.I.......<.....%...C4(Lt..:
05a0 ef 9a 08 c0 39 07 e7 5c 22 79 3e bd 47 78 3c 0f d2 7f 68 03 a2 89 88 60 ac 45 55 56 28 ea ea ae ....9..\"y>.Gx<...h....`.EUV(...
05c0 36 00 f3 f9 1c 57 af 5e 35 a7 a7 a7 c6 39 67 99 19 65 59 e2 bb bf fb bb 9f 16 cb 68 8c 81 35 b6 6....W.^5....9g..eY........h..5.
05e0 23 d0 46 59 6f c8 f2 0f 0d fb b0 d6 7f 56 f8 bf 36 f8 83 8a c2 18 01 dc 19 28 8b 22 9b f8 33 0f #.FYo........V..6........(."..3.
0600 f9 b0 1c 94 8d 81 31 a6 ff fd d3 a5 00 29 5f bc eb 13 80 77 be f3 9d fa d5 5f fd d5 c2 cc ca cc ......1......)_....w....._......
0620 5a d7 b5 fe c4 4f fc c4 d3 96 44 1b 63 a0 d0 81 82 ef 89 4b 81 3f 5d 0a 90 bf 9f 48 b8 e3 7d e4 Z....O....D.c......K.?]....H..}.
0640 5d d9 0b d0 f9 b0 71 53 e4 f2 cf d8 0b f0 e4 f1 eb bf fe eb b7 ad 12 f2 54 f5 02 0c ff 6f 8c ee ].....qS................T....o..
0660 18 22 21 95 7e c7 08 e0 8e 40 ea 05 80 77 1e 2e ac 36 c9 a4 41 b9 6f bb a6 3c f4 0c 63 2f c0 e7 ."!.~....@...w...6..A.o..<..c/..
0680 23 9e 7c 2f c0 59 d1 80 4f 8a 51 e6 d1 00 dc 19 b7 09 11 40 84 cc d3 6d df 00 67 91 43 f9 d0 9f #.|/.Y..O.Q........@...m..g.C...
06a0 65 08 b2 e1 58 47 11 a3 04 e0 76 c3 18 03 55 85 61 b3 61 7c 87 e5 c0 ed 90 7f fb da de 4a 00 46 e...XG....v...U.a.a|.........J.F
06c0 ad 47 db b6 31 2a 84 8e 06 e0 4e 80 a8 b2 8a 54 12 04 51 3b 7e 36 f1 37 64 fd 87 aa bf dc 00 d4 .G..1*....N....T..Q;~6.7d.......
06e0 cb 7f b7 8c 01 11 95 80 9a f1 58 de 3e a8 6a 01 a0 8a c6 1d b7 1c e4 6d c3 9d 8d 46 fe 3a 5f e7 ..........X.>.j........m...F.:_.
0700 c7 6b 07 56 95 89 31 86 47 03 70 07 a0 ac aa 0a 84 1d 10 61 b9 6a fa 2e c0 aa aa 30 9b cd b0 b7 .k.V..1.G.p........a.j.....0....
0720 b7 07 55 45 d3 34 1b c3 23 00 c0 5a 8b b2 2c e3 f7 29 cb 0d a9 29 00 a8 08 24 f8 82 68 54 02 de ..UE.4..#..Z..,..)...)...$..hT..
0740 4e f8 b6 3b a7 a4 af f0 de 01 8a 9e 8b e9 ba ae 7f 64 6c 97 79 b3 fc 37 a7 71 f9 7e 88 46 83 71 N..;.............dl.y..7.q.~.F.q
0760 70 ee 10 b3 c9 e4 4f 81 30 c5 1d 2c ef be 7b 74 00 cd d2 a9 e2 c4 b9 27 df 0d 38 7c 6e bc 61 00 p.....O.0..,..{t.......'..8|n.a.
0780 22 2c 00 d6 f1 58 de ce bc 4e 02 80 13 55 dd db ee 06 7c 22 ea ce c7 eb 06 14 11 88 2a 04 38 25 ",...X...N...U....|"........*.8%
07a0 bd b3 8d fa 5d 63 00 96 cb 26 44 c9 b7 dc 22 f2 79 bc 6e c0 75 63 c8 66 b8 98 0d 40 af 05 60 06 ....]c...&D...".y.n.uc.f...@..`.
07c0 81 81 51 0a fc 19 e3 7b bf f7 7b a9 eb 3a bc e5 2d 6f f9 8c 8d a7 0b 01 94 ae cd b0 1b 70 58 ef ..Q....{..{..:..-o...........pX.
07e0 3f 8b e7 19 3e 6f 68 e4 87 73 04 20 c9 30 dc e1 9f ff dd 13 01 b4 ad 46 2a 00 00 f1 c6 21 1f 76 ?...>oh..s...0.........F*....!.v
0800 04 0e 7f 1f a6 02 f9 b0 e7 72 e1 46 d9 88 19 6c 19 77 bb 12 f0 2c dc 7f df 7d 54 94 15 f6 f6 76 .........r.F...l.w...,...}T....v
0820 31 9b cd b8 ae 6b 9a cd 66 74 f1 e2 c5 d9 e1 e1 61 5d 55 d5 b2 28 8a e6 7b be e7 7b dc 9b df fc 1....k..ft......a]U..(..{..{....
0840 e6 cf e8 bc 69 00 04 02 91 cd e1 2d c3 c7 76 e5 66 98 0e 64 3e 80 99 fb c3 9f 3b 40 11 67 3c dc ....i......-..v.f..d>.....;@.g<.
0860 f1 b8 6b 0c 40 d3 b6 fd c5 b7 b6 ba 25 04 cc 84 df e3 85 89 db 5f 0f 9f 6b 8b 12 93 7a 02 1d 75 ..k.@.......%........_..k...z..u
0880 00 9b 87 ff de 0b 24 e2 f1 27 7f f2 89 7c b0 87 9d 75 47 6f 7c e3 1b 5f 62 8c f9 32 63 cc 07 ca ......$..'...|...uGo|.._b..2c...
08a0 b2 fc f8 f7 7d df f7 2d 7f e4 47 7e c4 3f e1 9b b7 b0 29 3a 53 38 e7 6e 69 06 da ee 06 dc 4e e7 ....}..-..G~.?....):S8.ni.....N.
08c0 b6 89 bf ed 8e d0 bb 01 77 8d 14 78 5a d7 98 d6 35 aa b2 04 f3 a6 58 e4 d6 5e f0 b5 10 a8 28 8a ........w..xZ...5.....X..^....(.
08e0 5e 10 b4 fd dc 8d c8 21 26 a1 e3 a9 1f e0 e3 9f ba a6 9f fc d4 63 8f fb a1 bc ed 6d 6f 7b df 72 ^......!&............c.....mo{.r
0900 b9 fc 13 ef fd 73 99 79 af 28 8a e2 fb bf ff fb 9f f0 3d 69 ad 85 b1 06 6c 3e 33 25 e0 a7 6b 06 .....s.y.(........=i....l>3%..k.
0920 ca 95 9e 58 da f5 7d ea 37 1a 80 67 38 0e 0e 0e b0 bf bf 8f 9d d9 ce 46 6e 98 73 bf fc 18 4e 01 ...X..}.7..g8..........Fn.s...N.
0940 ca 03 43 63 07 21 6d 18 80 fc dc 10 02 9c 73 91 75 6e bb f1 d4 7f 86 78 eb 5b df fa 9e f9 7c fe ..Cc.!m.......s.un.....x.[....|.
0960 3b 21 84 23 66 76 d6 da 27 6e 45 13 fb 1a bf 3e db a3 3f 9e 01 18 f6 fd 6f f3 06 c6 30 bc 77 68 ;!.#fv..'nE....>..?.....o...0.wh
0980 9a 06 6d bb 29 1a fb d1 ff e9 4d f4 d6 9f fc 2f ef 98 50 ef ae 49 01 98 39 86 e8 8f 13 e6 7d 3a ..m.).....M..../..P..I..9.....}:
09a0 21 d0 b0 ee 7f 96 10 28 aa 01 c3 78 9a 3f 4b 7c ea 53 9f ba e2 bd 97 8b 17 2f f6 d1 d6 13 41 f6 !......(...x.?K|.S......./....A.
09c0 d4 4c fc 94 0b 81 9a a6 81 f7 91 03 fa d1 bf fd 35 74 f5 fa a2 bc 31 77 f7 7d e4 bd ef 7f 75 55 .L..............5t....1w.}....uU
09e0 cf 5e f4 bd 7f ed 2f fd f7 7f ff 1f fd 6f 6e 34 00 cf 10 b8 e0 01 8d 52 e0 78 61 ab de 30 0c 3d .^..../......on4.......R.xa..0.=
0a00 47 f6 ee 43 c3 01 a0 d7 01 e4 94 20 ff 9f cc 1d 18 6b 01 1d 59 c0 cf 06 bf f2 2b bf f2 59 59 4f G..C.............k..Y.....+..YYO
0a20 8a 88 d7 68 4b 08 94 eb fa db 23 dc 86 9d 80 f9 3a 8b c8 46 d5 20 93 8a 22 82 17 dc 37 db 63 e6 ...hK.....#.....:..F...."...7.c.
0a40 17 ef cc aa af 3a 59 ba af 5e 2e 4e ff 94 8a ee 84 e0 fe 19 80 0f 8d 06 e0 19 43 02 3a b5 4c e2 .....:Y..^.N..............C.:.L.
0a60 bd 83 73 61 e3 f0 0f e7 c7 79 ef 7b f6 3f 7b 99 48 1c 46 91 48 59 96 b7 b6 99 1a 03 5b 14 02 e2 ..sa.....y.{.?{.H.F.HY......[...
0a80 31 0c b8 ad 30 3e 6b af b6 23 80 cc df e4 59 8e c3 a8 61 48 10 e6 34 6e 68 1c 44 04 4c 84 83 69 1...0>k..#....Y...aH..4nh.D.L..i
0aa0 79 f1 25 cf d9 79 b3 88 bc cc 20 dc 8f b0 2c 8f af 9e 52 33 db 43 59 d6 3f 06 e0 eb 47 03 f0 39 y.%..y........,...R3.CY.?...G..9
0ac0 c4 df 7d d3 b7 53 08 ae b8 79 fd 1a ae 5c 79 14 8f 5d bd 06 e7 1c 8a d2 a0 aa 6a a8 32 ea ba c6 ..}..S...y...\y..]........j.2...
0ae0 74 5a ea f5 05 d1 ca a9 a8 12 40 67 13 41 c3 5e f2 ed bc 71 78 83 6c 13 4d 10 01 42 50 63 18 ff tZ........@g.A.^...qx.l.M..BPc..
0b00 c9 ab 5f 50 74 02 52 25 90 61 88 38 38 bf 02 85 80 bd 83 7d ec ef 1f 80 00 f8 10 e0 5c 80 48 40 .._Pt.R%.a.88......}........\.H@
0b20 d3 39 04 b5 98 4c 2a 14 85 45 61 00 03 c5 ac 2e 2d 13 19 ef 3d 9a ae 85 82 c1 d6 c6 da b4 52 2c .9...L*..Ea.....-...=.........R,
0b40 3f 92 89 1c 44 db c0 4b 40 55 4d 50 d6 15 0c 11 98 0d 2c 1b 18 0b a8 78 30 01 64 2c 14 0a 17 04 ?...D..K@UMP......,....x0.d,....
0b60 5e 34 66 44 89 c0 54 42 0a a7 05 41 81 10 04 de f9 a4 a8 8b f9 b6 17 e0 e4 f8 14 3e 08 a6 93 0a ^4fD..TB...A...............>....
0b80 fb 3b 25 24 34 6c d4 e3 fc fe 5e 38 38 d8 0f c2 8c a3 e3 16 ab d5 8a 82 5b da 6e b9 98 36 9d 9b .;%$4l....^88...........[.n..6..
0ba0 ae ba 30 5d 79 88 52 35 df df db 5d ee ef 4c fc 74 62 25 be 0f 46 e7 1c 56 ab 15 56 cd 12 21 78 ..0]y.R5...]..L.tb%..F..V..V..!x
0bc0 10 1b d8 a2 04 94 d0 75 82 ae 73 08 1a 50 18 8b c2 b0 7c aa 09 1c 42 d0 a1 94 77 18 fe 9f 75 0d .......u..s..P....|...B...w...u.
0be0 cf ba b6 43 e4 11 60 c6 5a 1c ee d8 67 fb 76 f9 c0 d2 0b ba 66 09 74 0b 74 ab 53 00 06 93 72 fa ...C..`.Z...g.v.....f.t.t.S...r.
0c00 9f bd e1 6b 5e 7e df c3 d7 57 47 82 8a cf 1f 9e 87 b5 c5 f2 57 7f f5 d7 c2 68 00 6e 17 48 ef 03 ...k^~...WG.........W....h.n.H..
0c20 f4 07 88 d0 8a 0e 2a b7 4a 00 14 44 0a 25 25 11 0a fb 93 80 ae f3 5f e1 7d 80 65 03 66 73 4b b8 ......*.J..D.%%......._.}.e.fsK.
0c40 a8 aa 28 d2 dc 80 61 87 e0 b6 a0 64 bb 1b 70 3e 9f 43 43 fb 92 cb 07 d5 df eb 94 3b 22 b2 00 94 ..(...a....d..p>.CC........;"...
0c60 48 a1 50 90 0e 5a 8a 49 41 c2 69 80 80 a6 47 7c bd d1 8f a5 99 85 cc aa c0 3e a0 5f 18 2b de 58 H.P..Z.IA.i...G|.........>._.+.X
0c80 3f 57 35 fe 86 9e ff ea bf 8a 3f 4f d7 25 49 ca 93 0a 14 1a e5 4a d0 34 40 63 bb 6a 41 1a 7f 3e ?W5.......?O.%I......J.4@c.jA..>
0ca0 11 c5 79 9b fd 3f e7 ef 41 80 0e c9 b3 f8 89 1b 63 99 94 d4 14 36 10 a1 63 90 b0 21 b0 b5 56 69 ..y..?..A.......c....6..c..!..Vi
0cc0 52 97 c4 17 8a 89 3c 7b 12 f4 20 08 9a a2 ac 1e 99 d4 d5 15 66 f2 14 ed 4f 4e 9e 36 a4 37 f1 33 R.....<{............f...ON.6.7.3
0ce0 a3 f4 5e 06 75 79 22 f2 02 37 09 c7 f5 8d a5 5e 5a b5 be 9f f3 b0 3d e5 77 38 bb 61 68 e4 33 b7 ..^.uy"..7.....^Z.....=.w8.ah.3.
0d00 b3 ad 13 c8 ef df 39 07 17 98 4f 16 01 50 8f 20 8c ce ec 62 76 50 23 08 61 d1 b6 e8 54 ff 6d c1 ......9...O..P.....bvP#.a...T.m.
0d20 f4 a1 36 28 11 d1 04 c0 77 02 f8 e0 68 00 6e 13 7c bb ba e4 bd ff ae ae 5d 6a f0 2d 54 3c 54 42 ..6(....w...h.n.|.......]j.-T<TB
0d40 74 c8 9e a0 60 98 8e d1 11 a0 b0 10 09 24 41 95 4d 41 c3 52 60 2e fd e4 1c 7f 4d ec f9 5b bc c9 t...`........$A.MA.R`.....M..[..
0d60 50 66 9a 6f 9a d3 66 a9 06 e5 03 dd 54 ff 16 85 78 b8 a3 de 88 01 78 68 08 50 08 c4 3b f8 ae 05 Pf.o..f.....T...x.....xh.P..;...
0d80 29 21 04 41 08 1e 22 0a f1 01 22 04 c7 04 52 86 32 a0 4c 70 28 20 4c 14 24 c0 bb 0e 02 02 85 00 )!.A.."..."...R.2.Lp(.L.$.......
0da0 68 34 15 44 8c 40 06 12 3c 42 70 f1 a6 f7 0c 97 c7 5a 31 43 8d 89 2d 4a 1a 40 4c 08 c1 43 a1 f0 h4.D.@..<Bp......Z1C..-J.@L..C..
0dc0 21 46 01 22 18 8c c1 66 18 ce 64 28 10 24 ce 4a 50 09 50 c4 e1 18 1a 14 10 0f 88 42 82 87 0f 0c !F."...f..d(.$.JP.P........B....
0de0 03 01 51 7c 7f 5d d7 40 c9 c2 b5 2b 78 1f a0 21 80 40 28 aa 0a 13 66 88 68 cd 84 17 30 f9 17 70 ..Q|.].@...+x..!.@(...f.h...0..p
0e00 b2 67 21 5d 2f ef 3d 54 24 bd 3f 85 78 97 86 72 10 ba 36 a0 eb 1c 44 15 ea 3d 14 04 df 05 74 8d .g!]/.=T$.?.x..r..6...D..=....t.
0e20 43 d7 29 8a b2 ba 65 5b d3 d0 50 0f 99 ff 21 7f 73 cb 80 97 64 1c 83 eb b0 6c 08 c7 6d 8d 82 2d C.)...e[..P...!.s...d....l..m..-
0e40 5c 50 34 0e 08 86 10 10 d0 b9 06 ad 97 2f 68 9b ee 0b 9a e0 d1 34 0d ac b5 bb 63 0a 70 1b 71 7a \P4........../h......4....c.p.qz
0e60 f4 18 82 f7 38 bd 79 95 9a d3 13 a8 6f 01 0d 10 e7 d1 85 2e 5e e8 d0 40 ba 02 02 83 e0 6a 00 25 ....8.y.....o.......^..@.....j.%
0e80 11 ad 9b 3c cf 12 f6 6c ff dd b0 04 78 66 da 00 90 ef 1a ac 8e 3b f2 26 1e 25 49 5e bf b4 8c b2 ...<...l....xf.......;.&.%I^....
0ea0 34 30 86 11 da 15 56 27 a1 f7 de 59 bf 1e 5c 0a c7 1d c1 1b 82 61 c0 10 43 2a 03 6b 19 2a 8a d6 40....V'...Y..\......a..C*.k.*..
0ec0 0b 82 a4 c3 29 03 b2 8b 39 7a c9 a4 45 08 ae 85 63 86 b5 31 ac b6 96 50 58 06 53 7c 4d 40 7c 9e ....)...9z..E...c..1...PX.S|M@|.
0ee0 f7 0a e7 d3 e1 a0 75 1c c1 84 5e 27 a1 4a 10 c4 f4 80 01 14 86 51 55 06 fb 45 89 20 31 0a b1 36 ......u...^'.J.......QU..E..1..6
0f00 c0 1a 86 e5 02 50 07 df 29 98 08 d3 02 28 e0 01 1b 0d 55 e7 3d bc 17 18 b6 98 58 c6 ac 36 28 0b .....P..)....(....U.=.....X..6(.
0f20 83 10 80 d6 79 b4 0e a8 ac c5 4e 65 d0 d5 05 96 4d 83 a6 6d d0 3a 07 90 01 10 e0 5c 83 76 d5 24 ....y.....Ne....M..m.:.....\.v.$
0f40 83 44 f0 42 f0 ae 00 b4 b8 a5 02 70 d6 e4 a6 b3 d2 80 61 c4 10 23 80 35 9f 20 ce 23 b4 2b b0 01 .D.B.......p......a..#.5...#.+..
0f60 9a a6 c3 e9 a2 83 97 90 0c ae 47 e3 04 d7 af ad b0 f4 25 98 4d ef 3c 46 03 70 9b 50 c8 29 2c 29 ..........G.......%.M.<F.p.P.),)
0f80 ee d9 2f b0 53 4e 71 bc 30 08 41 c1 0c 18 66 10 03 44 06 20 46 17 18 7e 61 d0 34 e9 06 19 68 fd ../.SNq.0.A...f..D..F..~a.4...h.
0fa0 87 37 4d d7 75 68 db 76 43 eb 9f 09 a3 7c 53 0d 49 c1 dc 8a 3a 29 19 17 f6 2d ea 92 20 02 f8 20 .7M.uh.vC....|S.I...:)...-......
0fc0 20 02 ea b2 c4 74 5a a3 30 06 65 55 0c 48 44 02 a7 28 dc 0d 0f 63 fa 05 02 0c a8 37 16 75 d6 a6 .....tZ.0.eU.HD..(...c.....7.u..
0fe0 eb da 40 31 11 0a 6b 63 2f c2 20 a2 67 62 58 93 65 ca d1 08 e5 24 40 a1 90 4c 5b 24 83 12 34 3e ..@1..kc/...gbX.e....$@..L[$..4>
1000 08 80 65 02 1b 8e d3 8d 28 1e 05 22 a0 b2 06 3b a5 45 69 0c f2 f8 73 91 68 3c 88 08 5c 10 4a 6b ..e.....(.."...;.Ei...s.h<..\.Jk
1020 c0 86 fa ac 41 45 63 a7 a4 02 ce 05 2c db e8 c1 27 85 c5 a4 36 30 cc f0 5e d0 39 42 e7 23 1f a1 ....AEc.....,...'...60..^.9B.#..
1040 04 a8 1a 78 6f b1 6c 4b 1c cd 57 38 5a b4 90 10 50 97 0c f1 06 05 13 88 14 2e 30 56 4a 68 dd ad ...xo.lK..W8Z...P.........0VJh..
1060 65 dd 61 0a 70 56 dd 7f 58 e1 19 f2 01 22 79 c2 10 81 19 28 0c a1 b2 04 5b 1b d4 a6 80 88 81 04 e.a.pV..X...."y....(....[.......
1080 83 10 0c 96 9d c7 f1 bc 41 50 41 c9 01 d6 d8 30 1a 80 db 88 dd a9 01 43 51 f2 14 3b 2b 83 d2 1a ........APA....0.......CQ..;+...
10a0 04 11 18 43 28 ac 49 37 30 23 80 b0 ea 80 b9 27 70 47 08 c0 46 04 30 5c ff 95 cb 80 1b ab bf b6 ...C(.I70#.....'pG..F.0\........
10c0 f6 c8 0d b5 e6 00 81 89 50 57 06 e7 f6 6a cc 6a 8a 87 da 05 80 08 d3 aa c2 6c 36 41 61 2d ea aa ........PW...j.j.........l6Aa-..
10e0 44 55 55 30 86 61 0c c1 32 a5 29 45 0a ef 63 07 5a 27 02 2f 02 95 58 92 8c 87 54 53 06 1c bf ce DUU0.a..2.)E..c.Z'./..X...TS....
1100 f7 a8 61 46 51 58 b0 e1 3e 3f 26 10 0c 11 8c e1 64 08 09 36 19 08 20 b6 b6 c5 b3 d2 27 dd f0 02 ..aFQX..>?&.....d..6........'...
1120 78 11 10 53 f4 e6 c6 80 39 1a 1f a6 68 a8 4a 10 0c 21 1d 7e ea a3 0e 32 04 06 81 2d c3 58 06 91 x..S....9...h.J..!.~...2...-.X..
1140 a6 a8 21 95 d7 90 22 14 b2 d8 d7 b2 7f ed 9a 0c 4e 59 59 cc 28 53 22 14 43 10 05 bc 0b e8 9c c7 ..!...".........NYY.(S".C.......
1160 e5 73 33 1c 9d 2e 71 f3 78 81 e3 f9 12 57 7d 0b 1f 80 9d 69 09 27 8c 9b 9d 42 9d 9e b9 d9 e9 f1 .s3...q.x....W}....i.'...B......
1180 c4 40 c3 66 a0 6d 43 90 a3 08 ce 24 aa b5 28 0a a0 2e 08 d3 ca 80 44 a1 10 b8 e0 50 b7 01 57 8f .@.f.mC....$..(.......D....P..W.
11a0 5a 74 02 4c 4b 83 89 2c 5f 0d e0 bd a3 01 b8 4d 38 3c 77 2e e6 fc ed 12 8b 65 03 1f 24 79 5e 93 Zt.LK..,_......M8<w......e..$y^.
11c0 44 62 c9 0b 12 23 08 10 15 a3 89 4c da d2 9b 0d 0d c1 90 f8 db 16 8e 6c de 28 dc ff 1c 22 a4 d0 Db...#.....L...........l.(..."..
11e0 9d 20 a4 f1 00 12 60 2d a3 30 0c cb f1 60 15 c6 c0 18 82 61 ea 43 6d b2 31 6c 56 55 b0 30 5c ba ......`-.0...`.....a.Cm.1lVU.0\.
1200 69 3b 0f 50 90 01 57 17 23 00 c6 7a 64 59 f6 f2 f9 f0 53 fa 7b 6b f2 01 e6 fe f5 21 1d e2 35 51 i;.P..W.#..zdY....S.{k.....!..5Q
1220 9a 0e 62 0e fb 09 b0 c6 c0 da 8d 95 67 28 18 a8 4c 3c e0 cc 04 ef 14 12 04 d0 68 64 62 17 a4 22 ..b.........g(..L<........hdb.."
1240 b8 b8 76 8d 38 be 77 c3 06 45 65 c1 26 ae 4f ed 59 77 51 84 10 8d 04 1b 82 29 b8 17 f4 89 08 20 ..v.8.w..Ee.&.O.YwQ......)......
1260 80 31 e9 f5 58 c6 6c 52 e0 f2 b9 1d cc 17 0d 1e 3b 98 e2 ca 8d 13 b4 ad 87 80 e2 67 a1 b7 6e 74 .1..X.lR........;..........g..nt
1280 da 4e d5 ce ea 13 18 6e 7a 5a a7 06 eb cf 25 7e de 91 a1 0c aa 30 60 14 25 41 42 07 91 48 a8 1a .N.....nzZ....%~.....0`.%AB..H..
12a0 22 54 26 7e 04 56 dc 0f ff a5 57 3e 77 f5 4d 6f 7a d5 cf 7e db 77 fc 82 8e 06 e0 69 c6 6c 3a 83 "T&~.V....W>w.Moz..~.w.....i.l:.
12c0 04 8f 45 d7 60 be 74 f8 e4 d5 05 5c 10 ec 4c 2c 0e f6 6a 94 d6 60 67 6a 51 95 05 88 81 c2 04 80 ..E.`.t....\..L,..j..`gjQ.......
12e0 24 31 d7 eb 10 3f 0f 91 00 d0 0f 09 19 ee 0e 1c b2 c7 1b 13 68 39 0a 80 48 63 5b aa 73 02 67 e2 $1...?..............h9..Hc[.s.g.
1300 1c 39 43 79 6c 75 ea 16 64 06 23 76 0c aa 10 24 85 c8 eb 89 43 f1 fb 16 29 57 17 11 ac 9c 87 f3 .9Cylu..d.#v...$....C...)W......
1320 71 90 69 10 81 86 c8 91 2b e5 34 21 b5 b1 c6 60 03 26 8f 3d 53 40 00 90 32 44 81 4e 14 04 82 65 q.i.....+.4!...`.&.=S@..2D.N...e
1340 a0 b0 bc 61 f0 b2 01 b0 cc 40 8a 18 18 83 f7 d8 13 8e 29 25 41 4a 29 0a 86 20 4d e2 51 81 84 98 ...a.....@........)%AJ)...M.Q...
1360 56 e4 b9 fa 44 04 32 29 12 31 dc 4b 76 55 d3 c1 f7 12 ab 19 86 c1 36 45 16 aa 60 45 24 1a c1 10 V...D.2).1.KvU........6E..`E$...
1380 65 88 10 54 14 55 c1 28 0b 82 6a 24 03 8f 74 01 e9 90 22 8d d8 97 e1 bc 47 48 12 ed e1 b5 2a 8a e..T.U.(..j$..t...".....GH....*.
13a0 62 23 f7 67 e6 5e d0 a5 aa b0 d6 f6 0f e6 bc 08 36 20 78 82 f3 92 3e 03 81 65 81 38 07 66 ed 3f b#.g.^..........6.x...>..e.8.f.?
13c0 87 7b 0f 6a cc 8a 00 ed e6 b0 c4 17 aa ba 7e cb ff f5 8f 3f c0 00 7e 66 34 00 4f 33 3a e7 a0 e2 .{.j..........~....?..~f4.O3:...
13e0 21 00 3a 27 38 3e ed d0 ba 98 d7 97 85 85 d4 84 99 c4 50 d9 10 81 fb 35 6f 84 61 1b 44 0e fd 73 !.:'8>............P....5o.a.D..s
1400 6e 9f d3 81 ed de 80 5b 06 88 a4 30 3c ba 41 85 0b d1 08 14 e9 c6 5f 13 4a 6b cd 3a 29 80 9c eb n......[...0<.A......._.Jk.:)...
1420 a6 fc da 58 06 a5 88 20 4f 16 0e 2a 91 f5 a7 00 09 8a ce 01 c2 d1 18 0c 85 2f aa c9 bb eb 80 d8 ...X....O..*............./......
1440 24 40 53 9c a0 e8 d5 cf 29 ca 88 de 4a 40 7d cd 3b 56 41 d2 2b cd 87 b7 8f 72 52 71 32 e9 02 8c $@S.....)...J@}.;VA.+....rRq2...
1460 32 8c 25 10 1b 40 42 cc f3 01 14 d6 f4 51 04 38 c5 22 4c b1 12 92 42 6a 4a 5e 9d 54 51 94 06 2a 2.%..@B......Q.8."L...BjJ^.TQ..*
1480 a9 0c 9a 52 21 82 c2 10 43 55 e0 3d a1 28 19 12 14 c1 07 b8 d6 c3 a8 41 55 95 a8 eb 02 55 57 41 ...R!...CU.=.(.........AU....UWA
14a0 d4 81 28 ee 79 10 55 48 08 08 03 e2 6f c8 01 14 45 71 e6 66 e7 61 ab 37 a7 d7 aa 58 1b 5d e7 05 ..(.y.UH....o...Eq.f.a.7...X.]..
14c0 25 13 98 03 c4 75 f0 a4 30 88 69 61 61 18 97 0f a7 d8 99 78 1c dd 68 e1 3c e0 ba ee c0 18 f3 63 %....u..0.iaa......x..h.<......c
14e0 df f2 d0 8b 57 3f ff 6f de ff bf 8e 06 e0 69 c4 c9 e9 31 08 40 41 8a a2 b4 28 0b 83 7c 3c 5c 50 ....W?.o......i...1.@A...(..|<\P
1500 b0 13 ac ba 00 36 1e 8d 27 74 5e 62 e8 ca 04 d5 4d 66 78 38 2b 6e c8 0a e7 a1 a0 db 15 82 8d bc .....6..'t^b....Mfx8+n..........
1520 32 b1 fe 21 44 23 00 22 08 c5 83 18 fa 72 ba f6 51 03 13 f7 07 0d a4 7d 68 4d 60 30 e5 ad 25 0c 2..!D#.".....r..Q......}hM`0..%.
1540 cb 02 35 1c 4b 5f 46 11 48 6e 1d 3a 42 80 52 3c 70 9c 0c 54 4e 31 72 d8 af 29 ee b7 c9 c3 03 31 ..5.K_F.Hn.:B.R<p..TN1r..).....1
1560 5d 21 44 09 ad 31 b1 6a 80 81 f7 5e 57 fe b5 af 58 04 11 a8 44 1e 81 4d 5c a1 9d 4a 0b 00 67 e3 ]!D..1.j...^W...X...D..M\..J..g.
1580 11 5f 4f 0e 0e d6 47 3b 9b dd 64 18 14 80 49 87 0d d1 28 44 03 ab 91 d4 14 c1 e9 ca 63 a7 b6 31 ._O...G;..d...I...(D........c..1
15a0 0a 88 9a 0e 94 65 81 4b e7 cf 61 7f 6f 0f cb a6 c3 c7 6e 3e 06 9d 77 bd c1 ca 6a ce 9b 37 6f 62 .....e.K..a.o.....n>..w...j..7ob
15c0 32 99 f4 13 7e 33 f9 ba 9d f6 6d 46 43 91 b4 8c a5 48 81 0f 31 02 30 13 83 92 15 41 62 99 56 84 2...~3....mFC....H..1.0....Ab.V.
15e0 10 54 00 10 ac 31 98 4e 0d a0 8c a3 a3 15 9a c5 09 24 84 43 2e 8a 7f f0 8d af 7a fe f4 5f dc 78 .T...1.N.........$.C......z.._.x
1600 f8 67 f0 c7 9f bf 73 45 9e d1 06 e0 f2 bd 17 a1 21 a0 6b 16 38 58 ae f0 ac 7b f6 d0 34 1e 4d 17 .g....sE........!.k.8X...{..4.M.
1620 b0 6c 02 96 ad 62 d9 2a 0a db a1 13 c2 cd 13 a0 ed 08 6c 2c 9c 73 bd 87 cf 61 bf 31 66 a3 2d 38 .l...b.*..........l,.s...a.1f.-8
1640 7b 88 b3 ba cc d6 6d c1 f1 f7 ce 01 8b 96 22 d7 60 14 c6 28 6c a1 20 a3 a8 83 82 6d cc 77 ab 22 {.....m.......".`..(l......m.w."
1660 7a 1e 5b c4 d2 60 ef 2d 7b 45 4c f4 3e a4 8a 49 41 28 39 40 8c a2 b4 14 ff 9e 62 9a c2 44 08 a2 z.[..`.-{EL.>..IA(9@......b..D..
1680 f0 c1 a7 d0 3b 4a 92 39 a7 26 e9 30 c7 1c 3b 11 99 41 20 3e e5 cc b4 0e d7 8b d2 a0 28 6d 3a bc ....;J.9.&.0..;..A.>........(m:.
16a0 a9 a5 41 15 12 34 86 e3 a4 20 26 48 f0 70 5d 80 74 1e a0 98 ff 67 92 50 40 30 e9 f5 81 e2 7b 8d ..A..4....&H.p].t....g.P@0....{.
16c0 44 9a ed f3 74 f1 0a a1 6c 2f 72 3a 33 b0 a2 8c 24 c4 89 d2 a7 4f 3c b6 c2 bd 87 15 4a a6 54 b5 D...t...l/r:3...$....O<.....J.T.
16e0 88 fc 42 5d d7 a8 6b c2 74 e6 71 b0 37 07 5f ed 22 ef 90 1e de 7b 1c 1d 1d e1 f2 e5 cb 28 cb f2 ..B]..k.t.q.7._."....{.......(..
1700 96 09 40 19 db 5d 9d b1 23 34 c4 c6 2e f1 58 2c 03 4e 8a 80 9d b2 42 51 45 a3 2c 0a 38 11 2c 5b ..@..]..#4....X,.N....BQE.,.8.,[
1720 0f 09 84 49 6d 50 97 06 93 69 01 05 70 7c b4 42 b3 9a c3 ca e4 b0 ac 27 3f fe ba 7b bf d8 ff d2 ...ImP...i..p|.B.......'?..{....
1740 1f ff c1 cf 8e 06 e0 e9 a8 02 ec ed 46 c9 28 3a 4c ea 12 07 3b 15 96 86 11 a4 c3 b2 89 32 db ce ............F.(:L...;........2..
1760 2b 88 03 bc 30 56 2d 23 04 03 d1 cd fa b0 31 b1 86 bb 5d f6 db 26 01 b7 c7 86 a5 c9 b1 50 89 79 +...0V-#......1...]..&.......P.y
1780 78 e7 53 34 a1 02 16 c0 2a 61 52 29 82 c6 43 c5 44 b0 d6 c0 da 78 e0 8a c2 f4 32 be 5e 13 10 04 x.S4....*aR)..C.D....x....2.^...
17a0 80 44 55 9e 51 30 0c 94 35 95 0c 35 1d d8 58 82 94 20 68 bb 98 2e 10 a8 37 00 31 92 4d 3f af 30 .DU.Q0..5..5..X...h.....7.1.M?.0
17c0 28 6b 0b 10 10 9c c0 41 06 7c 46 2c f9 95 95 4d cf e1 54 8a 8c 02 a1 e0 04 6a 22 69 6a 4b 86 72 (k.....A.|F,...M..T......j"ijK.r
17e0 81 e0 3c bc 13 b8 ce f5 e5 4e 15 05 5c 48 d1 0d f5 e9 8c 61 42 29 0a 63 63 b8 df f9 00 f1 1a a3 ..<......N..\H.....aB).cc.......
1800 8a 64 38 72 1b 2f d2 c1 cf 46 a8 6b 03 f6 0a 82 6b 3c 5c aa 83 04 51 a8 c6 4a 03 11 50 b2 45 55 .d8r./...F.k....k<\...Q..J..P.EU
1820 da 9e e4 1c 46 70 21 04 34 4d b3 61 00 b6 e7 3f b6 6d 8b f9 7c de f3 04 f9 7a 8a 08 34 08 3a af ....Fp!.4M.a...?.m..|....z..4.:.
1840 98 2f 03 4e 6a 86 55 4e 46 37 60 d1 06 9c b6 f1 79 5d 4a 81 aa c2 60 32 89 46 e0 e4 68 85 b6 6b ./.Nj.UNF7`.....y]J...`2.F..h..k
1860 c0 d6 1e 54 e5 e4 27 5e f7 67 5f e1 7f e9 ff fd f7 ef 18 0d c0 53 0c 09 31 0c 15 c9 5e 39 e5 bb ...T..'^.g_..........S..1...^9..
1880 83 3d 5d a4 91 bc 92 9e 45 17 10 e4 96 ee b0 b3 c7 42 df 2a 1e b9 65 5a 4c 96 f1 d2 b0 b4 98 1e .=].....E........B.*..eZL.......
18a0 b2 a5 35 27 02 25 d6 9c 78 d0 cb 8e f5 97 9c e8 89 58 13 8f 21 31 12 d7 a0 e9 90 a4 c2 1a 88 15 ..5'.%..x........X..!1..........
18c0 c6 44 b2 2f d6 ad a9 3f 0c 9c f3 ee 3e 14 8f df cf 5a 4a bc 41 7a ef 26 7a eb ac 67 88 84 27 83 .D./...?....>....ZJ.Az.&z..g..'.
18e0 8d 82 d4 40 82 44 43 61 a3 61 b1 b6 44 59 09 54 0a 78 17 d0 36 0e 21 c4 b2 25 e7 54 27 3d 24 00 ...@.DCa.a..DY.T.x..6.!..%.T'=$.
1900 6d 93 3c bd 28 42 c8 2d d4 9a 52 96 78 98 41 94 b8 84 98 ff 0b 04 3e 28 7c 88 7b fa 62 8a 14 53 m.<.(B.-..R.x.A.......>(|.{.b..S
1920 14 63 39 56 32 94 d2 b5 8c ef 47 45 fb 26 ae 7c 2d 97 cb 25 f6 f6 f6 e2 e0 90 64 dc 87 29 df 70 .c9V2.....GE.&.|-..%......d..).p
1940 4c d8 6c 36 c3 d1 d1 d1 66 bb b7 1a 2c 1c e1 b1 93 00 a8 62 5a c6 94 60 d9 86 68 cc 14 10 78 28 L.l6....f...,......bZ..`..h...x(
1960 80 bd 29 50 97 06 d3 69 01 cb 84 9b 47 2b ac 56 4b 04 32 e7 a9 9e bd fd 2f be e6 c1 c9 bf fc 7f ..)P...i....G+.VK.2...../.......
1980 de fb 4f 46 03 f0 14 a2 59 76 10 f1 68 57 0e cd d2 63 b1 e8 b0 6a 3d 3a 17 89 21 c3 84 69 61 30 ..OF....Yv..hW...c...j=:..!..ia0
19a0 b5 16 9d 10 16 ad 60 9e e2 4e 63 0c ca b2 44 51 14 1b 53 7f 72 45 60 58 43 3e 6b c0 e4 c0 22 60 ......`..Nc...DQ..S.rE`XC>k..."`
19c0 7d ca a2 6e 3d 13 6f c2 da 8b 7b 88 10 85 49 96 c0 36 e5 ee ba ae ee e7 38 38 8b 84 34 e5 db 9a }..n=.o...{...I..6......88..4...
19e0 ec 44 2c 8b 71 4f 4e 21 31 ff 51 ef 80 5e 7e dc 1f 2e 93 ac 8a 02 e2 25 55 09 18 45 65 91 ad 08 .D,.qON!1.Q..^~........%U..Ee...
1a00 25 72 92 0d af 73 f4 4c dc 21 1a 97 a4 23 06 38 a5 0d 48 f3 11 a0 f0 96 60 4d fc 08 24 08 5c eb %r...s.L.!...#.8..H.....`M..$.\.
1a20 63 79 2f 1b e8 44 f8 a1 6f b0 21 14 c4 d1 3c 48 4c 31 f2 24 25 f1 04 a5 6c a6 19 86 01 6b 8b 68 cy/..D..o.!...<HL1.$%...l....k.h
1a40 78 8c c1 a4 b6 b9 c5 23 e5 ea 80 f7 21 f2 23 1a a0 42 68 9a 16 22 82 b2 2c fb eb 99 67 3b 12 d1 x......#....!.#..Bh.."..,...g;..
1a60 46 27 67 24 01 19 27 27 f1 c0 57 55 95 d2 40 9b ee 8b d8 4a 7c d2 b5 58 f9 58 5e 3e 57 13 98 34 F'g$..''..WU..@....J|..X.X^>W..4
1a80 19 f6 f8 ff 5c 00 c8 05 d8 2e 56 05 26 85 41 b1 53 42 a0 e8 6e ac 70 bc 38 41 a1 38 57 4f 77 df ....\.....V.&.A.SB..n.p.8A.8WOw.
1aa0 fc 17 bf f2 4b 9a 7f f9 1b ff ee e7 47 03 f0 14 41 25 e6 a8 e2 05 de 0b 9c f3 70 5d cc e9 0c 13 ....K.......G...A%........p]....
1ac0 0c 31 26 96 31 2d 0c ac 00 d6 44 cf 04 c2 e3 2e f9 18 ca 47 87 12 d2 cc 07 3c 1e e2 e1 89 e5 bf .1&.1-....D........G.....<......
1ae0 6c 0f 38 9d 41 a6 81 97 5f b3 55 49 7a ba b9 d4 82 b3 2c 97 86 c9 f1 9a 9d 07 14 de 45 e3 40 4c l.8.A..._.UIz.....,.........E.@L
1b00 3d 1f 10 0f 85 a6 ca 42 4c a8 7b f1 4f 90 48 be 59 05 b1 19 d4 ee 69 23 fa d8 8c 46 92 11 49 65 =......BL.{.O.H.Y.....i#...F..Ie
1b20 05 19 98 a9 e4 8c 51 10 a7 6a 00 e0 3d 21 78 89 5a 43 d9 5c 96 ca bd b2 2e 76 48 c6 49 be f9 e0 ......Q..j..=!x.ZC.\.....vH.I...
1b40 46 ad 82 a9 09 2a 49 42 0d 44 71 13 c7 94 a9 a8 6d 9a ff a7 bd e4 59 43 66 ea 75 50 cf 89 c6 24 F....*IB.Dq.....m.....YCf.uP...$
1b60 84 80 b6 6d 51 d7 75 df 1a 9c ab 3c 39 12 88 25 5a 42 59 16 68 db 0e 65 59 e2 d2 a5 4b 68 db 16 ...mQ.u....<9..%ZBY.h..eY...Kh..
1b80 55 55 f6 11 c4 22 28 1a d7 e2 ca 3c 72 4a fb 55 54 06 f6 b4 45 7a bd a4 da 97 75 98 80 aa b6 98 UU..."(....<rJ.UT...Ez....u.....
1ba0 ed 96 38 3d 5a 61 b1 38 86 10 9d ab 26 d3 b7 7e ed 43 0f 9a 2f fa 37 ef fd b9 9f c2 e7 07 31 f8 ..8=Za.8....&..~.C../.7.......1.
1bc0 cc 96 02 5b 86 30 a7 5a 7b 52 bd 19 a0 26 83 8a 62 e9 6f 5a 17 98 94 16 ec 81 62 01 10 cb 2d 84 ...[.0.Z{R...&..b.oZ......b...-.
1be0 de 70 08 c8 59 25 a4 6d 3d c0 30 8f a4 e4 f9 0d 03 55 41 a8 6d ca ad 99 60 4d fc b3 49 9e 33 36 .p..Y%.m=.0......UA.m...`M..I.36
1c00 eb c4 66 1e 4d b5 e4 78 98 78 d0 e9 96 bc 67 ba d1 33 f1 17 ef af ad 39 f6 82 78 e8 78 9d 72 f4 ..f.M..x.x....g..3.....9..x.x.r.
1c20 af 2b f3 08 88 0c ba a4 34 48 10 e2 cf 4c 9e 3e 56 ed 4c 2f 10 52 55 04 9f 52 8c 4d cd 50 8a 00 .+......4H...L.>V.L/.RU..R.M.P..
1c40 52 1a 94 52 13 0d d1 fb 4b d0 75 1e ce eb ea 40 0c 36 72 7a 91 a2 2a ac 65 c2 cc 8c a2 8c cb 38 R..R....K.u....@.6rz..*.e......8
1c60 24 e4 f7 9b b6 fa 70 8c 1a b2 a8 09 b9 8b 51 04 6a 62 55 a2 f3 1e c2 04 ce 63 bd 53 f9 36 1f e0 $.....p.......Q.jbU......c.S.6..
1c80 5c 01 18 0e 7d 55 55 48 70 20 f5 98 54 25 24 a5 0f b3 d9 0c f7 df 7f 3f 6e de bc 89 ae eb fa 94 \...}UUHp...T%$........?n.......
1ca0 61 3e 17 34 5d d4 64 f8 10 8d 40 69 63 54 c6 4c 98 14 06 d3 c2 c2 10 c5 06 28 00 41 15 75 65 71 a>.4].d...@icT.L.........(.A.ueq
1cc0 6e af c6 8d 93 06 a7 27 37 e0 42 38 5f 4e a6 6f 7d cf 97 be c4 e2 b7 de f7 4f 47 03 f0 24 51 4f n......'7.B8_N.o}........OG..$QO
1ce0 0c 24 00 3a 31 98 d5 16 b3 c2 a0 50 85 29 92 d7 30 84 59 5d a1 b0 05 96 9d 62 b2 6a 60 97 0e 4a .$.:1......P.)..0.Y].....b.j`..J
1d00 1c c3 d6 74 d8 bb ae 43 d3 34 51 5b d0 75 70 ce 6d 8c 05 5f cb 7e b1 21 32 89 2a 3c 0b 18 8f 49 ...t...C.4Q[.up.m.._.~.!2.*<...I
1d20 c5 38 37 35 98 55 84 b2 30 28 0a 03 c3 40 59 d8 78 b3 90 20 78 8f e5 b2 05 b3 89 82 1b ca 86 22 .875.U..0(...@Y.x...x.........."
1d40 af b1 4a 0c 7d 12 c5 7b 59 ab 00 b3 ee be e7 16 44 e3 48 6c 17 7a cf 17 6f 58 ea 19 f8 5c 76 ec ..J.}..{Y.......D.Hl.z..oX...\v.
1d60 9b 9f 74 9d e7 1b c3 b0 45 9c 7f 57 51 12 08 11 e0 bc 44 f2 2f ff 60 42 6f 30 b2 e7 27 43 20 89 ..t.....E..WQ.....D./.`Bo0..'C..
1d80 ba 80 76 e5 11 bc f4 b9 bf 61 ca 4b 35 40 1a 15 8e 6c 62 ba 11 44 e0 3a 1f c9 bc c4 d5 d8 94 a6 ..v......a.K5@...lb..D.:........
1da0 10 c5 cf 8a 39 b5 34 9b c8 6b 10 47 c3 c5 89 00 65 c3 30 20 74 5d 40 d0 80 ae 8b 72 63 4d 65 d6 ....9.4..k.G....e.0.t]@....rcMe.
1dc0 3c d6 bb 28 0a 84 10 70 7a 7a 8a 0b 17 2e a0 4d 53 a1 23 fb ef e1 c5 a7 0e cb 28 0a ca 69 c2 b9 <..(...pzz.....MS.#.......(..i..
1de0 73 e7 60 8c c1 cd 9b 37 37 0c c6 7c 1e d0 75 1d 4e da 68 a4 0e 26 84 99 21 cc 4a 8b 69 69 c1 54 s.`....77..|..u.N.h..&..!.J.ii.T
1e00 41 d4 a3 eb 3c ba 34 50 84 0d e1 60 56 a0 b0 84 47 6f 2c 31 9f 1f 61 d9 fa 03 98 fa cd 2f 7f f0 A...<.4P...`V...Go,1..a....../..
1e20 25 f3 f7 bc f7 7d bf 3c 1a 80 27 01 22 05 93 c6 8e 37 13 3d 85 5a 42 59 32 26 75 ec a4 ab 2b 0b %....}.<..'."....7.=.ZBY2&u...+.
1e40 6b 0d 02 6b 2c bd b1 40 88 fb 1c 7c 18 01 64 4f bf 3d 25 38 b3 ca db 33 e5 f2 c2 51 a2 a8 b2 ab k..k,..@...|..dO.=%8...3...Q....
1e60 0b c6 a4 24 54 15 a3 2c 78 63 3f 1d 10 19 7e ef 03 98 62 7d df 30 41 84 40 30 bd 38 be cf fd fb ...$T..,xc?...~...b}.0A.@0.8....
1e80 0e bf 4c e0 a1 cf a5 35 b5 f0 8a 6a 8c 00 32 97 90 0e a8 68 5a 52 42 04 84 44 3c f6 e4 64 34 02 ..L....5...j..2....hZRB..D<..d4.
1ea0 45 61 7a fe 52 25 0d 04 81 42 43 4c a7 90 5b 84 49 a1 1c b5 02 9a 0e 64 ee 25 10 89 e9 45 f0 21 Eaz.R%...BCL..[.I......d.%...E.!
1ec0 ea 19 92 04 98 52 ee af 90 58 2e 4c 4a c2 90 57 b1 c7 e1 0d 89 c0 4b 2d c6 40 4f 48 82 b8 6f c8 .....R...X.LJ..W......K-.@OH..o.
1ee0 a1 bc 6f 6d d0 bf 40 14 95 94 47 a7 1e 07 bb 15 88 4e 63 9a 12 3c 8e 8f 8f 31 9b cd 7a 23 dd b6 ..om..@...G......Nc..<...1..z#..
1f00 6d 3f c9 29 5f c7 3c c8 55 e3 cb 83 31 06 93 c9 a4 37 f4 99 ef 39 3a 3a da b8 df e6 f3 13 b8 ae m?.)_.<.U...1....7...9::........
1f20 c3 c2 45 7e 64 67 62 30 ad cb a4 59 70 98 cc 14 6d 08 70 41 a2 f3 61 83 aa 34 a8 8a 48 a6 9e 3e ..E~dgb0...Yp...m.pA..a..4..H..>
1f40 3a c7 d5 ab d7 31 d9 3d 7f 78 f1 e2 c1 8f 03 18 0d c0 93 81 ef 1c 54 43 9a e1 16 c3 e6 58 2a ca :....1.=.x............TC.....X*.
1f60 1d 60 a9 7f 5f 06 0a ba 24 75 5d 2b e9 74 63 21 e8 b0 36 fc c4 e6 c3 e7 bc 3b 7a 48 4e 9d 6a eb .`.._...$u]+.tc!..6......;zHN.j.
1f80 92 12 01 10 28 0c ec f6 14 a2 d4 11 c8 94 86 97 a4 d0 3f be fe 54 09 d8 90 1b a1 37 00 18 86 e2 ....(.............?..T.....7....
1fa0 83 dc 93 78 4d 48 e6 ff 27 42 eb 2a 43 22 26 e2 21 a5 b4 53 4f e0 7c 6a b1 f5 92 e6 17 ac b9 0c ...xMH..'B.*C"&.!..SO.|j........
1fc0 e8 5a 33 d0 53 16 c9 e8 ac c5 3e 89 e1 e7 18 ad 84 10 9b 9b 8c 09 51 e4 83 b5 8e 61 5d 9d 88 4c .Z3.S.....>...........Q....a]..L
1fe0 7e e7 02 8c e8 86 96 20 2a 08 93 4a af 30 fd cf 94 d0 87 44 f8 d0 c7 4f 51 55 05 98 38 2a 27 55 ~.......*..J.0.....D...OQU..8*'U
2000 d0 75 2d 96 cb 15 76 76 38 1d da 39 96 cb 25 ea ba 8e 43 3e 06 fa 0f a2 98 3a 0c ef 03 63 0c ea .u-...vv8..9..%...C>.....:...c..
2020 ba c6 c1 c1 c1 99 57 fb f4 f4 14 ae 6b b1 f2 c0 c2 31 9c 10 ea ba 04 d8 c1 ab a4 fb 2f f2 3f 39 ......W.....k....1........../.?9
2040 15 84 08 4a cb a8 2c 83 c9 23 d6 79 e9 78 4c 01 9e 74 15 a0 01 54 10 5c 40 17 02 1a 1f e0 42 00 ...J..,..#.y.xL..t...T.\@.....B.
2060 1c c0 9d a5 99 c9 0b 00 00 20 00 49 44 41 54 87 31 f1 c6 0b 01 70 3e c9 60 99 21 94 db 67 d7 a4 ...........IDAT.1....p>.`.!..g..
2080 5f 8e 00 da b6 85 73 6e d3 cb 03 8f bb 34 44 b2 7a 0c b9 bf 20 7a d4 2e ac f7 cb c7 bf 57 54 36 _.....sn.....4D.z....z.......WT6
20a0 a6 25 c6 70 8a 58 62 d8 9f f7 0b aa 28 82 06 78 9f 0d 5a 4a a5 35 46 3b 1b b4 a0 66 d3 13 3d a7 .%.p.Xb.....(..x..ZJ.5F;...f..=.
20c0 21 c0 58 b3 56 ff 25 f9 ee b0 7d d8 98 d8 83 4f a9 69 89 12 83 e5 ba 00 ef 64 5d 3a dd a2 37 09 !.X.V.%...}....O.i.......d]:..7.
20e0 51 2a 6c 2c 6d 34 52 45 29 b4 42 2d f5 93 91 bd d3 94 53 4b fa bc 01 6b a3 8e 81 40 b0 c4 20 4e Q*l,m4RE).B-......SK...k...@...N
2100 c2 22 45 94 cf 7a 07 22 06 1a 07 10 af 95 89 4c b0 46 b0 bb 17 fb 09 44 14 5d 17 a0 41 53 fe 0f ."E..z.".......L.F.....D.]..AS..
2120 3c 76 33 e0 70 bf c6 b5 13 97 52 28 c5 cd a3 1b 30 86 b1 b7 b7 07 e7 1c 3e f5 a9 4f e1 d2 a5 4b <v3.p.....R(....0.......>..O...K
2140 a8 eb 3a 32 f7 ce f5 a4 e0 70 16 64 fe ba 2c 63 d7 e6 c1 c1 c1 19 23 e0 80 05 45 de e3 b8 05 1e ..:2.....p.d..,c......#...E.....
2160 3d 89 2a ac ca 58 30 29 0a 4b b0 1a 50 db d8 85 19 bc 60 d5 79 9c 2c 1b 94 45 81 fb ef d9 97 0e =.*..X0).K..P.....`.y.,..E......
2180 d5 07 da 66 f9 0f 46 03 f0 24 11 bc 43 76 95 43 c2 aa cf 95 07 ca ba 10 d6 9e 2c 47 d3 db eb c0 ...f..F..$..Cv.C..........,G....
21a0 72 0a 90 c3 fd ed 71 e0 67 57 01 b5 6f d6 cd de 0d 58 47 1c 80 80 53 39 10 a9 eb ce 70 f6 0e 91 r.....q.gW..o....XG...S9....p...
21c0 00 cc 61 b3 d0 3a b5 e9 ab 67 ba 9e d0 b3 2e f4 e5 4a c1 5a ab 4f 86 d2 fc 03 ea 59 bb 28 5e 5a ..a..:...g.......J.Z.O.....Y.(^Z
21e0 cf db 62 5a 13 57 c3 8d da 41 e2 0c 40 60 f8 ba a2 5e 2f 4a 94 7b 57 bf 2e 5b 66 6f ce 0c 33 18 ..bZ.W...A..@`...^/J.{W..[fo..3.
2200 1f 96 89 cb 5c aa 13 c4 08 23 2a 1e b5 af e7 fb a0 e8 ba 48 aa 71 fa b7 68 f0 3c 44 18 50 03 32 ....\....#*........H.q..h.<D.P.2
2220 84 55 2b 98 ce 8a 58 aa 54 81 f8 48 38 aa 2a ce ef 95 f8 dd 3f f6 38 9c d5 28 2c e3 53 d7 17 60 .U+...X.T..H8.*.....?.8..(,.S..`
2240 62 34 cb 25 ae ea 55 00 84 d9 2c 56 04 bc f7 b8 7c f9 32 a6 d3 29 aa aa c2 6a b5 ea 53 bc 7c fd b4.%..U...,V....|.2..)...j..S.|.
2260 73 f5 00 00 aa aa ea 9f 5b 55 15 ae 5e bd 0a 55 c5 6c 36 83 42 d1 b6 0d 1a 1f 70 ed 54 10 54 71 s.......[U..^..U.l6.B.....p.T.Tq
2280 61 c7 60 5a c5 f9 0c 96 19 05 47 e7 b0 6c 3a dc 98 37 68 3c 30 dd d9 93 72 32 7d b8 75 fa d3 9f a.`Z......G..l:..7h<0...r2}.u...
22a0 b8 7e fc cb a3 01 78 92 98 d4 25 54 05 1c 3c 66 b5 c5 de b4 40 eb 63 a8 55 57 36 b6 b2 da b8 bc .~....x...%T..<f....@.c.UW6.....
22c0 d3 44 56 2a 0e a8 40 54 74 0d 57 82 65 f5 df f6 41 ff f4 c3 26 d1 cb 77 41 0a 66 8d a5 33 a5 24 .DV*..@Tt.W.e...A...&..wA.f..3.$
22e0 a1 8d 9a 7b 6b a2 80 a5 b4 d1 f3 67 95 dc 40 3e d0 97 0d 2d 33 38 c9 7e 83 68 2f b5 d7 b5 e4 be ...{k......g..@>...-38.~.h/.....
2300 0f e1 fb 16 db 74 94 83 48 12 d7 44 66 1f 88 9e 36 cb 6b 2d 47 ae 82 68 60 2c a2 8d 4a 0a aa 58 .....t..H..Df...6.k-G..h`,..J..X
2320 e7 36 e9 05 e5 3e 27 26 00 21 46 39 92 7f 7e 12 59 59 bb ae 22 68 88 95 87 58 02 e4 d4 92 18 f3 .6...>'&.!F9..~.YY.."h...X......
2340 6c e4 e1 27 21 c4 ca 81 46 b2 d0 24 83 63 4c 8c 67 42 10 04 09 70 9d 87 17 81 57 c6 f5 23 c2 c1 l..'!...F..$.cL.gB...p....W..#..
2360 6e 05 20 7a d4 78 9d 80 9d 32 ea 09 ae cd 05 17 f7 6b ec ef 32 4e e6 a7 b0 d6 c2 75 1d e6 f3 13 n..z.x...2.......k..2N.....u....
2380 18 c3 98 4c 26 38 3a 3a 42 08 01 0f 3c f0 40 4f 10 e6 0e d0 bc f3 31 a7 80 ce 39 14 45 81 ba ae ...L&8::B...<.@O......1...9.E...
23a0 51 96 65 5f 4e cc c4 f0 54 26 91 30 6e 3b 34 c1 e3 fa 42 20 00 2e 92 c1 fe 24 96 3a 83 04 b4 ad Q.e_N...T&.0n;4...B......$.:....
23c0 c7 8d 79 8b 65 07 54 d3 5d 99 4c 77 1e 26 43 ff 90 83 7b 47 5b 2e af 8c 06 e0 49 e2 de cb 87 50 ..y.e.T.].Lw.&C...{G[.....I....P
23e0 f1 f0 0d 21 74 1d ba d6 c7 e6 0d ce 02 19 85 92 89 a3 a3 10 07 3e 3a ef 21 2a 69 3f c0 3a 17 ec ...!t................>:.!*i?.:..
2400 37 fd 9e 31 39 16 c0 06 f3 df 0f 08 49 c4 9e 86 a8 dd b7 86 51 64 91 4c 32 1a 45 61 51 97 05 0a 7..19.......I.......Qd.L2.EaQ...
2420 6b 31 ad 2d ea d2 0e 46 6e 25 d5 9c a6 56 5e 43 28 6c d1 7b d2 9c 47 67 3e 43 a1 30 04 d8 14 ea k1.-...Fn%...V^C(l.{..Gg>C.0....
2440 07 51 74 2e 1a 8a 90 78 8e a0 21 ce 1d 28 63 74 91 fb d9 09 b1 b7 3e b7 27 93 01 34 95 01 4d 50 .Qt....x..!..(ct......>.'..4..MP
2460 04 c9 b5 fa cc 1f a6 c9 40 79 2e 82 17 04 97 bc be 5d cb 7d ad 35 e0 02 08 21 b2 f3 3e bd 66 64 ........@y.......].}.5...!..>.fd
2480 a2 12 0a 9f a2 02 e7 05 ad 8b 9c 0d 13 c5 16 5f c3 20 43 08 9a f9 8f 68 c8 40 40 c9 8a 92 14 37 ..............._..C....h.@@....7
24a0 6e 9e 42 9c 43 55 c6 79 6b a2 0a 82 c4 d7 6a 0b b8 ce e3 e6 12 38 7f 78 00 32 65 1c d2 2a 71 c2 n.B.CU.yk.....j......8.x.2e..*q.
24c0 b0 31 51 36 3d 9d 4e d1 34 0d 8e 8e 8e 70 e1 c2 85 7e 64 f8 5a db c0 b7 ac 01 cb a3 c5 8d 31 b8 .1Q6=.N.4....p...~d.Z.........1.
24e0 78 f1 e2 c6 c8 f8 3c 8e ad 6d 5a b4 a1 c3 8d 45 00 21 8e 3c db 4d 6d d4 2b 17 10 60 30 99 4d a5 x.....<..mZ....E.!.<.Mm.+..`0.M.
2500 9a ee 7c 80 8c fd 69 db b6 3f bf f3 ae 3f bc fa c1 66 d4 01 3c 69 54 d3 5d 52 09 b0 86 b0 73 60 ..|...i..?...?...f..<iT.]R....s`
2520 70 ce 4f d0 b6 0e 21 c4 9e ed ba 9e 42 14 58 b6 1e 2b 75 60 13 00 ed d2 6c f0 5b 37 c2 0c 97 48 p.O...!.....B.X..+u`....l.[7...H
2540 dc 5a ef df 8c 00 28 cb 57 55 20 1a d4 16 13 9a ee 9e 43 5d a7 09 3c 1c c3 d6 c2 c4 2e 45 a2 b4 .Z....(.WU........C]..<......E..
2560 9f 70 32 01 31 a3 5d ae b0 6a 57 80 02 65 51 c2 14 45 1c c6 51 d8 be e4 e8 07 d5 08 1f 62 cd bc .p2.1.]..jW..eQ..E..Q........b..
2580 b4 36 b5 ee c6 f0 99 ba 90 66 f7 11 9c 8b c3 29 57 ce a1 0b 0e 3b 3b 33 54 55 0d 62 86 65 83 c2 .6.......f.....)W....;;3TU.b.e..
25a0 9a 18 11 11 c0 96 a3 e6 be 6b 61 c9 a0 b2 b6 1f 54 98 27 e3 e6 bc db bb 36 ee e0 a3 18 55 b1 4d .........ka.....T.'.....6....U.M
25c0 8d 40 40 aa 76 44 59 36 97 b1 99 26 04 8f ae 75 08 12 2b 2a 9d f3 31 ea a9 0c aa 92 a3 bc 97 62 .@@.vDY6...&...u..+*..1........b
25e0 d5 c4 b0 c2 87 d8 80 63 0c 47 1e 43 09 08 01 95 8d 61 c6 f2 a4 43 2b 40 c5 06 02 8e ef 1b c0 71 .......c.G.C.....a...C+@.......q
2600 eb 52 5e df 42 34 36 e8 ec cc 26 08 21 60 b9 3c 4d de bc c3 cd 9b 37 01 00 bb bb bb 78 f4 d1 47 .R^.B46...&.!`.<M.....7.....x..G
2620 71 7c 7c 8c e7 3e f7 b9 a8 aa aa e7 7f 86 5b 81 b2 3a 74 28 02 9b 4e a7 b8 7c f9 32 54 15 8f 3e q||..>........[..:t(..N..|.2T..>
2640 fa 28 96 cb 65 9f 22 ae 56 82 d6 75 b8 36 4f e4 ed 1e a3 32 02 32 16 3b bb 13 61 3b 79 58 99 7f .(..e.".V..u.6O....2.2.;..a;yX..
2660 9a da f6 17 f4 ea fb af fe e3 e6 f3 a7 3b f0 19 5e 06 b4 73 32 e6 77 d4 4e 56 b6 52 54 53 03 e1 .............;..^..s2.w.NV.RTS..
2680 0e da 2e 89 a0 5a d6 3b 71 cc 16 5a 35 1d 23 50 f3 7c 5b 94 97 c5 dd ba 2d 66 38 e8 23 7b 84 ac .....Z.;q..Z5.#P.|[.....-f8.#{..
26a0 18 3b 6b df 5c 14 b4 c4 60 b7 2a 6b a2 62 72 b3 ac a7 7f 58 56 f0 86 2d 17 d5 24 91 7d 71 28 88 .;k.\...`.*k.br....XV..-..$.}q(.
26c0 aa 47 51 4d 50 d4 b3 68 00 ba 80 b0 6c 20 44 b0 b0 50 53 82 8a 12 5c 96 b0 85 29 0c d1 0b 59 34 .GQMP..h....l.D..PS...\...)...Y4
26e0 78 ef 00 e7 a0 3e c0 58 83 b2 aa 62 4b af 0a d8 cb c3 9e bc 57 b2 31 0d b0 0e 8d 13 f8 d6 a1 93 x....>.X...bK.......W.1.........
2700 80 09 0c 4c 39 89 9e cc 5a 58 13 77 0e 80 00 b6 b1 c9 a8 f5 0a 63 2d ca 7a 12 27 fd 26 f6 31 1b ...L9...ZX.w.........c-.z.'.&.1.
2720 00 04 0f f1 82 c2 56 28 cb 2a e6 f2 26 4f c3 89 51 05 73 f4 ca 05 7b c0 05 68 e7 00 bf 8a e3 b4 ......V(.*..&O..Q.s...{..h......
2740 11 43 79 6b 0d 6c 51 c1 d8 32 0e 07 85 5a 6b 70 a8 1a ce 05 f1 56 c8 6b 1c c1 55 40 c9 88 f8 b0 .Cyk.lQ..2...Zkp.....V.k..U@....
2760 24 12 12 f5 d3 c9 84 78 d1 0a 73 51 7b 53 d4 73 2b ba 1f bc d6 37 97 57 8b b2 ac 2d b3 41 d3 34 $......x..sQ{S.s+....7.W...-.A.4
2780 70 2e 12 b9 3b b3 09 44 02 96 8b 25 9a d5 22 a6 1b 83 46 ae a6 69 f0 e8 a3 8f e2 59 cf 7a d6 86 p...;..D...%.."...F..i.....Y.z..
27a0 01 c8 51 60 f6 fa 39 e4 cf bd 04 b3 d9 0c 97 2e 5d 82 aa e2 ea d5 ab 58 2e 97 7d 03 17 13 c1 b9 ..Q`..9.........]......X..}.....
27c0 0e d7 e6 01 a2 82 f3 bb 16 3b 13 1b 26 45 f9 70 50 fc 43 27 a7 ef c0 c7 3e 71 f5 17 3f fc f9 d5 .........;..&E.pP.C'....>q..?...
27e0 1a fc cc de 0b c0 fc 61 48 f8 3a 30 eb ba 11 46 d7 4c 15 13 d4 83 f6 27 36 5c 9b 3b 3e 6e cb 1f .......aH.:0...F.L.....'6\.;>n..
2800 af a7 f8 f6 b0 58 6d 6c 05 3a cb 18 64 09 69 1e fe b9 d9 02 1c 7a e9 2d 11 b0 b3 7f 00 c7 3b bf .....Xml.:..d.i......z.-......;.
2820 73 75 4e 7f e5 0b 2e d8 d5 d1 12 96 99 94 11 f9 07 62 02 85 75 ea b0 dd d2 2f 89 70 cb 02 d3 d4 suN..............b..u..../.p....
2840 07 78 09 ec 15 b4 6e 17 8e fd fb fd f8 2f 06 d1 63 ac 1c 84 62 38 9f 59 3a c1 60 f1 09 a7 fe 7c .x....n....../..c...b8.Y:.`....|
2860 44 b2 51 b3 ea 30 b7 fd f6 b2 e3 d4 65 14 e2 e7 c6 88 12 5b af eb ed 03 b1 5d 27 4d 36 ca 3b 0d D.Q..0......e......[.....]'M6.;.
2880 62 bd 0b 14 64 fd ad f2 d0 d0 be 6a 41 91 97 e4 28 fb 8d 33 0f 94 95 79 0a a1 09 5b 18 8e 8d 03 b...d......jA...(..3...y...[....
28a0 91 3c a5 20 0c 09 29 d4 b6 95 b1 fc a1 eb a7 17 66 3b f5 fb cf 4d 6c 41 aa 17 4f ba e6 f0 c3 9f .<....).........f;...MlA..O.....
28c0 3c f9 9b e0 ea 1b ab aa 62 00 69 9f 5f 88 87 75 5a 23 04 87 ae e9 20 a4 58 35 ab fe 30 8b 08 ae <.......b.i._..uZ#......X5..0...
28e0 5e bd 0a 6b 2d ee b9 e7 1e 4c a7 d3 33 a7 3e 65 62 70 b8 1f 72 3a 9d e2 d2 a5 4b 20 22 5c bd 7a ^..k-....L..3.>ebp..r:....K."\.z
2900 15 22 82 e9 54 d0 34 31 fd e9 c4 e3 68 05 35 86 50 94 f6 23 d6 d2 db 45 e6 ef f8 a5 7f f5 c8 b5 ."..T.41....h.5.P..#...E........
2920 cf c7 23 f4 8c 36 00 af 7e c3 8f 79 00 4f e8 83 bd ef f9 af 28 ef 3f 2c 56 aa 3a 98 e3 47 67 6f ..#..6..~..y.O......(.?,V.:..Ggo
2940 fa c1 7f f8 df fb 56 60 20 2e 19 21 d3 bd f3 7d ee e4 67 7e e5 b7 17 4f d1 db bb 82 11 b0 d6 d2 ......V`...!...}..g~...O........
2960 cb 5e f6 20 88 74 ef d7 7e e7 d1 d5 c3 0f 7f a0 03 f0 89 87 fe ec 9f b5 8b 56 5e 03 2c bf f1 d2 .^...t..~................V^.,...
2980 c5 4b 7d 64 d6 b6 2d ba 2e 96 04 eb aa 8a 23 c2 5c ec 39 c8 a2 a0 e1 cc 80 f3 e7 cf 63 36 9b f5 .K}d..-.......#.\.9.........c6..
29a0 04 60 ae 00 0d 0d 41 6e 10 cb 13 a3 26 93 09 2e 5e bc b8 61 20 32 6f d3 b5 2d 9c 78 dc 5c 41 84 .`....An....&...^..a.2o..-.x.\A.
29c0 f9 0a 5b f9 dd df 7c d7 c5 23 e0 11 8c 06 e0 73 88 67 1f 1a 03 15 9b 55 6c c3 a9 b1 43 af 7e 76 ..[...|..#.....s.g.....Ul...C.~v
29e0 aa 41 1b 3b e5 86 2b a5 d6 53 78 d8 dc 73 40 c5 c7 c6 33 fb 94 c2 7b af 55 55 5a 63 ec a2 69 5a .A.;..+..Sx..s@...3...{.UUZc..iZ
2a00 5d ab 13 00 6b 4c 9b 57 09 d5 75 bd f1 ff da b6 85 aa 62 3a a9 b1 42 83 d6 75 38 3d 3d 45 7e 6e ]...kL.W..u.......b:..B..u8==E~n
2a20 0e f1 57 ab 15 ea ba 46 51 14 1b d1 60 ee 26 cc d5 82 6c 3c aa aa ea 2b 04 17 2e 5c 80 aa e2 ca ..W....FQ...`.&...l<...+...\....
2a40 95 2b 1b aa 89 b6 6b 28 08 cc ca d1 0b 48 ec 1b be f8 c5 cb 1b 5d 78 ee 07 1f fe c0 87 fd 68 00 .+....k(.....H.......]x.......h.
2a60 3e 47 d8 5e dc 7b 96 01 90 c1 ae 80 6d 12 70 73 14 f8 e6 5c 80 e8 55 2c b8 9f e7 35 e2 29 25 7b >G.^.{......m.ps...\..U,...5.)%{
2a80 ab 8a 55 d5 bf ef 7d ef eb 87 fb 3b e7 a6 44 74 1f 33 53 d7 75 38 38 38 e8 5b b7 73 e7 66 d7 75 ..U...}....;..Dt.3S.u888.[.s.f.u
2aa0 30 d6 e2 fc f9 19 8e 8f 4f b0 58 2d fb 72 6a 36 e6 57 af 5e 05 33 63 7f 7f bf 6f 0f 5f 6f 09 8e 0.......O.X-.rj6.W.^.3c...o._o..
2ac0 7d 22 ab d5 aa 17 8a 79 ef 51 d7 35 aa aa ea 23 01 00 9b 46 80 62 3a d2 74 dd 61 51 98 6f 01 69 }".....y.Q.5...#...F.b:.t.aQ.o.i
2ae0 45 90 b7 dd 77 df c5 f7 7f e2 13 57 fd 68 00 3e 07 d8 16 fd dc 6a 20 ce 5e 16 ba 3d 36 7a 7b 2e E...w......W.h.>.....j..^..=6z{.
2b00 c0 da 6b 8c 07 f5 e9 c2 d1 d1 11 ef ef ef 9b 4c 2b 7c d1 17 7d 11 39 e7 41 c4 b6 2c 63 4d bf 28 ..k............L+|..}.9.A..,cM.(
2b20 0a 1c 1c 1c 60 b9 5c f6 e1 fa 62 b1 80 84 00 63 4a 1c 1e 9e 83 5e bf 1e 2b 2f c8 05 8f cd a1 2f ....`.\...b....cJ....^..+/...../
2b40 7b 7b 7b a8 aa aa ef 19 68 db b6 ff 7e c3 c8 22 13 8a 59 2c 74 e9 d2 a5 0d 23 90 ef 91 a6 69 a0 {{{.....h...~.."..Y,t....#....i.
2b60 aa e7 8d e1 6f aa aa 1d 9a 4c f6 7f d2 98 c9 07 3e fa d1 8f ba d1 00 dc 66 c4 8b 98 6a eb a9 0d ....o....L......>.......f...j...
2b80 35 2f 05 1d 7a fa 3c 2a 3a 1b 85 cc 10 e7 1a f1 f6 62 90 8d 89 b2 3a 06 00 4f 07 8c 31 a1 eb ba 5/..z.<*:........b....:..O..1...
2ba0 de f2 7e f0 83 1f d4 97 be f4 a5 54 55 d5 ac aa 2a ea ba 0e f3 f9 1c cf 79 ce 73 70 7c 7c dc 8f ..~........TU...*.......y.sp||..
2bc0 f9 ca 8c bf 0f 1e c6 70 94 f6 1e 9f 60 b9 5a a5 51 6e f1 20 df b8 71 63 83 eb c9 42 a1 58 59 70 .......p....`.Z.Qn....qc...B.XYp
2be0 b7 4c 85 72 ce a1 69 1a 18 63 7a 23 70 e1 c2 85 fe 1e 59 ad 56 bd 53 68 db 0e 00 1d 5a 6b bf 71 .L.r..i..cz#p.....Y.V.Sh....Zk.q
2c00 32 99 f8 e9 ce ec a7 50 e1 03 1f fd e0 e7 87 11 b8 ab 0c 40 3e c8 22 9b b3 e1 87 25 c0 3c 16 7c 2......P...........@>."....%.<.|
2c20 d8 21 98 6b c3 59 0d 96 0d 47 2e 17 19 63 e2 3c be d1 00 3c 2d f8 d8 c7 3e e6 ef bf ff 7e de 8a .!.k.Y...G...c.<...<-...>....~..
2c40 d8 2e 00 78 99 f7 9e 54 15 d7 ae 5f c7 f3 9e f7 bc 3e 15 f0 de f7 b5 fc ae eb d0 b9 b5 11 50 1c ...x...T..._.....>............P.
2c60 e1 64 be 48 f3 17 23 72 fb af 88 60 67 67 67 83 0b c8 7d 03 c3 48 32 f7 14 64 6e 28 47 20 aa 8a .d.H..#r...`ggg...}..H2..dn(G...
2c80 1b 37 6e 40 55 51 d7 13 00 69 d3 b0 0b 87 55 a5 af af ea ca de 7f ef fd 6f a5 96 de ff c8 47 1f .7n@UQ...i....U.........o.....G.
2ca0 f1 a3 01 b8 4d 60 03 40 b4 1f b7 f5 c4 78 83 ad 01 1c 5b e9 c2 30 97 dc 56 11 3e f8 f2 07 ad 02 ....M`.@.....x....[..0..V.>.....
2cc0 cf fb bd f7 bc f7 8f c6 23 fc e4 70 e5 ca 15 dd df df df b0 ae ae eb a6 04 7d 56 51 14 bd a4 d8 ........#..p.............}VQ....
2ce0 7b 8f d9 6c b6 c1 e9 ac 43 f7 34 d4 c5 5a ec ef ed 41 45 d0 b6 0d e6 f3 24 5c 66 ee 0f 6e fe 3e {..l....C.4..Z...AE.....$\f..n.>
2d00 99 f4 1b f6 89 e4 92 70 56 0e 46 b5 a1 e9 53 82 83 83 83 33 97 91 3a e7 b0 58 2e 0f 89 f8 1b ad .......pV.F...S....3..:..X......
2d20 b5 fa ac fb 9e f5 13 8f 7c f4 91 f7 8f 06 e0 36 61 67 ba 93 2e 6e 40 93 1a 3e b6 c7 7e 01 6b 2d ........|......6ag...n@..>..~.k-
2d40 f8 76 ee 3f dc 2b bf 7d f8 69 c0 1e f7 9c 43 08 e7 d9 98 3f 7c f5 9f 7e d5 37 fd f6 bb de fd 2f .v.?.+.}.i....C....?|..~.7...../
2d60 c6 63 fc e4 f0 c1 0f 7e 70 c3 00 04 b7 38 7f b4 94 7d 90 c1 64 52 a7 c3 b8 c4 ee ee 6e 6c d8 49 .c.....~p....8...}..dR......nl.I
2d80 d7 69 3e 9f f7 d7 26 87 f4 a4 c0 74 3a 83 b1 84 d5 72 85 93 f9 71 74 0c 03 52 f8 fc f9 f3 d8 dd .i>...&....t:....r...qt..R......
2da0 dd 45 5d d7 60 e6 be 43 74 38 39 2a 1b 8b 9c 36 70 1a 59 7e fe fc f9 8d 9f 69 8c c1 62 b1 40 b3 .E].`..Ct89*...6p.Y~.....i..b.@.
2dc0 6a 20 41 0e 77 77 77 be a9 28 8a f6 cf 7f d9 f3 7e 60 6f 6a 57 bf f8 eb 7f f4 39 5b 2a ca 77 cb j.A.www..(......~`ojW.....9[*.w.
2de0 0d 34 99 4c 31 9d ce 50 d7 93 5e 6f 3f f4 14 f9 c2 e7 7e f1 1c fe 9f b5 27 70 68 04 4c 3f 8a 9b .4.L1..P..^o?.....~.....'ph.L?..
2e00 c0 bc 31 01 98 a1 c0 74 b6 fb 67 c6 e3 fb 94 a0 ff 70 ab cb 97 cb 87 be f8 f2 4f 06 ef ec 62 b1 ..1....t..g......p........O...b.
2e20 48 bd 03 84 65 ea f0 63 66 ec ee ee e2 f2 e5 cb 38 7f fe 3c 26 93 09 aa aa c2 6c 36 43 51 94 91 H...e..cf.......8..<&.....l6CQ..
2e40 49 64 46 59 4c 30 29 0b 84 6e 85 f9 7c 8e d5 6a 85 e5 72 89 eb d7 6f e0 ca 95 c7 70 74 74 dc 73 IdFYL0)..n..|..j..r...o....ptt.s
2e60 3e 65 59 f6 9e 7e e8 3c f2 23 3b 0d e6 d8 7c 74 fe fc 79 5c b8 70 01 b3 d9 0c 75 5d 63 3a 9d a2 >eY..~.<.#;...|t..y\.p....u]c:..
2e80 28 0a ac 56 2b 9c 9c cc 0f 97 cb c5 b7 df 58 c8 5b e6 2d 5e fc cd 5f fb 92 cf d9 39 bc 6b 22 80 (..V+.........X.[.-^.._....9.k".
2ea0 10 7c 9a 9c 15 e7 d7 6f b3 c0 38 e3 cf c3 bf 1b e2 96 8e c1 5e da b7 be 8e 4c 9c 1a 4e dc 6b ce .|.....o..8.........^....L..N.k.
2ec0 7a 3d 3f f8 83 3f 78 f8 43 3f f4 43 37 c6 73 fd 99 e1 3b be e1 2b 66 cf 3e 5f fd ac fa ee 85 96 z=?..?x.C?.C7.s...;..+f.>_......
2ee0 09 de 75 e8 da 16 bb bb bb 7d 83 57 34 f8 13 ec ec ec f4 24 ef c9 c9 49 cf 03 65 4e 28 40 a2 0c ..u......}.W4......$...I..eN(@..
2f00 da 75 68 db 06 c6 d8 24 26 6a d2 ee 01 c2 6c 36 c5 fe fe 7e 5f fb cf 62 a3 b3 ee 93 cc 3b 58 6b .uh....$&j....l6...~_..b.....;Xk
2f20 31 9b cd 7a 09 f1 f5 eb d7 fb f2 61 4e 1b 9a d5 72 5a 5a 7c 1b 91 68 50 f3 a3 af fb 73 2f fd e3 1..z.......aN...rZZ|..hP....s/..
2f40 5f fa 57 bf ef 46 03 f0 34 21 df 18 d1 e3 c7 66 fb ec dd 73 cb 67 ae fb e6 e7 f2 60 db 4c be c8 _.W..F..4!.....f...s.g.....`.L..
2f60 eb 0d 32 7e 23 c7 a4 2c d9 1d fc d9 07 8f e3 93 93 57 9c f5 7a c6 c3 ff 99 e3 95 2f 7f 79 fd c2 ..2~#..,.........W..z....../.y..
2f80 fb 77 ff 9b 69 81 d7 3c 76 7d 51 c4 19 86 1e ce 75 b0 36 8e f5 ca 51 5d 08 01 fb fb fb a8 eb 1a .w..i..<v}Q.....u.6...Q]........
2fa0 7b 7b 7b 30 c6 c4 2e c1 ad cd 4e 6a 2c 76 66 35 ac 53 34 6d 03 55 41 3d 99 c0 39 8f d5 6a 85 ab {{{0......Nj,vf5.S4m.UA=..9..j..
2fc0 57 af c0 18 d3 ef 17 c8 82 a3 3c 3a 7e 3b 4a 1c ee 98 cc 93 85 b2 98 68 30 af d0 b5 6d 6b 9d 04 W.........<:~;J........h0...mk..
2fe0 2c 3a fa 66 59 52 bd e8 f0 a3 af 7a d5 0b ff e0 dd ef fe 23 3f 1a 80 a7 39 8e 94 14 32 6e 1b 80 ,:.fYR.....z.......#?...9...2n..
3000 d8 45 b6 5c 6b f6 cf 30 00 c3 a1 21 12 f2 3c be 41 1f c2 3a 16 d0 10 02 d8 58 bc ea 55 af fa 91 .E.\k..0...!..<.A..:.....X..U...
3020 77 bf fb dd df 37 1e e1 cf 16 0f d0 df f9 2b cf 7f e9 73 ef 9d fd 6d 4b fe b5 ae 59 1e 34 4d 4b w....7........+...s...mK...Y.4MK
3040 50 82 77 0e de 3b 50 1a d6 91 c3 f3 3c f5 27 7b e4 73 e7 ce 81 88 fa 5c 3e 6f 56 76 1e 60 35 98 P.w..;P.....<.'{.s.....\>oVv.`5.
3060 72 8b 65 db 62 b5 f2 10 51 d8 be c4 7b 02 63 62 65 28 47 14 55 55 f5 c4 de 30 22 cc f7 cd 70 da r.e.b...Q...{.cbe(G.UU...0"...p.
3080 50 59 96 fd 64 22 00 b0 d6 fa b6 6d 8b bc 99 c8 05 9d b1 d3 af 0d ca 45 90 f2 ed cf 7b de f3 7e PY..d".....m...........E....{..~
30a0 fb 43 1f fa d0 6a 34 00 4f f5 1b b5 45 ba 40 0e 44 5d 1a c4 b1 b9 0f 60 5b 0c b4 21 f9 4d 12 e0 .C...j4.O...E.@.D].....`[..!.M..
30c0 a1 5c 14 9f 46 fc 53 d6 15 45 3e 21 68 db 36 5f f2 25 7f fa d5 d3 7f f7 ae df 5e 7e 36 af fd 1f .\..F.S..E>!h.6_.%........^~6...
30e0 fd d7 ff a9 f9 6b ff c3 ff 19 ee a6 23 ff d7 df f0 95 d4 74 4a 15 7b 7e e1 b3 f7 9f 3d 99 14 7f .....k......#......tJ.{~....=...
3100 dd 40 be 3e 74 ed 79 84 2e 0e 5a 29 2c 4c f0 68 9a 0e 65 5d f7 de 39 2b 01 35 04 b8 cc d3 30 f7 .@.>t.y...Z),L.h..e]..9+.5....0.
3120 15 82 93 93 93 d4 ce 2d 58 2c 14 24 84 92 3d 2a 16 2c 9d a2 69 96 1b ea cf 3c 1c 54 44 30 9b cd .......-X,.$..=*.,..i....<.TD0..
3140 7a 4e 60 48 06 6e 13 c5 79 c4 18 80 5e 36 3c 9b cd dc b5 6b d7 8a fc f3 33 49 d8 39 7f 01 c0 43 zN`H.n..y...^6<....k....3I.9...C
3160 c4 ac b3 ba 3e 78 e0 81 07 fe ef 47 1e 79 e4 18 b7 61 77 c0 5d 43 02 3a d7 c1 75 2d bc 77 1b 92 ....>x.....G.y...aw.]C.:..u-.w..
3180 d1 ed fa ee b0 be 3f 6c f6 c8 96 3f cb 45 87 22 a0 f5 fa ad f5 c7 b9 5a ad d2 ae fa 70 02 e2 2f ......?l...?.E.".......Z....p../
31a0 0e ae 7b d6 67 fb da cb 7a e7 59 3f ff 3f fe e5 e2 6e b9 56 7f f3 5b be 86 45 89 59 03 bf f4 0b ..{.g...z.Y?.?...n.V..[..E.Y....
31c0 0f bf b0 2a ed df 09 ce bd de 35 cb f3 e2 1a 58 06 aa b2 40 e7 d7 e2 2c 0c b4 1a 31 04 37 30 29 ...*......5....X...@...,...1.70)
31e0 ff cf 06 de 5a 8b bd bd 3d 9c 3b 77 0e d3 e9 34 49 7a 4b 28 31 c0 16 87 bb 8c 89 55 a8 78 b4 ed ....Z...=.;w...4IzK(1......U.x..
3200 0a a7 a7 a7 71 39 c8 62 81 eb d7 af e3 d1 47 1f c5 c9 c9 49 9f 22 66 0d c9 b6 13 19 a6 19 59 43 ....q9.b......G....I."f.......YC
3220 72 ee dc 39 77 78 78 58 9c 3f 7f 1e 7b 7b 7b a8 eb 1a 93 c9 a4 37 5a 6d d7 dd e3 bd 7b 4d 40 f8 r..9wxxX.?..{{{......7Zm....{M@.
3240 b6 c9 a4 fc aa 07 1e 78 60 1f 9f d6 c5 8c 11 c0 67 84 ae 2f fd ad 67 e8 0f f7 c5 65 15 57 ce df .......x`.......g../..g....e.W..
3260 86 d5 81 6c 00 86 4b 44 87 13 84 88 38 3d 68 10 71 58 04 ef a0 21 ec 1b 53 e8 64 32 f9 3a 00 6f ...l..KD....8=h.qX...!..S.d2.:.o
3280 fb void ReliablePacketBuffer::incrementTimeouts(float dtime) { core::list<BufferedPacket>::Iterator i; i = m_list.begin(); for(; i != m_list.end(); i++){ i->time += dtime; i->totaltime += dtime; } } void ReliablePacketBuffer::resetTimedOuts(float timeout) { core::list<BufferedPacket>::Iterator i; i = m_list.begin(); for(; i != m_list.end(); i++){ if(i->time >= timeout) i->time =0l0.!8..m..!...8w.\_"....A.rIT..
33e0 d6 7e eb fe fe ce d3 1e 09 dc 35 06 80 b6 04 3b ba 79 91 7a 76 bf 6d db 7e 8a 6c 96 0b 67 d5 97 .~........5....;.y.zv.m.~.l..g..
3400 73 ae 67 73 87 d5 80 e1 23 23 8f 17 67 53 20 04 af 2a 52 15 45 f1 b7 b0 69 78 e8 9f ff f0 1b c6 s.gs....##..gS...*R.E...ix......
3420 36 22 00 6f ff d9 77 2a 00 bc e8 eb be 81 9e 77 ee ab 5e 44 64 bf 5b 25 bc 1e a1 3b cf ea 50 1a 6".o..w*.......w..^Dd.[%...;..P.
3440 42 51 c4 c3 ef 83 a0 f3 01 5e fa 05 09 e8 9c c3 63 8f 3d 1a 17 8a 0e fa 3c b2 e7 cf de 38 7b de BQ.......^......c.=.....<....8{.
3460 c9 64 92 44 5c 59 dc 45 08 de 03 88 f7 c5 de b4 ba 31 9b 4d 3e 55 d7 75 08 21 f4 46 20 f7 1d dc .d.D\Y.E.........1.M>U.u.!.F....
3480 b8 71 03 a7 a7 a7 7d af 48 36 34 43 19 79 08 c1 a9 6a 91 e7 09 e4 8d 53 d9 08 1c 1c 1c 60 36 9b .q....}.H64C.y...j.....S.....`6.
34a0 a1 aa aa be c3 90 d9 40 45 2f 01 f4 90 b5 f6 5b 2f 5e 3c fc aa 07 1f 7c f0 69 33 02 77 8f 14 98 .......@E/.....[/^<....|.i3.w...
34c0 cd 60 61 87 3e 6e 3b 70 3e e4 d9 5b e4 9b 28 87 7f f9 f0 9f f5 18 86 74 cc dc 8f ef 2e 8a 82 40 .`a.>n;p>..[..(........t.......@
34e0 04 e7 fd 9f 03 f0 df e5 e7 7c fb 7f fb 8b 72 37 1e f6 1f 7c d3 6b e9 87 de f2 bf df 12 d6 fe cf .........|....r7...|.k..........
3500 6f fa 1a e2 ba 79 91 70 f5 46 51 ff 7a 48 38 24 95 f8 b1 da 38 d1 28 2f 7f 71 5e e0 5d 80 00 b0 o....y.p.FQ.zH8$....8.(/.q^.]...
3520 14 d3 b6 ab 57 af e2 f2 e5 7b 36 04 3b c3 b0 7c a8 d6 cc 65 ba e5 72 89 d5 6a 78 1f 08 bc 73 d8 ....W....{6.;..|...e..r..jx...s.
3540 dd ad fe 59 20 7c 94 8c f9 ab cc fc e2 d5 6a 65 4e 4e 4e 36 38 a3 7c 4f ec ec ec 6c cc 11 4c e5 ...Y.|........jeNNN68.|O...l..L.
3560 61 af aa c5 f0 be 08 21 f4 f7 54 55 55 d8 df df bf 25 02 05 62 89 51 44 2f a9 e2 21 6b 0b 4c a7 a......!..TUU....%..b.QD/..!k.L.
3580 05 1e 7c f0 c1 77 be f7 bd ef 7d ca d3 01 be 7b 0c c0 3a 57 cf 9b 83 1e 2f 05 18 32 ba c3 34 60 ..|..w....}....{..:W..../..2..4`
35a0 7b 36 e0 30 ec 4f 8b b5 fa ef 39 99 d4 30 cc 91 07 00 21 44 85 e1 97 bd f2 15 af 78 dd dd ee ed {6.0.O....9..0....!D.......x....
35c0 cf 3a fc e7 5e 07 aa f6 26 2f 2a aa e2 bb 4a 43 af ab 08 e7 2d 94 44 d2 64 e4 74 e7 0b 80 00 85 .:..^...&/*...JC....-.D.d.t.....
35e0 31 84 fd 99 05 83 31 99 d6 28 8a 12 cb e5 0a c7 c7 c7 b7 ac 70 db 3e b0 b9 79 27 87 e0 d6 e6 cd 1.....1..(..........p.>..y'.....
3600 cf 89 2b 80 c2 09 ff 1f ad e7 7f 0a d0 4f 95 65 f9 87 65 59 06 e7 1c 8e 8e 8e 7a 72 30 a7 03 8b ..+..........O.e..eY......zr0...
3620 c5 a2 27 19 93 ea cf d9 a4 40 da 26 05 87 8b 68 b3 11 c8 e9 40 de 41 10 cb 8c 04 e7 fc 25 ef e5 ..'......@.&...h....@.A......%..
3640 21 11 fa d6 fd fd fd a7 25 12 b8 eb 84 40 71 b4 b3 7f 42 53 80 86 8d 3e c3 32 e0 d0 70 0c fe 80 !.......%....@q...BS...>.2..p...
3660 7c 71 be fc 4b bf 74 a2 aa 7b 84 b5 54 18 b6 40 61 0c 39 df bd 70 0c f8 37 f1 4f 5e f3 f5 b4 f3 |q..K.t..{..T..@a.9..p..7.O^....
3680 25 e5 8b 82 98 37 06 d7 bc 2e 74 dd 05 51 8f e0 02 7c 08 00 51 1a 3e 1a 27 19 33 e2 02 d6 ff e8 %....7....t..Q...|..Q.>.'.3.....
36a0 de 5d 7c e8 d1 55 dc cc 94 b8 80 eb d7 af 63 36 9b 6d 30 f0 c3 99 8e c3 39 90 79 f1 47 51 94 00 .]|..U........c6.m0.....9.y.GQ..
36c0 62 8b 70 59 15 00 08 5e a8 fd c0 1f bd f7 e8 b9 cf 7d ee 2f ee ec ec 68 55 95 6f 04 f4 c5 6d db b.pY...^.........}./...hU.o...m.
36e0 9a e3 e3 e3 5b 94 80 59 2c 54 96 a5 b7 36 6a cd a3 27 df 74 36 43 f1 d8 76 24 b0 ed 68 e2 24 a2 ....[..Y,T...6j..'.t6C..v$..h.$.
3700 e6 12 33 3d 54 d7 13 1c 1e 1e 3e e5 91 c0 5d 13 01 7c f4 5a 17 44 c4 c7 3d 81 b7 36 01 9d 75 f8 ..3=T.....>...]..|.Z.D..=..6..u.
3720 b7 87 85 6e 4f 08 5e ff 5f 85 88 86 47 8f c4 01 c0 6f fe d6 6f ad 98 e8 84 28 6e c4 15 49 e5 c5 ...nO.^._...G....o..o....(n..I..
3740 b2 58 42 e9 6f bc ec 65 2f fb 9a f1 d8 af 71 f0 0d 3b 2f b4 b6 f8 6e 43 f2 7a 12 7f 51 7c 47 6d .XB.o..e/.....q..;/...nC.z..Q|Gm
3760 e7 d1 ba 80 e0 d3 68 6e 26 14 65 5c 6d 56 16 16 45 61 70 6d de c6 5d 80 ab 16 de c7 14 ae 69 9a ......hn&.e\mV..Eapm..].......i.
3780 8d 25 1f c3 e5 1f db 11 5d de 03 98 8d 44 36 f0 75 69 31 61 b9 f4 cd 5f 7e d1 7e f8 c3 1f be 71 .%......]....D6.ui1a..._~.~....q
37a0 e3 e6 d1 2f 12 e1 ed 55 55 fe 61 55 55 21 04 df ef 1c 5c 2e 97 38 3a 3a c2 95 2b 57 30 9f cf 9d .../...UU.aUU!....\..8::..+W0...
37c0 73 ce e6 2e c2 5c 71 d8 1e 22 33 4c 3d 89 a8 57 0c 1e 1e 1e 62 77 77 17 93 c9 a4 ef 5f 08 41 b0 s....\q.."3L=..W....bww....._.A.
37e0 5c ae 2e 35 6d f3 50 90 f0 ad 87 87 4f 2d 27 f0 8c 8e 00 de f3 cb df 6f 55 c3 81 ba a5 1e cd 17 \..5m.P.....O-'........oU.......
3800 b8 7a 7d 89 e5 ca a1 69 96 80 7a 4c a6 3b e8 3a 47 2c 2e 7c e8 ca 92 ff f5 7b 4f 27 b2 25 a7 39 .z}....i..zL.;.:G,.|.....{O'.%.9
3820 6b fc d7 76 a8 9f 6f 8e 33 3d 3f 01 12 02 48 5c f9 d5 2f 2a f7 fe ab bf f0 1f 17 37 16 64 df f3 k..v..o.3=?...H\../*.......7.d..
3840 27 cb 73 ef 7f a4 01 93 81 68 40 59 4c d1 36 cb 89 0f 7e 62 ac f9 5f 7e fa 07 fe c2 97 9c 9e 2e '.s......h@YL.6...~b.._~........
3860 c1 10 54 65 8d aa 2c 50 16 15 6c 69 61 8b 02 cc 71 7b 51 70 01 9d f3 70 c1 c3 58 83 69 5d c1 10 ..Te..,P..lia...q{Qp...p..X.i]..
3880 83 10 e0 7c c0 aa 01 84 01 a8 41 e7 3c 96 cb 39 56 ab 25 24 04 ec 1f 1c 60 67 36 03 9b 38 6e bb ...|......A.<..9V.%$....`g6..8n.
38a0 b0 8c 82 a3 07 25 c3 10 00 8b d5 1c d6 94 a8 ea ba f7 a4 ac 0c 66 05 b1 81 f3 0e 6d d3 a0 b0 25 .....%...............f.....m...%
38c0 ac 2d 41 4c 30 05 f5 8b 39 0a ce 7b 01 08 ad eb 10 7c 1c b3 1d cb 5a 1e 2e 04 34 ce 03 4c 28 6c .-AL0...9..{.....|....Z...4..L(l
38e0 09 32 15 bc 13 10 03 95 35 7c 61 6f fa c2 c2 e0 3b 9c 74 af 55 df 1c ba ae 81 f3 01 9d 8f 2b b7 .2......5|ao....;.t.U.........+.
3900 88 10 17 99 f4 53 9f 19 06 0a 2b 69 2d a9 c6 09 c6 c0 ba 47 bf eb 3a 54 55 d5 ab 01 b3 87 1e 5e .....S....+i-......G..:TU......^
3920 cf 7c ad d7 33 21 08 21 78 54 c6 e2 60 ca a8 0a fa 72 2f e7 3e f8 c3 7f e3 79 8f 76 9d a7 77 ff .|..3!.!xT..`....r/.>....y.v..w.
3940 f1 e2 37 1e 3b e1 1d 15 fb 9d 41 e4 05 ce 39 3b 9f cf e3 18 f5 e8 cd bd 31 a6 10 91 be 77 20 6f ..7.;.....A...9;........1....w.o
3960 24 ce 46 68 fb 1e ca 46 20 a7 0e db 11 67 36 5a ab d5 0a 8b c5 e2 12 80 87 ea aa c6 e1 e1 fe 53 $.Fh...F.....g6Z...............S
3980 SharedBuffer<u8> chunkdata(chunkdatasize); memcpy(*chunkdata, &(p.data[headersize]), chunkdatasize); // Set chunk data in buffer sp->chunks[chunk_num] = chunkdata; // If not all chunks are received, return empty buffer if(sp->allReceived() == false) return SharedBuffer<u8>(); // Calculate total size u32 totalsize = 0; core::map<u16, SharedBuffer<u8> >::Iterator i; i = sp->chunks.getIterator(); for(; i.atEnd() == false; i++) { totalsize += i.getNode()->getValue().getSize(); } SharedBuffer<u8> fulldata(totalsize); // Copy chunks to data buffer u32 start = 0; for(u32 chunk_i=0; chunk_i<sp->chunk_count; chunk_i++) { SharedBuffer<u8> buf = sp->chunks[chunk_i]; u16 chunkdatasize = buf.getSize(); memcpy(&fulldata[start], *buf, chunkdatasize); start += chunkdatasize;; } // Remove sp from buffer m_buf.remove(seqnum); delete sp; return fulldata; } void IncomingSplitBuffer::removeUnreliableTimedOuts(float dtime, float timeout) { core::list<u16> remove_queue; core::map<u16, IncomingSplitPacket*>::Iterator i; i = m_buf.getIterator(); for(; i.atEnd() == false; i++) { IncomingSplitPacket *p = i.getNode()->getValue(); // Reliable ones are not removed by timeout if(p->reliable == true) continue; p->time += dtime; if(p->time >= timeout) remove_queue.push_back(i.getNode()->getKey()); } core::list<u16>::Iterator j; j = remove_queue.begin(); for(; j != remove_queue.end(); j++) { dout_con<<"NOTE: Removing timed out unreliable split packet" <<std::endl; delete m_buf[*j]; m_buf.remove(*j); } } /* Channel */ Channel::Channel() { next_outgoing_seqnum = SEQNUM_INITIAL; next_incoming_seqnum = SEQNUM_INITIAL; next_outgoing_split_seqnum = SEQNUM_INITIAL; } Channel::~Channel() { } /* Peer */ Peer::Peer(u16 a_id, Address a_address): address(a_address), id(a_id), timeout_counter(0.0), ping_timer(0.0), resend_timeout(0.5), avg_rtt(-1.0), has_sent_with_id(false), m_sendtime_accu(0), m_max_packets_per_second(10), m_num_sent(0), m_max_num_sent(0) { } Peer::~Peer() { } void Peer::reportRTT(float rtt) { if(rtt >= 0.0){ if(rtt < 0.01){ if(m_max_packets_per_second < 400) m_max_packets_per_second += 10; } else if(rtt < 0.2){ if(m_max_packets_per_second < 100) m_max_packets_per_second += 2; } else { m_max_packets_per_second *= 0.8; if(m_max_packets_per_second < 10) m_max_packets_per_second = 10; } } if(rtt < -0.999) {} else if(avg_rtt < 0.0) avg_rtt = rtt; else avg_rtt = rtt * 0.1 + avg_rtt * 0.9; // Calculate resend_timeout /*int reliable_count = 0; for(int i=0; i<CHANNEL_COUNT; i++) { reliable_count += channels[i].outgoing_reliables.size(); } float timeout = avg_rtt * RESEND_TIMEOUT_FACTOR * ((float)reliable_count * 1);*/ float timeout = avg_rtt * RESEND_TIMEOUT_FACTOR; if(timeout < RESEND_TIMEOUT_MIN) timeout = RESEND_TIMEOUT_MIN; if(timeout > RESEND_TIMEOUT_MAX) timeout = RESEND_TIMEOUT_MAX; resend_timeout = timeout; } /* Connection */ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout): m_protocol_id(protocol_id), m_max_packet_size(max_packet_size), m_timeout(timeout), m_peer_id(0), m_bc_peerhandler(NULL), m_bc_receive_timeout(0), m_indentation(0) { m_socket.setTimeoutMs(5); Start(); } Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout, PeerHandler *peerhandler): m_protocol_id(protocol_id), m_max_packet_size(max_packet_size), m_timeout(timeout), m_peer_id(0), m_bc_peerhandler(peerhandler), m_bc_receive_timeout(0), m_indentation(0) { m_socket.setTimeoutMs(5); Start(); } Connection::~Connection() { stop(); // Delete peers for(core::map<u16, Peer*>::Iterator j = m_peers.getIterator(); j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); delete peer; } } /* Internal stuff */ void * Connection::Thread() { ThreadStarted(); log_register_thread("Connection"); dout_con<<"Connection thread started"<<std::endl; u32 curtime = porting::getTimeMs(); u32 lasttime = curtime; while(getRun()) { BEGIN_DEBUG_EXCEPTION_HANDLER lasttime = curtime; curtime = porting::getTimeMs(); float dtime = (float)(curtime - lasttime) / 1000.; if(dtime > 0.1) dtime = 0.1; if(dtime < 0.0) dtime = 0.0; runTimeouts(dtime); while(m_command_queue.size() != 0){ ConnectionCommand c = m_command_queue.pop_front(); processCommand(c); } send(dtime); receive(); END_DEBUG_EXCEPTION_HANDLER(derr_con); } return NULL; } void Connection::putEvent(ConnectionEvent &e) { assert(e.type != CONNEVENT_NONE); m_event_queue.push_back(e); } void Connection::processCommand(ConnectionCommand &c) { switch(c.type){ case CONNCMD_NONE: dout_con<<getDesc()<<" processing CONNCMD_NONE"<<std::endl; return; case CONNCMD_SERVE: dout_con<<getDesc()<<" processing CONNCMD_SERVE port=" <<c.port<<std::endl; serve(c.port); return; case CONNCMD_CONNECT: dout_con<<getDesc()<<" processing CONNCMD_CONNECT"<<std::endl; connect(c.address); return; case CONNCMD_DISCONNECT: dout_con<<getDesc()<<" processing CONNCMD_DISCONNECT"<<std::endl; disconnect(); return; case CONNCMD_SEND: dout_con<<getDesc()<<" processing CONNCMD_SEND"<<std::endl; send(c.peer_id, c.channelnum, c.data, c.reliable); return; case CONNCMD_SEND_TO_ALL: dout_con<<getDesc()<<" processing CONNCMD_SEND_TO_ALL"<<std::endl; sendToAll(c.channelnum, c.data, c.reliable); return; case CONNCMD_DELETE_PEER: dout_con<<getDesc()<<" processing CONNCMD_DELETE_PEER"<<std::endl; deletePeer(c.peer_id, false); return; } } void Connection::send(float dtime) { for(core::map<u16, Peer*>::Iterator j = m_peers.getIterator(); j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); peer->m_sendtime_accu += dtime; peer->m_num_sent = 0; peer->m_max_num_sent = peer->m_sendtime_accu * peer->m_max_packets_per_second; } Queue<OutgoingPacket> postponed_packets; while(m_outgoing_queue.size() != 0){ OutgoingPacket packet = m_outgoing_queue.pop_front(); Peer *peer = getPeerNoEx(packet.peer_id); if(!peer) continue; if(peer->channels[packet.channelnum].outgoing_reliables.size() >= 5){ postponed_packets.push_back(packet); } else if(peer->m_num_sent < peer->m_max_num_sent){ rawSendAsPacket(packet.peer_id, packet.channelnum, packet.data, packet.reliable); peer->m_num_sent++; } else { postponed_packets.push_back(packet); } } while(postponed_packets.size() != 0){ m_outgoing_queue.push_back(postponed_packets.pop_front()); } for(core::map<u16, Peer*>::Iterator j = m_peers.getIterator(); j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); peer->m_sendtime_accu -= (float)peer->m_num_sent / peer->m_max_packets_per_second; if(peer->m_sendtime_accu > 10. / peer->m_max_packets_per_second) peer->m_sendtime_accu = 10. / peer->m_max_packets_per_second; } } // Receive packets from the network and buffers and create ConnectionEvents void Connection::receive() { u32 datasize = m_max_packet_size * 2; // Double it just to be safe // TODO: We can not know how many layers of header there are. // For now, just assume there are no other than the base headers. u32 packet_maxsize = datasize + BASE_HEADER_SIZE; SharedBuffer<u8> packetdata(packet_maxsize); bool single_wait_done = false; for(;;) { try{ /* Check if some buffer has relevant data */ { u16 peer_id; SharedBuffer<u8> resultdata; bool got = getFromBuffers(peer_id, resultdata); if(got){ ConnectionEvent e; e.dataReceived(peer_id, resultdata); putEvent(e); continue; } } if(single_wait_done){ if(m_socket.WaitData(0) == false) break; } single_wait_done = true; Address sender; s32 received_size = m_socket.Receive(sender, *packetdata, packet_maxsize); if(received_size < 0) break; if(received_size < BASE_HEADER_SIZE) continue; if(readU32(&packetdata[0]) != m_protocol_id) continue; u16 peer_id = readPeerId(*packetdata); u8 channelnum = readChannel(*packetdata); if(channelnum > CHANNEL_COUNT-1){ PrintInfo(derr_con); derr_con<<"Receive(): Invalid channel "<<channelnum<<std::endl; throw InvalidIncomingDataException("Channel doesn't exist"); } if(peer_id == PEER_ID_INEXISTENT) { /* Somebody is trying to send stuff to us with no peer id. Check if the same address and port was added to our peer list before. Allow only entries that have has_sent_with_id==false. */ core::map<u16, Peer*>::Iterator j; j = m_peers.getIterator(); for(; j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); if(peer->has_sent_with_id) continue; if(peer->address == sender) break; } /* If no peer was found with the same address and port, we shall assume it is a new peer and create an entry. */ if(j.atEnd()) { // Pass on to adding the peer } // Else: A peer was found. else { Peer *peer = j.getNode()->getValue(); peer_id = peer->id; PrintInfo(derr_con); derr_con<<"WARNING: Assuming unknown peer to be " <<"peer_id="<<peer_id<<std::endl; } } /* The peer was not found in our lists. Add it. */ if(peer_id == PEER_ID_INEXISTENT) { // Somebody wants to make a new connection // Get a unique peer id (2 or higher) u16 peer_id_new = 2; /* Find an unused peer id */ bool out_of_ids = false; for(;;) { // Check if exists if(m_peers.find(peer_id_new) == NULL) break; // Check for overflow if(peer_id_new == 65535){ out_of_ids = true; break; } peer_id_new++; } if(out_of_ids){ errorstream<<getDesc()<<" ran out of peer ids"<<std::endl; continue; } PrintInfo(); dout_con<<"Receive(): Got a packet with peer_id=PEER_ID_INEXISTENT," " giving peer_id="<<peer_id_new<<std::endl; // Create a peer Peer *peer = new Peer(peer_id_new, sender); m_peers.insert(peer->id, peer); // Create peer addition event ConnectionEvent e; e.peerAdded(peer_id_new, sender); putEvent(e); // Create CONTROL packet to tell the peer id to the new peer. SharedBuffer<u8> reply(4); writeU8(&reply[0], TYPE_CONTROL); writeU8(&reply[1], CONTROLTYPE_SET_PEER_ID); writeU16(&reply[2], peer_id_new); sendAsPacket(peer_id_new, 0, reply, true); // We're now talking to a valid peer_id peer_id = peer_id_new; // Go on and process whatever it sent } core::map<u16, Peer*>::Node *node = m_peers.find(peer_id); if(node == NULL) { // Peer not found // This means that the peer id of the sender is not PEER_ID_INEXISTENT // and it is invalid. PrintInfo(derr_con); derr_con<<"Receive(): Peer not found"<<std::endl; throw InvalidIncomingDataException("Peer not found (possible timeout)"); } Peer *peer = node->getValue(); // Validate peer address if(peer->address != sender) { PrintInfo(derr_con); derr_con<<"Peer "<<peer_id<<" sending from different address." " Ignoring."<<std::endl; continue; } peer->timeout_counter = 0.0; Channel *channel = &(peer->channels[channelnum]); // Throw the received packet to channel->processPacket() // Make a new SharedBuffer from the data without the base headers SharedBuffer<u8> strippeddata(received_size - BASE_HEADER_SIZE); memcpy(*strippeddata, &packetdata[BASE_HEADER_SIZE], strippeddata.getSize()); try{ // Process it (the result is some data with no headers made by us) SharedBuffer<u8> resultdata = processPacket (channel, strippeddata, peer_id, channelnum, false); PrintInfo(); dout_con<<"ProcessPacket returned data of size " <<resultdata.getSize()<<std::endl; ConnectionEvent e; e.dataReceived(peer_id, resultdata); putEvent(e); continue; }catch(ProcessedSilentlyException &e){ } }catch(InvalidIncomingDataException &e){ } catch(ProcessedSilentlyException &e){ } } // for } void Connection::runTimeouts(float dtime) { core::list<u16> timeouted_peers; core::map<u16, Peer*>::Iterator j; j = m_peers.getIterator(); for(; j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); /* Check peer timeout */ peer->timeout_counter += dtime; if(peer->timeout_counter > m_timeout) { PrintInfo(derr_con); derr_con<<"RunTimeouts(): Peer "<<peer->id <<" has timed out." <<" (source=peer->timeout_counter)" <<std::endl; // Add peer to the list timeouted_peers.push_back(peer->id); // Don't bother going through the buffers of this one continue; } float resend_timeout = peer->resend_timeout; for(u16 i=0; i<CHANNEL_COUNT; i++) { core::list<BufferedPacket> timed_outs; core::list<BufferedPacket>::Iterator j; Channel *channel = &peer->channels[i]; // Remove timed out incomplete unreliable split packets channel->incoming_splits.removeUnreliableTimedOuts(dtime, m_timeout); // Increment reliable packet times channel->outgoing_reliables.incrementTimeouts(dtime); // Check reliable packet total times, remove peer if // over timeout. if(channel->outgoing_reliables.anyTotaltimeReached(m_timeout)) { PrintInfo(derr_con); derr_con<<"RunTimeouts(): Peer "<<peer->id <<" has timed out." <<" (source=reliable packet totaltime)" <<std::endl; // Add peer to the to-be-removed list timeouted_peers.push_back(peer->id); goto nextpeer; } // Re-send timed out outgoing reliables timed_outs = channel-> outgoing_reliables.getTimedOuts(resend_timeout); channel->outgoing_reliables.resetTimedOuts(resend_timeout); j = timed_outs.begin(); for(; j != timed_outs.end(); j++) { u16 peer_id = readPeerId(*(j->data)); u8 channel = readChannel(*(j->data)); u16 seqnum = readU16(&(j->data[BASE_HEADER_SIZE+1])); PrintInfo(derr_con); derr_con<<"RE-SENDING timed-out RELIABLE to "; j->address.print(&derr_con); derr_con<<"(t/o="<<resend_timeout<<"): " <<"from_peer_id="<<peer_id <<", channel="<<((int)channel&0xff) <<", seqnum="<<seqnum <<std::endl; rawSend(*j); // Enlarge avg_rtt and resend_timeout: // The rtt will be at least the timeout. // NOTE: This won't affect the timeout of the next // checked channel because it was cached. peer->reportRTT(resend_timeout); } } /* Send pings */ peer->ping_timer += dtime; if(peer->ping_timer >= 5.0) { // Create and send PING packet SharedBuffer<u8> data(2); writeU8(&data[0], TYPE_CONTROL); writeU8(&data[1], CONTROLTYPE_PING); rawSendAsPacket(peer->id, 0, data, true); peer->ping_timer = 0.0; } nextpeer: continue; } // Remove timed out peers core::list<u16>::Iterator i = timeouted_peers.begin(); for(; i != timeouted_peers.end(); i++) { PrintInfo(derr_con); derr_con<<"RunTimeouts(): Removing peer "<<(*i)<<std::endl; deletePeer(*i, true); } } void Connection::serve(u16 port) { dout_con<<getDesc()<<" serving at port "<<port<<std::endl; try{ m_socket.Bind(port); m_peer_id = PEER_ID_SERVER; } catch(SocketException &e){ // Create event ConnectionEvent ce; ce.bindFailed(); putEvent(ce); } } void Connection::connect(Address address) { dout_con<<getDesc()<<" connecting to "<<address.serializeString() <<":"<<address.getPort()<<std::endl; core::map<u16, Peer*>::Node *node = m_peers.find(PEER_ID_SERVER); if(node != NULL){ throw ConnectionException("Already connected to a server"); } Peer *peer = new Peer(PEER_ID_SERVER, address); m_peers.insert(peer->id, peer); // Create event ConnectionEvent e; e.peerAdded(peer->id, peer->address); putEvent(e); m_socket.Bind(0); // Send a dummy packet to server with peer_id = PEER_ID_INEXISTENT m_peer_id = PEER_ID_INEXISTENT; SharedBuffer<u8> data(0); Send(PEER_ID_SERVER, 0, data, true); } void Connection::disconnect() { dout_con<<getDesc()<<" disconnecting"<<std::endl; // Create and send DISCO packet SharedBuffer<u8> data(2); writeU8(&data[0], TYPE_CONTROL); writeU8(&data[1], CONTROLTYPE_DISCO); // Send to all core::map<u16, Peer*>::Iterator j; j = m_peers.getIterator(); for(; j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); rawSendAsPacket(peer->id, 0, data, false); } } void Connection::sendToAll(u8 channelnum, SharedBuffer<u8> data, bool reliable) { core::map<u16, Peer*>::Iterator j; j = m_peers.getIterator(); for(; j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); send(peer->id, channelnum, data, reliable); } } void Connection::send(u16 peer_id, u8 channelnum, SharedBuffer<u8> data, bool reliable) { dout_con<<getDesc()<<" sending to peer_id="<<peer_id<<std::endl; assert(channelnum < CHANNEL_COUNT); Peer *peer = getPeerNoEx(peer_id); if(peer == NULL) return; Channel *channel = &(peer->channels[channelnum]); u32 chunksize_max = m_max_packet_size - BASE_HEADER_SIZE; if(reliable) chunksize_max -= RELIABLE_HEADER_SIZE; core::list<SharedBuffer<u8> > originals; originals = makeAutoSplitPacket(data, chunksize_max, channel->next_outgoing_split_seqnum); core::list<SharedBuffer<u8> >::Iterator i; i = originals.begin(); for(; i != originals.end(); i++) { SharedBuffer<u8> original = *i; sendAsPacket(peer_id, channelnum, original, reliable); } } void Connection::sendAsPacket(u16 peer_id, u8 channelnum, SharedBuffer<u8> data, bool reliable) { OutgoingPacket packet(peer_id, channelnum, data, reliable); m_outgoing_queue.push_back(packet); } void Connection::rawSendAsPacket(u16 peer_id, u8 channelnum, SharedBuffer<u8> data, bool reliable) { Peer *peer = getPeerNoEx(peer_id); if(!peer) return; Channel *channel = &(peer->channels[channelnum]); if(reliable) { u16 seqnum = channel->next_outgoing_seqnum; channel->next_outgoing_seqnum++; SharedBuffer<u8> reliable = makeReliablePacket(data, seqnum); // Add base headers and make a packet BufferedPacket p = makePacket(peer->address, reliable, m_protocol_id, m_peer_id, channelnum); try{ // Buffer the packet channel->outgoing_reliables.insert(p); } catch(AlreadyExistsException &e) { PrintInfo(derr_con); derr_con<<"WARNING: Going to send a reliable packet " "seqnum="<<seqnum<<" that is already " "in outgoing buffer"<<std::endl; //assert(0); } // Send the packet rawSend(p); } else { // Add base headers and make a packet BufferedPacket p = makePacket(peer->address, data, m_protocol_id, m_peer_id, channelnum); // Send the packet rawSend(p); } } void Connection::rawSend(const BufferedPacket &packet) { try{ m_socket.Send(packet.address, *packet.data, packet.data.getSize()); } catch(SendFailedException &e){ derr_con<<"Connection::rawSend(): SendFailedException: " <<packet.address.serializeString()<<std::endl; } } Peer* Connection::getPeer(u16 peer_id) { core::map<u16, Peer*>::Node *node = m_peers.find(peer_id); if(node == NULL){ throw PeerNotFoundException("GetPeer: Peer not found (possible timeout)"); } // Error checking assert(node->getValue()->id == peer_id); return node->getValue(); } Peer* Connection::getPeerNoEx(u16 peer_id) { core::map<u16, Peer*>::Node *node = m_peers.find(peer_id); if(node == NULL){ return NULL; } // Error checking assert(node->getValue()->id == peer_id); return node->getValue(); } core::list<Peer*> Connection::getPeers() { core::list<Peer*> list; core::map<u16, Peer*>::Iterator j; j = m_peers.getIterator(); for(; j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); list.push_back(peer); } return list; } bool Connection::getFromBuffers(u16 &peer_id, SharedBuffer<u8> &dst) { core::map<u16, Peer*>::Iterator j; j = m_peers.getIterator(); for(; j.atEnd() == false; j++) { Peer *peer = j.getNode()->getValue(); for(u16 i=0; i<CHANNEL_COUNT; i++) { Channel *channel = &peer->channels[i]; SharedBuffer<u8> resultdata; bool got = checkIncomingBuffers(channel, peer_id, resultdata); if(got){ dst = resultdata; return true; } } } return false; } bool Connection::checkIncomingBuffers(Channel *channel, u16 &peer_id, SharedBuffer<u8> &dst) { u16 firstseqnum = 0; // Clear old packets from start of buffer try{ for(;;){ firstseqnum = channel->incoming_reliables.getFirstSeqnum(); if(seqnum_higher(channel->next_incoming_seqnum, firstseqnum)) channel->incoming_reliables.popFirst(); else break; } // This happens if all packets are old }catch(con::NotFoundException) {} if(channel->incoming_reliables.empty() == false) { if(firstseqnum == channel->next_incoming_seqnum) { BufferedPacket p = channel->incoming_reliables.popFirst(); peer_id = readPeerId(*p.data); u8 channelnum = readChannel(*p.data); u16 seqnum = readU16(&p.data[BASE_HEADER_SIZE+1]); PrintInfo(); dout_con<<"UNBUFFERING TYPE_RELIABLE" <<" seqnum="<<seqnum <<" peer_id="<<peer_id <<" channel="<<((int)channelnum&0xff) <<std::endl; channel->next_incoming_seqnum++; u32 headers_size = BASE_HEADER_SIZE + RELIABLE_HEADER_SIZE; // Get out the inside packet and re-process it SharedBuffer<u8> payload(p.data.getSize() - headers_size); memcpy(*payload, &p.data[headers_size], payload.getSize()); dst = processPacket(channel, payload, peer_id, channelnum, true); return true; } } return false; } SharedBuffer<u8> Connection::processPacket(Channel *channel, SharedBuffer<u8> packetdata, u16 peer_id, u8 channelnum, bool reliable) { IndentationRaiser iraiser(&(m_indentation)); if(packetdata.getSize() < 1) throw InvalidIncomingDataException("packetdata.getSize() < 1"); u8 type = readU8(&packetdata[0]); if(type == TYPE_CONTROL) { if(packetdata.getSize() < 2) throw InvalidIncomingDataException("packetdata.getSize() < 2"); u8 controltype = readU8(&packetdata[1]); if(controltype == CONTROLTYPE_ACK) { if(packetdata.getSize() < 4) throw InvalidIncomingDataException ("packetdata.getSize() < 4 (ACK header size)"); u16 seqnum = readU16(&packetdata[2]); PrintInfo(); dout_con<<"Got CONTROLTYPE_ACK: channelnum=" <<((int)channelnum&0xff)<<", peer_id="<<peer_id <<", seqnum="<<seqnum<<std::endl; try{ BufferedPacket p = channel->outgoing_reliables.popSeqnum(seqnum); // Get round trip time float rtt = p.totaltime; // Let peer calculate stuff according to it // (avg_rtt and resend_timeout) Peer *peer = getPeer(peer_id); peer->reportRTT(rtt); //PrintInfo(dout_con); //dout_con<<"RTT = "<<rtt<<std::endl; /*dout_con<<"OUTGOING: "; PrintInfo(); channel->outgoing_reliables.print(); dout_con<<std::endl;*/ } catch(NotFoundException &e){ PrintInfo(derr_con); derr_con<<"WARNING: ACKed packet not " "in outgoing queue" <<std::endl; } throw ProcessedSilentlyException("Got an ACK"); } else if(controltype == CONTROLTYPE_SET_PEER_ID) { if(packetdata.getSize() < 4) throw InvalidIncomingDataException ("packetdata.getSize() < 4 (SET_PEER_ID header size)"); u16 peer_id_new = readU16(&packetdata[2]); PrintInfo(); dout_con<<"Got new peer id: "<<peer_id_new<<"... "<<std::endl; if(GetPeerID() != PEER_ID_INEXISTENT) { PrintInfo(derr_con); derr_con<<"WARNING: Not changing" " existing peer id."<<std::endl; } else { dout_con<<"changing."<<std::endl; SetPeerID(peer_id_new); } throw ProcessedSilentlyException("Got a SET_PEER_ID"); } else if(controltype == CONTROLTYPE_PING) { // Just ignore it, the incoming data already reset // the timeout counter PrintInfo(); dout_con<<"PING"<<std::endl; throw ProcessedSilentlyException("Got a PING"); } else if(controltype == CONTROLTYPE_DISCO) { // Just ignore it, the incoming data already reset // the timeout counter PrintInfo(); dout_con<<"DISCO: Removing peer "<<(peer_id)<<std::endl; if(deletePeer(peer_id, false) == false) { PrintInfo(derr_con); derr_con<<"DISCO: Peer not found"<<std::endl; } throw ProcessedSilentlyException("Got a DISCO"); } else{ PrintInfo(derr_con); derr_con<<"INVALID TYPE_CONTROL: invalid controltype=" <<((int)controltype&0xff)<<std::endl; throw InvalidIncomingDataException("Invalid control type"); } } else if(type == TYPE_ORIGINAL) { if(packetdata.getSize() < ORIGINAL_HEADER_SIZE) throw InvalidIncomingDataException ("packetdata.getSize() < ORIGINAL_HEADER_SIZE"); PrintInfo(); dout_con<<"RETURNING TYPE_ORIGINAL to user" <<std::endl; // Get the inside packet out and return it SharedBuffer<u8> payload(packetdata.getSize() - ORIGINAL_HEADER_SIZE); memcpy(*payload, &packetdata[ORIGINAL_HEADER_SIZE], payload.getSize()); return payload; } else if(type == TYPE_SPLIT) { // We have to create a packet again for buffering // This isn't actually too bad an idea. BufferedPacket packet = makePacket( getPeer(peer_id)->address, packetdata, GetProtocolID(), peer_id, channelnum); // Buffer the packet SharedBuffer<u8> data = channel->incoming_splits.insert(packet, reliable); if(data.getSize() != 0) { PrintInfo(); dout_con<<"RETURNING TYPE_SPLIT: Constructed full data, " <<"size="<<data.getSize()<<std::endl; return data; } PrintInfo(); dout_con<<"BUFFERED TYPE_SPLIT"<<std::endl; throw ProcessedSilentlyException("Buffered a split packet chunk"); } else if(type == TYPE_RELIABLE) { // Recursive reliable packets not allowed assert(reliable == false); if(packetdata.getSize() < RELIABLE_HEADER_SIZE) throw InvalidIncomingDataException ("packetdata.getSize() < RELIABLE_HEADER_SIZE"); u16 seqnum = readU16(&packetdata[1]); bool is_future_packet = seqnum_higher(seqnum, channel->next_incoming_seqnum); bool is_old_packet = seqnum_higher(channel->next_incoming_seqnum, seqnum); PrintInfo(); if(is_future_packet) dout_con<<"BUFFERING"; else if(is_old_packet) dout_con<<"OLD"; else dout_con<<"RECUR"; dout_con<<" TYPE_RELIABLE seqnum="<<seqnum <<" next="<<channel->next_incoming_seqnum; dout_con<<" [sending CONTROLTYPE_ACK" " to peer_id="<<peer_id<<"]"; dout_con<<std::endl; //DEBUG //assert(channel->incoming_reliables.size() < 100); // Send a CONTROLTYPE_AC