summaryrefslogtreecommitdiff
path: root/www/internals/rec_rear_bottom.jpg
blob: dc7ecc764b1a4ffc34c7b40b40cb9e3fb907034e (plain)
ofshex dumpascii
0000 ff d8 ff e0 00 10 4a 46 49 46 00 01 02 01 01 2c 01 2c 00 00 ff ed 0b ae 50 68 6f 74 6f 73 68 6f ......JFIF.....,.,......Photosho
0020 70 20 33 2e 30 00 38 42 49 4d 03 ed 00 00 00 00 00 10 01 2c 00 00 00 01 00 02 01 2c 00 00 00 01 p.3.0.8BIM.........,.......,....
0040 00 02 38 42 49 4d 04 0d 00 00 00 00 00 04 00 00 00 78 38 42 49 4d 03 f3 00 00 00 00 00 08 00 00 ..8BIM...........x8BIM..........
0060 00 00 00 00 00 00 38 42 49 4d 04 0a 00 00 00 00 00 01 00 00 38 42 49 4d 27 10 00 00 00 00 00 0a ......8BIM..........8BIM'.......
0080 00 01 00 00 00 00 00 00 00 02 38 42 49 4d 03 f5 00 00 00 00 00 48 00 2f 66 66 00 01 00 6c 66 66 ..........8BIM.......H./ff...lff
00a0 00 06 00 00 00 00 00 01 00 2f 66 66 00 01 00 a1 99 9a 00 06 00 00 00 00 00 01 00 32 00 00 00 01 ........./ff...............2....
00c0 00 5a 00 00 00 06 00 00 00 00 00 01 00 35 00 00 00 01 00 2d 00 00 00 06 00 00 00 00 00 01 38 42 .Z...........5.....-..........8B
00e0 49 4d 03 f8 00 00 00 00 00 70 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff IM.......p......................
0100 ff ff 03 e8 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 03 e8 ................................
0120 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 03 e8 00 00 00 00 ................................
0140 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 03 e8 00 00 38 42 49 4d 04 08 ..........................8BIM..
0160 00 00 00 00 00 10 00 00 00 01 00 00 02 40 00 00 02 40 00 00 00 00 38 42 49 4d 04 14 00 00 00 00 .............@...@....8BIM......
0180 00 04 00 00 00 02 38 42 49 4d 04 0c 00 00 00 00 0a 1d 00 00 00 01 00 00 00 70 00 00 00 22 00 00 ......8BIM...............p..."..
01a0 01 50 00 00 2c a0 00 00 0a 01 00 18 00 01 ff d8 ff e0 00 10 4a 46 49 46 00 01 02 01 00 48 00 48 .P..,...............JFIF.....H.H
01c0 00 00 ff fe 00 26 46 69 6c 65 20 77 72 69 74 74 65 6e 20 62 79 20 41 64 6f 62 65 20 50 68 6f 74 .....&File.written.by.Adobe.Phot
01e0 6f 73 68 6f 70 a8 20 35 2e 30 ff ee 00 0e 41 64 6f 62 65 00 64 80 00 00 00 01 ff db 00 84 00 0c oshop..5.0....Adobe.d...........
0200 08 08 08 09 08 0c 09 09 0c 11 0b 0a 0b 11 15 0f 0c 0c 0f 15 18 13 13 15 13 13 18 11 0c 0c 0c 0c ................................
0220 0c 0c 11 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 01 ................................
0240 0d 0b 0b 0d 0e 0d 10 0e 0e 10 14 0e 0e 0e 14 14 0e 0e 0e 0e 14 11 0c 0c 0c 0c 0c 11 11 0c 0c 0c ................................
0260 0c 0c 0c 11 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c ................................
0280 ff c0 00 11 08 00 22 00 70 03 01 22 00 02 11 01 03 11 01 ff dd 00 04 00 07 ff c4 01 3f 00 00 01 ......".p.."................?...
02a0 05 01 01 01 01 01 01 00 00 00 00 00 00 00 03 00 01 02 04 05 06 07 08 09 0a 0b 01 00 01 05 01 01 ................................
02c0 01 01 01 01 00 00 00 00 00 00 00 01 00 02 03 04 05 06 07 08 09 0a 0b 10 00 01 04 01 03 02 04 02 ................................
02e0 05 07 06 08 05 03 0c 33 01 00 02 11 03 04 21 12 31 05 41 51 61 13 22 71 81 32 06 14 91 a1 b1 42 .......3......!.1.AQa."q.2.....B
0300 23 24 15 52 c1 62 33 34 72 82 d1 43 07 25 92 53 f0 e1 f1 63 73 35 16 a2 b2 83 26 44 93 54 64 45 #$.R.b34r..C.%.S...cs5....&D.TdE
0320 c2 a3 74 36 17 d2 55 e2 65 f2 b3 84 c3 d3 75 e3 f3 46 27 94 a4 85 b4 95 c4 d4 e4 f4 a5 b5 c5 d5 ..t6..U.e.....u..F'.............
0340 e5 f5 56 66 76 86 96 a6 b6 c6 d6 e6 f6 37 47 57 67 77 87 97 a7 b7 c7 d7 e7 f7 11 00 02 02 01 02 ..Vfv........7GWgw..............
0360 04 04 03 04 05 06 07 07 06 05 35 01 00 02 11 03 21 31 12 04 41 51 61 71 22 13 05 32 81 91 14 a1 ..........5.....!1..AQaq"..2....
0380 b1 42 23 c1 52 d1 f0 33 24 62 e1 72 82 92 43 53 15 63 73 34 f1 25 06 16 a2 b2 83 07 26 35 c2 d2 .B#.R..3$b.r..CS.cs4.%......&5..
03a0 44 93 54 a3 17 64 45 55 36 74 65 e2 f2 b3 84 c3 d3 75 e3 f3 46 94 a4 85 b4 95 c4 d4 e4 f4 a5 b5 D.T..dEU6te......u..F...........
03c0 c5 d5 e5 f5 56 66 76 86 96 a6 b6 c6 d6 e6 f6 27 37 47 57 67 77 87 97 a7 b7 c7 ff da 00 0c 03 01 ....Vfv........'7GWgw...........
03e0 00 02 11 03 11 00 3f 00 e7 7f 60 66 3f a5 9c fa d8 f7 81 59 b9 c7 73 19 55 6c 6b 58 f7 7a f6 3f ......?...`f?......Y..s.UlkX.z.?
0400 75 9e b3 99 63 6d 65 5e cf d1 be af d2 bf 26 ff 00 b3 a8 74 5e 80 fe b2 ec 56 d5 92 cc 61 90 e7 u...cme^......&....t^....V...a..
0420 54 f7 5a 03 da cb 40 dd 55 3b a8 77 f3 97 d7 ea 3d 94 dd 5d 76 b3 d1 b7 f9 df 4e cf 4f ac fa b5 T.Z...@.U;.w....=..]v.....N.O...
0440 d4 2a c5 e9 b9 6f b1 cc a6 ac a6 57 9d 8b 71 0f 2d 17 e3 37 1e b3 89 93 e8 39 96 31 b8 f9 38 db .*...o.....W..q.-..7.....9.1..8.
0460 fe cd ff 00 6a b1 32 3f 45 ea 7e 95 63 f4 b7 1c ac 1a 7a 17 48 aa ca 73 f3 33 29 36 9b c0 ae d6 ....j.2?E.~.c.....z.H..s.3)6....
0480 fa 35 3f d6 ca 66 35 4c db 87 8f 8f fb ee b6 db af fe 67 d3 ae ad 95 d5 24 e5 20 2e eb f1 5b 11 .5?..f5L..........g.....$.....[.
04a0 d3 77 99 79 75 36 fa 76 31 f5 07 00 e6 0b 04 3a 3f 3e 74 1e e6 d9 ed 4e d7 87 4f e2 b4 2a bb 0d .w.yu6.v1......:?>t....N..O..*..
04c0 bf 56 3a 83 6b 0e b7 a9 7d a5 ae bf 21 f5 97 06 52 6c 75 75 d5 45 de ef b3 5d 75 df a7 7b ff 00 .V:.k...}...!...Rluu.E...]u..{..
04e0 c2 7e 92 a5 95 5d ae b2 d2 e7 ba 4f a6 c8 24 f6 06 c4 f8 cb 66 30 4d d7 e3 e4 d9 6d 65 ef 0d fa .~...].....O..$.....f0M....me...
0500 32 60 93 d9 69 f4 8f aa dd 47 ac 3a e6 63 64 63 56 fa 1c c6 3d b7 b9 cc 25 f6 6f 73 2a 64 07 6e 2`..i....G.:.cdcV...=...%.os*d.n
0520 b9 ac ad cf b2 b7 7e 91 66 52 ef d3 d5 e4 f1 a7 cd 68 fd 5d fa cd 91 f5 7a dc b3 89 97 8f 73 72 ......~.fR.......h.]....z.....sr
0540 8d 65 ce c8 c7 ba c1 0c 73 bd 3b 59 e9 d9 53 9a ff 00 4a ef 53 df bf fd 1a 59 0c 80 f4 57 17 4b .e......s.;Y..S...J.S....Y...W.K
0560 d9 22 f8 b5 f9 6b 5d 13 f5 5f ab 9f 65 e9 39 39 94 64 62 e7 57 8e ca f2 9d 93 8f cb ab 75 83 11 ."...k].._..e.99.db.W........u..
0580 d5 e3 d8 db 5d bd be ab ac f5 bd 6a 3e 9e 3f fa 45 0b 3e ae 64 39 94 60 b4 54 cc 97 8a 9d 4e 46 ....]......j>.?.E.>.d9.`.T....NF
05a0 da eb f5 0e 55 6c c9 c5 c6 df 65 94 3b d5 77 a5 7d 54 ee f5 3d 7b bd 6a eb bf d3 af d1 ae df 52 ....Ul....e.;.w.}T..={.j.......R
05c0 fa f3 97 d5 ba 55 dd 2b 2b 27 0b 1f 1b 29 ad 6d be 8e 25 cd 73 46 ec 6b ad 35 fe 9c b3 d9 bf 3b .....U.++'...).m..%.sF.k.5.....;
05e0 f3 3f 49 f6 2f fb b9 42 35 1f e3 23 a9 e3 61 d1 8a cc 8c 42 dc 6a 58 c6 07 62 5a 4e ea eb 21 95 .?I./..B5..#..a....B.jX..bZN..!.
0600 b9 c7 2b e9 fd a2 af 47 d4 fa 1f e1 ff 00 90 a1 3e ed 6c 2e ff 00 e6 af 1c 20 ec 4e 8e 0f 57 e9 ..+....G........>.l........N..W.
0620 19 9d 2f 2a aa 1e fa f2 1b 91 57 ab 4d 95 4e d2 5b a6 4d 3f 9c df 53 12 c6 be bb 76 39 51 a5 fe ../*......W.M.N.[.M?..S....v9Q..
0640 a3 1a ee 37 00 60 7d eb 5b eb 17 5e 1f 58 33 2b c8 cc ea 32 2a 6b aa 6f a1 8a f6 35 cc 0f c8 b2 ...7.`}.[..^.X3+...2*k.o...5....
0660 97 bd 8f c8 7f ba d8 c0 ff 00 8a fb 6d 9f f7 0f f4 dc f6 1d ed 2c 6b 49 fa 20 08 53 42 47 4e 2d ............m........,kI...SBGN-
0680 e9 1a 92 74 f2 6f 06 93 24 02 e8 d7 49 25 33 5e d2 e8 92 23 e9 92 34 1f 15 11 ba da ae ae a0 6c ...t.o..$...I%3^...#..4........l
06a0 b1 ec 01 ac 68 2e 73 bd cc f6 86 b7 dc 89 d4 45 bf b2 fa 39 2c 2d a5 d4 da e6 3c ec 20 bf d4 db ....h.s........E...9,-....<.....
06c0 75 75 ba b2 5f e9 b6 bf b3 5b e9 db f4 32 2f bd 13 2a 34 b4 93 ea ae 8e 97 d5 ff 00 aa 9d 7f eb uu.._....[...2/..*4.............
06e0 3d 76 e4 74 e3 46 36 35 07 d2 36 de e2 d0 e7 80 0b 9b fa 3a ef b1 f6 6d 7b 1f 6b bd 95 fb d6 67 =v.t.F65..6........:...m{.k....g
0700 50 c1 ea 1d 23 a8 dd d3 ba 83 05 79 34 11 bd 80 87 34 b4 8d ed 7d 6f 6f b7 dc c7 6f 6f fd b7 67 P...#......y4....4...}oo...oo..g
0720 e9 17 57 f5 1b a8 e6 51 d1 ed 66 57 4a 3d 57 a4 33 20 36 a7 36 da db e9 e4 39 d4 5c 2a b2 8c 9b ..W....Q..fWJ=W.3.6.6....9.\*...
0740 2b 6d 95 3a e6 63 dd 5d bf e0 ac f5 3e 9f aa b9 df ac bd 5f 2f ac f5 dc 8c dc da 46 3d d6 7e 81 +m.:.c.]....>......_/......F=.~.
0760 98 ad 24 fa 6d 6b 76 ed 73 dc d6 ef f4 da f7 59 63 f6 7f 38 f5 10 33 e2 36 3d 3d 14 68 00 45 f1 ..$.mkv.s......Yc..8..3.6==.h.E.
0780 17 ff d0 e6 fa 2f 54 b7 04 3d be 9e 3d d8 d7 58 ca ef 66 5d 46 fa 00 7c 1f b4 dd 8b 59 6b ae 76 ...../T..=..=..X..f]F..|....Yk.v
07a0 3f a2 cf 45 ff 00 e0 7f 49 fe 91 75 78 9f 5a df d3 fa 76 7e 47 4c b3 a4 b6 d6 0a 8f a9 5e 35 d8 ?..E....I..ux.Z...v~GL.......^5.
07c0 ec dc 4d c7 d1 c8 75 96 b9 f7 d9 73 2a 7f d9 76 d9 fa 3f f8 35 c1 7b f6 96 87 39 a3 42 76 92 3e ..M...u....s*..v..?.5.{...9.Bv.>
07e0 fd ab 47 0b 1e dc ee 95 9b d3 19 68 39 37 d9 4d b4 32 e7 18 22 86 df 76 43 45 84 39 8c fd 17 fa ..G........h97.M.2.."..vCE.9....
0800 47 33 7a 9a 70 04 f1 1e 8d 79 99 c7 63 40 ce 1f 67 14 78 9b 16 f5 7c 41 d3 73 1c c6 61 b3 2f 2a G3z.p....y..c@..g.x...|A.s..a./*
0820 bc 6b 32 31 aa 2e 65 0f fd 23 6c 7f a1 8c df 6b 33 b1 db 67 d9 fa 8e 1b be 9d 7f ae d7 fe 17 d4 .k21..e..#l....k3..g............
0840 cf cc 66 1e 4f 55 b2 cf b4 e2 50 cb 32 0e 30 7b 4b b6 36 ba da dd 99 ee fb 35 54 54 ea 32 ad 2e ..f.OU....P.2.0{K.6......5TT.2..
0860 f7 53 8f 47 e9 bf c0 54 a9 5b d2 73 59 4b f2 0e d7 35 98 ec cc 76 d7 4b bd 3b de dc 6a 99 b7 fe .S.G...T.[.sYK...5...v.K.;..j...
0880 e4 ef 7f e9 6b ff 00 42 8c 7e ad 75 4f b5 0c 39 a7 d4 39 27 02 7d 41 b4 5a c0 2d b2 c7 38 8f e8 ....k..B.~.uO..9..9'.}A.Z.-..8..
08a0 fb 0f f3 89 a0 0b be be 6b c4 62 05 71 57 d7 56 15 fa 7e 98 b7 d7 a9 b6 7a 0e bc 52 ed e5 de ab ........k.b.qW.V..~.....z..R....
08c0 6c f4 46 0f fe 19 b1 9f ac 57 fe 0f d3 4e 29 e9 cd c8 73 0d 81 f4 b6 00 b0 5a 61 cd 70 dd 5b c4 l.F......W...N)...s......Za.p.[.
08e0 30 3b 65 0d af ec f9 1f f0 ca 15 f4 9c cb 2a 65 e4 b1 95 3e 87 e6 92 e2 64 32 bb 0e 21 ad cd 6b 0;e...........*e...>....d2..!..k
0900 77 7a fe a3 77 ec ff 00 44 89 fb 0b 39 97 7d 9d cf a3 70 7e 3e 2e ed e3 68 76 5b 4d f5 db be 3f wz..w...D...9.}...p~>...hv[M...?
0920 98 c7 68 d9 95 f9 95 58 9d 6a b8 fe f7 e2 8d b5 61 b7 6e f2 d7 18 78 7e d7 9d 4b 1b 5f b6 7d 3f ..h....X.j......a.n...x~..K._.}?
0940 6f db 9a dc bf b1 bf fe ec 51 fe 81 42 c1 85 e8 bd cd 70 75 a2 a6 3d a0 6e 1b ac 70 fd 35 2d 1b o........Q..B.....pu..=.n..p.5-.
0960 76 b5 d8 97 5b eb 3f f3 2d ae b5 68 f4 3c a9 68 7d b4 b7 79 c8 83 b8 11 fa 8b 77 59 a0 ff 00 b9 v...[.?.-..h.<.h}..y......wY....
0980 4f f6 e1 7e fb d0 ad e8 d7 33 1d f7 3a fa 9f e9 e3 55 97 b1 8e 97 3b d7 2c a8 63 56 d1 ff 00 6a O..~.....3..:....U....;.,.cV...j
09a0 b1 b7 ef c9 ab f3 3d 3b 12 25 3c 51 fd e5 01 d2 bd 4b 43 6c 15 b5 b6 3b d2 73 9c f8 35 02 e7 57 ......=;.%<Q.....KCl...;.s..5..W
09c0 67 f3 7b 9d bf f5 76 6d ff 00 ba f6 6f fe 90 a1 d2 86 25 1e 99 be f6 34 16 39 f6 34 d0 6c 73 6c g.{...vm....o.....%....4.9.4.lsl
09e0 6b 8b 59 8a d7 6f 6f be da bf 4b ea ff 00 83 48 f4 7b 85 9e 91 ba a1 fa 73 8c e7 97 12 06 d8 77 k.Y..oo...K....H.{......s......w
0a00 da a5 bf 4f 16 cf cd b1 41 b8 17 96 36 d7 39 80 3e a7 64 06 49 2e 05 8e 75 3f 65 b1 a1 bf a3 ca ...O....A...6.9.>.d.I...u?e.....
0a20 7e cf 56 bd df e0 7d 34 0f 8a 8c a0 45 71 02 9f 22 fa f1 ac b7 23 07 28 5a d6 36 a0 c6 9a 88 65 ~.V...}4....Eq.."....#.(Z.6....e
0a40 a1 ec fd 75 ee aa cf 6d 6d aa df d1 be bf f4 96 7e 89 68 65 d5 9f 7e 07 4e 6f 53 cb a9 a6 e2 fb ...u...mm.......~.he..~.NoS.....
0a60 b0 da d6 3b 7d 9f 6b 7b 6d cc 75 96 6c 6d 7e a3 1f e8 6c f4 d9 f6 6d f6 7a 5f 68 f5 28 c9 f4 b2 ...;}.k{m.u.lm~...l...m.z_h.(...
0a80 b2 7a 5e 45 54 5d fa 4a ad f4 db 4e d1 5b b5 78 c8 67 ae ef 4f 8d df 64 db e8 66 37 fc 1d e8 d5 .z^ET].J...N.[.x.g..O..d..f7....
0aa0 e5 75 4c a3 d3 e9 ca 04 d5 84 e6 b6 a9 6c 6d 69 75 65 db 9c ef cd db 5b 3d 9f cd 33 f7 3d 4b 2e .uL..........lmiue.....[=..3.=K.
0ac0 7d 8d 20 f1 44 e9 e3 dd 69 94 04 48 12 1f 6a 61 87 d3 6b 07 d6 c8 cb 0d 22 69 fb 3b 2b b3 de 36 }...D...i..H..ja..k....."i.;+..6
0ae0 fa fe b4 db 4f a7 b3 73 58 cd 9f ce 7f 51 51 7b 36 e5 d6 e6 6f 75 64 b8 07 da 00 71 f6 37 76 fd ....O..sX....QQ{6...oud....q.7v.
0b00 ae 7f e7 2b 9d 5e a3 e9 e1 82 01 1e b5 93 f4 07 66 f2 28 96 f6 40 15 b4 38 10 04 a7 c4 5e b6 b7 ...+.^..........f.(..@..8....^..
0b20 16 b1 12 b1 d7 a3 ff d1 e2 87 6f 82 6b bf 98 77 d3 e4 7d 0f a3 ff 00 5c ff 00 be ac 04 95 93 b3 ..........o.k..w..}....\........
0b40 14 b6 fb 1d 5e fd f9 3f 1f fc ed 33 7e 8f f6 7b 71 cf fd 42 cb 49 31 1d 1d 61 f3 fa 43 9e 7f f3 ....^..?...3~..{q..B.I1..a..C...
0b60 b4 cd fa 43 8e 1c b2 92 45 2e a3 7b ff 00 67 94 e3 9f 9f 7f f5 fa 4b 29 24 82 5d 4f cd 3f 47 bf ...C....E..{..g.......K)$.]O.?G.
0b80 3c 24 7e 91 fa 3f da 59 69 22 b8 3a 63 fe b7 df e2 9f fc cf 9f 0b 2d 24 92 ec 55 cb 7e 87 1f 9b <$~..?.Yi".:c.........-$..U.~...
0ba0 ff 00 7e 56 3f 3b b7 2b 9f 49 10 b4 bf ff d9 00 38 42 49 4d 04 06 00 00 00 00 00 07 00 01 00 01 ..~V?;.+.I......8BIM............
0bc0 00 01 01 00 ff e2 0c 58 49 43 43 5f 50 52 4f 46 49 4c 45 00 01 01 00 00 0c 48 4c 69 6e 6f 02 10 .......XICC_PROFILE......HLino..
0be0 00 00 6d 6e 74 72 52 47 42 20 58 59 5a 20 07 ce 00 02 00 09 00 06 00 31 00 00 61 63 73 70 4d 53 ..mntrRGB.XYZ..........1..acspMS
0c00 46 54 00 00 00 00 49 45 43 20 73 52 47 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f6 d6 00 01 FT....IEC.sRGB..................
0c20 00 00 00 00 d3 2d 48 50 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .....-HP........................
0c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 63 70 72 74 00 00 ..........................cprt..
0c60 01 50 00 00 00 33 64 65 73 63 00 00 01 84 00 00 00 6c 77 74 70 74 00 00 01 f0 00 00 00 14 62 6b .P...3desc.......lwtpt........bk
0c80 70 74 00 00 02 04 00 00 00 14 72 58 59 5a 00 00 02 18 00 00 00 14 67 58 59 5a 00 00 02 2c 00 00 pt........rXYZ........gXYZ...,..
0ca0 00 14 62 58 59 5a 00 00 02 40 00 00 00 14 64 6d 6e 64 00 00 02 54 00 00 00 70 64 6d 64 64 00 00 ..bXYZ...@....dmnd...T...pdmdd..
0cc0 02 c4 00 00 00 88 76 75 65 64 00 00 03 4c 00 00 00 86 76 69 65 77 00 00 03 d4 00 00 00 24 6c 75 ......vued...L....view.......$lu
0ce0 6d 69 00 00 03 f8 00 00 00 14 6d 65 61 73 00 00 04 0c 00 00 00 24 74 65 63 68 00 00 04 30 00 00 mi........meas.......$tech...0..
0d00 00 0c 72 54 52 43 00 00 04 3c 00 00 08 0c 67 54 52 43 00 00 04 3c 00 00 08 0c 62 54 52 43 00 00 ..rTRC...<....gTRC...<....bTRC..
0d20 04 3c 00 00 08 0c 74 65 78 74 00 00 00 00 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 39 38 .<....text....Copyright.(c).1998
0d40 20 48 65 77 6c 65 74 74 2d 50 61 63 6b 61 72 64 20 43 6f 6d 70 61 6e 79 00 00 64 65 73 63 00 00 .Hewlett-Packard.Company..desc..
0d60 00 00 00 00 00 12 73 52 47 42 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 00 00 ......sRGB.IEC61966-2.1.........
0d80 00 00 12 73 52 47 42 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 00 00 00 00 00 ...sRGB.IEC61966-2.1............
0da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0dc0 00 00 00 00 00 00 58 59 5a 20 00 00 00 00 00 00 f3 51 00 01 00 00 00 01 16 cc 58 59 5a 20 00 00 ......XYZ........Q........XYZ...
0de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 59 5a 20 00 00 00 00 00 00 6f a2 00 00 38 f5 00 00 ..............XYZ.......o...8...
0e00 03 90 58 59 5a 20 00 00 00 00 00 00 62 99 00 00 b7 85 00 00 18 da 58 59 5a 20 00 00 00 00 00 00 ..XYZ.......b.........XYZ.......
0e20 24 a0 00 00 0f 84 00 00 b6 cf 64 65 73 63 00 00 00 00 00 00 00 16 49 45 43 20 68 74 74 70 3a 2f $.........desc........IEC.http:/
0e40 2f 77 77 77 2e 69 65 63 2e 63 68 00 00 00 00 00 00 00 00 00 00 00 16 49 45 43 20 68 74 74 70 3a /www.iec.ch............IEC.http:
0e60 2f 2f 77 77 77 2e 69 65 63 2e 63 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //www.iec.ch....................
0e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 65 73 63 00 00 ..........................desc..
0ea0 00 00 00 00 00 2e 49 45 43 20 36 31 39 36 36 2d 32 2e 31 20 44 65 66 61 75 6c 74 20 52 47 42 20 ......IEC.61966-2.1.Default.RGB.
0ec0 63 6f 6c 6f 75 72 20 73 70 61 63 65 20 2d 20 73 52 47 42 00 00 00 00 00 00 00 00 00 00 00 2e 49 colour.space.-.sRGB............I
0ee0 45 43 20 36 31 39 36 36 2d 32 2e 31 20 44 65 66 61 75 6c 74 20 52 47 42 20 63 6f 6c 6f 75 72 20 EC.61966-2.1.Default.RGB.colour.
0f00 73 70 61 63 65 20 2d 20 73 52 47 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 space.-.sRGB....................
0f20 00 00 64 65 73 63 00 00 00 00 00 00 00 2c 52 65 66 65 72 65 6e 63 65 20 56 69 65 77 69 6e 67 20 ..desc.......,Reference.Viewing.
0f40 43 6f 6e 64 69 74 69 6f 6e 20 69 6e 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 Condition.in.IEC61966-2.1.......
0f60 00 00 00 00 2c 52 65 66 65 72 65 6e 63 65 20 56 69 65 77 69 6e 67 20 43 6f 6e 64 69 74 69 6f 6e ....,Reference.Viewing.Condition
0f80 20 69 6e 20 49 45 43 36 31 39 36 36 2d 32 2e 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .in.IEC61966-2.1................
0fa0 00 00 00 00 00 00 00 00 00 00 76 69 65 77 00 00 00 00 00 13 a4 fe 00 14 5f 2e 00 10 cf 14 00 03 ..........view.........._.......
0fc0 ed cc 00 04 13 0b 00 03 5c 9e 00 00 00 01 58 59 5a 20 00 00 00 00 00 4c 09 56 00 50 00 00 00 57 ........\.....XYZ......L.V.P...W
0fe0 1f e7 6d 65 61 73 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..meas..........................
1000 02 8f 00 00 00 02 73 69 67 20 00 00 00 00 43 52 54 20 63 75 72 76 00 00 00 00 00 00 04 00 00 00 ......sig.....CRT.curv..........
1020 00 05 00 0a 00 0f 00 14 00 19 00 1e 00 23 00 28 00 2d 00 32 00 37 00 3b 00 40 00 45 00 4a 00 4f .............#.(.-.2.7.;.@.E.J.O
1040 00 54 00 59 00 5e 00 63 00 68 00 6d 00 72 00 77 00 7c 00 81 00 86 00 8b 00 90 00 95 00 9a 00 9f .T.Y.^.c.h.m.r.w.|..............
1060 00 a4 00 a9 00 ae 00 b2 00 b7 00 bc 00 c1 00 c6 00 cb 00 d0 00 d5 00 db 00 e0 00 e5 00 eb 00 f0 ................................
1080 00 f6 00 fb 01 01 01 07 01 0d 01 13 01 19 01 1f 01 25 01 2b 01 32 01 38 01 3e 01 45 01 4c 01 52 .................%.+.2.8.>.E.L.R
10a0 01 59 01 60 01 67 01 6e 01 75 01 7c 01 83 01 8b 01 92 01 9a 01 a1 01 a9 01 b1 01 b9 01 c1 01 c9 .Y.`.g.n.u.|....................
10c0 01 d1 01 d9 01 e1 01 e9 01 f2 01 fa 02 03 02 0c 02 14 02 1d 02 26 02 2f 02 38 02 41 02 4b 02 54 .....................&./.8.A.K.T
10e0 02 5d 02 67 02 71 02 7a 02 84 02 8e 02 98 02 a2 02 ac 02 b6 02 c1 02 cb 02 d5 02 e0 02 eb 02 f5 .].g.q.z........................
1100 03 00 03 0b 03 16 03 21 03 2d 03 38 03 43 03 4f 03 5a 03 66 03 72 03 7e 03 8a 03 96 03 a2 03 ae .......!.-.8.C.O.Z.f.r.~........
1120 03 ba 03 c7 03 d3 03 e0 03 ec 03 f9 04 06 04 13 04 20 04 2d 04 3b 04 48 04 55 04 63 04 71 04 7e ...................-.;.H.U.c.q.~
1140 04 8c 04 9a 04 a8 04 b6 04 c4 04 d3 04 e1 04 f0 04 fe 05 0d 05 1c 05 2b 05 3a 05 49 05 58 05 67 .......................+.:.I.X.g
1160 05 77 05 86 05 96 05 a6 05 b5 05 c5 05 d5 05 e5 05 f6 06 06 06 16 06 27 06 37 06 48 06 59 06 6a .w.....................'.7.H.Y.j
1180 06 7b 06 8c 06 9d 06 af 06 c0 06 d1 06 e3 06 f5 07 07 07 19 07 2b 07 3d 07 4f 07 61 07 74 07 86 .{...................+.=.O.a.t..
11a0 07 99 07 ac 07 bf 07 d2 07 e5 07 f8 08 0b 08 1f 08 32 08 46 08 5a 08 6e 08 82 08 96 08 aa 08 be .................2.F.Z.n........
11c0 08 d2 08 e7 08 fb 09 10 09 25 09 3a 09 4f 09 64 09 79 09 8f 09 a4 09 ba 09 cf 09 e5 09 fb 0a 11 .........%.:.O.d.y..............
11e0 0a 27 0a 3d 0a 54 0a 6a 0a 81 0a 98 0a ae 0a c5 0a dc 0a f3 0b 0b 0b 22 0b 39 0b 51 0b 69 0b 80 .'.=.T.j...............".9.Q.i..
1200 0b 98 0b b0 0b c8 0b e1 0b f9 0c 12 0c 2a 0c 43 0c 5c 0c 75 0c 8e 0c a7 0c c0 0c d9 0c f3 0d 0d .............*.C.\.u............
1220 0d 26 0d 40 0d 5a 0d 74 0d 8e 0d a9 0d c3 0d de 0d f8 0e 13 0e 2e 0e 49 0e 64 0e 7f 0e 9b 0e b6 .&.@.Z.t...............I.d......
1240 0e d2 0e ee 0f 09 0f 25 0f 41 0f 5e 0f 7a 0f 96 0f b3 0f cf 0f ec 10 09 10 26 10 43 10 61 10 7e .......%.A.^.z...........&.C.a.~
1260 10 9b 10 b9 10 d7 10 f5 11 13 11 31 11 4f 11 6d 11 8c 11 aa 11 c9 11 e8 12 07 12 26 12 45 12 64 ...........1.O.m...........&.E.d
1280 12 84 12 a3 12 c3 12 e3 13 03 13 23 13 43 13 63 13 83 13 a4 13 c5 13 e5 14 06 14 27 14 49 14 6a ...........#.C.c...........'.I.j
12a0 14 8b 14 ad 14 ce 14 f0 15 12 15 34 15 56 15 78 15 9b 15 bd 15 e0 16 03 16 26 16 49 16 6c 16 8f ...........4.V.x.........&.I.l..
12c0 16 b2 16 d6 16 fa 17 1d 17 41 17 65 17 89 17 ae 17 d2 17 f7 18 1b 18 40 18 65 18 8a 18 af 18 d5 .........A.e...........@.e......
12e0 18 fa 19 20 19 45 19 6b 19 91 19 b7 19 dd 1a 04 1a 2a 1a 51 1a 77 1a 9e 1a c5 1a ec 1b 14 1b 3b .....E.k.........*.Q.w.........;
1300 1b 63 1b 8a 1b b2 1b da 1c 02 1c 2a 1c 52 1c 7b 1c a3 1c cc 1c f5 1d 1e 1d 47 1d 70 1d 99 1d c3 .c.........*.R.{.........G.p....
1320 1d ec 1e 16 1e 40 1e 6a 1e 94 1e be 1e e9 1f 13 1f 3e 1f 69 1f 94 1f bf 1f ea 20 15 20 41 20 6c .....@.j.........>.i.........A.l
1340 20 98 20 c4 20 f0 21 1c 21 48 21 75 21 a1 21 ce 21 fb 22 27 22 55 22 82 22 af 22 dd 23 0a 23 38 ......!.!H!u!.!.!."'"U".".".#.#8
1360 23 66 23 94 23 c2 23 f0 24 1f 24 4d 24 7c 24 ab 24 da 25 09 25 38 25 68 25 97 25 c7 25 f7 26 27 #f#.#.#.$.$M$|$.$.%.%8%h%.%.%.&'
1380 26 57 26 87 26 b7 26 e8 27 18 27 49 27 7a 27 ab 27 dc 28 0d 28 3f 28 71 28 a2 28 d4 29 06 29 38 &W&.&.&.'.'I'z'.'.(.(?(q(.(.).)8
13a0 29 6b 29 9d 29 d0 2a 02 2a 35 2a 68 2a 9b 2a cf 2b 02 2b 36 2b 69 2b 9d 2b d1 2c 05 2c 39 2c 6e )k).).*.*5*h*.*.+.+6+i+.+.,.,9,n
13c0 2c a2 2c d7 2d 0c 2d 41 2d 76 2d ab 2d e1 2e 16 2e 4c 2e 82 2e b7 2e ee 2f 24 2f 5a 2f 91 2f c7 ,.,.-.-A-v-.-....L....../$/Z/./.
13e0 2f fe 30 35 30 6c 30 a4 30 db 31 12 31 4a 31 82 31 ba 31 f2 32 2a 32 63 32 9b 32 d4 33 0d 33 46 /.050l0.0.1.1J1.1.1.2*2c2.2.3.3F
1400 33 7f 33 b8 33 f1 34 2b 34 65 34 9e 34 d8 35 13 35 4d 35 87 35 c2 35 fd 36 37 36 72 36 ae 36 e9 3.3.3.4+4e4.4.5.5M5.5.5.676r6.6.
1420 37 24 37 60 37 9c 37 d7 38 14 38 50 38 8c 38 c8 39 05 39 42 39 7f 39 bc 39 f9 3a 36 3a 74 3a b2 7$7`7.7.8.8P8.8.9.9B9.9.9.:6:t:.
1440 3a ef 3b 2d 3b 6b 3b aa 3b e8 3c 27 3c 65 3c a4 3c e3 3d 22 3d 61 3d a1 3d e0 3e 20 3e 60 3e a0 :.;-;k;.;.<'<e<.<.="=a=.=.>.>`>.
1460 3e e0 3f 21 3f 61 3f a2 3f e2 40 23 40 64 40 a6 40 e7 41 29 41 6a 41 ac 41 ee 42 30 42 72 42 b5 >.?!?a?.?.@#@d@.@.A)AjA.A.B0BrB.
1480 42 f7 43 3a 43 7d 43 c0 44 03 44 47 44 8a 44 ce 45 12 45 55 45 9a 45 de 46 22 46 67 46 ab 46 f0 B.C:C}C.D.DGD.D.E.EUE.E.F"FgF.F.
14a0 47 35 47 7b 47 c0 48 05 48 4b 48 91 48 d7 49 1d 49 63 49 a9 49 f0 4a 37 4a 7d 4a c4 4b 0c 4b 53 G5G{G.H.HKH.H.I.IcI.I.J7J}J.K.KS
14c0 4b 9a 4b e2 4c 2a 4c 72 4c ba 4d 02 4d 4a 4d 93 4d dc 4e 25 4e 6e 4e b7 4f 00 4f 49 4f 93 4f dd K.K.L*LrL.M.MJM.M.N%NnN.O.OIO.O.
14e0 50 27 50 71 50 bb 51 06 51 50 51 9b 51 e6 52 31 52 7c 52 c7 53 13 53 5f 53 aa 53 f6 54 42 54 8f P'PqP.Q.QPQ.Q.R1R|R.S.S_S.S.TBT.
1500 54 db 55 28 55 75 55 c2 56 0f 56 5c 56 a9 56 f7 57 44 57 92 57 e0 58 2f 58 7d 58 cb 59 1a 59 69 T.U(UuU.V.V\V.V.WDW.W.X/X}X.Y.Yi
1520 59 b8 5a 07 5a 56 5a a6 5a f5 5b 45 5b 95 5b e5 5c 35 5c 86 5c d6 5d 27 5d 78 5d c9 5e 1a 5e 6c Y.Z.ZVZ.Z.[E[.[.\5\.\.]']x].^.^l
1540 5e bd 5f 0f 5f 61 5f b3 60 05 60 57 60 aa 60 fc 61 4f 61 a2 61 f5 62 49 62 9c 62 f0 63 43 63 97 ^._._a_.`.`W`.`.aOa.a.bIb.b.cCc.
1560 63 eb 64 40 64 94 64 e9 65 3d 65 92 65 e7 66 3d 66 92 66 e8 67 3d 67 93 67 e9 68 3f 68 96 68 ec c.d@d.d.e=e.e.f=f.f.g=g.g.h?h.h.
1580 69 43 69 9a 69 f1 6a 48 6a 9f 6a f7 6b 4f 6b a7 6b ff 6c 57 6c af 6d 08 6d 60 6d b9 6e 12 6e 6b iCi.i.jHj.j.kOk.k.lWl.m.m`m.n.nk
15a0 6e c4 6f 1e 6f 78 6f d1 70 2b 70 86 70 e0 71 3a 71 95 71 f0 72 4b 72 a6 73 01 73 5d 73 b8 74 14 n.o.oxo.p+p.p.q:q.q.rKr.s.s]s.t.
15c0 74 70 74 cc 75 28 75 85 75 e1 76 3e 76 9b 76 f8 77 56 77 b3 78 11 78 6e 78 cc 79 2a 79 89 79 e7 tpt.u(u.u.v>v.v.wVw.x.xnx.y*y.y.
15e0 7a 46 7a a5 7b 04 7b 63 7b c2 7c 21 7c 81 7c e1 7d 41 7d a1 7e 01 7e 62 7e c2 7f 23 7f 84 7f e5 zFz.{.{c{.|!|.|.}A}.~.~b~..#....
1600 80 47 80 a8 81 0a 81 6b 81 cd 82 30 82 92 82 f4 83 57 83 ba 84 1d 84 80 84 e3 85 47 85 ab 86 0e .G.....k...0.....W.........G....
1620 86 72 86 d7 87 3b 87 9f 88 04 88 69 88 ce 89 33 89 99 89 fe 8a 64 8a ca 8b 30 8b 96 8b fc 8c 63 .r...;.....i...3.....d...0.....c
1640 8c ca 8d 31 8d 98 8d ff 8e 66 8e ce 8f 36 8f 9e 90 06 90 6e 90 d6 91 3f 91 a8 92 11 92 7a 92 e3 ...1.....f...6.....n...?.....z..
1660 93 4d 93 b6 94 20 94 8a 94 f4 95 5f 95 c9 96 34 96 9f 97 0a 97 75 97 e0 98 4c 98 b8 99 24 99 90 .M........._...4.....u...L...$..
1680 99 fc 9a 68 9a d5 9b 42 9b af 9c 1c 9c 89 9c f7 9d 64 9d d2 9e 40 9e ae 9f 1d 9f 8b 9f fa a0 69 ...h...B.........d...@.........i
16a0 a0 d8 a1 47 a1 b6 a2 26 a2 96 a3 06 a3 76 a3 e6 a4 56 a4 c7 a5 38 a5 a9 a6 1a a6 8b a6 fd a7 6e ...G...&.....v...V...8.........n
16c0 a7 e0 a8 52 a8 c4 a9 37 a9 a9 aa 1c aa 8f ab 02 ab 75 ab e9 ac 5c ac d0 ad 44 ad b8 ae 2d ae a1 ...R...7.........u...\...D...-..
16e0 af 16 af 8b b0 00 b0 75 b0 ea b1 60 b1 d6 b2 4b b2 c2 b3 38 b3 ae b4 25 b4 9c b5 13 b5 8a b6 01 .......u...`...K...8...%........
1700 b6 79 b6 f0 b7 68 b7 e0 b8 59 b8 d1 b9 4a b9 c2 ba 3b ba b5 bb 2e bb a7 bc 21 bc 9b bd 15 bd 8f .y...h...Y...J...;.......!......
1720 be 0a be 84 be ff bf 7a bf f5 c0 70 c0 ec c1 67 c1 e3 c2 5f c2 db c3 58 c3 d4 c4 51 c4 ce c5 4b .......z...p...g..._...X...Q...K
1740 c5 c8 c6 46 c6 c3 c7 41 c7 bf c8 3d c8 bc c9 3a c9 b9 ca 38 ca b7 cb 36 cb b6 cc 35 cc b5 cd 35 ...F...A...=...:...8...6...5...5
1760 cd b5 ce 36 ce b6 cf 37 cf b8 d0 39 d0 ba d1 3c d1 be d2 3f d2 c1 d3 44 d3 c6 d4 49 d4 cb d5 4e ...6...7...9...<...?...D...I...N
1780 d5 d1 d6 55 d6 d8 d7 5c d7 e0 d8 64 d8 e8 d9 6c d9 f1 da 76 da fb db 80 dc 05 dc 8a dd 10 dd 96 ...U...\...d...l...v............
17a0 de 1c de a2 df 29 df af e0 36 e0 bd e1 44 e1 cc e2 53 e2 db e3 63 e3 eb e4 73 e4 fc e5 84 e6 0d .....)...6...D...S...c...s......
17c0 e6 96 e7 1f e7 a9 e8 32 e8 bc e9 46 e9 d0 ea 5b ea e5 eb 70 eb fb ec 86 ed 11 ed 9c ee 28 ee b4 .......2...F...[...p.........(..
17e0 ef 40 ef cc f0 58 f0 e5 f1 72 f1 ff f2 8c f3 19 f3 a7 f4 34 f4 c2 f5 50 f5 de f6 6d f6 fb f7 8a .@...X...r.........4...P...m....
1800 f8 19 f8 a8 f9 38 f9 c7 fa 57 fa e7 fb 77 fc 07 fc 98 fd 29 fd ba fe 4b fe dc ff 6d ff ff ff fe .....8...W...w.....)...K...m....
1820 00 26 46 69 6c 65 20 77 72 69 74 74 65 6e 20 62 79 20 41 64 6f 62 65 20 50 68 6f 74 6f 73 68 6f .&File.written.by.Adobe.Photosho
1840 70 a8 20 35 2e 30 ff ee 00 0e 41 64 6f 62 65 00 64 80 00 00 00 01 ff db 00 84 00 0c 08 08 08 09 p..5.0....Adobe.d...............
1860 08 0c 09 09 0c 11 0b 0a 0b 11 15 0f 0c 0c 0f 15 18 13 13 15 13 13 18 11 0c 0c 0c 0c 0c 0c 11 0c ................................
1880 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 01 0d 0b 0b 0d ................................
18a0 0e 0d 10 0e 0e 10 14 0e 0e 0e 14 14 0e 0e 0e 0e 14 11 0c 0c 0c 0c 0c 11 11 0c 0c 0c 0c 0c 0c 11 ................................
18c0 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c ff c0 00 11 ................................
18e0 08 00 f4 03 1a 03 01 22 00 02 11 01 03 11 01 ff dd 00 04 00 32 ff c4 00 c3 00 00 01 05 01 01 01 ......."............2...........
1900 00 00 00 00 00 00 00 00 00 00 04 01 02 03 05 06 00 07 08 01 00 03 01 01 01 00 00 00 00 00 00 00 ................................
1920 00 00 00 00 00 01 02 03 04 05 10 00 02 01 02 04 03 05 03 06 09 0a 03 07 03 02 07 01 02 03 00 11 ................................
1940 21 12 04 05 31 22 13 41 51 32 42 06 61 52 62 71 72 82 23 14 07 f0 81 91 a1 92 a2 33 43 15 b1 c1 !...1".AQ2B.aRbqr.#........3C...
1960 b2 c2 d2 e2 f2 53 63 24 d1 83 93 e1 73 a3 d3 34 25 16 f1 b3 17 c3 44 54 e3 64 74 84 26 94 11 00 .....Sc$....s..4%.....DT.dt.&...
1980 01 03 01 05 03 07 0a 06 03 01 01 01 01 00 00 01 00 11 02 21 f0 31 41 12 03 51 61 22 71 81 91 a1 ...................!.1A..Qa"q...
19a0 32 52 13 b1 c1 d1 42 62 72 82 a2 c2 04 f1 92 b2 d2 e2 14 e1 f2 33 23 53 73 24 ff da 00 0c 03 01 2R....Bbr............3#Ss$......
19c0 00 02 11 03 11 00 3f 00 c4 b8 b9 19 b8 81 6c 3b 69 64 2c 56 c9 81 24 5c 9c 2d 4d 8f 13 95 40 bb ......?.......l;id,V..$\.-M...@.
19e0 1b 10 70 c4 f6 d3 b5 09 22 c8 56 5e 56 46 e6 50 46 27 d9 6a ea c1 66 b9 84 aa 97 c7 94 da fc 32 ..p.....".V^VF.PF'.j..f........2
1a00 8f 73 e9 53 95 2c a4 b1 ba 9f 19 ef ee cb 51 dd af 89 20 5e c3 b8 9a 59 0c 64 0e 3c 73 22 9f eb .s.S.,........Q....^...Y.d.<s"..
1a20 5a 84 26 97 ca 02 86 0d 6c 2f ec f7 69 c5 4b 15 8c 11 22 fb dd b8 79 e9 82 44 16 60 96 17 b0 3d Z.&.....l/..i.K..."...y..D.`...=
1a40 a5 81 f1 53 43 13 73 6c ae 78 df bb dd cd 45 bd 54 d3 ad cc 32 8b 9b f0 b1 c7 e7 57 48 19 5f 31 ...SC.sl.x....E.T...2......WH._1
1a60 e6 1c 6e 2d c3 b7 fb 54 d3 21 b9 cb c8 17 b6 f8 df de ae 56 70 a0 20 c5 8e 24 f6 5a 95 ad 24 27 ..n-...T.!.........Vp....$.Z..$'
1a80 14 77 36 61 8f f3 76 0f a3 48 c0 73 0b 58 0b 5d 47 1b 7c b4 aa 4b 31 90 61 8d 8a f7 fc 54 84 ca .w6a..v..H.s.X.]G.|..K1.a....T..
1aa0 5b 97 94 f1 b9 e0 7e 1a 2d 72 14 8a 49 2a 8c b6 6b 63 7f e5 34 c9 02 96 39 b1 50 30 b6 23 0f 2f [.....~.-r..I*..kc..4...9.P0.#./
1ac0 e9 53 6e 14 31 67 38 f1 17 c7 e6 53 43 32 a8 c8 b6 63 7c c0 7f 4b f4 68 42 72 a9 27 3b 10 18 63 .Sn.1g8....SC2...c|..K.hBr.';..c
1ae0 97 de f6 63 5c 4b 06 26 e2 fe 62 07 1f 7b f5 69 a0 13 1f 7a f1 0d f8 7b b4 e2 dc c0 2d d9 47 87 ...c\K.&..b..{.i...z...{....-.G.
1b00 e5 f7 8d 0c 84 ad 98 10 4b 60 05 bd a4 76 f1 ae 00 31 17 7c bd cd d9 49 70 cf 60 2e 7b 07 60 35 ........K`...v...1.|...Ip.`.{.`5
1b20 c3 21 2e 15 6f 6e 24 9b 58 77 51 6b 65 42 90 b9 5e 52 c0 93 c1 f8 db e1 fa 54 e5 73 98 0c a0 5b .!..on$.XwQkeB..^R.......T.s...[
1b40 0c 6a 3c c9 e0 55 b8 ed 1f 27 9a 9d 96 ca a4 1b 96 bd ef ff 00 0a 2d b3 f8 a1 38 92 42 b3 2f 2d .j<..U...'............-...8.B./-
1b60 fc 3c 3f 46 d4 ad 81 00 b5 89 3c c7 b0 1e fa 6a 3b 5f 06 cf 27 6b ff 00 52 9a 72 91 65 17 b7 61 .<?F......<....j;_..'k..R.r.e..a
1b80 18 9a 75 45 54 88 c1 41 e5 cc 2f 70 7b 7f 3f 96 96 4b 36 25 73 5c 76 71 a4 42 6d cc 6c 2c 09 03 ..uET..A../p{.?..K6%s\vq.Bm.l,..
1ba0 bb e4 35 c3 33 16hl opt">.low_wm, disk_buf.win_right - sw.right); #endif if (disk_buf.win_right - sw.right > disk_buf.low_wm) break; disk_buf.state = TSTATE_BUFFERING; } /* default: */ /* Fall-through */ case TSTATE_BUFFERING: { ssize_t len, n; uint32_t tag, *tag_p; /* Limit buffering up to the stream with the least progress */ if (!stream_get_window(&sw)) { disk_buf.state = TSTATE_DATA; rb->ata_sleep(); break; } /* Wrap pointer */ if (disk_buf.tail >= disk_buf.end) disk_buf.tail = disk_buf.start; len = disk_buf.size - disk_buf.win_right + sw.left; if (len < DISK_BUF_PAGE_SIZE) { /* Free space is less than one page */ disk_buf.state = TSTATE_DATA; disk_buf.low_wm = DISK_BUF_LOW_WATERMARK; rb->ata_sleep(); break; } len = disk_buf.tail - disk_buf.start; tag = MAP_OFFSET_TO_TAG(disk_buf.win_right); tag_p = &disk_buf.cache[len >> DISK_BUF_PAGE_SHIFT]; if (*tag_p != tag) { if (disk_buf.need_seek) { rb->lseek(disk_buf.in_file, disk_buf.win_right, SEEK_SET); disk_buf.need_seek = false; } n = rb->read(disk_buf.in_file, disk_buf.tail, DISK_BUF_PAGE_SIZE); if (n <= 0) { /* Error or end of stream */ disk_buf.state = TSTATE_EOS; rb->ata_sleep(); break; } if (len < DISK_GUARDBUF_SIZE) { /* Autoguard guard-o-rama - maintain guardbuffer coherency */ rb->memcpy(disk_buf.end + len, disk_buf.tail, MIN(DISK_GUARDBUF_SIZE - len, n)); } /* Update the cache entry for this page */ *tag_p = tag; } else { /* Skipping a read */ n = MIN(DISK_BUF_PAGE_SIZE, disk_buf.filesize - disk_buf.win_right); disk_buf.need_seek = true; } disk_buf.tail += DISK_BUF_PAGE_SIZE; /* Keep left edge moving forward */ /* Advance right edge in temp variable first, then move * left edge if overflow would occur. This avoids a stream * thinking its data might be available when it actually * may not end up that way after a slide of the window. */ len = disk_buf.win_right + n; if (len - disk_buf.win_left > disk_buf.size) disk_buf.win_left += n; disk_buf.win_right = len; /* Continue buffering until filled or file end */ rb->yield(); } /* TSTATE_BUFFERING: */ case TSTATE_EOS: break; } /* end switch */ } static void disk_buf_on_reset(ssize_t pos) { int page; uint32_t tag; off_t anchor; disk_buf.state = TSTATE_INIT; disk_buf.status = STREAM_STOPPED; clear_data_notifies(); if (pos >= disk_buf.filesize) { /* Anchor on page immediately following the one containing final * data */ anchor = disk_buf.file_pages * DISK_BUF_PAGE_SIZE; disk_buf.win_left = disk_buf.filesize; } else { anchor = pos & ~DISK_BUF_PAGE_MASK; disk_buf.win_left = anchor; } /* Collect all valid data already buffered that is contiguous with the * current position - probe to left, then to right */ if (anchor > 0) { page = MAP_OFFSET_TO_PAGE(anchor); tag = MAP_OFFSET_TO_TAG(anchor); do { if (--tag, --page < 0) page = disk_buf.pgcount - 1; if (disk_buf.cache[page] != tag) break; disk_buf.win_left = tag << DISK_BUF_PAGE_SHIFT; } while (tag > 0); } if (anchor < disk_buf.filesize) { page = MAP_OFFSET_TO_PAGE(anchor); tag = MAP_OFFSET_TO_TAG(anchor); do { if (disk_buf.cache[page] != tag) break; if (++tag, ++page >= disk_buf.pgcount) page = 0; anchor += DISK_BUF_PAGE_SIZE; } while (anchor < disk_buf.filesize); } if (anchor >= disk_buf.filesize) { disk_buf.win_right = disk_buf.filesize; disk_buf.state = TSTATE_EOS; } else { disk_buf.win_right = anchor; } disk_buf.tail = disk_buf.start + MAP_OFFSET_TO_BUFFER(anchor); DEBUGF("disk buf reset\n" " dwl:%ld dwr:%ld\n", disk_buf.win_left, disk_buf.win_right); /* Next read position is at right edge */ rb->lseek(disk_buf.in_file, disk_buf.win_right, SEEK_SET); disk_buf.need_seek = false; disk_buf_reply_msg(disk_buf.win_right - disk_buf.win_left); } static void disk_buf_on_stop(void) { bool was_buffering = disk_buf.state == TSTATE_BUFFERING; disk_buf.state = TSTATE_EOS; disk_buf.status = STREAM_STOPPED; clear_data_notifies(); disk_buf_reply_msg(was_buffering); } static void disk_buf_on_play_pause(bool play, bool forcefill) { struct stream_window sw; if (disk_buf.state != TSTATE_EOS) { if (forcefill) { /* Force buffer filling to top */ disk_buf.state = TSTATE_BUFFERING; } else if (disk_buf.state != TSTATE_BUFFERING) { /* If not filling already, simply monitor */ disk_buf.state = TSTATE_DATA; } } /* else end of stream - no buffering to do */ disk_buf.pos_last = stream_get_window(&sw) ? sw.right : 0; disk_buf.time_last = stream_get_ticks(NULL); disk_buf.status = play ? STREAM_PLAYING : STREAM_PAUSED; } static int disk_buf_on_load_range(struct dbuf_range *rng) { uint32_t tag = rng->tag_start; uint32_t tag_end = rng->tag_end; int page = rng->pg_start; /* Check if a seek is required */ bool need_seek = rb->lseek(disk_buf.in_file, 0, SEEK_CUR) != (off_t)(tag << DISK_BUF_PAGE_SHIFT); do { uint32_t *tag_p = &disk_buf.cache[page]; if (*tag_p != tag) { /* Page not cached - load it */ ssize_t o, n; if (need_seek) { rb->lseek(disk_buf.in_file, tag << DISK_BUF_PAGE_SHIFT, SEEK_SET); need_seek = false; } o = page << DISK_BUF_PAGE_SHIFT; n = rb->read(disk_buf.in_file, disk_buf.start + o, DISK_BUF_PAGE_SIZE); if (n < 0) { /* Read error */ return DISK_BUF_NOTIFY_ERROR; } if (n == 0) { /* End of file */ break; } if (o < DISK_GUARDBUF_SIZE) { /* Autoguard guard-o-rama - maintain guardbuffer coherency */ rb->memcpy(disk_buf.end + o, disk_buf.start + o, MIN(DISK_GUARDBUF_SIZE - o, n)); } /* Update the cache entry */ *tag_p = tag; } else { /* Skipping a disk read - must seek on next one */ need_seek = true; } if (++page >= disk_buf.pgcount) page = 0; } while (++tag <= tag_end); return DISK_BUF_NOTIFY_OK; } static void disk_buf_thread(void) { struct queue_event ev; disk_buf.state = TSTATE_EOS; disk_buf.status = STREAM_STOPPED; while (1) { if (disk_buf.state != TSTATE_EOS) { /* Poll buffer status and messages */ rb->queue_wait_w_tmo(disk_buf.q, &ev, disk_buf.state == TSTATE_BUFFERING ? 0 : HZ/5); } else { /* Sit idle and wait for commands */ rb->queue_wait(disk_buf.q, &ev); } switch (ev.id) { case SYS_TIMEOUT: if (disk_buf.state == TSTATE_EOS) break; disk_buf_buffer(); /* Check for any due notifications if any are pending */ if (nf_list.next != NULL) check_data_notifies(); /* Still more data left? */ if (disk_buf.state != TSTATE_EOS) continue; /* Nope - end of stream */ break; case DISK_BUF_CACHE_RANGE: disk_buf_reply_msg(disk_buf_on_load_range( (struct dbuf_range *)ev.data)); break; case STREAM_RESET: disk_buf_on_reset(ev.data); break; case STREAM_STOP: disk_buf_on_stop(); break; case STREAM_PAUSE: case STREAM_PLAY: disk_buf_on_play_pause(ev.id == STREAM_PLAY, ev.data != 0); disk_buf_reply_msg(1); break; case STREAM_QUIT: disk_buf.state = TSTATE_EOS; return; case DISK_BUF_DATA_NOTIFY: disk_buf_reply_msg(disk_buf_on_data_notify( (struct stream_hdr *)ev.data)); break; case DISK_BUF_CLEAR_DATA_NOTIFY: disk_buf_on_clear_data_notify((struct stream_hdr *)ev.data); disk_buf_reply_msg(1); break; } } } /* Caches some data from the current file */ static int disk_buf_probe(off_t start, size_t length, void **p, size_t *outlen) { off_t end; uint32_t tag, tag_end; int page; /* Can't read past end of file */ if (length > (size_t)(disk_buf.filesize - disk_buf.offset)) { length = disk_buf.filesize - disk_buf.offset; } /* Can't cache more than the whole buffer size */ if (length > (size_t)disk_buf.size) { length = disk_buf.size; } /* Zero-length probes permitted */ end = start + length; /* Prepare the range probe */ tag = MAP_OFFSET_TO_TAG(start); tag_end = MAP_OFFSET_TO_TAG(end); page = MAP_OFFSET_TO_PAGE(start); /* If the end is on a page boundary, check one less or an extra * one will be probed */ if (tag_end > tag && (end & DISK_BUF_PAGE_MASK) == 0) { tag_end--; } if (p != NULL) { *p = disk_buf.start + (page << DISK_BUF_PAGE_SHIFT) + (start & DISK_BUF_PAGE_MASK); } if (outlen != NULL) { *outlen = length; } /* Obtain initial load point. If all data was cached, no message is sent * otherwise begin on the first page that is not cached. Since we have to * send the message anyway, the buffering thread will determine what else * requires loading on its end in order to cache the specified range. */ do { if (disk_buf.cache[page] != tag) { static struct dbuf_range rng IBSS_ATTR; DEBUGF("disk_buf: cache miss\n"); rng.tag_start = tag; rng.tag_end = tag_end; rng.pg_start = page; return rb->queue_send(disk_buf.q, DISK_BUF_CACHE_RANGE, (intptr_t)&rng); } if (++page >= disk_buf.pgcount) page = 0; } while (++tag <= tag_end); return DISK_BUF_NOTIFY_OK; } /* Attempt to get a pointer to size bytes on the buffer. Returns real amount of * data available as well as the size of non-wrapped data after *p. */ ssize_t _disk_buf_getbuffer(size_t size, void **pp, void **pwrap, size_t *sizewrap) { disk_buf_lock(); if (disk_buf_probe(disk_buf.offset, size, pp, &size) == DISK_BUF_NOTIFY_OK) { if (pwrap && sizewrap) { uint8_t *p = (uint8_t *)*pp; if (p + size > disk_buf.end + DISK_GUARDBUF_SIZE) { /* Return pointer to wraparound and the size of same */ size_t nowrap = (disk_buf.end + DISK_GUARDBUF_SIZE) - p; *pwrap = disk_buf.start + DISK_GUARDBUF_SIZE; *sizewrap = size - nowrap; } else { *pwrap = NULL; *sizewrap = 0; } } } else { size = -1; } disk_buf_unlock(); return size; } /* Read size bytes of data into a buffer - advances the buffer pointer * and returns the real size read. */ ssize_t disk_buf_read(void *buffer, size_t size) { uint8_t *p; disk_buf_lock(); if (disk_buf_probe(disk_buf.offset, size, PUN_PTR(void **, &p), &size) == DISK_BUF_NOTIFY_OK) { if (p + size > disk_buf.end + DISK_GUARDBUF_SIZE) { /* Read wraps */ size_t nowrap = (disk_buf.end + DISK_GUARDBUF_SIZE) - p; rb->memcpy(buffer, p, nowrap); rb->memcpy(buffer + nowrap, disk_buf.start + DISK_GUARDBUF_SIZE, size - nowrap); } else { /* Read wasn't wrapped or guardbuffer holds it */ rb->memcpy(buffer, p, size); } disk_buf.offset += size; } else { size = -1; } disk_buf_unlock(); return size; } off_t disk_buf_lseek(off_t offset, int whence) { disk_buf_lock(); /* The offset returned is the result of the current thread's action and * may be invalidated so a local result is returned and not the value * of disk_buf.offset directly */ switch (whence) { case SEEK_SET: /* offset is just the offset */ break; case SEEK_CUR: offset += disk_buf.offset; break; case SEEK_END: offset = disk_buf.filesize + offset; break; default: disk_buf_unlock(); return -2; /* Invalid request */ } if (offset < 0 || offset > disk_buf.filesize) { offset = -3; } else { disk_buf.offset = offset; } disk_buf_unlock(); return offset; } /* Prepare the buffer to enter the streaming state. Evaluates the available * streaming window. */ ssize_t disk_buf_prepare_streaming(off_t pos, size_t len) { disk_buf_lock(); if (pos < 0) pos = 0; else if (pos > disk_buf.filesize) pos = disk_buf.filesize; DEBUGF("prepare streaming:\n pos:%ld len:%lu\n", pos, len); pos = disk_buf_lseek(pos, SEEK_SET); disk_buf_probe(pos, len, NULL, &len); DEBUGF(" probe done: pos:%ld len:%lu\n", pos, len); len = disk_buf_send_msg(STREAM_RESET, pos); disk_buf_unlock(); return len; } /* Set the streaming window to an arbitrary position within the file. Makes no * probes to validate data. Use after calling another function to cause data * to be cached and correct values are known. */ ssize_t disk_buf_set_streaming_window(off_t left, off_t right) { ssize_t len; disk_buf_lock(); if (left < 0) left = 0; else if (left > disk_buf.filesize) left = disk_buf.filesize; if (left > right) right = left; if (right > disk_buf.filesize) right = disk_buf.filesize; disk_buf.win_left = left; disk_buf.win_right = right; disk_buf.tail = disk_buf.start + ((right + DISK_BUF_PAGE_SIZE-1) & ~DISK_BUF_PAGE_MASK) % disk_buf.size; len = disk_buf.win_right - disk_buf.win_left; disk_buf_unlock(); return len; } void * disk_buf_offset2ptr(off_t offset) { if (offset < 0) offset = 0; else if (offset > disk_buf.filesize) offset = disk_buf.filesize; return disk_buf.start + (offset % disk_buf.size); } void disk_buf_close(void) { disk_buf_lock(); if (disk_buf.in_file >= 0) { rb->close(disk_buf.in_file); disk_buf.in_file = -1; /* Invalidate entire cache */ rb->memset(disk_buf.cache, 0xff, disk_buf.pgcount*sizeof (*disk_buf.cache)); disk_buf.file_pages = 0; disk_buf.filesize = 0; disk_buf.offset = 0; } disk_buf_unlock(); } int disk_buf_open(const char *filename) { int fd; disk_buf_lock(); disk_buf_close(); fd = rb->open(filename, O_RDONLY); if (fd >= 0) { ssize_t filesize = rb->filesize(fd); if (filesize <= 0) { rb->close(disk_buf.in_file); } else { disk_buf.filesize = filesize; /* Number of file pages rounded up toward +inf */ disk_buf.file_pages = ((size_t)filesize + DISK_BUF_PAGE_SIZE-1) / DISK_BUF_PAGE_SIZE; disk_buf.in_file = fd; } } disk_buf_unlock(); return fd; } intptr_t disk_buf_send_msg(long id, intptr_t data) { return rb->queue_send(disk_buf.q, id, data); } void disk_buf_post_msg(long id, intptr_t data) { rb->queue_post(disk_buf.q, id, data); } void disk_buf_reply_msg(intptr_t retval) { rb->queue_reply(disk_buf.q, retval); } bool disk_buf_init(void) { disk_buf.thread = NULL; list_initialize(&nf_list); rb->mutex_init(&disk_buf_mtx); disk_buf.q = &disk_buf_queue; rb->queue_init(disk_buf.q, false); disk_buf.state = TSTATE_EOS; disk_buf.status = STREAM_STOPPED; disk_buf.in_file = -1; disk_buf.filesize = 0; disk_buf.win_left = 0; disk_buf.win_right = 0; disk_buf.time_last = 0; disk_buf.pos_last = 0; disk_buf.low_wm = DISK_BUF_LOW_WATERMARK; disk_buf.start = mpeg_malloc_all(&disk_buf.size, MPEG_ALLOC_DISKBUF); if (disk_buf.start == NULL) return false; #ifdef PROC_NEEDS_CACHEALIGN disk_buf.size = CACHEALIGN_BUFFER(&disk_buf.start, disk_buf.size); disk_buf.start = UNCACHED_ADDR(disk_buf.start); #endif disk_buf.size -= DISK_GUARDBUF_SIZE; disk_buf.pgcount = disk_buf.size / DISK_BUF_PAGE_SIZE; /* Fit it as tightly as possible */ while (disk_buf.pgcount*(sizeof (*disk_buf.cache) + DISK_BUF_PAGE_SIZE) > (size_t)disk_buf.size) { disk_buf.pgcount--; } disk_buf.cache = (typeof (disk_buf.cache))disk_buf.start; disk_buf.start += sizeof (*disk_buf.cache)*disk_buf.pgcount; disk_buf.size = disk_buf.pgcount*DISK_BUF_PAGE_SIZE; disk_buf.end = disk_buf.start + disk_buf.size; disk_buf.tail = disk_buf.start; DEBUGF("disk_buf info:\n" " page count: %d\n" " size: %ld\n", disk_buf.pgcount, disk_buf.size); rb->memset(disk_buf.cache, 0xff, disk_buf.pgcount*sizeof (*disk_buf.cache)); disk_buf.thread = rb->create_thread( disk_buf_thread, disk_buf_stack, sizeof(disk_buf_stack), 0, "mpgbuffer" IF_PRIO(, PRIORITY_BUFFERING) IF_COP(, CPU)); rb->queue_enable_queue_send(disk_buf.q, &disk_buf_queue_send, disk_buf.thread); if (disk_buf.thread == NULL) return false; /* Wait for thread to initialize */ disk_buf_send_msg(STREAM_NULL, 0); return true; } void disk_buf_exit(void) { if (disk_buf.thread != NULL) { rb->queue_post(disk_buf.q, STREAM_QUIT, 0); rb->thread_wait(disk_buf.thread); disk_buf.thread = NULL; } }