-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRubyETH.json
More file actions
3990 lines (3990 loc) · 306 KB
/
RubyETH.json
File metadata and controls
3990 lines (3990 loc) · 306 KB
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
{
"contractName": "RubyETH",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_transfer",
"type": "address"
},
{
"internalType": "address",
"name": "_redeem",
"type": "address"
},
{
"internalType": "uint256",
"name": "_unit",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "label",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "LogUint256",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"indexed": false,
"internalType": "struct Utils.G1Point[]",
"name": "parties",
"type": "tuple[]"
}
],
"name": "TransferOccurred",
"type": "event"
},
{
"inputs": [],
"name": "MAX",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "balance_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "deposits_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
}
],
"name": "getAccountState",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[2]",
"name": "y_available",
"type": "tuple[2]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[2]",
"name": "y_pending",
"type": "tuple[2]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[]",
"name": "y",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "round",
"type": "uint256"
}
],
"name": "getBalance",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[2][]",
"name": "accounts",
"type": "tuple[2][]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
}
],
"name": "getGuess",
"outputs": [
{
"internalType": "bytes",
"name": "y_guess",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "last_global_update",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "last_roll_over",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mint_count_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ruby_agency",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redeem_fee_denominator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redeem_fee_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "redeem_fee_numerator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "c",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "s",
"type": "uint256"
}
],
"name": "register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "yHash",
"type": "bytes32"
}
],
"name": "registered",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "round_base",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "round_len",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_ruby_agency",
"type": "address"
}
],
"name": "setRubyAgency",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "numerator",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "denominator",
"type": "uint256"
}
],
"name": "setRedeemFeeStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_round_base",
"type": "uint256"
}
],
"name": "setRoundBase",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_round_len",
"type": "uint256"
}
],
"name": "setRoundLen",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "numerator",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "denominator",
"type": "uint256"
}
],
"name": "setTransferFeeStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_unit",
"type": "uint256"
}
],
"name": "setUnit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[]",
"name": "C",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "D",
"type": "tuple"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point[]",
"name": "y",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "u",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "proof",
"type": "bytes"
}
],
"name": "transfer",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "transfer_fee_denominator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "transfer_fee_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "transfer_fee_numerator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "unit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "users_log",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "unitAmount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "encGuess",
"type": "bytes"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "y",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "unitAmount",
"type": "uint256"
},
{
"components": [
{
"internalType": "bytes32",
"name": "x",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "y",
"type": "bytes32"
}
],
"internalType": "struct Utils.G1Point",
"name": "u",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "proof",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "encGuess",
"type": "bytes"
}
],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_transfer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_redeem\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_unit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"label\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"LogUint256\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"parties\",\"type\":\"tuple[]\"}],\"name\":\"TransferOccurred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"balance_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposits_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"}],\"name\":\"getAccountState\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[2]\",\"name\":\"y_available\",\"type\":\"tuple[2]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[2]\",\"name\":\"y_pending\",\"type\":\"tuple[2]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"y\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"getBalance\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[2][]\",\"name\":\"accounts\",\"type\":\"tuple[2][]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"}],\"name\":\"getGuess\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"y_guess\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"last_global_update\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"last_roll_over\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"unitAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encGuess\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mint_count_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ruby_agency\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"unitAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"u\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encGuess\",\"type\":\"bytes\"}],\"name\":\"redeem\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeem_fee_denominator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeem_fee_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redeem_fee_numerator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"y\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"c\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"yHash\",\"type\":\"bytes32\"}],\"name\":\"registered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"round_base\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"round_len\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_ruby_agency\",\"type\":\"address\"}],\"name\":\"setRubyAgency\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"setRedeemFeeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_round_base\",\"type\":\"uint256\"}],\"name\":\"setRoundBase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_round_len\",\"type\":\"uint256\"}],\"name\":\"setRoundLen\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"numerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"name\":\"setTransferFeeStrategy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unit\",\"type\":\"uint256\"}],\"name\":\"setUnit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"C\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"D\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point[]\",\"name\":\"y\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"internalType\":\"struct Utils.G1Point\",\"name\":\"u\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfer_fee_denominator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfer_fee_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transfer_fee_numerator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"users_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalance((bytes32,bytes32)[],uint256)\":{\"notice\":\"Get the current balances of accounts. If the given `round` is larger than the last roll over round, the returned balances will include pending transfers. \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyETH.sol\":\"RubyETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyBase.sol\":{\"keccak256\":\"0x85c785db8df1ed07c39c59e84e460ccac813201c3da07d4c96b510cf4e6270b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://469eee2a147da7d1582348ee01d6226d707b6b973aad1afa424cf1538a0ad4cc\",\"dweb:/ipfs/QmP1gtKJpJGyVdbsH1UfgmxxnBERvnWnDvTebtLzkUH75M\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyETH.sol\":{\"keccak256\":\"0x135d3be9f38b0335cae084a71610e1ab27d64b2b4630d18c6a055ac90a17f0db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8180f52e3e5e4eccf7cb0cbec614c20b4d25cacf862884828d3f7b1b2c719e\",\"dweb:/ipfs/QmdBjBmRXVYUtMtGeWfTjnvBV5KjEbSxQRM2pXhDmev8GJ\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyIP.sol\":{\"keccak256\":\"0x33b81084c94dd73a4c7f352d5befbdc9f0d1919f64ea07a0a850822bf763d172\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8753c2eebb59cf2092b1a93452df44c8cc02f7525baf3d57cdc0d665b4bdfdd6\",\"dweb:/ipfs/QmZiCqUVFkwpNa9FnM1otcihvL87yE57HnVFNriBofek9p\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyRedeem.sol\":{\"keccak256\":\"0xca172570f3dbb36a4f598f7f025029dd608f2e1c5c83d01533ee9c7d5ce3f18c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0d65f2203e8ce1d573e53e4f5d41077dad528d0589bc742c9e03c3fed2636de\",\"dweb:/ipfs/QmauBc9ZDzbgBh5YDrmDYc5xNmXo5vYMNdQMGqmiKJHFL3\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyTransfer.sol\":{\"keccak256\":\"0x1438402e0abf46c79402027bfa07922137c48609e57b390930d4ef74db686dbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44e05c86ae8dde145e826cdae4bc48bbe14ec42711a75d69f1b6c1adc667fae4\",\"dweb:/ipfs/QmdHpjeKwQozwws1CrRbHbpwxLPk5zifJXPWZiz4LeMHdv\"]},\"/Users/jinwan/Desktop/ruby_frontend-master/contracts/Utils.sol\":{\"keccak256\":\"0xb7d2263531d81713ab57eb8d697f8305eaa16b47d2b165891f8240c13eaac776\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fc5e29b22fb745da965cd3e23be35cc55b45ed5f83e9639a39a6e51dc2683cf\",\"dweb:/ipfs/QmTNNC4oNJ3ew5X3iDK8XNdKwSwSvqzq1P2FcJmaznWV4T\"]}},\"version\":1}",
"bytecode": "0x60806040526018600155600060025560016004556064600555600160065560056007556000600a556000600b556000600c556000600d556000600e556000600f5560006014553480156200005257600080fd5b5060405162005a9738038062005a9783398181016040528101906200007891906200017f565b82828233600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060008190555050505050505062000247565b600081519050620001628162000213565b92915050565b60008151905062000179816200022d565b92915050565b6000806000606084860312156200019557600080fd5b6000620001a58682870162000151565b9350506020620001b88682870162000151565b9250506040620001cb8682870162000168565b9150509250925092565b6000620001e282620001e9565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6200021e81620001d5565b81146200022a57600080fd5b50565b620002388162000209565b81146200024457600080fd5b50565b61584080620002576000396000f3fe6080604052600436106101d85760003560e01c806384f9b07a11610102578063b5753dee11610095578063dcfa1e5d11610064578063dcfa1e5d146106a4578063ddf911da146106cf578063eff4d178146106fa578063f487e95214610716576101d8565b8063b5753dee146105fa578063d11fa8c014610625578063d49d51811461064e578063d90d3a5814610679576101d8565b8063a568ce51116100d1578063a568ce511461052b578063a9b05a5614610569578063aae07890146105a6578063b47e51d7146105cf576101d8565b806384f9b07a146104815780638ad747e0146104ac578063907af6c0146104d75780639b0d85d314610502576101d8565b8063566a8e621161017a57806375236e3f1161014957806375236e3f146103d9578063767b7d85146104045780637715a74c1461042d5780637b5b3b9f14610458576101d8565b8063566a8e621461032f57806362c4d3a31461035a57806363bb012c146103855780637207f20e146103b0576101d8565b80632a6b024b116101b65780632a6b024b146102705780634301a3441461028c5780634ad729e0146102c95780635524d548146102f2576101d8565b80630221c717146101dd57806327d084e7146102085780632811112014610245575b600080fd5b3480156101e957600080fd5b506101f261073f565b6040516101ff91906154a3565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613a4a565b610745565b60405161023c9190614f85565b60405180910390f35b34801561025157600080fd5b5061025a6109f2565b60405161026791906154a3565b60405180910390f35b61028a60048036038101906102859190613b19565b6109f8565b005b34801561029857600080fd5b506102b360048036038101906102ae9190613ac7565b610a58565b6040516102c091906154a3565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb9190613b80565b610a70565b005b3480156102fe57600080fd5b5061031960048036038101906103149190613ac7565b610b6e565b604051610326919061507f565b60405180910390f35b34801561033b57600080fd5b50610344610d7c565b60405161035191906154a3565b60405180910390f35b34801561036657600080fd5b5061036f610d82565b60405161037c91906154a3565b60405180910390f35b34801561039157600080fd5b5061039a610d88565b6040516103a791906154a3565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613d8c565b610d8e565b005b3480156103e557600080fd5b506103ee610e30565b6040516103fb91906154a3565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190613d63565b610e36565b005b34801561043957600080fd5b50610442610ed0565b60405161044f9190614f33565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190613d63565b610ef6565b005b34801561048d57600080fd5b50610496610f90565b6040516104a391906154a3565b60405180910390f35b3480156104b857600080fd5b506104c1610f96565b6040516104ce91906154a3565b60405180910390f35b3480156104e357600080fd5b506104ec610f9c565b6040516104f991906154a3565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190613c27565b610fa2565b005b34801561053757600080fd5b50610552600480360381019061054d9190613af0565b611173565b604051610560929190614fa7565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613af0565b61128c565b60405161059d919061509a565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613d63565b61136d565b005b3480156105db57600080fd5b506105e4611407565b6040516105f191906154a3565b60405180910390f35b34801561060657600080fd5b5061060f61140d565b60405161061c91906154a3565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613962565b611413565b005b34801561065a57600080fd5b506106636114e7565b60405161067091906154a3565b60405180910390f35b34801561068557600080fd5b5061068e6114ef565b60405161069b91906154a3565b60405180910390f35b3480156106b057600080fd5b506106b96114f5565b6040516106c691906154a3565b60405180910390f35b3480156106db57600080fd5b506106e46114fb565b6040516106f191906154a3565b60405180910390f35b610714600480360381019061070f919061398b565b611501565b005b34801561072257600080fd5b5061073d60048036038101906107389190613d8c565b611d85565b005b60015481565b60606000835190508067ffffffffffffffff8111801561076457600080fd5b5060405190808252806020026020018201604052801561079e57816020015b61078b612bb4565b8152602001906001900390816107835790505b50915060005b818110156109ea5760008582815181106107ba57fe5b60200260200101516040516020016107d291906153bc565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b82821015610850578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610814565b5050505084838151811061086057fe5b602002602001018190525084601260008381526020019081526020016000205410156109dc5761088e612bb4565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156108f45783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906108b8565b5050505090506109428160006002811061090a57fe5b602002015186858151811061091b57fe5b602002602001015160006002811061092f57fe5b6020020151611e2790919063ffffffff16565b85848151811061094e57fe5b602002602001015160006002811061096257fe5b60200201819052506109b28160016002811061097a57fe5b602002015186858151811061098b57fe5b602002602001015160016002811061099f57fe5b6020020151611e2790919063ffffffff16565b8584815181106109be57fe5b60200260200101516001600281106109d257fe5b6020020181905250505b5080806001019150506107a4565b505092915050565b600f5481565b6000610a0334611e6b565b9050808314610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e9061539c565b60405180910390fd5b610a52848484611f26565b50505050565b60126020528060005260406000206000915090505481565b6000610a7b85612112565b90506000600554600454830281610a8e57fe5b049050610a9e8787878787612174565b6000811115610b1c57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b0f573d6000803e3d6000fd5b5080600c5401600c819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc8284039081150290604051600060405180830381858888f19350505050158015610b64573d6000803e3d6000fd5b5050505050505050565b6000610b78612be1565b60405180604001604052806000801b81526020016000801b8152509050610b9d612c01565b604051806040016040528060106000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610c0e578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610bd2565b50505050815260200160116000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610c7d578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610c41565b505050508152509050610cbb8282600060028110610c9757fe5b6020020151600060028110610ca857fe5b602002015161278890919063ffffffff16565b8015610cf85750610cf78282600060028110610cd357fe5b6020020151600160028110610ce457fe5b602002015161278890919063ffffffff16565b5b8015610d355750610d348282600160028110610d1057fe5b6020020151600060028110610d2157fe5b602002015161278890919063ffffffff16565b5b8015610d725750610d718282600160028110610d4d57fe5b6020020151600160028110610d5e57fe5b602002015161278890919063ffffffff16565b5b1592505050919050565b60145481565b600e5481565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e15906152bc565b60405180910390fd5b81600681905550806007819055505050565b600d5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd9061531c565b60405180910390fd5b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061513c565b60405180910390fd5b8060028190555050565b600b5481565b60025481565b60005481565b610faa612be1565b610ff0610fc8610fb9856127b0565b866127dc90919063ffffffff16565b610fe284610fd4612815565b6127dc90919063ffffffff16565b611e2790919063ffffffff16565b9050600061102a30868460405160200161100c93929190614f4e565b6040516020818303038152906040528051906020012060001c61287d565b905083811461106e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110659061525c565b60405180910390fd5b60008560405160200161108191906153bc565b6040516020818303038152906040528051906020012090506110a281610b6e565b156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d99061519c565b60405180910390fd5b856011600083815260200190815260200160002060006002811061110257fe5b600202016000820151816000015560208201518160010155905050611125612815565b6011600083815260200190815260200160002060016002811061114457fe5b6002020160008201518160000155602082015181600101559050506001600b5401600b81905550505050505050565b61117b612bb4565b611183612bb4565b60008360405160200161119691906153bc565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b828210156112145783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906111d8565b50505050925060116000828152602001908152602001600020600280602002604051908101604052809291906000905b82821015611280578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611244565b50505050915050915091565b60606000826040516020016112a191906153bc565b604051602081830303815290604052805190602001209050601560008281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113605780601f1061133557610100808354040283529160200191611360565b820191906000526020600020905b81548152906001019060200180831161134357829003601f168201915b5050505050915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f49061527c565b60405180910390fd5b8060008190555050565b600c5481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a9061515c565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b63ffffffff81565b60065481565b60055481565b60045481565b60005a905060008451905060608167ffffffffffffffff8111801561152557600080fd5b5060405190808252806020026020018201604052801561155f57816020015b61154c612be1565b8152602001906001900390816115445790505b50905060608267ffffffffffffffff8111801561157b57600080fd5b506040519080825280602002602001820160405280156115b557816020015b6115a2612be1565b81526020019060019003908161159a5790505b509050828951146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906150dc565b60405180910390fd5b60005b838110156118dc57600088828151811061161457fe5b602002602001015160405160200161162c91906153bc565b60405160208183030381529060405280519060200120905061164d81610b6e565b61168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116839061521c565b60405180910390fd5b611695816128b0565b61169d612bb4565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156117035783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906116c7565b5050505090506117408c848151811061171857fe5b60200260200101518260006002811061172d57fe5b6020020151611e2790919063ffffffff16565b6011600084815260200190815260200160002060006002811061175f57fe5b60020201600082015181600001556020820151816001015590505061179e8b8260016002811061178b57fe5b6020020151611e2790919063ffffffff16565b601160008481526020019081526020016000206001600281106117bd57fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b8282101561183e578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611802565b50505050905061187b8c848151811061185357fe5b60200260200101518260006002811061186857fe5b6020020151611e2790919063ffffffff16565b85848151811061188757fe5b60200260200101819052506118b68b826001600281106118a357fe5b6020020151611e2790919063ffffffff16565b8484815181106118c257fe5b6020026020010181905250505080806001019150506115fe565b506000866040516020016118f091906153bc565b60405160208183030381529060405280519060200120905060005b60138054905081101561197f57816013828154811061192657fe5b90600052602060002001541415611972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119699061537c565b60405180910390fd5b808060010191505061190b565b5060138190806001815401808255809150506001900390600052602060002001600090919091909150556119b1612c2e565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639471ac0a85858e8e8e6014548f6040518863ffffffff1660e01b8152600401611a1a9796959493929190614ff3565b60006040518083038186803b158015611a3257600080fd5b505afa158015611a46573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a6f9190613d22565b9050611a79612c77565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9896040518263ffffffff1660e01b8152600401611ad4919061509a565b60006040518083038186803b158015611aec57600080fd5b505afa158015611b00573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b299190613cb7565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a529878e83836040518363ffffffff1660e01b8152600401611b8892919061546c565b60206040518083038186803b158015611ba057600080fd5b505afa158015611bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd89190613a9e565b611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906150fc565b60405180910390fd5b60005a8803905060003a600754600654840281611c3057fe5b040290506000811115611cf55780341015611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c77906151bc565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ce8573d6000803e3d6000fd5b5080600d5401600d819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc8234039081150290604051600060405180830381858888f19350505050158015611d3d573d6000803e3d6000fd5b507f9b814ae8a45a4c40d4c60ffa92e0c4b76dec41407cb28b43df9daffa3685f9ac8c604051611d6d9190614fd1565b60405180910390a15050505050505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c906152fc565b60405180910390fd5b81600481905550806005819055505050565b611e2f612be1565b6040518351815260208401516020820152825160408201526020830151606082015260408260808360065afa611e6457600080fd5b5092915050565b6000806000548381611e7957fe5b0614611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb19061523c565b60405180910390fd5b600080548381611ec657fe5b04905080600011158015611ede575063ffffffff8111155b611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f149061517c565b60405180910390fd5b80915050919050565b63ffffffff8211158015611f42575063ffffffff82600a540111155b611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f789061511c565b60405180910390fd5b81600a6000828254019250508190555081600e600082825401925050819055506001600f60008282540192505081905550600083604051602001611fc591906153bc565b604051602081830303815290604052805190602001209050611fe681610b6e565b612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c906151dc565b60405180910390fd5b61202e816128b0565b612036612be1565b6011600083815260200190815260200160002060006002811061205557fe5b600202016040518060400160405290816000820154815260200160018201548152505090506120a661209785612089612815565b6127dc90919063ffffffff16565b82611e2790919063ffffffff16565b905080601160008481526020019081526020016000206000600281106120c857fe5b6002020160008201518160000155602082015181600101559050508260156000848152602001908152602001600020908051906020019061210a929190612d57565b505050505050565b600081600011158015612129575063ffffffff8211155b612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f9061533c565b60405180910390fd5b60005482029050919050565b83600a5410156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906150bc565b60405180910390fd5b83600a600082825403925050819055506000856040516020016121dc91906153bc565b6040516020818303038152906040528051906020012090506121fd81610b6e565b61223c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612233906151fc565b60405180910390fd5b612245816128b0565b61224d612bb4565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156122b3578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612277565b5050505090506122fe6122de6122c8886127b0565b6122d0612815565b6127dc90919063ffffffff16565b826000600281106122eb57fe5b6020020151611e2790919063ffffffff16565b6011600084815260200190815260200160002060006002811061231d57fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b8282101561239e578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612362565b5050505090506123e96123c96123b3886127b0565b6123bb612815565b6127dc90919063ffffffff16565b826000600281106123d657fe5b6020020151611e2790919063ffffffff16565b816000600281106123f657fe5b602002018190525060008560405160200161241191906153bc565b60405160208183030381529060405280519060200120905060005b6013805490508110156124a057816013828154811061244757fe5b90600052602060002001541415612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a9061535c565b60405180910390fd5b808060010191505061242c565b506013819080600181540180825580915050600190039060005260206000200160009091909190915055836015600085815260200190815260200160002090805190602001906124f1929190612d57565b506124fa612dd7565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bba28e3c8460006002811061254557fe5b60200201518560016002811061255757fe5b60200201518c6014548c336040518763ffffffff1660e01b8152600401612583969594939291906153d7565b6101406040518083038186803b15801561259c57600080fd5b505afa1580156125b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d49190613cf8565b90506125de612e3b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9886040518263ffffffff1660e01b8152600401612639919061509a565b60006040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061268e9190613c76565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d039751f83836040518363ffffffff1660e01b81526004016126ed92919061543a565b60206040518083038186803b15801561270557600080fd5b505afa158015612719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273d9190613a9e565b61277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739061529c565b60405180910390fd5b50505050505050505050565b6000816000015183600001511480156127a8575081602001518360200151145b905092915050565b6000817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001039050919050565b6127e4612be1565b604051835181526020840151602082015282604082015260408260608360075afa61280e57600080fd5b5092915050565b61281d612be1565b60405180604001604052807f077da99d806abd13c9f15ece5398525119d11e11e9836b2ee7d23f6159ad87d460001b81526020017f01485efa927f2ad41bff567eec88f32fb0a0f706588b4e41a8d587d008b7f87560001b815250905090565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182816128a857fe5b069050919050565b60008060025414156128cf5760015443816128c757fe5b049050612929565b600160025414156128ed5760015442816128e557fe5b049050612928565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291f906152dc565b60405180910390fd5b5b8060126000848152602001908152602001600020541015612b905761294c612c01565b604051806040016040528060106000868152602001908152602001600020600280602002604051908101604052809291906000905b828210156129bd578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612981565b50505050815260200160116000868152602001908152602001600020600280602002604051908101604052809291906000905b82821015612a2c5783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906129f0565b505050508152509050612a8c81600160028110612a4557fe5b6020020151600060028110612a5657fe5b602002015182600060028110612a6857fe5b6020020151600060028110612a7957fe5b6020020151611e2790919063ffffffff16565b60106000858152602001908152602001600020600060028110612aab57fe5b600202016000820151816000015560208201518160010155905050612b1d81600160028110612ad657fe5b6020020151600160028110612ae757fe5b602002015182600060028110612af957fe5b6020020151600160028110612b0a57fe5b6020020151611e2790919063ffffffff16565b60106000858152602001908152602001600020600160028110612b3c57fe5b600202016000820151816000015560208201518160010155905050601160008481526020019081526020016000206000612b769190612ea6565b816012600085815260200190815260200160002081905550505b806014541015612bb0578060148190555060136000612baf9190612ed1565b5b5050565b60405180604001604052806002905b612bcb612be1565b815260200190600190039081612bc35790505090565b604051806040016040528060008019168152602001600080191681525090565b60405180604001604052806002905b612c18612bb4565b815260200190600190039081612c105790505090565b6040518060e00160405280606081526020016060815260200160608152602001612c56612be1565b81526020016060815260200160008152602001612c71612be1565b81525090565b604051806103200160405280612c8b612be1565b8152602001612c98612be1565b8152602001612ca5612be1565b8152602001612cb2612be1565b8152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001612d13612bb4565b815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612d51612ef2565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d9857805160ff1916838001178555612dc6565b82800160010185558215612dc6579182015b82811115612dc5578251825591602001919060010190612daa565b5b509050612dd39190612f1a565b5090565b6040518060c00160405280612dea612be1565b8152602001612df7612be1565b8152602001612e04612be1565b815260200160008152602001612e18612be1565b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806101400160405280612e4f612be1565b8152602001612e5c612be1565b8152602001612e69612bb4565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612ea0612ef2565b81525090565b5060008082016000905560018201600090555060020160008082016000905560018201600090555050565b5080546000825590600052602060002090810190612eef9190612f37565b50565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b5b80821115612f33576000816000905550600101612f1b565b5090565b5b80821115612f50576000816000905550600101612f38565b5090565b600081519050612f6381615797565b92915050565b600081359050612f78816157ae565b92915050565b600082601f830112612f8f57600080fd5b6002612fa2612f9d826154eb565b6154be565b91508183856040840282011115612fb857600080fd5b60005b83811015612fe85781612fce888261325a565b845260208401935060408301925050600181019050612fbb565b5050505092915050565b600082601f83011261300357600080fd5b81356130166130118261550d565b6154be565b9150818183526020840193506020810190508385604084028201111561303b57600080fd5b60005b8381101561306b5781613051888261320e565b84526020840193506040830192505060018101905061303e565b5050505092915050565b600082601f83011261308657600080fd5b81516130996130948261550d565b6154be565b915081818352602084019350602081019050838560408402820111156130be57600080fd5b60005b838110156130ee57816130d4888261325a565b8452602084019350604083019250506001810190506130c1565b5050505092915050565b600082601f83011261310957600080fd5b815161311c61311782615535565b6154be565b9150818183526020840193506020810190508385602084028201111561314157600080fd5b60005b838110156131715781613157888261394d565b845260208401935060208301925050600181019050613144565b5050505092915050565b60008151905061318a816157c5565b92915050565b60008135905061319f816157dc565b92915050565b6000815190506131b4816157dc565b92915050565b600082601f8301126131cb57600080fd5b81356131de6131d98261555d565b6154be565b915080825260208301602083018583830111156131fa57600080fd5b613205838284615744565b50505092915050565b60006040828403121561322057600080fd5b61322a60406154be565b9050600061323a84828501613190565b600083015250602061324e84828501613190565b60208301525092915050565b60006040828403121561326c57600080fd5b61327660406154be565b90506000613286848285016131a5565b600083015250602061329a848285016131a5565b60208301525092915050565b6000608082840312156132b857600080fd5b6132c260806154be565b9050600082015167ffffffffffffffff8111156132de57600080fd5b6132ea84828501613075565b600083015250602082015167ffffffffffffffff81111561330a57600080fd5b61331684828501613075565b602083015250604061332a8482850161394d565b604083015250606061333e8482850161394d565b60608301525092915050565b60006101e0828403121561335d57600080fd5b6133686101406154be565b905060006133788482850161325a565b600083015250604061338c8482850161325a565b60208301525060806133a084828501612f7e565b6040830152506101006133b58482850161394d565b6060830152506101206133ca8482850161394d565b6080830152506101406133df8482850161394d565b60a0830152506101606133f48482850161394d565b60c0830152506101806134098482850161394d565b60e0830152506101a061341e8482850161394d565b610100830152506101c082015167ffffffffffffffff81111561344057600080fd5b61344c848285016132a6565b6101208301525092915050565b6000610400828403121561346c57600080fd5b6134776103206154be565b905060006134878482850161325a565b600083015250604061349b8482850161325a565b60208301525060806134af8482850161325a565b60408301525060c06134c38482850161325a565b60608301525061010082015167ffffffffffffffff8111156134e457600080fd5b6134f084828501613075565b60808301525061012082015167ffffffffffffffff81111561351157600080fd5b61351d84828501613075565b60a08301525061014082015167ffffffffffffffff81111561353e57600080fd5b61354a84828501613075565b60c08301525061016082015167ffffffffffffffff81111561356b57600080fd5b61357784828501613075565b60e08301525061018082015167ffffffffffffffff81111561359857600080fd5b6135a484828501613075565b610100830152506101a082015167ffffffffffffffff8111156135c657600080fd5b6135d284828501613075565b610120830152506101c082015167ffffffffffffffff8111156135f457600080fd5b61360084828501613075565b610140830152506101e082015167ffffffffffffffff81111561362257600080fd5b61362e84828501613075565b6101608301525061020082015167ffffffffffffffff81111561365057600080fd5b61365c848285016130f8565b610180830152506102206136728482850161394d565b6101a0830152506102406136888482850161394d565b6101c08301525061026061369e8482850161394d565b6101e0830152506102806136b484828501612f7e565b610200830152506103006136ca8482850161394d565b610220830152506103206136e08482850161394d565b610240830152506103406136f68482850161394d565b6102608301525061036061370c8482850161394d565b610280830152506103806137228482850161394d565b6102a0830152506103a06137388482850161394d565b6102c0830152506103c061374e8482850161394d565b6102e0830152506103e082015167ffffffffffffffff81111561377057600080fd5b61377c848285016132a6565b6103008301525092915050565b6000610140828403121561379c57600080fd5b6137a660c06154be565b905060006137b68482850161325a565b60008301525060406137ca8482850161325a565b60208301525060806137de8482850161325a565b60408301525060c06137f28482850161394d565b60608301525060e06138068482850161325a565b60808301525061012061381b84828501612f54565b60a08301525092915050565b6000610120828403121561383a57600080fd5b61384460e06154be565b9050600082015167ffffffffffffffff81111561386057600080fd5b61386c84828501613075565b600083015250602082015167ffffffffffffffff81111561388c57600080fd5b61389884828501613075565b602083015250604082015167ffffffffffffffff8111156138b857600080fd5b6138c484828501613075565b60408301525060606138d88482850161325a565b60608301525060a082015167ffffffffffffffff8111156138f857600080fd5b61390484828501613075565b60808301525060c06139188482850161394d565b60a08301525060e061392c8482850161325a565b60c08301525092915050565b600081359050613947816157f3565b92915050565b60008151905061395c816157f3565b92915050565b60006020828403121561397457600080fd5b600061398284828501612f69565b91505092915050565b600080600080600060e086880312156139a357600080fd5b600086013567ffffffffffffffff8111156139bd57600080fd5b6139c988828901612ff2565b95505060206139da8882890161320e565b945050606086013567ffffffffffffffff8111156139f757600080fd5b613a0388828901612ff2565b9350506080613a148882890161320e565b92505060c086013567ffffffffffffffff811115613a3157600080fd5b613a3d888289016131ba565b9150509295509295909350565b60008060408385031215613a5d57600080fd5b600083013567ffffffffffffffff811115613a7757600080fd5b613a8385828601612ff2565b9250506020613a9485828601613938565b9150509250929050565b600060208284031215613ab057600080fd5b6000613abe8482850161317b565b91505092915050565b600060208284031215613ad957600080fd5b6000613ae784828501613190565b91505092915050565b600060408284031215613b0257600080fd5b6000613b108482850161320e565b91505092915050565b600080600060808486031215613b2e57600080fd5b6000613b3c8682870161320e565b9350506040613b4d86828701613938565b925050606084013567ffffffffffffffff811115613b6a57600080fd5b613b76868287016131ba565b9150509250925092565b600080600080600060e08688031215613b9857600080fd5b6000613ba68882890161320e565b9550506040613bb788828901613938565b9450506060613bc88882890161320e565b93505060a086013567ffffffffffffffff811115613be557600080fd5b613bf1888289016131ba565b92505060c086013567ffffffffffffffff811115613c0e57600080fd5b613c1a888289016131ba565b9150509295509295909350565b600080600060808486031215613c3c57600080fd5b6000613c4a8682870161320e565b9350506040613c5b86828701613938565b9250506060613c6c86828701613938565b9150509250925092565b600060208284031215613c8857600080fd5b600082015167ffffffffffffffff811115613ca257600080fd5b613cae8482850161334a565b91505092915050565b600060208284031215613cc957600080fd5b600082015167ffffffffffffffff811115613ce357600080fd5b613cef84828501613459565b91505092915050565b60006101408284031215613d0b57600080fd5b6000613d1984828501613789565b91505092915050565b600060208284031215613d3457600080fd5b600082015167ffffffffffffffff811115613d4e57600080fd5b613d5a84828501613827565b91505092915050565b600060208284031215613d7557600080fd5b6000613d8384828501613938565b91505092915050565b60008060408385031215613d9f57600080fd5b6000613dad85828601613938565b9250506020613dbe85828601613938565b9150509250929050565b6000613dd48383613eaa565b60808301905092915050565b6000613dec83836149e7565b60408301905092915050565b6000613e048383614f15565b60208301905092915050565b613e198161570e565b82525050565b613e28816156bc565b82525050565b613e37816156aa565b82525050565b613e46816156aa565b82525050565b6000613e57826155c3565b613e61818561562e565b9350613e6c83615589565b8060005b83811015613e9d578151613e848882613dc8565b9750613e8f836155fa565b925050600181019050613e70565b5085935050505092915050565b613eb3816155ce565b613ebd818461563f565b9250613ec882615599565b8060005b83811015613ef9578151613ee08782613de0565b9650613eeb83615607565b925050600181019050613ecc565b505050505050565b613f0a816155ce565b613f14818461564a565b9250613f1f82615599565b8060005b83811015613f50578151613f378782613de0565b9650613f4283615607565b925050600181019050613f23565b505050505050565b6000613f63826155d9565b613f6d8185615655565b9350613f78836155a3565b8060005b83811015613fa9578151613f908882613de0565b9750613f9b83615614565b925050600181019050613f7c565b5085935050505092915050565b6000613fc1826155d9565b613fcb8185615666565b9350613fd6836155a3565b8060005b83811015614007578151613fee8882613de0565b9750613ff983615614565b925050600181019050613fda565b5085935050505092915050565b600061401f826155e4565b6140298185615677565b9350614034836155b3565b8060005b8381101561406557815161404c8882613df8565b975061405783615621565b925050600181019050614038565b5085935050505092915050565b61407b816156ce565b82525050565b61408a816156da565b82525050565b600061409b826155ef565b6140a58185615688565b93506140b5818560208601615753565b6140be81615786565b840191505092915050565b60006140d6602c83615699565b91507f5b52617a652072656465656d5d204661696c65643a20496e76616c696420726560008301527f6465656d20616d6f756e742e00000000000000000000000000000000000000006020830152604082019050919050565b600061413c602c83615699565b91507f5b52617a65207472616e736665725d20496e707574206172726179206c656e6760008301527f7468206d69736d617463682100000000000000000000000000000000000000006020830152604082019050919050565b60006141a2602483615699565b91507f5b52617a65207472616e736665725d204661696c65643a20766572696669636160008301527f74696f6e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614208603483615699565b91507f5b52617a65206d696e745d204d696e742070757368657320636f6e747261637460008301527f2070617374206d6178696d756d2076616c75652e0000000000000000000000006020830152604082019050919050565b600061426e603483615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e6420626173652e0000000000000000000000006020830152604082019050919050565b60006142d4603083615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765206167656e63792e000000000000000000000000000000006020830152604082019050919050565b600061433a601483615699565b91507f416d6f756e74206f7574206f662072616e67652e0000000000000000000000006000830152602082019050919050565b600061437a601b83615699565b91507f4163636f756e7420616c726561647920726567697374657265642100000000006000830152602082019050919050565b60006143ba604283615699565b91507f5b52617a65207472616e736665725d204e6f7420656e6f75676820666565207360008301527f656e74207769746820746865207472616e73666572207472616e73616374696f60208301527f6e2e0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614446602783615699565b91507f5b52617a65206d696e745d204163636f756e74206e6f7420796574207265676960008301527f7374657265642e000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006144ac602983615699565b91507f5b52617a652072656465656d5d204163636f756e74206e6f742079657420726560008301527f67697374657265642e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000614512602b83615699565b91507f5b52617a65207472616e736665725d204163636f756e74206e6f74207965742060008301527f726567697374657265642e0000000000000000000000000000000000000000006020830152604082019050919050565b6000614578602983615699565b91507f4e617469766520616d6f756e74206d757374206265206d756c7469706c65206f60008301527f66206120756e69742e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145de601f83615699565b91507f496e76616c696420726567697374726174696f6e207369676e617475726521006000830152602082019050919050565b600061461e602e83615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520756e69742e0000000000000000000000000000000000006020830152604082019050919050565b6000614684602383615699565b91507f5b52617a652072656465656d5d204661696c65643a207665726966696361746960008301527f6f6e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006146ea603f83615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765207472616e73666572206665652073747261746567792e006020830152604082019050919050565b6000614750601383615699565b91507f496e76616c696420726f756e6420626173652e000000000000000000000000006000830152602082019050919050565b6000614790603d83615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e67652072656465656d206665652073747261746567792e0000006020830152604082019050919050565b60006147f6603683615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e64206c656e6774682e000000000000000000006020830152604082019050919050565b600061485c601383615699565b91507f416d6f756e74206f7574206f662072616e6765000000000000000000000000006000830152602082019050919050565b600061489c602183615699565b91507f5b52617a652072656465656d5d204e6f6e636520616c7265616479207365656e60008301527f21000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614902602383615699565b91507f5b52617a65207472616e736665725d204e6f6e636520616c726561647920736560008301527f656e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614968604483615699565b91507f5b52617a65206d696e745d20537065636966696564206d696e7420616d6f756e60008301527f74206973206469666665726e65742066726f6d20746865207061696420616d6f60208301527f756e742e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6040820160008201516149fd6000850182614081565b506020820151614a106020850182614081565b50505050565b604082016000820151614a2c6000850182614081565b506020820151614a3f6020850182614081565b50505050565b60006080830160008301518482036000860152614a628282613f58565b91505060208301518482036020860152614a7c8282613f58565b9150506040830151614a916040860182614f15565b506060830151614aa46060860182614f15565b508091505092915050565b60006101e083016000830151614ac860008601826149e7565b506020830151614adb60408601826149e7565b506040830151614aee6080860182613eaa565b506060830151614b02610100860182614f15565b506080830151614b16610120860182614f15565b5060a0830151614b2a610140860182614f15565b5060c0830151614b3e610160860182614f15565b5060e0830151614b52610180860182614f15565b50610100830151614b676101a0860182614f15565b506101208301518482036101c0860152614b818282614a45565b9150508091505092915050565b600061040083016000830151614ba760008601826149e7565b506020830151614bba60408601826149e7565b506040830151614bcd60808601826149e7565b506060830151614be060c08601826149e7565b506080830151848203610100860152614bf98282613f58565b91505060a0830151848203610120860152614c148282613f58565b91505060c0830151848203610140860152614c2f8282613f58565b91505060e0830151848203610160860152614c4a8282613f58565b915050610100830151848203610180860152614c668282613f58565b9150506101208301518482036101a0860152614c828282613f58565b9150506101408301518482036101c0860152614c9e8282613f58565b9150506101608301518482036101e0860152614cba8282613f58565b915050610180830151848203610200860152614cd68282614014565b9150506101a0830151614ced610220860182614f15565b506101c0830151614d02610240860182614f15565b506101e0830151614d17610260860182614f15565b50610200830151614d2c610280860182613eaa565b50610220830151614d41610300860182614f15565b50610240830151614d56610320860182614f15565b50610260830151614d6b610340860182614f15565b50610280830151614d80610360860182614f15565b506102a0830151614d95610380860182614f15565b506102c0830151614daa6103a0860182614f15565b506102e0830151614dbf6103c0860182614f15565b506103008301518482036103e0860152614dd98282614a45565b9150508091505092915050565b61014082016000820151614dfd60008501826149e7565b506020820151614e1060408501826149e7565b506040820151614e2360808501826149e7565b506060820151614e3660c0850182614f15565b506080820151614e4960e08501826149e7565b5060a0820151614e5d610120850182613e2e565b50505050565b6000610120830160008301518482036000860152614e818282613f58565b91505060208301518482036020860152614e9b8282613f58565b91505060408301518482036040860152614eb58282613f58565b9150506060830151614eca60608601826149e7565b50608083015184820360a0860152614ee28282613f58565b91505060a0830151614ef760c0860182614f15565b5060c0830151614f0a60e08601826149e7565b508091505092915050565b614f1e81615704565b82525050565b614f2d81615704565b82525050565b6000602082019050614f486000830184613e1f565b92915050565b600060a082019050614f636000830186613e3d565b614f706020830185614a16565b614f7d6060830184614a16565b949350505050565b60006020820190508181036000830152614f9f8184613e4c565b905092915050565b600061010082019050614fbd6000830185613f01565b614fca6080830184613f01565b9392505050565b60006020820190508181036000830152614feb8184613fb6565b905092915050565b600061012082019050818103600083015261500e818a613fb6565b905081810360208301526150228189613fb6565b905081810360408301526150368188613fb6565b90506150456060830187614a16565b81810360a08301526150578186613fb6565b905061506660c0830185614f24565b61507360e0830184614a16565b98975050505050505050565b60006020820190506150946000830184614072565b92915050565b600060208201905081810360008301526150b48184614090565b905092915050565b600060208201905081810360008301526150d5816140c9565b9050919050565b600060208201905081810360008301526150f58161412f565b9050919050565b6000602082019050818103600083015261511581614195565b9050919050565b60006020820190508181036000830152615135816141fb565b9050919050565b6000602082019050818103600083015261515581614261565b9050919050565b60006020820190508181036000830152615175816142c7565b9050919050565b600060208201905081810360008301526151958161432d565b9050919050565b600060208201905081810360008301526151b58161436d565b9050919050565b600060208201905081810360008301526151d5816143ad565b9050919050565b600060208201905081810360008301526151f581614439565b9050919050565b600060208201905081810360008301526152158161449f565b9050919050565b6000602082019050818103600083015261523581614505565b9050919050565b600060208201905081810360008301526152558161456b565b9050919050565b60006020820190508181036000830152615275816145d1565b9050919050565b6000602082019050818103600083015261529581614611565b9050919050565b600060208201905081810360008301526152b581614677565b9050919050565b600060208201905081810360008301526152d5816146dd565b9050919050565b600060208201905081810360008301526152f581614743565b9050919050565b6000602082019050818103600083015261531581614783565b9050919050565b60006020820190508181036000830152615335816147e9565b9050919050565b600060208201905081810360008301526153558161484f565b9050919050565b600060208201905081810360008301526153758161488f565b9050919050565b60006020820190508181036000830152615395816148f5565b9050919050565b600060208201905081810360008301526153b58161495b565b9050919050565b60006040820190506153d16000830184614a16565b92915050565b6000610140820190506153ed6000830189614a16565b6153fa6040830188614a16565b6154076080830187614a16565b61541460c0830186614f24565b61542160e0830185614a16565b61542f610120830184613e10565b979650505050505050565b6000610160820190506154506000830185614de6565b8181036101408301526154638184614aaf565b90509392505050565b600060408201905081810360008301526154868185614e63565b9050818103602083015261549a8184614b8e565b90509392505050565b60006020820190506154b86000830184614f24565b92915050565b6000604051905081810181811067ffffffffffffffff821117156154e157600080fd5b8060405250919050565b600067ffffffffffffffff82111561550257600080fd5b602082029050919050565b600067ffffffffffffffff82111561552457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561554c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561557457600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006156b5826156e4565b9050919050565b60006156c7826156e4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061571982615720565b9050919050565b600061572b82615732565b9050919050565b600061573d826156e4565b9050919050565b82818337600083830152505050565b60005b83811015615771578082015181840152602081019050615756565b83811115615780576000848401525b50505050565b6000601f19601f8301169050919050565b6157a0816156aa565b81146157ab57600080fd5b50565b6157b7816156bc565b81146157c257600080fd5b50565b6157ce816156ce565b81146157d957600080fd5b50565b6157e5816156da565b81146157f057600080fd5b50565b6157fc81615704565b811461580757600080fd5b5056fea26469706673582212206187cf1b8d38b2b8578f1df8ed6337e10a99f037005acf902ecf77477512b4c064736f6c634300060c0033",
"deployedBytecode": "0x6080604052600436106101d85760003560e01c806384f9b07a11610102578063b5753dee11610095578063dcfa1e5d11610064578063dcfa1e5d146106a4578063ddf911da146106cf578063eff4d178146106fa578063f487e95214610716576101d8565b8063b5753dee146105fa578063d11fa8c014610625578063d49d51811461064e578063d90d3a5814610679576101d8565b8063a568ce51116100d1578063a568ce511461052b578063a9b05a5614610569578063aae07890146105a6578063b47e51d7146105cf576101d8565b806384f9b07a146104815780638ad747e0146104ac578063907af6c0146104d75780639b0d85d314610502576101d8565b8063566a8e621161017a57806375236e3f1161014957806375236e3f146103d9578063767b7d85146104045780637715a74c1461042d5780637b5b3b9f14610458576101d8565b8063566a8e621461032f57806362c4d3a31461035a57806363bb012c146103855780637207f20e146103b0576101d8565b80632a6b024b116101b65780632a6b024b146102705780634301a3441461028c5780634ad729e0146102c95780635524d548146102f2576101d8565b80630221c717146101dd57806327d084e7146102085780632811112014610245575b600080fd5b3480156101e957600080fd5b506101f261073f565b6040516101ff91906154a3565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613a4a565b610745565b60405161023c9190614f85565b60405180910390f35b34801561025157600080fd5b5061025a6109f2565b60405161026791906154a3565b60405180910390f35b61028a60048036038101906102859190613b19565b6109f8565b005b34801561029857600080fd5b506102b360048036038101906102ae9190613ac7565b610a58565b6040516102c091906154a3565b60405180910390f35b3480156102d557600080fd5b506102f060048036038101906102eb9190613b80565b610a70565b005b3480156102fe57600080fd5b5061031960048036038101906103149190613ac7565b610b6e565b604051610326919061507f565b60405180910390f35b34801561033b57600080fd5b50610344610d7c565b60405161035191906154a3565b60405180910390f35b34801561036657600080fd5b5061036f610d82565b60405161037c91906154a3565b60405180910390f35b34801561039157600080fd5b5061039a610d88565b6040516103a791906154a3565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613d8c565b610d8e565b005b3480156103e557600080fd5b506103ee610e30565b6040516103fb91906154a3565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190613d63565b610e36565b005b34801561043957600080fd5b50610442610ed0565b60405161044f9190614f33565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190613d63565b610ef6565b005b34801561048d57600080fd5b50610496610f90565b6040516104a391906154a3565b60405180910390f35b3480156104b857600080fd5b506104c1610f96565b6040516104ce91906154a3565b60405180910390f35b3480156104e357600080fd5b506104ec610f9c565b6040516104f991906154a3565b60405180910390f35b34801561050e57600080fd5b5061052960048036038101906105249190613c27565b610fa2565b005b34801561053757600080fd5b50610552600480360381019061054d9190613af0565b611173565b604051610560929190614fa7565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190613af0565b61128c565b60405161059d919061509a565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190613d63565b61136d565b005b3480156105db57600080fd5b506105e4611407565b6040516105f191906154a3565b60405180910390f35b34801561060657600080fd5b5061060f61140d565b60405161061c91906154a3565b60405180910390f35b34801561063157600080fd5b5061064c60048036038101906106479190613962565b611413565b005b34801561065a57600080fd5b506106636114e7565b60405161067091906154a3565b60405180910390f35b34801561068557600080fd5b5061068e6114ef565b60405161069b91906154a3565b60405180910390f35b3480156106b057600080fd5b506106b96114f5565b6040516106c691906154a3565b60405180910390f35b3480156106db57600080fd5b506106e46114fb565b6040516106f191906154a3565b60405180910390f35b610714600480360381019061070f919061398b565b611501565b005b34801561072257600080fd5b5061073d60048036038101906107389190613d8c565b611d85565b005b60015481565b60606000835190508067ffffffffffffffff8111801561076457600080fd5b5060405190808252806020026020018201604052801561079e57816020015b61078b612bb4565b8152602001906001900390816107835790505b50915060005b818110156109ea5760008582815181106107ba57fe5b60200260200101516040516020016107d291906153bc565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b82821015610850578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610814565b5050505084838151811061086057fe5b602002602001018190525084601260008381526020019081526020016000205410156109dc5761088e612bb4565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156108f45783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906108b8565b5050505090506109428160006002811061090a57fe5b602002015186858151811061091b57fe5b602002602001015160006002811061092f57fe5b6020020151611e2790919063ffffffff16565b85848151811061094e57fe5b602002602001015160006002811061096257fe5b60200201819052506109b28160016002811061097a57fe5b602002015186858151811061098b57fe5b602002602001015160016002811061099f57fe5b6020020151611e2790919063ffffffff16565b8584815181106109be57fe5b60200260200101516001600281106109d257fe5b6020020181905250505b5080806001019150506107a4565b505092915050565b600f5481565b6000610a0334611e6b565b9050808314610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e9061539c565b60405180910390fd5b610a52848484611f26565b50505050565b60126020528060005260406000206000915090505481565b6000610a7b85612112565b90506000600554600454830281610a8e57fe5b049050610a9e8787878787612174565b6000811115610b1c57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b0f573d6000803e3d6000fd5b5080600c5401600c819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc8284039081150290604051600060405180830381858888f19350505050158015610b64573d6000803e3d6000fd5b5050505050505050565b6000610b78612be1565b60405180604001604052806000801b81526020016000801b8152509050610b9d612c01565b604051806040016040528060106000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610c0e578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610bd2565b50505050815260200160116000878152602001908152602001600020600280602002604051908101604052809291906000905b82821015610c7d578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610c41565b505050508152509050610cbb8282600060028110610c9757fe5b6020020151600060028110610ca857fe5b602002015161278890919063ffffffff16565b8015610cf85750610cf78282600060028110610cd357fe5b6020020151600160028110610ce457fe5b602002015161278890919063ffffffff16565b5b8015610d355750610d348282600160028110610d1057fe5b6020020151600060028110610d2157fe5b602002015161278890919063ffffffff16565b5b8015610d725750610d718282600160028110610d4d57fe5b6020020151600160028110610d5e57fe5b602002015161278890919063ffffffff16565b5b1592505050919050565b60145481565b600e5481565b600a5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e15906152bc565b60405180910390fd5b81600681905550806007819055505050565b600d5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd9061531c565b60405180910390fd5b8060018190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7d9061513c565b60405180910390fd5b8060028190555050565b600b5481565b60025481565b60005481565b610faa612be1565b610ff0610fc8610fb9856127b0565b866127dc90919063ffffffff16565b610fe284610fd4612815565b6127dc90919063ffffffff16565b611e2790919063ffffffff16565b9050600061102a30868460405160200161100c93929190614f4e565b6040516020818303038152906040528051906020012060001c61287d565b905083811461106e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110659061525c565b60405180910390fd5b60008560405160200161108191906153bc565b6040516020818303038152906040528051906020012090506110a281610b6e565b156110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d99061519c565b60405180910390fd5b856011600083815260200190815260200160002060006002811061110257fe5b600202016000820151816000015560208201518160010155905050611125612815565b6011600083815260200190815260200160002060016002811061114457fe5b6002020160008201518160000155602082015181600101559050506001600b5401600b81905550505050505050565b61117b612bb4565b611183612bb4565b60008360405160200161119691906153bc565b60405160208183030381529060405280519060200120905060106000828152602001908152602001600020600280602002604051908101604052809291906000905b828210156112145783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906111d8565b50505050925060116000828152602001908152602001600020600280602002604051908101604052809291906000905b82821015611280578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611244565b50505050915050915091565b60606000826040516020016112a191906153bc565b604051602081830303815290604052805190602001209050601560008281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113605780601f1061133557610100808354040283529160200191611360565b820191906000526020600020905b81548152906001019060200180831161134357829003601f168201915b5050505050915050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f49061527c565b60405180910390fd5b8060008190555050565b600c5481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149a9061515c565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b63ffffffff81565b60065481565b60055481565b60045481565b60005a905060008451905060608167ffffffffffffffff8111801561152557600080fd5b5060405190808252806020026020018201604052801561155f57816020015b61154c612be1565b8152602001906001900390816115445790505b50905060608267ffffffffffffffff8111801561157b57600080fd5b506040519080825280602002602001820160405280156115b557816020015b6115a2612be1565b81526020019060019003908161159a5790505b509050828951146115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906150dc565b60405180910390fd5b60005b838110156118dc57600088828151811061161457fe5b602002602001015160405160200161162c91906153bc565b60405160208183030381529060405280519060200120905061164d81610b6e565b61168c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116839061521c565b60405180910390fd5b611695816128b0565b61169d612bb4565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156117035783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906116c7565b5050505090506117408c848151811061171857fe5b60200260200101518260006002811061172d57fe5b6020020151611e2790919063ffffffff16565b6011600084815260200190815260200160002060006002811061175f57fe5b60020201600082015181600001556020820151816001015590505061179e8b8260016002811061178b57fe5b6020020151611e2790919063ffffffff16565b601160008481526020019081526020016000206001600281106117bd57fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b8282101561183e578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611802565b50505050905061187b8c848151811061185357fe5b60200260200101518260006002811061186857fe5b6020020151611e2790919063ffffffff16565b85848151811061188757fe5b60200260200101819052506118b68b826001600281106118a357fe5b6020020151611e2790919063ffffffff16565b8484815181106118c257fe5b6020026020010181905250505080806001019150506115fe565b506000866040516020016118f091906153bc565b60405160208183030381529060405280519060200120905060005b60138054905081101561197f57816013828154811061192657fe5b90600052602060002001541415611972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119699061537c565b60405180910390fd5b808060010191505061190b565b5060138190806001815401808255809150506001900390600052602060002001600090919091909150556119b1612c2e565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639471ac0a85858e8e8e6014548f6040518863ffffffff1660e01b8152600401611a1a9796959493929190614ff3565b60006040518083038186803b158015611a3257600080fd5b505afa158015611a46573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a6f9190613d22565b9050611a79612c77565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9896040518263ffffffff1660e01b8152600401611ad4919061509a565b60006040518083038186803b158015611aec57600080fd5b505afa158015611b00573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b299190613cb7565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a529878e83836040518363ffffffff1660e01b8152600401611b8892919061546c565b60206040518083038186803b158015611ba057600080fd5b505afa158015611bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd89190613a9e565b611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e906150fc565b60405180910390fd5b60005a8803905060003a600754600654840281611c3057fe5b040290506000811115611cf55780341015611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c77906151bc565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ce8573d6000803e3d6000fd5b5080600d5401600d819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc8234039081150290604051600060405180830381858888f19350505050158015611d3d573d6000803e3d6000fd5b507f9b814ae8a45a4c40d4c60ffa92e0c4b76dec41407cb28b43df9daffa3685f9ac8c604051611d6d9190614fd1565b60405180910390a15050505050505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0c906152fc565b60405180910390fd5b81600481905550806005819055505050565b611e2f612be1565b6040518351815260208401516020820152825160408201526020830151606082015260408260808360065afa611e6457600080fd5b5092915050565b6000806000548381611e7957fe5b0614611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb19061523c565b60405180910390fd5b600080548381611ec657fe5b04905080600011158015611ede575063ffffffff8111155b611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f149061517c565b60405180910390fd5b80915050919050565b63ffffffff8211158015611f42575063ffffffff82600a540111155b611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f789061511c565b60405180910390fd5b81600a6000828254019250508190555081600e600082825401925050819055506001600f60008282540192505081905550600083604051602001611fc591906153bc565b604051602081830303815290604052805190602001209050611fe681610b6e565b612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c906151dc565b60405180910390fd5b61202e816128b0565b612036612be1565b6011600083815260200190815260200160002060006002811061205557fe5b600202016040518060400160405290816000820154815260200160018201548152505090506120a661209785612089612815565b6127dc90919063ffffffff16565b82611e2790919063ffffffff16565b905080601160008481526020019081526020016000206000600281106120c857fe5b6002020160008201518160000155602082015181600101559050508260156000848152602001908152602001600020908051906020019061210a929190612d57565b505050505050565b600081600011158015612129575063ffffffff8211155b612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f9061533c565b60405180910390fd5b60005482029050919050565b83600a5410156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906150bc565b60405180910390fd5b83600a600082825403925050819055506000856040516020016121dc91906153bc565b6040516020818303038152906040528051906020012090506121fd81610b6e565b61223c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612233906151fc565b60405180910390fd5b612245816128b0565b61224d612bb4565b60116000838152602001908152602001600020600280602002604051908101604052809291906000905b828210156122b3578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612277565b5050505090506122fe6122de6122c8886127b0565b6122d0612815565b6127dc90919063ffffffff16565b826000600281106122eb57fe5b6020020151611e2790919063ffffffff16565b6011600084815260200190815260200160002060006002811061231d57fe5b60020201600082015181600001556020820151816001015590505060106000838152602001908152602001600020600280602002604051908101604052809291906000905b8282101561239e578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612362565b5050505090506123e96123c96123b3886127b0565b6123bb612815565b6127dc90919063ffffffff16565b826000600281106123d657fe5b6020020151611e2790919063ffffffff16565b816000600281106123f657fe5b602002018190525060008560405160200161241191906153bc565b60405160208183030381529060405280519060200120905060005b6013805490508110156124a057816013828154811061244757fe5b90600052602060002001541415612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a9061535c565b60405180910390fd5b808060010191505061242c565b506013819080600181540180825580915050600190039060005260206000200160009091909190915055836015600085815260200190815260200160002090805190602001906124f1929190612d57565b506124fa612dd7565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bba28e3c8460006002811061254557fe5b60200201518560016002811061255757fe5b60200201518c6014548c336040518763ffffffff1660e01b8152600401612583969594939291906153d7565b6101406040518083038186803b15801561259c57600080fd5b505afa1580156125b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d49190613cf8565b90506125de612e3b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f98f0cc9886040518263ffffffff1660e01b8152600401612639919061509a565b60006040518083038186803b15801561265157600080fd5b505afa158015612665573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061268e9190613c76565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d039751f83836040518363ffffffff1660e01b81526004016126ed92919061543a565b60206040518083038186803b15801561270557600080fd5b505afa158015612719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273d9190613a9e565b61277c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739061529c565b60405180910390fd5b50505050505050505050565b6000816000015183600001511480156127a8575081602001518360200151145b905092915050565b6000817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001039050919050565b6127e4612be1565b604051835181526020840151602082015282604082015260408260608360075afa61280e57600080fd5b5092915050565b61281d612be1565b60405180604001604052807f077da99d806abd13c9f15ece5398525119d11e11e9836b2ee7d23f6159ad87d460001b81526020017f01485efa927f2ad41bff567eec88f32fb0a0f706588b4e41a8d587d008b7f87560001b815250905090565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182816128a857fe5b069050919050565b60008060025414156128cf5760015443816128c757fe5b049050612929565b600160025414156128ed5760015442816128e557fe5b049050612928565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291f906152dc565b60405180910390fd5b5b8060126000848152602001908152602001600020541015612b905761294c612c01565b604051806040016040528060106000868152602001908152602001600020600280602002604051908101604052809291906000905b828210156129bd578382600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190612981565b50505050815260200160116000868152602001908152602001600020600280602002604051908101604052809291906000905b82821015612a2c5783826002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906129f0565b505050508152509050612a8c81600160028110612a4557fe5b6020020151600060028110612a5657fe5b602002015182600060028110612a6857fe5b6020020151600060028110612a7957fe5b6020020151611e2790919063ffffffff16565b60106000858152602001908152602001600020600060028110612aab57fe5b600202016000820151816000015560208201518160010155905050612b1d81600160028110612ad657fe5b6020020151600160028110612ae757fe5b602002015182600060028110612af957fe5b6020020151600160028110612b0a57fe5b6020020151611e2790919063ffffffff16565b60106000858152602001908152602001600020600160028110612b3c57fe5b600202016000820151816000015560208201518160010155905050601160008481526020019081526020016000206000612b769190612ea6565b816012600085815260200190815260200160002081905550505b806014541015612bb0578060148190555060136000612baf9190612ed1565b5b5050565b60405180604001604052806002905b612bcb612be1565b815260200190600190039081612bc35790505090565b604051806040016040528060008019168152602001600080191681525090565b60405180604001604052806002905b612c18612bb4565b815260200190600190039081612c105790505090565b6040518060e00160405280606081526020016060815260200160608152602001612c56612be1565b81526020016060815260200160008152602001612c71612be1565b81525090565b604051806103200160405280612c8b612be1565b8152602001612c98612be1565b8152602001612ca5612be1565b8152602001612cb2612be1565b8152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001600081526020016000815260200160008152602001612d13612bb4565b815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612d51612ef2565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d9857805160ff1916838001178555612dc6565b82800160010185558215612dc6579182015b82811115612dc5578251825591602001919060010190612daa565b5b509050612dd39190612f1a565b5090565b6040518060c00160405280612dea612be1565b8152602001612df7612be1565b8152602001612e04612be1565b815260200160008152602001612e18612be1565b8152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806101400160405280612e4f612be1565b8152602001612e5c612be1565b8152602001612e69612bb4565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612ea0612ef2565b81525090565b5060008082016000905560018201600090555060020160008082016000905560018201600090555050565b5080546000825590600052602060002090810190612eef9190612f37565b50565b6040518060800160405280606081526020016060815260200160008152602001600081525090565b5b80821115612f33576000816000905550600101612f1b565b5090565b5b80821115612f50576000816000905550600101612f38565b5090565b600081519050612f6381615797565b92915050565b600081359050612f78816157ae565b92915050565b600082601f830112612f8f57600080fd5b6002612fa2612f9d826154eb565b6154be565b91508183856040840282011115612fb857600080fd5b60005b83811015612fe85781612fce888261325a565b845260208401935060408301925050600181019050612fbb565b5050505092915050565b600082601f83011261300357600080fd5b81356130166130118261550d565b6154be565b9150818183526020840193506020810190508385604084028201111561303b57600080fd5b60005b8381101561306b5781613051888261320e565b84526020840193506040830192505060018101905061303e565b5050505092915050565b600082601f83011261308657600080fd5b81516130996130948261550d565b6154be565b915081818352602084019350602081019050838560408402820111156130be57600080fd5b60005b838110156130ee57816130d4888261325a565b8452602084019350604083019250506001810190506130c1565b5050505092915050565b600082601f83011261310957600080fd5b815161311c61311782615535565b6154be565b9150818183526020840193506020810190508385602084028201111561314157600080fd5b60005b838110156131715781613157888261394d565b845260208401935060208301925050600181019050613144565b5050505092915050565b60008151905061318a816157c5565b92915050565b60008135905061319f816157dc565b92915050565b6000815190506131b4816157dc565b92915050565b600082601f8301126131cb57600080fd5b81356131de6131d98261555d565b6154be565b915080825260208301602083018583830111156131fa57600080fd5b613205838284615744565b50505092915050565b60006040828403121561322057600080fd5b61322a60406154be565b9050600061323a84828501613190565b600083015250602061324e84828501613190565b60208301525092915050565b60006040828403121561326c57600080fd5b61327660406154be565b90506000613286848285016131a5565b600083015250602061329a848285016131a5565b60208301525092915050565b6000608082840312156132b857600080fd5b6132c260806154be565b9050600082015167ffffffffffffffff8111156132de57600080fd5b6132ea84828501613075565b600083015250602082015167ffffffffffffffff81111561330a57600080fd5b61331684828501613075565b602083015250604061332a8482850161394d565b604083015250606061333e8482850161394d565b60608301525092915050565b60006101e0828403121561335d57600080fd5b6133686101406154be565b905060006133788482850161325a565b600083015250604061338c8482850161325a565b60208301525060806133a084828501612f7e565b6040830152506101006133b58482850161394d565b6060830152506101206133ca8482850161394d565b6080830152506101406133df8482850161394d565b60a0830152506101606133f48482850161394d565b60c0830152506101806134098482850161394d565b60e0830152506101a061341e8482850161394d565b610100830152506101c082015167ffffffffffffffff81111561344057600080fd5b61344c848285016132a6565b6101208301525092915050565b6000610400828403121561346c57600080fd5b6134776103206154be565b905060006134878482850161325a565b600083015250604061349b8482850161325a565b60208301525060806134af8482850161325a565b60408301525060c06134c38482850161325a565b60608301525061010082015167ffffffffffffffff8111156134e457600080fd5b6134f084828501613075565b60808301525061012082015167ffffffffffffffff81111561351157600080fd5b61351d84828501613075565b60a08301525061014082015167ffffffffffffffff81111561353e57600080fd5b61354a84828501613075565b60c08301525061016082015167ffffffffffffffff81111561356b57600080fd5b61357784828501613075565b60e08301525061018082015167ffffffffffffffff81111561359857600080fd5b6135a484828501613075565b610100830152506101a082015167ffffffffffffffff8111156135c657600080fd5b6135d284828501613075565b610120830152506101c082015167ffffffffffffffff8111156135f457600080fd5b61360084828501613075565b610140830152506101e082015167ffffffffffffffff81111561362257600080fd5b61362e84828501613075565b6101608301525061020082015167ffffffffffffffff81111561365057600080fd5b61365c848285016130f8565b610180830152506102206136728482850161394d565b6101a0830152506102406136888482850161394d565b6101c08301525061026061369e8482850161394d565b6101e0830152506102806136b484828501612f7e565b610200830152506103006136ca8482850161394d565b610220830152506103206136e08482850161394d565b610240830152506103406136f68482850161394d565b6102608301525061036061370c8482850161394d565b610280830152506103806137228482850161394d565b6102a0830152506103a06137388482850161394d565b6102c0830152506103c061374e8482850161394d565b6102e0830152506103e082015167ffffffffffffffff81111561377057600080fd5b61377c848285016132a6565b6103008301525092915050565b6000610140828403121561379c57600080fd5b6137a660c06154be565b905060006137b68482850161325a565b60008301525060406137ca8482850161325a565b60208301525060806137de8482850161325a565b60408301525060c06137f28482850161394d565b60608301525060e06138068482850161325a565b60808301525061012061381b84828501612f54565b60a08301525092915050565b6000610120828403121561383a57600080fd5b61384460e06154be565b9050600082015167ffffffffffffffff81111561386057600080fd5b61386c84828501613075565b600083015250602082015167ffffffffffffffff81111561388c57600080fd5b61389884828501613075565b602083015250604082015167ffffffffffffffff8111156138b857600080fd5b6138c484828501613075565b60408301525060606138d88482850161325a565b60608301525060a082015167ffffffffffffffff8111156138f857600080fd5b61390484828501613075565b60808301525060c06139188482850161394d565b60a08301525060e061392c8482850161325a565b60c08301525092915050565b600081359050613947816157f3565b92915050565b60008151905061395c816157f3565b92915050565b60006020828403121561397457600080fd5b600061398284828501612f69565b91505092915050565b600080600080600060e086880312156139a357600080fd5b600086013567ffffffffffffffff8111156139bd57600080fd5b6139c988828901612ff2565b95505060206139da8882890161320e565b945050606086013567ffffffffffffffff8111156139f757600080fd5b613a0388828901612ff2565b9350506080613a148882890161320e565b92505060c086013567ffffffffffffffff811115613a3157600080fd5b613a3d888289016131ba565b9150509295509295909350565b60008060408385031215613a5d57600080fd5b600083013567ffffffffffffffff811115613a7757600080fd5b613a8385828601612ff2565b9250506020613a9485828601613938565b9150509250929050565b600060208284031215613ab057600080fd5b6000613abe8482850161317b565b91505092915050565b600060208284031215613ad957600080fd5b6000613ae784828501613190565b91505092915050565b600060408284031215613b0257600080fd5b6000613b108482850161320e565b91505092915050565b600080600060808486031215613b2e57600080fd5b6000613b3c8682870161320e565b9350506040613b4d86828701613938565b925050606084013567ffffffffffffffff811115613b6a57600080fd5b613b76868287016131ba565b9150509250925092565b600080600080600060e08688031215613b9857600080fd5b6000613ba68882890161320e565b9550506040613bb788828901613938565b9450506060613bc88882890161320e565b93505060a086013567ffffffffffffffff811115613be557600080fd5b613bf1888289016131ba565b92505060c086013567ffffffffffffffff811115613c0e57600080fd5b613c1a888289016131ba565b9150509295509295909350565b600080600060808486031215613c3c57600080fd5b6000613c4a8682870161320e565b9350506040613c5b86828701613938565b9250506060613c6c86828701613938565b9150509250925092565b600060208284031215613c8857600080fd5b600082015167ffffffffffffffff811115613ca257600080fd5b613cae8482850161334a565b91505092915050565b600060208284031215613cc957600080fd5b600082015167ffffffffffffffff811115613ce357600080fd5b613cef84828501613459565b91505092915050565b60006101408284031215613d0b57600080fd5b6000613d1984828501613789565b91505092915050565b600060208284031215613d3457600080fd5b600082015167ffffffffffffffff811115613d4e57600080fd5b613d5a84828501613827565b91505092915050565b600060208284031215613d7557600080fd5b6000613d8384828501613938565b91505092915050565b60008060408385031215613d9f57600080fd5b6000613dad85828601613938565b9250506020613dbe85828601613938565b9150509250929050565b6000613dd48383613eaa565b60808301905092915050565b6000613dec83836149e7565b60408301905092915050565b6000613e048383614f15565b60208301905092915050565b613e198161570e565b82525050565b613e28816156bc565b82525050565b613e37816156aa565b82525050565b613e46816156aa565b82525050565b6000613e57826155c3565b613e61818561562e565b9350613e6c83615589565b8060005b83811015613e9d578151613e848882613dc8565b9750613e8f836155fa565b925050600181019050613e70565b5085935050505092915050565b613eb3816155ce565b613ebd818461563f565b9250613ec882615599565b8060005b83811015613ef9578151613ee08782613de0565b9650613eeb83615607565b925050600181019050613ecc565b505050505050565b613f0a816155ce565b613f14818461564a565b9250613f1f82615599565b8060005b83811015613f50578151613f378782613de0565b9650613f4283615607565b925050600181019050613f23565b505050505050565b6000613f63826155d9565b613f6d8185615655565b9350613f78836155a3565b8060005b83811015613fa9578151613f908882613de0565b9750613f9b83615614565b925050600181019050613f7c565b5085935050505092915050565b6000613fc1826155d9565b613fcb8185615666565b9350613fd6836155a3565b8060005b83811015614007578151613fee8882613de0565b9750613ff983615614565b925050600181019050613fda565b5085935050505092915050565b600061401f826155e4565b6140298185615677565b9350614034836155b3565b8060005b8381101561406557815161404c8882613df8565b975061405783615621565b925050600181019050614038565b5085935050505092915050565b61407b816156ce565b82525050565b61408a816156da565b82525050565b600061409b826155ef565b6140a58185615688565b93506140b5818560208601615753565b6140be81615786565b840191505092915050565b60006140d6602c83615699565b91507f5b52617a652072656465656d5d204661696c65643a20496e76616c696420726560008301527f6465656d20616d6f756e742e00000000000000000000000000000000000000006020830152604082019050919050565b600061413c602c83615699565b91507f5b52617a65207472616e736665725d20496e707574206172726179206c656e6760008301527f7468206d69736d617463682100000000000000000000000000000000000000006020830152604082019050919050565b60006141a2602483615699565b91507f5b52617a65207472616e736665725d204661696c65643a20766572696669636160008301527f74696f6e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614208603483615699565b91507f5b52617a65206d696e745d204d696e742070757368657320636f6e747261637460008301527f2070617374206d6178696d756d2076616c75652e0000000000000000000000006020830152604082019050919050565b600061426e603483615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e6420626173652e0000000000000000000000006020830152604082019050919050565b60006142d4603083615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765206167656e63792e000000000000000000000000000000006020830152604082019050919050565b600061433a601483615699565b91507f416d6f756e74206f7574206f662072616e67652e0000000000000000000000006000830152602082019050919050565b600061437a601b83615699565b91507f4163636f756e7420616c726561647920726567697374657265642100000000006000830152602082019050919050565b60006143ba604283615699565b91507f5b52617a65207472616e736665725d204e6f7420656e6f75676820666565207360008301527f656e74207769746820746865207472616e73666572207472616e73616374696f60208301527f6e2e0000000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614446602783615699565b91507f5b52617a65206d696e745d204163636f756e74206e6f7420796574207265676960008301527f7374657265642e000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006144ac602983615699565b91507f5b52617a652072656465656d5d204163636f756e74206e6f742079657420726560008301527f67697374657265642e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000614512602b83615699565b91507f5b52617a65207472616e736665725d204163636f756e74206e6f74207965742060008301527f726567697374657265642e0000000000000000000000000000000000000000006020830152604082019050919050565b6000614578602983615699565b91507f4e617469766520616d6f756e74206d757374206265206d756c7469706c65206f60008301527f66206120756e69742e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006145de601f83615699565b91507f496e76616c696420726567697374726174696f6e207369676e617475726521006000830152602082019050919050565b600061461e602e83615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520756e69742e0000000000000000000000000000000000006020830152604082019050919050565b6000614684602383615699565b91507f5b52617a652072656465656d5d204661696c65643a207665726966696361746960008301527f6f6e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006146ea603f83615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e6765207472616e73666572206665652073747261746567792e006020830152604082019050919050565b6000614750601383615699565b91507f496e76616c696420726f756e6420626173652e000000000000000000000000006000830152602082019050919050565b6000614790603d83615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e67652072656465656d206665652073747261746567792e0000006020830152604082019050919050565b60006147f6603683615699565b91507f5065726d697373696f6e2064656e6965643a204f6e6c792061646d696e20636160008301527f6e206368616e676520726f756e64206c656e6774682e000000000000000000006020830152604082019050919050565b600061485c601383615699565b91507f416d6f756e74206f7574206f662072616e6765000000000000000000000000006000830152602082019050919050565b600061489c602183615699565b91507f5b52617a652072656465656d5d204e6f6e636520616c7265616479207365656e60008301527f21000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614902602383615699565b91507f5b52617a65207472616e736665725d204e6f6e636520616c726561647920736560008301527f656e2100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614968604483615699565b91507f5b52617a65206d696e745d20537065636966696564206d696e7420616d6f756e60008301527f74206973206469666665726e65742066726f6d20746865207061696420616d6f60208301527f756e742e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6040820160008201516149fd6000850182614081565b506020820151614a106020850182614081565b50505050565b604082016000820151614a2c6000850182614081565b506020820151614a3f6020850182614081565b50505050565b60006080830160008301518482036000860152614a628282613f58565b91505060208301518482036020860152614a7c8282613f58565b9150506040830151614a916040860182614f15565b506060830151614aa46060860182614f15565b508091505092915050565b60006101e083016000830151614ac860008601826149e7565b506020830151614adb60408601826149e7565b506040830151614aee6080860182613eaa565b506060830151614b02610100860182614f15565b506080830151614b16610120860182614f15565b5060a0830151614b2a610140860182614f15565b5060c0830151614b3e610160860182614f15565b5060e0830151614b52610180860182614f15565b50610100830151614b676101a0860182614f15565b506101208301518482036101c0860152614b818282614a45565b9150508091505092915050565b600061040083016000830151614ba760008601826149e7565b506020830151614bba60408601826149e7565b506040830151614bcd60808601826149e7565b506060830151614be060c08601826149e7565b506080830151848203610100860152614bf98282613f58565b91505060a0830151848203610120860152614c148282613f58565b91505060c0830151848203610140860152614c2f8282613f58565b91505060e0830151848203610160860152614c4a8282613f58565b915050610100830151848203610180860152614c668282613f58565b9150506101208301518482036101a0860152614c828282613f58565b9150506101408301518482036101c0860152614c9e8282613f58565b9150506101608301518482036101e0860152614cba8282613f58565b915050610180830151848203610200860152614cd68282614014565b9150506101a0830151614ced610220860182614f15565b506101c0830151614d02610240860182614f15565b506101e0830151614d17610260860182614f15565b50610200830151614d2c610280860182613eaa565b50610220830151614d41610300860182614f15565b50610240830151614d56610320860182614f15565b50610260830151614d6b610340860182614f15565b50610280830151614d80610360860182614f15565b506102a0830151614d95610380860182614f15565b506102c0830151614daa6103a0860182614f15565b506102e0830151614dbf6103c0860182614f15565b506103008301518482036103e0860152614dd98282614a45565b9150508091505092915050565b61014082016000820151614dfd60008501826149e7565b506020820151614e1060408501826149e7565b506040820151614e2360808501826149e7565b506060820151614e3660c0850182614f15565b506080820151614e4960e08501826149e7565b5060a0820151614e5d610120850182613e2e565b50505050565b6000610120830160008301518482036000860152614e818282613f58565b91505060208301518482036020860152614e9b8282613f58565b91505060408301518482036040860152614eb58282613f58565b9150506060830151614eca60608601826149e7565b50608083015184820360a0860152614ee28282613f58565b91505060a0830151614ef760c0860182614f15565b5060c0830151614f0a60e08601826149e7565b508091505092915050565b614f1e81615704565b82525050565b614f2d81615704565b82525050565b6000602082019050614f486000830184613e1f565b92915050565b600060a082019050614f636000830186613e3d565b614f706020830185614a16565b614f7d6060830184614a16565b949350505050565b60006020820190508181036000830152614f9f8184613e4c565b905092915050565b600061010082019050614fbd6000830185613f01565b614fca6080830184613f01565b9392505050565b60006020820190508181036000830152614feb8184613fb6565b905092915050565b600061012082019050818103600083015261500e818a613fb6565b905081810360208301526150228189613fb6565b905081810360408301526150368188613fb6565b90506150456060830187614a16565b81810360a08301526150578186613fb6565b905061506660c0830185614f24565b61507360e0830184614a16565b98975050505050505050565b60006020820190506150946000830184614072565b92915050565b600060208201905081810360008301526150b48184614090565b905092915050565b600060208201905081810360008301526150d5816140c9565b9050919050565b600060208201905081810360008301526150f58161412f565b9050919050565b6000602082019050818103600083015261511581614195565b9050919050565b60006020820190508181036000830152615135816141fb565b9050919050565b6000602082019050818103600083015261515581614261565b9050919050565b60006020820190508181036000830152615175816142c7565b9050919050565b600060208201905081810360008301526151958161432d565b9050919050565b600060208201905081810360008301526151b58161436d565b9050919050565b600060208201905081810360008301526151d5816143ad565b9050919050565b600060208201905081810360008301526151f581614439565b9050919050565b600060208201905081810360008301526152158161449f565b9050919050565b6000602082019050818103600083015261523581614505565b9050919050565b600060208201905081810360008301526152558161456b565b9050919050565b60006020820190508181036000830152615275816145d1565b9050919050565b6000602082019050818103600083015261529581614611565b9050919050565b600060208201905081810360008301526152b581614677565b9050919050565b600060208201905081810360008301526152d5816146dd565b9050919050565b600060208201905081810360008301526152f581614743565b9050919050565b6000602082019050818103600083015261531581614783565b9050919050565b60006020820190508181036000830152615335816147e9565b9050919050565b600060208201905081810360008301526153558161484f565b9050919050565b600060208201905081810360008301526153758161488f565b9050919050565b60006020820190508181036000830152615395816148f5565b9050919050565b600060208201905081810360008301526153b58161495b565b9050919050565b60006040820190506153d16000830184614a16565b92915050565b6000610140820190506153ed6000830189614a16565b6153fa6040830188614a16565b6154076080830187614a16565b61541460c0830186614f24565b61542160e0830185614a16565b61542f610120830184613e10565b979650505050505050565b6000610160820190506154506000830185614de6565b8181036101408301526154638184614aaf565b90509392505050565b600060408201905081810360008301526154868185614e63565b9050818103602083015261549a8184614b8e565b90509392505050565b60006020820190506154b86000830184614f24565b92915050565b6000604051905081810181811067ffffffffffffffff821117156154e157600080fd5b8060405250919050565b600067ffffffffffffffff82111561550257600080fd5b602082029050919050565b600067ffffffffffffffff82111561552457600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561554c57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561557457600080fd5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600060029050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006156b5826156e4565b9050919050565b60006156c7826156e4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061571982615720565b9050919050565b600061572b82615732565b9050919050565b600061573d826156e4565b9050919050565b82818337600083830152505050565b60005b83811015615771578082015181840152602081019050615756565b83811115615780576000848401525b50505050565b6000601f19601f8301169050919050565b6157a0816156aa565b81146157ab57600080fd5b50565b6157b7816156bc565b81146157c257600080fd5b50565b6157ce816156ce565b81146157d957600080fd5b50565b6157e5816156da565b81146157f057600080fd5b50565b6157fc81615704565b811461580757600080fd5b5056fea26469706673582212206187cf1b8d38b2b8578f1df8ed6337e10a99f037005acf902ecf77477512b4c064736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "139:993:3:-:0;;;587:2:1;560:29;;624:1;596:29;;811:1;773:39;;858:3;818:43;;942:1;902:41;;991:1;949:43;;1089:1;1060:30;;1123:1;1096:28;;1162:1;1130:33;;1203:1;1169:35;;1240:1;1210:31;;1279:1;1247:33;;1639:1;1603:37;;175:113:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;247:9;258:7;267:5;2267:10:1;2253:11;;:24;;;;;;;;;;;;;;;;;;2316:9;2287:13;;:39;;;;;;;;;;;;;;;;;;2361:7;2336:11;;:33;;;;;;;;;;;;;;;;;;2386:5;2379:4;:12;;;;2173:225;;;175:113:3;;;139:993;;5:134:-1;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;146:134::-;;230:6;224:13;215:22;;242:33;269:5;242:33;:::i;:::-;209:71;;;;:::o;287:535::-;;;;436:2;424:9;415:7;411:23;407:32;404:2;;;452:1;449;442:12;404:2;487:1;504:64;560:7;551:6;540:9;536:22;504:64;:::i;:::-;494:74;;466:108;605:2;623:64;679:7;670:6;659:9;655:22;623:64;:::i;:::-;613:74;;584:109;724:2;742:64;798:7;789:6;778:9;774:22;742:64;:::i;:::-;732:74;;703:109;398:424;;;;;:::o;829:91::-;;891:24;909:5;891:24;:::i;:::-;880:35;;874:46;;;:::o;927:121::-;;1000:42;993:5;989:54;978:65;;972:76;;;:::o;1055:72::-;;1117:5;1106:16;;1100:27;;;:::o;1134:117::-;1203:24;1221:5;1203:24;:::i;:::-;1196:5;1193:35;1183:2;;1242:1;1239;1232:12;1183:2;1177:74;:::o;1258:117::-;1327:24;1345:5;1327:24;:::i;:::-;1320:5;1317:35;1307:2;;1366:1;1363;1356:12;1307:2;1301:74;:::o;139:993:3:-;;;;;;;",
"deployedSourceMap": "139:993:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;560:29:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6238:837;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1247:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;294:318:3;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1445:49:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;618:512:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5713:337:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1603:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1210:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1060:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1169:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3703:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;686:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3505:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1096:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;596:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;533:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4274:1433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7081:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7398:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3899:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1130:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;949:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4068:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;320:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;902:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;818:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;773:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10525:2195;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2923:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;560:29;;;;:::o;6238:837::-;6320:34;6585:12;6600:1;:8;6585:23;;6652:4;6629:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6618:39;;6672:9;6667:402;6691:4;6687:1;:8;6667:402;;;6716:13;6753:1;6755;6753:4;;;;;;;;;;;;;;6742:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;6732:27;;;;;;6716:43;;6787:3;:10;6791:5;6787:10;;;;;;;;;;;6773:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;6782:1;6773:11;;;;;;;;;;;;;:24;;;;6839:5;6815:14;:21;6830:5;6815:21;;;;;;;;;;;;:29;6811:248;;;6864:31;;:::i;:::-;6898:7;:14;6906:5;6898:14;;;;;;;;;;;6864:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6947:31;6967:7;6975:1;6967:10;;;;;;;;;;;6947:8;6956:1;6947:11;;;;;;;;;;;;;;6959:1;6947:14;;;;;;;;;;;:19;;:31;;;;:::i;:::-;6930:8;6939:1;6930:11;;;;;;;;;;;;;;6942:1;6930:14;;;;;;;;;;:48;;;;7013:31;7033:7;7041:1;7033:10;;;;;;;;;;;7013:8;7022:1;7013:11;;;;;;;;;;;;;;7025:1;7013:14;;;;;;;;;;;:19;;:31;;;;:::i;:::-;6996:8;7005:1;6996:11;;;;;;;;;;;;;;7008:1;6996:14;;;;;;;;;;:48;;;;6811:248;;6667:402;6697:3;;;;;;;6667:402;;;;6238:837;;;;;:::o;1247:33::-;;;;:::o;294:318:3:-;400:19;422:23;435:9;422:12;:23::i;:::-;400:45;;477:11;463:10;:25;455:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;572:33;581:1;584:10;596:8;572;:33::i;:::-;294:318;;;;:::o;1445:49:1:-;;;;;;;;;;;;;;;;;:::o;618:512:3:-;762:20;785:26;800:10;785:14;:26::i;:::-;762:49;;821:11;873:22;;850:20;;835:12;:35;:60;;;;;;821:74;;907:45;918:1;921:10;933:1;936:5;943:8;907:10;:45::i;:::-;973:1;967:3;:7;963:114;;;990:11;;;;;;;;;;;:20;;:25;1011:3;990:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1063:3;1046:14;;:20;1029:14;:37;;;;963:114;1086:10;:19;;:37;1119:3;1106:12;:16;1086:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;618:512;;;;;;;:::o;5713:337:1:-;5769:4;5785:25;;:::i;:::-;5813:19;;;;;;;;5827:1;5813:19;;;;;;5830:1;5813:19;;;;;5785:47;;5842:34;;:::i;:::-;:65;;;;;;;;5880:3;:10;5884:5;5880:10;;;;;;;;;;;5842:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5892:7;:14;5900:5;5892:14;;;;;;;;;;;5842:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5926:26;5947:4;5926:7;5934:1;5926:10;;;;;;;;;;;5937:1;5926:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;:56;;;;;5956:26;5977:4;5956:7;5964:1;5956:10;;;;;;;;;;;5967:1;5956:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;5926:56;:86;;;;;5986:26;6007:4;5986:7;5994:1;5986:10;;;;;;;;;;;5997:1;5986:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;5926:86;:116;;;;;6016:26;6037:4;6016:7;6024:1;6016:10;;;;;;;;;;;6027:1;6016:13;;;;;;;;;;;:20;;:26;;;;:::i;:::-;5926:116;5924:119;5917:126;;;;5713:337;;;:::o;1603:37::-;;;;:::o;1210:31::-;;;;:::o;1060:30::-;;;;:::o;3210:289::-;3321:11;;;;;;;;;;;3307:25;;:10;:25;;;3299:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;3435:9;3410:22;:34;;;;3481:11;3454:24;:38;;;;3210:289;;:::o;1169:35::-;;;;:::o;3703:190::-;3784:11;;;;;;;;;;;3770:25;;:10;:25;;;3762:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;3876:10;3864:9;:22;;;;3703:190;:::o;686:34::-;;;;;;;;;;;;;:::o;3505:192::-;3588:11;;;;;;;;;;;3574:25;;:10;:25;;;3566:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;3679:11;3666:10;:24;;;;3505:192;:::o;1096:28::-;;;;:::o;596:29::-;;;;:::o;533:19::-;;;;:::o;4274:1433::-;4436:22;;:::i;:::-;4461:40;4484:16;4491:8;:1;:6;:8::i;:::-;4484:1;:6;;:16;;;;:::i;:::-;4461:17;4476:1;4461:9;:7;:9::i;:::-;:14;;:17;;;;:::i;:::-;:22;;:40;;;;:::i;:::-;4436:65;;4511:17;4531:58;4568:4;4575:1;4578;4549:31;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4539:42;;;;;;4531:51;;:56;:58::i;:::-;4511:78;;4620:1;4607:9;:14;4599:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4667:13;4704:1;4693:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;4683:24;;;;;;4667:40;;4726:17;4737:5;4726:10;:17::i;:::-;4725:18;4717:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5624:1;5604:7;:14;5612:5;5604:14;;;;;;;;;;;5619:1;5604:17;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;;5655:9;:7;:9::i;:::-;5635:7;:14;5643:5;5635:14;;;;;;;;;;;5650:1;5635:17;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;;5699:1;5687:9;;:13;5675:9;:25;;;;4274:1433;;;;;;:::o;7081:311::-;7152:35;;:::i;:::-;7189:33;;:::i;:::-;7234:13;7271:1;7260:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;7250:24;;;;;;7234:40;;7298:3;:10;7302:5;7298:10;;;;;;;;;;;7284:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7330:7;:14;7338:5;7330:14;;;;;;;;;;;7318:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7354:31;7081:311;;;:::o;7398:199::-;7462:20;7494:13;7531:1;7520:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;7510:24;;;;;;7494:40;;7554:5;:12;7560:5;7554:12;;;;;;;;;;;7544:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7576:14;7398:199;;;:::o;3899:163::-;3971:11;;;;;;;;;;;3957:25;;:10;:25;;;3949:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;4050:5;4043:4;:12;;;;3899:163;:::o;1130:33::-;;;;:::o;949:43::-;;;;:::o;4068:200::-;4161:11;;;;;;;;;;;4147:25;;:10;:25;;;4139:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;4249:12;4235:11;;:26;;;;;;;;;;;;;;;;;;4068:200;:::o;320:37::-;350:7;320:37;:::o;902:41::-;;;;:::o;818:43::-;;;;:::o;773:39::-;;;;:::o;10525:2195::-;10735:16;10754:9;10735:28;;10843:12;10858:1;:8;10843:23;;10876:26;10925:4;10905:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10876:54;;10940:26;10989:4;10969:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10940:54;;11024:4;11012:1;:8;:16;11004:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11094:9;11089:615;11113:4;11109:1;:8;11089:615;;;11138:13;11175:1;11177;11175:4;;;;;;;;;;;;;;11164:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;11154:27;;;;;;11138:43;;11203:17;11214:5;11203:10;:17::i;:::-;11195:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11282:15;11291:5;11282:8;:15::i;:::-;11311:31;;:::i;:::-;11345:7;:14;11353:5;11345:14;;;;;;;;;;;11311:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11393:21;11409:1;11411;11409:4;;;;;;;;;;;;;;11393:7;11401:1;11393:10;;;;;;;;;;;:15;;:21;;;;:::i;:::-;11373:7;:14;11381:5;11373:14;;;;;;;;;;;11388:1;11373:17;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;11448:18;11464:1;11448:7;11456:1;11448:10;;;;;;;;;;;:15;;:18;;;;:::i;:::-;11428:7;:14;11436:5;11428:14;;;;;;;;;;;11443:1;11428:17;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;;11598:3;:10;11602:5;11598:10;;;;;;;;;;;11588:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11631:21;11647:1;11649;11647:4;;;;;;;;;;;;;;11631:7;11639:1;11631:10;;;;;;;;;;;:15;;:21;;;;:::i;:::-;11622:3;11626:1;11622:6;;;;;;;;;;;;;:30;;;;11675:18;11691:1;11675:7;11683:1;11675:10;;;;;;;;;;;:15;;:18;;;;:::i;:::-;11666:3;11670:1;11666:6;;;;;;;;;;;;;:27;;;;11089:615;;11119:3;;;;;;;11089:615;;;;11714:13;11751:1;11740:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;11730:24;;;;;;11714:40;;11769:9;11764:141;11788:9;:16;;;;11784:1;:20;11764:141;;;11849:5;11833:9;11843:1;11833:12;;;;;;;;;;;;;;;;:21;;11825:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11806:3;;;;;;;11764:141;;;;11914:9;11929:5;11914:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11946:38;;:::i;:::-;11987:13;;;;;;;;;;;:27;;;12015:3;12020;12025:1;12028;12031;12034:18;;12054:1;11987:69;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11946:110;;12066:36;;:::i;:::-;12105:13;;;;;;;;;;;:25;;;12131:5;12105:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12066:71;;12156:13;;;;;;;;;;;:20;;;12177:8;12187:10;12156:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12148:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12250:15;12279:9;12268:8;:20;12250:38;;12307:11;12385;12357:24;;12332:22;;12322:7;:32;:59;;;;;;12321:75;12307:89;;12416:1;12410:3;:7;12406:227;;;12454:3;12441:9;:16;;12433:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;12542:11;;;;;;;;;;;:20;;:25;12563:3;12542:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:3;12600:16;;:22;12581:16;:41;;;;12406:227;12642:10;:19;;:36;12674:3;12662:9;:15;12642:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12694:19;12711:1;12694:19;;;;;;:::i;:::-;;;;;;;;10525:2195;;;;;;;;;;;;;;:::o;2923:281::-;3032:11;;;;;;;;;;;3018:25;;:10;:25;;;3010:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;3142:9;3119:20;:32;;;;3186:11;3161:22;:36;;;;2923:281;;:::o;2287:602:9:-;2362:16;;:::i;:::-;2428:4;2422:11;2462:2;2456:9;2453:1;2446:20;2514:4;2510:2;2506:13;2500:20;2493:4;2490:1;2486:12;2479:42;2561:2;2555:9;2548:4;2545:1;2541:12;2534:31;2613:4;2609:2;2605:13;2599:20;2592:4;2589:1;2585:12;2578:42;2822:4;2819:1;2813:4;2810:1;2804:4;2797:5;2786:41;2776:2;;2857:1;2854;2847:12;2776:2;2399:484;;;;;:::o;2404:312:1:-;2471:7;2521:1;2513:4;;2498:12;:19;;;;;;:24;2490:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;2578:14;2610:4;;2595:12;:19;;;;;;2578:36;;2637:6;2632:1;:11;;:28;;;;;350:7;2647:6;:13;;2632:28;2624:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;2703:6;2696:13;;;2404:312;;;:::o;8549:650::-;350:7;8658:6;:13;;:44;;;;;350:7;8689:6;8675:11;;:20;:27;;8658:44;8650:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;8784:6;8769:11;;:21;;;;;;;;;;;8816:6;8800:12;;:22;;;;;;;;;;;8850:1;8832:14;;:19;;;;;;;;;;;8862:13;8899:1;8888:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;8878:24;;;;;;8862:40;;8920:17;8931:5;8920:10;:17::i;:::-;8912:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8991:15;9000:5;8991:8;:15::i;:::-;9017:28;;:::i;:::-;9048:7;:14;9056:5;9048:14;;;;;;;;;;;9063:1;9048:17;;;;;;;;;;9017:48;;;;;;;;;;;;;;;;;;;;;;;;;;;9085:36;9098:22;9113:6;9098:9;:7;:9::i;:::-;:14;;:22;;;;:::i;:::-;9085:7;:12;;:36;;;;:::i;:::-;9075:46;;9151:7;9131;:14;9139:5;9131:14;;;;;;;;;;;9146:1;9131:17;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;;9184:8;9169:5;:12;9175:5;9169:12;;;;;;;;;;;:23;;;;;;;;;;;;:::i;:::-;;8549:650;;;;;:::o;2722:195::-;2789:7;2821:10;2816:1;:15;;:36;;;;;350:7;2835:10;:17;;2816:36;2808:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2906:4;;2893:10;:17;2886:24;;2722:195;;;:::o;9205:1314::-;9375:6;9360:11;;:21;;9352:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9455:6;9440:11;;:21;;;;;;;;;;;9481:13;9518:1;9507:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;9497:24;;;;;;9481:40;;9539:17;9550:5;9539:10;:17::i;:::-;9531:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9612:15;9621:5;9612:8;:15::i;:::-;9638:31;;:::i;:::-;9672:7;:14;9680:5;9672:14;;;;;;;;;;;9638:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9716:46;9732:29;9747:13;:6;:11;:13::i;:::-;9732:9;:7;:9::i;:::-;:14;;:29;;;;:::i;:::-;9716:7;9724:1;9716:10;;;;;;;;;;;:15;;:46;;;;:::i;:::-;9696:7;:14;9704:5;9696:14;;;;;;;;;;;9711:1;9696:17;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;9783:3;:10;9787:5;9783:10;;;;;;;;;;;9773:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9890:46;9906:29;9921:13;:6;:11;:13::i;:::-;9906:9;:7;:9::i;:::-;:14;;:29;;;;:::i;:::-;9890:7;9898:1;9890:10;;;;;;;;;;;:15;;:46;;;;:::i;:::-;9877:7;9885:1;9877:10;;;;;;;;;;:59;;;;9946:13;9983:1;9972:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;9962:24;;;;;;9946:40;;10001:9;9996:139;10020:9;:16;;;;10016:1;:20;9996:139;;;10081:5;10065:9;10075:1;10065:12;;;;;;;;;;;;;;;;:21;;10057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10038:3;;;;;;;9996:139;;;;10144:9;10159:5;10144:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10191:8;10176:5;:12;10182:5;10176:12;;;;;;;;;;;:23;;;;;;;;;;;;:::i;:::-;;10210:36;;:::i;:::-;10249:11;;;;;;;;;;;:25;;;10275:7;10283:1;10275:10;;;;;;;;;;;10287:7;10295:1;10287:10;;;;;;;;;;;10299:1;10302:18;;10322:1;10325:10;10249:87;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10210:126;;10346:34;;:::i;:::-;10383:11;;;;;;;;;;;:23;;;10407:5;10383:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10346:67;;10432:11;;;;;;;;;;;:18;;;10451:8;10461:10;10432:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10424:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9205:1314;;;;;;;;;;:::o;3619:135:9:-;3696:4;3727:2;:4;;;3719:2;:4;;;:12;:28;;;;;3743:2;:4;;;3735:2;:4;;;:12;3719:28;3712:35;;3619:135;;;;:::o;912:96::-;960:7;1000:1;143:66;986:15;979:22;;912:96;;;:::o;2895:528::-;2961:16;;:::i;:::-;3027:4;3021:11;3061:1;3055:8;3052:1;3045:19;3111:4;3108:1;3104:12;3098:19;3091:4;3088:1;3084:12;3077:41;3152:1;3145:4;3142:1;3138:12;3131:23;3356:4;3353:1;3347:4;3344:1;3338:4;3331:5;3320:41;3310:2;;3391:1;3388;3381:12;3310:2;2998:419;;;;;:::o;3760:219::-;3796:14;;:::i;:::-;3829:143;;;;;;;;3837:66;3829:143;;;;;;3905:66;3829:143;;;;;3822:150;;3760:219;:::o;676:96::-;724:7;143:66;750:1;:15;;;;;;743:22;;676:96;;;:::o;7603:940:1:-;7655:9;7696:1;7682:10;;:15;7678:196;;;7730:9;;7715:12;:24;;;;;;7711:28;;7678:196;;;7772:1;7758:10;;:15;7754:120;;;7809:9;;7791:15;:27;;;;;;7787:31;;7754:120;;;7845:29;;;;;;;;;;:::i;:::-;;;;;;;;7754:120;7678:196;7913:1;7889:14;:21;7904:5;7889:21;;;;;;;;;;;;:25;7885:538;;;7930:34;;:::i;:::-;:65;;;;;;;;7968:3;:10;7972:5;7968:10;;;;;;;;;;;7930:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7980:7;:14;7988:5;7980:14;;;;;;;;;;;7930:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8025:33;8044:7;8052:1;8044:10;;;;;;;;;;;8055:1;8044:13;;;;;;;;;;;8025:7;8033:1;8025:10;;;;;;;;;;;8036:1;8025:13;;;;;;;;;;;:18;;:33;;;;:::i;:::-;8009:3;:10;8013:5;8009:10;;;;;;;;;;;8020:1;8009:13;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;8088:33;8107:7;8115:1;8107:10;;;;;;;;;;;8118:1;8107:13;;;;;;;;;;;8088:7;8096:1;8088:10;;;;;;;;;;;8099:1;8088:13;;;;;;;;;;;:18;;:33;;;;:::i;:::-;8072:3;:10;8076:5;8072:10;;;;;;;;;;;8083:1;8072:13;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;8295:7;:14;8303:5;8295:14;;;;;;;;;;;;8288:21;;;;:::i;:::-;8411:1;8387:14;:21;8402:5;8387:21;;;;;;;;;;;:25;;;;7885:538;;8457:1;8436:18;;:22;8432:105;;;8495:1;8474:18;:22;;;;8517:9;;8510:16;;;;:::i;:::-;8432:105;7603:940;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;5:134::-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;146:146::-;;234:6;221:20;212:29;;246:41;281:5;246:41;:::i;:::-;206:86;;;;:::o;331:713::-;;482:3;475:4;467:6;463:17;459:27;449:2;;500:1;497;490:12;449:2;524:4;543:103;558:87;638:6;558:87;:::i;:::-;543:103;:::i;:::-;534:112;;663:5;722:6;769:3;761:4;753:6;749:17;744:3;740:27;737:36;734:2;;;786:1;783;776:12;734:2;811:1;796:242;821:6;818:1;815:13;796:242;;;879:3;901:73;970:3;958:10;901:73;:::i;:::-;896:3;889:86;998:4;993:3;989:14;982:21;;1026:4;1021:3;1017:14;1010:21;;853:185;843:1;840;836:9;831:14;;796:242;;;800:14;442:602;;;;;;;:::o;1083:782::-;;1225:3;1218:4;1210:6;1206:17;1202:27;1192:2;;1243:1;1240;1233:12;1192:2;1280:6;1267:20;1302:105;1317:89;1399:6;1317:89;:::i;:::-;1302:105;:::i;:::-;1293:114;;1424:5;1449:6;1442:5;1435:21;1479:4;1471:6;1467:17;1457:27;;1501:4;1496:3;1492:14;1485:21;;1554:6;1601:3;1593:4;1585:6;1581:17;1576:3;1572:27;1569:36;1566:2;;;1618:1;1615;1608:12;1566:2;1643:1;1628:231;1653:6;1650:1;1647:13;1628:231;;;1711:3;1733:62;1791:3;1779:10;1733:62;:::i;:::-;1728:3;1721:75;1819:4;1814:3;1810:14;1803:21;;1847:4;1842:3;1838:14;1831:21;;1685:174;1675:1;1672;1668:9;1663:14;;1628:231;;;1632:14;1185:680;;;;;;;:::o;1904:797::-;;2057:3;2050:4;2042:6;2038:17;2034:27;2024:2;;2075:1;2072;2065:12;2024:2;2105:6;2099:13;2127:105;2142:89;2224:6;2142:89;:::i;:::-;2127:105;:::i;:::-;2118:114;;2249:5;2274:6;2267:5;2260:21;2304:4;2296:6;2292:17;2282:27;;2326:4;2321:3;2317:14;2310:21;;2379:6;2426:3;2418:4;2410:6;2406:17;2401:3;2397:27;2394:36;2391:2;;;2443:1;2440;2433:12;2391:2;2468:1;2453:242;2478:6;2475:1;2472:13;2453:242;;;2536:3;2558:73;2627:3;2615:10;2558:73;:::i;:::-;2553:3;2546:86;2655:4;2650:3;2646:14;2639:21;;2683:4;2678:3;2674:14;2667:21;;2510:185;2500:1;2497;2493:9;2488:14;;2453:242;;;2457:14;2017:684;;;;;;;:::o;2727:722::-;;2855:3;2848:4;2840:6;2836:17;2832:27;2822:2;;2873:1;2870;2863:12;2822:2;2903:6;2897:13;2925:80;2940:64;2997:6;2940:64;:::i;:::-;2925:80;:::i;:::-;2916:89;;3022:5;3047:6;3040:5;3033:21;3077:4;3069:6;3065:17;3055:27;;3099:4;3094:3;3090:14;3083:21;;3152:6;3199:3;3191:4;3183:6;3179:17;3174:3;3170:27;3167:36;3164:2;;;3216:1;3213;3206:12;3164:2;3241:1;3226:217;3251:6;3248:1;3245:13;3226:217;;;3309:3;3331:48;3375:3;3363:10;3331:48;:::i;:::-;3326:3;3319:61;3403:4;3398:3;3394:14;3387:21;;3431:4;3426:3;3422:14;3415:21;;3283:160;3273:1;3270;3266:9;3261:14;;3226:217;;;3230:14;2815:634;;;;;;;:::o;3457:128::-;;3538:6;3532:13;3523:22;;3550:30;3574:5;3550:30;:::i;:::-;3517:68;;;;:::o;3592:130::-;;3672:6;3659:20;3650:29;;3684:33;3711:5;3684:33;:::i;:::-;3644:78;;;;:::o;3729:134::-;;3813:6;3807:13;3798:22;;3825:33;3852:5;3825:33;:::i;:::-;3792:71;;;;:::o;3871:440::-;;3972:3;3965:4;3957:6;3953:17;3949:27;3939:2;;3990:1;3987;3980:12;3939:2;4027:6;4014:20;4049:64;4064:48;4105:6;4064:48;:::i;:::-;4049:64;:::i;:::-;4040:73;;4133:6;4126:5;4119:21;4169:4;4161:6;4157:17;4202:4;4195:5;4191:16;4237:3;4228:6;4223:3;4219:16;4216:25;4213:2;;;4254:1;4251;4244:12;4213:2;4264:41;4298:6;4293:3;4288;4264:41;:::i;:::-;3932:379;;;;;;;:::o;4346:461::-;;4460:4;4448:9;4443:3;4439:19;4435:30;4432:2;;;4478:1;4475;4468:12;4432:2;4496:20;4511:4;4496:20;:::i;:::-;4487:29;;4563:1;4595:49;4640:3;4631:6;4620:9;4616:22;4595:49;:::i;:::-;4588:4;4581:5;4577:16;4570:75;4526:130;4703:2;4736:49;4781:3;4772:6;4761:9;4757:22;4736:49;:::i;:::-;4729:4;4722:5;4718:16;4711:75;4666:131;4426:381;;;;:::o;4841:494::-;;4966:4;4954:9;4949:3;4945:19;4941:30;4938:2;;;4984:1;4981;4974:12;4938:2;5002:20;5017:4;5002:20;:::i;:::-;4993:29;;5069:1;5101:60;5157:3;5148:6;5137:9;5133:22;5101:60;:::i;:::-;5094:4;5087:5;5083:16;5076:86;5032:141;5220:2;5253:60;5309:3;5300:6;5289:9;5285:22;5253:60;:::i;:::-;5246:4;5239:5;5235:16;5228:86;5183:142;4932:403;;;;:::o;5368:1056::-;;5491:4;5479:9;5474:3;5470:19;5466:30;5463:2;;;5509:1;5506;5499:12;5463:2;5527:20;5542:4;5527:20;:::i;:::-;5518:29;;5616:1;5605:9;5601:17;5595:24;5639:18;5631:6;5628:30;5625:2;;;5671:1;5668;5661:12;5625:2;5706:110;5812:3;5803:6;5792:9;5788:22;5706:110;:::i;:::-;5699:4;5692:5;5688:16;5681:136;5557:271;5897:2;5886:9;5882:18;5876:25;5921:18;5913:6;5910:30;5907:2;;;5953:1;5950;5943:12;5907:2;5988:110;6094:3;6085:6;6074:9;6070:22;5988:110;:::i;:::-;5981:4;5974:5;5970:16;5963:136;5838:272;6157:2;6190:60;6246:3;6237:6;6226:9;6222:22;6190:60;:::i;:::-;6183:4;6176:5;6172:16;6165:86;6120:142;6309:2;6342:60;6398:3;6389:6;6378:9;6374:22;6342:60;:::i;:::-;6335:4;6328:5;6324:16;6317:86;6272:142;5457:967;;;;:::o;6461:1953::-;;6584:6;6572:9;6567:3;6563:19;6559:32;6556:2;;;6604:1;6601;6594:12;6556:2;6622:22;6637:6;6622:22;:::i;:::-;6613:31;;6692:1;6724:85;6805:3;6796:6;6785:9;6781:22;6724:85;:::i;:::-;6717:4;6710:5;6706:16;6699:111;6654:167;6869:2;6902:85;6983:3;6974:6;6963:9;6959:22;6902:85;:::i;:::-;6895:4;6888:5;6884:16;6877:111;6831:168;7053:3;7087:108;7191:3;7182:6;7171:9;7167:22;7087:108;:::i;:::-;7080:4;7073:5;7069:16;7062:134;7009:198;7257:3;7291:60;7347:3;7338:6;7327:9;7323:22;7291:60;:::i;:::-;7284:4;7277:5;7273:16;7266:86;7217:146;7411:3;7445:60;7501:3;7492:6;7481:9;7477:22;7445:60;:::i;:::-;7438:4;7431:5;7427:16;7420:86;7373:144;7564:3;7598:60;7654:3;7645:6;7634:9;7630:22;7598:60;:::i;:::-;7591:4;7584:5;7580:16;7573:86;7527:143;7720:3;7754:60;7810:3;7801:6;7790:9;7786:22;7754:60;:::i;:::-;7747:4;7740:5;7736:16;7729:86;7680:146;7875:3;7909:60;7965:3;7956:6;7945:9;7941:22;7909:60;:::i;:::-;7902:4;7895:5;7891:16;7884:86;7836:145;8032:3;8068:60;8124:3;8115:6;8104:9;8100:22;8068:60;:::i;:::-;8059:6;8052:5;8048:18;8041:88;7991:149;8215:3;8204:9;8200:19;8194:26;8240:18;8232:6;8229:30;8226:2;;;8272:1;8269;8262:12;8226:2;8309:83;8388:3;8379:6;8368:9;8364:22;8309:83;:::i;:::-;8300:6;8293:5;8289:18;8282:111;8150:254;6550:1864;;;;:::o;8453:5491::-;;8576:6;8564:9;8559:3;8555:19;8551:32;8548:2;;;8596:1;8593;8586:12;8548:2;8614:22;8629:6;8614:22;:::i;:::-;8605:31;;8684:1;8716:85;8797:3;8788:6;8777:9;8773:22;8716:85;:::i;:::-;8709:4;8702:5;8698:16;8691:111;8646:167;8861:2;8894:85;8975:3;8966:6;8955:9;8951:22;8894:85;:::i;:::-;8887:4;8880:5;8876:16;8869:111;8823:168;9038:3;9072:85;9153:3;9144:6;9133:9;9129:22;9072:85;:::i;:::-;9065:4;9058:5;9054:16;9047:111;9001:168;9216:3;9250:85;9331:3;9322:6;9311:9;9307:22;9250:85;:::i;:::-;9243:4;9236:5;9232:16;9225:111;9179:168;9418:3;9407:9;9403:19;9397:26;9443:18;9435:6;9432:30;9429:2;;;9475:1;9472;9465:12;9429:2;9510:110;9616:3;9607:6;9596:9;9592:22;9510:110;:::i;:::-;9503:4;9496:5;9492:16;9485:136;9357:275;9703:3;9692:9;9688:19;9682:26;9728:18;9720:6;9717:30;9714:2;;;9760:1;9757;9750:12;9714:2;9795:110;9901:3;9892:6;9881:9;9877:22;9795:110;:::i;:::-;9788:4;9781:5;9777:16;9770:136;9642:275;9988:3;9977:9;9973:19;9967:26;10013:18;10005:6;10002:30;9999:2;;;10045:1;10042;10035:12;9999:2;10080:110;10186:3;10177:6;10166:9;10162:22;10080:110;:::i;:::-;10073:4;10066:5;10062:16;10055:136;9927:275;10271:3;10260:9;10256:19;10250:26;10296:18;10288:6;10285:30;10282:2;;;10328:1;10325;10318:12;10282:2;10363:110;10469:3;10460:6;10449:9;10445:22;10363:110;:::i;:::-;10356:4;10349:5;10345:16;10338:136;10212:273;10556:3;10545:9;10541:19;10535:26;10581:18;10573:6;10570:30;10567:2;;;10613:1;10610;10603:12;10567:2;10650:110;10756:3;10747:6;10736:9;10732:22;10650:110;:::i;:::-;10641:6;10634:5;10630:18;10623:138;10495:277;10841:3;10830:9;10826:19;10820:26;10866:18;10858:6;10855:30;10852:2;;;10898:1;10895;10888:12;10852:2;10935:110;11041:3;11032:6;11021:9;11017:22;10935:110;:::i;:::-;10926:6;10919:5;10915:18;10908:138;10782:275;11128:3;11117:9;11113:19;11107:26;11153:18;11145:6;11142:30;11139:2;;;11185:1;11182;11175:12;11139:2;11222:110;11328:3;11319:6;11308:9;11304:22;11222:110;:::i;:::-;11213:6;11206:5;11202:18;11195:138;11067:277;11415:3;11404:9;11400:19;11394:26;11440:18;11432:6;11429:30;11426:2;;;11472:1;11469;11462:12;11426:2;11509:110;11615:3;11606:6;11595:9;11591:22;11509:110;:::i;:::-;11500:6;11493:5;11489:18;11482:138;11354:277;11699:3;11688:9;11684:19;11678:26;11724:18;11716:6;11713:30;11710:2;;;11756:1;11753;11746:12;11710:2;11793:85;11874:3;11865:6;11854:9;11850:22;11793:85;:::i;:::-;11784:6;11777:5;11773:18;11766:113;11641:249;11939:3;11975:60;12031:3;12022:6;12011:9;12007:22;11975:60;:::i;:::-;11966:6;11959:5;11955:18;11948:88;11900:147;12096:3;12132:60;12188:3;12179:6;12168:9;12164:22;12132:60;:::i;:::-;12123:6;12116:5;12112:18;12105:88;12057:147;12253:3;12289:60;12345:3;12336:6;12325:9;12321:22;12289:60;:::i;:::-;12280:6;12273:5;12269:18;12262:88;12214:147;12415:3;12451:108;12555:3;12546:6;12535:9;12531:22;12451:108;:::i;:::-;12442:6;12435:5;12431:18;12424:136;12371:200;12621:3;12657:60;12713:3;12704:6;12693:9;12689:22;12657:60;:::i;:::-;12648:6;12641:5;12637:18;12630:88;12581:148;12777:3;12813:60;12869:3;12860:6;12849:9;12845:22;12813:60;:::i;:::-;12804:6;12797:5;12793:18;12786:88;12739:146;12932:3;12968:60;13024:3;13015:6;13004:9;13000:22;12968:60;:::i;:::-;12959:6;12952:5;12948:18;12941:88;12895:145;13090:3;13126:60;13182:3;13173:6;13162:9;13158:22;13126:60;:::i;:::-;13117:6;13110:5;13106:18;13099:88;13050:148;13247:3;13283:60;13339:3;13330:6;13319:9;13315:22;13283:60;:::i;:::-;13274:6;13267:5;13263:18;13256:88;13208:147;13404:3;13440:60;13496:3;13487:6;13476:9;13472:22;13440:60;:::i;:::-;13431:6;13424:5;13420:18;13413:88;13365:147;13563:3;13599:60;13655:3;13646:6;13635:9;13631:22;13599:60;:::i;:::-;13590:6;13583:5;13579:18;13572:88;13522:149;13745:3;13734:9;13730:19;13724:26;13770:18;13762:6;13759:30;13756:2;;;13802:1;13799;13792:12;13756:2;13839:83;13918:3;13909:6;13898:9;13894:22;13839:83;:::i;:::-;13830:6;13823:5;13819:18;13812:111;13681:253;8542:5402;;;;:::o;13985:1226::-;;14112:6;14100:9;14095:3;14091:19;14087:32;14084:2;;;14132:1;14129;14122:12;14084:2;14150:20;14165:4;14150:20;:::i;:::-;14141:29;;14220:1;14252:85;14333:3;14324:6;14313:9;14309:22;14252:85;:::i;:::-;14245:4;14238:5;14234:16;14227:111;14180:169;14399:2;14432:85;14513:3;14504:6;14493:9;14489:22;14432:85;:::i;:::-;14425:4;14418:5;14414:16;14407:111;14359:170;14577:3;14611:85;14692:3;14683:6;14672:9;14668:22;14611:85;:::i;:::-;14604:4;14597:5;14593:16;14586:111;14539:169;14759:3;14793:60;14849:3;14840:6;14829:9;14825:22;14793:60;:::i;:::-;14786:4;14779:5;14775:16;14768:86;14718:147;14912:3;14946:85;15027:3;15018:6;15007:9;15003:22;14946:85;:::i;:::-;14939:4;14932:5;14928:16;14921:111;14875:168;15095:3;15129:60;15185:3;15176:6;15165:9;15161:22;15129:60;:::i;:::-;15122:4;15115:5;15111:16;15104:86;15053:148;14078:1133;;;;:::o;15254:1838::-;;15381:6;15369:9;15364:3;15360:19;15356:32;15353:2;;;15401:1;15398;15391:12;15353:2;15419:20;15434:4;15419:20;:::i;:::-;15410:29;;15510:1;15499:9;15495:17;15489:24;15533:18;15525:6;15522:30;15519:2;;;15565:1;15562;15555:12;15519:2;15600:110;15706:3;15697:6;15686:9;15682:22;15600:110;:::i;:::-;15593:4;15586:5;15582:16;15575:136;15449:273;15793:2;15782:9;15778:18;15772:25;15817:18;15809:6;15806:30;15803:2;;;15849:1;15846;15839:12;15803:2;15884:110;15990:3;15981:6;15970:9;15966:22;15884:110;:::i;:::-;15877:4;15870:5;15866:16;15859:136;15732:274;16074:2;16063:9;16059:18;16053:25;16098:18;16090:6;16087:30;16084:2;;;16130:1;16127;16120:12;16084:2;16165:110;16271:3;16262:6;16251:9;16247:22;16165:110;:::i;:::-;16158:4;16151:5;16147:16;16140:136;16016:271;16334:2;16367:85;16448:3;16439:6;16428:9;16424:22;16367:85;:::i;:::-;16360:4;16353:5;16349:16;16342:111;16297:167;16533:3;16522:9;16518:19;16512:26;16558:18;16550:6;16547:30;16544:2;;;16590:1;16587;16580:12;16544:2;16625:110;16731:3;16722:6;16711:9;16707:22;16625:110;:::i;:::-;16618:4;16611:5;16607:16;16600:136;16474:273;16798:3;16832:60;16888:3;16879:6;16868:9;16864:22;16832:60;:::i;:::-;16825:4;16818:5;16814:16;16807:86;16757:147;16951:3;16985:85;17066:3;17057:6;17046:9;17042:22;16985:85;:::i;:::-;16978:4;16971:5;16967:16;16960:111;16914:168;15347:1745;;;;:::o;17099:130::-;;17179:6;17166:20;17157:29;;17191:33;17218:5;17191:33;:::i;:::-;17151:78;;;;:::o;17236:134::-;;17320:6;17314:13;17305:22;;17332:33;17359:5;17332:33;:::i;:::-;17299:71;;;;:::o;17377:257::-;;17489:2;17477:9;17468:7;17464:23;17460:32;17457:2;;;17505:1;17502;17495:12;17457:2;17540:1;17557:61;17610:7;17601:6;17590:9;17586:22;17557:61;:::i;:::-;17547:71;;17519:105;17451:183;;;;:::o;17641:1320::-;;;;;;17972:3;17960:9;17951:7;17947:23;17943:33;17940:2;;;17989:1;17986;17979:12;17940:2;18052:1;18041:9;18037:17;18024:31;18075:18;18067:6;18064:30;18061:2;;;18107:1;18104;18097:12;18061:2;18127:103;18222:7;18213:6;18202:9;18198:22;18127:103;:::i;:::-;18117:113;;18003:233;18267:2;18285:78;18355:7;18346:6;18335:9;18331:22;18285:78;:::i;:::-;18275:88;;18246:123;18428:2;18417:9;18413:18;18400:32;18452:18;18444:6;18441:30;18438:2;;;18484:1;18481;18474:12;18438:2;18504:103;18599:7;18590:6;18579:9;18575:22;18504:103;:::i;:::-;18494:113;;18379:234;18644:3;18663:78;18733:7;18724:6;18713:9;18709:22;18663:78;:::i;:::-;18653:88;;18623:124;18806:3;18795:9;18791:19;18778:33;18831:18;18823:6;18820:30;18817:2;;;18863:1;18860;18853:12;18817:2;18883:62;18937:7;18928:6;18917:9;18913:22;18883:62;:::i;:::-;18873:72;;18757:194;17934:1027;;;;;;;;:::o;18968:552::-;;;19139:2;19127:9;19118:7;19114:23;19110:32;19107:2;;;19155:1;19152;19145:12;19107:2;19218:1;19207:9;19203:17;19190:31;19241:18;19233:6;19230:30;19227:2;;;19273:1;19270;19263:12;19227:2;19293:103;19388:7;19379:6;19368:9;19364:22;19293:103;:::i;:::-;19283:113;;19169:233;19433:2;19451:53;19496:7;19487:6;19476:9;19472:22;19451:53;:::i;:::-;19441:63;;19412:98;19101:419;;;;;:::o;19527:257::-;;19639:2;19627:9;19618:7;19614:23;19610:32;19607:2;;;19655:1;19652;19645:12;19607:2;19690:1;19707:61;19760:7;19751:6;19740:9;19736:22;19707:61;:::i;:::-;19697:71;;19669:105;19601:183;;;;:::o;19791:241::-;;19895:2;19883:9;19874:7;19870:23;19866:32;19863:2;;;19911:1;19908;19901:12;19863:2;19946:1;19963:53;20008:7;19999:6;19988:9;19984:22;19963:53;:::i;:::-;19953:63;;19925:97;19857:175;;;;:::o;20039:291::-;;20168:2;20156:9;20147:7;20143:23;20139:32;20136:2;;;20184:1;20181;20174:12;20136:2;20219:1;20236:78;20306:7;20297:6;20286:9;20282:22;20236:78;:::i;:::-;20226:88;;20198:122;20130:200;;;;:::o;20337:646::-;;;;20509:3;20497:9;20488:7;20484:23;20480:33;20477:2;;;20526:1;20523;20516:12;20477:2;20561:1;20578:78;20648:7;20639:6;20628:9;20624:22;20578:78;:::i;:::-;20568:88;;20540:122;20693:2;20711:53;20756:7;20747:6;20736:9;20732:22;20711:53;:::i;:::-;20701:63;;20672:98;20829:2;20818:9;20814:18;20801:32;20853:18;20845:6;20842:30;20839:2;;;20885:1;20882;20875:12;20839:2;20905:62;20959:7;20950:6;20939:9;20935:22;20905:62;:::i;:::-;20895:72;;20780:193;20471:512;;;;;:::o;20990:1052::-;;;;;;21230:3;21218:9;21209:7;21205:23;21201:33;21198:2;;;21247:1;21244;21237:12;21198:2;21282:1;21299:78;21369:7;21360:6;21349:9;21345:22;21299:78;:::i;:::-;21289:88;;21261:122;21414:2;21432:53;21477:7;21468:6;21457:9;21453:22;21432:53;:::i;:::-;21422:63;;21393:98;21522:2;21540:78;21610:7;21601:6;21590:9;21586:22;21540:78;:::i;:::-;21530:88;;21501:123;21683:3;21672:9;21668:19;21655:33;21708:18;21700:6;21697:30;21694:2;;;21740:1;21737;21730:12;21694:2;21760:62;21814:7;21805:6;21794:9;21790:22;21760:62;:::i;:::-;21750:72;;21634:194;21887:3;21876:9;21872:19;21859:33;21912:18;21904:6;21901:30;21898:2;;;21944:1;21941;21934:12;21898:2;21964:62;22018:7;22009:6;21998:9;21994:22;21964:62;:::i;:::-;21954:72;;21838:194;21192:850;;;;;;;;:::o;22049:542::-;;;;22212:3;22200:9;22191:7;22187:23;22183:33;22180:2;;;22229:1;22226;22219:12;22180:2;22264:1;22281:78;22351:7;22342:6;22331:9;22327:22;22281:78;:::i;:::-;22271:88;;22243:122;22396:2;22414:53;22459:7;22450:6;22439:9;22435:22;22414:53;:::i;:::-;22404:63;;22375:98;22504:2;22522:53;22567:7;22558:6;22547:9;22543:22;22522:53;:::i;:::-;22512:63;;22483:98;22174:417;;;;;:::o;22598:388::-;;22736:2;22724:9;22715:7;22711:23;22707:32;22704:2;;;22752:1;22749;22742:12;22704:2;22808:1;22797:9;22793:17;22787:24;22831:18;22823:6;22820:30;22817:2;;;22863:1;22860;22853:12;22817:2;22883:87;22962:7;22953:6;22942:9;22938:22;22883:87;:::i;:::-;22873:97;;22766:210;22698:288;;;;:::o;22993:388::-;;23131:2;23119:9;23110:7;23106:23;23102:32;23099:2;;;23147:1;23144;23137:12;23099:2;23203:1;23192:9;23188:17;23182:24;23226:18;23218:6;23215:30;23212:2;;;23258:1;23255;23248:12;23212:2;23278:87;23357:7;23348:6;23337:9;23333:22;23278:87;:::i;:::-;23268:97;;23161:210;23093:288;;;;:::o;23388:318::-;;23530:3;23518:9;23509:7;23505:23;23501:33;23498:2;;;23547:1;23544;23537:12;23498:2;23582:1;23599:91;23682:7;23673:6;23662:9;23658:22;23599:91;:::i;:::-;23589:101;;23561:135;23492:214;;;;:::o;23713:396::-;;23855:2;23843:9;23834:7;23830:23;23826:32;23823:2;;;23871:1;23868;23861:12;23823:2;23927:1;23916:9;23912:17;23906:24;23950:18;23942:6;23939:30;23936:2;;;23982:1;23979;23972:12;23936:2;24002:91;24085:7;24076:6;24065:9;24061:22;24002:91;:::i;:::-;23992:101;;23885:214;23817:292;;;;:::o;24116:241::-;;24220:2;24208:9;24199:7;24195:23;24191:32;24188:2;;;24236:1;24233;24226:12;24188:2;24271:1;24288:53;24333:7;24324:6;24313:9;24309:22;24288:53;:::i;:::-;24278:63;;24250:97;24182:175;;;;:::o;24364:366::-;;;24485:2;24473:9;24464:7;24460:23;24456:32;24453:2;;;24501:1;24498;24491:12;24453:2;24536:1;24553:53;24598:7;24589:6;24578:9;24574:22;24553:53;:::i;:::-;24543:63;;24515:97;24643:2;24661:53;24706:7;24697:6;24686:9;24682:22;24661:53;:::i;:::-;24651:63;;24622:98;24447:283;;;;;:::o;24738:365::-;;24921:142;25059:3;25051:6;24921:142;:::i;:::-;25092:4;25087:3;25083:14;25069:28;;24914:189;;;;:::o;25112:273::-;;25249:96;25341:3;25333:6;25249:96;:::i;:::-;25374:4;25369:3;25365:14;25351:28;;25242:143;;;;:::o;25394:173::-;;25481:46;25523:3;25515:6;25481:46;:::i;:::-;25556:4;25551:3;25547:14;25533:28;;25474:93;;;;:::o;25575:142::-;25666:45;25705:5;25666:45;:::i;:::-;25661:3;25654:58;25648:69;;:::o;25724:137::-;25823:32;25849:5;25823:32;:::i;:::-;25818:3;25811:45;25805:56;;:::o;25868:103::-;25941:24;25959:5;25941:24;:::i;:::-;25936:3;25929:37;25923:48;;:::o;25978:113::-;26061:24;26079:5;26061:24;:::i;:::-;26056:3;26049:37;26043:48;;:::o;26161:1074::-;;26402:102;26498:5;26402:102;:::i;:::-;26517:134;26644:6;26639:3;26517:134;:::i;:::-;26510:141;;26672:104;26770:5;26672:104;:::i;:::-;26796:7;26824:1;26809:404;26834:6;26831:1;26828:13;26809:404;;;26901:6;26895:13;26922:159;27077:3;27062:13;26922:159;:::i;:::-;26915:166;;27098:108;27199:6;27098:108;:::i;:::-;27088:118;;26866:347;26856:1;26853;26849:9;26844:14;;26809:404;;;26813:14;27226:3;27219:10;;26381:854;;;;;;;:::o;27302:840::-;27475:77;27546:5;27475:77;:::i;:::-;27565:99;27657:6;27652:3;27565:99;:::i;:::-;27558:106;;27685:79;27758:5;27685:79;:::i;:::-;27784:7;27812:1;27797:333;27822:6;27819:1;27816:13;27797:333;;;27889:6;27883:13;27910:113;28019:3;28004:13;27910:113;:::i;:::-;27903:120;;28040:83;28116:6;28040:83;:::i;:::-;28030:93;;27854:276;27844:1;27841;27837:9;27832:14;;27797:333;;;27801:14;27454:688;;;;;:::o;28209:860::-;28392:77;28463:5;28392:77;:::i;:::-;28482:109;28584:6;28579:3;28482:109;:::i;:::-;28475:116;;28612:79;28685:5;28612:79;:::i;:::-;28711:7;28739:1;28724:333;28749:6;28746:1;28743:13;28724:333;;;28816:6;28810:13;28837:113;28946:3;28931:13;28837:113;:::i;:::-;28830:120;;28967:83;29043:6;28967:83;:::i;:::-;28957:93;;28781:276;28771:1;28768;28764:9;28759:14;;28724:333;;;28728:14;28371:698;;;;;:::o;29134:870::-;;29319:79;29392:5;29319:79;:::i;:::-;29411:101;29505:6;29500:3;29411:101;:::i;:::-;29404:108;;29533:81;29608:5;29533:81;:::i;:::-;29634:7;29662:1;29647:335;29672:6;29669:1;29666:13;29647:335;;;29739:6;29733:13;29760:113;29869:3;29854:13;29760:113;:::i;:::-;29753:120;;29890:85;29968:6;29890:85;:::i;:::-;29880:95;;29704:278;29694:1;29691;29687:9;29682:14;;29647:335;;;29651:14;29995:3;29988:10;;29298:706;;;;;;;:::o;30069:890::-;;30264:79;30337:5;30264:79;:::i;:::-;30356:111;30460:6;30455:3;30356:111;:::i;:::-;30349:118;;30488:81;30563:5;30488:81;:::i;:::-;30589:7;30617:1;30602:335;30627:6;30624:1;30621:13;30602:335;;;30694:6;30688:13;30715:113;30824:3;30809:13;30715:113;:::i;:::-;30708:120;;30845:85;30923:6;30845:85;:::i;:::-;30835:95;;30659:278;30649:1;30646;30642:9;30637:14;;30602:335;;;30606:14;30950:3;30943:10;;30243:716;;;;;;;:::o;30998:670::-;;31133:54;31181:5;31133:54;:::i;:::-;31200:76;31269:6;31264:3;31200:76;:::i;:::-;31193:83;;31297:56;31347:5;31297:56;:::i;:::-;31373:7;31401:1;31386:260;31411:6;31408:1;31405:13;31386:260;;;31478:6;31472:13;31499:63;31558:3;31543:13;31499:63;:::i;:::-;31492:70;;31579:60;31632:6;31579:60;:::i;:::-;31569:70;;31443:203;31433:1;31430;31426:9;31421:14;;31386:260;;;31390:14;31659:3;31652:10;;31112:556;;;;;;;:::o;31676:104::-;31753:21;31768:5;31753:21;:::i;:::-;31748:3;31741:34;31735:45;;:::o;31787:103::-;31860:24;31878:5;31860:24;:::i;:::-;31855:3;31848:37;31842:48;;:::o;31897:343::-;;32007:38;32039:5;32007:38;:::i;:::-;32057:70;32120:6;32115:3;32057:70;:::i;:::-;32050:77;;32132:52;32177:6;32172:3;32165:4;32158:5;32154:16;32132:52;:::i;:::-;32205:29;32227:6;32205:29;:::i;:::-;32200:3;32196:39;32189:46;;31987:253;;;;;:::o;32248:381::-;;32408:67;32472:2;32467:3;32408:67;:::i;:::-;32401:74;;32508:34;32504:1;32499:3;32495:11;32488:55;32577:14;32572:2;32567:3;32563:12;32556:36;32620:2;32615:3;32611:12;32604:19;;32394:235;;;:::o;32638:381::-;;32798:67;32862:2;32857:3;32798:67;:::i;:::-;32791:74;;32898:34;32894:1;32889:3;32885:11;32878:55;32967:14;32962:2;32957:3;32953:12;32946:36;33010:2;33005:3;33001:12;32994:19;;32784:235;;;:::o;33028:373::-;;33188:67;33252:2;33247:3;33188:67;:::i;:::-;33181:74;;33288:34;33284:1;33279:3;33275:11;33268:55;33357:6;33352:2;33347:3;33343:12;33336:28;33392:2;33387:3;33383:12;33376:19;;33174:227;;;:::o;33410:389::-;;33570:67;33634:2;33629:3;33570:67;:::i;:::-;33563:74;;33670:34;33666:1;33661:3;33657:11;33650:55;33739:22;33734:2;33729:3;33725:12;33718:44;33790:2;33785:3;33781:12;33774:19;;33556:243;;;:::o;33808:389::-;;33968:67;34032:2;34027:3;33968:67;:::i;:::-;33961:74;;34068:34;34064:1;34059:3;34055:11;34048:55;34137:22;34132:2;34127:3;34123:12;34116:44;34188:2;34183:3;34179:12;34172:19;;33954:243;;;:::o;34206:385::-;;34366:67;34430:2;34425:3;34366:67;:::i;:::-;34359:74;;34466:34;34462:1;34457:3;34453:11;34446:55;34535:18;34530:2;34525:3;34521:12;34514:40;34582:2;34577:3;34573:12;34566:19;;34352:239;;;:::o;34600:320::-;;34760:67;34824:2;34819:3;34760:67;:::i;:::-;34753:74;;34860:22;34856:1;34851:3;34847:11;34840:43;34911:2;34906:3;34902:12;34895:19;;34746:174;;;:::o;34929:327::-;;35089:67;35153:2;35148:3;35089:67;:::i;:::-;35082:74;;35189:29;35185:1;35180:3;35176:11;35169:50;35247:2;35242:3;35238:12;35231:19;;35075:181;;;:::o;35265:440::-;;35425:67;35489:2;35484:3;35425:67;:::i;:::-;35418:74;;35525:34;35521:1;35516:3;35512:11;35505:55;35594:34;35589:2;35584:3;35580:12;35573:56;35663:4;35658:2;35653:3;35649:12;35642:26;35696:2;35691:3;35687:12;35680:19;;35411:294;;;:::o;35714:376::-;;35874:67;35938:2;35933:3;35874:67;:::i;:::-;35867:74;;35974:34;35970:1;35965:3;35961:11;35954:55;36043:9;36038:2;36033:3;36029:12;36022:31;36081:2;36076:3;36072:12;36065:19;;35860:230;;;:::o;36099:378::-;;36259:67;36323:2;36318:3;36259:67;:::i;:::-;36252:74;;36359:34;36355:1;36350:3;36346:11;36339:55;36428:11;36423:2;36418:3;36414:12;36407:33;36468:2;36463:3;36459:12;36452:19;;36245:232;;;:::o;36486:380::-;;36646:67;36710:2;36705:3;36646:67;:::i;:::-;36639:74;;36746:34;36742:1;36737:3;36733:11;36726:55;36815:13;36810:2;36805:3;36801:12;36794:35;36857:2;36852:3;36848:12;36841:19;;36632:234;;;:::o;36875:378::-;;37035:67;37099:2;37094:3;37035:67;:::i;:::-;37028:74;;37135:34;37131:1;37126:3;37122:11;37115:55;37204:11;37199:2;37194:3;37190:12;37183:33;37244:2;37239:3;37235:12;37228:19;;37021:232;;;:::o;37262:331::-;;37422:67;37486:2;37481:3;37422:67;:::i;:::-;37415:74;;37522:33;37518:1;37513:3;37509:11;37502:54;37584:2;37579:3;37575:12;37568:19;;37408:185;;;:::o;37602:383::-;;37762:67;37826:2;37821:3;37762:67;:::i;:::-;37755:74;;37862:34;37858:1;37853:3;37849:11;37842:55;37931:16;37926:2;37921:3;37917:12;37910:38;37976:2;37971:3;37967:12;37960:19;;37748:237;;;:::o;37994:372::-;;38154:67;38218:2;38213:3;38154:67;:::i;:::-;38147:74;;38254:34;38250:1;38245:3;38241:11;38234:55;38323:5;38318:2;38313:3;38309:12;38302:27;38357:2;38352:3;38348:12;38341:19;;38140:226;;;:::o;38375:400::-;;38535:67;38599:2;38594:3;38535:67;:::i;:::-;38528:74;;38635:34;38631:1;38626:3;38622:11;38615:55;38704:33;38699:2;38694:3;38690:12;38683:55;38766:2;38761:3;38757:12;38750:19;;38521:254;;;:::o;38784:319::-;;38944:67;39008:2;39003:3;38944:67;:::i;:::-;38937:74;;39044:21;39040:1;39035:3;39031:11;39024:42;39094:2;39089:3;39085:12;39078:19;;38930:173;;;:::o;39112:398::-;;39272:67;39336:2;39331:3;39272:67;:::i;:::-;39265:74;;39372:34;39368:1;39363:3;39359:11;39352:55;39441:31;39436:2;39431:3;39427:12;39420:53;39501:2;39496:3;39492:12;39485:19;;39258:252;;;:::o;39519:391::-;;39679:67;39743:2;39738:3;39679:67;:::i;:::-;39672:74;;39779:34;39775:1;39770:3;39766:11;39759:55;39848:24;39843:2;39838:3;39834:12;39827:46;39901:2;39896:3;39892:12;39885:19;;39665:245;;;:::o;39919:319::-;;40079:67;40143:2;40138:3;40079:67;:::i;:::-;40072:74;;40179:21;40175:1;40170:3;40166:11;40159:42;40229:2;40224:3;40220:12;40213:19;;40065:173;;;:::o;40247:370::-;;40407:67;40471:2;40466:3;40407:67;:::i;:::-;40400:74;;40507:34;40503:1;40498:3;40494:11;40487:55;40576:3;40571:2;40566:3;40562:12;40555:25;40608:2;40603:3;40599:12;40592:19;;40393:224;;;:::o;40626:372::-;;40786:67;40850:2;40845:3;40786:67;:::i;:::-;40779:74;;40886:34;40882:1;40877:3;40873:11;40866:55;40955:5;40950:2;40945:3;40941:12;40934:27;40989:2;40984:3;40980:12;40973:19;;40772:226;;;:::o;41007:442::-;;41167:67;41231:2;41226:3;41167:67;:::i;:::-;41160:74;;41267:34;41263:1;41258:3;41254:11;41247:55;41336:34;41331:2;41326:3;41322:12;41315:56;41405:6;41400:2;41395:3;41391:12;41384:28;41440:2;41435:3;41431:12;41424:19;;41153:296;;;:::o;41508:460::-;41641:4;41636:3;41632:14;41721:4;41714:5;41710:16;41704:23;41733:63;41790:4;41785:3;41781:14;41767:12;41733:63;:::i;:::-;41661:141;41872:4;41865:5;41861:16;41855:23;41884:63;41941:4;41936:3;41932:14;41918:12;41884:63;:::i;:::-;41812:141;41614:354;;;:::o;42026:470::-;42169:4;42164:3;42160:14;42249:4;42242:5;42238:16;42232:23;42261:63;42318:4;42313:3;42309:14;42295:12;42261:63;:::i;:::-;42189:141;42400:4;42393:5;42389:16;42383:23;42412:63;42469:4;42464:3;42460:14;42446:12;42412:63;:::i;:::-;42340:141;42142:354;;;:::o;42552:1091::-;;42689:4;42684:3;42680:14;42770:4;42763:5;42759:16;42753:23;42822:3;42816:4;42812:14;42805:4;42800:3;42796:14;42789:38;42842:153;42990:4;42976:12;42842:153;:::i;:::-;42834:161;;42709:298;43078:4;43071:5;43067:16;43061:23;43130:3;43124:4;43120:14;43113:4;43108:3;43104:14;43097:38;43150:153;43298:4;43284:12;43150:153;:::i;:::-;43142:161;;43017:298;43385:4;43378:5;43374:16;43368:23;43397:63;43454:4;43449:3;43445:14;43431:12;43397:63;:::i;:::-;43325:141;43536:4;43529:5;43525:16;43519:23;43548:63;43605:4;43600:3;43596:14;43582:12;43548:63;:::i;:::-;43476:141;43634:4;43627:11;;42662:981;;;;;:::o;43707:2040::-;;43854:6;43849:3;43845:16;43937:4;43930:5;43926:16;43920:23;43949:113;44056:4;44051:3;44047:14;44033:12;43949:113;:::i;:::-;43876:192;44139:4;44132:5;44128:16;44122:23;44151:113;44258:4;44253:3;44249:14;44235:12;44151:113;:::i;:::-;44078:192;44347:4;44340:5;44336:16;44330:23;44359:159;44512:4;44507:3;44503:14;44489:12;44359:159;:::i;:::-;44280:244;44597:4;44590:5;44586:16;44580:23;44609:65;44666:6;44661:3;44657:16;44643:12;44609:65;:::i;:::-;44534:146;44751:4;44744:5;44740:16;44734:23;44763:65;44820:6;44815:3;44811:16;44797:12;44763:65;:::i;:::-;44690:144;44904:4;44897:5;44893:16;44887:23;44916:65;44973:6;44968:3;44964:16;44950:12;44916:65;:::i;:::-;44844:143;45060:4;45053:5;45049:16;45043:23;45072:65;45129:6;45124:3;45120:16;45106:12;45072:65;:::i;:::-;44997:146;45215:4;45208:5;45204:16;45198:23;45227:65;45284:6;45279:3;45275:16;45261:12;45227:65;:::i;:::-;45153:145;45372:6;45365:5;45361:18;45355:25;45386:65;45443:6;45438:3;45434:16;45420:12;45386:65;:::i;:::-;45308:149;45534:6;45527:5;45523:18;45517:25;45590:3;45584:4;45580:14;45571:6;45566:3;45562:16;45555:40;45610:99;45704:4;45690:12;45610:99;:::i;:::-;45602:107;;45467:254;45738:4;45731:11;;43827:1920;;;;;:::o;45815:5844::-;;45962:6;45957:3;45953:16;46045:4;46038:5;46034:16;46028:23;46057:113;46164:4;46159:3;46155:14;46141:12;46057:113;:::i;:::-;45984:192;46247:4;46240:5;46236:16;46230:23;46259:113;46366:4;46361:3;46357:14;46343:12;46259:113;:::i;:::-;46186:192;46448:4;46441:5;46437:16;46431:23;46460:113;46567:4;46562:3;46558:14;46544:12;46460:113;:::i;:::-;46388:191;46649:4;46642:5;46638:16;46632:23;46661:113;46768:4;46763:3;46759:14;46745:12;46661:113;:::i;:::-;46589:191;46853:4;46846:5;46842:16;46836:23;46907:3;46901:4;46897:14;46888:6;46883:3;46879:16;46872:40;46927:153;47075:4;47061:12;46927:153;:::i;:::-;46919:161;;46790:302;47165:4;47158:5;47154:16;47148:23;47219:3;47213:4;47209:14;47200:6;47195:3;47191:16;47184:40;47239:153;47387:4;47373:12;47239:153;:::i;:::-;47231:161;;47102:302;47477:4;47470:5;47466:16;47460:23;47531:3;47525:4;47521:14;47512:6;47507:3;47503:16;47496:40;47551:153;47699:4;47685:12;47551:153;:::i;:::-;47543:161;;47414:302;47787:4;47780:5;47776:16;47770:23;47841:3;47835:4;47831:14;47822:6;47817:3;47813:16;47806:40;47861:153;48009:4;47995:12;47861:153;:::i;:::-;47853:161;;47726:300;48099:6;48092:5;48088:18;48082:25;48155:3;48149:4;48145:14;48136:6;48131:3;48127:16;48120:40;48175:153;48323:4;48309:12;48175:153;:::i;:::-;48167:161;;48036:304;48411:6;48404:5;48400:18;48394:25;48467:3;48461:4;48457:14;48448:6;48443:3;48439:16;48432:40;48487:153;48635:4;48621:12;48487:153;:::i;:::-;48479:161;;48350:302;48725:6;48718:5;48714:18;48708:25;48781:3;48775:4;48771:14;48762:6;48757:3;48753:16;48746:40;48801:153;48949:4;48935:12;48801:153;:::i;:::-;48793:161;;48662:304;49039:6;49032:5;49028:18;49022:25;49095:3;49089:4;49085:14;49076:6;49071:3;49067:16;49060:40;49115:153;49263:4;49249:12;49115:153;:::i;:::-;49107:161;;48976:304;49350:6;49343:5;49339:18;49333:25;49406:3;49400:4;49396:14;49387:6;49382:3;49378:16;49371:40;49426:103;49524:4;49510:12;49426:103;:::i;:::-;49418:111;;49290:251;49613:6;49606:5;49602:18;49596:25;49627:65;49684:6;49679:3;49675:16;49661:12;49627:65;:::i;:::-;49551:147;49770:6;49763:5;49759:18;49753:25;49784:65;49841:6;49836:3;49832:16;49818:12;49784:65;:::i;:::-;49708:147;49927:6;49920:5;49916:18;49910:25;49941:65;49998:6;49993:3;49989:16;49975:12;49941:65;:::i;:::-;49865:147;50089:6;50082:5;50078:18;50072:25;50103:161;50256:6;50251:3;50247:16;50233:12;50103:161;:::i;:::-;50022:248;50343:6;50336:5;50332:18;50326:25;50357:65;50414:6;50409:3;50405:16;50391:12;50357:65;:::i;:::-;50280:148;50499:6;50492:5;50488:18;50482:25;50513:65;50570:6;50565:3;50561:16;50547:12;50513:65;:::i;:::-;50438:146;50654:6;50647:5;50643:18;50637:25;50668:65;50725:6;50720:3;50716:16;50702:12;50668:65;:::i;:::-;50594:145;50812:6;50805:5;50801:18;50795:25;50826:65;50883:6;50878:3;50874:16;50860:12;50826:65;:::i;:::-;50749:148;50969:6;50962:5;50958:18;50952:25;50983:65;51040:6;51035:3;51031:16;51017:12;50983:65;:::i;:::-;50907:147;51126:6;51119:5;51115:18;51109:25;51140:65;51197:6;51192:3;51188:16;51174:12;51140:65;:::i;:::-;51064:147;51285:6;51278:5;51274:18;51268:25;51299:65;51356:6;51351:3;51347:16;51333:12;51299:65;:::i;:::-;51221:149;51446:6;51439:5;51435:18;51429:25;51502:3;51496:4;51492:14;51483:6;51478:3;51474:16;51467:40;51522:99;51616:4;51602:12;51522:99;:::i;:::-;51514:107;;51380:253;51650:4;51643:11;;45935:5724;;;;;:::o;51731:1298::-;51878:6;51873:3;51869:16;51963:4;51956:5;51952:16;51946:23;51975:113;52082:4;52077:3;52073:14;52059:12;51975:113;:::i;:::-;51900:194;52167:4;52160:5;52156:16;52150:23;52179:113;52286:4;52281:3;52277:14;52263:12;52179:113;:::i;:::-;52104:194;52369:4;52362:5;52358:16;52352:23;52381:113;52488:4;52483:3;52479:14;52465:12;52381:113;:::i;:::-;52308:192;52574:4;52567:5;52563:16;52557:23;52586:63;52643:4;52638:3;52634:14;52620:12;52586:63;:::i;:::-;52510:145;52725:4;52718:5;52714:16;52708:23;52737:113;52844:4;52839:3;52835:14;52821:12;52737:113;:::i;:::-;52665:191;52931:4;52924:5;52920:16;52914:23;52943:65;53000:6;52995:3;52991:16;52977:12;52943:65;:::i;:::-;52866:148;51851:1178;;;:::o;53105:1985::-;;53260:6;53255:3;53251:16;53345:4;53338:5;53334:16;53328:23;53397:3;53391:4;53387:14;53380:4;53375:3;53371:14;53364:38;53417:153;53565:4;53551:12;53417:153;:::i;:::-;53409:161;;53282:300;53655:4;53648:5;53644:16;53638:23;53707:3;53701:4;53697:14;53690:4;53685:3;53681:14;53674:38;53727:153;53875:4;53861:12;53727:153;:::i;:::-;53719:161;;53592:300;53962:4;53955:5;53951:16;53945:23;54014:3;54008:4;54004:14;53997:4;53992:3;53988:14;53981:38;54034:153;54182:4;54168:12;54034:153;:::i;:::-;54026:161;;53902:297;54269:4;54262:5;54258:16;54252:23;54281:113;54388:4;54383:3;54379:14;54365:12;54281:113;:::i;:::-;54209:191;54471:4;54464:5;54460:16;54454:23;54523:3;54517:4;54513:14;54506:4;54501:3;54497:14;54490:38;54543:153;54691:4;54677:12;54543:153;:::i;:::-;54535:161;;54410:298;54782:4;54775:5;54771:16;54765:23;54794:63;54851:4;54846:3;54842:14;54828:12;54794:63;:::i;:::-;54718:145;54933:4;54926:5;54922:16;54916:23;54945:113;55052:4;55047:3;55043:14;55029:12;54945:113;:::i;:::-;54873:191;55081:4;55074:11;;53233:1857;;;;;:::o;55097:103::-;55170:24;55188:5;55170:24;:::i;:::-;55165:3;55158:37;55152:48;;:::o;55207:113::-;55290:24;55308:5;55290:24;:::i;:::-;55285:3;55278:37;55272:48;;:::o;55327:254::-;;55470:2;55459:9;55455:18;55447:26;;55484:87;55568:1;55557:9;55553:17;55544:6;55484:87;:::i;:::-;55441:140;;;;:::o;55588:645::-;;55871:3;55860:9;55856:19;55848:27;;55886:71;55954:1;55943:9;55939:17;55930:6;55886:71;:::i;:::-;55968:122;56086:2;56075:9;56071:18;56062:6;55968:122;:::i;:::-;56101;56219:2;56208:9;56204:18;56195:6;56101:122;:::i;:::-;55842:391;;;;;;:::o;56240:562::-;;56513:2;56502:9;56498:18;56490:26;;56563:9;56557:4;56553:20;56549:1;56538:9;56534:17;56527:47;56588:204;56787:4;56778:6;56588:204;:::i;:::-;56580:212;;56484:318;;;;:::o;56809:719::-;;57156:3;57145:9;57141:19;57133:27;;57171:167;57335:1;57324:9;57320:17;57311:6;57171:167;:::i;:::-;57349:169;57513:3;57502:9;57498:19;57489:6;57349:169;:::i;:::-;57127:401;;;;;:::o;57535:470::-;;57762:2;57751:9;57747:18;57739:26;;57812:9;57806:4;57802:20;57798:1;57787:9;57783:17;57776:47;57837:158;57990:4;57981:6;57837:158;:::i;:::-;57829:166;;57733:272;;;;:::o;58012:2084::-;;58807:3;58796:9;58792:19;58784:27;;58858:9;58852:4;58848:20;58844:1;58833:9;58829:17;58822:47;58883:158;59036:4;59027:6;58883:158;:::i;:::-;58875:166;;59089:9;59083:4;59079:20;59074:2;59063:9;59059:18;59052:48;59114:158;59267:4;59258:6;59114:158;:::i;:::-;59106:166;;59320:9;59314:4;59310:20;59305:2;59294:9;59290:18;59283:48;59345:158;59498:4;59489:6;59345:158;:::i;:::-;59337:166;;59514:122;59632:2;59621:9;59617:18;59608:6;59514:122;:::i;:::-;59685:9;59679:4;59675:20;59669:3;59658:9;59654:19;59647:49;59710:158;59863:4;59854:6;59710:158;:::i;:::-;59702:166;;59879:73;59947:3;59936:9;59932:19;59923:6;59879:73;:::i;:::-;59963:123;60081:3;60070:9;60066:19;60057:6;59963:123;:::i;:::-;58778:1318;;;;;;;;;;:::o;60103:210::-;;60224:2;60213:9;60209:18;60201:26;;60238:65;60300:1;60289:9;60285:17;60276:6;60238:65;:::i;:::-;60195:118;;;;:::o;60320:306::-;;60465:2;60454:9;60450:18;60442:26;;60515:9;60509:4;60505:20;60501:1;60490:9;60486:17;60479:47;60540:76;60611:4;60602:6;60540:76;:::i;:::-;60532:84;;60436:190;;;;:::o;60633:416::-;;60833:2;60822:9;60818:18;60810:26;;60883:9;60877:4;60873:20;60869:1;60858:9;60854:17;60847:47;60908:131;61034:4;60908:131;:::i;:::-;60900:139;;60804:245;;;:::o;61056:416::-;;61256:2;61245:9;61241:18;61233:26;;61306:9;61300:4;61296:20;61292:1;61281:9;61277:17;61270:47;61331:131;61457:4;61331:131;:::i;:::-;61323:139;;61227:245;;;:::o;61479:416::-;;61679:2;61668:9;61664:18;61656:26;;61729:9;61723:4;61719:20;61715:1;61704:9;61700:17;61693:47;61754:131;61880:4;61754:131;:::i;:::-;61746:139;;61650:245;;;:::o;61902:416::-;;62102:2;62091:9;62087:18;62079:26;;62152:9;62146:4;62142:20;62138:1;62127:9;62123:17;62116:47;62177:131;62303:4;62177:131;:::i;:::-;62169:139;;62073:245;;;:::o;62325:416::-;;62525:2;62514:9;62510:18;62502:26;;62575:9;62569:4;62565:20;62561:1;62550:9;62546:17;62539:47;62600:131;62726:4;62600:131;:::i;:::-;62592:139;;62496:245;;;:::o;62748:416::-;;62948:2;62937:9;62933:18;62925:26;;62998:9;62992:4;62988:20;62984:1;62973:9;62969:17;62962:47;63023:131;63149:4;63023:131;:::i;:::-;63015:139;;62919:245;;;:::o;63171:416::-;;63371:2;63360:9;63356:18;63348:26;;63421:9;63415:4;63411:20;63407:1;63396:9;63392:17;63385:47;63446:131;63572:4;63446:131;:::i;:::-;63438:139;;63342:245;;;:::o;63594:416::-;;63794:2;63783:9;63779:18;63771:26;;63844:9;63838:4;63834:20;63830:1;63819:9;63815:17;63808:47;63869:131;63995:4;63869:131;:::i;:::-;63861:139;;63765:245;;;:::o;64017:416::-;;64217:2;64206:9;64202:18;64194:26;;64267:9;64261:4;64257:20;64253:1;64242:9;64238:17;64231:47;64292:131;64418:4;64292:131;:::i;:::-;64284:139;;64188:245;;;:::o;64440:416::-;;64640:2;64629:9;64625:18;64617:26;;64690:9;64684:4;64680:20;64676:1;64665:9;64661:17;64654:47;64715:131;64841:4;64715:131;:::i;:::-;64707:139;;64611:245;;;:::o;64863:416::-;;65063:2;65052:9;65048:18;65040:26;;65113:9;65107:4;65103:20;65099:1;65088:9;65084:17;65077:47;65138:131;65264:4;65138:131;:::i;:::-;65130:139;;65034:245;;;:::o;65286:416::-;;65486:2;65475:9;65471:18;65463:26;;65536:9;65530:4;65526:20;65522:1;65511:9;65507:17;65500:47;65561:131;65687:4;65561:131;:::i;:::-;65553:139;;65457:245;;;:::o;65709:416::-;;65909:2;65898:9;65894:18;65886:26;;65959:9;65953:4;65949:20;65945:1;65934:9;65930:17;65923:47;65984:131;66110:4;65984:131;:::i;:::-;65976:139;;65880:245;;;:::o;66132:416::-;;66332:2;66321:9;66317:18;66309:26;;66382:9;66376:4;66372:20;66368:1;66357:9;66353:17;66346:47;66407:131;66533:4;66407:131;:::i;:::-;66399:139;;66303:245;;;:::o;66555:416::-;;66755:2;66744:9;66740:18;66732:26;;66805:9;66799:4;66795:20;66791:1;66780:9;66776:17;66769:47;66830:131;66956:4;66830:131;:::i;:::-;66822:139;;66726:245;;;:::o;66978:416::-;;67178:2;67167:9;67163:18;67155:26;;67228:9;67222:4;67218:20;67214:1;67203:9;67199:17;67192:47;67253:131;67379:4;67253:131;:::i;:::-;67245:139;;67149:245;;;:::o;67401:416::-;;67601:2;67590:9;67586:18;67578:26;;67651:9;67645:4;67641:20;67637:1;67626:9;67622:17;67615:47;67676:131;67802:4;67676:131;:::i;:::-;67668:139;;67572:245;;;:::o;67824:416::-;;68024:2;68013:9;68009:18;68001:26;;68074:9;68068:4;68064:20;68060:1;68049:9;68045:17;68038:47;68099:131;68225:4;68099:131;:::i;:::-;68091:139;;67995:245;;;:::o;68247:416::-;;68447:2;68436:9;68432:18;68424:26;;68497:9;68491:4;68487:20;68483:1;68472:9;68468:17;68461:47;68522:131;68648:4;68522:131;:::i;:::-;68514:139;;68418:245;;;:::o;68670:416::-;;68870:2;68859:9;68855:18;68847:26;;68920:9;68914:4;68910:20;68906:1;68895:9;68891:17;68884:47;68945:131;69071:4;68945:131;:::i;:::-;68937:139;;68841:245;;;:::o;69093:416::-;;69293:2;69282:9;69278:18;69270:26;;69343:9;69337:4;69333:20;69329:1;69318:9;69314:17;69307:47;69368:131;69494:4;69368:131;:::i;:::-;69360:139;;69264:245;;;:::o;69516:416::-;;69716:2;69705:9;69701:18;69693:26;;69766:9;69760:4;69756:20;69752:1;69741:9;69737:17;69730:47;69791:131;69917:4;69791:131;:::i;:::-;69783:139;;69687:245;;;:::o;69939:416::-;;70139:2;70128:9;70124:18;70116:26;;70189:9;70183:4;70179:20;70175:1;70164:9;70160:17;70153:47;70214:131;70340:4;70214:131;:::i;:::-;70206:139;;70110:245;;;:::o;70362:416::-;;70562:2;70551:9;70547:18;70539:26;;70612:9;70606:4;70602:20;70598:1;70587:9;70583:17;70576:47;70637:131;70763:4;70637:131;:::i;:::-;70629:139;;70533:245;;;:::o;70785:322::-;;70962:2;70951:9;70947:18;70939:26;;70976:121;71094:1;71083:9;71079:17;71070:6;70976:121;:::i;:::-;70933:174;;;;:::o;71114:1198::-;;71589:3;71578:9;71574:19;71566:27;;71604:121;71722:1;71711:9;71707:17;71698:6;71604:121;:::i;:::-;71736:122;71854:2;71843:9;71839:18;71830:6;71736:122;:::i;:::-;71869:123;71987:3;71976:9;71972:19;71963:6;71869:123;:::i;:::-;72003:73;72071:3;72060:9;72056:19;72047:6;72003:73;:::i;:::-;72087:123;72205:3;72194:9;72190:19;72181:6;72087:123;:::i;:::-;72221:81;72297:3;72286:9;72282:19;72273:6;72221:81;:::i;:::-;71560:752;;;;;;;;;:::o;72319:583::-;;72574:3;72563:9;72559:19;72551:27;;72589:125;72711:1;72700:9;72696:17;72687:6;72589:125;:::i;:::-;72763:9;72757:4;72753:20;72747:3;72736:9;72732:19;72725:49;72788:104;72887:4;72878:6;72788:104;:::i;:::-;72780:112;;72545:357;;;;;:::o;72909:629::-;;73164:2;73153:9;73149:18;73141:26;;73214:9;73208:4;73204:20;73200:1;73189:9;73185:17;73178:47;73239:112;73346:4;73337:6;73239:112;:::i;:::-;73231:120;;73399:9;73393:4;73389:20;73384:2;73373:9;73369:18;73362:48;73424:104;73523:4;73514:6;73424:104;:::i;:::-;73416:112;;73135:403;;;;;:::o;73545:222::-;;73672:2;73661:9;73657:18;73649:26;;73686:71;73754:1;73743:9;73739:17;73730:6;73686:71;:::i;:::-;73643:124;;;;:::o;73774:256::-;;73836:2;73830:9;73820:19;;73874:4;73866:6;73862:17;73973:6;73961:10;73958:22;73937:18;73925:10;73922:34;73919:62;73916:2;;;73994:1;73991;73984:12;73916:2;74014:10;74010:2;74003:22;73814:216;;;;:::o;74037:269::-;;74219:18;74211:6;74208:30;74205:2;;;74251:1;74248;74241:12;74205:2;74286:4;74278:6;74274:17;74266:25;;74142:164;;;:::o;74313:329::-;;74497:18;74489:6;74486:30;74483:2;;;74529:1;74526;74519:12;74483:2;74564:4;74556:6;74552:17;74544:25;;74627:4;74621;74617:15;74609:23;;74420:222;;;:::o;74649:304::-;;74808:18;74800:6;74797:30;74794:2;;;74840:1;74837;74830:12;74794:2;74875:4;74867:6;74863:17;74855:25;;74938:4;74932;74928:15;74920:23;;74731:222;;;:::o;74960:321::-;;75103:18;75095:6;75092:30;75089:2;;;75135:1;75132;75125:12;75089:2;75202:4;75198:9;75191:4;75183:6;75179:17;75175:33;75167:41;;75266:4;75260;75256:15;75248:23;;75026:255;;;:::o;75288:199::-;;75422:3;75414:11;;75460:4;75455:3;75451:14;75443:22;;75408:79;;;:::o;75494:122::-;;75603:3;75595:11;;75589:27;;;:::o;75623:176::-;;75734:3;75726:11;;75772:4;75767:3;75763:14;75755:22;;75720:79;;;:::o;75806:151::-;;75892:3;75884:11;;75930:4;75925:3;75921:14;75913:22;;75878:79;;;:::o;75964:185::-;;76121:5;76115:12;76105:22;;76086:63;;;:::o;76156:133::-;;76275:4;76265:14;;76253:36;;;:::o;76296:162::-;;76430:5;76424:12;76414:22;;76395:63;;;:::o;76465:137::-;;76574:5;76568:12;76558:22;;76539:63;;;:::o;76609:121::-;;76702:5;76696:12;76686:22;;76667:63;;;:::o;76737:156::-;;76883:4;76878:3;76874:14;76866:22;;76860:33;;;:::o;76900:131::-;;77021:4;77016:3;77012:14;77004:22;;76998:33;;;:::o;77038:133::-;;77161:4;77156:3;77152:14;77144:22;;77138:33;;;:::o;77178:108::-;;77276:4;77271:3;77267:14;77259:22;;77253:33;;;:::o;77294:226::-;;77472:6;77467:3;77460:19;77509:4;77504:3;77500:14;77485:29;;77453:67;;;;:::o;77529:155::-;;77675:3;77660:18;;77653:31;;;;:::o;77693:165::-;;77849:3;77834:18;;77827:31;;;;:::o;77867:193::-;;78012:6;78007:3;78000:19;78049:4;78044:3;78040:14;78025:29;;77993:67;;;;:::o;78069:203::-;;78224:6;78219:3;78212:19;78261:4;78256:3;78252:14;78237:29;;78205:67;;;;:::o;78281:168::-;;78401:6;78396:3;78389:19;78438:4;78433:3;78429:14;78414:29;;78382:67;;;;:::o;78458:162::-;;78572:6;78567:3;78560:19;78609:4;78604:3;78600:14;78585:29;;78553:67;;;;:::o;78629:163::-;;78744:6;78739:3;78732:19;78781:4;78776:3;78772:14;78757:29;;78725:67;;;;:::o;78800:91::-;;78862:24;78880:5;78862:24;:::i;:::-;78851:35;;78845:46;;;:::o;78898:99::-;;78968:24;78986:5;78968:24;:::i;:::-;78957:35;;78951:46;;;:::o;79004:85::-;;79077:5;79070:13;79063:21;79052:32;;79046:43;;;:::o;79096:72::-;;79158:5;79147:16;;79141:27;;;:::o;79175:121::-;;79248:42;79241:5;79237:54;79226:65;;79220:76;;;:::o;79303:72::-;;79365:5;79354:16;;79348:27;;;:::o;79382:129::-;;79469:37;79500:5;79469:37;:::i;:::-;79456:50;;79450:61;;;:::o;79518:121::-;;79597:37;79628:5;79597:37;:::i;:::-;79584:50;;79578:61;;;:::o;79646:108::-;;79725:24;79743:5;79725:24;:::i;:::-;79712:37;;79706:48;;;:::o;79762:145::-;79843:6;79838:3;79833;79820:30;79899:1;79890:6;79885:3;79881:16;79874:27;79813:94;;;:::o;79916:268::-;79981:1;79988:101;80002:6;79999:1;79996:13;79988:101;;;80078:1;80073:3;80069:11;80063:18;80059:1;80054:3;80050:11;80043:39;80024:2;80021:1;80017:10;80012:15;;79988:101;;;80104:6;80101:1;80098:13;80095:2;;;80169:1;80160:6;80155:3;80151:16;80144:27;80095:2;79965:219;;;;:::o;80192:97::-;;80280:2;80276:7;80271:2;80264:5;80260:14;80256:28;80246:38;;80240:49;;;:::o;80297:117::-;80366:24;80384:5;80366:24;:::i;:::-;80359:5;80356:35;80346:2;;80405:1;80402;80395:12;80346:2;80340:74;:::o;80421:133::-;80498:32;80524:5;80498:32;:::i;:::-;80491:5;80488:43;80478:2;;80545:1;80542;80535:12;80478:2;80472:82;:::o;80561:111::-;80627:21;80642:5;80627:21;:::i;:::-;80620:5;80617:32;80607:2;;80663:1;80660;80653:12;80607:2;80601:71;:::o;80679:117::-;80748:24;80766:5;80748:24;:::i;:::-;80741:5;80738:35;80728:2;;80787:1;80784;80777:12;80728:2;80722:74;:::o;80803:117::-;80872:24;80890:5;80872:24;:::i;:::-;80865:5;80862:35;80852:2;;80911:1;80908;80901:12;80852:2;80846:74;:::o",
"source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"./Utils.sol\";\nimport \"./RubyBase.sol\";\n\ncontract RubyETH is RubyBase {\n\n constructor(address _transfer, address _redeem, uint256 _unit) RubyBase(_transfer, _redeem, _unit) public {\n }\n\n function mint(Utils.G1Point memory y, uint256 unitAmount, bytes memory encGuess) public payable {\n uint256 mUnitAmount = toUnitAmount(msg.value);\n require(unitAmount == mUnitAmount, \"[Ruby mint] Specified mint amount is differnet from the paid amount.\");\n\n mintBase(y, unitAmount, encGuess);\n }\n\n function redeem(Utils.G1Point memory y, uint256 unitAmount, Utils.G1Point memory u, bytes memory proof, bytes memory encGuess) public {\n uint256 nativeAmount = toNativeAmount(unitAmount);\n uint256 fee = nativeAmount * redeem_fee_numerator / redeem_fee_denominator; \n\n redeemBase(y, unitAmount, u, proof, encGuess);\n\n if (fee > 0) {\n ruby_agency.transfer(fee);\n redeem_fee_log = redeem_fee_log + fee;\n }\n msg.sender.transfer(nativeAmount-fee);\n }\n}\n\n\n",
"sourcePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyETH.sol",
"ast": {
"absolutePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyETH.sol",
"exportedSymbols": {
"RubyETH": [
1642
]
},
"id": 1643,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1528,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "32:23:3"
},
{
"id": 1529,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "56:33:3"
},
{
"absolutePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/Utils.sol",
"file": "./Utils.sol",
"id": 1530,
"nodeType": "ImportDirective",
"scope": 1643,
"sourceUnit": 8450,
"src": "91:21:3",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/jinwan/Desktop/ruby_frontend-master/contracts/RubyBase.sol",
"file": "./RubyBase.sol",
"id": 1531,
"nodeType": "ImportDirective",
"scope": 1643,
"sourceUnit": 1389,
"src": "113:24:3",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1532,
"name": "RubyBase",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1388,
"src": "159:8:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_RubyBase_$1388",
"typeString": "contract RubyBase"
}
},
"id": 1533,
"nodeType": "InheritanceSpecifier",
"src": "159:8:3"
}
],
"contractDependencies": [
1388
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1642,
"linearizedBaseContracts": [
1642,
1388
],
"name": "RubyETH",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 1547,
"nodeType": "Block",
"src": "281:7:3",
"statements": []
},
"documentation": null,
"id": 1548,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"id": 1542,
"name": "_transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1535,
"src": "247:9:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1543,
"name": "_redeem",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1537,
"src": "258:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1544,
"name": "_unit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1539,
"src": "267:5:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 1545,
"modifierName": {
"argumentTypes": null,
"id": 1541,
"name": "RubyBase",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1388,
"src": "238:8:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_RubyBase_$1388_$",
"typeString": "type(contract RubyBase)"
}
},
"nodeType": "ModifierInvocation",
"src": "238:35:3"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1540,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1535,
"mutability": "mutable",
"name": "_transfer",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1548,
"src": "187:17:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1534,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "187:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1537,
"mutability": "mutable",
"name": "_redeem",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1548,
"src": "206:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1536,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "206:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1539,
"mutability": "mutable",
"name": "_unit",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1548,
"src": "223:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {