fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / library / md5.t
blob752e48193e805d0e3270b7d994db616b93194278
1 #!./parrot
2 # Copyright (C) 2001-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/library/md5.t - test MD5 library
9 =head1 SYNOPSIS
11         % prove t/library/md5.t
13 =head1 DESCRIPTION
15 Tests the MD5 library. You can create the test results using
16 the command-line md5sum like this:
18  $ echo -n Hello World! | md5sum
19  a0f32c7d31302c1427285b1a0fcbb015  -
21 As well as testing the MD5 library itself, it is useful for spotting
22 regressisions in the parrot VM, JIT and GC
24 =cut
26 ##############################
27 # Stress parrot using MD5 library
29 .sub main :main
30     load_bytecode "Digest/MD5.pbc"
32     .include 'test_more.pir'
33     plan(517)
35     test_miscellaneous_words()
36     test_funny_chars()
37     test_string_lengths()
38     test_really_long_string()
39     test_recursive_md5_1()
40     test_recursive_md5_2()
41 .end
43 .sub test_miscellaneous_words
44     $P0 = _md5sum ("Hello")
45     $S0 = _md5_hex($P0)
46     is($S0, '8b1a9953c4611296a827abf8c47804d7', 'md5 Hello')
48     $P0 = _md5sum ("Goodbye")
49     $S0 = _md5_hex($P0)
50     is($S0, '6fc422233a40a75a1f028e11c3cd1140', 'md5 Goodbye')
52     $P0 = _md5sum ("Parrot")
53     $S0 = _md5_hex($P0)
54     is($S0, 'e7cb1e977e896954fec46d2ea7832072', 'md5 Parrot')
56     $P0 = _md5sum ("Hello World!")
57     $S0 = _md5_hex($P0)
58     is($S0, 'ed076287532e86365e841e92bfc50d8c', 'md5 Hello World')
59 .end
61 .sub test_funny_chars
62     $P0 = _md5sum ("\n\n\n\n\t")
63     $S0 = _md5_hex($P0)
64     is($S0, 'b66434493525523b4393ce0d1f2425d7', 'funny chars')
65 .end
67 .sub test_string_lengths
68     $I0 = 0
70     $S10 = <<'OUTPUT'
71 cfcd208495d565ef66e7dff9f98764da
72 96a3be3cf272e017046d1b2674a52bd3
73 d2490f048dc3b77a457e3e450ab4eb38
74 eb62f6b9306db575c2d596b1279627a4
75 4100c4d44da9177247e44a5fc1546778
76 d6a9a933c8aafc51e55ac0662b6e4d4a
77 124bd1296bec0d9d93c7b52a71ad8d5b
78 2e9ec317e197819358fbc43afca7d837
79 22975d8a5ed1b91445f6c55ac121505b
80 781e5e245d69b566979b86e28d23f2c7
81 ebe596017db2f8c69136e5d6e594d365
82 9a09ac0f4c8c2f92d77f2d77612b6f78
83 28e23e897f070c849a86cd60b9a852c1
84 ae248bb2a77e470cb92d8e69e5f5affc
85 78f40ab0050544f9de011de7a4c6ecdb
86 d927ad81199aa7dcadfdb4e47b6dc694
87 6def23346f64e0163d9924f2f40c9cf2
88 d02ebde979264c79e141559fc9f6b65c
89 b61fd0bcc895bb16c784558934586d97
90 be497c2168e374f414a351c49379c01a
91 eaf9acee4b07a9986ce13edadd72ffcc
92 8b50575826e6ab4102f1335396b29bba
93 dbdf3116a6627638bff94877f31e56af
94 607e25deb0f2d06cbbb4d774d60e9aeb
95 845379ce1cb6ab954f40261250a7d9c8
96 c548d9f9273d070ada6070611b609e29
97 d0e16d114b9299f418e781feb7e189ca
98 7ab3976c761a67b2a1e57bf9eade8576
99 fecfbf31a749c7403612c47c3633ba6e
100 4f7223ebadee9fb57b6796570d60638f
101 274f173711cb1d36f5ce2d4d48ac2350
102 298bf0197a05149e366b6bb61835a1c1
103 cf09b5cb769d068e70d248ac7e013ac9
104 c448e84be268303d169b20280f82bc8b
105 541a6eada38facbba17bff5ed44512e5
106 358ab3835dd5371cc890ebadba6c6d6d
107 3887ce467d1e74ad307acb8896bffeea
108 f8ea4cba02b3cb898dcb8cef543845b7
109 8fbaa7868a809afb8a10f910dc6ce372
110 9f0ae0380ed27dbf6b852843d2eece1f
111 258b326512843f996b693fe0fc3ab34a
112 486011c2adb42c5dba82bec5114dc1fc
113 4870e0d70c0ef3f920286ccbd316a23d
114 e8d950dec279b91a52d06283592ce27c
115 604a4d755ea290e04ed2999243bf5b4a
116 985170ea843a93803a560dc7f445e938
117 a99cecea30006f01a7ca56b4845cfb7a
118 a73df556df9e6ceca5d2d3903d639813
119 fa7499e1c713703d7b28f99cd7f5c654
120 baed005300234f3d1503c50a48ce8e6f
121 8c3ef34e616209cb0efe0f6b735c110d
122 240d6ec1fe28630a9cc9a4978e5524f1
123 a3360e2d7e28ed4572c3dc16ef705372
124 3dff83c8fadd26370d5b098409644457
125 6e7a4fc92eb1c3f6e652425bcc8d44b5
126 8af270b2847610e742b0791b53648c09
127 c620bace4cde41bc45a14cfa62ee3487
128 66f6bb54a54f967caa2607ad2990ecb4
129 ad76b175d22a98a4e3bc2ad72affc53e
130 1ced811af47ead374872fcca9d73dd71
131 057a79e90fca0d805e0938d8e38a638b
132 10f0b5ba92a04c7502dec778490a9acb
133 c5e256437e758092dbfe06283e489019
134 7f7bfd348709deeaace19e3f535f8c54
135 beb9f48bc802ca5ca043bcc15e219a5a
136 d6329b22b4b67da8120d0074eb28cb31
137 061accc64d9dbd228685091cf76d6f58
138 7ad76683ed7802615406f4efaa1b8d8b
139 b5c71592955c35707a4ba4edf8dd66de
140 109eb12c10c45d94ddac8eca7b818bed
141 8ca2dc1109ec719046f23d92efe819f7
142 4e4c090b615aa77e69eacc7b77b5cf95
143 841dba25c1ecaffe412e2e748330a8ae
144 deb3cb2636d15d6aeccc1951b9d5f183
145 a6407577c4b42b2e738ad6d56ed1f486
146 e441c22735877b6c3c9357ba1820d708
147 778a111027ce535d272143817e6e9d8d
148 bcb0b673b05701772b02d6b747622c62
149 471814de0f707d1f04ba37a7d31aba36
150 0faef1f4cb01d560d59016a2d5e91da6
151 6e0c4c53a4178accb1c9b98556b8b945
152 240b6fbc9d3be13b28e949fc5e94a92c
153 004ef599b79db30564f653354fa2165a
154 92d36974a72cdde56527eb7e26603075
155 42b33f3421b374998baab3d0ce9915c7
156 6cda32041571c398fad2b5979321949b
157 dcf3495e733de25b7a0465159c48b098
158 0c6b4c69e1380ecc74124be9a080a2bd
159 321c5993da3dee64c550e87b81f9af73
160 3b9739dbce23373276d22e2709e82f6e
161 db52e041b6faca67496bae11d5177ce9
162 6e9f209cf47edc69a21b6cc1f7f616f9
163 95e99b94cdcec3b6f4a2820fb87cd9ed
164 08eed5e9006f867fb5dedfc42b082df8
165 7418f52788313c121eef974cd283e8a5
166 b2b23cfd66f6bdd522c47315752d7731
167 7c962704271a7a905cbec236de469626
168 84e15104f912a6cb2768ebdde00e5b33
169 dde798bd1d5336a07337aec45cb02576
170 7a08b07e84641703e5f2c836aa59a170
171 525cce3d8c3eaf36a756a91fcb996d59
172 6fd9044eb098d000b86615ff9df50e11
173 364603b2cf1662d139496c12f36f490a
174 375e3afc44bf428c445bff4363f0dbe5
175 477ac3a1c002d85755b40451c8db87d2
176 3c6f3dfa17a3022cf18db24e42f54b96
177 d2cfbebc441bea6a9c9c4a2faba865e2
178 01fb84949f9192411682b39e2642b662
179 2468a5c59cccb56bd51ed5ee766b2d2b
180 09e32555adc12a6f2c8fed9a459935af
181 6c27622d1d5365e4abfd02f2eccfd8f9
182 OUTPUT
183     $P0 = split "\n", $S10
184   testing_loop:
185     $S1 = $I0
186     $S0 .= $S1
187     $S5 = shift $P0
188     $P1 = _md5sum ($S0)
189     $S6 = _md5_hex($P1)
190     inc $I0
191     mod $I0, $I0, 10
192     $I1 = length $S0
193     $S12 = $I1
194     $S11 = 'string length '
195     $S11 .= $S12
196     is($S6, $S5, $S11)
197     if $I1 <= 110 goto testing_loop
198 .end
200 .sub test_really_long_string
201     $S0 = "Hello Parrot World! "
202     repeat $S1, $S0, 50000
203     $P0 = _md5sum ($S1)
204     $S2 = _md5_hex($P0)
205     is($S2, '840e4dec51660b1f52473e0b0b9545f5', 'really long string')
206 .end
208 =begin bash
210 test output created with:
212 #!/bin/bash
213 str=$1
214 echo "$str"
215 for i in $(seq 1 200); do
216     str=$(echo -n "$str" | md5sum | cut -d ' ' -f 1)
217     echo "$str"
218 done
220 =end bash
222 =cut
224 .sub test_recursive_md5_1
225     .local string output
226     $S0 = "Hello World!"
227     $I0 = 0
229     output = <<'OUTPUT'
230 ed076287532e86365e841e92bfc50d8c
231 153163e20c7dd03b131fe2bf21927e1e
232 95b9b73c7a8abe6d5bf5ad8067a53cee
233 d7b6778d149c5a085f2675b959503c2b
234 4a3dd453c637dabbdce7433653e6d7cb
235 88648d19a031133d87b093997813a740
236 a07578c3f0bebca3f2cca2b1d0b8f9fe
237 6134e6ee02e25ea0faf7a348ef599cdd
238 188ee3fb92bb86c91a08198100fa167a
239 dc06bc1fb41cae72a4b60e8480817085
240 c492befd605b7b05007d91db742600d3
241 2a07fa4fc4318d11908102c355ca81a8
242 6270c9b254b7c7c245100afb0778189f
243 31ca2cf9439c7f4f1da11a16a7bed6de
244 19626ef62b26446d35860ff932863894
245 3fe6e0f6adff71bc0a1a5b272527408d
246 3ef498d8ff923f1f91c0be6606da6dc1
247 34c5a11fc7d4a5ba70472f98e43c2f7b
248 7f0e1ffc3c4e3aa21bce804fd15cca1c
249 da76374e9095cdeb3bc95d3f9444f47e
250 f0dee836be39db7440b3c6ca4671afba
251 645a3f6129b1db41e986d94c7c6df03b
252 09300ce54fbae580ca496975bc3746af
253 65721cae6209d5ce50b17b06a9d693c8
254 b0038c2e9e9e01bf6883aaffc7726dec
255 18e9b196e808d2de844269b0608050d6
256 e563825454806b0ef84cf92fc9f54bfe
257 312f040493d0f7e4cc300bf70522e7bb
258 f4b2951c999e85a0db42799cfac9cca9
259 5dc63983b315585c8b68614c1837f358
260 ab577e59aa6a91d46f3f0bbe4f8f52a0
261 479b376dc5bc108efddb9139e3f48683
262 5fac17e1a48c1e1b3b8a696cc9f8992d
263 bef9fd06a052823abcfed2851cc2c505
264 09682b791db555c9867dc750eee0dd92
265 d9cb3599d16c4d197af9d1d54ad8fd0b
266 d9f1f852cf0dc85f3f676a492bfa6165
267 366d491706ad8ae5e726cedd3b08da77
268 a2849d41666406842463e406210df7da
269 63dc097352e3e637cc06b5682f781bd4
270 bc8ac884c97864f3d00d51240eeb06e6
271 7bc0f81018700689eecd45a4c70d4fae
272 33a71e77fd62d81d0cf6bda304606919
273 f32bd05330a93b0f95d88484908af7cd
274 8c4d905dd7fc8e965713f04841654cf4
275 33d7e3b19719f6b7386dae5bc2bfe881
276 069e844b1ef6230502f21ab8305fce67
277 801a4cfd4974f7267a8717faa7ec1dea
278 69d1a0fc4115f3f2e1e7db00c9d9cc10
279 79d62c23d99e920058aacfb3a71727c9
280 4386f8f55928bf946715d475caee6329
281 c2c9922ca2dae04985aa6488b87a7920
282 c0362fd0f999083411a34554901f8bb2
283 b6006163f03a93160879dcf4c930f769
284 6bc51c74e5a48f55dfdd6ec832c729c4
285 3f358f1893cfabdcd2020d8a1a2228d9
286 0d58c1a1dc62d768bfce37629c0f13c1
287 de66ee9f9d5373aa9ad259c8b3252909
288 c4e752f1a4c371ed24c4432941a5c2ea
289 778932a44e59ab759d8c5dc58f708242
290 54ce309ae9d4180a5a0adfee5dbc9c09
291 155a9f73f32ee6daf9c63e0051fdde6b
292 4025eb29c97dff3a44272b80b59963f4
293 7422ed91f76bf90e563c2002975632da
294 2a852d35bd49b7615321116725a32d0a
295 4b51d3d0f011b47d3f19e46dd1b525c6
296 62b3f84c8ad8762800efd35e67b02870
297 87483a3a842997956624542314accd89
298 d16383146ca5f31899d0d67f70e0395f
299 8beb021063ab267d37299fda68493ce7
300 7c2861c7d3318a11232ce920b14b13ad
301 1bf15129d5dfdf031921884175560813
302 b122b76f62757700c94f364cffef4cb5
303 89654021f6cec4d23a4c0f432d43eace
304 3f8021e428a41481b6454621eefec06d
305 44d7f6a4a01e1f06ae99751f9f82724f
306 07e7463bc04afb99ca64f65065954c90
307 c4c917cde83ed67e046cc3d88dbd662d
308 50dd647fe2f8daac51b1e9fd82cd0c59
309 6996c802026e01b31c2c5335ecbd189c
310 facb55614a088253f7f523d6d866e0f3
311 2be76a537c144f68b373a3994cd54c00
312 1a1a5b5acf50e98b1b9e8b918842b06e
313 0db736e817c45e4b653ed7f0c4e11962
314 5bf01fad828b838eeb1ff1274d876ccf
315 0fc2f4335bb190fa426abdb25de3da63
316 76b18e07cfdc6b293d91bdddbb61ec44
317 d0e138c4c80fa3915ba39b65512b799e
318 2144a5cb38bfc3691e3f8320e206aa5a
319 d11ec2aa70f7e58fc8f870d971352c79
320 17997c047bf5a2f401df7b908e47d2d1
321 85127ad7f64592b3e26cf0a1cdb2d890
322 5caaff4022e4f11f7f3e90d9974e2532
323 ab7193c2ed710ac8a0751b440e6448bc
324 6f2f2a3608de8fb79dc3309bd175e8e4
325 5a61579726264cc970497364cbbe191f
326 013c4f7a6b922542ea633f095b62fa6d
327 ce78937e0701406f642ebc3b9a29736b
328 e982e60d843c27b4858de896fcd075f9
329 8010f2cc72ba2554831348eebf6f8063
330 898ca64355754b2739b197a12f81e72b
331 b10bd7a27a36d90db7404079249a9f2a
332 cc673e2f9e08dd4a5da13931fb12f256
333 5a330e820ae46926566728f4abf6b87c
334 cbd0dd745c96ded00ff4627ea09bf97e
335 13a6d457cb091d0d9fe6deb410bc5d61
336 d7fa1c426850c9fee843f26b8c77c2d3
337 a604741ba924f4eafba8bd901b211f71
338 9299b0abdee549d55201efb3cc2fedde
339 f7a77b983776ec5eb3623476abffd222
340 9b276abb98aab4679006837318f9c64f
341 9c26edea8dc26d13e08a2cb4a4e4bd0f
342 56509b48041cf2de19f95688c53411af
343 bdf23fd1e120588501b012e7f58f2f4e
344 c588a957d5c8aded27a80e61c10e6723
345 88cd2ece9f5a8f40e20db49e2ee665cc
346 81088b08083648a6389a885791999f80
347 b45f5958a624def39c6bb1ac08c65605
348 01bd47325d69032df808d77304ddb250
349 3de24ffe65f69f32e2ffad7660f9da80
350 894a41dc061257bff5d1dc01f0c53288
351 52051634a70acb7576124d7a58a95109
352 75972f135bc8352457e20a3a90a6a589
353 c4a3008d30a7301cac9e9c62768fbed6
354 a965aa510d98ccd2727739e7e0ad9baf
355 fe789ea51ba9c2dfd89201957dbed4e8
356 ac65a4908d1453f02099da5fe395b874
357 dd97042c49e4d5e02543e6fec306dc1d
358 fdf60f998f585cc0077642fce8d968d8
359 686bc6f7a5ae6c0b24244514ba31bcb3
360 82e8a11f78293cdef3aed1b409cc4341
361 1cbb3fc50103062e3af258ca7fa76fef
362 e79344cd8e4889cd96aae999ac7f1d92
363 203e9fba5f417f6818ac5997dea57c36
364 62d2dfb64abd0e990edacb7dd380789c
365 b588fddddc8bdeacca65a3898ccc31c6
366 0de848c93df70d3f8b4536daedb965e7
367 cb672ab063522a764f14e9146d8b50f6
368 c5e2f087d25d0a32f14e9e30cd42b3e5
369 e81920116df890f329496f3374b2916a
370 2a03fcb63f2fdac03e4efa49607d1204
371 12fcc5b48205df7f6765200f134bed6b
372 54be0d792fb11d71511a39b0981b8855
373 f84aa178ad34aa06d9a1eb1560a51473
374 7e754096ec34c6255fbadd10cc99271c
375 d37e8a1c3ba5127e2f671f2af1b1c147
376 6648d37231e0384b9e7673d05a71c805
377 2d33995591700d28dab2a981d9aa1c1b
378 938e810ff307c91e9c71db1951d626e2
379 7197ab005cbf62eb87534e9565046c7e
380 76c74a72f5c4423cdfe712b1e094c705
381 6970e6209350fd4872f61232de6de4c4
382 ff1e26affac06a63377cb299b139f051
383 282c7b64cb49aa8d6d9b3902e858ee01
384 364ded1ae5536a7de60c388631c62a7a
385 33772fd38d48ab5e2af9da19ac0a57a2
386 c3cd53f270b6f2c90cedef280393316a
387 7fa3df3e898e84003370b7508fb1197f
388 d482c8e2dbada445bc42b5acc7c19fb7
389 2bb874c958b5920c5a30e64eb1f77977
390 1e24628bf4267a0d4d70e90bc9cb8301
391 c6ad085d3a908edfef296eff1d76d0f4
392 a87ff6b28555da307ae1457566c7d54d
393 2606de1537cc67239e7ea6e9c4f215ae
394 1e78c6c735f345c69520f0ff2e041f2c
395 07367b754860d1c176fd7b5cb7a530e0
396 528567c7710daf2ff6129e64a8ebdb08
397 a54f097f1361b635bde2320f39109fd9
398 0944ed06737d5c875f60c54c4b232daa
399 1878f76bfda90a8865095ea555b8dd45
400 501e41071b2d775d2f5937e7eb6de26a
401 0eb6cc9233a88feacb7ab28d21e87ae8
402 7a39b11879c2cc4579e2a2c4ea67d122
403 97f170e24df3a9fdd177843c3a02776c
404 201e15125105249507addd3090967894
405 c02dd79a529a7c6a1296309a47a2877a
406 adc96507fd2c76221222b33b73dd9292
407 46ffcbdae112435edb1e0b6f66859cbb
408 696b64eca6825fd628f10a1263077bff
409 813ef0bc04145562fb3d03a54b2f4b8e
410 15605a3407c1551375476401e39e5342
411 c8346e15ac6c745ca168f9223eff2439
412 72209f28cedf359957667eb913f5c57d
413 9d594e36709e5e9afca1eea8fbc26d50
414 7e63eb5c61256ae7728685b7af74d9bc
415 c683e12918f470c5778a69af6e9e55d6
416 768cc7983d4944f46aa3541c7353c4d8
417 a8c93832333f39e34b2e337e5e617953
418 ca8258d669b07b992f04ac1d2e58db02
419 c4a7d67e32d1a06621e19e721cfe972c
420 54bacec5eae8c4a2bc1093794bce5e2c
421 8a6d7f412dc7e53e3f0b025b7f073493
422 8a9c2d66d8bb5e267fe5ad1e3ff83efa
423 7be4b86f931da25073f5409b9885c376
424 efe082b4afffc6e5ef3fdbfabcbe817f
425 09c7aa151ecbb67865ecedbaf5c3f4ad
426 d3ea9bd2f33e17e699517912322fe972
427 b63d8a186e272754b70953ddd441e9fd
428 84a112f819bf780dd268c68f21238374
429 eab26f6455a08779bcb43bc48c02c717
430 OUTPUT
432     $P1 = split "\n", output
433   loop:
434     if $I0 >= 200 goto end
435     $P0 = _md5sum($S0)
436     $S0 = _md5_hex($P0)
437     $S1 = shift $P1
438     is($S0, $S1, 'recursive md5 (1)')
439     inc $I0
440     branch loop
441   end:
443 .end
445 =begin bash
447 test output created with:
449 #!/bin/bash
450 str=$1
451 echo "$str"
452 for i in $(seq 1 200); do
453     str=$(echo -n "$str$str" | md5sum | cut -d ' ' -f 1)
454     echo "$str"
455 done
457 =end bash
459 =cut
461 .sub test_recursive_md5_2
462     .local string output
463     .local pmc output_array
464     $S0 = "Hello World!"
465     $I0 = 0
466     output = <<'OUTPUT'
467 ee41c968530f7715ab70805b341c3956
468 9548194ce84b2f7953386080da112c3a
469 9fb892cc0766429a1d8b0f752636c0fa
470 2fe752de4df1987b5682806c3ef37c5a
471 3030c16c1bac91e414f49394dbdd4f55
472 49d17233607383b6a7de5596cbfa40eb
473 1ef11b372f3d918c35901be67376207a
474 37369890630daa6fa20bab9293b3349e
475 1fe9a9f66fb556cccab339e684626a84
476 5039c55c89342feda99186afbe03c33d
477 52d20c3601d13cbb5caa9d26ab37723e
478 daaf532ebbbb00724a6a79be0cab1bfe
479 8c1e07121bd5e95013952fb5f55dd060
480 fc4bc5ee4d3347de8b517c27c0a8eed1
481 94d9d734e97421f64a71ec8d45781cdd
482 4b6ecae770f66dbb02ff3a59d6eedeb3
483 4ed31aa15d35ef52778508dc4cf7f84f
484 e14fc1e6320fa34660b27ef86b15caac
485 b79c5e129315c530b9b80a7c5a130c1b
486 9c4db0bc1cba0bc7a31e59db901d1362
487 75f5fcb94015872ca0c23bd5ed21c224
488 d3cdb5b27a0185365b42fdebfc5a1e33
489 98508cba7dfd5deeec4b8561c6bba42f
490 c0b8211ff3cd39cbbd6436e02cfedbda
491 783ed8f7d844efbc1c579b4b209360d9
492 a2b5528f3e2c506632601ea51df56d4f
493 2b46b6024f925419d79e6f86b33a3cf5
494 0276b6ca7eef6549d42b476ac4d2b049
495 e62ea2d5a6a7df48fe217909dc14a760
496 b84fe25ba8510f8a20da5e073992f6f9
497 0fb9bfff70bdd01b6e66f5864fb3c83f
498 3b10269c809a34d5239a0387422f66bc
499 3e0510deff0ef5e5b0dcbc0897d0622d
500 4d7fb6d3a50095b746f293ebe55a0bcd
501 cefd97e21fa803e960747a77e60fe39c
502 d7aa1e54cd8f7305391a236d1e56db42
503 3bbad66887cab24bb7e983bba3eac325
504 046b89e3a25c8372973113ff82b21abe
505 e4c174ab190ae7d59a2c9efa358ee60e
506 965544e7ee1040a234423c7708c45fd4
507 d92ed17d3817e51dac84e3bbd654f61c
508 34d00ed230a1fe8ba612f134326f0032
509 b8fe0ca50d70e605a0a65757affddf27
510 8cb68a7e99ac140f570188e92d1d2e45
511 6c45c11f3288af98126032b83454bdd7
512 82a5e65630a6df3d3272c4d706642804
513 17f51bff9ae985dee9547bbecef516a9
514 ace5283938a1003cbe1a25e32cb10057
515 364c61ec3fa510a2fdea988a04700ee2
516 de47aab46499b65cb73137c5ef161b28
517 877d37e40be25eff0e5a34f8701e9ff0
518 b2ba5696640f6c9d49ace67dbf178003
519 c38f63c86d919b38ceb8eb3bdae39f35
520 2ec338a2045b0d7a90ad279afd45eaee
521 05587d4ce4269f05c7e99e8bc790fed4
522 79e8bb5b94e687127b53f70eee64f403
523 1ff5dbd7c303f5ecb688cbc64e7a135f
524 07cfb35560313b13c83b34fa57076f14
525 5b562211545af5a95a873a5d8e3b9a6d
526 b08cf4400af1f8f13864da377fa97bff
527 bb706135638a8d77ea2c1ef5a5539bf7
528 6e08ae82fc5fbf55855602751b2d2c42
529 384b9112e19f5eaf187287e4dcee75e3
530 599ce20a11961b6e322106fed1b1f2e0
531 0e28143d15e6203ee316ed4c0558ff7a
532 4687a81afe698c362b3b3bb14d6c8ba9
533 419468fd66d946a0c892fa49106519ef
534 bb1b91d55152ba71777846fc2d4ebdf1
535 b405a24631d8fcd03eeed4249e9e1094
536 7be108fc15f3520b4ac637bd35597c95
537 8109f5a7ada16a51a9b6f1544ea85ea8
538 977433a6b14e766c41fa394007022096
539 124991f749a3f57bec7a72491349d2ab
540 8c671f8ebd350e9f79f127dd1c2dd048
541 f0ec2da36ad8cb2a0634fb2f70986c73
542 84a19613368ed9db0f3a42306872e29b
543 7b2f70096518e2d1d1a78e2c03065a69
544 9d150b414105e1289819df8efa567020
545 bb23274b2905ad3b623ccef55f75a468
546 4a75965a2b7f36e835201f3bfea10275
547 e22f29c343270f374c97687f3b7b0b66
548 2c55a15b3b9f3a97e114788ab26ce25e
549 a47134ba65aac9d0247b883e1ae387a2
550 367996de14121db2b8acc08b4716d125
551 ff7ff06cc7a6b12411d0f12dba779a13
552 f02344372ed7545d6dece5235c67327d
553 177a0082d277eb5efb6611a8fcaebf60
554 c9cef0b43563e9e12db3fe7b8a963a83
555 628867de0dcffae9f9435e0ea934769a
556 2a5389f9e88440e2e10b1ee61c476c9a
557 00ccb3071dc68daf6073d47453184ac7
558 70c89453989edb537bead30e83315166
559 2798118ce1c06a07989d89ab576a0b10
560 405ecd4ba790ebf79c7ee0eac3302430
561 ed76f9555303667976542e6481e6b6de
562 1aaac64d40d418414d5cc45e179998d2
563 725f3969179a13a88bd4710a68c7125a
564 cfdb37edcb3dfb65833e024b5190ac3d
565 bc33bcccad3bc958254cb5c9c24021e9
566 332b640f26b61dd553eeec4368e66ec2
567 d901771fd533f45aa9f8e6a89cdc50fd
568 a8b7c7a75da36a48cb521ba6c47b3d5d
569 0df89d833f2cfc704a54048a4fc25aa1
570 d0fdba931c657ae40db6de92fd1ad46f
571 3372e1f3859eb3133cbfb3ad4eb7ec87
572 58c050421e7063a3f228d8469a593706
573 e0efb8a7318d6aa3f4bb5504014169bd
574 bb76e71f387e28233023f6fcb363e77d
575 8708a28d0a12f36b8c814e1b23ae7d18
576 e4a2db9c1eb240a29519d47231a281b2
577 c1dccedeee5db48a8b850d4168f263b2
578 8b6540063c1867930ad609f78550ab45
579 61c8de37be3d7487e576a14ce519e402
580 4c39d3f4b7c5261b8b69278cd01cf61e
581 24b233c65768eafb144ffe4b237b2cda
582 624a97bd2d8d7945f0c79f660db79a6f
583 023eb3047f11a098e94c9b2f4dc395ad
584 77c08226ccc5722b777d79a2dacad01b
585 4ada0a4ed2a378da6ab3e36397ed933f
586 8e55ecd7bea4c69dd5411bed4f6af7a0
587 5890e55ed991429e062ed9bba2434fa2
588 6f29cdee26d8f59e399c75adc3ca963e
589 6f95058ad5897aac4c2c4e0a3447fddd
590 76a4b0b68df0015d5032f710a89b1989
591 553ea59edaec8245ca0b15f7f07d87c2
592 0ac57da5cd62c875b635d67c518d6972
593 a2216e7284bcf53f33da68b34170d869
594 08e4982dc84b56ad28948f0dd901bc05
595 d392a218b0f43a64489056256f969771
596 cd5543ca0553ee65d8b6d3404bf8b4ff
597 caeffa85a366f9bdd250cf1ecf3521ec
598 9a31f0f5b2f3e7e923bcc963502faf77
599 6ba7674cd36efbbbbcedab61d0cfdd95
600 df70da7d729efa4bcf037e0c2ed5aa0a
601 c69a07323e7105f3bbec3c287176c832
602 718f43dc297883de170d6e202dde9304
603 586ca71bfc8346b5d66613eb61a62392
604 220be4284d452c8205cf7767b774391c
605 54c9fc8f87b97a365834939ae4f047c6
606 baa53a78af5b174a674d0aecebcaf61c
607 897cdb62345099a3ce61c79148232d6b
608 b27b90a56eb999ed1b4f8f1fe20a03b8
609 bc37714ce2429460f363dfeb9e0fe130
610 451ce3e7aeb0fe575fd81acb9310c075
611 fc5223fd5a7457467413ef308484d3c7
612 18e58dd646ded1f8d973c0622c291ea8
613 1a34942df9b6b4c37d8694dd623cf4ed
614 1e540d9eb73f6a77135965f7ac52705f
615 01e6c944693e1ab23f176770948b63f3
616 440ad0e977d7b29240fc25645d271679
617 22c32fa8419ce0e9016e12f1cf9bd087
618 2fe03c2d4eab897c3ee7bc1ba687c1ca
619 9d7a2b063f7c375ea2528cd3c130a3c5
620 30318b3885c6f8e529d47e855a147753
621 09bbb9619dfd40414219a61fb5cb3f97
622 49f70a0b8dc368699e5509acc86067e8
623 1a3f2f5ac50b11d0f1441542f4103cdb
624 f62c4148d6a1a0d8bfc0830d92ed6ff8
625 c5868b2705f5a6c4e09b27e0c5e02fc4
626 d7611c94b236170077a9ccc3aed12b68
627 88fbb89660b33af29c0235c16e649d14
628 060054d8da83373e890586474bb0b844
629 ea0460399040570c24228aeba16ea548
630 e012db2951dacbc563fd1009908e26f7
631 9624f225fce79c7641f9fddedf1bb0e8
632 a13457b3b70f0377f93293ed26686b48
633 8c7f01c853c9f01248975e0c5838be36
634 f214e4e994f5d43e6d0b66d7c83909f7
635 31e1ef44d59205f8b70aa51247c4da5a
636 ee2f5bbb91dcb60545ed43b27ecf69b4
637 83f8f26970509c1f7958c42d3f4666c8
638 beb27e4616ed743cbde0e90e8fcedd85
639 64193d5ebb92c2a6e259818ee1a7b3cd
640 f36944249177ec4130719fd368eaf134
641 dfda44c7e068eb7d51f5925c4cbe4e3d
642 4f84611f754fbe80ba73cb278e6878e0
643 2bd7d30e73cb7a41842ca84782cfd3e6
644 c5532ffacc9cb4118b9dfcb6df5c92f1
645 d599e219cb43d15cd5a762052f71ab31
646 39a83debb4728212bc99b52375b2e6fe
647 773e28213d42e67a28d30509bb270741
648 36622bbee96e8d25d0a99f3d8e123b56
649 740495ae233ac2cc700183c550f871c3
650 0b34a880f5b434f40b5c777286dd9846
651 ae9773b3bc76125b06c0a6a441ec2ddc
652 39eaf3f8c28604aa5003f525ac900aac
653 c3c96034913b7b16451760c7cb707017
654 e696e2429c1c0ad48d68d5f8ccbf1d82
655 b45bc13eeb6ed7998fa94b676318fef1
656 16d61b48946c94a1b9a1cb7261ab812d
657 029bb7d6bf6b4c1eeb59c13543be7992
658 1840f1eb4b6516c1eb302d1b175070c5
659 a83c6cd9e67c60b5e745e40eb2d3b00f
660 6a7b7139dacfba962b392dfa5a9169a6
661 746d6f9a4c02bf3fcb1997a1d947a260
662 f67fa138069da8fce68c131106492372
663 614def545c4a4ecba07bf62966f0cc0b
664 982d93d2437c46edbf99f542900231c0
665 8408bf5f0144309374e66278bec290b2
666 982e0fde28cd2f62ef8db2d8dfd0f0d7
667 OUTPUT
669     output_array = split "\n", output
670   loop:
671     if $I0 >= 200 goto end
672     $S0 = clone $S0
673     $S0 = concat $S0, $S0
674     $P0 = _md5sum($S0)
675     $S0 = _md5_hex($P0)
676     $S1 = shift output_array
677     is($S0, $S1, 'recursive md5 (2)')
678     inc $I0
679     branch loop
680   end:
682 .end
684 # Local Variables:
685 #   mode: pir
686 #   fill-column: 100
687 # End:
688 # vim: expandtab shiftwidth=4 ft=pir: