aiia-vault-sdk 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/SeedRoundFundraiser.ts +742 -0
  2. package/TradingVault.ts +863 -0
  3. package/abis/SeedRoundFundraiser.json +1519 -0
  4. package/abis/TradingVault.json +1647 -0
  5. package/common.ts +131 -0
  6. package/contracts/SeedRoundFundraiser.ts +1670 -0
  7. package/contracts/TradingVault.ts +1752 -0
  8. package/contracts/common.ts +131 -0
  9. package/contracts/factories/SeedRoundFundraiser__factory.ts +1495 -0
  10. package/contracts/factories/index.ts +4 -0
  11. package/contracts/index.ts +6 -0
  12. package/contracts.json +28 -0
  13. package/dist/SeedRoundFundraiser.d.ts +130 -0
  14. package/dist/SeedRoundFundraiser.js +445 -0
  15. package/dist/TradingVault.d.ts +175 -0
  16. package/dist/TradingVault.js +521 -0
  17. package/dist/abis/SeedRoundFundraiser.json +1519 -0
  18. package/dist/abis/TradingVault.json +1647 -0
  19. package/dist/common.d.ts +50 -0
  20. package/dist/common.js +2 -0
  21. package/dist/contracts/SeedRoundFundraiser.d.ts +936 -0
  22. package/dist/contracts/SeedRoundFundraiser.js +2 -0
  23. package/dist/contracts/TradingVault.d.ts +930 -0
  24. package/dist/contracts/TradingVault.js +2 -0
  25. package/dist/contracts.json +28 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.js +19 -0
  28. package/dist/types.d.ts +291 -0
  29. package/dist/types.js +2 -0
  30. package/dist/utils.d.ts +95 -0
  31. package/dist/utils.js +370 -0
  32. package/dist/whitelist-tokens.json +14 -0
  33. package/index.ts +3 -0
  34. package/package.json +21 -0
  35. package/temp/aiia-vault-sdk-1.0.0.tgz +0 -0
  36. package/tsconfig.json +15 -0
  37. package/types.ts +301 -0
  38. package/utils.ts +576 -0
  39. package/whitelist-tokens.json +14 -0
@@ -0,0 +1,1519 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SeedRoundFundraiser",
4
+ "sourceName": "contracts/SeedRoundFundraiser.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [],
13
+ "name": "AccessControlBadConfirmation",
14
+ "type": "error"
15
+ },
16
+ {
17
+ "inputs": [
18
+ {
19
+ "internalType": "address",
20
+ "name": "account",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "bytes32",
25
+ "name": "neededRole",
26
+ "type": "bytes32"
27
+ }
28
+ ],
29
+ "name": "AccessControlUnauthorizedAccount",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "AccountAlreadyParticipatedInAnotherRound",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "AlreadyClaimed",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "inputs": [],
44
+ "name": "AlreadyRefunded",
45
+ "type": "error"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "ClaimingNotEnabled",
50
+ "type": "error"
51
+ },
52
+ {
53
+ "inputs": [],
54
+ "name": "EthTransferFailed",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "ExceedsMaxFundPerAccount",
60
+ "type": "error"
61
+ },
62
+ {
63
+ "inputs": [],
64
+ "name": "ExceedsRoundTargetFund",
65
+ "type": "error"
66
+ },
67
+ {
68
+ "inputs": [],
69
+ "name": "InsufficientBalance",
70
+ "type": "error"
71
+ },
72
+ {
73
+ "inputs": [],
74
+ "name": "InvalidAllocation",
75
+ "type": "error"
76
+ },
77
+ {
78
+ "inputs": [],
79
+ "name": "InvalidEndTime",
80
+ "type": "error"
81
+ },
82
+ {
83
+ "inputs": [],
84
+ "name": "InvalidEthAmount",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "InvalidInitialization",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [],
94
+ "name": "InvalidMaxFundPerAccount",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "inputs": [],
99
+ "name": "InvalidRoundConfig",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "InvalidRoundId",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [],
109
+ "name": "InvalidStartTime",
110
+ "type": "error"
111
+ },
112
+ {
113
+ "inputs": [],
114
+ "name": "InvalidTargetFund",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [],
119
+ "name": "InvalidTokenAddress",
120
+ "type": "error"
121
+ },
122
+ {
123
+ "inputs": [],
124
+ "name": "InvalidTokenPrice",
125
+ "type": "error"
126
+ },
127
+ {
128
+ "inputs": [],
129
+ "name": "InvalidUserAddress",
130
+ "type": "error"
131
+ },
132
+ {
133
+ "inputs": [],
134
+ "name": "NoParticipation",
135
+ "type": "error"
136
+ },
137
+ {
138
+ "inputs": [],
139
+ "name": "NotInitializing",
140
+ "type": "error"
141
+ },
142
+ {
143
+ "inputs": [
144
+ {
145
+ "internalType": "address",
146
+ "name": "owner",
147
+ "type": "address"
148
+ }
149
+ ],
150
+ "name": "OwnableInvalidOwner",
151
+ "type": "error"
152
+ },
153
+ {
154
+ "inputs": [
155
+ {
156
+ "internalType": "address",
157
+ "name": "account",
158
+ "type": "address"
159
+ }
160
+ ],
161
+ "name": "OwnableUnauthorizedAccount",
162
+ "type": "error"
163
+ },
164
+ {
165
+ "inputs": [],
166
+ "name": "RefundNotAllowed",
167
+ "type": "error"
168
+ },
169
+ {
170
+ "inputs": [],
171
+ "name": "RoundAlreadyEnded",
172
+ "type": "error"
173
+ },
174
+ {
175
+ "inputs": [],
176
+ "name": "RoundAlreadyExists",
177
+ "type": "error"
178
+ },
179
+ {
180
+ "inputs": [],
181
+ "name": "RoundDoesNotExist",
182
+ "type": "error"
183
+ },
184
+ {
185
+ "inputs": [],
186
+ "name": "RoundNotActive",
187
+ "type": "error"
188
+ },
189
+ {
190
+ "inputs": [],
191
+ "name": "TokenNotWhitelisted",
192
+ "type": "error"
193
+ },
194
+ {
195
+ "inputs": [],
196
+ "name": "TransferFailed",
197
+ "type": "error"
198
+ },
199
+ {
200
+ "inputs": [],
201
+ "name": "ZeroAmount",
202
+ "type": "error"
203
+ },
204
+ {
205
+ "anonymous": false,
206
+ "inputs": [
207
+ {
208
+ "indexed": true,
209
+ "internalType": "uint256",
210
+ "name": "roundId",
211
+ "type": "uint256"
212
+ },
213
+ {
214
+ "indexed": false,
215
+ "internalType": "bool",
216
+ "name": "enabled",
217
+ "type": "bool"
218
+ }
219
+ ],
220
+ "name": "ClaimingEnabledUpdated",
221
+ "type": "event"
222
+ },
223
+ {
224
+ "anonymous": false,
225
+ "inputs": [
226
+ {
227
+ "indexed": true,
228
+ "internalType": "uint256",
229
+ "name": "roundId",
230
+ "type": "uint256"
231
+ },
232
+ {
233
+ "indexed": true,
234
+ "internalType": "address",
235
+ "name": "contributor",
236
+ "type": "address"
237
+ },
238
+ {
239
+ "indexed": true,
240
+ "internalType": "address",
241
+ "name": "token",
242
+ "type": "address"
243
+ },
244
+ {
245
+ "indexed": false,
246
+ "internalType": "uint256",
247
+ "name": "amount",
248
+ "type": "uint256"
249
+ },
250
+ {
251
+ "indexed": false,
252
+ "internalType": "uint256",
253
+ "name": "fundAmount",
254
+ "type": "uint256"
255
+ },
256
+ {
257
+ "indexed": false,
258
+ "internalType": "uint256",
259
+ "name": "tokenAllocation",
260
+ "type": "uint256"
261
+ }
262
+ ],
263
+ "name": "Contribution",
264
+ "type": "event"
265
+ },
266
+ {
267
+ "anonymous": false,
268
+ "inputs": [
269
+ {
270
+ "indexed": false,
271
+ "internalType": "uint64",
272
+ "name": "version",
273
+ "type": "uint64"
274
+ }
275
+ ],
276
+ "name": "Initialized",
277
+ "type": "event"
278
+ },
279
+ {
280
+ "anonymous": false,
281
+ "inputs": [
282
+ {
283
+ "indexed": true,
284
+ "internalType": "uint256",
285
+ "name": "roundId",
286
+ "type": "uint256"
287
+ },
288
+ {
289
+ "indexed": false,
290
+ "internalType": "bool",
291
+ "name": "enabled",
292
+ "type": "bool"
293
+ }
294
+ ],
295
+ "name": "MultiRoundParticipationUpdated",
296
+ "type": "event"
297
+ },
298
+ {
299
+ "anonymous": false,
300
+ "inputs": [
301
+ {
302
+ "indexed": true,
303
+ "internalType": "address",
304
+ "name": "previousOwner",
305
+ "type": "address"
306
+ },
307
+ {
308
+ "indexed": true,
309
+ "internalType": "address",
310
+ "name": "newOwner",
311
+ "type": "address"
312
+ }
313
+ ],
314
+ "name": "OwnershipTransferred",
315
+ "type": "event"
316
+ },
317
+ {
318
+ "anonymous": false,
319
+ "inputs": [
320
+ {
321
+ "indexed": true,
322
+ "internalType": "address",
323
+ "name": "oldToken",
324
+ "type": "address"
325
+ },
326
+ {
327
+ "indexed": true,
328
+ "internalType": "address",
329
+ "name": "newToken",
330
+ "type": "address"
331
+ }
332
+ ],
333
+ "name": "ProjectTokenUpdated",
334
+ "type": "event"
335
+ },
336
+ {
337
+ "anonymous": false,
338
+ "inputs": [
339
+ {
340
+ "indexed": true,
341
+ "internalType": "uint256",
342
+ "name": "roundId",
343
+ "type": "uint256"
344
+ },
345
+ {
346
+ "indexed": false,
347
+ "internalType": "bool",
348
+ "name": "enabled",
349
+ "type": "bool"
350
+ }
351
+ ],
352
+ "name": "RefundEnabledUpdated",
353
+ "type": "event"
354
+ },
355
+ {
356
+ "anonymous": false,
357
+ "inputs": [
358
+ {
359
+ "indexed": true,
360
+ "internalType": "uint256",
361
+ "name": "roundId",
362
+ "type": "uint256"
363
+ },
364
+ {
365
+ "indexed": true,
366
+ "internalType": "address",
367
+ "name": "user",
368
+ "type": "address"
369
+ },
370
+ {
371
+ "indexed": true,
372
+ "internalType": "address",
373
+ "name": "token",
374
+ "type": "address"
375
+ },
376
+ {
377
+ "indexed": false,
378
+ "internalType": "uint256",
379
+ "name": "amount",
380
+ "type": "uint256"
381
+ }
382
+ ],
383
+ "name": "Refunded",
384
+ "type": "event"
385
+ },
386
+ {
387
+ "anonymous": false,
388
+ "inputs": [
389
+ {
390
+ "indexed": true,
391
+ "internalType": "bytes32",
392
+ "name": "role",
393
+ "type": "bytes32"
394
+ },
395
+ {
396
+ "indexed": true,
397
+ "internalType": "bytes32",
398
+ "name": "previousAdminRole",
399
+ "type": "bytes32"
400
+ },
401
+ {
402
+ "indexed": true,
403
+ "internalType": "bytes32",
404
+ "name": "newAdminRole",
405
+ "type": "bytes32"
406
+ }
407
+ ],
408
+ "name": "RoleAdminChanged",
409
+ "type": "event"
410
+ },
411
+ {
412
+ "anonymous": false,
413
+ "inputs": [
414
+ {
415
+ "indexed": true,
416
+ "internalType": "bytes32",
417
+ "name": "role",
418
+ "type": "bytes32"
419
+ },
420
+ {
421
+ "indexed": true,
422
+ "internalType": "address",
423
+ "name": "account",
424
+ "type": "address"
425
+ },
426
+ {
427
+ "indexed": true,
428
+ "internalType": "address",
429
+ "name": "sender",
430
+ "type": "address"
431
+ }
432
+ ],
433
+ "name": "RoleGranted",
434
+ "type": "event"
435
+ },
436
+ {
437
+ "anonymous": false,
438
+ "inputs": [
439
+ {
440
+ "indexed": true,
441
+ "internalType": "bytes32",
442
+ "name": "role",
443
+ "type": "bytes32"
444
+ },
445
+ {
446
+ "indexed": true,
447
+ "internalType": "address",
448
+ "name": "account",
449
+ "type": "address"
450
+ },
451
+ {
452
+ "indexed": true,
453
+ "internalType": "address",
454
+ "name": "sender",
455
+ "type": "address"
456
+ }
457
+ ],
458
+ "name": "RoleRevoked",
459
+ "type": "event"
460
+ },
461
+ {
462
+ "anonymous": false,
463
+ "inputs": [
464
+ {
465
+ "indexed": true,
466
+ "internalType": "uint256",
467
+ "name": "roundId",
468
+ "type": "uint256"
469
+ },
470
+ {
471
+ "indexed": false,
472
+ "internalType": "uint256",
473
+ "name": "startTime",
474
+ "type": "uint256"
475
+ },
476
+ {
477
+ "indexed": false,
478
+ "internalType": "uint256",
479
+ "name": "endTime",
480
+ "type": "uint256"
481
+ },
482
+ {
483
+ "indexed": false,
484
+ "internalType": "uint256",
485
+ "name": "targetFund",
486
+ "type": "uint256"
487
+ },
488
+ {
489
+ "indexed": false,
490
+ "internalType": "uint256",
491
+ "name": "totalAllocation",
492
+ "type": "uint256"
493
+ },
494
+ {
495
+ "indexed": false,
496
+ "internalType": "uint256",
497
+ "name": "maxFundPerAccount",
498
+ "type": "uint256"
499
+ }
500
+ ],
501
+ "name": "RoundCreated",
502
+ "type": "event"
503
+ },
504
+ {
505
+ "anonymous": false,
506
+ "inputs": [
507
+ {
508
+ "indexed": true,
509
+ "internalType": "uint256",
510
+ "name": "roundId",
511
+ "type": "uint256"
512
+ },
513
+ {
514
+ "indexed": false,
515
+ "internalType": "uint256",
516
+ "name": "raisedFunds",
517
+ "type": "uint256"
518
+ },
519
+ {
520
+ "indexed": false,
521
+ "internalType": "uint256",
522
+ "name": "participants",
523
+ "type": "uint256"
524
+ }
525
+ ],
526
+ "name": "RoundEnded",
527
+ "type": "event"
528
+ },
529
+ {
530
+ "anonymous": false,
531
+ "inputs": [
532
+ {
533
+ "indexed": true,
534
+ "internalType": "uint256",
535
+ "name": "roundId",
536
+ "type": "uint256"
537
+ },
538
+ {
539
+ "indexed": false,
540
+ "internalType": "uint256",
541
+ "name": "startTime",
542
+ "type": "uint256"
543
+ },
544
+ {
545
+ "indexed": false,
546
+ "internalType": "uint256",
547
+ "name": "endTime",
548
+ "type": "uint256"
549
+ },
550
+ {
551
+ "indexed": false,
552
+ "internalType": "uint256",
553
+ "name": "targetFund",
554
+ "type": "uint256"
555
+ },
556
+ {
557
+ "indexed": false,
558
+ "internalType": "uint256",
559
+ "name": "totalAllocation",
560
+ "type": "uint256"
561
+ },
562
+ {
563
+ "indexed": false,
564
+ "internalType": "uint256",
565
+ "name": "maxFundPerAccount",
566
+ "type": "uint256"
567
+ }
568
+ ],
569
+ "name": "RoundUpdated",
570
+ "type": "event"
571
+ },
572
+ {
573
+ "anonymous": false,
574
+ "inputs": [
575
+ {
576
+ "indexed": true,
577
+ "internalType": "address",
578
+ "name": "token",
579
+ "type": "address"
580
+ },
581
+ {
582
+ "indexed": false,
583
+ "internalType": "uint256",
584
+ "name": "oldPrice",
585
+ "type": "uint256"
586
+ },
587
+ {
588
+ "indexed": false,
589
+ "internalType": "uint256",
590
+ "name": "newPrice",
591
+ "type": "uint256"
592
+ }
593
+ ],
594
+ "name": "TokenPriceUpdated",
595
+ "type": "event"
596
+ },
597
+ {
598
+ "anonymous": false,
599
+ "inputs": [
600
+ {
601
+ "indexed": true,
602
+ "internalType": "address",
603
+ "name": "token",
604
+ "type": "address"
605
+ }
606
+ ],
607
+ "name": "TokenRemovedFromWhitelist",
608
+ "type": "event"
609
+ },
610
+ {
611
+ "anonymous": false,
612
+ "inputs": [
613
+ {
614
+ "indexed": true,
615
+ "internalType": "address",
616
+ "name": "token",
617
+ "type": "address"
618
+ },
619
+ {
620
+ "indexed": false,
621
+ "internalType": "uint256",
622
+ "name": "price",
623
+ "type": "uint256"
624
+ }
625
+ ],
626
+ "name": "TokenWhitelisted",
627
+ "type": "event"
628
+ },
629
+ {
630
+ "anonymous": false,
631
+ "inputs": [
632
+ {
633
+ "indexed": true,
634
+ "internalType": "uint256",
635
+ "name": "roundId",
636
+ "type": "uint256"
637
+ },
638
+ {
639
+ "indexed": true,
640
+ "internalType": "address",
641
+ "name": "user",
642
+ "type": "address"
643
+ },
644
+ {
645
+ "indexed": false,
646
+ "internalType": "uint256",
647
+ "name": "amount",
648
+ "type": "uint256"
649
+ }
650
+ ],
651
+ "name": "TokensClaimed",
652
+ "type": "event"
653
+ },
654
+ {
655
+ "stateMutability": "payable",
656
+ "type": "fallback"
657
+ },
658
+ {
659
+ "inputs": [],
660
+ "name": "DEFAULT_ADMIN_ROLE",
661
+ "outputs": [
662
+ {
663
+ "internalType": "bytes32",
664
+ "name": "",
665
+ "type": "bytes32"
666
+ }
667
+ ],
668
+ "stateMutability": "view",
669
+ "type": "function"
670
+ },
671
+ {
672
+ "inputs": [],
673
+ "name": "ETH_ADDRESS",
674
+ "outputs": [
675
+ {
676
+ "internalType": "address",
677
+ "name": "",
678
+ "type": "address"
679
+ }
680
+ ],
681
+ "stateMutability": "view",
682
+ "type": "function"
683
+ },
684
+ {
685
+ "inputs": [],
686
+ "name": "OPERATOR_ROLE",
687
+ "outputs": [
688
+ {
689
+ "internalType": "bytes32",
690
+ "name": "",
691
+ "type": "bytes32"
692
+ }
693
+ ],
694
+ "stateMutability": "view",
695
+ "type": "function"
696
+ },
697
+ {
698
+ "inputs": [],
699
+ "name": "PRICE_PRECISION",
700
+ "outputs": [
701
+ {
702
+ "internalType": "uint256",
703
+ "name": "",
704
+ "type": "uint256"
705
+ }
706
+ ],
707
+ "stateMutability": "view",
708
+ "type": "function"
709
+ },
710
+ {
711
+ "inputs": [
712
+ {
713
+ "internalType": "address",
714
+ "name": "_token",
715
+ "type": "address"
716
+ },
717
+ {
718
+ "internalType": "uint256",
719
+ "name": "_price",
720
+ "type": "uint256"
721
+ }
722
+ ],
723
+ "name": "addWhitelistedToken",
724
+ "outputs": [],
725
+ "stateMutability": "nonpayable",
726
+ "type": "function"
727
+ },
728
+ {
729
+ "inputs": [],
730
+ "name": "claimTokens",
731
+ "outputs": [],
732
+ "stateMutability": "nonpayable",
733
+ "type": "function"
734
+ },
735
+ {
736
+ "inputs": [
737
+ {
738
+ "internalType": "uint256",
739
+ "name": "_roundId",
740
+ "type": "uint256"
741
+ }
742
+ ],
743
+ "name": "claimTokensByRoundId",
744
+ "outputs": [],
745
+ "stateMutability": "nonpayable",
746
+ "type": "function"
747
+ },
748
+ {
749
+ "inputs": [
750
+ {
751
+ "internalType": "uint256",
752
+ "name": "_roundId",
753
+ "type": "uint256"
754
+ },
755
+ {
756
+ "internalType": "address",
757
+ "name": "_token",
758
+ "type": "address"
759
+ },
760
+ {
761
+ "internalType": "uint256",
762
+ "name": "_amount",
763
+ "type": "uint256"
764
+ }
765
+ ],
766
+ "name": "contribute",
767
+ "outputs": [],
768
+ "stateMutability": "payable",
769
+ "type": "function"
770
+ },
771
+ {
772
+ "inputs": [
773
+ {
774
+ "internalType": "uint256",
775
+ "name": "_startTime",
776
+ "type": "uint256"
777
+ },
778
+ {
779
+ "internalType": "uint256",
780
+ "name": "_endTime",
781
+ "type": "uint256"
782
+ },
783
+ {
784
+ "internalType": "uint256",
785
+ "name": "_targetFund",
786
+ "type": "uint256"
787
+ },
788
+ {
789
+ "internalType": "uint256",
790
+ "name": "_totalAllocation",
791
+ "type": "uint256"
792
+ },
793
+ {
794
+ "internalType": "uint256",
795
+ "name": "_maxFundPerAccount",
796
+ "type": "uint256"
797
+ }
798
+ ],
799
+ "name": "createRound",
800
+ "outputs": [],
801
+ "stateMutability": "nonpayable",
802
+ "type": "function"
803
+ },
804
+ {
805
+ "inputs": [
806
+ {
807
+ "internalType": "uint256",
808
+ "name": "_roundId",
809
+ "type": "uint256"
810
+ }
811
+ ],
812
+ "name": "endRound",
813
+ "outputs": [],
814
+ "stateMutability": "nonpayable",
815
+ "type": "function"
816
+ },
817
+ {
818
+ "inputs": [
819
+ {
820
+ "internalType": "bytes32",
821
+ "name": "role",
822
+ "type": "bytes32"
823
+ }
824
+ ],
825
+ "name": "getRoleAdmin",
826
+ "outputs": [
827
+ {
828
+ "internalType": "bytes32",
829
+ "name": "",
830
+ "type": "bytes32"
831
+ }
832
+ ],
833
+ "stateMutability": "view",
834
+ "type": "function"
835
+ },
836
+ {
837
+ "inputs": [],
838
+ "name": "getRoundsCount",
839
+ "outputs": [
840
+ {
841
+ "internalType": "uint256",
842
+ "name": "",
843
+ "type": "uint256"
844
+ }
845
+ ],
846
+ "stateMutability": "view",
847
+ "type": "function"
848
+ },
849
+ {
850
+ "inputs": [
851
+ {
852
+ "internalType": "address",
853
+ "name": "_user",
854
+ "type": "address"
855
+ }
856
+ ],
857
+ "name": "getUserParticipatedRound",
858
+ "outputs": [
859
+ {
860
+ "internalType": "uint256",
861
+ "name": "roundId",
862
+ "type": "uint256"
863
+ }
864
+ ],
865
+ "stateMutability": "view",
866
+ "type": "function"
867
+ },
868
+ {
869
+ "inputs": [
870
+ {
871
+ "internalType": "uint256",
872
+ "name": "_roundId",
873
+ "type": "uint256"
874
+ },
875
+ {
876
+ "internalType": "address",
877
+ "name": "_user",
878
+ "type": "address"
879
+ }
880
+ ],
881
+ "name": "getUserRoundContribution",
882
+ "outputs": [
883
+ {
884
+ "internalType": "uint256",
885
+ "name": "fundAmount",
886
+ "type": "uint256"
887
+ },
888
+ {
889
+ "internalType": "uint256",
890
+ "name": "tokenAllocation",
891
+ "type": "uint256"
892
+ },
893
+ {
894
+ "internalType": "bool",
895
+ "name": "claimed",
896
+ "type": "bool"
897
+ },
898
+ {
899
+ "internalType": "bool",
900
+ "name": "refunded",
901
+ "type": "bool"
902
+ },
903
+ {
904
+ "internalType": "address",
905
+ "name": "contributedToken",
906
+ "type": "address"
907
+ },
908
+ {
909
+ "internalType": "uint256",
910
+ "name": "contributedAmount",
911
+ "type": "uint256"
912
+ }
913
+ ],
914
+ "stateMutability": "view",
915
+ "type": "function"
916
+ },
917
+ {
918
+ "inputs": [
919
+ {
920
+ "internalType": "address",
921
+ "name": "_user",
922
+ "type": "address"
923
+ }
924
+ ],
925
+ "name": "getUserTotalContribution",
926
+ "outputs": [
927
+ {
928
+ "internalType": "uint256",
929
+ "name": "totalFundAmount",
930
+ "type": "uint256"
931
+ },
932
+ {
933
+ "internalType": "uint256",
934
+ "name": "totalTokenAllocation",
935
+ "type": "uint256"
936
+ }
937
+ ],
938
+ "stateMutability": "view",
939
+ "type": "function"
940
+ },
941
+ {
942
+ "inputs": [
943
+ {
944
+ "internalType": "address",
945
+ "name": "operator",
946
+ "type": "address"
947
+ }
948
+ ],
949
+ "name": "grantOperatorRole",
950
+ "outputs": [],
951
+ "stateMutability": "nonpayable",
952
+ "type": "function"
953
+ },
954
+ {
955
+ "inputs": [
956
+ {
957
+ "internalType": "bytes32",
958
+ "name": "role",
959
+ "type": "bytes32"
960
+ },
961
+ {
962
+ "internalType": "address",
963
+ "name": "account",
964
+ "type": "address"
965
+ }
966
+ ],
967
+ "name": "grantRole",
968
+ "outputs": [],
969
+ "stateMutability": "nonpayable",
970
+ "type": "function"
971
+ },
972
+ {
973
+ "inputs": [
974
+ {
975
+ "internalType": "bytes32",
976
+ "name": "role",
977
+ "type": "bytes32"
978
+ },
979
+ {
980
+ "internalType": "address",
981
+ "name": "account",
982
+ "type": "address"
983
+ }
984
+ ],
985
+ "name": "hasRole",
986
+ "outputs": [
987
+ {
988
+ "internalType": "bool",
989
+ "name": "",
990
+ "type": "bool"
991
+ }
992
+ ],
993
+ "stateMutability": "view",
994
+ "type": "function"
995
+ },
996
+ {
997
+ "inputs": [
998
+ {
999
+ "internalType": "address",
1000
+ "name": "_projectToken",
1001
+ "type": "address"
1002
+ }
1003
+ ],
1004
+ "name": "initialize",
1005
+ "outputs": [],
1006
+ "stateMutability": "nonpayable",
1007
+ "type": "function"
1008
+ },
1009
+ {
1010
+ "inputs": [
1011
+ {
1012
+ "internalType": "uint256",
1013
+ "name": "_roundId",
1014
+ "type": "uint256"
1015
+ }
1016
+ ],
1017
+ "name": "isRoundActive",
1018
+ "outputs": [
1019
+ {
1020
+ "internalType": "bool",
1021
+ "name": "",
1022
+ "type": "bool"
1023
+ }
1024
+ ],
1025
+ "stateMutability": "view",
1026
+ "type": "function"
1027
+ },
1028
+ {
1029
+ "inputs": [],
1030
+ "name": "owner",
1031
+ "outputs": [
1032
+ {
1033
+ "internalType": "address",
1034
+ "name": "",
1035
+ "type": "address"
1036
+ }
1037
+ ],
1038
+ "stateMutability": "view",
1039
+ "type": "function"
1040
+ },
1041
+ {
1042
+ "inputs": [],
1043
+ "name": "projectToken",
1044
+ "outputs": [
1045
+ {
1046
+ "internalType": "address",
1047
+ "name": "",
1048
+ "type": "address"
1049
+ }
1050
+ ],
1051
+ "stateMutability": "view",
1052
+ "type": "function"
1053
+ },
1054
+ {
1055
+ "inputs": [],
1056
+ "name": "refund",
1057
+ "outputs": [],
1058
+ "stateMutability": "nonpayable",
1059
+ "type": "function"
1060
+ },
1061
+ {
1062
+ "inputs": [
1063
+ {
1064
+ "internalType": "address",
1065
+ "name": "_token",
1066
+ "type": "address"
1067
+ }
1068
+ ],
1069
+ "name": "removeWhitelistedToken",
1070
+ "outputs": [],
1071
+ "stateMutability": "nonpayable",
1072
+ "type": "function"
1073
+ },
1074
+ {
1075
+ "inputs": [],
1076
+ "name": "renounceOwnership",
1077
+ "outputs": [],
1078
+ "stateMutability": "nonpayable",
1079
+ "type": "function"
1080
+ },
1081
+ {
1082
+ "inputs": [
1083
+ {
1084
+ "internalType": "bytes32",
1085
+ "name": "role",
1086
+ "type": "bytes32"
1087
+ },
1088
+ {
1089
+ "internalType": "address",
1090
+ "name": "callerConfirmation",
1091
+ "type": "address"
1092
+ }
1093
+ ],
1094
+ "name": "renounceRole",
1095
+ "outputs": [],
1096
+ "stateMutability": "nonpayable",
1097
+ "type": "function"
1098
+ },
1099
+ {
1100
+ "inputs": [
1101
+ {
1102
+ "internalType": "bytes32",
1103
+ "name": "role",
1104
+ "type": "bytes32"
1105
+ },
1106
+ {
1107
+ "internalType": "address",
1108
+ "name": "account",
1109
+ "type": "address"
1110
+ }
1111
+ ],
1112
+ "name": "revokeRole",
1113
+ "outputs": [],
1114
+ "stateMutability": "nonpayable",
1115
+ "type": "function"
1116
+ },
1117
+ {
1118
+ "inputs": [
1119
+ {
1120
+ "internalType": "uint256",
1121
+ "name": "",
1122
+ "type": "uint256"
1123
+ }
1124
+ ],
1125
+ "name": "roundParticipants",
1126
+ "outputs": [
1127
+ {
1128
+ "internalType": "uint256",
1129
+ "name": "",
1130
+ "type": "uint256"
1131
+ }
1132
+ ],
1133
+ "stateMutability": "view",
1134
+ "type": "function"
1135
+ },
1136
+ {
1137
+ "inputs": [
1138
+ {
1139
+ "internalType": "uint256",
1140
+ "name": "",
1141
+ "type": "uint256"
1142
+ }
1143
+ ],
1144
+ "name": "roundRaisedFunds",
1145
+ "outputs": [
1146
+ {
1147
+ "internalType": "uint256",
1148
+ "name": "",
1149
+ "type": "uint256"
1150
+ }
1151
+ ],
1152
+ "stateMutability": "view",
1153
+ "type": "function"
1154
+ },
1155
+ {
1156
+ "inputs": [
1157
+ {
1158
+ "internalType": "uint256",
1159
+ "name": "",
1160
+ "type": "uint256"
1161
+ }
1162
+ ],
1163
+ "name": "rounds",
1164
+ "outputs": [
1165
+ {
1166
+ "internalType": "uint256",
1167
+ "name": "startTime",
1168
+ "type": "uint256"
1169
+ },
1170
+ {
1171
+ "internalType": "uint256",
1172
+ "name": "endTime",
1173
+ "type": "uint256"
1174
+ },
1175
+ {
1176
+ "internalType": "uint256",
1177
+ "name": "targetFund",
1178
+ "type": "uint256"
1179
+ },
1180
+ {
1181
+ "internalType": "uint256",
1182
+ "name": "totalAllocation",
1183
+ "type": "uint256"
1184
+ },
1185
+ {
1186
+ "internalType": "uint256",
1187
+ "name": "maxFundPerAccount",
1188
+ "type": "uint256"
1189
+ },
1190
+ {
1191
+ "internalType": "bool",
1192
+ "name": "exists",
1193
+ "type": "bool"
1194
+ },
1195
+ {
1196
+ "internalType": "bool",
1197
+ "name": "ended",
1198
+ "type": "bool"
1199
+ },
1200
+ {
1201
+ "internalType": "bool",
1202
+ "name": "claimingEnabled",
1203
+ "type": "bool"
1204
+ },
1205
+ {
1206
+ "internalType": "bool",
1207
+ "name": "refundEnabled",
1208
+ "type": "bool"
1209
+ },
1210
+ {
1211
+ "internalType": "bool",
1212
+ "name": "allowMultiRoundParticipation",
1213
+ "type": "bool"
1214
+ }
1215
+ ],
1216
+ "stateMutability": "view",
1217
+ "type": "function"
1218
+ },
1219
+ {
1220
+ "inputs": [
1221
+ {
1222
+ "internalType": "uint256",
1223
+ "name": "_roundId",
1224
+ "type": "uint256"
1225
+ },
1226
+ {
1227
+ "internalType": "bool",
1228
+ "name": "_enabled",
1229
+ "type": "bool"
1230
+ }
1231
+ ],
1232
+ "name": "setClaimingEnabled",
1233
+ "outputs": [],
1234
+ "stateMutability": "nonpayable",
1235
+ "type": "function"
1236
+ },
1237
+ {
1238
+ "inputs": [
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "_roundId",
1242
+ "type": "uint256"
1243
+ },
1244
+ {
1245
+ "internalType": "bool",
1246
+ "name": "_enabled",
1247
+ "type": "bool"
1248
+ }
1249
+ ],
1250
+ "name": "setMultiRoundParticipation",
1251
+ "outputs": [],
1252
+ "stateMutability": "nonpayable",
1253
+ "type": "function"
1254
+ },
1255
+ {
1256
+ "inputs": [
1257
+ {
1258
+ "internalType": "address",
1259
+ "name": "_projectToken",
1260
+ "type": "address"
1261
+ }
1262
+ ],
1263
+ "name": "setProjectToken",
1264
+ "outputs": [],
1265
+ "stateMutability": "nonpayable",
1266
+ "type": "function"
1267
+ },
1268
+ {
1269
+ "inputs": [
1270
+ {
1271
+ "internalType": "uint256",
1272
+ "name": "_roundId",
1273
+ "type": "uint256"
1274
+ },
1275
+ {
1276
+ "internalType": "bool",
1277
+ "name": "_enabled",
1278
+ "type": "bool"
1279
+ }
1280
+ ],
1281
+ "name": "setRefundEnabled",
1282
+ "outputs": [],
1283
+ "stateMutability": "nonpayable",
1284
+ "type": "function"
1285
+ },
1286
+ {
1287
+ "inputs": [
1288
+ {
1289
+ "internalType": "bytes4",
1290
+ "name": "interfaceId",
1291
+ "type": "bytes4"
1292
+ }
1293
+ ],
1294
+ "name": "supportsInterface",
1295
+ "outputs": [
1296
+ {
1297
+ "internalType": "bool",
1298
+ "name": "",
1299
+ "type": "bool"
1300
+ }
1301
+ ],
1302
+ "stateMutability": "view",
1303
+ "type": "function"
1304
+ },
1305
+ {
1306
+ "inputs": [],
1307
+ "name": "totalRaisedFunds",
1308
+ "outputs": [
1309
+ {
1310
+ "internalType": "uint256",
1311
+ "name": "",
1312
+ "type": "uint256"
1313
+ }
1314
+ ],
1315
+ "stateMutability": "view",
1316
+ "type": "function"
1317
+ },
1318
+ {
1319
+ "inputs": [],
1320
+ "name": "totalRounds",
1321
+ "outputs": [
1322
+ {
1323
+ "internalType": "uint256",
1324
+ "name": "",
1325
+ "type": "uint256"
1326
+ }
1327
+ ],
1328
+ "stateMutability": "view",
1329
+ "type": "function"
1330
+ },
1331
+ {
1332
+ "inputs": [
1333
+ {
1334
+ "internalType": "address",
1335
+ "name": "newOwner",
1336
+ "type": "address"
1337
+ }
1338
+ ],
1339
+ "name": "transferOwnership",
1340
+ "outputs": [],
1341
+ "stateMutability": "nonpayable",
1342
+ "type": "function"
1343
+ },
1344
+ {
1345
+ "inputs": [
1346
+ {
1347
+ "internalType": "uint256",
1348
+ "name": "_roundId",
1349
+ "type": "uint256"
1350
+ },
1351
+ {
1352
+ "internalType": "uint256",
1353
+ "name": "_startTime",
1354
+ "type": "uint256"
1355
+ },
1356
+ {
1357
+ "internalType": "uint256",
1358
+ "name": "_endTime",
1359
+ "type": "uint256"
1360
+ },
1361
+ {
1362
+ "internalType": "uint256",
1363
+ "name": "_targetFund",
1364
+ "type": "uint256"
1365
+ },
1366
+ {
1367
+ "internalType": "uint256",
1368
+ "name": "_totalAllocation",
1369
+ "type": "uint256"
1370
+ },
1371
+ {
1372
+ "internalType": "uint256",
1373
+ "name": "_maxFundPerAccount",
1374
+ "type": "uint256"
1375
+ }
1376
+ ],
1377
+ "name": "updateRound",
1378
+ "outputs": [],
1379
+ "stateMutability": "nonpayable",
1380
+ "type": "function"
1381
+ },
1382
+ {
1383
+ "inputs": [
1384
+ {
1385
+ "internalType": "address",
1386
+ "name": "_token",
1387
+ "type": "address"
1388
+ },
1389
+ {
1390
+ "internalType": "uint256",
1391
+ "name": "_newPrice",
1392
+ "type": "uint256"
1393
+ }
1394
+ ],
1395
+ "name": "updateTokenPrice",
1396
+ "outputs": [],
1397
+ "stateMutability": "nonpayable",
1398
+ "type": "function"
1399
+ },
1400
+ {
1401
+ "inputs": [
1402
+ {
1403
+ "internalType": "uint256",
1404
+ "name": "",
1405
+ "type": "uint256"
1406
+ },
1407
+ {
1408
+ "internalType": "address",
1409
+ "name": "",
1410
+ "type": "address"
1411
+ }
1412
+ ],
1413
+ "name": "userContributions",
1414
+ "outputs": [
1415
+ {
1416
+ "internalType": "uint256",
1417
+ "name": "fundAmount",
1418
+ "type": "uint256"
1419
+ },
1420
+ {
1421
+ "internalType": "uint256",
1422
+ "name": "tokenAllocation",
1423
+ "type": "uint256"
1424
+ },
1425
+ {
1426
+ "internalType": "bool",
1427
+ "name": "claimed",
1428
+ "type": "bool"
1429
+ },
1430
+ {
1431
+ "internalType": "bool",
1432
+ "name": "refunded",
1433
+ "type": "bool"
1434
+ },
1435
+ {
1436
+ "internalType": "address",
1437
+ "name": "contributedToken",
1438
+ "type": "address"
1439
+ },
1440
+ {
1441
+ "internalType": "uint256",
1442
+ "name": "contributedAmount",
1443
+ "type": "uint256"
1444
+ }
1445
+ ],
1446
+ "stateMutability": "view",
1447
+ "type": "function"
1448
+ },
1449
+ {
1450
+ "inputs": [
1451
+ {
1452
+ "internalType": "address",
1453
+ "name": "",
1454
+ "type": "address"
1455
+ }
1456
+ ],
1457
+ "name": "userParticipatedRound",
1458
+ "outputs": [
1459
+ {
1460
+ "internalType": "uint256",
1461
+ "name": "",
1462
+ "type": "uint256"
1463
+ }
1464
+ ],
1465
+ "stateMutability": "view",
1466
+ "type": "function"
1467
+ },
1468
+ {
1469
+ "inputs": [
1470
+ {
1471
+ "internalType": "address",
1472
+ "name": "",
1473
+ "type": "address"
1474
+ }
1475
+ ],
1476
+ "name": "whitelistedTokens",
1477
+ "outputs": [
1478
+ {
1479
+ "internalType": "bool",
1480
+ "name": "isWhitelisted",
1481
+ "type": "bool"
1482
+ },
1483
+ {
1484
+ "internalType": "uint256",
1485
+ "name": "price",
1486
+ "type": "uint256"
1487
+ }
1488
+ ],
1489
+ "stateMutability": "view",
1490
+ "type": "function"
1491
+ },
1492
+ {
1493
+ "inputs": [
1494
+ {
1495
+ "internalType": "address",
1496
+ "name": "_token",
1497
+ "type": "address"
1498
+ },
1499
+ {
1500
+ "internalType": "uint256",
1501
+ "name": "_amount",
1502
+ "type": "uint256"
1503
+ }
1504
+ ],
1505
+ "name": "withdrawFunds",
1506
+ "outputs": [],
1507
+ "stateMutability": "nonpayable",
1508
+ "type": "function"
1509
+ },
1510
+ {
1511
+ "stateMutability": "payable",
1512
+ "type": "receive"
1513
+ }
1514
+ ],
1515
+ "bytecode": "0x608060405234801561001057600080fd5b5061001f61002460201b60201c565b61018e565b600061003461012860201b60201c565b90508060000160089054906101000a900460ff161561007f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101255767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405161011c9190610173565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b61016d81610150565b82525050565b60006020820190506101886000830184610164565b92915050565b6149568061019d6000396000f3fe60806040526004361061026b5760003560e01c806395082d2511610144578063d4bcdfa1116100b6578063eb4c9e9b1161007a578063eb4c9e9b14610929578063ed54890d14610966578063efe9c9e2146109a8578063f0e1bb3e146109d1578063f2fde38b14610a0e578063f5b541a614610a375761026c565b8063d4bcdfa114610832578063d4ee651b1461085b578063d547741f14610884578063d871b0e3146108ad578063daf9c210146108eb5761026c565b8063a217fddf11610108578063a217fddf14610738578063a6be83dd14610763578063a734f06e1461078c578063c1075329146107b7578063c4428a89146107e0578063c4d66de8146108095761026c565b806395082d251461063f57806397ac4a251461066a5780639bb92c4e146106a75780639da64ac2146106d0578063a09686c41461070d5761026c565b80635a1e6ca1116101dd5780638952ac1e116101a15780638952ac1e146105215780638a5682991461053d5780638c65c81f146105685780638d52e555146105ae5780638da5cb5b146105d757806391d14854146106025761026c565b80635a1e6ca1146104525780635af6df4c1461047b5780636fed6940146104a4578063715018a6146104e15780637cf30c60146104f85761026c565b80632f2ff15d1161022f5780632f2ff15d1461037c57806336568abe146103a557806342683c67146103ce57806348c54b9d146103f95780634b60ce7714610410578063590e1ae31461043b5761026c565b806301ffc9a71461026e5780631c88705d146102ab578063248a9ca3146102d457806327ac0c581461031157806328f3e6581461033a5761026c565b5b005b34801561027a57600080fd5b5061029560048036038101906102909190613f46565b610a62565b6040516102a29190613f8e565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd9190614007565b610a74565b005b3480156102e057600080fd5b506102fb60048036038101906102f6919061406a565b610bc4565b60405161030891906140a6565b60405180910390f35b34801561031d57600080fd5b5061033860048036038101906103339190614007565b610bf2565b005b34801561034657600080fd5b50610361600480360381019061035c91906140f7565b610c2e565b60405161037396959493929190614155565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906141b6565b610cfa565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906141b6565b610d1c565b005b3480156103da57600080fd5b506103e3610d97565b6040516103f091906141f6565b60405180910390f35b34801561040557600080fd5b5061040e610d9d565b005b34801561041c57600080fd5b50610425610e3a565b6040516104329190614211565b60405180910390f35b34801561044757600080fd5b50610450610e60565b005b34801561045e57600080fd5b506104796004803603810190610474919061422c565b611366565b005b34801561048757600080fd5b506104a2600480360381019061049d9190614259565b6114b4565b005b3480156104b057600080fd5b506104cb60048036038101906104c6919061422c565b61178e565b6040516104d891906141f6565b60405180910390f35b3480156104ed57600080fd5b506104f66117a6565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614300565b6117ba565b005b61053b60048036038101906105369190614340565b6118a9565b005b34801561054957600080fd5b506105526120de565b60405161055f91906141f6565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a919061422c565b6120e4565b6040516105a59a99989796959493929190614393565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190614300565b612179565b005b3480156105e357600080fd5b506105ec612268565b6040516105f99190614211565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906141b6565b6122a0565b6040516106369190613f8e565b60405180910390f35b34801561064b57600080fd5b50610654612319565b60405161066191906141f6565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c919061422c565b612325565b60405161069e9190613f8e565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190614300565b61241b565b005b3480156106dc57600080fd5b506106f760048036038101906106f29190614007565b61250a565b60405161070491906141f6565b60405180910390f35b34801561071957600080fd5b50610722612577565b60405161072f91906141f6565b60405180910390f35b34801561074457600080fd5b5061074d612581565b60405161075a91906140a6565b60405180910390f35b34801561076f57600080fd5b5061078a6004803603810190610785919061442f565b612588565b005b34801561079857600080fd5b506107a161288f565b6040516107ae9190614211565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d991906144bc565b612894565b005b3480156107ec57600080fd5b506108076004803603810190610802919061422c565b612b65565b005b34801561081557600080fd5b50610830600480360381019061082b9190614007565b612b72565b005b34801561083e57600080fd5b50610859600480360381019061085491906144bc565b612de9565b005b34801561086757600080fd5b50610882600480360381019061087d91906144bc565b612fc3565b005b34801561089057600080fd5b506108ab60048036038101906108a691906141b6565b61318e565b005b3480156108b957600080fd5b506108d460048036038101906108cf9190614007565b6131b0565b6040516108e29291906144fc565b60405180910390f35b3480156108f757600080fd5b50610912600480360381019061090d9190614007565b61324c565b604051610920929190614525565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190614007565b61327d565b60405161095d91906141f6565b60405180910390f35b34801561097257600080fd5b5061098d600480360381019061098891906140f7565b613295565b60405161099f96959493929190614155565b60405180910390f35b3480156109b457600080fd5b506109cf60048036038101906109ca9190614007565b613318565b005b3480156109dd57600080fd5b506109f860048036038101906109f3919061422c565b61344c565b604051610a0591906141f6565b60405180910390f35b348015610a1a57600080fd5b50610a356004803603810190610a309190614007565b613464565b005b348015610a4357600080fd5b50610a4c6134ea565b604051610a5991906140a6565b60405180910390f35b6000610a6d8261350e565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610a9e81613588565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b23576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610bcf61359c565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610bff81613588565b610c297f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836135c4565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d0382610bc4565b610d0c81613588565b610d1683836135c4565b50505050565b610d246136c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d9282826136cd565b505050565b60085481565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610e1b576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610e2a919061457d565b9050610e3681336137cf565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610ede576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610eed919061457d565b90506001600082815260200190815260200160002060050160009054906101000a900460ff16610f49576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160039054906101000a900460ff16610fa3576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403611035576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff161561107e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff16156110c7576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260030154905060018360020160016101000a81548160ff021916908315150217905550826000015460036000868152602001908152602001600020600082825461113d919061457d565b9250508190555082600001546008600082825461115a919061457d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123e5760003373ffffffffffffffffffffffffffffffffffffffff16826040516111bb906145e2565b60006040518083038185875af1925050503d80600081146111f8576040519150601f19603f3d011682016040523d82523d6000602084013e6111fd565b606091505b5050905080611238576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506112f9565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161127b9291906145f7565b6020604051808303816000875af115801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190614635565b9050806112f7576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16857f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a38460405161135791906141f6565b60405180910390a45050505050565b61136e613b7c565b6001600082815260200190815260200160002060050160009054906101000a900460ff166113c8576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160019054906101000a900460ff1615611423576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600083815260200190815260200160002060050160016101000a81548160ff021916908315150217905550807fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008481526020019081526020016000205460046000858152602001908152602001600020546040516114a99291906144fc565b60405180910390a250565b6114bc613b7c565b428510156114f6576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84841161152f576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303611569576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036115a3576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008114806115b157508281115b156115e8576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808781526020018681526020018581526020018481526020018381526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061174190614662565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133878787878760405161177e9594939291906146aa565b60405180910390a2505050505050565b60046020528060005260406000206000915090505481565b6117ae613b7c565b6117b86000613c03565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296117e481613588565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661183e576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e9118360405161189c9190613f8e565b60405180910390a2505050565b6118b283612325565b6118e8576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661196d576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e457600034036119dc576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611a22565b60008203611a1e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611a835750600185611a7f91906146fd565b8114155b15611ae3576001600086815260200190815260200160002060050160049054906101000a900460ff16611ae2576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611b409190614731565b611b4a91906147a2565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611bb291906146fd565b9050600160008a815260200190815260200160002060040154811115611c04576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611c2591906146fd565b9050600160008b815260200190815260200160002060020154811115611c77576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611d685760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611cea939291906147d3565b6020604051808303816000875af1158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2d9190614635565b905080611d66576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611da39190614731565b611dad91906147a2565b90506000846000015403611e8557600460008c81526020019081526020016000206000815480929190611ddf90614662565b919050555060018b611df191906146fd565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878460030181905550611f2f565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611efc5787846003016000828254611ef091906146fd565b92505081905550611f2e565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b84846000016000828254611f4391906146fd565b9250508190555080846001016000828254611f5e91906146fd565b9250508190555084600360008d81526020019081526020016000206000828254611f8891906146fd565b925050819055508460086000828254611fa191906146fd565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106120675760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f81526020019081526020016000205460405161205e9291906144fc565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516120c99392919061480a565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296121a381613588565b6001600084815260200190815260200160002060050160009054906101000a900460ff166121fd576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c8360405161225b9190613f8e565b60405180910390a2505050565b600080612273613cda565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806122ab61359c565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff166123585760009050612416565b6001600083815260200190815260200160002060050160019054906101000a900460ff161561238a5760009050612416565b60016000838152602001908152602001600020600001544210156123b15760009050612416565b60016000838152602001908152602001600020600101544211156123d85760009050612416565b60016000838152602001908152602001600020600201546003600084815260200190815260200160002054106124115760009050612416565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961244581613588565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661249f576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0836040516124fd9190613f8e565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103612561576000915050612572565b60018161256e919061457d565b9150505b919050565b6000600754905090565b6000801b81565b612590613b7c565b6001600087815260200190815260200160002060050160009054906101000a900460ff166125ea576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600087815260200190815260200160002060050160019054906101000a900460ff1615612645576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000878152602001908152602001600020600001544210612694576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428510156126ce576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848411612707576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612741576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000820361277b576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081148061278957508281115b156127c0576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600088815260200190815260200160002060000181905550836001600088815260200190815260200160002060010181905550826001600088815260200190815260200160002060020181905550816001600088815260200190815260200160002060030181905550806001600088815260200190815260200160002060040181905550857fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596868686868660405161287f9594939291906146aa565b60405180910390a2505050505050565b600081565b61289c613b7c565b600081036128d6576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129ed5747811115612944576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161296a906145e2565b60006040518083038185875af1925050503d80600081146129a7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ac565b606091505b50509050806129e7576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612b61565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a289190614211565b602060405180830381865afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a699190614856565b905080821115612aa5576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401612ae29291906145f7565b6020604051808303816000875af1158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b259190614635565b905080612b5e576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b5050565b612b6f81336137cf565b50565b6000612b7c613d02565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612bca5750825b9050600060018367ffffffffffffffff16148015612bff575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612c0d575080155b15612c44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612c945760018560000160086101000a81548160ff0219169083151502179055505b612c9d33613d2a565b612ca5613d3e565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612d0b576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d596000801b336135c4565b50612d847f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336135c4565b508315612de15760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612dd891906148dc565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612e1381613588565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e7c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612eb3576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203612eed576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a883604051612fb691906141f6565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612fed81613588565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613072576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036130ac576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516131809291906144fc565b60405180910390a250505050565b61319782610bc4565b6131a081613588565b6131aa83836136cd565b50505050565b60008060005b6007548110156132465760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001548461322491906146fd565b935080600101548361323691906146fd565b92505080806001019150506131b6565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b613320613b7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613386576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a35050565b60036020528060005260406000206000915090505481565b61346c613b7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134de5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016134d59190614211565b60405180910390fd5b6134e781613c03565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613581575061358082613d48565b5b9050919050565b613599816135946136c5565b613db2565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806135cf61359c565b90506135db84846122a0565b6136b957600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506136556136c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506136bf565b60009150505b92915050565b600033905090565b6000806136d861359c565b90506136e484846122a0565b156137c357600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061375f6136c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506137c9565b60009150505b92915050565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613829576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff16158015613870575060016000838152602001908152602001600020600101544211155b156138a7576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613901576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613993576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff16156139dc576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613a25576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010154905060018260020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b8152600401613aaa9291906145f7565b6020604051808303816000875af1158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed9190614635565b905080613b26576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16857f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c84604051613b6d91906141f6565b60405180910390a35050505050565b613b846136c5565b73ffffffffffffffffffffffffffffffffffffffff16613ba2612268565b73ffffffffffffffffffffffffffffffffffffffff1614613c0157613bc56136c5565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613bf89190614211565b60405180910390fd5b565b6000613c0d613cda565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b613d32613e03565b613d3b81613e43565b50565b613d46613e03565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613dbc82826122a0565b613dff5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613df69291906148f7565b60405180910390fd5b5050565b613e0b613ec9565b613e41576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b613e4b613e03565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613ebd5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401613eb49190614211565b60405180910390fd5b613ec681613c03565b50565b6000613ed3613d02565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613f2381613eee565b8114613f2e57600080fd5b50565b600081359050613f4081613f1a565b92915050565b600060208284031215613f5c57613f5b613ee9565b5b6000613f6a84828501613f31565b91505092915050565b60008115159050919050565b613f8881613f73565b82525050565b6000602082019050613fa36000830184613f7f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fd482613fa9565b9050919050565b613fe481613fc9565b8114613fef57600080fd5b50565b60008135905061400181613fdb565b92915050565b60006020828403121561401d5761401c613ee9565b5b600061402b84828501613ff2565b91505092915050565b6000819050919050565b61404781614034565b811461405257600080fd5b50565b6000813590506140648161403e565b92915050565b6000602082840312156140805761407f613ee9565b5b600061408e84828501614055565b91505092915050565b6140a081614034565b82525050565b60006020820190506140bb6000830184614097565b92915050565b6000819050919050565b6140d4816140c1565b81146140df57600080fd5b50565b6000813590506140f1816140cb565b92915050565b6000806040838503121561410e5761410d613ee9565b5b600061411c858286016140e2565b925050602061412d85828601613ff2565b9150509250929050565b614140816140c1565b82525050565b61414f81613fc9565b82525050565b600060c08201905061416a6000830189614137565b6141776020830188614137565b6141846040830187613f7f565b6141916060830186613f7f565b61419e6080830185614146565b6141ab60a0830184614137565b979650505050505050565b600080604083850312156141cd576141cc613ee9565b5b60006141db85828601614055565b92505060206141ec85828601613ff2565b9150509250929050565b600060208201905061420b6000830184614137565b92915050565b60006020820190506142266000830184614146565b92915050565b60006020828403121561424257614241613ee9565b5b6000614250848285016140e2565b91505092915050565b600080600080600060a0868803121561427557614274613ee9565b5b6000614283888289016140e2565b9550506020614294888289016140e2565b94505060406142a5888289016140e2565b93505060606142b6888289016140e2565b92505060806142c7888289016140e2565b9150509295509295909350565b6142dd81613f73565b81146142e857600080fd5b50565b6000813590506142fa816142d4565b92915050565b6000806040838503121561431757614316613ee9565b5b6000614325858286016140e2565b9250506020614336858286016142eb565b9150509250929050565b60008060006060848603121561435957614358613ee9565b5b6000614367868287016140e2565b935050602061437886828701613ff2565b9250506040614389868287016140e2565b9150509250925092565b6000610140820190506143a9600083018d614137565b6143b6602083018c614137565b6143c3604083018b614137565b6143d0606083018a614137565b6143dd6080830189614137565b6143ea60a0830188613f7f565b6143f760c0830187613f7f565b61440460e0830186613f7f565b614412610100830185613f7f565b614420610120830184613f7f565b9b9a5050505050505050505050565b60008060008060008060c0878903121561444c5761444b613ee9565b5b600061445a89828a016140e2565b965050602061446b89828a016140e2565b955050604061447c89828a016140e2565b945050606061448d89828a016140e2565b935050608061449e89828a016140e2565b92505060a06144af89828a016140e2565b9150509295509295509295565b600080604083850312156144d3576144d2613ee9565b5b60006144e185828601613ff2565b92505060206144f2858286016140e2565b9150509250929050565b60006040820190506145116000830185614137565b61451e6020830184614137565b9392505050565b600060408201905061453a6000830185613f7f565b6145476020830184614137565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614588826140c1565b9150614593836140c1565b92508282039050818111156145ab576145aa61454e565b5b92915050565b600081905092915050565b50565b60006145cc6000836145b1565b91506145d7826145bc565b600082019050919050565b60006145ed826145bf565b9150819050919050565b600060408201905061460c6000830185614146565b6146196020830184614137565b9392505050565b60008151905061462f816142d4565b92915050565b60006020828403121561464b5761464a613ee9565b5b600061465984828501614620565b91505092915050565b600061466d826140c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361469f5761469e61454e565b5b600182019050919050565b600060a0820190506146bf6000830188614137565b6146cc6020830187614137565b6146d96040830186614137565b6146e66060830185614137565b6146f36080830184614137565b9695505050505050565b6000614708826140c1565b9150614713836140c1565b925082820190508082111561472b5761472a61454e565b5b92915050565b600061473c826140c1565b9150614747836140c1565b9250828202614755816140c1565b9150828204841483151761476c5761476b61454e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ad826140c1565b91506147b8836140c1565b9250826147c8576147c7614773565b5b828204905092915050565b60006060820190506147e86000830186614146565b6147f56020830185614146565b6148026040830184614137565b949350505050565b600060608201905061481f6000830186614137565b61482c6020830185614137565b6148396040830184614137565b949350505050565b600081519050614850816140cb565b92915050565b60006020828403121561486c5761486b613ee9565b5b600061487a84828501614841565b91505092915050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006148c66148c16148bc84614883565b6148a1565b61488d565b9050919050565b6148d6816148ab565b82525050565b60006020820190506148f160008301846148cd565b92915050565b600060408201905061490c6000830185614146565b6149196020830184614097565b939250505056fea264697066735822122067cd1a53a4406a4ff96e0d045d7336688804c5331559439b9cb78198671d878264736f6c634300081c0033",
1516
+ "deployedBytecode": "0x60806040526004361061026b5760003560e01c806395082d2511610144578063d4bcdfa1116100b6578063eb4c9e9b1161007a578063eb4c9e9b14610929578063ed54890d14610966578063efe9c9e2146109a8578063f0e1bb3e146109d1578063f2fde38b14610a0e578063f5b541a614610a375761026c565b8063d4bcdfa114610832578063d4ee651b1461085b578063d547741f14610884578063d871b0e3146108ad578063daf9c210146108eb5761026c565b8063a217fddf11610108578063a217fddf14610738578063a6be83dd14610763578063a734f06e1461078c578063c1075329146107b7578063c4428a89146107e0578063c4d66de8146108095761026c565b806395082d251461063f57806397ac4a251461066a5780639bb92c4e146106a75780639da64ac2146106d0578063a09686c41461070d5761026c565b80635a1e6ca1116101dd5780638952ac1e116101a15780638952ac1e146105215780638a5682991461053d5780638c65c81f146105685780638d52e555146105ae5780638da5cb5b146105d757806391d14854146106025761026c565b80635a1e6ca1146104525780635af6df4c1461047b5780636fed6940146104a4578063715018a6146104e15780637cf30c60146104f85761026c565b80632f2ff15d1161022f5780632f2ff15d1461037c57806336568abe146103a557806342683c67146103ce57806348c54b9d146103f95780634b60ce7714610410578063590e1ae31461043b5761026c565b806301ffc9a71461026e5780631c88705d146102ab578063248a9ca3146102d457806327ac0c581461031157806328f3e6581461033a5761026c565b5b005b34801561027a57600080fd5b5061029560048036038101906102909190613f46565b610a62565b6040516102a29190613f8e565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd9190614007565b610a74565b005b3480156102e057600080fd5b506102fb60048036038101906102f6919061406a565b610bc4565b60405161030891906140a6565b60405180910390f35b34801561031d57600080fd5b5061033860048036038101906103339190614007565b610bf2565b005b34801561034657600080fd5b50610361600480360381019061035c91906140f7565b610c2e565b60405161037396959493929190614155565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e91906141b6565b610cfa565b005b3480156103b157600080fd5b506103cc60048036038101906103c791906141b6565b610d1c565b005b3480156103da57600080fd5b506103e3610d97565b6040516103f091906141f6565b60405180910390f35b34801561040557600080fd5b5061040e610d9d565b005b34801561041c57600080fd5b50610425610e3a565b6040516104329190614211565b60405180910390f35b34801561044757600080fd5b50610450610e60565b005b34801561045e57600080fd5b506104796004803603810190610474919061422c565b611366565b005b34801561048757600080fd5b506104a2600480360381019061049d9190614259565b6114b4565b005b3480156104b057600080fd5b506104cb60048036038101906104c6919061422c565b61178e565b6040516104d891906141f6565b60405180910390f35b3480156104ed57600080fd5b506104f66117a6565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614300565b6117ba565b005b61053b60048036038101906105369190614340565b6118a9565b005b34801561054957600080fd5b506105526120de565b60405161055f91906141f6565b60405180910390f35b34801561057457600080fd5b5061058f600480360381019061058a919061422c565b6120e4565b6040516105a59a99989796959493929190614393565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190614300565b612179565b005b3480156105e357600080fd5b506105ec612268565b6040516105f99190614211565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906141b6565b6122a0565b6040516106369190613f8e565b60405180910390f35b34801561064b57600080fd5b50610654612319565b60405161066191906141f6565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c919061422c565b612325565b60405161069e9190613f8e565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190614300565b61241b565b005b3480156106dc57600080fd5b506106f760048036038101906106f29190614007565b61250a565b60405161070491906141f6565b60405180910390f35b34801561071957600080fd5b50610722612577565b60405161072f91906141f6565b60405180910390f35b34801561074457600080fd5b5061074d612581565b60405161075a91906140a6565b60405180910390f35b34801561076f57600080fd5b5061078a6004803603810190610785919061442f565b612588565b005b34801561079857600080fd5b506107a161288f565b6040516107ae9190614211565b60405180910390f35b3480156107c357600080fd5b506107de60048036038101906107d991906144bc565b612894565b005b3480156107ec57600080fd5b506108076004803603810190610802919061422c565b612b65565b005b34801561081557600080fd5b50610830600480360381019061082b9190614007565b612b72565b005b34801561083e57600080fd5b50610859600480360381019061085491906144bc565b612de9565b005b34801561086757600080fd5b50610882600480360381019061087d91906144bc565b612fc3565b005b34801561089057600080fd5b506108ab60048036038101906108a691906141b6565b61318e565b005b3480156108b957600080fd5b506108d460048036038101906108cf9190614007565b6131b0565b6040516108e29291906144fc565b60405180910390f35b3480156108f757600080fd5b50610912600480360381019061090d9190614007565b61324c565b604051610920929190614525565b60405180910390f35b34801561093557600080fd5b50610950600480360381019061094b9190614007565b61327d565b60405161095d91906141f6565b60405180910390f35b34801561097257600080fd5b5061098d600480360381019061098891906140f7565b613295565b60405161099f96959493929190614155565b60405180910390f35b3480156109b457600080fd5b506109cf60048036038101906109ca9190614007565b613318565b005b3480156109dd57600080fd5b506109f860048036038101906109f3919061422c565b61344c565b604051610a0591906141f6565b60405180910390f35b348015610a1a57600080fd5b50610a356004803603810190610a309190614007565b613464565b005b348015610a4357600080fd5b50610a4c6134ea565b604051610a5991906140a6565b60405180910390f35b6000610a6d8261350e565b9050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610a9e81613588565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16610b23576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdd2e6d9f52cbe8f695939d018b7d4a216dc613a669876163ac548b916489d91760405160405180910390a25050565b600080610bcf61359c565b905080600001600084815260200190815260200160002060010154915050919050565b6000801b610bff81613588565b610c297f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836135c4565b505050565b6000806000806000806000600260008a815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000015481600101548260020160009054906101000a900460ff168360020160019054906101000a900460ff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560030154965096509650965096509650509295509295509295565b610d0382610bc4565b610d0c81613588565b610d1683836135c4565b50505050565b610d246136c5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d9282826136cd565b505050565b60085481565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610e1b576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610e2a919061457d565b9050610e3681336137cf565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610ede576040517f55842fea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182610eed919061457d565b90506001600082815260200190815260200160002060050160009054906101000a900460ff16610f49576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160039054906101000a900460ff16610fa3576040517f089c998700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403611035576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff161561107e576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff16156110c7576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260030154905060018360020160016101000a81548160ff021916908315150217905550826000015460036000868152602001908152602001600020600082825461113d919061457d565b9250508190555082600001546008600082825461115a919061457d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123e5760003373ffffffffffffffffffffffffffffffffffffffff16826040516111bb906145e2565b60006040518083038185875af1925050503d80600081146111f8576040519150601f19603f3d011682016040523d82523d6000602084013e6111fd565b606091505b5050905080611238576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506112f9565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161127b9291906145f7565b6020604051808303816000875af115801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190614635565b9050806112f7576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16857f1c26abe6289671e3a9d493647349673af828abb9dbadff1e81762387f7cd99a38460405161135791906141f6565b60405180910390a45050505050565b61136e613b7c565b6001600082815260200190815260200160002060050160009054906101000a900460ff166113c8576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600082815260200190815260200160002060050160019054906101000a900460ff1615611423576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180600083815260200190815260200160002060050160016101000a81548160ff021916908315150217905550807fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008481526020019081526020016000205460046000858152602001908152602001600020546040516114a99291906144fc565b60405180910390a250565b6114bc613b7c565b428510156114f6576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84841161152f576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303611569576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036115a3576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008114806115b157508281115b156115e8576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060075490506040518061014001604052808781526020018681526020018581526020018481526020018381526020016001151581526020016000151581526020016000151581526020016000151581526020016001151581525060016000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160050160046101000a81548160ff0219169083151502179055509050506007600081548092919061174190614662565b9190505550807f21fb045299ceafb7a136c74ee07b22d481ee9bf37a85b2d8f20c59f83ada4133878787878760405161177e9594939291906146aa565b60405180910390a2505050505050565b60046020528060005260406000206000915090505481565b6117ae613b7c565b6117b86000613c03565b565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296117e481613588565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661183e576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160036101000a81548160ff021916908315150217905550827f653b56ea3ea7dfba44234dbc807bac97a2a0adafb6d22427d818250375f1e9118360405161189c9190613f8e565b60405180910390a2505050565b6118b283612325565b6118e8576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1661196d576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e457600034036119dc576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b349050611a22565b60008203611a1e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8190505b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114158015611a835750600185611a7f91906146fd565b8114155b15611ae3576001600086815260200190815260200160002060050160049054906101000a900460ff16611ae2576040517f827a86b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000670de0b6b3a76400008285611b409190614731565b611b4a91906147a2565b905060006002600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000828260000154611bb291906146fd565b9050600160008a815260200190815260200160002060040154811115611c04576040517f1cd861cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600360008c815260200190815260200160002054611c2591906146fd565b9050600160008b815260200190815260200160002060020154811115611c77576040517f397bb34300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611d685760008973ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401611cea939291906147d3565b6020604051808303816000875af1158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2d9190614635565b905080611d66576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000600160008c815260200190815260200160002060020154600160008d81526020019081526020016000206003015486611da39190614731565b611dad91906147a2565b90506000846000015403611e8557600460008c81526020019081526020016000206000815480929190611ddf90614662565b919050555060018b611df191906146fd565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550898460020160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878460030181905550611f2f565b8973ffffffffffffffffffffffffffffffffffffffff168460020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611efc5787846003016000828254611ef091906146fd565b92505081905550611f2e565b6040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b84846000016000828254611f4391906146fd565b9250508190555080846001016000828254611f5e91906146fd565b9250508190555084600360008d81526020019081526020016000206000828254611f8891906146fd565b925050819055508460086000828254611fa191906146fd565b92505081905550600160008c815260200190815260200160002060020154600360008d815260200190815260200160002054106120675760018060008d815260200190815260200160002060050160016101000a81548160ff0219169083151502179055508a7fc5285db7d8a9c3a0ce0e8982ff9a84fe8df355101d9545735558c69efb4aad57600360008e815260200190815260200160002054600460008f81526020019081526020016000205460405161205e9291906144fc565b60405180910390a25b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168c7fb479ec976a9860505652c0d9f5dc15bc5fbca1a55c3da9cabe662f1b6f8090d28b89866040516120c99392919061480a565b60405180910390a45050505050505050505050565b60075481565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900460ff16908060050160019054906101000a900460ff16908060050160029054906101000a900460ff16908060050160039054906101000a900460ff16908060050160049054906101000a900460ff1690508a565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296121a381613588565b6001600084815260200190815260200160002060050160009054906101000a900460ff166121fd576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160046101000a81548160ff021916908315150217905550827f1c1c03453d1eefaa85a62e371adba496bc16fa6320bf5416b0af1249081ca84c8360405161225b9190613f8e565b60405180910390a2505050565b600080612273613cda565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000806122ab61359c565b905080600001600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b670de0b6b3a764000081565b60006001600083815260200190815260200160002060050160009054906101000a900460ff166123585760009050612416565b6001600083815260200190815260200160002060050160019054906101000a900460ff161561238a5760009050612416565b60016000838152602001908152602001600020600001544210156123b15760009050612416565b60016000838152602001908152602001600020600101544211156123d85760009050612416565b60016000838152602001908152602001600020600201546003600084815260200190815260200160002054106124115760009050612416565b600190505b919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92961244581613588565b6001600084815260200190815260200160002060050160009054906101000a900460ff1661249f576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600085815260200190815260200160002060050160026101000a81548160ff021916908315150217905550827f74c19978ee48fa394fffde7cccc94793539daf917f2a8fd2d5e851409de3f7a0836040516124fd9190613f8e565b60405180910390a2505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103612561576000915050612572565b60018161256e919061457d565b9150505b919050565b6000600754905090565b6000801b81565b612590613b7c565b6001600087815260200190815260200160002060050160009054906101000a900460ff166125ea576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600087815260200190815260200160002060050160019054906101000a900460ff1615612645576040517f0f5eeea600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000878152602001908152602001600020600001544210612694576040517f4eb5402b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428510156126ce576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848411612707576040517f38af65f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303612741576040517fe2494de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000820361277b576040517f0baf743200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081148061278957508281115b156127c0576040517f90e3cae900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600088815260200190815260200160002060000181905550836001600088815260200190815260200160002060010181905550826001600088815260200190815260200160002060020181905550816001600088815260200190815260200160002060030181905550806001600088815260200190815260200160002060040181905550857fe35865500052be0ea409d44d56e7f66a0e0728bab40a71f941ccd691b9159596868686868660405161287f9594939291906146aa565b60405180910390a2505050505050565b600081565b61289c613b7c565b600081036128d6576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129ed5747811115612944576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff168260405161296a906145e2565b60006040518083038185875af1925050503d80600081146129a7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ac565b606091505b50509050806129e7576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50612b61565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a289190614211565b602060405180830381865afa158015612a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a699190614856565b905080821115612aa5576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401612ae29291906145f7565b6020604051808303816000875af1158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b259190614635565b905080612b5e576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b5050565b612b6f81336137cf565b50565b6000612b7c613d02565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612bca5750825b9050600060018367ffffffffffffffff16148015612bff575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612c0d575080155b15612c44576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612c945760018560000160086101000a81548160ff0219169083151502179055505b612c9d33613d2a565b612ca5613d3e565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612d0b576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612d596000801b336135c4565b50612d847f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929336135c4565b508315612de15760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612dd891906148dc565b60405180910390a15b505050505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612e1381613588565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e7c5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15612eb3576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203612eed576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060400160405280600115158152602001838152506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050508273ffffffffffffffffffffffffffffffffffffffff167fe184914670d9e097e90729e2a9159866b30b1203952f0586bedca1d6fcf130a883604051612fb691906141f6565b60405180910390a2505050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929612fed81613588565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16613072576040517ff84835a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082036130ac576040517ff083859200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055508373ffffffffffffffffffffffffffffffffffffffff167f62e2c9c75b287778c0b58f1c1d83fa8f9978a33848e0b423735fd44f48ebe3c182856040516131809291906144fc565b60405180910390a250505050565b61319782610bc4565b6131a081613588565b6131aa83836136cd565b50505050565b60008060005b6007548110156132465760006002600083815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600001548461322491906146fd565b935080600101548361323691906146fd565b92505080806001019150506131b6565b50915091565b60006020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60056020528060005260406000206000915090505481565b6002602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020160009054906101000a900460ff16908060020160019054906101000a900460ff16908060020160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154905086565b613320613b7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613386576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f38b700f64059658d3f95b87d8db51f669197c89da3076d26d42bb8fb06159fa960405160405180910390a35050565b60036020528060005260406000206000915090505481565b61346c613b7c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134de5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016134d59190614211565b60405180910390fd5b6134e781613c03565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613581575061358082613d48565b5b9050919050565b613599816135946136c5565b613db2565b50565b60007f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b6000806135cf61359c565b90506135db84846122a0565b6136b957600181600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506136556136c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506136bf565b60009150505b92915050565b600033905090565b6000806136d861359c565b90506136e484846122a0565b156137c357600081600001600086815260200190815260200160002060000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061375f6136c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019150506137c9565b60009150505b92915050565b6001600083815260200190815260200160002060050160009054906101000a900460ff16613829576040517f266f368500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160019054906101000a900460ff16158015613870575060016000838152602001908152602001600020600101544211155b156138a7576040517f3df07da500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600083815260200190815260200160002060050160029054906101000a900460ff16613901576040517fe2c858ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403613993576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160009054906101000a900460ff16156139dc576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060020160019054906101000a900460ff1615613a25576040517fa85e6f1a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010154905060018260020160006101000a81548160ff0219169083151502179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b8152600401613aaa9291906145f7565b6020604051808303816000875af1158015613ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aed9190614635565b905080613b26576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16857f880f2ef2613b092f1a0a819f294155c98667eb294b7e6bf7a3810278142c1a1c84604051613b6d91906141f6565b60405180910390a35050505050565b613b846136c5565b73ffffffffffffffffffffffffffffffffffffffff16613ba2612268565b73ffffffffffffffffffffffffffffffffffffffff1614613c0157613bc56136c5565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613bf89190614211565b60405180910390fd5b565b6000613c0d613cda565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b613d32613e03565b613d3b81613e43565b50565b613d46613e03565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613dbc82826122a0565b613dff5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401613df69291906148f7565b60405180910390fd5b5050565b613e0b613ec9565b613e41576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b613e4b613e03565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613ebd5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401613eb49190614211565b60405180910390fd5b613ec681613c03565b50565b6000613ed3613d02565b60000160089054906101000a900460ff16905090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613f2381613eee565b8114613f2e57600080fd5b50565b600081359050613f4081613f1a565b92915050565b600060208284031215613f5c57613f5b613ee9565b5b6000613f6a84828501613f31565b91505092915050565b60008115159050919050565b613f8881613f73565b82525050565b6000602082019050613fa36000830184613f7f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fd482613fa9565b9050919050565b613fe481613fc9565b8114613fef57600080fd5b50565b60008135905061400181613fdb565b92915050565b60006020828403121561401d5761401c613ee9565b5b600061402b84828501613ff2565b91505092915050565b6000819050919050565b61404781614034565b811461405257600080fd5b50565b6000813590506140648161403e565b92915050565b6000602082840312156140805761407f613ee9565b5b600061408e84828501614055565b91505092915050565b6140a081614034565b82525050565b60006020820190506140bb6000830184614097565b92915050565b6000819050919050565b6140d4816140c1565b81146140df57600080fd5b50565b6000813590506140f1816140cb565b92915050565b6000806040838503121561410e5761410d613ee9565b5b600061411c858286016140e2565b925050602061412d85828601613ff2565b9150509250929050565b614140816140c1565b82525050565b61414f81613fc9565b82525050565b600060c08201905061416a6000830189614137565b6141776020830188614137565b6141846040830187613f7f565b6141916060830186613f7f565b61419e6080830185614146565b6141ab60a0830184614137565b979650505050505050565b600080604083850312156141cd576141cc613ee9565b5b60006141db85828601614055565b92505060206141ec85828601613ff2565b9150509250929050565b600060208201905061420b6000830184614137565b92915050565b60006020820190506142266000830184614146565b92915050565b60006020828403121561424257614241613ee9565b5b6000614250848285016140e2565b91505092915050565b600080600080600060a0868803121561427557614274613ee9565b5b6000614283888289016140e2565b9550506020614294888289016140e2565b94505060406142a5888289016140e2565b93505060606142b6888289016140e2565b92505060806142c7888289016140e2565b9150509295509295909350565b6142dd81613f73565b81146142e857600080fd5b50565b6000813590506142fa816142d4565b92915050565b6000806040838503121561431757614316613ee9565b5b6000614325858286016140e2565b9250506020614336858286016142eb565b9150509250929050565b60008060006060848603121561435957614358613ee9565b5b6000614367868287016140e2565b935050602061437886828701613ff2565b9250506040614389868287016140e2565b9150509250925092565b6000610140820190506143a9600083018d614137565b6143b6602083018c614137565b6143c3604083018b614137565b6143d0606083018a614137565b6143dd6080830189614137565b6143ea60a0830188613f7f565b6143f760c0830187613f7f565b61440460e0830186613f7f565b614412610100830185613f7f565b614420610120830184613f7f565b9b9a5050505050505050505050565b60008060008060008060c0878903121561444c5761444b613ee9565b5b600061445a89828a016140e2565b965050602061446b89828a016140e2565b955050604061447c89828a016140e2565b945050606061448d89828a016140e2565b935050608061449e89828a016140e2565b92505060a06144af89828a016140e2565b9150509295509295509295565b600080604083850312156144d3576144d2613ee9565b5b60006144e185828601613ff2565b92505060206144f2858286016140e2565b9150509250929050565b60006040820190506145116000830185614137565b61451e6020830184614137565b9392505050565b600060408201905061453a6000830185613f7f565b6145476020830184614137565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614588826140c1565b9150614593836140c1565b92508282039050818111156145ab576145aa61454e565b5b92915050565b600081905092915050565b50565b60006145cc6000836145b1565b91506145d7826145bc565b600082019050919050565b60006145ed826145bf565b9150819050919050565b600060408201905061460c6000830185614146565b6146196020830184614137565b9392505050565b60008151905061462f816142d4565b92915050565b60006020828403121561464b5761464a613ee9565b5b600061465984828501614620565b91505092915050565b600061466d826140c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361469f5761469e61454e565b5b600182019050919050565b600060a0820190506146bf6000830188614137565b6146cc6020830187614137565b6146d96040830186614137565b6146e66060830185614137565b6146f36080830184614137565b9695505050505050565b6000614708826140c1565b9150614713836140c1565b925082820190508082111561472b5761472a61454e565b5b92915050565b600061473c826140c1565b9150614747836140c1565b9250828202614755816140c1565b9150828204841483151761476c5761476b61454e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ad826140c1565b91506147b8836140c1565b9250826147c8576147c7614773565b5b828204905092915050565b60006060820190506147e86000830186614146565b6147f56020830185614146565b6148026040830184614137565b949350505050565b600060608201905061481f6000830186614137565b61482c6020830185614137565b6148396040830184614137565b949350505050565b600081519050614850816140cb565b92915050565b60006020828403121561486c5761486b613ee9565b5b600061487a84828501614841565b91505092915050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006148c66148c16148bc84614883565b6148a1565b61488d565b9050919050565b6148d6816148ab565b82525050565b60006020820190506148f160008301846148cd565b92915050565b600060408201905061490c6000830185614146565b6149196020830184614097565b939250505056fea264697066735822122067cd1a53a4406a4ff96e0d045d7336688804c5331559439b9cb78198671d878264736f6c634300081c0033",
1517
+ "linkReferences": {},
1518
+ "deployedLinkReferences": {}
1519
+ }