-
Notifications
You must be signed in to change notification settings - Fork 2
/
test-o-matic
executable file
·1053 lines (991 loc) · 49.1 KB
/
test-o-matic
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
#!/bin/bash
#####################################################################
#####################################################################
######Modifiable config
###### ################!!!!!!!!!!!!!!!!!!!!!!!!!!!!do "module load altera" in the terminal you plan on running this in!!!!!!!!!!!!!!!!!!!
######Edit and check before running
#MP project name
MP=mp3
#MP directory
MP_DIR=$HOME/ece411/JZ-Wentworth-Cache-Now
#Location of LC3bAssembler; Should usually be in bin
ASSEMBLER=$HOME/ece411/bin/LC3bAssembler
#Addressability of physical memory; from load_memory.sh
ADDRESSABILITY=32
#Testcode directory;Not required but can be used to avoid entering path everytime
TESTCODE_DIR=$HOME/ece411/testcode/
####
####Change according to your design
#See line :183
#If regfile not found comment out 184 and uncomment 183 and the following line
#(not sure if 183 meant 181 and i also uncommented 185)
# the original path was also incorrect so that was changed
REG_FILE={/mp3_tb/dut/datapath_module/regfile_module/data}
RUN_TIME=1000000ns
#Other debug signals
#signals can be prefixed with -radix
#multiple signals need to be separated by a ;
#EXAMPLE:
#DBG_SIGNALS="{/mp/dut/datapath_module/ir_module/opcode}; -radix unsigned {/mp/dut/datapath/pc/data}"
DBG_SIGNALS=
####
####
#Can change output color to preference
red='\e[0;31m'
blue='\e[1;34m'
yellow='\e[1;93m'
NC='\e[0m'
#####################################################################
#####################################################################
#Should not require any change
MODELSIM=$MP_DIR/simulation/modelsim
VSIM=/software/altera/13.1/modelsim_ase/linux/vsim
QUARTUS_TCL=/software/altera/13.1/quartus/common/tcl/internal/nativelink/qnativesim.tcl
BOOL=0
COMPILE=1
TIME=0
#Print Usage
if [[ "$#" -eq 2 ]]; then
TESTCODE=$2
if [[ "$1" == "-n" ]]; then
COMPILE=0
else
echo "Invalid option '$1'"
echo "$0 for usage"
exit
fi
elif [[ "$#" -eq 1 ]]; then
TESTCODE=$1
else
echo "Compare list of register changes from your design with simulator generated list"
echo "Usage: $0 [-n] <asm-file | all>"
echo "-n: Doesn't perform Quartus Analysis, Elaboration and RTL Synthesis"
echo "asm-file (or 'all') with no path uses default testcode directory $TESTCODE_DIR"
echo "Use 'all' instead of asm-file to run through all .asm testcode in the directory"
exit 0
fi
if [[ $(dirname "$TESTCODE") == "." ]]; then
TEST_FILE=${TESTCODE_DIR}$TESTCODE
else
if [[ ! -d $(dirname "$TESTCODE") ]]; then
echo "Directory doesn't exist!"
exit
else
TEST_FILE=$(readlink -fn $TESTCODE)
fi
fi
if [[ $(basename "$TEST_FILE") == "all" ]]; then
ASM_LIST=$(find $(dirname "$TEST_FILE") -type f -name "*.asm")
else
if [[ ! -e $TEST_FILE ]]; then
echo "Testcode file not found"
exit 0
else
ASM_LIST=$TEST_FILE
fi
fi
#COMP_I=7
#ONLY_REGS=1;
# Check for only regs compare
#if [[ "$2" -eq 1 ]]; then
# COMP_I=7;
# ONLY_REGS=1;
#fi
# Remove temporary directory on exit
cleanup()
{
if [ $TIME -ne 0 ]; then kill $!; trap 'kill $!' SIGTERM; fi
echo "Removing temp work directory"
echo
rm -rf -- "$WORK_DIR"
echo "Exiting program..."
}
trap cleanup exit
# Create temporary directory
WORK_DIR="$(mktemp -d)"
echo "Created temp work directory $WORK_DIR"
echo "Creating error log..."
touch $WORK_DIR/error.log
# Create Simulator executable in Work dir
SIMULATOR=$WORK_DIR/list_changes
while true;
do
if [ $BOOL -eq 1 ]
then
# Fail if assembler cannot be found
if [ ! -x "$ASSEMBLER" ]; then
echo "Cannot execute assembler at $ASSEMBLER."
echo "Make sure it exists and is executable."
echo "Check path at the start of this file."
exit 1
fi
# Fail if simulator cannot be found
if [ ! -x "$SIMULATOR" ]; then
echo "Cannot execute simulator at $SIMULATOR."
echo "Report to TA"
#echo "Make sure it exists and is executable."
#echo "Check path at the start of this file."
exit 3
fi
cd $MP_DIR
#Run Quartus SystemVerilog compiler
if [[ "$COMPILE" -eq 1 ]]; then
echo "Running Analysis and Elaboration..."
quartus_map $MP -c $MP > "${WORK_DIR}/error.log"
if [[ "$?" -ne 0 ]]; then
cat "${WORK_DIR}/error.log"
exit 4
fi
echo "Running Quartus RTL synthesis..."
quartus_sh -t $QUARTUS_TCL --no_gui --rtl_sim $MP $MP > "${WORK_DIR}/error.log"
if [[ "$?" -ne 0 ]]; then
cat "${WORK_DIR}/error.log"
exit 4
fi
fi
if [[ ! -e "${MODELSIM}/${MP}_run_msim_rtl_verilog.do" ]]; then
echo "Error: Run compile"
exit 5
fi
echo "Creating .do file..."
#echo "pwd" >> "${WORK_DIR}/do.do"
head -n-2 "${MODELSIM}/${MP}_run_msim_rtl_verilog.do" >> "${WORK_DIR}/do.do"
echo "transcript on" >> "${WORK_DIR}/repeat.do"
tail -n 7 "${MODELSIM}/${MP}_run_msim_rtl_verilog.do" | head -n 1 >> "${WORK_DIR}/repeat.do"
echo "restart -f" >> "${WORK_DIR}/do.do"
#####EXPERIMENTAL#####
#echo 'add list -radix hexadecimal [concat [string range [find instances -r regfile] 0 [expr [string first " " [find instances -r regfile]] - 1]] "/data}"]' | tee -a "${WORK_DIR}/do.do" "${WORK_DIR}/repeat.do" > /dev/null
echo "add list -radix hexadecimal $REG_FILE" | tee -a "${WORK_DIR}/do.do" "${WORK_DIR}/repeat.do" > /dev/null
#Debug signals
if [[ -n $DBG_SIGNALS ]]; then
oIFS=$IFS
IFS=';'
for signal in $DBG_SIGNALS
do
echo "add list -notrigger $signal" | tee -a "${WORK_DIR}/do.do" "${WORK_DIR}/repeat.do" > /dev/null
done
IFS=$oIFS
fi
echo "run $RUN_TIME" | tee -a "${WORK_DIR}/do.do" "${WORK_DIR}/repeat.do" > /dev/null
echo "write list ${WORK_DIR}/test_list.lst" | tee -a "${WORK_DIR}/do.do" "${WORK_DIR}/repeat.do" > /dev/null
echo "exit" | tee -a "${WORK_DIR}/do.do" "${WORK_DIR}/repeat.do" > /dev/null
DO_FILE="${WORK_DIR}/do.do"
for ASM_FILE in $ASM_LIST; do
echo
echo "Using testcode $ASM_FILE"
#Copying testcode to WORK_DIR
cp "$ASM_FILE" "$WORK_DIR"
#Assemble code
echo "Assembling testcode..."
"$ASSEMBLER" -b "${WORK_DIR}/$(basename $ASM_FILE)" > "${WORK_DIR}/error.log"
if [[ "$?" -ne 0 ]]; then
cat "${WORK_DIR}/error.log"
exit 3
fi
OBJ_FILE="${WORK_DIR}/$(basename $ASM_FILE .asm).obj"
# Fail if object file doesn't exist or has no memory content
if [[ ! -e "$OBJ_FILE" || "$(cat "$OBJ_FILE" | wc -c)" -le "16" ]]; then
echo "Error assembling $ASM_FILE, not generating memory file"
exit 2
fi
# Simulate object file
SIM_LIST="${WORK_DIR}/sim.lst"
echo "Simulating registers..."
"$SIMULATOR" "$OBJ_FILE" > "$SIM_LIST"
if [[ ! -e "$SIM_LIST" ]]; then
cat $SIM_LIST
exit 5
fi
# Write memory to file
{
echo -n "@"
hexdump -ve '1/8 "%016X\n"' -n 8 "$OBJ_FILE"
hexdump -ve $ADDRESSABILITY'/1 "%02X " "\n"' -s 16 "$OBJ_FILE" \
| awk '{for (i = NF; i > 0; i--) printf "%s", $i; print ""}'
} > "${MP_DIR}/memory.lst"
echo "Assembled $ASM_FILE and wrote memory contents to $MP_DIR/memory.lst"
#Generate test_list
echo "Running Modelsim to generate list..."
echo -e "${red}If it fails or is taking longer than expected, check $MP_DIR/transcript for errors"
echo -e "Hit ctrl+c; type 'exit' (timer may overwrite text) and press 'Enter' to exit${NC}"
TIME=1
while true; do
echo -ne " $(date --date @$(($TIME)) +%M:%S)\r"
TIME=$((TIME+1)); sleep 1
done &
"$VSIM" -c -do $DO_FILE > /dev/null
echo
kill $!; trap 'kill $!' SIGTERM
TIME=0
if [[ ! -e "${WORK_DIR}/test_list.lst" ]]; then
echo "Check $MP_DIR/transcript for errors"
exit 6
fi
#Remove memory file
echo "Removing $MP_DIR/memory.lst"
echo
rm ${MP_DIR}/memory.lst
# Shave top few lines from list file
idx=1
while [ "$(head -n ${idx} "$WORK_DIR/test_list.lst" | tail -n 1 | awk '{print $1}')" != 0 ];
do
idx=$[$idx+1]
done
#echo "${idx}"
tail -n+${idx} "$WORK_DIR/test_list.lst" > "${WORK_DIR}/tmp.lst"
# Start comparing lists
echo -e "Starting check..."
err_cnt=0;
while true;
do
read -r a
read -r b <&3 #"tmp.lst"
if [ -z "$b" -a -n "$a" ]; then
echo -e "${red}Test list shorter than simulated list"
echo -e "Check transcript file for errors or Run for longer${NC}"
echo
BOOL=0
break
fi
if [ -z "$a" ]; then
break
fi
sim=( $a )
test=( $b )
#time column
print_err="${test[0]} " #${test[1]} "
print_cor="${test[0]//[${test[0]}]/ } " #${test[1]//[${test[1]}]/ } "
for ((i=0; i<=7; i++)) #7->$COMP_I
do
#if [[ a=$(echo $sim | awk '{print $i}') != b=$(echo $test | awk '{print $i}') ]]; then
j=$i+2
if [[ ${sim[i]} != ${test[j]} ]]; then
print_err="$print_err${red}${test[j]}${NC} "
print_cor="$print_cor${blue}${sim[i]}${NC} "
#echo -e " ${sim[i]}"
error=1
err_cnt=$[$err_cnt+1]
else
print_err="$print_err${test[j]} "
print_cor="$print_cor${test[j]//[${test[j]}]/ } "
fi
done
#DEBUG SIGNALS
j=$j+1
while [[ ${test[j]} != '' ]];
do
print_err="$print_err${test[j]} "
j=$j+1
done
#print_cor="$print_cor${blue}${sim[i+1]}${NC} "
#print_cor="$print_cor${blue}${sim[i+2]}${NC}"
if [[ $error -eq 1 ]]; then
echo -e "$print_err"
echo -e "$print_cor"
error=0
fi
done <"$SIM_LIST" 3<"${WORK_DIR}/tmp.lst"
if [[ $BOOL -eq 1 ]]; then
echo -e "Total errors = ${err_cnt}"
echo
echo -e "Final values:"
echo -e "$print_err"
echo
if [[ $err_cnt -ne 0 ]]; then exit; fi
else
echo "Press [Enter] to print list generated by Modelsim..."
read _key
echo -e "${blue}List from Modelsim:${NC}"
cat ${WORK_DIR}/tmp.lst
echo
echo "Press [Enter] to print list generated by Simulator..."; read _key
echo
echo -e "${blue}Simulated Regfile:${NC}"
cat $SIM_LIST
echo
echo "Press [Enter] to print VSIM transcript ($MP_DIR/transcript)..."; read _key
echo
cat $MP_DIR/transcript
echo
exit
fi
DO_FILE="${WORK_DIR}/repeat.do"
done
echo
echo "All test(s) complete"
exit
else
echo "
7f454c4602010100000000000000000002003e0001000000800740000000
00004000000000000000c838000000000000000000004000380008004000
250022000600000005000000400000000000000040004000000000004000
400000000000c001000000000000c0010000000000000800000000000000
030000000400000000020000000000000002400000000000000240000000
00001c000000000000001c00000000000000010000000000000001000000
05000000000000000000000000004000000000000000400000000000641d
000000000000641d00000000000000002000000000000100000006000000
681d000000000000681d600000000000681d6000000000004c0200000000
0000680200000000000000002000000000000200000006000000901d0000
00000000901d600000000000901d60000000000090010000000000009001
000000000000080000000000000004000000040000001c02000000000000
1c024000000000001c024000000000004400000000000000440000000000
0000040000000000000050e5746404000000801b000000000000801b4000
00000000801b4000000000005c000000000000005c000000000000000400
00000000000051e574640600000000000000000000000000000000000000
000000000000000000000000000000000000000000000000080000000000
00002f6c696236342f6c642d6c696e75782d7838362d36342e736f2e3200
040000001000000001000000474e55000000000002000000060000001200
0000040000001400000003000000474e550023723d7d022d4a833b5565b5
1ed6e07fc6baf2f902000000100000000100000006000000000100000000
0002000000001000000039f28b1c00000000000000000000000000000000
000000000000000000000000620000001200000000000000000000000000
000000000000310000001200000000000000000000000000000000000000
010000002000000000000000000000000000000000000000250000001200
0000000000000000000000000000000000001a0000001200000000000000
0000000000000000000000001f0000001200000000000000000000000000
000000000000690000001200000000000000000000000000000000000000
7b00000012000000000000000000000000000000000000003f0000001200
0000000000000000000000000000000000005b0000001200000000000000
000000000000000000000000380000001200000000000000000000000000
0000000000002a0000001200000000000000000000000000000000000000
460000001200000000000000000000000000000000000000540000001200
000000000000000000000000000000000000610000001200000000000000
0000000000000000000000004d00000011001900b81f6000000000000800
000000000000005f5f676d6f6e5f73746172745f5f006c6962632e736f2e
36006578697400666f70656e00707574730063616c6c6f63006d656d7365
74006d656d636d70006d656d6370790066636c6f73650073746465727200
66777269746500667265616400667072696e7466005f5f6c6962635f7374
6172745f6d61696e006672656500474c4942435f322e322e350000000200
020000000200020002000200020002000200020002000200020002000200
000001000100100000001000000000000000751a69090000020080000000
00000000201f60000000000006000000030000000000000000000000b81f
60000000000005000000100000000000000000000000401f600000000000
07000000010000000000000000000000481f600000000000070000000200
00000000000000000000501f600000000000070000000400000000000000
00000000581f60000000000007000000050000000000000000000000601f
60000000000007000000060000000000000000000000681f600000000000
07000000070000000000000000000000701f600000000000070000000800
00000000000000000000781f600000000000070000000900000000000000
00000000801f600000000000070000000a0000000000000000000000881f
600000000000070000000b0000000000000000000000901f600000000000
070000000c0000000000000000000000981f600000000000070000000d00
00000000000000000000a01f600000000000070000000e00000000000000
00000000a81f600000000000070000000f00000000000000000000004883
ec08e833010000e8c2010000e8ad1200004883c408c3ff35a2182000ff25
a41820000f1f4000ff25a21820006800000000e9e0ffffffff259a182000
6801000000e9d0ffffffff25921820006802000000e9c0ffffffff258a18
20006803000000e9b0ffffffff25821820006804000000e9a0ffffffff25
7a1820006805000000e990ffffffff25721820006806000000e980ffffff
ff256a1820006807000000e970ffffffff25621820006808000000e960ff
ffffff255a1820006809000000e950ffffffff2552182000680a000000e9
40ffffffff254a182000680b000000e930ffffffff2542182000680c0000
00e920ffffffff253a182000680d000000e910ffffff0000000000000000
31ed4989d15e4889e24883e4f0505449c7c09018400048c7c1a018400048
c7c764084000e83ffffffff490904883ec08488b05691720004885c07402
ffd04883c408c390909090909090909090909090554889e5534883ec0880
3de017200000754bbb801d6000488b05da1720004881eb781d600048c1fb
034883eb014839d87324660f1f4400004883c001488905b5172000ff14c5
781d6000488b05a71720004839d872e2c60593172000014883c4085bc9c3
6666662e0f1f84000000000048833d4015200000554889e57412b8000000
004885c07408bf881d6000c9ffe0c9c39090554889e54883ec10897dfc48
8975f0837dfc017f2d488b45f0488b10b988194000488b052c1720004889
ce4889c7b800000000e8ccfeffffbf00000000e822feffff488b45f04883
c008488b004889c7e807000000b800000000c9c3554889e5534881ec8800
02004889bd98fffdffc745dc00000000488b9598fffdff488d85c0fffeff
4889d64889c7e8e9000000488b9598fffdff488d85a0fffdff4889d64889
c7e8d00000000fb785c0fffeff440fb7c00fb785c2fffeff0fb7f80fb785
c4fffeff0fb7f00fb785c6fffeff440fb7c80fb785c8fffeff440fb7d00f
b785cafffeff0fb7c80fb785ccfffeff0fb7d00fb785cefffeff0fb7d8b8
a01940004489442410897c24088934244589d089de4889c7b800000000e8
16fdffffeb39488d85c0fffeff4889c7e871010000488945e0488b55e048
8d8da0fffdff488d85c0fffeff4889ce4889c7e8540a00008945ec837dec
00740f8345dc01817ddcffc99a3b76baeb0190b8000000004881c4880002
005bc9c3554889e5534883ec1848897de8488975e0488b45e8ba16000100
be000000004889c7e8a5fcffff488b45e8488d5810488b45e8488d481548
8b45e04889c24889de4889cfe80c000000b8000000004883c4185bc9c355
4889e5534883ec4848897dc8488975c0488955b8bacb194000488b45b848
89d64889c7e87efcffff488945e848837de800752ab9d0194000488b0547
152000488b55b84889ce4889c7b800000000e8e3fcffffbf01000000e839
fcffff488b55e8488d45e04889d1ba08000000be010000004889c7e86cfc
ffff488b55e8488d45d84889d1ba08000000be010000004889c7e84ffcff
ff488b5dd8488b45e0480345c8488b55e84889d1ba010000004889de4889
c7e82cfcffff488b45e84889c7e850fcffffb8000000004883c4485bc9c3
554889e5534883ec4848897db8be28000000bf01000000e818fcffff4889
45e0488b45b84883c0154889c2488b45b80fb7401066d1e80fb7c04801c0
488d04020fb700668945ce0fb745ce66c1e80c8845d00fb745ce66c1e809
83e0078845d10fb745ce66c1e80683e0078845d20fb745ce83e0078845d3
0fb745cec1e00b66c1f80b668945d40fb745cec1e00a66c1f80a668945d6
0fb745cec1e00766c1f807668945d80fb745cec1e00566c1f805668945da
0fb745ce83e00f8845dc0fb745ce8845dd488b45b80fb7401083c0026689
45de0fb745de0fbfd0488b45e089d1ba00000000be010000004889c7e83a
0700000fb645d083f80f0f87fc06000089c0488b04c5381a4000ffe00fb7
45ce66c1e8050fb7c083e00185c075290fbe55d2488b45b84863d20fb704
5089c10fbe55d3488b45b84863d20fb704508d0401668945eeeb1c0fbe55
d2488b45b84863d20fb7045089c20fb745d48d0402668945ee0fbf4dee66
0fbe45d10fb7d0488b45e0be000000004889c7e8ad0600000fbf55ee488b
45e089d1ba00000000be020000004889c7e891060000e9810600000fb745
ce66c1e8050fb7c083e00185c075260fbe55d2488b45b84863d20fb70c50
0fbe55d3488b45b84863d20fb7045021c8668945eeeb170fbe55d2488b45
b84863d20fb70450662345d4668945ee0fbf4dee660fbe45d10fb7d0488b
45e0be000000004889c7e8200600000fbf55ee488b45e089d1ba00000000
be020000004889c7e804060000e9f40500000fb745ce66c1e80b0fb7c083
e00184c0740c488b45b80fb6401284c075440fb745ce66c1e80a0fb7c083
e00184c0740c488b45b80fb6401384c075260fb745ce66c1e8090fb7c083
e00184c00f849e050000488b45b80fb6401484c00f84910500000fb745d8
01c0660345de668945ee0fbf55ee488b45e089d1ba00000000be01000000
4889c7e873050000e9630500000fbe55d2488b45b84863d20fb704506689
45ee0fbf55ee488b45e089d1ba00000000be010000004889c7e83f050000
e92f0500000fb745de0fbfd0488b45e089d1ba07000000be000000004889
c7e81b0500000fb745ce66c1e80b0fb7c083e00185c075340fbe55d2488b
45b84863d20fb70450668945ee0fbf55ee488b45e089d1ba00000000be01
0000004889c7e8da040000e9ca0400000fb745da01c0660345de668945ee
0fbf55ee488b45e089d1ba00000000be010000004889c7e8ab040000e99b
0400000fbe55d2488b45b84863d20fb7045089c20fb745d68d0402668945
ec488b45b84883c0154889c20fb745ec488d04020fb6000fb6c0668945ee
0fbf4dee660fbe45d10fb7d0488b45e0be000000004889c7e8500400000f
bf55ee488b45e089d1ba00000000be020000004889c7e834040000e92404
00000fbe55d2488b45b84863d20fb704500fb755d601d201d0668945ec48
8b45b84883c0150fb755ec66d1ea0fb7d24801d24801d00fb700668945ec
488b45b84883c0150fb755ec66d1ea0fb7d24801d24801d00fb700668945
ee0fbf4dee660fbe45d10fb7d0488b45e0be000000004889c7e8b9030000
0fbf55ee488b45e089d1ba00000000be020000004889c7e89d030000e98d
0300000fbe55d2488b45b84863d20fb704500fb755d601d201d0668945ec
488b45b84883c0150fb755ec66d1ea0fb7d24801d24801d00fb700668945
ee0fbf4dee660fbe45d10fb7d0488b45e0be000000004889c7e841030000
0fbf55ee488b45e089d1ba00000000be020000004889c7e825030000e915
0300000fb745d801c0660345de668945ee0fbf4dee660fbe45d10fb7d048
8b45e0be000000004889c7e8f50200000fbf55ee488b45e089d1ba000000
00be020000004889c7e8d9020000e9c90200000fbe55d2488b45b84863d2
0fb70450f7d0668945ee0fbf4dee660fbe45d10fb7d0488b45e0be000000
004889c7e8a20200000fbf55ee488b45e089d1ba00000000be0200000048
89c7e886020000e976020000488b05010f20004889c2b8f81940004889d1
ba1e000000be010000004889c7e884f6ffffe94d0200000fb745ce66c1e8
040fb7c083e00185c075240fbe55d2488b45b84863d20fb704500fbfd00f
b645dc89d389c1d3e389d8668945eeeb580fb745ce66c1e8050fb7c083e0
0185c075240fbe55d2488b45b84863d20fb704500fb7d00fb645dc89d389
c1d3fb89d8668945eeeb220fbe55d2488b45b84863d20fb704500fbfd00f
b645dc89d389c1d3fb89d8668945ee0fbf4dee660fbe45d10fb7d0488b45
e0be000000004889c7e8ad0100000fbf55ee488b45e089d1ba00000000be
020000004889c7e891010000e9810100000fbe55d2488b45b84863d20fb7
045089c20fb745d68d0402668945ec0fbe55d1488b45b84863d20fb70450
6625ff00668945ee0fbf4dee0fb755ec488b45e0be030000004889c7e840
010000e9300100000fbe55d2488b45b84863d20fb704500fb755d601d201
d0668945ec488b45b84883c0150fb755ec66d1ea0fb7d24801d24801d00f
b700668945ec0fbe55d1488b45b84863d20fb70450668945ee0fbf4dee0f
b755ec488b45e0be040000004889c7e8d5000000e9c50000000fbe55d248
8b45b84863d20fb704500fb755d601d201d0668945ec0fbe55d1488b45b8
4863d20fb70450668945ee0fbf4dee0fb755ec488b45e0be040000004889
c7e889000000eb7c0fb745de0fbfd0488b45e089d1ba07000000be000000
004889c7e868000000488b45b84883c0150fb655dd4801d24801d00fb700
668945ee0fbf55ee488b45e089d1ba00000000be010000004889c7e83300
0000eb260fb655d0b9171a4000488b05a80c20004889ce4889c7b8000000
00e848f4ffffeb0490eb0190488b45e04883c4485bc9c3554889e54883ec
2048897df88975f489c8668955f0668945ec837df4040f87890000008b45
f4488b04c5d81a4000ffe00fb745f0488b55f84898c60402010fb755f048
8b45f84863d20fb74dec66894c500ceb7c488b45f8c6400801488b45f80f
b755ec6689501ceb66488b45f8c6400901488b45f80fb755ec6689501eeb
50488b45f8c6400a01488b45f88b55f4895024488b45f80fb755f0668950
20488b45f80fb755ec66895022eb24488b05d40b20004889c2b8b81a4000
4889d1ba18000000be010000004889c7e857f3ffffb800000000c9c35548
89e5534883ec5848897dd8488975d0488955c8c745e800000000c745ec00
000000e9dd0000008b45ec488b55c848980fb6040284c00f84c40000008b
55ec488b45c84863d20fb74c500c8b55ec488b45d84863d20fb704506639
c10f849e0000008345e8018b5dec8b55ec488b45c84863d20fb74c500c48
8b45d84863d366890c50488b45d80fb700440fb7c0488b45d80fb740020f
b7f8488b45d80fb740040fb7f0488b45d80fb74006440fb7c8488b45d80f
b74008440fb7d0488b45d80fb7400a0fb7c8488b45d80fb7400c0fb7d048
8b45d80fb7400e0fb7d8b8a01940004489442410897c24088934244589d0
89de4889c7b800000000e88ff1ffff8345ec01837dec070f8e19ffffff48
8b45c80fb6400884c00f8488000000488b45c80fb7401c0fbfd0488b45d8
0fb740100fb7c039c2746e488b45c80fb7401c0fbfd0488b45d80fb74010
0fb7c039c27d3e488b4dd8488b45d0ba160001004889ce4889c7e8b5f1ff
ff85c0750ab800000000e902020000488b4dd8488b45d0ba160001004889
ce4889c7e86ff1ffff8345e801488b45c80fb7401c89c2488b45d8668950
10488b45c80fb6400984c00f84ac000000488b45c80fb7401e6685c0752d
488b45d80fb6401383f00184c0741e8345e801488b45d8c6401200488b45
d8c6401301488b45d8c6401400eb72488b45c80fb7401e6685c07e2d488b
45d80fb6401483f00184c0741e8345e801488b45d8c6401200488b45d8c6
401300488b45d8c6401401eb38488b45c80fb7401e6685c0792b488b45d8
0fb6401283f00184c0741c8345e801488b45d8c6401201488b45d8c64013
00488b45d8c6401400488b45c80fb6400a84c00f84f9000000488b45c88b
402483f803740a83f8047456e9b1000000488b45c80fb7402289c1488b45
c80fb740200fb7c0488b55d848980fb644021538c10f84b70000008345e8
01488b45c80fb740200fb7d8488b45c80fb7402289c1488b55d84863c388
4c0215e992000000488b45c80fb75022488b45d84883c0154889c1488b45
c80fb7402066d1e80fb7c04801c0488d04010fb7006639c274618345e801
488b45d84883c0154889c2488b45c80fb7402066d1e80fb7c04801c04801
c2488b45c80fb74022668902eb32488b056f0820004889c2b8001b400048
89d1ba1d000000be010000004889c7e8f2efffffbf01000000e858efffff
90eb0190488b45c84889c7e878efffff8b45e84883c4585bc9c3554889e5
534883ec2848897dd889f08845d4bf201b4000e812efffff488b45d80fb7
40100fb7d0b8491b400089d64889c7b800000000e8d3eeffff488b45d80f
b640140fb6c8488b45d80fb640130fb6d0488b45d80fb640120fb6d8b855
1b400089de4889c7b800000000e89eeeffffc745ec00000000eb2c8b55ec
488b45d84863d20fb704500fb7d0b8621b40008b4dec89ce4889c7b80000
0000e86deeffff8345ec01837dec077ece807dd4007447c745ec00000000
eb38488b45d84883c0158b55ec4863d24801d24801d00fb7000fb7d08b45
ec8d0c00b86f1b400089ce4889c7b800000000e820eeffff8345ec01837d
ec1f7ec24883c4285bc9c390909090909090f3c366666666662e0f1f8400
0000000048896c24d84c896424e0488d2db30420004c8d25ac0420004c89
6c24e84c897424f04c897c24f848895c24d04883ec384c29e54189fd4989
f648c1fd034989d7e88bedffff4885ed741c31db0f1f40004c89fa4c89f6
4489ef41ff14dc4883c3014839eb72ea488b5c2408488b6c24104c8b6424
184c8b6c24204c8b7424284c8b7c24304883c438c3909090909090905548
89e5534883ec08488b05280420004883f8ff7419bb681d60000f1f440000
4883eb08ffd0488b034883f8ff75f14883c4085bc9c390904883ec08e85f
eeffff4883c408c300000100020000000000000000000000000055736167
653a202573206f626a2d66696c650a00000000007b253034782025303478
202530347820253034782025303478202530347820253034782025303478
7d0a00726200000043616e6e6f74206f70656e206f626a6563742066696c
652025732c2061626f7274696e672e0a00005761726e696e673a20525449
206e6f7420696d706c656d656e746564210a005761726e696e673a20756e
6b6f776e206f70636f646520782558210a0000000000320d400000000000
100c4000000000008b0e400000000000a511400000000000f70d40000000
0000a50c400000000000990f4000000000006112400000000000b0104000
000000005d10400000000000020f400000000000f611400000000000c30d
400000000000d9104000000000001110400000000000aa12400000000000
556e6578706563746564206368616e67652074797065210a000000000000
0000611340000000000085134000000000009b13400000000000b1134000
00000000b1134000000000004572726f723a20756e6b6e6f776e20434847
5f4d454d2074797065210a0000002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0050433a2030
78253034580a004e5a503a202564256425640a005225643a203078253034
580a003078253034583a203078253034580a0000011b033b5c0000000a00
0000e4ecffff7800000040edffff980000005ceeffffc0000000b1eeffff
e000000084efffff08010000b1f7ffff3001000088f8ffff500100000afc
ffff7801000010fdffffa001000020fdffffb80100000000000014000000
00000000017a5200017810011b0c0708900100001c0000001c00000064ec
ffff5c00000000410e108602430d0602570c07080000240000003c000000
a0ecffff1c01000000410e108602430d066a830302ed0c07080000000000
00001c0000006400000094edffff5500000000410e108602430d065e8303
720c07082400000084000000c9edffffd300000000410e108602430d0660
830302ae0c07080000000000000024000000ac00000074eeffff2d080000
00410e108602430d065383030315080c07080000000000001c000000d400
000079f6ffffd700000000410e108602430d0602d20c0708000024000000
f400000030f7ffff8203000000410e108602430d066483030359030c0708
000000000000240000001c0100008afaffffff00000000410e108602430d
0653830302e70c070800000000000000140000004401000068fbffff0200
00000000000000000000240000005c01000060fbffff8900000000518c05
86065f0e4083078f028e038d0402580e080000000000000000000000ffff
ffffffffffff0000000000000000ffffffffffffffff0000000000000000
0000000000000000010000000000000010000000000000000c0000000000
000070064000000000000d000000000000006819400000000000f5feff6f
000000006002400000000000050000000000000020044000000000000600
00000000000088024000000000000a000000000000008c00000000000000
0b0000000000000018000000000000001500000000000000000000000000
00000300000000000000281f600000000000020000000000000050010000
000000001400000000000000070000000000000017000000000000002005
4000000000000700000000000000f0044000000000000800000000000000
300000000000000009000000000000001800000000000000feffff6f0000
0000d004400000000000ffffff6f000000000100000000000000f0ffff6f
00000000ac04400000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000901d6000
00000000000000000000000000000000000000009e06400000000000ae06
400000000000be06400000000000ce06400000000000de06400000000000
ee06400000000000fe064000000000000e074000000000001e0740000000
00002e074000000000003e074000000000004e074000000000005e074000
000000006e07400000000000000000004743433a2028474e552920342e34
2e3720323031323033313320285265642048617420342e342e372d332900
4743433a2028474e552920342e342e372032303132303331332028526564
2048617420342e342e372d3429002c000000020000000000080000000000
64084000000000005c000000000000000000000000000000000000000000
00002c000000020015030000080000000000c008400000000000c90f0000
000000000000000000000000000000000000000017000000020000000000
15030000b40200006d61696e000000000095000000020015030000490800
00bc04000073696d756c6174650040050000696e69745f6d616368696e65
5f737461746500860500006c6f61645f70726f6772616d00120600007072
6f636573735f696e737472756374696f6e00170700006164645f6368616e
67650073070000636f6d6d69745f6368616e67657300e20700007072696e
745f6d616368696e655f7374617465000000000011030000030000000000
0801640000000ca7010000d90000006408400000000000c0084000000000
0000000000021700000002d338000000030807b4000000030108a6000000
030207c6000000030407b9000000030106a8000000030205bc0100000404
05696e74000308059e0100000288010000038d690000000200000000038e
69000000050806088e000000030106af000000071e000000d8040f013102
000008d6010000041001620000000008570000000415018800000008080a
0000000416018800000010080b0200000417018800000018082e00000004
1801880000002008e9010000041901880000002808ae010000041a018800
0000300861010000041b018800000038083d000000041c0188000000c000
0898000000041e0188000000c80008c6010000041f0188000000d00008f7
00000004200188000000d800080f01000004220169020000e00008910000
000424016f020000e800085901000004260162000000f000082201000004
2a0162000000f4000830010000042c0170000000f800084d010000043001
460000008001087401000004310154000000820108190200000432017502
00008301083c0100000436018502000088010834010000043f017b000000
900108e2010000044801860000009801084900000004490186000000a001
0850000000044a0186000000a80108f7010000044b0186000000b00108fe
010000044c012d000000b801088b000000044e0162000000c00108900100
000450018b020000c40100090401000004b40a420100001804ba69020000
0b6e01000004bb69020000000b2a01000004bc6f020000080b1801000004
c06200000010000608380200000608950000000c8e000000850200000d38
00000000000608310200000c8e0000009b0200000d3800000013000608a1
0200000e8e00000003080599010000030102050200000f011d0100000105
01620000006408400000000000c008400000000000019cf4020000108301
000001056200000002916c10dd0100000105f40200000291600006089b02
0000112700000005a76f0200000101112700000005a76f02000001010045
0800000300e00000000801640000000c03030000d9000000c00840000000
00008918400000000000bc00000002bb030000022538000000030106a800
0000028902000002264a000000030205bc010000040405696e7400030805
9e01000002ba03000002316a000000030108a6000000028802000002327c
000000030207c6000000030407b9000000022c0200000238950000000308
07b4000000021700000003d3950000000288010000048d58000000020000
0000048e5800000005080608c5000000030106af00000002220000000531
d7000000071e000000d8060f017302000008d60100000610015100000000
0857000000061501bf00000008080a000000061601bf00000010080b0200
00061701bf00000018082e000000061801bf0000002008e9010000061901
bf0000002808ae010000061a01bf000000300861010000061b01bf000000
38083d000000061c01bf000000c0000898000000061e01bf000000c80008
c6010000061f01bf000000d00008f7000000062001bf000000d800080f01
0000062201ab020000e0000891000000062401b1020000e8000859010000
06260151000000f0000822010000062a0151000000f4000830010000062c
01a7000000f800084d0100000630017c0000008001087401000006310138
00000082010819020000063201b70200008301083c010000063601c70200
0088010834010000063f01b2000000900108e2010000064801bd00000098
010849000000064901bd000000a0010850000000064a01bd000000a80108
f7010000064b01bd000000b00108fe010000064c019c000000b801088b00
0000064e0151000000c0010890010000065001cd020000c4010009040100
0006b40a420100001806baab0200000b6e01000006bbab020000000b2a01
000006bcb1020000080b1801000006c051000000100006087a0200000608
d70000000cc5000000c70200000d9500000000000608730200000cc50000
00dd0200000d9500000013000608e30200000ec500000003080599010000
0f1600010007283a03000010720007293a0300000010706300072a710000
0010106e00072b4a03000012107a00072b4a03000013107000072b4a0300
00140bac020000072c5103000015000c3f0000004a0300000d9500000007
00030102050200000c2d000000620300001195000000ffff000245020000
072def02000012ae03000004072fd903000013414444000113414e440005
1342520000134a4d50000c134a53520004134c44420002134c4449000a13
4c44520006134c4541000e134e4f54000913525449000813534846000d13
535442000313535449000b135354520007145e0200000f00126103000004
07420404000014a60300000014170300000114f30200000214c602000003
1454030000040002610300000748d9030000150b074b4404000010720007
4c440400000010706300074d2d0000000810636300074e2d000000090bac
020000074f2d0000000a000c2d000000540400000d9500000007000ac203
000028074ab10400000b6c02000007500f0400000010720007523a030000
0c1070630007533f0000001c1063630007543f0000001e0b630200000756
71000000200b2302000007573f000000220bd30200000758040400002400
021e03000007595404000016010e03000001030151000000c00840000000
0000dc09400000000000019c3a05000017e60200000103dd020000049188
ff77183a02000001058300000002914c18a402000001083a050000029150
18a002000001095100000002915c18b8020000010c620300000491b0ff7b
187d020000010d62030000049190ff77000608b10400001601b302000001
2c0151000000dc09400000000000310a400000000000019c8005000017c0
020000012c8005000002915817e6020000012cdd02000002915000060862
03000016012a03000001330151000000310a400000000000040b40000000
0000019c0006000017ac0200000133000600000391b87f19706300013306
0600000391b07f17e60200000133dd0200000391a87f18fa02000001350c
060000029158183501000001368a000000029150187302000001378a0000
000291480006082d0000000608710000000608cc00000016014003000001
4d013a050000040b4000000000003113400000000000019c1707000017c0
020000014d800500000391a87f1835020000014f710000000391be7f18b3
03000001505f0000000291401a64720001512d0000000291411a73723100
01512d0000000291421a7372320001512d00000002914318720300000152
3f000000029144188203000001523f000000029146188a03000001523f00
0000029148183703000001523f00000002914a186d03000001535f000000
02914c18dc02000001535f00000002914d1a706332000155710000000291
4e18a402000001573a050000029150186702000001587100000002915c1a
76616c0001593f00000002915e0016017703000001ee0151000000311340
00000000000814400000000000019c7307000017a402000001ee3a050000
029168176803000001ee04040000029164196b65790001ee710000000291
601976616c0001ee3f00000002915c001b0191020000010f010151000000
08144000000000008a17400000000000019ce20700001cc0020000010f01
800500000291481c7d020000010f01800500000291401ca4020000010f01
3a0500000391b87f1da0020000011101510000000291581e690001120151
00000002915c001f0192030000016301018a174000000000008918400000
000000019c2e0800001cc0020000016301800500000291481c5502000001
63014a0300000291441e69000165015100000002915c00202700000005a7
b10200000101202700000005a7b1020000010100011101250e130b030e1b
0e1101120110060000021600030e3a0b3b0b491300000324000b0b3e0b03
0e00000424000b0b3e0b03080000050f000b0b0000060f000b0b49130000
071301030e0b0b3a0b3b0501130000080d00030e3a0b3b054913380d0000
091600030e3a0b3b0b00000a1301030e0b0b3a0b3b0b011300000b0d0003
0e3a0b3b0b4913380d00000c01014913011300000d210049132f0b00000e
2600491300000f2e013f0c030e3a0b3b0b270c491311011201400a011300
00100500030e3a0b3b0b4913020a0000113400030e3a0b3b0b49133f0c3c
0c000000011101250e130b030e1b0e1101120110060000021600030e3a0b
3b0b491300000324000b0b3e0b030e00000424000b0b3e0b03080000050f
000b0b0000060f000b0b49130000071301030e0b0b3a0b3b050113000008
0d00030e3a0b3b054913380d0000091600030e3a0b3b0b00000a1301030e
0b0b3a0b3b0b011300000b0d00030e3a0b3b0b4913380d00000c01014913
011300000d210049132f0b00000e2600491300000f13010b063a0b3b0b01
130000100d0003083a0b3b0b4913380d000011210049132f050000120401
030e0b0b3a0b3b0b0113000013280003081c0d0000142800030e1c0d0000
1513010b0b3a0b3b0b01130000162e013f0c030e3a0b3b0b270c49131101
1201400a01130000170500030e3a0b3b0b4913020a0000183400030e3a0b
3b0b4913020a000019050003083a0b3b0b4913020a00001a340003083a0b
3b0b4913020a00001b2e013f0c030e3a0b3b05270c491311011201400a01
1300001c0500030e3a0b3b054913020a00001d3400030e3a0b3b05491302
0a00001e340003083a0b3b054913020a00001f2e013f0c030e3a0b3b0527
0c11011201400a01130000203400030e3a0b3b0b49133f0c3c0c000000b8
0000000200980000000101fb0e0d0001010101000000010000012f757372
2f6c69622f6763632f7838365f36342d7265646861742d6c696e75782f34
2e342e372f696e636c756465002f7573722f696e636c7564652f62697473
002f7573722f696e636c75646500006d61696e2e63000000007374646465
662e680001000074797065732e68000200006c6962696f2e680003000073
7464696f2e680003000000000902640840000000000017e567022313a108
30590202000101570200000200b60000000101fb0e0d0001010101000000
010000012f7573722f696e636c756465002f7573722f6c69622f6763632f
7838365f36342d7265646861742d6c696e75782f342e342e372f696e636c
756465002f7573722f696e636c7564652f62697473000073696d756c6174
652e6300000000737464696e742e68000100007374646465662e68000200
0074797065732e6800030000737464696f2e68000100006c6962696f2e68
0001000073696d756c6174652e680000000000000902c008400000000000
15082f0309740883030a088203797450037a74416f40704d714c723d7303
0b0230012f082f08e662e92759a1081308590222135977084f08d708e6a2
08bd08bd022314bc59770309c80832022713add7d79fe5e5e5e59f76e508
d80884082102291408af08bb08ad5b0821022614086908bb08ad5b08c9d5
f4d40877d708ae5b082f08ad5b08d70821082f08b155d708ae5b08ad08bb
08bb08ad5b089f08d708d708bb08ad5b089f08d708bb08ad5bd708bb08ad
5b084b08bb08ad5b0224135b0821022414082102241402221508bb08ad5b
08ad086708835b089f08d7082f08835b089f082f08833108d7088308ad31
03a07f02220103e3004a4b7708830868d7083d3183bb3183bb32839fbbbb
310224155931084b77bb023b134e030a08ba03797450037a82417d407e4d
7f4c803d8103770231010314d6022a13089102261308764c0823f308ad4c
83837d3408ad4c83837d3408ad4c838386f3085a0228134b08e65b023013
4b022a143102241303759e4328bc3d7708239f08d702351491022811a267
91023411a202070001015f5f6f666636345f74005f494f5f726561645f65
6e640073697a655f74005f494f5f46494c4500737464657272005f494f5f
77726974655f62617365005f494f5f6275665f656e64005f5f7061643200
5f5f70616433005f494f5f726561645f70747200474e55204320342e342e
3720323031323033313320285265642048617420342e342e372d3429005f
6d6f6465005f636861696e005f494f5f736176655f6261736500756e7369
676e65642063686172006c6f6e6720756e7369676e656420696e74007368
6f727420756e7369676e656420696e74002f686f6d652f6161676172776c
372f6563653431312d6a69652f737263005f494f5f736176655f656e6400
5f494f5f6c6f636b5f74005f6d61726b657273005f706f73006d61696e00
5f666c61677332005f73627566005f6f6c645f6f6666736574005f6c6f63
6b005f494f5f6d61726b6572005f6375725f636f6c756d6e005f66696c65
6e6f005f494f5f6275665f62617365005f6e657874005f767461626c655f
6f66667365740061726763005f5f6f66665f74005f756e7573656432006c
6f6e67206c6f6e6720696e74006d61696e2e63005f494f5f77726974655f
656e640073686f727420696e74005f494f5f6261636b75705f6261736500
5f666c6167730061726776005f5f70616431005f494f5f77726974655f70
7472005f5f70616434005f5f70616435005f426f6f6c005f494f5f726561
645f62617365005f73686f7274627566006d656d5f646174610075696e74
36345f7400696e737400696e73745f636f756e74006d616368696e655f73
746174655f740073686f775f6d656d0054524150006d656d5f6164647200
616374697665006e756d5f627974657300707265765f7374617465007569
6e7431365f7400636f6d6d69745f6368616e676573006e756d5f6368616e
676573006d656d6f727900696e69745f6d616368696e655f737461746500
4348475f4d454d5f42595445006d656d5f74797065007472617076656374
38006f626a5f66696c656e616d65004348475f4343006f626a5f66696c65
0073696d756c6174652e630073696d756c617465004348475f5043006368
616e67657365745f74006c6f61645f70726f6772616d006f666673657431
310070726f636573735f696e737472756374696f6e004348475f4d454d5f
574f5244006368616e67655f7479706500696d6d3400696d6d3500616464
5f6368616e6765006f666673657436006f666673657439007072696e745f
6d616368696e655f7374617465004348475f524547006c6333625f6f7063
6f64650075696e74385f74006368616e6765736574005e00000002000000
0000150300002d00000073697a655f7400700000005f5f6f66665f74007b
0000005f5f6f666636345f7400310200005f494f5f6c6f636b5f74003802
00005f494f5f6d61726b657200950000005f494f5f46494c450000000000
06010000020015030000490800002d000000696e74385f74003f00000069
6e7431365f74005f00000075696e74385f74007100000075696e7431365f
74008a00000075696e7436345f74009c00000073697a655f7400a7000000
5f5f6f66665f7400b20000005f5f6f666636345f7400cc00000046494c45
00730200005f494f5f6c6f636b5f74007a0200005f494f5f6d61726b6572
00d70000005f494f5f46494c4500620300006d616368696e655f73746174
655f74006d0300006c6333625f6f70636f646500d90300006368616e6765
5f7479706500040400006368616e67655f7479706500540400006368616e
676573657400b10400006368616e67657365745f740000000000002e7379
6d746162002e737472746162002e7368737472746162002e696e74657270
002e6e6f74652e4142492d746167002e6e6f74652e676e752e6275696c64
2d6964002e676e752e68617368002e64796e73796d002e64796e73747200
2e676e752e76657273696f6e002e676e752e76657273696f6e5f72002e72
656c612e64796e002e72656c612e706c74002e696e6974002e7465787400
2e66696e69002e726f64617461002e65685f6672616d655f686472002e65
685f6672616d65002e63746f7273002e64746f7273002e6a6372002e6479
6e616d6963002e676f74002e676f742e706c74002e64617461002e627373
002e636f6d6d656e74002e64656275675f6172616e676573002e64656275
675f7075626e616d6573002e64656275675f696e666f002e64656275675f
616262726576002e64656275675f6c696e65002e64656275675f73747200
2e64656275675f7075627479706573000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000001b000000010000000200
000000000000000240000000000000020000000000001c00000000000000
000000000000000001000000000000000000000000000000230000000700
000002000000000000001c024000000000001c0200000000000020000000
000000000000000000000000040000000000000000000000000000003100
00000700000002000000000000003c024000000000003c02000000000000
240000000000000000000000000000000400000000000000000000000000
000044000000f6ffff6f0200000000000000600240000000000060020000
000000002400000000000000050000000000000008000000000000000000
0000000000004e0000000b00000002000000000000008802400000000000
880200000000000098010000000000000600000001000000080000000000
000018000000000000005600000003000000020000000000000020044000
0000000020040000000000008c0000000000000000000000000000000100
00000000000000000000000000005e000000ffffff6f0200000000000000
ac04400000000000ac040000000000002200000000000000050000000000
0000020000000000000002000000000000006b000000feffff6f02000000
00000000d004400000000000d00400000000000020000000000000000600
000001000000080000000000000000000000000000007a00000004000000
0200000000000000f004400000000000f004000000000000300000000000
000005000000000000000800000000000000180000000000000084000000
040000000200000000000000200540000000000020050000000000005001
000000000000050000000c00000008000000000000001800000000000000
8e0000000100000006000000000000007006400000000000700600000000
000018000000000000000000000000000000040000000000000000000000
000000008900000001000000060000000000000088064000000000008806
000000000000f00000000000000000000000000000000400000000000000
100000000000000094000000010000000600000000000000800740000000
00008007000000000000e811000000000000000000000000000010000000
0000000000000000000000009a0000000100000006000000000000006819
40000000000068190000000000000e000000000000000000000000000000
04000000000000000000000000000000a000000001000000020000000000
000078194000000000007819000000000000070200000000000000000000
0000000008000000000000000000000000000000a8000000010000000200
000000000000801b400000000000801b0000000000005c00000000000000
000000000000000004000000000000000000000000000000b60000000100
00000200000000000000e01b400000000000e01b00000000000084010000
00000000000000000000000008000000000000000000000000000000c000
0000010000000300000000000000681d600000000000681d000000000000
100000000000000000000000000000000800000000000000000000000000
0000c7000000010000000300000000000000781d600000000000781d0000
000000001000000000000000000000000000000008000000000000000000
000000000000ce000000010000000300000000000000881d600000000000
881d00000000000008000000000000000000000000000000080000000000
00000000000000000000d3000000060000000300000000000000901d6000
00000000901d000000000000900100000000000006000000000000000800
0000000000001000000000000000dc000000010000000300000000000000
201f600000000000201f0000000000000800000000000000000000000000
000008000000000000000800000000000000e10000000100000003000000
00000000281f600000000000281f00000000000088000000000000000000
00000000000008000000000000000800000000000000ea00000001000000
0300000000000000b01f600000000000b01f000000000000040000000000
0000000000000000000004000000000000000000000000000000f0000000
080000000300000000000000b81f600000000000b41f0000000000001800
000000000000000000000000000008000000000000000000000000000000
f50000000100000030000000000000000000000000000000b41f00000000
000058000000000000000000000000000000010000000000000001000000
00000000fe00000001000000000000000000000000000000000000000c20
000000000000600000000000000000000000000000000100000000000000
00000000000000000d010000010000000000000000000000000000000000
00006c20000000000000b400000000000000000000000000000001000000
0000000000000000000000001d0100000100000000000000000000000000
00000000000020210000000000005e0b0000000000000000000000000000
010000000000000000000000000000002901000001000000000000000000
000000000000000000007e2c0000000000009d0200000000000000000000
000000000100000000000000000000000000000037010000010000000000
00000000000000000000000000001b2f0000000000001703000000000000
000000000000000001000000000000000000000000000000430100000100
0000300000000000000000000000000000003232000000000000cc030000
000000000000000000000000010000000000000001000000000000004e01
00000100000000000000000000000000000000000000fe35000000000000
6c0100000000000000000000000000000100000000000000000000000000
00001100000003000000000000000000000000000000000000006a370000
000000005e01000000000000000000000000000001000000000000000000
000000000000010000000200000000000000000000000000000000000000
0842000000000000a0080000000000002400000036000000080000000000
000018000000000000000900000003000000000000000000000000000000
00000000a84a000000000000650300000000000000000000000000000100
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000030001000002400000000000000000000000
000000000000030002001c02400000000000000000000000000000000000
030003003c02400000000000000000000000000000000000030004006002
400000000000000000000000000000000000030005008802400000000000
000000000000000000000000030006002004400000000000000000000000
00000000000003000700ac04400000000000000000000000000000000000
03000800d00440000000000000000000000000000000000003000900f004
40000000000000000000000000000000000003000a002005400000000000
00000000000000000000000003000b007006400000000000000000000000
00000000000003000c008806400000000000000000000000000000000000
03000d00800740000000000000000000000000000000000003000e006819
40000000000000000000000000000000000003000f007819400000000000
00000000000000000000000003001000801b400000000000000000000000
00000000000003001100e01b400000000000000000000000000000000000
03001200681d60000000000000000000000000000000000003001300781d
60000000000000000000000000000000000003001400881d600000000000
00000000000000000000000003001500901d600000000000000000000000
00000000000003001600201f600000000000000000000000000000000000
03001700281f60000000000000000000000000000000000003001800b01f
60000000000000000000000000000000000003001900b81f600000000000
00000000000000000000000003001a000000000000000000000000000000
00000000000003001b000000000000000000000000000000000000000000
03001c00000000000000000000000000000000000000000003001d000000
00000000000000000000000000000000000003001e000000000000000000
00000000000000000000000003001f000000000000000000000000000000
000000000000030020000000000000000000000000000000000000000000
03002100000000000000000000000000000000000100000002000d00ac07
4000000000000000000000000000110000000400f1ff0000000000000000
00000000000000001c00000001001200681d600000000000000000000000
00002a00000001001300781d600000000000000000000000000038000000
01001400881d60000000000000000000000000004500000002000d00d007
40000000000000000000000000005b00000001001900c01f600000000000
01000000000000006a00000001001900c81f600000000000080000000000
00007800000002000d004008400000000000000000000000000011000000
0400f1ff000000000000000000000000000000008400000001001200701d
60000000000000000000000000009100000001001100601d400000000000
00000000000000009f00000001001400881d600000000000000000000000
0000ab00000002000d0030194000000000000000000000000000c1000000
0400f1ff00000000000000000000000000000000c80000000400f1ff0000
0000000000000000000000000000d300000001001700281f600000000000
0000000000000000e900000000001200641d600000000000000000000000
0000fa00000000001200641d60000000000000000000000000000d010000
01001500901d60000000000000000000000000001601000020001800b01f
60000000000000000000000000002101000012000d008a17400000000000
ff0000000000000035010000120000000000000000000000000000000000
00004901000012000000000000000000000000000000000000005d010000
12000d00901840000000000002000000000000006d01000012000d008007
400000000000000000000000000074010000200000000000000000000000
000000000000000083010000200000000000000000000000000000000000
0000970100001200000000000000000000000000000000000000a9010000
1200000000000000000000000000000000000000bb01000012000e006819
4000000000000000000000000000c1010000120000000000000000000000
0000000000000000d4010000120000000000000000000000000000000000
0000f301000012000d000814400000000000820300000000000002020000
12000d00dc0940000000000055000000000000001502000011000f007819
400000000000040000000000000024020000120000000000000000000000
00000000000000003602000010001800b01f600000000000000000000000
00004302000012000d00c0084000000000001c010000000000004c020000
11020f00801940000000000000000000000000005902000011021300801d