-
Notifications
You must be signed in to change notification settings - Fork 33
/
commons.py
2389 lines (2381 loc) · 122 KB
/
commons.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Compiling with 'pytex' and the option '--verif' will check for
# "references to the future".
# The program will basically look for every occurrence of '\label', '\ref'
# and '\eqref' and check the corresponding 'label' of a 'ref' or 'eqref' is
# before.
# So no way to write
# According the equation \eqref{MyLovelyEq} we have \ldots
# While the \label{MyLovelyEq} is lower in the text.
# This will produce a warning.
# But there are a few circumstances in which one wants to do so. We list here
# the hashes of the LaTeX lines in which we accept to have a "reference to
# the future".
# Why a hash ? Because virtually any string can be valid LaTeX code.
# So it is much easier to compare the hashes than compare the
# strings themselves.
# It is also easier to copy-paste from the terminal to here a
# sequence of 40 hex digits than a full LaTeX line. Not to speak
# of correctly escape the string ...
def has_to_be_printed(future_reference):
"""Print the future reference."""
for filename in future_reference.concerned_files:
if "front_back_matter" in filename:
return False
return True
# Le 19 décembre 2019, il y avait exactement 1000 places libres.
ok_hash: list[str] = []
ok_hash.append("36fc72aed88ecf54310a1d8729fe6ee6b68036b5")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("<++>")
ok_hash.append("04b5c43c12284900d6c87733b795323dcce2dd21")
ok_hash.append("75be4bff35edb99b76b378c5d8b2cf2cd4ab546b")
ok_hash.append("e86204734471da0e8be9ffa2a9cdf959a07e2735")
ok_hash.append("79d002573646629988912efa40c6719d583e888f")
ok_hash.append("a3a22c2cd6f3e8e5b7a7d85cae854a55b3de6e99")
ok_hash.append("f2d1915b12fe1f448e1a56292248721f02712805")
ok_hash.append("404a55bc1d81812f561cf07d6efc7e0ee4e49a2f")
ok_hash.append("e0315a1d48e31c75da9415cfab64cbdbf41a73b0")
ok_hash.append("a79eda269cdbe75d43cc6d774d9ed2f0393eb896")
ok_hash.append("44d966c12294eee108ab5f72689ac7824c73a5db")
ok_hash.append("084053ebe311c029871d294bd48ee264b8085ff8")
ok_hash.append("f4362531f93d7d2d6d5de138df1c2892e81f9267")
ok_hash.append("c97348f7d5069155db07b3cc0ae7acd564d0809c")
ok_hash.append("a1433a2032b44c789a2bc04f4141dcc3c46c172d")
ok_hash.append("0ab9d16740a1f50c27360191b86a2dba514d4acd")
ok_hash.append("5e0d841b557bfb7cd530c55edd09682c9966ebaa")
ok_hash.append("4279baa2cdebac4fa15cc6787337c992ff4b7841")
ok_hash.append("04b8490fe9260cac62a3f7dbcefd30577f07a881")
ok_hash.append("0011e5cc66d887ef8a8b2fc68dda2280174950ea")
ok_hash.append("ea768dd4fc6d66268e73795b34bc7730e710b68f")
ok_hash.append("bdb2fd98eb873aa93f0f47c1e8d404bff205f646")
ok_hash.append("5d038cdf23bc9412ed1d81468f58c16be83d7bbd")
ok_hash.append("06646a894934fb1a1a222a9b824779424abd24d0")
ok_hash.append("1f462c3752e0b46a8767f7caf98f958521117253")
ok_hash.append("499ba0a298d58a47d39417d097e2c87f02018786")
ok_hash.append("baefa5b34a5e75c852b79bad24067fe6f1f21e42")
ok_hash.append("b9034f15f4ebddcb3603e3ccd30e90d1c59ca53a")
ok_hash.append("e1aa5b3c9ae8b1cf33f1537430a3e83d1a22e368")
ok_hash.append("5c47fddb1bccbeb50995f5d8a30a1cab0b4aeb7c")
ok_hash.append("e797386f6b57b6859c7688100a0ac39e1f82e102")
ok_hash.append("38176bce357c2749aede1cc3029983b81fc4cf24")
ok_hash.append("8fcbac42e04536a0c3f26379e65eeca998f3d4a1")
ok_hash.append("35c05ac829d9a1c679c91e4f90eb9a9cf884ba74")
ok_hash.append("a0990d7de4f60ce32fadf2f01ad08f48bbb19dda")
ok_hash.append("77f3a2db39bc784d01ee2a48badcf081287c6822")
ok_hash.append("a2f5d2d294524843e912e07ffc2a2710c3602017")
ok_hash.append("686998b332ba496afb1ba3b6390a04270830d997")
ok_hash.append("47443cf2745bf298f711fc023383b1d655da2568")
ok_hash.append("e38885f8c33691dc82e818c27e10620965d85fee")
ok_hash.append("fc2fb3318320473c76797c039f2aa42829edd167")
ok_hash.append("24221f3dbb445971194c6dc4b7e8ee4e6e43a153")
ok_hash.append("5e2a6f84ca3d289ac81e550fe0b905b00a63a545")
ok_hash.append("bb8b40a8158b19467701f0299a12c1b442838915")
ok_hash.append("2ca2626bcb72344ea43f2b7059b6d46edfa02238")
ok_hash.append("a13d5a34f9e56de9a2b3886421f9a9fdfc40ab85")
ok_hash.append("f9c9d25242c98bf15ad2d5b4e93d1b29e83010e7")
ok_hash.append("c9e264ee3b40ac8e3db102a5ab7207a4e15ab8bc")
ok_hash.append("5cc886de7101284791f96e7a71216bc73cb9b0b6")
ok_hash.append("b43bce2d0eb9cad84868e407d108c38c6ff38c98")
ok_hash.append("a6e2b900dbb9fbcfd227ea846f3f016f6651ae40")
ok_hash.append("8e27a6c15baa190f163d5845c9c68d87826131b9")
ok_hash.append("f2c26a2037e44d64dd135f69ec362cd7b3ed1364")
ok_hash.append("fdb86af06c1fc3a4c7e92102df59619e38de48c1")
ok_hash.append("f5e705ccdf7ae6541d9ae9097987165b4d94e99c")
ok_hash.append("26246485f5ad54dcb099930f18cd7ff33ad200e3")
ok_hash.append("d196a74a63c658459e3c0ba585ffec3a46aa1733")
ok_hash.append("365eaeed1b58d06f59b7dea575aea759ee86bae4")
ok_hash.append("57b18acfe82440fe37accdae72779fae47616e63")
ok_hash.append("a9b4f93cd3b7716cc97a828afc96728c45662443")
ok_hash.append("61eb61d638d8e38b4de6a3834bbeece5833714bc")
ok_hash.append("32dc5fa16556fd08b4b46885e6415fc1b67658f1")
ok_hash.append("65f149eda80aedf6f76ea7e1da6c3eee68270c1c")
ok_hash.append("2f84010bdc05a542e62a01095a07467e9a6e89d3")
ok_hash.append("8996822b099452d65917a5dc7df4794420306dc3")
ok_hash.append("8996822b099452d65917a5dc7df4794420306dc3")
ok_hash.append("7a917bc3c2945e1623b061222138a9fa0eb47e45")
ok_hash.append("d0e6c66003a8a8b9534f7ec2e5c1a6109d04ebbd")
ok_hash.append("ee4e53e6dee370fc8e308d6c10a5f8c81d85038e")
ok_hash.append("0dbf9c8fe8288503cd6a9f5e096fed045458c6f1")
ok_hash.append("74ecaf659ca741f89652eadfd44dbdaa33819ab1")
ok_hash.append("52189bafa965c6f48d6e97695e3d333505724a05")
ok_hash.append("23c09f483f22a6ee2248fc94cdd926bc30e46de0")
ok_hash.append("0b6faec1454a658cac4745924413b25e3e8817ae")
ok_hash.append("708a1982e22753618930ae618720fde4099eea3a")
ok_hash.append("637cc58d3dbf463e378f3d4886a0f9ed6d6e742d")
ok_hash.append("708a1982e22753618930ae618720fde4099eea3a")
ok_hash.append("651bb2ebdc91c7b57bbd4ab6463df799cc3428ec")
ok_hash.append("34f483452af1b8f5f7fcd57afcf54ce940f857ef")
ok_hash.append("7cd676013a072eba0eb5acba5578a28f5687b8a6")
ok_hash.append("c42106cbdcbd30d7b341a8d3f4f131cbd9c9a2e0")
ok_hash.append("229a276192636f0cb4cbfcb2bb501e6b5f2cc174")
ok_hash.append("af612258fe04767ff05bc8024a64163ae7f1ea79")
ok_hash.append("eae30d14bb02967356b8e62027470f115bf64f09")
ok_hash.append("e0ae43e6fa2e629a6b744156b44d7b05853a8da9")
ok_hash.append("d9e542922effece4b1f2318213805edd3d86e584")
ok_hash.append("55953ae9dc997416923da5538d7e8fb38cdd0ad2")
ok_hash.append("e9b70c2f8775287d5c438dff107315a1237fc684")
ok_hash.append("24f1fa3066964c07dcc3f66fe55026d0f625e22a")
ok_hash.append("60bec9d624c2057e33df52b4e6e1cf74245d2f56")
ok_hash.append("ea9b098d8544d36611568a7a8a2387030eba4786")
ok_hash.append("702f940d3f6fa9d5c55da5b577f78d3b5341ea34")
ok_hash.append("d968aa77354d205d1d56e0f9ff39d13b95210256")
ok_hash.append("dfa8061aafc8c7e55aa09fb736f403cca1161a3b")
ok_hash.append("7694c2b44214dd48590a25ca02f9e3d4c40e25ad")
ok_hash.append("4ab0ce51e1d740c2e26043d9e87c0667997cf0cb")
ok_hash.append("66b46211d6b3b9d92579e0f30cee7109cb86a9d8")
ok_hash.append("da3fede9a74aec2fcdd327105429e716e9ed429f")
ok_hash.append("31cf64ff37946882d3276f0744e75d7afddc3037")
ok_hash.append("9d8cb5edf953afea8ce3a7ec760d718f52a7bb54")
ok_hash.append("558313734eb20b89e89126598c34f7d527a5218a")
ok_hash.append("43383dbff933f533e7b478688940727196748204")
ok_hash.append("5b53d67f51641c5895bc34a81b327f36774b41cd")
ok_hash.append("52b3cfe9d03f5174089431d679e94d26f52eeb94")
ok_hash.append("21a14fe0eed35872e73692f2523171a807386afe")
ok_hash.append("4d496817994478760f48cc29be9c7c7ed2870ce8")
ok_hash.append("ad95b1c8d3cc65e4b7dd07b46946b9f6d6ab8950")
ok_hash.append("10216671f3de0f67d8f83c69dfa098aa7e29afa3")
ok_hash.append("bff2f5ca1205dca79f99489bda44d9e8db132a79")
ok_hash.append("6edee03722b8600f2bb00880dfbd4a75f2d3b8d9")
ok_hash.append("d6a514968917d7b6e5f6d4cffc1c996954741b92")
ok_hash.append("dabb322393449f84c0b9802f00f973cbe3b312c1")
ok_hash.append("6d3966bcb15ebfdebd7f0c70b63c2527ca477e52")
ok_hash.append("980ff8d40e6461062db60ab32e4930d5cf51eb3e")
ok_hash.append("a86745356145a5f45874f5a4af7cf3b885b5d258")
ok_hash.append("1f497eef280aeeca2199cd75faa49693abc66ddf")
ok_hash.append("54d854e0be9a89c6559e67fb2ab60e24c6005b02")
ok_hash.append("0ad54589c67988cd9cba8d8c275c1354a2cf5793")
ok_hash.append("eb8fade37a8761d6dcae15ec6f38407d92167319")
ok_hash.append("5fded6db840d6389312809da88a585dea08cb4a4")
ok_hash.append("0ad54589c67988cd9cba8d8c275c1354a2cf5793")
ok_hash.append("54d854e0be9a89c6559e67fb2ab60e24c6005b02")
ok_hash.append("cd54048d33466614d0279761cfa056162299c6ab")
ok_hash.append("e2c2ea0b3fae7571daa067586bcee961c31010c9")
ok_hash.append("aee92b1f61320c6e29b13f3bdb9f87a71ae6b930")
ok_hash.append("3a2a27d027434c0667007b45a6d8a4366c56b270")
ok_hash.append("a8cc352b5d2a755597d044ec0d976b6d22f076b8")
ok_hash.append("953a87335e2eccfdda9c5e77f3e1119ad427b962")
ok_hash.append("d16bf20b4d984e1713b149dcd61f08960ac5f660")
ok_hash.append("c44dd9429ff37f998d20332e1cc361205b00cb89")
ok_hash.append("41306606f8e6b77020b5533696af838d957d577d")
ok_hash.append("1f497eef280aeeca2199cd75faa49693abc66ddf")
ok_hash.append("6c781570adfc5d51220fad92a5e8a3674b3ea705")
ok_hash.append("4fa50e601b3d91d60b74f958ea9515e41569ff33")
ok_hash.append("a42e8ae9a356b1de18889cdee9d967c60c72eb2d")
ok_hash.append("a1f745013b6f21efbfce48f0d668bc05656ab5fb")
ok_hash.append("c5123c9cce63aa339e4a3a14c1c8f1138417c863")
ok_hash.append("9abe5176da9872fa5206120bbd46a7e66c2f4dfe")
ok_hash.append("8f8707a4b5e6e79b5cd6533d21b2ca476848153d")
ok_hash.append("5dfd68f23120b9f17e4a2998bec24acd1cef5fd5")
ok_hash.append("dda4e2356b85e35cfa10b5ce34fab6bc29610096")
ok_hash.append("206f56268b2a10bf5d180b88ce7a9d81f9a41ad3")
ok_hash.append("867a722976d78ed94a6856dcc98feb5659ecae52")
ok_hash.append("13aa573481ec29d0c242776a20aa63dbff54e95f")
ok_hash.append("c28551cdab36e77319340b5d95bf26bd289843e4")
ok_hash.append("c9e09ede5ac14a8549769fb591ca9f13e8757e7d")
ok_hash.append("d63103c16267e17ed22f1bb44dede78ffa97f0c4")
ok_hash.append("53eb366ff218dba18fba9de781349e3dfd2992dc")
ok_hash.append("1f4dee3a7dc925c0dab8814a793a61c799ace63f")
ok_hash.append("04f8c6b3f7044b8b19b0e68cf9ce762d52266dcc")
ok_hash.append("595fa36d95a02c8a03f82159916797f11aa3d2ad")
ok_hash.append("830195a874d061d82cbe7520d42ffcfe70ebd417")
ok_hash.append("91cbc543ad301e558604aaeb16c293b7a536ca8c")
ok_hash.append("812d2debbe2e5df2e14de837617b67b5cbe55e55")
ok_hash.append("3ba9fdb979a9edc62643692dd8ae1418677448cd")
ok_hash.append("12cb5223b182d6831324fd6ce1a8e761e639b3a8")
ok_hash.append("e92c1fc307d75fb066263aaefd8cc8cf2a047c09")
ok_hash.append("eeaaca08bb604e15e14fedd807a503172415da41")
ok_hash.append("b84bc14c4ad33c8c5e6d22abf5936ff9e2c99acf")
ok_hash.append("afc0e0d6aa52e1007c21fa5e1d8406628a35fc78")
ok_hash.append("afc0e0d6aa52e1007c21fa5e1d8406628a35fc78")
ok_hash.append("3fcd9013504f321402c221bab47ed143585d644e")
ok_hash.append("486b24e2a5b0ebe57949c9206031ef2a84ed79bb")
ok_hash.append("ea3466811999b35b457e07e051ee6d73cd1f6511")
ok_hash.append("3fbeebb30f1978d53af0c1178a07a1c555cccfca")
ok_hash.append("e6c308fe0dc14ad4434ade882cf5846e6c1db207")
ok_hash.append("dbb3842c8b49a7bce9aceb11f76cb5e5f0d4a537")
ok_hash.append("244856785435e3a823e5e926635ef54456488a4b")
ok_hash.append("ffbc9a1d3050af83a0696144b6b3be939b7adf18")
ok_hash.append("39a9c0aa502c21e96518a0e8e06ca3ad6dd0e6bc")
ok_hash.append("1cb78664467ead5dfcf8303fb6ebd9a44668977a")
ok_hash.append("3f10c1c07e96959f1b7fcfa610fda492c0458c81")
ok_hash.append("7b0e1611a0b0893febcf385791324a995449655e")
ok_hash.append("6eac40862c0498612a51121c7b1a44ea6ee22a49")
ok_hash.append("e3a1149879955664b4b6b188bf06a634a8202c3e")
ok_hash.append("e4c5fa66c7eefc3e8ae2d69c343500fb1d7978ba")
ok_hash.append("6c3221e1d1bd905da200709973e311d0a43fd4e3")
ok_hash.append("413ba309177e897e8607cb649c7536a654fa59ca")
ok_hash.append("09265c91c1412c7f3a4c0291fa6f146ff78c5431")
ok_hash.append("eb872bcfff21165ad6dc59dac10f8dd8e3326125")
ok_hash.append("80fb411daec8051200090b3d190981f1fe50567f")
ok_hash.append("4c3004b1cccd915263101fc6618960ce2b13caaf")
ok_hash.append("0c3a1c7c6a6d9b1c4c27706dbdbc3b55ec012e76")
ok_hash.append("d0ffb2e8703d2442eb1b5a17ce0453d5c21e371a")
ok_hash.append("a39aa03153e94ddc435a93c9da7cd62e8be58c94")
ok_hash.append("a39aa03153e94ddc435a93c9da7cd62e8be58c94")
ok_hash.append("7bff1c5a3f6cc7d6741a1435f9574f88db157d1f")
ok_hash.append("70919bda70eb34d3de2f99fa3c369339ee61f095")
ok_hash.append("6496a88f6236b0b1725c61bba252a95c6c731185")
ok_hash.append("bc7687998aa3e654370d284b34c1fdd94e589cbc")
ok_hash.append("452979a83f06dee13e1d48560bc9505377ec50f6")
ok_hash.append("22a7477d9ffa5bfd1b969f358e8d13152ba51c60")
ok_hash.append("7a115370f715b10e3b0a67cb4832e3b7994f875d")
ok_hash.append("d9a365283a170be7d0041c196eee6283b2616e8d")
ok_hash.append("bac19c7beb268e308148f3882f1cd7580952e2e5")
ok_hash.append("22fa0b0e3dd2b850096cd8db9371caca5de27371")
ok_hash.append("dd8da5e89014011da9621cc85e35000df9d2154c")
ok_hash.append("a8161f4f68a22d99d3671a9ad3980126213c5436")
ok_hash.append("84d34d6156bea6737a2d4a13fc0b028973f61233")
ok_hash.append("0db070f4c97bef1679a46e547cae676c46f7b4e7")
ok_hash.append("ebefb23ab77cdb7b2b5afe3a286493b6dcc3623f")
ok_hash.append("c2e62e4be586ea6cfa4a68f827f7cd5cdfe3b2ae")
ok_hash.append("3435f224225d120bf370506fae886ff5d0ca16b3")
ok_hash.append("478caaa243fea00e2a630b1d99ae6f402de00bc8")
ok_hash.append("2827dad40c56648df14a3740d13fafda0fa82c9e")
ok_hash.append("7f256ad21e3c7007a4e975704483a8de92dc7b7a")
ok_hash.append("9cd57a8cbafa670de684d83917d4039b92b175eb")
ok_hash.append("e5f43aee9b0d771018d9c35bbc47cbaa78a426ac")
ok_hash.append("84541eec8351377df212e8ace4bacec8bbdf1ea6")
ok_hash.append("f49e92d1365195ea881e704ae0bbe8b2bfd8f889")
ok_hash.append("c743340d3651c200e4e9888cdce6a488540a981c")
ok_hash.append("969bd04c175c547481abc95f1ddd2f3e56173394")
ok_hash.append("f38f61f05149117d1f90ec8436d0f2a4794c5310")
ok_hash.append("b45a9d7f3cc0bae755a799caa632301581037973")
ok_hash.append("abee338fd147ad3c1e58751fbcff29f1edf3f701")
ok_hash.append("88c49e923677bee4b7c428e2ad1cfc84d9bc3298")
ok_hash.append("15973cf2b045facfc33f2c8909c796ff103b0a51")
ok_hash.append("1c7769f44f9169212973cc00dd0ab49ab6db088d")
ok_hash.append("b043bf317544334f70bacc3d90a0bab628e9c0c5")
ok_hash.append("e15029960034914e4be93cc2d42fb5c85f7f3f52")
ok_hash.append("d4217b4ff49049bd5e01a847ef60c086ec94cf03")
ok_hash.append("d0f2a9563476b6bb59fcf52f07a9c80f7810a2a9")
ok_hash.append("d89807721b693155836ec0beff50278e6fdac243")
ok_hash.append("1f374a8a4a0071d1db807a8257760bc83f11f7ba")
ok_hash.append("a8db9be870431e38ab5addfc754877240cf167cd")
ok_hash.append("0d75b3780ea7d9bd55ef6cbfd5824cb6e363a8a4")
ok_hash.append("bfb2ebd2f7279744595abcf0d48472cd7b780fa5")
ok_hash.append("50d88b920efdadbca2e12768d85793f79f89dd70")
ok_hash.append("50d88b920efdadbca2e12768d85793f79f89dd70")
ok_hash.append("d260b522b9299c67cb8ee1da63559ea23ea813a2")
ok_hash.append("8efb329819614dcbfe3145f01e1c6155118d54ca")
ok_hash.append("205c1ed81d73768dad1f929b7235c373025b876e")
ok_hash.append("fd318dc9127b7e484eb5f31f5566a5986fd6f73a")
ok_hash.append("f3c103243f8a63f75f1f0307b3b32dad3912063a")
ok_hash.append("d88246a8829df38173e34fcb1cb2900029ab1f64")
ok_hash.append("3f54678d5df10083800f2b3375099036d085b3bc")
ok_hash.append("a4430f98c6c653ad97c9caf37669e53b24a37643")
ok_hash.append("53d3cf3c466db4c05e045a5fbc2bd1207d4319bc")
ok_hash.append("aaa97264d7bf9b41e81dc980d2eb748a4aca2df1")
ok_hash.append("41726d9cc015ca43834fa506dbdebf84ee23892e")
ok_hash.append("88fd605c1ed2fae48e0b040a00283b8a85259f72")
ok_hash.append("df1efe8a40d9be0ad7f4a2e50afa55125856d6f0")
ok_hash.append("460c9e79968a9b87437efa4cdbdf83b58b433387")
ok_hash.append("ba848da4b73e5a3812ba24068abd382d2fae1c0d")
ok_hash.append("6b37db588952f9e93295172001bcf5dcd6788e7f")
ok_hash.append("0feab121d06c9850ad5ea575772654e1eaa5d853")
ok_hash.append("65e349ad809231d3376770da235e9795a595105e")
ok_hash.append("d0a5463bcd8158d2ec96bf43033ebb304421b86e")
ok_hash.append("705928f74001992228aaa9e5d5a5328647c28436")
ok_hash.append("0efecaf65ad0ff80e997c06cd75e8f104f91e4eb")
ok_hash.append("784bb95df32d09d771e32cdecc5812e36a7477e1")
ok_hash.append("e32a48e7ed54f94d471faa5974ddcf6bbc8a11e5")
ok_hash.append("8756b42fb878801f5f25bbc475fb6d2c1b8eeef6")
ok_hash.append("8756b42fb878801f5f25bbc475fb6d2c1b8eeef6")
ok_hash.append("94d5907559501be9433e9ae6f27686f12e5006d3")
ok_hash.append("c8d9c79358a1a7d7b3d414322a5ad9cfd7d94da5")
ok_hash.append("f9bafc640fd7bc517c20c173b89bcd10bda87ddc")
ok_hash.append("df1950208e4ad76ab600a14f1268c1289d744f31")
ok_hash.append("fb503f9be7a8bbdd2454df15169aa1107b580b8f")
ok_hash.append("4f7f9c7b55307196f725b02036069fdd1c5201bb")
ok_hash.append("2c7483048889ad8011d08e1a04c62f2e0ec1cea0")
ok_hash.append("71ab4273645d62b46516b99a36688d1c885735bc")
ok_hash.append("cfb99f6d5ba6ce191f875f5a6aed4e60a4a3cd95")
ok_hash.append("cfb99f6d5ba6ce191f875f5a6aed4e60a4a3cd95")
ok_hash.append("8f08669072ad5e70246ab837d6a7f738b526633f")
ok_hash.append("3606aff7c472efeeddcc605deac8ab1e38002062")
ok_hash.append("48ed4176f737203565586002917ea7c67556eeab")
ok_hash.append("2137d441ff6dab1a4c68f5ed1e704d3d9e972ab7")
ok_hash.append("4ae787ddd3352c708b4f3d82cc87d04a5c3b6ce9")
ok_hash.append("1d2ee3696dd34853f51bb03b7a65bbb9ecfd026c")
ok_hash.append("a72a255eeba7e159ccc4c9adfd31d66b44e08ca2")
ok_hash.append("5751a10032b22cfea71fb25cb1f584b6712e91dd")
ok_hash.append("9656dd17033ea58f87d5dbe0682f7682d2a108c9")
ok_hash.append("5578c35432f21c20b2700fc7663bd218d60bb5ed")
ok_hash.append("4b62105cac0860776488a478c6479fea90ebadf0")
ok_hash.append("53d3cf3c466db4c05e045a5fbc2bd1207d4319bc")
ok_hash.append("41bf87bc59508f0c92e62b8ad08a00e88b290a2c")
ok_hash.append("48ebe648af2b38fbf983c3134c20b1aea5d27c0c")
ok_hash.append("2d39f91170bc1a18166baad228e9099e745c7900")
ok_hash.append("f61bd0755748d425d4ddb1aa71b823887f42e976")
ok_hash.append("bd0d49d7e6f2f287b5e9e6502c2300f4e1d1cc3e")
ok_hash.append("f61bd0755748d425d4ddb1aa71b823887f42e976")
ok_hash.append("bd0d49d7e6f2f287b5e9e6502c2300f4e1d1cc3e")
ok_hash.append("f61bd0755748d425d4ddb1aa71b823887f42e976")
ok_hash.append("d6acf9feb0644fff145b048a745cf9973cd09489")
ok_hash.append("22e307b9a64a69ad5a4ae23ed669095f946bf7bc")
ok_hash.append("2fe34a672c6b7b00803b259ef97323a9ce258a87")
ok_hash.append("00f60f785150c35e41d40566591753cd5c756368")
ok_hash.append("00f60f785150c35e41d40566591753cd5c756368")
ok_hash.append("f3890b496c328869e792218bdac87a59e80512b2")
ok_hash.append("9d907fff8469360e127823f5544afe8d4403e4fd")
ok_hash.append("aa8db51f3f29b4d02c447a013155cb725e35e403")
ok_hash.append("5d4ab053bc33b66888f1c86a4b6ffceaca04e2c9")
ok_hash.append("87250a51bea96a83d5f1e111a34bdb39ee88d8fc")
ok_hash.append("017dc2dcb44a46077d2eb28654896cc6e690de45")
ok_hash.append("d0753e2634163f7a6cac80200c7df670d189a779")
ok_hash.append("563d264e3ec19cf5e6d7059e1c43a71ab1f1fc47")
ok_hash.append("c4e28ab5d9f24ea3327af7d34ba1a4e6b386e8d5")
ok_hash.append("4e542506a5039c470bcc65f3e59c340b699fcfdc")
ok_hash.append("24c94e27cb08cde9b181f74babd91332de92e673")
ok_hash.append("af921d7b1c8ffb753ca4088095c51d475ab1ffd9")
ok_hash.append("3f33ff549166694f727e127da0678a393c05c71e")
ok_hash.append("cb37d25ff06880c00bfbb0b054499adc1d2f0f9c")
ok_hash.append("9994e0975f4fc5286f87fcb1bf328eb7ee56d8ec")
ok_hash.append("d4f7bcb3d3c26fb2ddafa52e5924a56cd6c83dc6")
ok_hash.append("0e356243b9de8e4fa2a97170db39e72ae9507a89")
ok_hash.append("cbc5899cdfc1594ff7b738e9466128cde43b29d0")
ok_hash.append("ec8f2d1f46557157a04c718095cc325e08f697c1")
ok_hash.append("71f4fa2933c36b87a9525e9621ffe6e2da8b2acc")
ok_hash.append("664d018d96711f0cf31c5feb1f223dfd41b64196")
ok_hash.append("c99cb44811bb0dea3b2c4ac30099ebde8168fe9b")
ok_hash.append("c5dffa88e2f276ca1651cdcdca8ee2e5fbd3fc0c")
ok_hash.append("825b305d80b3a968cb0c234fc69f05f08e646b91")
ok_hash.append("825b305d80b3a968cb0c234fc69f05f08e646b91")
ok_hash.append("1d428cbb9214f948570adb47eb707b58d8065552")
ok_hash.append("fee19e8f2e8172cad234a576f1c55f6a7ed38d4b")
ok_hash.append("fee19e8f2e8172cad234a576f1c55f6a7ed38d4b")
ok_hash.append("fee19e8f2e8172cad234a576f1c55f6a7ed38d4b")
ok_hash.append("c1181ae3c0efe94ef0f42f98295edbcd44e65dfe")
ok_hash.append("c4e28ab5d9f24ea3327af7d34ba1a4e6b386e8d5")
ok_hash.append("afe7cd99224a9c5692b46394655ce1d45dced7bb")
ok_hash.append("652d0e05391ae95cfe92f0b2331d9ac11ca3603e")
ok_hash.append("4ae787ddd3352c708b4f3d82cc87d04a5c3b6ce9")
ok_hash.append("7a1df890aa7dddd1f4f5954ab63baa41ba2f4455")
ok_hash.append("e910a3bcd35dc7d6c4be4e4f8b39681be21467fd")
ok_hash.append("01f30ad2a5756c8e72f2cfb78801d46590d8fecd")
ok_hash.append("ae4b5c5f6ef4ea8bb683956a03d07dfac0210420")
ok_hash.append("18f034efa361afe28faae0ed75422598be9514ae")
ok_hash.append("9064ebabf15dfdb9abd217bb73ecbc2fe8046e71")
ok_hash.append("ea09aa574603cb74375c09e5844f4386e8833e05")
ok_hash.append("a5bc17ea03a63b7245aaa7d9bb32b02f467a71e1")
ok_hash.append("b03a343d1f73a171ca2f40a6fe03016a0cddf2cf")
ok_hash.append("48b833bca5ec5cce57ebbb22fa4b7e33a627a982")
ok_hash.append("b03a343d1f73a171ca2f40a6fe03016a0cddf2cf")
ok_hash.append("6365171b131097a2e3367a83bb973326e9be04ba")
ok_hash.append("c229d214203241b1ae713e2de2b156e2f354add7")
ok_hash.append("38b33b13d20e10d6edb85b22568eadbb889f2245")
ok_hash.append("d45db086e640bc0074eb0ed99a149c92984aeb93")
ok_hash.append("ab59fa1a63c385102ca0e9d66144c038d45d1273")
ok_hash.append("8ae40d9119f76a85593a0fc835aa90cd99be705f")
ok_hash.append("3f22c1d22b6591d3c1e6a20d1175c62312da2af6")
ok_hash.append("bd02009f3cf8c8bac4f205e72b8e93931c553bc1")
ok_hash.append("75f9e6503dc133d85b27a1788e48e864a5e49824")
ok_hash.append("3bb90373e8ef27c00ebc17011b8245776f09000b")
ok_hash.append("3bb90373e8ef27c00ebc17011b8245776f09000b")
ok_hash.append("99c1107281be673feac051c23a43048d6b151285")
ok_hash.append("bcac07eb0e57ea94df34446443f47b895fdba7db")
ok_hash.append("bcac07eb0e57ea94df34446443f47b895fdba7db")
ok_hash.append("9656dd17033ea58f87d5dbe0682f7682d2a108c9")
ok_hash.append("bfc130a87dc4dd7efa3948f8d13f0b7196cffdc6")
ok_hash.append("549b8cd9f71c994f7d63e9ddd9fe34f40826a191")
ok_hash.append("b4f09d3eb1d602dd9c62c050faacbec7f6159cc9")
ok_hash.append("4f4811ea25c693ef35d0d1a0c2b9ae3e1d2783e4")
ok_hash.append("9e05e9add3303b8c4d4ceda2d99587804961f2a1")
ok_hash.append("9e05e9add3303b8c4d4ceda2d99587804961f2a1")
ok_hash.append("f08702cb4d038a699fbaf3bc9b69ebe3d34b9c3d")
ok_hash.append("9237322b048652534586ae32db7443c67e36aa09")
ok_hash.append("7f427e4bfa8a5f03b113e8093d5e7d7e6f2edd3b")
ok_hash.append("1d70d3a9de8656918e3a5002e8043a03e4a2b211")
ok_hash.append("cf69474e1bb35d5c86a8374e5651728b91d4b39c")
ok_hash.append("e11db98d8c16ec761f63e76edab7b3fa291f9f3c")
ok_hash.append("da1f7bd49502dce5bea2e48f621bbf0431092117")
ok_hash.append("c39281162f55dfeca1e450a4c1080a54894c475a")
ok_hash.append("d3506aae0fff1879d369b43d24a37df225be4cea")
ok_hash.append("d286bc6e445aa7bc30db264e83fe1e17d500ff81")
ok_hash.append("4b80affd72af43698898d926ac6e80bc32276ac3")
ok_hash.append("c5a148b4da8441f7abd957dba7a4b72cd7617e22")
ok_hash.append("428c241ce94f44b37221ced44561fc8a380c8e52")
ok_hash.append("ac9314423f047ef3ed6bb477ab3610f81357e50e")
ok_hash.append("ac9314423f047ef3ed6bb477ab3610f81357e50e")
ok_hash.append("1d28b70d234ef16a43eeae6d011ae79665d7ae5d")
ok_hash.append("9f328ce6207531f64004e7d00b21aeac7fd3b2b0")
ok_hash.append("1d28b70d234ef16a43eeae6d011ae79665d7ae5d")
ok_hash.append("b02ffb3ceddde9a5eaac3561a4e67e5a3b37c5c8")
ok_hash.append("5279096ed9ee67b6755067c002d37bf0754299d9")
ok_hash.append("243ea5e81ab0969da425a40278bddefd9769c1e5")
ok_hash.append("d05b9a6a03891e38d8079ee932597e0f5b231fd1")
ok_hash.append("a1681e72d192b8d3c6a90bf15291c71fd084d9a6")
ok_hash.append("ca46b8ac5c9b169e5304152057ec795e28cdfc6e")
ok_hash.append("d05b9a6a03891e38d8079ee932597e0f5b231fd1")
ok_hash.append("d05b9a6a03891e38d8079ee932597e0f5b231fd1")
ok_hash.append("53c2f4926397c79e22f511986feeee83f494080b")
ok_hash.append("bfd1a50ae98a475338d193c36974ba8e0db5cabf")
ok_hash.append("c2e7737de4420962025af8d946cd57883b00cd32")
ok_hash.append("8ce53bd6fb602ed673a17af2dc28365bfe4e624b")
ok_hash.append("c2e7737de4420962025af8d946cd57883b00cd32")
ok_hash.append("9c2884d0d1db0d6b9732506f3754bee7c4d2a849")
ok_hash.append("c1eff233b5950fd80cb00d984102a44cbf43eeaa")
ok_hash.append("c1eff233b5950fd80cb00d984102a44cbf43eeaa")
ok_hash.append("ddc8063e042a27556bff3b6718457ecb4782bf62")
ok_hash.append("f98eb2b3cec6fcbba61ad6e3dcc294695bb3d738")
ok_hash.append("5d595bd17f978cb9e983f12e47004c765d32067c")
ok_hash.append("e3db1572d61f429530917b90ba4b5997c4b85bf8")
ok_hash.append("5d595bd17f978cb9e983f12e47004c765d32067c")
ok_hash.append("512e096a775a1b36a51444f7a7b46a7bf55e9240")
ok_hash.append("26f6e37fba46d5bc4e1b339ab53702696528351d")
ok_hash.append("6156ad28197b37109393c8de27ec1e0385761fef")
ok_hash.append("681cbaff61cb0188e6569a8f8c957b1a2ebc5337")
ok_hash.append("4617bad060edd3d313a881034ed0361a8272cd7f")
ok_hash.append("c0fc59a53ed734941a64529b1af88df0d3aef48a")
ok_hash.append("a00bcb1769ceb3b55637e044e5a1f3fe0f6df8e0")
ok_hash.append("e1d9d108e8f8890da4fb7c9238da5ef7002e4cb8")
ok_hash.append("f86f38ee6bfbcee9d61300bcab62236816fcb9f2")
ok_hash.append("3acf445dad9a4bc12d29edbdcecb06f8d09c98d2")
ok_hash.append("a13f03aad9b9f9a82ec114ac00bb69d08acb992d")
ok_hash.append("a8fb7a461e9dd9fd3f886edc98c74dbea2402eea")
ok_hash.append("3c69b4f7d988e467af19d6929bbe54a84417ed83")
ok_hash.append("ed7efbe5bfcb9d66c88d888a99f7bcabc068ff76")
ok_hash.append("627c66ae6d55b30f606deb799511da68b057cbb9")
ok_hash.append("f8d2eba5983549e719318bf40bc19c26b26e70d0")
ok_hash.append("a72a255eeba7e159ccc4c9adfd31d66b44e08ca2")
ok_hash.append("a245f7f67d380376ed1f23dc8caa786904be3792")
ok_hash.append("3374a7f5b0f40afde0bbf7f8b58a923400b3e9be")
ok_hash.append("11146e737c9d80bc7100dea9dfc11cb2538de35d")
ok_hash.append("8251a118283948f00b088076aa02fa7dc3a945a2")
ok_hash.append("800a72c04454f0b58c558248692754b23a719cc5")
ok_hash.append("367bea474a0e29e9f2cf97ea6933a72268cf7712")
ok_hash.append("f7181e0488947269759b154de234d57519b1a5c6")
ok_hash.append("b8636c2a605e0fe306d223988446c636b016be07")
ok_hash.append("e88737e196ec7b6731153d6c6ff5f1d458299605")
ok_hash.append("3574e1c51e6efc7348677f9dd8fa1bebd8a47a33")
ok_hash.append("baa8592b035f7d642b39ca0b3c5bd507920819ea")
ok_hash.append("1c1b084b4833f8daf870c22fd033da552fc1035e")
ok_hash.append("916de42cd472e5f67b2a1004fd49b18669d3c506")
ok_hash.append("f6db07100dc630b0e93d2cbc4072bde5b76bac65")
ok_hash.append("88a18b293ddf5129b68cb5b62f19b29e70c18d65")
ok_hash.append("004ca5a2e9db4638d4ee0a2e01463c00cb342fed")
ok_hash.append("64bb11bbbf9b8e6f22747ccd18756b42aef1ed2b")
ok_hash.append("513955be56662451a23ac8950300bad6039f412a")
ok_hash.append("f11e5e39f2a6f07e91ce5a529f9a3855378b248b")
ok_hash.append("f5258ed4f209c7ec4f31ef16b613a4aa73f2d109")
ok_hash.append("28ed44c9d6ffe481d07262184151b2170690690a")
ok_hash.append("cd104d6344a7b45f59895efddc6c946876a2ca4e")
ok_hash.append("2e55bd07505caf6cc5309b9cc9ed3dc2d31c711c")
ok_hash.append("ccf5a775bca9c56144f79bd1a15a962e45852e00")
ok_hash.append("3de5192496e1f0c76b71336e5789a306b0a81252")
ok_hash.append("5337f32243d06b6f320f1ecdab325c94551c2480")
ok_hash.append("c3e5995b68b7b52f4d77bbde9a1cbc239f9c41d2")
ok_hash.append("bbd3a95b1450ef9189eb4be756b0349300e51295")
ok_hash.append("bc805dd3c3e5445a4ec6bd080953b1aa77164b44")
ok_hash.append("97f41c2d5608a79b48ca675efb5e4fbe6c502d44")
ok_hash.append("61575c38e34a2e123aea6c632e857a0b3c75a28d")
ok_hash.append("82f68df81dff4749fd6f01b7a517d4a60164f0c1")
ok_hash.append("7cfdf4703ecded5d1b7c3b989f4f3b2b6cd935ea")
ok_hash.append("39fe007e1f75f4594a3760eeb3f01e50b8522659")
ok_hash.append("dee12f357c4aef6b519c7c441a209a15e011c9a9")
ok_hash.append("d0704ef0868d16b54690349cfe16ae70720b9aa3")
ok_hash.append("2bd1ca99f740706334104e7025a02809944935f4")
ok_hash.append("02da95118e8e2e9befb3abc16af61dfb6df0c335")
ok_hash.append("53913574ebf474bc984bf9779f3b5e51575108d5")
ok_hash.append("4d8e2b473a6253c539545c9738e8fcfc38947eb0")
ok_hash.append("a44c8afa76f470252933fdd07b76a759cfa50016")
ok_hash.append("6831fe6052d63385ba50dbb26112640076451c52")
ok_hash.append("b599932e619522e241d62dedc1c12a69a1e98001")
ok_hash.append("f2457f46eade607262c207cc8394e35f202e343e")
ok_hash.append("681d555943820def10e01c79686fb8038ea96297")
ok_hash.append("6dc629317e11f6c30557b8e53f35de2ff5308223")
ok_hash.append("ed6e5ee81f0f70edd674c826d5fe4a64f155ff89")
ok_hash.append("e1de16161fb1a45c18400de4910caa2eb3593e8c")
ok_hash.append("20c110aff33b62457749df547fe217cb35523d01")
ok_hash.append("0847d80f84cd4036a982f384788cc6d0cf62e84c")
ok_hash.append("c71f87b23bb9ead5d09e292ef3158cc2cf45f88a")
ok_hash.append("ef1bed11cdb4f04ebdb1db6823c8c869a98f31d6")
ok_hash.append("d5b68151124cc0dbe88a301d613ff46ac6689090")
ok_hash.append("b6f3a1caf0781aa45a0560e771cba5f341c1b57d")
ok_hash.append("3dc7614c4cf4bc1db63e7bf2c9663511f615b883")
ok_hash.append("980fef6a7f4e2469ffe2a6c107d44e05ca33a7be")
ok_hash.append("f32b27c8c5f75549624bd009c733f5d156c1edf6")
ok_hash.append("032365d0f7f9fcf89e26c675fb02497e82e500f8")
ok_hash.append("ff0a1dd7a12b05cd4ce98f939698fb7d34645568")
ok_hash.append("005704678b0575327d6ad3833c7f3f27a966a90d")
ok_hash.append("14491167191ed0d933bd523ccfdc89b0e4a3aeb1")
ok_hash.append("b805739abd8eec30f417ec237b31fa044a6b5222")
ok_hash.append("f13a67f19ee8e279f7b420d5f48ceb8abc6a4fd4")
ok_hash.append("39dc56dc1e24bf319998a7fab058652c906c67cf")
ok_hash.append("1e3ea4df5dd74c07c8bcca8963c5ce3530e0a221")
ok_hash.append("a9db00ce31c1804136b9f071a2790708f36e335e")
ok_hash.append("b6e4a201f1f1c561e276062b673a3f86f392bbe8")
ok_hash.append("56013afe6072fbfaf900663065410dee2111cf43")
ok_hash.append("fcf8a7d9e9646a493813606a079c0e2cbd313076")
ok_hash.append("6c0c21e2bb069b0cb733a1cee1d90f2ea8b82aad")
ok_hash.append("38ba3c84d7da1beb1ec36f4e6ff6f6c2e946a289")
ok_hash.append("509c29acd29b32e679eff668d5fb432ab39b5007")
ok_hash.append("c4db053554ef39b13ac397096452f7d0a6d541ff")
ok_hash.append("fd4bbc14c97f3baea3ebd7c9f27a4e0c2b83a9da")
ok_hash.append("2727da7884f80702e0d2d6518bee8e1e30ccdd23")
ok_hash.append("8263333e4511e0a059d4a6eed0a1499f5b806107")
ok_hash.append("7f3d67650f4b755d3b3841b3084270381ceb0440")
ok_hash.append("bfc4c21e6ad66c41ed73cd57ace649636e23f964")
ok_hash.append("651c81ddd6df12ebbff6dfded6733e8ba0e341be")
ok_hash.append("0098f8054c219a125da8fe057f2499e995338410")
ok_hash.append("64acee4b064eb316545a1baf5060674303ddcc77")
ok_hash.append("b9dc49c6283907fd021cbed5d0ca5f29d28684ff")
ok_hash.append("f637041b6f5b9924394c433a26f7759d4a6c02af")
ok_hash.append("4513daf5de4d2f6e4cc4edd45a15e014ce0dd50a")
ok_hash.append("3452014187c4b6a269e26a4a727f033397b8da6e")
ok_hash.append("56d382c0dee374256e7b22bbae00db65445a5762")
ok_hash.append("8e3c47df32460dd7251dd7625b681305cb0648db")
ok_hash.append("3b3c16423d2b803696343b4a71a6c1435f2bf5a2")
ok_hash.append("3a343080b08d2258812dc95693fcf19689b4cf78")
ok_hash.append("a115525c5ceb375b560bfc29ea1b7cce4a61d602")
ok_hash.append("9e05f28a318470d33c91c1bf9092a8380aa9ea11")
ok_hash.append("d06acfb608969841319ead37d624900587aa52ae")
ok_hash.append("7080c75dcc35ed44db80a7aedab3a26a1dd213f5")
ok_hash.append("491fd86eb84f2da644e6a365e58e888b94649cea")
ok_hash.append("d4fcdb0b1cde50ed3b18428e753e5f0f9d46c60e")
ok_hash.append("8251a118283948f00b088076aa02fa7dc3a945a2")
ok_hash.append("800a72c04454f0b58c558248692754b23a719cc5")
ok_hash.append("367bea474a0e29e9f2cf97ea6933a72268cf7712")
ok_hash.append("f7181e0488947269759b154de234d57519b1a5c6")
ok_hash.append("b8636c2a605e0fe306d223988446c636b016be07")
ok_hash.append("e88737e196ec7b6731153d6c6ff5f1d458299605")
ok_hash.append("3574e1c51e6efc7348677f9dd8fa1bebd8a47a33")
ok_hash.append("981ee5d0cee44fe2717b8b80194ad441c054dfb5")
ok_hash.append("7f337e18774ab5c39b78505c5d62a24ced6e0949")
ok_hash.append("080d1a7e33c153d438b7c51a526d86d68dd88945")
ok_hash.append("fb456bc27c10b4e32ff5409c4ba8694cf3958bde")
ok_hash.append("ad2afe1ac8b9261ba7089a63f31c8116233aaa30")
ok_hash.append("bd83e389d1b4c03b7990c752697d290081015d5a")
ok_hash.append("85f6d03b6476f430e191a4bd1fc49b10e7861fb1")
ok_hash.append("90ab4099785936e4c8e80bb139aeef7c6c4b37ca")
ok_hash.append("a93d083c55a22403df01552663c4736b9c193fde")
ok_hash.append("2e244a24d69ea6b11456b14a3c4e73b8c5f6e715")
ok_hash.append("73d4730950435d721409c439fab58dbbbadd4b1f")
ok_hash.append("983617a49a166fcff6b20b7ca697cb35c415ddac")
ok_hash.append("baa8592b035f7d642b39ca0b3c5bd507920819ea")
ok_hash.append("1c1b084b4833f8daf870c22fd033da552fc1035e")
ok_hash.append("916de42cd472e5f67b2a1004fd49b18669d3c506")
ok_hash.append("f6db07100dc630b0e93d2cbc4072bde5b76bac65")
ok_hash.append("88a18b293ddf5129b68cb5b62f19b29e70c18d65")
ok_hash.append("004ca5a2e9db4638d4ee0a2e01463c00cb342fed")
ok_hash.append("64bb11bbbf9b8e6f22747ccd18756b42aef1ed2b")
ok_hash.append("513955be56662451a23ac8950300bad6039f412a")
ok_hash.append("f11e5e39f2a6f07e91ce5a529f9a3855378b248b")
ok_hash.append("f5258ed4f209c7ec4f31ef16b613a4aa73f2d109")
ok_hash.append("28ed44c9d6ffe481d07262184151b2170690690a")
ok_hash.append("3de5192496e1f0c76b71336e5789a306b0a81252")
ok_hash.append("5337f32243d06b6f320f1ecdab325c94551c2480")
ok_hash.append("c3e5995b68b7b52f4d77bbde9a1cbc239f9c41d2")
ok_hash.append("bbd3a95b1450ef9189eb4be756b0349300e51295")
ok_hash.append("bc805dd3c3e5445a4ec6bd080953b1aa77164b44")
ok_hash.append("97f41c2d5608a79b48ca675efb5e4fbe6c502d44")
ok_hash.append("61575c38e34a2e123aea6c632e857a0b3c75a28d")
ok_hash.append("82f68df81dff4749fd6f01b7a517d4a60164f0c1")
ok_hash.append("7cfdf4703ecded5d1b7c3b989f4f3b2b6cd935ea")
ok_hash.append("39fe007e1f75f4594a3760eeb3f01e50b8522659")
ok_hash.append("dee12f357c4aef6b519c7c441a209a15e011c9a9")
ok_hash.append("d0704ef0868d16b54690349cfe16ae70720b9aa3")
ok_hash.append("2bd1ca99f740706334104e7025a02809944935f4")
ok_hash.append("02da95118e8e2e9befb3abc16af61dfb6df0c335")
ok_hash.append("53913574ebf474bc984bf9779f3b5e51575108d5")