ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 09 b0 00 00 07 0a 08 06 00 00 00 aa 0c d4 | .PNG........IHDR................ |
0020 | 46 00 00 0c 24 69 43 43 50 49 43 43 20 50 72 6f 66 69 6c 65 00 00 48 89 95 57 07 54 93 c9 16 9e | F...$iCCPICC.Profile..H..W.T.... |
0040 | bf 24 21 21 a1 05 22 20 25 f4 26 4a 91 2e bd 46 10 90 2a d8 08 49 20 a1 c4 98 10 54 ec e8 a2 02 | .$!!..".%.&J...F..*..I.....T.... |
0060 | 6b 41 45 04 2b ba 2a a2 e8 8a 14 59 6c d8 50 59 14 7b 5f 14 51 51 d6 c5 82 0d 35 6f 92 00 ba ee | kAE.+.*....Yl.PY.{_.QQ....5o.... |
0080 | 2b e7 dd 73 e6 9f ef bf 73 ef 9d ef 4e 3b 33 00 a8 47 b3 45 a2 2c 54 03 80 6c 61 8e 38 26 34 80 | +..s....s...N;3..G.E.,T..la.8&4. |
00a0 | 39 29 29 99 49 7a 04 10 c0 00 24 60 05 54 d9 1c 89 c8 3f 3a 3a 02 40 19 aa ff 2e ef 6e 40 6b 28 | 9)).Iz....$`.T....?::.@.....n@k( |
00c0 | 57 ed e5 b1 fe d9 fe 5f 45 93 cb 93 70 00 40 a2 21 4e e5 4a 38 d9 10 1f 06 00 77 e5 88 c4 39 00 | W......_E...p.@.!N.J8.....w...9. |
00e0 | 10 7a a1 de 6c 56 8e 08 62 22 64 09 b4 c5 90 20 c4 e6 72 9c ae c4 ee 72 9c aa c4 11 0a 9b b8 98 | .z..lV..b"d.......r....r........ |
0100 | 40 88 53 00 50 a1 b2 d9 e2 74 00 d4 e4 bc 98 b9 9c 74 18 47 ad 18 62 07 21 57 20 84 b8 19 62 1f | @.S.P....t.......t.G..b.!W....b. |
0120 | 0e 9f cd 85 f8 33 c4 a3 b2 b3 67 40 ac 6e 0d b1 75 ea 77 71 d2 ff 16 33 75 38 26 9b 9d 3e 8c 95 | .....3....g@.n..u.wq...3u8&..>.. |
0140 | b9 28 44 25 48 20 11 65 b1 e7 fc 9f c3 f1 bf 25 3b 4b 3a d4 87 19 2c 54 be 38 2c 46 9e b3 7c dc | .(D%H..e.......%;K:...,T.8,F..|. |
0160 | 32 67 84 cb 31 15 e2 56 61 6a 64 14 c4 5a 10 5f 13 70 15 f6 72 fc 84 2f 0d 8b 1f b4 ff c0 91 04 | 2g..1..Vajd..Z._.p..r../........ |
0180 | c2 31 83 33 0d 50 2a 97 1d 14 0e b1 01 c4 a6 d2 cc 78 ff 41 ec c3 16 2b 7c a1 3d 9a 9c c7 8f 4b | .1.3.P*..........x.A...+|.=....K |
01a0 | 54 c6 47 85 e2 19 31 83 f1 d1 3c 61 56 64 c4 60 9c 62 3e 8f 35 84 2b 79 92 e0 d8 21 9b 34 41 08 | T.G...1...<aVd.`.b>.5.+y...!.4A. |
01c0 | 0b 62 38 87 68 a3 20 87 15 37 18 b3 35 57 90 10 09 b1 1a c4 f7 24 99 b1 e1 83 be cf f3 f8 81 91 | .b8.h....7..5W.......$.......... |
01e0 | c3 7d 49 63 e4 9c e1 9c 63 20 5b 32 94 0b 66 9e 26 0e 89 51 da 63 ae 7c 01 2b 72 50 1f 91 c3 8f | .}Ic....c.[2..f.&..Q.c.|.+rP.... |
0200 | 0b 53 fa 62 d3 38 6c 05 07 5d 88 33 78 92 49 11 43 7c b8 bc a0 60 25 1f 2c 9f 27 8c 1f e4 89 95 | .S.b.8l..].3x.I.C|...`%.,.'..... |
0220 | 88 72 02 62 06 ed 77 8a b2 a2 07 ed b1 66 5e 56 a8 5c 6f 0a 71 bb 24 37 76 c8 b7 2f 07 2e 36 65 | .r.b..w......f^V.\o.q.$7v../..6e |
0240 | 2e 38 c8 60 8f 8f 56 f6 8b 6b 8b 72 a2 e3 94 dc 70 26 88 00 81 20 08 30 81 14 96 54 30 03 64 00 | .8.`..V..k.r....p&.....0...T0.d. |
0260 | 41 7b 6f 43 2f 18 6a 09 01 6c 20 06 e9 80 07 ec 07 35 43 1e 89 8a 16 21 fc c6 82 3c f0 27 44 3c | A{oC/.j..l.......5C....!...<.'D< |
0280 | 20 19 f6 0b 50 b4 f2 40 2e d4 7f 19 d6 2a bf f6 20 4d d1 9a ab f0 c8 04 4f 20 ce c6 f5 71 1f dc | ....P..@.....*...M......O....q.. |
02a0 | 0b 8f 80 5f 3f 58 9c 70 77 dc 63 c8 8f a9 3e d4 2b 31 98 18 44 0c 23 86 10 6d a6 0b f2 c5 3f c4 | ..._?X.pw.c...>.+1..D.#..m....?. |
02c0 | 65 02 0e cc 20 0b 16 31 08 87 35 0f 66 25 e7 20 1c e2 fe 2d 0e e1 09 a1 83 f0 88 70 9d d0 49 b8 | e......1..5.f%.....-.......p..I. |
02e0 | 0d 12 c0 63 68 27 f8 47 86 df a2 09 86 75 13 40 27 8c 1a 32 98 5d ea f7 d9 e1 96 90 b5 0b 1e 80 | ...ch'.G.....u.@'..2.].......... |
0300 | 7b 43 fe 90 3b ce c0 f5 81 3d 3e 16 66 e2 8f fb c2 dc 5c a0 f6 db a8 fd 3b ee d2 21 d6 64 07 32 | {C..;....=>.f.....\.....;..!.d.2 |
0320 | 4a 1e 41 f6 23 5b ff 68 a7 66 ab e6 32 ec 23 cf ed 7b 9e 4a 5e a9 c3 99 04 0e b7 fc d8 5b e0 77 | J.A.#[.h.f..2.#..{.J^........[.w |
0340 | b9 71 61 1d fe a3 25 b6 1c ab c5 ce 61 27 b1 f3 58 33 d6 00 98 d8 71 ac 11 6b c3 8e ca f1 f0 da | .qa...%.....a'..X3....q..k...... |
0360 | 78 ac 58 1b 43 bd c5 28 f8 64 c2 38 82 21 1b 87 6a 87 1e 87 cf 3f f4 cd 1e ec 5f ac 98 7f 90 c3 | x.X.C..(.d.8.!..j....?...._..... |
0380 | 9b 9d 23 df 38 81 33 44 73 c4 82 74 7e 0e d3 1f 9e d6 3c 26 4b c8 19 3d 8a e9 e4 e0 08 4f 51 f9 | ..#.8.3Ds..t~.....<&K..=.....OQ. |
03a0 | d9 af 3c 5a de 30 14 67 3a c2 b8 f0 4d 57 d0 05 80 ef 38 99 4c d6 f4 4d 17 b6 1b 80 5a 55 00 28 | ..<Z.0.g:...MW....8.L..M....ZU.( |
03c0 | c7 be e9 ac e0 9e a1 1d 01 a0 b5 8e 23 15 e7 2a 75 b8 fc 43 00 14 a0 0e 77 8a 1e 30 82 67 97 35 | ............#..*u..C....w..0.g.5 |
03e0 | cc c8 09 b8 02 2f e0 07 82 c1 78 10 05 e2 40 12 98 06 c7 99 0f b2 21 eb 59 60 1e 58 0c 0a 40 11 | ...../....x...@.......!.Y`.X..@. |
0400 | 58 0d d6 83 72 b0 15 ec 00 7b c0 7e 70 08 34 80 66 70 12 9c 05 17 c1 65 70 1d dc 85 6b a5 1b bc | X...r....{.~p.4.fp.....ep...k... |
0420 | 00 7d e0 1d 18 40 10 84 84 d0 10 3a a2 87 18 23 16 88 1d e2 84 b8 23 3e 48 30 12 81 c4 20 49 48 | .}...@.....:...#......#>H0....IH |
0440 | 0a 92 8e 08 11 29 32 0f 59 82 14 21 25 48 39 b2 1d a9 42 7e 45 8e 20 27 91 f3 48 07 72 1b 79 88 | .....)2.Y..!%H9...B~E..'..H.r.y. |
0460 | f4 20 af 91 4f 28 86 52 51 6d d4 10 b5 44 c7 a0 ee a8 3f 1a 8e c6 a1 53 d1 74 74 26 9a 87 2e 45 | ....O(.RQm...D....?....S.tt&...E |
0480 | 57 a2 65 68 25 ba 0f ad 47 4f a2 17 d1 eb 68 27 fa 02 ed c7 00 a6 8a 31 30 13 cc 1e 73 c7 02 b1 | W.eh%...GO....h'.......10...s... |
04a0 | 28 2c 19 4b c3 c4 d8 02 ac 10 2b c5 2a b1 1a ac 09 ce f4 55 ac 13 eb c5 3e e2 44 9c 8e 33 71 7b | (,.K......+.*......U....>.D..3q{ |
04c0 | b8 5e c3 f0 78 9c 83 cf c4 17 e0 c5 78 39 be 07 af c7 4f e3 57 f1 87 78 1f fe 95 40 23 18 10 ec | .^..x.......x9....O.W..x...@#... |
04e0 | 08 9e 04 16 61 12 21 9d 30 8b 50 40 28 25 ec 22 d4 11 ce c0 3d d5 4d 78 47 24 12 19 44 2b a2 1b | ....a.!.0.P@(%."....=.MxG$..D+.. |
0500 | dc ab 49 c4 0c e2 5c 62 31 71 33 f1 00 f1 04 b1 83 d8 45 ec 27 91 48 7a 24 3b 92 37 29 8a c4 26 | ..I...\b1q3.......E.'.Hz$;.7)..& |
0520 | e5 90 0a 48 1b 49 fb 48 c7 49 57 48 dd a4 0f 2a aa 2a c6 2a 4e 2a 21 2a c9 2a 42 95 7c 95 52 95 | ...H.I.H.IWH...*.*.*N*!*.*B.|.R. |
0540 | bd 2a c7 54 ae a8 3c 55 19 20 6b 90 2d c8 9e e4 28 32 97 3c 87 bc 8a bc 93 dc 44 be 44 ee 26 0f | .*.T..<U..k.-...(2.<......D.D.&. |
0560 | 50 34 29 56 14 6f 4a 1c 25 83 b2 98 52 46 a9 a1 9c a1 dc a3 bc 51 55 55 35 55 f5 50 9d a8 2a 50 | P4)V.oJ.%...RF.......QUU5U.P..*P |
0580 | 5d a4 5a a6 7a 50 b5 55 f5 a1 ea 47 aa 16 d5 96 1a 48 9d 42 95 52 57 52 77 53 4f 50 6f 53 df d0 | ].Z.zP.U...G.....H.B.RWRwSOPoS.. |
05a0 | 68 34 4b 9a 1f 2d 99 96 43 5b 49 ab a2 9d a2 3d a0 7d 50 a3 ab 8d 56 63 a9 71 d5 16 aa 55 a8 d5 | h4K..-..C[I....=.}P...Vc.q...U.. |
05c0 | ab 5d 51 7b a9 4e 56 b7 50 f7 57 9f a6 9e a7 5e aa 5e ab 7e 49 bd 57 83 ac 61 a9 11 a8 c1 d6 58 | .]Q{.NV.P.W....^.^.~I.W..a.....X |
05e0 | a0 51 a1 71 44 e3 a6 46 bf 26 5d d3 51 33 4a 33 5b b3 58 73 af e6 79 cd 67 5a 24 2d 4b ad 60 2d | .Q.qD..F.&].Q3J3[.Xs..y.gZ$-K.`- |
0600 | ae d6 52 ad 1d 5a a7 b4 ba e8 18 dd 8c 1e 48 e7 d0 97 d0 77 d2 cf d0 bb b5 89 da 56 da 2c ed 0c | ..R..Z........H....w.......V.,.. |
0620 | ed 22 ed fd da ed da 7d 3a 5a 3a 63 75 12 74 66 eb 54 e8 1c d5 e9 64 60 0c 4b 06 8b 91 c5 58 c5 | .".....}:Z:cu.tf.T....d`.K....X. |
0640 | 38 c4 b8 c1 f8 34 c2 70 84 ff 08 de 88 15 23 6a 46 5c 19 f1 5e 77 a4 ae 9f 2e 4f b7 50 f7 80 ee | 8....4.p......#jF\..^w....O.P... |
0660 | 75 dd 4f 7a 4c bd 60 bd 4c bd 35 7a 0d 7a f7 f5 71 7d 5b fd 89 fa b3 f4 b7 e8 9f d1 ef 1d a9 3d | u.OzL.`.L.5z.z..q}[............= |
0680 | d2 6b 24 67 64 e1 c8 43 23 ef 18 a0 06 b6 06 31 06 73 0d 76 18 b4 19 f4 1b 1a 19 86 1a 8a 0c 37 | .k$gd..C#......1.s.v...........7 |
06a0 | 1a 9e 32 ec 35 62 18 f9 19 65 18 ad 33 3a 66 d4 63 4c 37 f6 31 16 18 af 33 3e 6e fc 9c a9 c3 f4 | ..2.5b...e..3:f.cL7.1...3>n..... |
06c0 | 67 66 31 cb 98 a7 99 7d 26 06 26 61 26 52 93 ed 26 ed 26 03 a6 56 a6 f1 a6 f9 a6 07 4c ef 9b 51 | gf1....}&.&a&R..&.&..V......L..Q |
06e0 | cc dc cd d2 cc d6 99 b5 98 f5 99 1b 9b 4f 30 9f 67 5e 6d 7e c7 82 6c e1 6e c1 b7 d8 60 71 ce e2 | .............O0.g^m~..l.n...`q.. |
0700 | bd a5 95 65 a2 e5 32 cb 06 cb 67 56 ba 56 2c ab 3c ab 6a ab 7b d6 34 6b 5f eb 99 d6 95 d6 d7 6c | ...e..2...gV.V,.<.j.{.4k_......l |
0720 | 88 36 ee 36 99 36 9b 6d 2e db a2 b6 2e b6 7c db 0a db 4b 76 a8 9d ab 9d c0 6e b3 5d c7 28 c2 28 | .6.6.6.m......|...Kv.....n.].(.( |
0740 | 8f 51 c2 51 95 a3 6e da 53 ed fd ed 73 ed ab ed 1f 8e 66 8c 8e 18 9d 3f ba 61 f4 cb 31 e6 63 92 | .Q.Q..n.S...s.....f....?.a..1.c. |
0760 | c7 ac 19 73 6e cc 57 07 17 87 2c 87 9d 0e 77 1d b5 1c c7 3b e6 3b 36 39 be 76 b2 75 e2 38 55 38 | ...sn.W...,...w....;.;69.v.u.8U8 |
0780 | 5d 73 a6 39 87 38 2f 74 6e 74 7e 35 d6 6e 2c 6f ec 96 b1 b7 5c e8 2e 13 5c 96 b9 b4 b8 7c 71 75 | ]s.9.8/tnt~5.n,o....\...\....|qu |
07a0 | 73 15 bb d6 b8 f6 b8 99 bb a5 b8 6d 72 bb e9 ae ed 1e ed 5e ec de ea 41 f0 08 f0 58 e8 d1 ec f1 | s..........mr......^...A...X.... |
07c0 | d1 d3 d5 33 c7 f3 90 e7 5f 5e f6 5e 99 5e 7b bd 9e 8d b3 1a c7 1b b7 73 5c 97 b7 a9 37 db 7b bb | ...3...._^.^.^{........s\...7.{. |
07e0 | 77 a7 0f d3 27 c5 67 9b 4f a7 af 89 2f db b7 d2 f7 91 9f 99 1f d7 6f 97 df 53 7f 1b ff 0c ff 7d | w...'.g.O.../.........o..S.....} |
0800 | fe 2f 03 1c 02 c4 01 75 01 ef 03 3d 03 e7 07 9e 08 c2 82 42 83 0a 83 da 83 b5 82 e3 83 cb 83 1f | ./.....u...=.......B............ |
0820 | 84 98 86 a4 87 54 87 f4 85 ba 84 ce 0d 3d 11 46 08 0b 0f 5b 13 76 93 65 c8 e2 b0 aa 58 7d e3 dd | .....T.......=.F...[.v.e....X}.. |
0840 | c6 cf 1f 7f 3a 9c 1a 1e 1b 5e 1e fe 28 c2 36 42 1c d1 34 01 9d 30 7e c2 da 09 f7 22 2d 22 85 91 | ....:....^..(.6B..4..0~...."-".. |
0860 | 0d 51 20 8a 15 b5 36 ea 7e b4 55 f4 cc e8 df 26 12 27 46 4f ac 98 f8 24 c6 31 66 5e cc b9 58 7a | .Q....6.~.U....&.'FO...$.1f^..Xz |
0880 | ec f4 d8 bd b1 ef e2 02 e2 56 c5 dd 8d b7 8e 97 c6 b7 24 a8 27 4c 49 a8 4a 78 9f 18 94 58 92 d8 | .........V........$.'LI.Jx...X.. |
08a0 | 39 69 cc a4 f9 93 2e 26 e9 27 09 92 1a 93 49 c9 09 c9 bb 92 fb 27 07 4f 5e 3f b9 7b 8a cb 94 82 | 9i.....&.'....I......'.O^?.{.... |
08c0 | 29 37 a6 5a 4d 9d 3d f5 fc 34 fd 69 59 d3 8e 4e 57 9f ce 9e 5e 9b 42 48 49 4c d9 9b f2 99 1d c5 | )7.ZM.=..4.iY..NW...^.BHIL...... |
08e0 | ae 64 f7 a7 b2 52 37 a5 f6 71 02 39 1b 38 2f b8 7e dc 75 dc 1e 9e 37 af 84 f7 34 cd 3b ad 24 ed | .d...R7..q.9.8/.~.u...7...4.;.$. |
0900 | 59 ba 77 fa da f4 1e be 2f bf 94 df 2b 08 14 94 0b 5e 65 84 65 6c cd 78 9f 19 95 b9 3b 53 96 95 | Y.w...../...+....^e.el.x....;S.. |
0920 | 98 75 20 5b 25 3b 25 fb 88 50 4b 98 29 3c 3d c3 68 c6 ec 19 1d 22 3b 51 81 a8 73 a6 e7 cc f5 33 | .u.[%;%..PK.)<=.h....";Q..s....3 |
0940 | fb c4 e1 e2 5d 12 44 32 55 d2 98 a3 0d 2f d9 6d 52 6b e9 4f d2 87 b9 3e b9 15 b9 1f 66 25 cc aa | ....].D2U..../.mRk.O...>....f%.. |
0960 | 9d ad 39 5b 38 bb 6d 8e ed 9c 15 73 9e e6 85 e4 fd 32 17 9f cb 99 db 32 cf 64 de e2 79 0f e7 fb | ..9[8.m....s.....2.....2.d..y... |
0980 | cf df be 00 59 90 ba a0 65 a1 d9 c2 a5 0b bb 17 85 2e da b3 98 b2 38 73 f1 ef f9 0e f9 25 f9 6f | ....Y...e.............8s.....%.o |
09a0 | 97 24 2e 69 5a 6a b8 74 d1 d2 ae 9f 42 7f aa 2e 50 2b 10 17 dc 5c e6 b5 6c eb 72 7c b9 60 79 fb | .$.iZj.t....B...P+...\..l.r|.`y. |
09c0 | 0a e7 15 1b 57 7c 2d e4 16 5e 28 72 28 2a 2d fa 5c cc 29 be f0 b3 e3 cf 65 3f cb 56 a6 ad 6c 5f | ....W|-..^(r(*-.\.).....e?.V..l_ |
09e0 | e5 ba 6a cb 6a e2 6a e1 ea 1b 6b 7c d7 ec 29 d1 2c c9 2b e9 5a 3b 61 6d fd 3a e6 ba c2 75 6f d7 | ..j.j.j...k|..).,.+.Z;am.:...uo. |
0a00 | 4f 5f 7f be 74 6c e9 d6 0d 94 0d d2 0d 9d 65 11 65 8d 1b cd 37 ae de f8 b9 9c 5f 7e bd 22 a0 e2 | O_..tl........e.e...7....._~.".. |
0a20 | c0 26 83 4d 2b 36 bd df cc dd 7c 65 8b df 96 9a ad 86 5b 8b b6 7e da 26 d8 76 6b 7b e8 f6 fa 4a | .&.M+6....|e......[..~.&.vk{...J |
0a40 | cb ca d2 1d c4 1d b9 3b 9e ec 4c d8 79 ee 17 f7 5f aa 76 e9 ef 2a da f5 65 b7 70 77 e7 9e 98 3d | .......;..L.y..._.v..*..e.pw...= |
0a60 | a7 ab dc aa aa f6 1a ec 5d 55 8d 56 4b ab 7b f6 4d d9 77 79 7f d0 fe c6 1a fb 9a ed 07 18 07 8a | ........]U.VK.{.M.wy............ |
0a80 | 0e 82 83 d2 83 cf 7f 4d f9 f5 c6 a1 f0 43 2d b5 ee b5 35 87 2d 0e 6f aa a3 d7 15 d6 23 f5 73 ea | .......M.....C-...5.-.o.....#.s. |
0aa0 | fb 1a f8 0d 9d 8d 49 8d 1d 47 c6 1f 69 69 f2 6a aa fb 6d f4 6f bb 9b 4d 9a 2b 8e ea 1c 5d 75 8c | ......I..G..ii.j..m.o..M.+...]u. |
0ac0 | 72 6c e9 31 d9 f1 bc e3 fd 27 44 27 7a 4f a6 9f ec 6a 99 de 72 f7 d4 a4 53 d7 4e 4f 3c dd 7e 26 | rl.1.....'D'zO...j..r...S.NO<.~& |
0ae0 | fc 4c eb d9 90 b3 a7 ce f9 9f 3b de ea dd da 7c de f3 fc 91 0b ee 17 1a 2e ba 5e ac 6f 73 69 ab | .L........;....|..........^.osi. |
0b00 | fb dd e5 f7 ba 76 d7 f6 fa 4b 6e 97 1a 2f 7b 5c 6e ea 18 d7 71 ec 8a ef 95 93 57 83 ae 9e bd c6 | .....v...Kn../{\n...q.....W..... |
0b20 | ba 76 f1 7a e4 f5 8e 1b f1 37 6e dd 9c 72 b3 f3 16 f7 d6 b3 db 59 b7 5f dd c9 bd 33 70 77 d1 3d | .v.z.....7n..r.......Y._...3pw.= |
0b40 | c2 bd c2 fb 1a f7 4b 1f 18 3c a8 fc c3 e6 8f 03 9d ae 9d 47 1f 06 3d 6c 7b 14 fb e8 6e 17 a7 eb | ......K..<.........G..=l{...n... |
0b60 | c5 63 c9 e3 cf dd 4b 9f d0 9e 94 3e 35 7e 5a f5 cc e9 59 73 4f 48 cf e5 e7 93 9f 77 bf 10 bd 18 | .c....K....>5~Z...YsOH.....w.... |
0b80 | e8 2d f8 53 f3 cf 4d 2f ad 5f 1e fe cb ef af b6 be 49 7d dd af c4 af 64 af 8b df e8 bd d9 fd 76 | .-.S..M/._.......I}....d.......v |
0ba0 | ec db 96 fe e8 fe 07 ef b2 df 0d bc 2f fc a0 f7 61 cf 47 f7 8f e7 3e 25 7e 7a 3a 30 eb 33 e9 73 | ............/...a.G...>%~z:0.3.s |
0bc0 | d9 17 9b 2f 4d 5f c3 bf de 93 65 cb 64 22 b6 98 ad b8 0a 60 b0 a0 69 69 00 bc 86 77 07 5a 12 00 | .../M_....e.d".....`..ii...w.Z.. |
0be0 | f4 cb f0 fe 30 59 f9 36 53 08 a2 7c 4f 2a 10 f8 4f 58 f9 7e 53 88 2b 00 35 b0 92 5f c3 fd 4f 00 | ....0Y.6S..|O*..OX.~S.+.5.._..O. |
0c00 | 70 08 16 4b 3f 18 1b fe cb af e3 71 7e 00 75 76 1e 2e 83 22 49 73 76 52 c6 a2 c2 17 0e e1 83 4c | p..K?......q~.uv..."IsvR.......L |
0c20 | f6 c6 10 00 52 13 00 5f c4 32 d9 c0 66 99 ec cb 4e 48 f6 36 00 27 66 2a df 84 72 91 bf 41 b7 39 | ....R.._.2..f...NH.6.'f*..r..A.9 |
0c40 | c8 d1 15 e3 5a f0 a3 fc 0b 5d 3d 70 24 56 26 19 e3 00 00 00 09 70 48 59 73 00 00 16 25 00 00 16 | ....Z....]=p$V&......pHYs...%... |
0c60 | 25 01 49 52 24 f0 00 00 02 06 69 54 58 74 58 4d 4c 3a 63 6f 6d 2e 61 64 6f 62 65 2e 78 6d 70 00 | %.IR$.....iTXtXML:com.adobe.xmp. |
0c80 | 00 00 00 00 3c 78 3a 78 6d 70 6d 65 74 61 20 78 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 | ....<x:xmpmeta.xmlns:x="adobe:ns |
0ca0 | 3a 6d 65 74 61 2f 22 20 78 3a 78 6d 70 74 6b 3d 22 58 4d 50 20 43 6f 72 65 20 35 2e 34 2e 30 22 | :meta/".x:xmptk="XMP.Core.5.4.0" |
0cc0 | 3e 0a 20 20 20 3c 72 64 66 3a 52 44 46 20 78 6d 6c 6e 73 3a 72 64 66 3d 22 68 74 74 70 3a 2f 2f | >....<rdf:RDF.xmlns:rdf="http:// |
0ce0 | <
}
/*
* Copyright (c) 2017 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file
* @brief NAT64 global declarations
*/
#ifndef __included_nat64_h__
#define __included_nat64_h__
#include <nat/nat.h>
#include <nat/nat64_db.h>
#define foreach_nat64_tcp_ses_state \
_(0, CLOSED, "closed") \
_(1, V4_INIT, "v4-init") \
_(2, V6_INIT, "v6-init") \
_(3, ESTABLISHED, "established") \
_(4, V4_FIN_RCV, "v4-fin-rcv") \
_(5, V6_FIN_RCV, "v6-fin-rcv") \
_(6, V6_FIN_V4_FIN_RCV, "v6-fin-v4-fin-rcv") \
_(7, TRANS, "trans")
typedef enum
{
#define _(v, N, s) NAT64_TCP_STATE_##N = v,
foreach_nat64_tcp_ses_state
#undef _
} nat64_tcp_ses_state_t;
typedef enum
{
NAT64_CLEANER_RESCHEDULE = 1,
} nat64_cleaner_process_event_e;
typedef struct
{
ip6_address_t prefix;
u8 plen;
u32 vrf_id;
u32 fib_index;
} nat64_prefix_t;
typedef struct
{
ip6_address_t in_addr;
u16 in_port;
ip4_address_t out_addr;
u16 out_port;
u32 fib_index;
u32 thread_index;
u8 proto;
u8 is_add;
u8 done;
} nat64_static_bib_to_update_t;
typedef struct
{
/** Interface pool */
snat_interface_t *interfaces;
/** Address pool vector */
snat_address_t *addr_pool;
/** sw_if_indices whose interface addresses should be auto-added */
u32 *auto_add_sw_if_indices;
/** Pref64 vector */
nat64_prefix_t *pref64;
/** BIB and session DB per thread */
nat64_db_t *db;
/** Worker handoff */
u32 fq_in2out_index;
u32 fq_out2in_index;
/** Pool of static BIB entries to be added/deleted in worker threads */
nat64_static_bib_to_update_t *static_bibs;
/** config parameters */
u32 bib_buckets;
u32 bib_memory_size;
u32 st_buckets;
u32 st_memory_size;
/** values of various timeouts */
u32 udp_timeout;
u32 icmp_timeout;
u32 tcp_trans_timeout;
u32 tcp_est_timeout;
/* Total count of interfaces enabled */
u32 total_enabled_count;
/* The process node which orcherstrates the cleanup */
u32 nat64_expire_walk_node_index;
/* counters/gauges */
vlib_simple_counter_main_t total_bibs;
vlib_simple_counter_main_t total_sessions;
/** node index **/
u32 error_node_index;
u32 in2out_node_index;
u32 in2out_slowpath_node_index;
u32 in2out_reass_node_index;
u32 out2in_node_index;
u32 out2in_reass_node_index;
ip4_main_t *ip4_main;
snat_main_t *sm;
} nat64_main_t;
extern nat64_main_t nat64_main;
extern vlib_node_registration_t nat64_in2out_node;
extern vlib_node_registration_t nat64_out2in_node;
/**
* @brief Add/delete address to NAT64 pool.
*
* @param thread_index Thread index used by ipfix nat logging (not address per thread).
* @param addr IPv4 address.
* @param vrf_id VRF id of tenant, ~0 means independent of VRF.
* @param is_add 1 if add, 0 if delete.
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_add_del_pool_addr (u32 thread_index,
ip4_address_t * addr, u32 vrf_id, u8 is_add);
/**
* @brief Call back function when walking addresses in NAT64 pool, non-zero
* return value stop walk.
*/
typedef int (*nat64_pool_addr_walk_fn_t) (snat_address_t * addr, void *ctx);
/**
* @brief Walk NAT64 pool.
*
* @param fn The function to invoke on each entry visited.
* @param ctx A context passed in the visit function.
*/
void nat64_pool_addr_walk (nat64_pool_addr_walk_fn_t fn, void *ctx);
/**
* @brief NAT64 pool address from specific (DHCP addressed) interface.
*
* @param sw_if_index Index of the interface.
* @param is_add 1 if add, 0 if delete.
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_add_interface_address (u32 sw_if_index, int is_add);
/**
* @brief Enable/disable NAT64 feature on the interface.
*
* @param sw_if_index Index of the interface.
* @param is_inside 1 if inside, 0 if outside.
* @param is_add 1 if add, 0 if delete.
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_add_del_interface (u32 sw_if_index, u8 is_inside, u8 is_add);
/**
* @brief Call back function when walking interfaces with NAT64 feature,
* non-zero return value stop walk.
*/
typedef int (*nat64_interface_walk_fn_t) (snat_interface_t * i, void *ctx);
/**
* @brief Walk NAT64 interfaces.
*
* @param fn The function to invoke on each entry visited.
* @param ctx A context passed in the visit function.
*/
void nat64_interfaces_walk (nat64_interface_walk_fn_t fn, void *ctx);
/**
* @brief Initialize NAT64.
*
* @param vm vlib main.
*
* @return error code.
*/
clib_error_t *nat64_init (vlib_main_t * vm);
/**
* @brief Add/delete static NAT64 BIB entry.
*
* @param in_addr Inside IPv6 address.
* @param out_addr Outside IPv4 address.
* @param in_port Inside port number.
* @param out_port Outside port number.
* @param proto L4 protocol.
* @param vrf_id VRF id of tenant.
* @param is_add 1 if add, 0 if delete.
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_add_del_static_bib_entry (ip6_address_t * in_addr,
ip4_address_t * out_addr, u16 in_port,
u16 out_port, u8 proto, u32 vrf_id,
u8 is_add);
/**
* @brief Alloce IPv4 address and port pair from NAT64 pool.
*
* @param fib_index FIB index of tenant.
* @param proto L4 protocol.
* @param addr Allocated IPv4 address.
* @param port Allocated port number.
* @param thread_index Thread index.
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_alloc_out_addr_and_port (u32 fib_index, snat_protocol_t proto,
ip4_address_t * addr, u16 * port,
u32 thread_index);
/**
* @brief Set UDP session timeout.
*
* @param timeout Timeout value in seconds (if 0 reset to default value 300sec).
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_set_udp_timeout (u32 timeout);
/**
* @brief Get UDP session timeout.
*
* @returns UDP session timeout in seconds.
*/
u32 nat64_get_udp_timeout (void);
/**
* @brief Set ICMP session timeout.
*
* @param timeout Timeout value in seconds (if 0 reset to default value 60sec).
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_set_icmp_timeout (u32 timeout);
/**
* @brief Get ICMP session timeout.
*
* @returns ICMP session timeout in seconds.
*/
u32 nat64_get_icmp_timeout (void);
/**
* @brief Set TCP session timeouts.
*
* @param trans Transitory timeout in seconds (if 0 reset to default value 240sec).
* @param est Established timeout in seconds (if 0 reset to default value 7440sec).
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_set_tcp_timeouts (u32 trans, u32 est);
/**
* @brief Get TCP transitory timeout.
*
* @returns TCP transitory timeout in seconds.
*/
u32 nat64_get_tcp_trans_timeout (void);
/**
* @brief Get TCP established timeout.
*
* @returns TCP established timeout in seconds.
*/
u32 nat64_get_tcp_est_timeout (void);
/**
* @brief Reset NAT64 session timeout.
*
* @param ste Session table entry.
* @param vm VLIB main.
**/
void nat64_session_reset_timeout (nat64_db_st_entry_t * ste,
vlib_main_t * vm);
/**
* @brief Set NAT64 TCP session state.
*
* @param ste Session table entry.
* @param tcp TCP header.
* @param is_ip6 1 if IPv6 packet, 0 if IPv4.
*/
void nat64_tcp_session_set_state (nat64_db_st_entry_t * ste,
tcp_header_t * tcp, u8 is_ip6);
/**
* @brief Add/delete NAT64 prefix.
*
* @param prefix NAT64 prefix.
* @param plen Prefix length.
* @param vrf_id VRF id of tenant.
* @param is_add 1 if add, 0 if delete.
*
* @returns 0 on success, non-zero value otherwise.
*/
int nat64_add_del_prefix (ip6_address_t * prefix, u8 plen, u32 vrf_id,
u8 is_add);
/**
* @brief Call back function when walking addresses in NAT64 prefixes, non-zero
* return value stop walk.
*/
typedef int (*nat64_prefix_walk_fn_t) (nat64_prefix_t * pref64, void *ctx);
/**
* @brief Walk NAT64 prefixes.
*
* @param fn The function to invoke on each entry visited.
* @param ctx A context passed in the visit function.
*/
void nat64_prefix_walk (nat64_prefix_walk_fn_t fn, void *ctx);
/**
* Compose IPv4-embedded IPv6 addresses.
* @param ip6 IPv4-embedded IPv6 addresses.
* @param ip4 IPv4 address.
* @param fib_index Tenant FIB index.
*/
void nat64_compose_ip6 (ip6_address_t * ip6, ip4_address_t * ip4,
u32 fib_index);
/**
* Extract IPv4 address from the IPv4-embedded IPv6 addresses.
*
* @param ip6 IPv4-embedded IPv6 addresses.
* @param ip4 IPv4 address.
* @param fib_index Tenant FIB index.
*/
void nat64_extract_ip4 (ip6_address_t * ip6, ip4_address_t * ip4,
u32 fib_index);
/**
* @brief Set NAT64 hash tables configuration.
*
* @param bib_buckets Number of BIB hash buckets.
* @param bib_memory_size Memory size of BIB hash.
* @param st_buckets Number of session table hash buckets.
* @param st_memory_size Memory size of session table hash.
*/
void nat64_set_hash (u32 bib_buckets, u32 bib_memory_size, u32 st_buckets,
u32 st_memory_size);
/**
* @brief Get worker thread index for NAT64 in2out.
*
* @param addr IPv6 src address.
*
* @returns worker thread index.
*/
u32 nat64_get_worker_in2out (ip6_address_t * addr);
/**
* @brief Get worker thread index for NAT64 out2in.
*
* @param ip IPv4 header.
*
* @returns worker thread index.
*/
u32 nat64_get_worker_out2in (ip4_header_t * ip);
#endif /* __included_nat64_h__ */
/*
* fd.io coding-style-patch-verification: ON
*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
*/