@ensuro/core 1.2.5 → 2.0.0-beta1

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 (92) hide show
  1. package/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +141 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +112 -315
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +34 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +32 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +23 -191
  12. package/build/contracts/RiskModule.sol/RiskModule.json +94 -302
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +142 -325
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -273
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +14 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +31 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -723
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -546
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1036
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -173
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -9,6 +9,11 @@
9
9
  "internalType": "contract IPolicyPool",
10
10
  "name": "policyPool_",
11
11
  "type": "address"
12
+ },
13
+ {
14
+ "internalType": "contract IPremiumsAccount",
15
+ "name": "premiumsAccount_",
16
+ "type": "address"
12
17
  }
13
18
  ],
14
19
  "stateMutability": "nonpayable",
@@ -55,27 +60,14 @@
55
60
  "name": "action",
56
61
  "type": "uint8"
57
62
  },
58
- {
59
- "indexed": false,
60
- "internalType": "uint256",
61
- "name": "value",
62
- "type": "uint256"
63
- }
64
- ],
65
- "name": "GovernanceAction",
66
- "type": "event"
67
- },
68
- {
69
- "anonymous": false,
70
- "inputs": [
71
63
  {
72
64
  "indexed": false,
73
65
  "internalType": "address",
74
- "name": "account",
66
+ "name": "value",
75
67
  "type": "address"
76
68
  }
77
69
  ],
78
- "name": "Paused",
70
+ "name": "ComponentChanged",
79
71
  "type": "event"
80
72
  },
81
73
  {
@@ -83,74 +75,44 @@
83
75
  "inputs": [
84
76
  {
85
77
  "indexed": true,
86
- "internalType": "bytes32",
87
- "name": "role",
88
- "type": "bytes32"
89
- },
90
- {
91
- "indexed": true,
92
- "internalType": "bytes32",
93
- "name": "previousAdminRole",
94
- "type": "bytes32"
78
+ "internalType": "enum IPolicyPoolConfig.GovernanceActions",
79
+ "name": "action",
80
+ "type": "uint8"
95
81
  },
96
82
  {
97
- "indexed": true,
98
- "internalType": "bytes32",
99
- "name": "newAdminRole",
100
- "type": "bytes32"
83
+ "indexed": false,
84
+ "internalType": "uint256",
85
+ "name": "value",
86
+ "type": "uint256"
101
87
  }
102
88
  ],
103
- "name": "RoleAdminChanged",
89
+ "name": "GovernanceAction",
104
90
  "type": "event"
105
91
  },
106
92
  {
107
93
  "anonymous": false,
108
94
  "inputs": [
109
95
  {
110
- "indexed": true,
111
- "internalType": "bytes32",
112
- "name": "role",
113
- "type": "bytes32"
114
- },
115
- {
116
- "indexed": true,
117
- "internalType": "address",
118
- "name": "account",
119
- "type": "address"
120
- },
121
- {
122
- "indexed": true,
123
- "internalType": "address",
124
- "name": "sender",
125
- "type": "address"
96
+ "indexed": false,
97
+ "internalType": "uint8",
98
+ "name": "version",
99
+ "type": "uint8"
126
100
  }
127
101
  ],
128
- "name": "RoleGranted",
102
+ "name": "Initialized",
129
103
  "type": "event"
130
104
  },
131
105
  {
132
106
  "anonymous": false,
133
107
  "inputs": [
134
108
  {
135
- "indexed": true,
136
- "internalType": "bytes32",
137
- "name": "role",
138
- "type": "bytes32"
139
- },
140
- {
141
- "indexed": true,
109
+ "indexed": false,
142
110
  "internalType": "address",
143
111
  "name": "account",
144
112
  "type": "address"
145
- },
146
- {
147
- "indexed": true,
148
- "internalType": "address",
149
- "name": "sender",
150
- "type": "address"
151
113
  }
152
114
  ],
153
- "name": "RoleRevoked",
115
+ "name": "Paused",
154
116
  "type": "event"
155
117
  },
156
118
  {
@@ -179,19 +141,6 @@
179
141
  "name": "Upgraded",
180
142
  "type": "event"
181
143
  },
182
- {
183
- "inputs": [],
184
- "name": "DEFAULT_ADMIN_ROLE",
185
- "outputs": [
186
- {
187
- "internalType": "bytes32",
188
- "name": "",
189
- "type": "bytes32"
190
- }
191
- ],
192
- "stateMutability": "view",
193
- "type": "function"
194
- },
195
144
  {
196
145
  "inputs": [],
197
146
  "name": "GUARDIAN_ROLE",
@@ -296,6 +245,19 @@
296
245
  "stateMutability": "view",
297
246
  "type": "function"
298
247
  },
248
+ {
249
+ "inputs": [],
250
+ "name": "activeExposure",
251
+ "outputs": [
252
+ {
253
+ "internalType": "uint256",
254
+ "name": "",
255
+ "type": "uint256"
256
+ }
257
+ ],
258
+ "stateMutability": "view",
259
+ "type": "function"
260
+ },
299
261
  {
300
262
  "inputs": [],
301
263
  "name": "currency",
@@ -311,7 +273,7 @@
311
273
  },
312
274
  {
313
275
  "inputs": [],
314
- "name": "ensuroFee",
276
+ "name": "exposureLimit",
315
277
  "outputs": [
316
278
  {
317
279
  "internalType": "uint256",
@@ -351,67 +313,6 @@
351
313
  "stateMutability": "view",
352
314
  "type": "function"
353
315
  },
354
- {
355
- "inputs": [
356
- {
357
- "internalType": "bytes32",
358
- "name": "role",
359
- "type": "bytes32"
360
- }
361
- ],
362
- "name": "getRoleAdmin",
363
- "outputs": [
364
- {
365
- "internalType": "bytes32",
366
- "name": "",
367
- "type": "bytes32"
368
- }
369
- ],
370
- "stateMutability": "view",
371
- "type": "function"
372
- },
373
- {
374
- "inputs": [
375
- {
376
- "internalType": "bytes32",
377
- "name": "role",
378
- "type": "bytes32"
379
- },
380
- {
381
- "internalType": "address",
382
- "name": "account",
383
- "type": "address"
384
- }
385
- ],
386
- "name": "grantRole",
387
- "outputs": [],
388
- "stateMutability": "nonpayable",
389
- "type": "function"
390
- },
391
- {
392
- "inputs": [
393
- {
394
- "internalType": "bytes32",
395
- "name": "role",
396
- "type": "bytes32"
397
- },
398
- {
399
- "internalType": "address",
400
- "name": "account",
401
- "type": "address"
402
- }
403
- ],
404
- "name": "hasRole",
405
- "outputs": [
406
- {
407
- "internalType": "bool",
408
- "name": "",
409
- "type": "bool"
410
- }
411
- ],
412
- "stateMutability": "view",
413
- "type": "function"
414
- },
415
316
  {
416
317
  "inputs": [
417
318
  {
@@ -421,27 +322,27 @@
421
322
  },
422
323
  {
423
324
  "internalType": "uint256",
424
- "name": "scrPercentage_",
325
+ "name": "collRatio_",
425
326
  "type": "uint256"
426
327
  },
427
328
  {
428
329
  "internalType": "uint256",
429
- "name": "ensuroFee_",
330
+ "name": "ensuroPpFee_",
430
331
  "type": "uint256"
431
332
  },
432
333
  {
433
334
  "internalType": "uint256",
434
- "name": "scrInterestRate_",
335
+ "name": "srRoc_",
435
336
  "type": "uint256"
436
337
  },
437
338
  {
438
339
  "internalType": "uint256",
439
- "name": "maxScrPerPolicy_",
340
+ "name": "maxPayoutPerPolicy_",
440
341
  "type": "uint256"
441
342
  },
442
343
  {
443
344
  "internalType": "uint256",
444
- "name": "scrLimit_",
345
+ "name": "exposureLimit_",
445
346
  "type": "uint256"
446
347
  },
447
348
  {
@@ -475,7 +376,7 @@
475
376
  },
476
377
  {
477
378
  "inputs": [],
478
- "name": "maxScrPerPolicy",
379
+ "name": "maxDuration",
479
380
  "outputs": [
480
381
  {
481
382
  "internalType": "uint256",
@@ -488,7 +389,7 @@
488
389
  },
489
390
  {
490
391
  "inputs": [],
491
- "name": "moc",
392
+ "name": "maxPayoutPerPolicy",
492
393
  "outputs": [
493
394
  {
494
395
  "internalType": "uint256",
@@ -556,6 +457,56 @@
556
457
  "stateMutability": "nonpayable",
557
458
  "type": "function"
558
459
  },
460
+ {
461
+ "inputs": [],
462
+ "name": "params",
463
+ "outputs": [
464
+ {
465
+ "components": [
466
+ {
467
+ "internalType": "uint256",
468
+ "name": "moc",
469
+ "type": "uint256"
470
+ },
471
+ {
472
+ "internalType": "uint256",
473
+ "name": "jrCollRatio",
474
+ "type": "uint256"
475
+ },
476
+ {
477
+ "internalType": "uint256",
478
+ "name": "collRatio",
479
+ "type": "uint256"
480
+ },
481
+ {
482
+ "internalType": "uint256",
483
+ "name": "ensuroPpFee",
484
+ "type": "uint256"
485
+ },
486
+ {
487
+ "internalType": "uint256",
488
+ "name": "ensuroCocFee",
489
+ "type": "uint256"
490
+ },
491
+ {
492
+ "internalType": "uint256",
493
+ "name": "jrRoc",
494
+ "type": "uint256"
495
+ },
496
+ {
497
+ "internalType": "uint256",
498
+ "name": "srRoc",
499
+ "type": "uint256"
500
+ }
501
+ ],
502
+ "internalType": "struct IRiskModule.Params",
503
+ "name": "ret",
504
+ "type": "tuple"
505
+ }
506
+ ],
507
+ "stateMutability": "view",
508
+ "type": "function"
509
+ },
559
510
  {
560
511
  "inputs": [],
561
512
  "name": "pause",
@@ -591,44 +542,39 @@
591
542
  },
592
543
  {
593
544
  "inputs": [],
594
- "name": "proxiableUUID",
545
+ "name": "premiumsAccount",
595
546
  "outputs": [
596
547
  {
597
- "internalType": "bytes32",
548
+ "internalType": "contract IPremiumsAccount",
598
549
  "name": "",
599
- "type": "bytes32"
550
+ "type": "address"
600
551
  }
601
552
  ],
602
553
  "stateMutability": "view",
603
554
  "type": "function"
604
555
  },
605
556
  {
606
- "inputs": [
557
+ "inputs": [],
558
+ "name": "proxiableUUID",
559
+ "outputs": [
607
560
  {
608
- "internalType": "uint256",
609
- "name": "scrAmount",
610
- "type": "uint256"
561
+ "internalType": "bytes32",
562
+ "name": "",
563
+ "type": "bytes32"
611
564
  }
612
565
  ],
613
- "name": "releaseScr",
614
- "outputs": [],
615
- "stateMutability": "nonpayable",
566
+ "stateMutability": "view",
616
567
  "type": "function"
617
568
  },
618
569
  {
619
570
  "inputs": [
620
571
  {
621
- "internalType": "bytes32",
622
- "name": "role",
623
- "type": "bytes32"
624
- },
625
- {
626
- "internalType": "address",
627
- "name": "account",
628
- "type": "address"
572
+ "internalType": "uint256",
573
+ "name": "payout",
574
+ "type": "uint256"
629
575
  }
630
576
  ],
631
- "name": "renounceRole",
577
+ "name": "releaseExposure",
632
578
  "outputs": [],
633
579
  "stateMutability": "nonpayable",
634
580
  "type": "function"
@@ -654,7 +600,12 @@
654
600
  },
655
601
  {
656
602
  "internalType": "uint256",
657
- "name": "scr",
603
+ "name": "jrScr",
604
+ "type": "uint256"
605
+ },
606
+ {
607
+ "internalType": "uint256",
608
+ "name": "srScr",
658
609
  "type": "uint256"
659
610
  },
660
611
  {
@@ -669,17 +620,22 @@
669
620
  },
670
621
  {
671
622
  "internalType": "uint256",
672
- "name": "premiumForEnsuro",
623
+ "name": "ensuroCommission",
624
+ "type": "uint256"
625
+ },
626
+ {
627
+ "internalType": "uint256",
628
+ "name": "partnerCommission",
673
629
  "type": "uint256"
674
630
  },
675
631
  {
676
632
  "internalType": "uint256",
677
- "name": "premiumForRm",
633
+ "name": "jrCoc",
678
634
  "type": "uint256"
679
635
  },
680
636
  {
681
637
  "internalType": "uint256",
682
- "name": "premiumForLps",
638
+ "name": "srCoc",
683
639
  "type": "uint256"
684
640
  },
685
641
  {
@@ -734,7 +690,12 @@
734
690
  },
735
691
  {
736
692
  "internalType": "uint256",
737
- "name": "scr",
693
+ "name": "jrScr",
694
+ "type": "uint256"
695
+ },
696
+ {
697
+ "internalType": "uint256",
698
+ "name": "srScr",
738
699
  "type": "uint256"
739
700
  },
740
701
  {
@@ -749,17 +710,22 @@
749
710
  },
750
711
  {
751
712
  "internalType": "uint256",
752
- "name": "premiumForEnsuro",
713
+ "name": "ensuroCommission",
714
+ "type": "uint256"
715
+ },
716
+ {
717
+ "internalType": "uint256",
718
+ "name": "partnerCommission",
753
719
  "type": "uint256"
754
720
  },
755
721
  {
756
722
  "internalType": "uint256",
757
- "name": "premiumForRm",
723
+ "name": "jrCoc",
758
724
  "type": "uint256"
759
725
  },
760
726
  {
761
727
  "internalType": "uint256",
762
- "name": "premiumForLps",
728
+ "name": "srCoc",
763
729
  "type": "uint256"
764
730
  },
765
731
  {
@@ -796,134 +762,17 @@
796
762
  {
797
763
  "inputs": [
798
764
  {
799
- "internalType": "bytes32",
800
- "name": "role",
801
- "type": "bytes32"
765
+ "internalType": "enum IRiskModule.Parameter",
766
+ "name": "param",
767
+ "type": "uint8"
802
768
  },
803
- {
804
- "internalType": "address",
805
- "name": "account",
806
- "type": "address"
807
- }
808
- ],
809
- "name": "revokeRole",
810
- "outputs": [],
811
- "stateMutability": "nonpayable",
812
- "type": "function"
813
- },
814
- {
815
- "inputs": [],
816
- "name": "scrInterestRate",
817
- "outputs": [
818
- {
819
- "internalType": "uint256",
820
- "name": "",
821
- "type": "uint256"
822
- }
823
- ],
824
- "stateMutability": "view",
825
- "type": "function"
826
- },
827
- {
828
- "inputs": [],
829
- "name": "scrLimit",
830
- "outputs": [
831
- {
832
- "internalType": "uint256",
833
- "name": "",
834
- "type": "uint256"
835
- }
836
- ],
837
- "stateMutability": "view",
838
- "type": "function"
839
- },
840
- {
841
- "inputs": [],
842
- "name": "scrPercentage",
843
- "outputs": [
844
- {
845
- "internalType": "uint256",
846
- "name": "",
847
- "type": "uint256"
848
- }
849
- ],
850
- "stateMutability": "view",
851
- "type": "function"
852
- },
853
- {
854
- "inputs": [
855
- {
856
- "internalType": "uint256",
857
- "name": "newEnsuroFee",
858
- "type": "uint256"
859
- }
860
- ],
861
- "name": "setEnsuroFee",
862
- "outputs": [],
863
- "stateMutability": "nonpayable",
864
- "type": "function"
865
- },
866
- {
867
- "inputs": [
868
- {
869
- "internalType": "uint256",
870
- "name": "newMaxScrPerPolicy",
871
- "type": "uint256"
872
- }
873
- ],
874
- "name": "setMaxScrPerPolicy",
875
- "outputs": [],
876
- "stateMutability": "nonpayable",
877
- "type": "function"
878
- },
879
- {
880
- "inputs": [
881
- {
882
- "internalType": "uint256",
883
- "name": "newMoc",
884
- "type": "uint256"
885
- }
886
- ],
887
- "name": "setMoc",
888
- "outputs": [],
889
- "stateMutability": "nonpayable",
890
- "type": "function"
891
- },
892
- {
893
- "inputs": [
894
- {
895
- "internalType": "uint256",
896
- "name": "newScrInterestRate",
897
- "type": "uint256"
898
- }
899
- ],
900
- "name": "setScrInterestRate",
901
- "outputs": [],
902
- "stateMutability": "nonpayable",
903
- "type": "function"
904
- },
905
- {
906
- "inputs": [
907
769
  {
908
770
  "internalType": "uint256",
909
- "name": "newScrLimit",
771
+ "name": "newValue",
910
772
  "type": "uint256"
911
773
  }
912
774
  ],
913
- "name": "setScrLimit",
914
- "outputs": [],
915
- "stateMutability": "nonpayable",
916
- "type": "function"
917
- },
918
- {
919
- "inputs": [
920
- {
921
- "internalType": "uint256",
922
- "name": "newScrPercentage",
923
- "type": "uint256"
924
- }
925
- ],
926
- "name": "setScrPercentage",
775
+ "name": "setParam",
927
776
  "outputs": [],
928
777
  "stateMutability": "nonpayable",
929
778
  "type": "function"
@@ -941,38 +790,6 @@
941
790
  "stateMutability": "nonpayable",
942
791
  "type": "function"
943
792
  },
944
- {
945
- "inputs": [
946
- {
947
- "internalType": "bytes4",
948
- "name": "interfaceId",
949
- "type": "bytes4"
950
- }
951
- ],
952
- "name": "supportsInterface",
953
- "outputs": [
954
- {
955
- "internalType": "bool",
956
- "name": "",
957
- "type": "bool"
958
- }
959
- ],
960
- "stateMutability": "view",
961
- "type": "function"
962
- },
963
- {
964
- "inputs": [],
965
- "name": "totalScr",
966
- "outputs": [
967
- {
968
- "internalType": "uint256",
969
- "name": "",
970
- "type": "uint256"
971
- }
972
- ],
973
- "stateMutability": "view",
974
- "type": "function"
975
- },
976
793
  {
977
794
  "inputs": [],
978
795
  "name": "unpause",
@@ -1025,8 +842,8 @@
1025
842
  "type": "function"
1026
843
  }
1027
844
  ],
1028
- "bytecode": "0x60c06040523060601b6080523480156200001857600080fd5b5060405162004adf38038062004adf8339810160408190526200003b9162000051565b60601b6001600160601b03191660a05262000083565b6000602082840312156200006457600080fd5b81516001600160a01b03811681146200007c57600080fd5b9392505050565b60805160601c60a05160601c61499662000149600039600081816104b20152818161091e01528181610a3f01528181610c0601528181610f53015281816112aa015281816114be015281816115bd01528181611614015281816117f5015281816119f801528181611aac01528181611c8d01528181611e7201528181612075015281816123ec01528181612813015281816128c10152612ab5015260008181610e5e01528181610e9e0152818161109c015281816110dc015261116b01526149966000f3fe60806040526004361061027d5760003560e01c80636f0dbe6f1161014f578063b9ea870a116100c1578063deaa59df1161007a578063deaa59df146107ae578063e5a6b10f146107ce578063e61735c0146107e3578063f33323a414610803578063f67b2bad14610823578063fbb812791461084557600080fd5b8063b9ea870a1461070c578063bf8e934d1461072c578063ca996de314610742578063d44499a814610758578063d547741f1461076e578063dab5d88d1461078e57600080fd5b806391d148541161011357806391d148541461064d5780639cbbcd921461066d5780639d90724d1461068d5780639e556b2b146106a3578063a217fddf146106c3578063a9a24f27146106d857600080fd5b80636f0dbe6f1461059757806378fab260146105b75780637ed5acfa146105eb5780638456cb59146106185780638bac3a241461062d57600080fd5b8063406f7f6f116101f3578063521eb273116101ac578063521eb273146104fd57806352d1902d1461051c57806353428253146105315780635b494dd5146105475780635c975abb146105695780635d505fe71461058157600080fd5b8063406f7f6f1461041057806341ea6a0f14610430578063468a8c9f146104465780634a47a3e0146104815780634d15eb03146104a35780634f1ef286146104ea57600080fd5b8063248a9ca311610245578063248a9ca31461033b57806324ea54f4146103795780632f2ff15d1461039b57806336568abe146103bb5780633659cfe6146103db5780633f4ba83a146103fb57600080fd5b806301ffc9a714610282578063066dda0e146102b757806306fdde03146102d9578063089a8504146102fb57806322875d631461031b575b600080fd5b34801561028e57600080fd5b506102a261029d366004614116565b610879565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b506102d76102d23660046141f3565b6108b0565b005b3480156102e557600080fd5b506102ee61098c565b6040516102ae9190614453565b34801561030757600080fd5b506102d76103163660046140b4565b610a1f565b34801561032757600080fd5b506102d76103363660046140b4565b610be6565b34801561034757600080fd5b5061036b6103563660046140b4565b600090815260c9602052604090206001015490565b6040519081526020016102ae565b34801561038557600080fd5b5061036b60008051602061494183398151915281565b3480156103a757600080fd5b506102d76103b63660046140e6565b610daa565b3480156103c757600080fd5b506102d76103d63660046140e6565b610dd5565b3480156103e757600080fd5b506102d76103f6366004614016565b610e53565b34801561040757600080fd5b506102d7610f33565b34801561041c57600080fd5b5061036b61042b36600461424f565b611049565b34801561043c57600080fd5b506101345461036b565b34801561045257600080fd5b5061012d546040805164ffffffffff83168152600160281b90920466ffffffffffffff166020830152016102ae565b34801561048d57600080fd5b5061036b60008051602061492183398151915281565b3480156104af57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102ae565b6102d76104f8366004614033565b611091565b34801561050957600080fd5b50610136546001600160a01b03166104d2565b34801561052857600080fd5b5061036b61115e565b34801561053d57600080fd5b506101305461036b565b34801561055357600080fd5b5061036b6000805160206148da83398151915281565b34801561057557600080fd5b5060fb5460ff166102a2565b34801561058d57600080fd5b506101335461036b565b3480156105a357600080fd5b506102d76105b236600461415d565b611211565b3480156105c357600080fd5b5061036b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb181565b3480156105f757600080fd5b506106026201518081565b60405164ffffffffff90911681526020016102ae565b34801561062457600080fd5b506102d7611299565b34801561063957600080fd5b5061036b6106483660046142c5565b6113a1565b34801561065957600080fd5b506102a26106683660046140e6565b611490565b34801561067957600080fd5b506102d76106883660046140b4565b6114bb565b34801561069957600080fd5b506101325461036b565b3480156106af57600080fd5b506102d76106be366004614222565b611558565b3480156106cf57600080fd5b5061036b600081565b3480156106e457600080fd5b5061036b7f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad181565b34801561071857600080fd5b506102d76107273660046140b4565b6115f4565b34801561073857600080fd5b5061012f5461036b565b34801561074e57600080fd5b506101355461036b565b34801561076457600080fd5b506101315461036b565b34801561077a57600080fd5b506102d76107893660046140e6565b6117af565b34801561079a57600080fd5b506102d76107a93660046140b4565b6117d5565b3480156107ba57600080fd5b506102d76107c9366004614016565b61199c565b3480156107da57600080fd5b506104d26119f4565b3480156107ef57600080fd5b506102d76107fe3660046140b4565b611a8c565b34801561080f57600080fd5b506102d761081e3660046140b4565b611c51565b34801561082f57600080fd5b5061036b6000805160206148ba83398151915281565b34801561085157600080fd5b5061036b7fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a81565b60006001600160e01b03198216637965db0b60e01b14806108aa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb16108db813361200d565b60fb5460ff16156109075760405162461bcd60e51b81526004016108fe9061451e565b60405180910390fd5b604051630336ed0760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063066dda0e9061095590869086906004016145e1565b600060405180830381600087803b15801561096f57600080fd5b505af1158015610983573d6000803e3d6000fd5b50505050505050565b606061012e805461099c906147e9565b80601f01602080910402602001604051908101604052809291908181526020018280546109c8906147e9565b8015610a155780601f106109ea57610100808354040283529160200191610a15565b820191906000526020600020905b8154815290600101906020018083116109f857829003601f168201915b5050505050905090565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9657600080fd5b505afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401610afd93929190614434565b60006040518083038186803b158015610b1557600080fd5b505afa158015610b29573d6000803e3d6000fd5b505050506000610b46600080516020614921833981519152612071565b159050801580610b6a5750610b6a61013154856af8277896582678ac000000612184565b610bce5760405162461bcd60e51b815260206004820152602f60248201527f547765616b2065786365656465643a20656e7375726f46656520747765616b7360448201526e206f6e6c7920757020746f2033302560881b60648201526084016108fe565b610131849055610be0600a858361220f565b50505050565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5d57600080fd5b505afa158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401610cc493929190614434565b60006040518083038186803b158015610cdc57600080fd5b505afa158015610cf0573d6000803e3d6000fd5b505050506000610d0d600080516020614921833981519152612071565b159050801580610d2e5750610d2e6101335485670429d069189e0000612270565b610d985760405162461bcd60e51b815260206004820152603560248201527f547765616b2065786365656465643a206d6178536372506572506f6c69637920604482015274747765616b73206f6e6c7920757020746f2033302560581b60648201526084016108fe565b610133849055610be0600b858361220f565b600082815260c96020526040902060010154610dc6813361200d565b610dd083836122df565b505050565b6001600160a01b0381163314610e455760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108fe565b610e4f8282612365565b5050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610e9c5760405162461bcd60e51b81526004016108fe90614486565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ee560008051602061489a833981519152546001600160a01b031690565b6001600160a01b031614610f0b5760405162461bcd60e51b81526004016108fe906144d2565b610f14816123cc565b60408051600080825260208201909252610f30918391906124d6565b50565b6000805160206149418339815191526000805160206148ba8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610faa57600080fd5b505afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b815260040161101193929190614434565b60006040518083038186803b15801561102957600080fd5b505afa15801561103d573d6000803e3d6000fd5b50505050610e4f612650565b60007fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a611076813361200d565b6110848888888888886126e3565b5198975050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156110da5760405162461bcd60e51b81526004016108fe90614486565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661112360008051602061489a833981519152546001600160a01b031690565b6001600160a01b0316146111495760405162461bcd60e51b81526004016108fe906144d2565b611152826123cc565b610e4f828260016124d6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111fe5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108fe565b5060008051602061489a83398151915290565b600054610100900460ff1661122c5760005460ff1615611230565b303b155b61124c5760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff1615801561126e576000805461ffff19166101011790555b61127d88888888888888612b4e565b801561128f576000805461ff00191690555b5050505050505050565b6000805160206149418339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113399190614140565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b15801561138157600080fd5b505afa158015611395573d6000803e3d6000fd5b50505050610f30612bca565b6000806113d26113cd6113be6113b76101305490565b8790612c22565b6113c788612cf9565b90612c22565b612d77565b90506000816113ee6113e76113cd61012f5490565b8890612dff565b6113f89190614746565b905060006114386113cd6e0612d847b578e7643c28ac000000006114234264ffffffffff8a16614746565b610132545b6114329190614727565b90612eb2565b905060006114468383612dff565b9050600061146a61145a6113cd6101315490565b61146484886146ed565b90612dff565b90508161147782876146ed565b61148191906146ed565b955050505050505b9392505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461153d5760405162461bcd60e51b815260206004820152602160248201527f5468652063616c6c6572206d7573742062652074686520506f6c696379506f6f6044820152601b60fa1b60648201526084016108fe565b8061013560008282546115509190614746565b909155505050565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb1611583813361200d565b60fb5460ff16156115a65760405162461bcd60e51b81526004016108fe9061451e565b604051639e556b2b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639e556b2b906109559086908690600401614600565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561166b57600080fd5b505afa15801561167f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a39190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b81526004016116d293929190614434565b60006040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b50505050600061171b600080516020614921833981519152612071565b15905080158061173f575061173f61013054856a52b7d2dcc80cd2e4000000612184565b61179d5760405162461bcd60e51b815260206004820152602960248201527f547765616b2065786365656465643a206d6f6320747765616b73206f6e6c7920604482015268757020746f2031302560b81b60648201526084016108fe565b610130849055610be06008858361220f565b600082815260c960205260409020600101546117cb813361200d565b610dd08383612365565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561184c57600080fd5b505afa158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b81526004016118b393929190614434565b60006040518083038186803b1580156118cb57600080fd5b505afa1580156118df573d6000803e3d6000fd5b5050505060006118fc600080516020614921833981519152612071565b159050801580611920575061192061013254856af8277896582678ac000000612184565b61198a5760405162461bcd60e51b815260206004820152603560248201527f547765616b2065786365656465643a20736372496e7465726573745261746520604482015274747765616b73206f6e6c7920757020746f2033302560581b60648201526084016108fe565b610132849055610be06009858361220f565b7f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad16119c7813361200d565b61013680546001600160a01b0319166001600160a01b038416908117909155610e4f90600f90600061220f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4f57600080fd5b505afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190614140565b905090565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0357600080fd5b505afa158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401611b6a93929190614434565b60006040518083038186803b158015611b8257600080fd5b505afa158015611b96573d6000803e3d6000fd5b505050506000611bb3600080516020614921833981519152612071565b159050801580611bd75750611bd761012f54856a52b7d2dcc80cd2e4000000612184565b611c3f5760405162461bcd60e51b815260206004820152603360248201527f547765616b2065786365656465643a2073637250657263656e7461676520747760448201527265616b73206f6e6c7920757020746f2031302560681b60648201526084016108fe565b61012f849055610be06007858361220f565b6000805160206148ba8339815191526000805160206149218339815191526000805160206148da833981519152611c8783612071565b611d7c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611ce457600080fd5b505afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1c9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401611d4b93929190614434565b60006040518083038186803b158015611d6357600080fd5b505afa158015611d77573d6000803e3d6000fd5b505050505b6000611d95600080516020614921833981519152612071565b158015611db65750611db46000805160206148ba833981519152612071565b155b9050801580611dd65750611dd6610134548667016345785d8a0000612270565b611e395760405162461bcd60e51b815260206004820152602e60248201527f547765616b2065786365656465643a207363724c696d697420747765616b732060448201526d6f6e6c7920757020746f2031302560901b60648201526084016108fe565b6101345485111580611e5d5750611e5d6000805160206148ba833981519152612071565b80611f03575084611f0167016345785d8a00007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec957600080fd5b505afa158015611edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146491906140cd565b115b611f8a5760405162461bcd60e51b815260206004820152604c60248201527f547765616b2065786365656465643a20496e6372656173652c203e3d3130252060448201527f6f662074686520746f74616c206c69717569646974792c20726571756972657360648201526b204c4556454c315f524f4c4560a01b608482015260a4016108fe565b61013554851015611ff45760405162461bcd60e51b815260206004820152602e60248201527f43616e27742073657420534352206c657373207468616e2063757272656e742060448201526d29a1a91030b63637b1b0ba34b7b760911b60648201526084016108fe565b610134859055612006600c868361220f565b5050505050565b6120178282611490565b610e4f5761202f816001600160a01b03166014612fb8565b61203a836020612fb8565b60405160200161204b9291906143bf565b60408051601f198184030181529082905262461bcd60e51b82526108fe91600401614453565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120cc57600080fd5b505afa1580156120e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121049190614140565b604051632474521560e21b8152600481018490523360248201526001600160a01b0391909116906391d148549060440160206040518083038186803b15801561214c57600080fd5b505afa158015612160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190614097565b60008284141561219657506001611489565b836121b05750676765c793fa10079d601b1b811015611489565b826121bd57506000611489565b828410156121ef5781676765c793fa10079d601b1b6121dc8587612eb2565b6121e69190614746565b11159050611489565b816121fa8486612eb2565b6121e690676765c793fa10079d601b1b614746565b612217613154565b80156122265761222683613422565b82601c81111561223857612238614834565b6040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a2505050565b60008284141561228257506001611489565b836122995750670de0b6b3a7640000811015611489565b826122a657506000611489565b828410156122c25781670de0b6b3a76400006121dc858761358f565b816122cd848661358f565b6121e690670de0b6b3a7640000614746565b6122e98282611490565b610e4f57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123213390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61236f8282611490565b15610e4f57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206149418339815191526000805160206148ba8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561244357600080fd5b505afa158015612457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247b9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b81526004016124aa93929190614434565b60006040518083038186803b1580156124c257600080fd5b505afa158015610983573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561250957610dd08361367b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561254257600080fd5b505afa925050508015612572575060408051601f3d908101601f1916820190925261256f918101906140cd565b60015b6125d55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108fe565b60008051602061489a83398151915281146126445760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108fe565b50610dd0838383613717565b60fb5460ff166126995760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108fe565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6126eb613e51565b60fb5460ff161561270e5760405162461bcd60e51b81526004016108fe9061451e565b86861061275d5760405162461bcd60e51b815260206004820181905260248201527f5072656d69756d206d757374206265206c657373207468616e207061796f757460448201526064016108fe565b4264ffffffffff168464ffffffffff16116127ba5760405162461bcd60e51b815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e207468652066757475726560448201526064016108fe565b6001600160a01b0383166128105760405162461bcd60e51b815260206004820152601e60248201527f437573746f6d65722063616e2774206265207a65726f2061646472657373000060448201526064016108fe565b857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561286a57600080fd5b505afa15801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a29190614140565b604051636eb1769f60e11b81526001600160a01b0386811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e9060440160206040518083038186803b15801561290d57600080fd5b505afa158015612921573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294591906140cd565b10156129a95760405162461bcd60e51b815260206004820152602d60248201527f596f75206d75737420616c6c6f7720454e5355524f20746f207472616e73666560448201526c7220746865207072656d69756d60981b60648201526084016108fe565b60006129b830888a898961373c565b90506101335481606001511115612a295760405162461bcd60e51b815260206004820152602f60248201527f5269736b4d6f64756c653a20534352206973206d6f7265207468616e206d617860448201526e696d756d2070657220706f6c69637960881b60648201526084016108fe565b80606001516101356000828254612a4091906146ed565b909155505061013454610135541115612a9b5760405162461bcd60e51b815260206004820152601e60248201527f5269736b4d6f64756c653a20534352206c696d6974206578636565646564000060448201526064016108fe565b604051630cb8251d60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906319704a3a90612aee9085908990899060040161461d565b602060405180830381600087803b158015612b0857600080fd5b505af1158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4091906140cd565b825250979650505050505050565b600054610100900460ff16612b695760005460ff1615612b6d565b303b155b612b895760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff16158015612bab576000805461ffff19166101011790555b612bb3613afa565b612bbb613b21565b61127d88888888888888613ba2565b60fb5460ff1615612bed5760405162461bcd60e51b81526004016108fe9061451e565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126c63390565b6000821580612c2f575081155b15612c3c575060006108aa565b81612c536002676765c793fa10079d601b1b614705565b612c5f90600019614746565b612c699190614705565b831115612cc45760405162461bcd60e51b8152602060048201526024808201527f7261794d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b676765c793fa10079d601b1b612cdb600282614705565b612ce58486614727565b612cef91906146ed565b6114899190614705565b600080612d0a633b9aca0084614727565b905082612d1b633b9aca0083614705565b146108aa5760405162461bcd60e51b815260206004820152602660248201527f776164546f5261643a204d617468204d756c7469706c69636174696f6e204f766044820152656572666c6f7760d01b60648201526084016108fe565b600080612d896002633b9aca00614705565b90506000612d9784836146ed565b905081811015612de95760405162461bcd60e51b815260206004820181905260248201527f726179546f5761643a204d617468204164646974696f6e204f766572666c6f7760448201526064016108fe565b612df7633b9aca0082614705565b949350505050565b6000821580612e0c575081155b15612e19575060006108aa565b81612e2d6002670de0b6b3a7640000614705565b612e3990600019614746565b612e439190614705565b831115612e9e5760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b670de0b6b3a7640000612cdb600282614705565b600081612f015760405162461bcd60e51b815260206004820152601860248201527f7261794469763a204469766973696f6e206279207a65726f000000000000000060448201526064016108fe565b6000612f0e600284614705565b9050676765c793fa10079d601b1b612f2882600019614746565b612f329190614705565b841115612f8d5760405162461bcd60e51b8152602060048201526024808201527f7261794469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b8281612fa4676765c793fa10079d601b1b87614727565b612fae91906146ed565b612df79190614705565b60606000612fc7836002614727565b612fd29060026146ed565b67ffffffffffffffff811115612fea57612fea614860565b6040519080825280601f01601f191660200182016040528015613014576020820181803683370190505b509050600360fc1b8160008151811061302f5761302f61484a565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061305e5761305e61484a565b60200101906001600160f81b031916908160001a9053506000613082846002614727565b61308d9060016146ed565b90505b6001811115613105576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106130c1576130c161484a565b1a60f81b8282815181106130d7576130d761484a565b60200101906001600160f81b031916908160001a90535060049490941c936130fe816147d2565b9050613090565b5083156114895760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108fe565b676765c793fa10079d601b1b61012f54111580156131755750600061012f54115b6131cf5760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a2073637250657263656e74616765206d757374206260448201526465203c3d3160d81b60648201526084016108fe565b6131e5676765c793fa10079d601b1b6002614727565b610130541115801561320f57506132086002676765c793fa10079d601b1b614705565b6101305410155b61325b5760405162461bcd60e51b815260206004820181905260248201527f56616c69646174696f6e3a206d6f63206d757374206265205b302e352c20325d60448201526064016108fe565b676765c793fa10079d601b1b6101315411156132c45760405162461bcd60e51b815260206004820152602260248201527f56616c69646174696f6e3a20656e7375726f466565206d757374206265203c3d604482015261203160f01b60648201526084016108fe565b676765c793fa10079d601b1b61013254111561333a5760405162461bcd60e51b815260206004820152602f60248201527f56616c69646174696f6e3a20736372496e74657265737452617465206d75737460448201526e206265203c3d20312028313030252960881b60648201526084016108fe565b610135546101345410156133b65760405162461bcd60e51b815260206004820152603760248201527f56616c69646174696f6e3a207363724c696d69742063616e2774206265206c6560448201527f7373207468616e2061637475616c20746f74616c53637200000000000000000060648201526084016108fe565b610136546001600160a01b03166134205760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a2057616c6c65742063616e2774206265207a65726f604482015267206164647265737360c01b60648201526084016108fe565b565b6000600182601c81111561343857613438614834565b6134429190614783565b61012d54600160ff929092169190911b9150620151809061346a9064ffffffffff164261475d565b64ffffffffff1611156134ad5761012d805466ffffffffffffff8316600160281b026bffffffffffffffffffffffff1990911664ffffffffff4216171790555050565b61012d54600160281b9004811666ffffffffffffff166135115761012d805464ffffffffff421664ffffffffff1966ffffffffffffff808616600160281b808604929092161702166bffffffffffffffffffffffff19909216919091171790555050565b60405162461bcd60e51b815260206004820152604760248201527f596f7520616c726561647920747765616b6564207468697320706172616d657460448201527f657220726563656e746c792e2057616974206265666f726520747765616b696e606482015266339030b3b0b4b760c91b608482015260a4016108fe565b6000816135de5760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f000000000000000060448201526064016108fe565b60006135eb600284614705565b9050670de0b6b3a764000061360282600019614746565b61360c9190614705565b8411156136675760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b8281612fa4670de0b6b3a764000087614727565b6001600160a01b0381163b6136e85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fe565b60008051602061489a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61372083613c78565b60008251118061372d5750805b15610dd057610be08383613cb8565b613744613e51565b8385111561379f5760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b60648201526084016108fe565b6137a7613e51565b6001600160a01b038716610120820181905260408083018890526020808401889052608084018790528151635342825360e01b81529151613847936113cd936113be939192635342825392600480840193919291829003018186803b15801561380f57600080fd5b505afa158015613823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906140cd565b8160a00181815250508060a001516138d36138cc896001600160a01b031663bf8e934d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561389457600080fd5b505afa1580156138a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd91906140cd565b8790612dff565b6138dd9190614746565b606082018190526139245760405162461bcd60e51b81526020600482015260116024820152705343522063616e2774206265207a65726f60781b60448201526064016108fe565b64ffffffffff428116610140830181905290841661016083018190526139ea916139df916113cd916e0612d847b578e7643c28ac0000000091613967919061475d565b64ffffffffff168b6001600160a01b0316639d90724d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156139a757600080fd5b505afa1580156139bb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142891906140cd565b606083015190612dff565b81610100018181525050613a48613a33886001600160a01b031663d44499a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561389457600080fd5b8261010001518360a0015161146491906146ed565b60c0820181905261010082015160a08301518892613a65916146ed565b613a6f91906146ed565b1115613abd5760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d0000000000000060448201526064016108fe565b60c081015161010082015160a0830151613ad79089614746565b613ae19190614746565b613aeb9190614746565b60e08201529695505050505050565b600054610100900460ff166134205760405162461bcd60e51b81526004016108fe90614596565b600054610100900460ff16613b3c5760005460ff1615613b40565b303b155b613b5c5760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff16158015613b7e576000805461ffff19166101011790555b613b86613afa565b613b8e613dac565b8015610f30576000805461ff001916905550565b600054610100900460ff16613bbd5760005460ff1615613bc1565b303b155b613bdd5760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff16158015613bff576000805461ffff19166101011790555b8751613c139061012e9060208b0190613ec9565b5061012f879055676765c793fa10079d601b1b61013055610131869055610132859055610133849055610134839055600061013581905561013680546001600160a01b0319166001600160a01b038516179055613c709033613ddb565b61127d613154565b613c818161367b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613d205760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108fe565b600080846001600160a01b031684604051613d3b91906143a3565b600060405180830381855af49150503d8060008114613d76576040519150601f19603f3d011682016040523d82523d6000602084013e613d7b565b606091505b5091509150613da382826040518060600160405280602781526020016148fa60279139613de5565b95945050505050565b600054610100900460ff16613dd35760405162461bcd60e51b81526004016108fe90614596565b613420613e1e565b610e4f82826122df565b60608315613df4575081611489565b825115613e045782518084602001fd5b8160405162461bcd60e51b81526004016108fe9190614453565b600054610100900460ff16613e455760405162461bcd60e51b81526004016108fe90614596565b60fb805460ff19169055565b60405180610180016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b828054613ed5906147e9565b90600052602060002090601f016020900481019282613ef75760008555613f3d565b82601f10613f1057805160ff1916838001178555613f3d565b82800160010185558215613f3d579182015b82811115613f3d578251825591602001919060010190613f22565b50613f49929150613f4d565b5090565b5b80821115613f495760008155600101613f4e565b600067ffffffffffffffff80841115613f7d57613f7d614860565b604051601f8501601f19908116603f01168101908282118183101715613fa557613fa5614860565b81604052809350858152868686011115613fbe57600080fd5b858560208301376000602087830101525050509392505050565b8035613fe381614876565b919050565b60006101808284031215613ffb57600080fd5b50919050565b803564ffffffffff81168114613fe357600080fd5b60006020828403121561402857600080fd5b813561148981614876565b6000806040838503121561404657600080fd5b823561405181614876565b9150602083013567ffffffffffffffff81111561406d57600080fd5b8301601f8101851361407e57600080fd5b61408d85823560208401613f62565b9150509250929050565b6000602082840312156140a957600080fd5b81516114898161488b565b6000602082840312156140c657600080fd5b5035919050565b6000602082840312156140df57600080fd5b5051919050565b600080604083850312156140f957600080fd5b82359150602083013561410b81614876565b809150509250929050565b60006020828403121561412857600080fd5b81356001600160e01b03198116811461148957600080fd5b60006020828403121561415257600080fd5b815161148981614876565b600080600080600080600060e0888a03121561417857600080fd5b873567ffffffffffffffff81111561418f57600080fd5b8801601f81018a136141a057600080fd5b6141af8a823560208401613f62565b9750506020880135955060408801359450606088013593506080880135925060a0880135915060c08801356141e381614876565b8091505092959891949750929550565b6000806101a0838503121561420757600080fd5b6142118484613fe8565b915061018083013561410b8161488b565b6000806101a0838503121561423657600080fd5b6142408484613fe8565b94610180939093013593505050565b60008060008060008060c0878903121561426857600080fd5b86359550602087013594506040870135935061428660608801614001565b9250608087013561429681614876565b915060a08701356bffffffffffffffffffffffff811681146142b757600080fd5b809150509295509295509295565b6000806000606084860312156142da57600080fd5b83359250602084013591506142f160408501614001565b90509250925092565b803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e083015261010080820135818401525061012061435e818301613fd8565b6001600160a01b031690830152610140614379828201614001565b64ffffffffff1690830152610160614392828201614001565b64ffffffffff811684830152610be0565b600082516143b58184602087016147a6565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516143f78160178501602088016147a6565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516144288160288401602088016147a6565b01602801949350505050565b92835260208301919091526001600160a01b0316604082015260600190565b60208152600082518060208401526144728160408501602087016147a6565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101a081016145f082856142fa565b8215156101808301529392505050565b6101a0810161460f82856142fa565b826101808301529392505050565b60006101c082019050845182526020850151602083015260408501516040830152606085015160608301526080850151608083015260a085015160a083015260c085015160c083015260e085015160e083015261010080860151818401525061012080860151614697828501826001600160a01b03169052565b50506101408581015164ffffffffff81168483015250506101608581015164ffffffffff81168483015250506001600160a01b0384166101808301526bffffffffffffffffffffffff83166101a0830152612df7565b600082198211156147005761470061481e565b500190565b60008261472257634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156147415761474161481e565b500290565b6000828210156147585761475861481e565b500390565b600064ffffffffff8381169083168181101561477b5761477b61481e565b039392505050565b600060ff821660ff84168082101561479d5761479d61481e565b90039392505050565b60005b838110156147c15781810151838201526020016147a9565b83811115610be05750506000910152565b6000816147e1576147e161481e565b506000190190565b600181811c908216806147fd57607f821691505b60208210811415613ffb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f3057600080fd5b8015158114610f3057600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb25ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c27416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220b7f72bcfda9c6f10d244e1ce61da8ce22e240a2405c162b22eb79424eafdbcf064736f6c63430008060033",
1029
- "deployedBytecode": "0x60806040526004361061027d5760003560e01c80636f0dbe6f1161014f578063b9ea870a116100c1578063deaa59df1161007a578063deaa59df146107ae578063e5a6b10f146107ce578063e61735c0146107e3578063f33323a414610803578063f67b2bad14610823578063fbb812791461084557600080fd5b8063b9ea870a1461070c578063bf8e934d1461072c578063ca996de314610742578063d44499a814610758578063d547741f1461076e578063dab5d88d1461078e57600080fd5b806391d148541161011357806391d148541461064d5780639cbbcd921461066d5780639d90724d1461068d5780639e556b2b146106a3578063a217fddf146106c3578063a9a24f27146106d857600080fd5b80636f0dbe6f1461059757806378fab260146105b75780637ed5acfa146105eb5780638456cb59146106185780638bac3a241461062d57600080fd5b8063406f7f6f116101f3578063521eb273116101ac578063521eb273146104fd57806352d1902d1461051c57806353428253146105315780635b494dd5146105475780635c975abb146105695780635d505fe71461058157600080fd5b8063406f7f6f1461041057806341ea6a0f14610430578063468a8c9f146104465780634a47a3e0146104815780634d15eb03146104a35780634f1ef286146104ea57600080fd5b8063248a9ca311610245578063248a9ca31461033b57806324ea54f4146103795780632f2ff15d1461039b57806336568abe146103bb5780633659cfe6146103db5780633f4ba83a146103fb57600080fd5b806301ffc9a714610282578063066dda0e146102b757806306fdde03146102d9578063089a8504146102fb57806322875d631461031b575b600080fd5b34801561028e57600080fd5b506102a261029d366004614116565b610879565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b506102d76102d23660046141f3565b6108b0565b005b3480156102e557600080fd5b506102ee61098c565b6040516102ae9190614453565b34801561030757600080fd5b506102d76103163660046140b4565b610a1f565b34801561032757600080fd5b506102d76103363660046140b4565b610be6565b34801561034757600080fd5b5061036b6103563660046140b4565b600090815260c9602052604090206001015490565b6040519081526020016102ae565b34801561038557600080fd5b5061036b60008051602061494183398151915281565b3480156103a757600080fd5b506102d76103b63660046140e6565b610daa565b3480156103c757600080fd5b506102d76103d63660046140e6565b610dd5565b3480156103e757600080fd5b506102d76103f6366004614016565b610e53565b34801561040757600080fd5b506102d7610f33565b34801561041c57600080fd5b5061036b61042b36600461424f565b611049565b34801561043c57600080fd5b506101345461036b565b34801561045257600080fd5b5061012d546040805164ffffffffff83168152600160281b90920466ffffffffffffff166020830152016102ae565b34801561048d57600080fd5b5061036b60008051602061492183398151915281565b3480156104af57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102ae565b6102d76104f8366004614033565b611091565b34801561050957600080fd5b50610136546001600160a01b03166104d2565b34801561052857600080fd5b5061036b61115e565b34801561053d57600080fd5b506101305461036b565b34801561055357600080fd5b5061036b6000805160206148da83398151915281565b34801561057557600080fd5b5060fb5460ff166102a2565b34801561058d57600080fd5b506101335461036b565b3480156105a357600080fd5b506102d76105b236600461415d565b611211565b3480156105c357600080fd5b5061036b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb181565b3480156105f757600080fd5b506106026201518081565b60405164ffffffffff90911681526020016102ae565b34801561062457600080fd5b506102d7611299565b34801561063957600080fd5b5061036b6106483660046142c5565b6113a1565b34801561065957600080fd5b506102a26106683660046140e6565b611490565b34801561067957600080fd5b506102d76106883660046140b4565b6114bb565b34801561069957600080fd5b506101325461036b565b3480156106af57600080fd5b506102d76106be366004614222565b611558565b3480156106cf57600080fd5b5061036b600081565b3480156106e457600080fd5b5061036b7f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad181565b34801561071857600080fd5b506102d76107273660046140b4565b6115f4565b34801561073857600080fd5b5061012f5461036b565b34801561074e57600080fd5b506101355461036b565b34801561076457600080fd5b506101315461036b565b34801561077a57600080fd5b506102d76107893660046140e6565b6117af565b34801561079a57600080fd5b506102d76107a93660046140b4565b6117d5565b3480156107ba57600080fd5b506102d76107c9366004614016565b61199c565b3480156107da57600080fd5b506104d26119f4565b3480156107ef57600080fd5b506102d76107fe3660046140b4565b611a8c565b34801561080f57600080fd5b506102d761081e3660046140b4565b611c51565b34801561082f57600080fd5b5061036b6000805160206148ba83398151915281565b34801561085157600080fd5b5061036b7fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a81565b60006001600160e01b03198216637965db0b60e01b14806108aa57506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb16108db813361200d565b60fb5460ff16156109075760405162461bcd60e51b81526004016108fe9061451e565b60405180910390fd5b604051630336ed0760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063066dda0e9061095590869086906004016145e1565b600060405180830381600087803b15801561096f57600080fd5b505af1158015610983573d6000803e3d6000fd5b50505050505050565b606061012e805461099c906147e9565b80601f01602080910402602001604051908101604052809291908181526020018280546109c8906147e9565b8015610a155780601f106109ea57610100808354040283529160200191610a15565b820191906000526020600020905b8154815290600101906020018083116109f857829003601f168201915b5050505050905090565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9657600080fd5b505afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401610afd93929190614434565b60006040518083038186803b158015610b1557600080fd5b505afa158015610b29573d6000803e3d6000fd5b505050506000610b46600080516020614921833981519152612071565b159050801580610b6a5750610b6a61013154856af8277896582678ac000000612184565b610bce5760405162461bcd60e51b815260206004820152602f60248201527f547765616b2065786365656465643a20656e7375726f46656520747765616b7360448201526e206f6e6c7920757020746f2033302560881b60648201526084016108fe565b610131849055610be0600a858361220f565b50505050565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5d57600080fd5b505afa158015610c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401610cc493929190614434565b60006040518083038186803b158015610cdc57600080fd5b505afa158015610cf0573d6000803e3d6000fd5b505050506000610d0d600080516020614921833981519152612071565b159050801580610d2e5750610d2e6101335485670429d069189e0000612270565b610d985760405162461bcd60e51b815260206004820152603560248201527f547765616b2065786365656465643a206d6178536372506572506f6c69637920604482015274747765616b73206f6e6c7920757020746f2033302560581b60648201526084016108fe565b610133849055610be0600b858361220f565b600082815260c96020526040902060010154610dc6813361200d565b610dd083836122df565b505050565b6001600160a01b0381163314610e455760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108fe565b610e4f8282612365565b5050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610e9c5760405162461bcd60e51b81526004016108fe90614486565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ee560008051602061489a833981519152546001600160a01b031690565b6001600160a01b031614610f0b5760405162461bcd60e51b81526004016108fe906144d2565b610f14816123cc565b60408051600080825260208201909252610f30918391906124d6565b50565b6000805160206149418339815191526000805160206148ba8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610faa57600080fd5b505afa158015610fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe29190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b815260040161101193929190614434565b60006040518083038186803b15801561102957600080fd5b505afa15801561103d573d6000803e3d6000fd5b50505050610e4f612650565b60007fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a611076813361200d565b6110848888888888886126e3565b5198975050505050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156110da5760405162461bcd60e51b81526004016108fe90614486565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661112360008051602061489a833981519152546001600160a01b031690565b6001600160a01b0316146111495760405162461bcd60e51b81526004016108fe906144d2565b611152826123cc565b610e4f828260016124d6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111fe5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108fe565b5060008051602061489a83398151915290565b600054610100900460ff1661122c5760005460ff1615611230565b303b155b61124c5760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff1615801561126e576000805461ffff19166101011790555b61127d88888888888888612b4e565b801561128f576000805461ff00191690555b5050505050505050565b6000805160206149418339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113399190614140565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b15801561138157600080fd5b505afa158015611395573d6000803e3d6000fd5b50505050610f30612bca565b6000806113d26113cd6113be6113b76101305490565b8790612c22565b6113c788612cf9565b90612c22565b612d77565b90506000816113ee6113e76113cd61012f5490565b8890612dff565b6113f89190614746565b905060006114386113cd6e0612d847b578e7643c28ac000000006114234264ffffffffff8a16614746565b610132545b6114329190614727565b90612eb2565b905060006114468383612dff565b9050600061146a61145a6113cd6101315490565b61146484886146ed565b90612dff565b90508161147782876146ed565b61148191906146ed565b955050505050505b9392505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461153d5760405162461bcd60e51b815260206004820152602160248201527f5468652063616c6c6572206d7573742062652074686520506f6c696379506f6f6044820152601b60fa1b60648201526084016108fe565b8061013560008282546115509190614746565b909155505050565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb1611583813361200d565b60fb5460ff16156115a65760405162461bcd60e51b81526004016108fe9061451e565b604051639e556b2b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639e556b2b906109559086908690600401614600565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561166b57600080fd5b505afa15801561167f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a39190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b81526004016116d293929190614434565b60006040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b50505050600061171b600080516020614921833981519152612071565b15905080158061173f575061173f61013054856a52b7d2dcc80cd2e4000000612184565b61179d5760405162461bcd60e51b815260206004820152602960248201527f547765616b2065786365656465643a206d6f6320747765616b73206f6e6c7920604482015268757020746f2031302560b81b60648201526084016108fe565b610130849055610be06008858361220f565b600082815260c960205260409020600101546117cb813361200d565b610dd08383612365565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561184c57600080fd5b505afa158015611860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118849190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b81526004016118b393929190614434565b60006040518083038186803b1580156118cb57600080fd5b505afa1580156118df573d6000803e3d6000fd5b5050505060006118fc600080516020614921833981519152612071565b159050801580611920575061192061013254856af8277896582678ac000000612184565b61198a5760405162461bcd60e51b815260206004820152603560248201527f547765616b2065786365656465643a20736372496e7465726573745261746520604482015274747765616b73206f6e6c7920757020746f2033302560581b60648201526084016108fe565b610132849055610be06009858361220f565b7f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad16119c7813361200d565b61013680546001600160a01b0319166001600160a01b038416908117909155610e4f90600f90600061220f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a4f57600080fd5b505afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a879190614140565b905090565b6000805160206149218339815191526000805160206148da8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b0357600080fd5b505afa158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401611b6a93929190614434565b60006040518083038186803b158015611b8257600080fd5b505afa158015611b96573d6000803e3d6000fd5b505050506000611bb3600080516020614921833981519152612071565b159050801580611bd75750611bd761012f54856a52b7d2dcc80cd2e4000000612184565b611c3f5760405162461bcd60e51b815260206004820152603360248201527f547765616b2065786365656465643a2073637250657263656e7461676520747760448201527265616b73206f6e6c7920757020746f2031302560681b60648201526084016108fe565b61012f849055610be06007858361220f565b6000805160206148ba8339815191526000805160206149218339815191526000805160206148da833981519152611c8783612071565b611d7c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611ce457600080fd5b505afa158015611cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1c9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b8152600401611d4b93929190614434565b60006040518083038186803b158015611d6357600080fd5b505afa158015611d77573d6000803e3d6000fd5b505050505b6000611d95600080516020614921833981519152612071565b158015611db65750611db46000805160206148ba833981519152612071565b155b9050801580611dd65750611dd6610134548667016345785d8a0000612270565b611e395760405162461bcd60e51b815260206004820152602e60248201527f547765616b2065786365656465643a207363724c696d697420747765616b732060448201526d6f6e6c7920757020746f2031302560901b60648201526084016108fe565b6101345485111580611e5d5750611e5d6000805160206148ba833981519152612071565b80611f03575084611f0167016345785d8a00007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b77ddfea6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec957600080fd5b505afa158015611edd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146491906140cd565b115b611f8a5760405162461bcd60e51b815260206004820152604c60248201527f547765616b2065786365656465643a20496e6372656173652c203e3d3130252060448201527f6f662074686520746f74616c206c69717569646974792c20726571756972657360648201526b204c4556454c315f524f4c4560a01b608482015260a4016108fe565b61013554851015611ff45760405162461bcd60e51b815260206004820152602e60248201527f43616e27742073657420534352206c657373207468616e2063757272656e742060448201526d29a1a91030b63637b1b0ba34b7b760911b60648201526084016108fe565b610134859055612006600c868361220f565b5050505050565b6120178282611490565b610e4f5761202f816001600160a01b03166014612fb8565b61203a836020612fb8565b60405160200161204b9291906143bf565b60408051601f198184030181529082905262461bcd60e51b82526108fe91600401614453565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156120cc57600080fd5b505afa1580156120e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121049190614140565b604051632474521560e21b8152600481018490523360248201526001600160a01b0391909116906391d148549060440160206040518083038186803b15801561214c57600080fd5b505afa158015612160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190614097565b60008284141561219657506001611489565b836121b05750676765c793fa10079d601b1b811015611489565b826121bd57506000611489565b828410156121ef5781676765c793fa10079d601b1b6121dc8587612eb2565b6121e69190614746565b11159050611489565b816121fa8486612eb2565b6121e690676765c793fa10079d601b1b614746565b612217613154565b80156122265761222683613422565b82601c81111561223857612238614834565b6040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a2505050565b60008284141561228257506001611489565b836122995750670de0b6b3a7640000811015611489565b826122a657506000611489565b828410156122c25781670de0b6b3a76400006121dc858761358f565b816122cd848661358f565b6121e690670de0b6b3a7640000614746565b6122e98282611490565b610e4f57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123213390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61236f8282611490565b15610e4f57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206149418339815191526000805160206148ba8339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b15801561244357600080fd5b505afa158015612457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247b9190614140565b6001600160a01b031663c5b8f5cf8383336040518463ffffffff1660e01b81526004016124aa93929190614434565b60006040518083038186803b1580156124c257600080fd5b505afa158015610983573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561250957610dd08361367b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561254257600080fd5b505afa925050508015612572575060408051601f3d908101601f1916820190925261256f918101906140cd565b60015b6125d55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108fe565b60008051602061489a83398151915281146126445760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108fe565b50610dd0838383613717565b60fb5460ff166126995760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108fe565b60fb805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6126eb613e51565b60fb5460ff161561270e5760405162461bcd60e51b81526004016108fe9061451e565b86861061275d5760405162461bcd60e51b815260206004820181905260248201527f5072656d69756d206d757374206265206c657373207468616e207061796f757460448201526064016108fe565b4264ffffffffff168464ffffffffff16116127ba5760405162461bcd60e51b815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e207468652066757475726560448201526064016108fe565b6001600160a01b0383166128105760405162461bcd60e51b815260206004820152601e60248201527f437573746f6d65722063616e2774206265207a65726f2061646472657373000060448201526064016108fe565b857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561286a57600080fd5b505afa15801561287e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a29190614140565b604051636eb1769f60e11b81526001600160a01b0386811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e9060440160206040518083038186803b15801561290d57600080fd5b505afa158015612921573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294591906140cd565b10156129a95760405162461bcd60e51b815260206004820152602d60248201527f596f75206d75737420616c6c6f7720454e5355524f20746f207472616e73666560448201526c7220746865207072656d69756d60981b60648201526084016108fe565b60006129b830888a898961373c565b90506101335481606001511115612a295760405162461bcd60e51b815260206004820152602f60248201527f5269736b4d6f64756c653a20534352206973206d6f7265207468616e206d617860448201526e696d756d2070657220706f6c69637960881b60648201526084016108fe565b80606001516101356000828254612a4091906146ed565b909155505061013454610135541115612a9b5760405162461bcd60e51b815260206004820152601e60248201527f5269736b4d6f64756c653a20534352206c696d6974206578636565646564000060448201526064016108fe565b604051630cb8251d60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906319704a3a90612aee9085908990899060040161461d565b602060405180830381600087803b158015612b0857600080fd5b505af1158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4091906140cd565b825250979650505050505050565b600054610100900460ff16612b695760005460ff1615612b6d565b303b155b612b895760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff16158015612bab576000805461ffff19166101011790555b612bb3613afa565b612bbb613b21565b61127d88888888888888613ba2565b60fb5460ff1615612bed5760405162461bcd60e51b81526004016108fe9061451e565b60fb805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126c63390565b6000821580612c2f575081155b15612c3c575060006108aa565b81612c536002676765c793fa10079d601b1b614705565b612c5f90600019614746565b612c699190614705565b831115612cc45760405162461bcd60e51b8152602060048201526024808201527f7261794d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b676765c793fa10079d601b1b612cdb600282614705565b612ce58486614727565b612cef91906146ed565b6114899190614705565b600080612d0a633b9aca0084614727565b905082612d1b633b9aca0083614705565b146108aa5760405162461bcd60e51b815260206004820152602660248201527f776164546f5261643a204d617468204d756c7469706c69636174696f6e204f766044820152656572666c6f7760d01b60648201526084016108fe565b600080612d896002633b9aca00614705565b90506000612d9784836146ed565b905081811015612de95760405162461bcd60e51b815260206004820181905260248201527f726179546f5761643a204d617468204164646974696f6e204f766572666c6f7760448201526064016108fe565b612df7633b9aca0082614705565b949350505050565b6000821580612e0c575081155b15612e19575060006108aa565b81612e2d6002670de0b6b3a7640000614705565b612e3990600019614746565b612e439190614705565b831115612e9e5760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b670de0b6b3a7640000612cdb600282614705565b600081612f015760405162461bcd60e51b815260206004820152601860248201527f7261794469763a204469766973696f6e206279207a65726f000000000000000060448201526064016108fe565b6000612f0e600284614705565b9050676765c793fa10079d601b1b612f2882600019614746565b612f329190614705565b841115612f8d5760405162461bcd60e51b8152602060048201526024808201527f7261794469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b8281612fa4676765c793fa10079d601b1b87614727565b612fae91906146ed565b612df79190614705565b60606000612fc7836002614727565b612fd29060026146ed565b67ffffffffffffffff811115612fea57612fea614860565b6040519080825280601f01601f191660200182016040528015613014576020820181803683370190505b509050600360fc1b8160008151811061302f5761302f61484a565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061305e5761305e61484a565b60200101906001600160f81b031916908160001a9053506000613082846002614727565b61308d9060016146ed565b90505b6001811115613105576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106130c1576130c161484a565b1a60f81b8282815181106130d7576130d761484a565b60200101906001600160f81b031916908160001a90535060049490941c936130fe816147d2565b9050613090565b5083156114895760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108fe565b676765c793fa10079d601b1b61012f54111580156131755750600061012f54115b6131cf5760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a2073637250657263656e74616765206d757374206260448201526465203c3d3160d81b60648201526084016108fe565b6131e5676765c793fa10079d601b1b6002614727565b610130541115801561320f57506132086002676765c793fa10079d601b1b614705565b6101305410155b61325b5760405162461bcd60e51b815260206004820181905260248201527f56616c69646174696f6e3a206d6f63206d757374206265205b302e352c20325d60448201526064016108fe565b676765c793fa10079d601b1b6101315411156132c45760405162461bcd60e51b815260206004820152602260248201527f56616c69646174696f6e3a20656e7375726f466565206d757374206265203c3d604482015261203160f01b60648201526084016108fe565b676765c793fa10079d601b1b61013254111561333a5760405162461bcd60e51b815260206004820152602f60248201527f56616c69646174696f6e3a20736372496e74657265737452617465206d75737460448201526e206265203c3d20312028313030252960881b60648201526084016108fe565b610135546101345410156133b65760405162461bcd60e51b815260206004820152603760248201527f56616c69646174696f6e3a207363724c696d69742063616e2774206265206c6560448201527f7373207468616e2061637475616c20746f74616c53637200000000000000000060648201526084016108fe565b610136546001600160a01b03166134205760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a2057616c6c65742063616e2774206265207a65726f604482015267206164647265737360c01b60648201526084016108fe565b565b6000600182601c81111561343857613438614834565b6134429190614783565b61012d54600160ff929092169190911b9150620151809061346a9064ffffffffff164261475d565b64ffffffffff1611156134ad5761012d805466ffffffffffffff8316600160281b026bffffffffffffffffffffffff1990911664ffffffffff4216171790555050565b61012d54600160281b9004811666ffffffffffffff166135115761012d805464ffffffffff421664ffffffffff1966ffffffffffffff808616600160281b808604929092161702166bffffffffffffffffffffffff19909216919091171790555050565b60405162461bcd60e51b815260206004820152604760248201527f596f7520616c726561647920747765616b6564207468697320706172616d657460448201527f657220726563656e746c792e2057616974206265666f726520747765616b696e606482015266339030b3b0b4b760c91b608482015260a4016108fe565b6000816135de5760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f000000000000000060448201526064016108fe565b60006135eb600284614705565b9050670de0b6b3a764000061360282600019614746565b61360c9190614705565b8411156136675760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016108fe565b8281612fa4670de0b6b3a764000087614727565b6001600160a01b0381163b6136e85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fe565b60008051602061489a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61372083613c78565b60008251118061372d5750805b15610dd057610be08383613cb8565b613744613e51565b8385111561379f5760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b60648201526084016108fe565b6137a7613e51565b6001600160a01b038716610120820181905260408083018890526020808401889052608084018790528151635342825360e01b81529151613847936113cd936113be939192635342825392600480840193919291829003018186803b15801561380f57600080fd5b505afa158015613823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b791906140cd565b8160a00181815250508060a001516138d36138cc896001600160a01b031663bf8e934d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561389457600080fd5b505afa1580156138a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd91906140cd565b8790612dff565b6138dd9190614746565b606082018190526139245760405162461bcd60e51b81526020600482015260116024820152705343522063616e2774206265207a65726f60781b60448201526064016108fe565b64ffffffffff428116610140830181905290841661016083018190526139ea916139df916113cd916e0612d847b578e7643c28ac0000000091613967919061475d565b64ffffffffff168b6001600160a01b0316639d90724d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156139a757600080fd5b505afa1580156139bb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142891906140cd565b606083015190612dff565b81610100018181525050613a48613a33886001600160a01b031663d44499a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561389457600080fd5b8261010001518360a0015161146491906146ed565b60c0820181905261010082015160a08301518892613a65916146ed565b613a6f91906146ed565b1115613abd5760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d0000000000000060448201526064016108fe565b60c081015161010082015160a0830151613ad79089614746565b613ae19190614746565b613aeb9190614746565b60e08201529695505050505050565b600054610100900460ff166134205760405162461bcd60e51b81526004016108fe90614596565b600054610100900460ff16613b3c5760005460ff1615613b40565b303b155b613b5c5760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff16158015613b7e576000805461ffff19166101011790555b613b86613afa565b613b8e613dac565b8015610f30576000805461ff001916905550565b600054610100900460ff16613bbd5760005460ff1615613bc1565b303b155b613bdd5760405162461bcd60e51b81526004016108fe90614548565b600054610100900460ff16158015613bff576000805461ffff19166101011790555b8751613c139061012e9060208b0190613ec9565b5061012f879055676765c793fa10079d601b1b61013055610131869055610132859055610133849055610134839055600061013581905561013680546001600160a01b0319166001600160a01b038516179055613c709033613ddb565b61127d613154565b613c818161367b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613d205760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016108fe565b600080846001600160a01b031684604051613d3b91906143a3565b600060405180830381855af49150503d8060008114613d76576040519150601f19603f3d011682016040523d82523d6000602084013e613d7b565b606091505b5091509150613da382826040518060600160405280602781526020016148fa60279139613de5565b95945050505050565b600054610100900460ff16613dd35760405162461bcd60e51b81526004016108fe90614596565b613420613e1e565b610e4f82826122df565b60608315613df4575081611489565b825115613e045782518084602001fd5b8160405162461bcd60e51b81526004016108fe9190614453565b600054610100900460ff16613e455760405162461bcd60e51b81526004016108fe90614596565b60fb805460ff19169055565b60405180610180016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b828054613ed5906147e9565b90600052602060002090601f016020900481019282613ef75760008555613f3d565b82601f10613f1057805160ff1916838001178555613f3d565b82800160010185558215613f3d579182015b82811115613f3d578251825591602001919060010190613f22565b50613f49929150613f4d565b5090565b5b80821115613f495760008155600101613f4e565b600067ffffffffffffffff80841115613f7d57613f7d614860565b604051601f8501601f19908116603f01168101908282118183101715613fa557613fa5614860565b81604052809350858152868686011115613fbe57600080fd5b858560208301376000602087830101525050509392505050565b8035613fe381614876565b919050565b60006101808284031215613ffb57600080fd5b50919050565b803564ffffffffff81168114613fe357600080fd5b60006020828403121561402857600080fd5b813561148981614876565b6000806040838503121561404657600080fd5b823561405181614876565b9150602083013567ffffffffffffffff81111561406d57600080fd5b8301601f8101851361407e57600080fd5b61408d85823560208401613f62565b9150509250929050565b6000602082840312156140a957600080fd5b81516114898161488b565b6000602082840312156140c657600080fd5b5035919050565b6000602082840312156140df57600080fd5b5051919050565b600080604083850312156140f957600080fd5b82359150602083013561410b81614876565b809150509250929050565b60006020828403121561412857600080fd5b81356001600160e01b03198116811461148957600080fd5b60006020828403121561415257600080fd5b815161148981614876565b600080600080600080600060e0888a03121561417857600080fd5b873567ffffffffffffffff81111561418f57600080fd5b8801601f81018a136141a057600080fd5b6141af8a823560208401613f62565b9750506020880135955060408801359450606088013593506080880135925060a0880135915060c08801356141e381614876565b8091505092959891949750929550565b6000806101a0838503121561420757600080fd5b6142118484613fe8565b915061018083013561410b8161488b565b6000806101a0838503121561423657600080fd5b6142408484613fe8565b94610180939093013593505050565b60008060008060008060c0878903121561426857600080fd5b86359550602087013594506040870135935061428660608801614001565b9250608087013561429681614876565b915060a08701356bffffffffffffffffffffffff811681146142b757600080fd5b809150509295509295509295565b6000806000606084860312156142da57600080fd5b83359250602084013591506142f160408501614001565b90509250925092565b803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e083015261010080820135818401525061012061435e818301613fd8565b6001600160a01b031690830152610140614379828201614001565b64ffffffffff1690830152610160614392828201614001565b64ffffffffff811684830152610be0565b600082516143b58184602087016147a6565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516143f78160178501602088016147a6565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516144288160288401602088016147a6565b01602801949350505050565b92835260208301919091526001600160a01b0316604082015260600190565b60208152600082518060208401526144728160408501602087016147a6565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101a081016145f082856142fa565b8215156101808301529392505050565b6101a0810161460f82856142fa565b826101808301529392505050565b60006101c082019050845182526020850151602083015260408501516040830152606085015160608301526080850151608083015260a085015160a083015260c085015160c083015260e085015160e083015261010080860151818401525061012080860151614697828501826001600160a01b03169052565b50506101408581015164ffffffffff81168483015250506101608581015164ffffffffff81168483015250506001600160a01b0384166101808301526bffffffffffffffffffffffff83166101a0830152612df7565b600082198211156147005761470061481e565b500190565b60008261472257634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156147415761474161481e565b500290565b6000828210156147585761475861481e565b500390565b600064ffffffffff8381169083168181101561477b5761477b61481e565b039392505050565b600060ff821660ff84168082101561479d5761479d61481e565b90039392505050565b60005b838110156147c15781810151838201526020016147a9565b83811115610be05750506000910152565b6000816147e1576147e161481e565b506000190190565b600181811c908216806147fd57607f821691505b60208210811415613ffb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610f3057600080fd5b8015158114610f3057600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb25ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c27416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c055435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220b7f72bcfda9c6f10d244e1ce61da8ce22e240a2405c162b22eb79424eafdbcf064736f6c63430008060033",
845
+ "bytecode": "0x60e06040523060601b6080523480156200001857600080fd5b5060405162004a7738038062004a778339810160408190526200003b916200018c565b818181806001600160a01b031660a0816001600160a01b031660601b8152505050816001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b815260040160206040518083038186803b158015620000a057600080fd5b505afa158015620000b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000db919062000165565b6001600160a01b0316146200014b5760405162461bcd60e51b815260206004820152602c60248201527f546865205072656d69756d734163636f756e74206d757374206265207061727460448201526b081bd9881d1a1948141bdbdb60a21b606482015260840160405180910390fd5b60601b6001600160601b03191660c05250620001e4915050565b6000602082840312156200017857600080fd5b81516200018581620001cb565b9392505050565b60008060408385031215620001a057600080fd5b8251620001ad81620001cb565b6020840151909250620001c081620001cb565b809150509250929050565b6001600160a01b0381168114620001e157600080fd5b50565b60805160601c60a05160601c60c05160601c6147ce620002a9600039600061046601526000818161032201528181610884015281816109ab01528181610c3701528181610dcb01528181610ed801528181610f570152818161126601528181611b4a01528181611c6801528181611d1a01528181611e2a01528181611e81015281816122cf0152818161237d0152818161257f01526129b4015260008181610786015281816107cf01528181610abf01528181610aff0152610b8e01526147ce6000f3fe6080604052600436106101ee5760003560e01c806373a952e81161010d578063a9a24f27116100a0578063deaa59df1161006f578063deaa59df1461063e578063e5a6b10f1461065e578063f67b2bad14610673578063fbb8127914610695578063ffa600e3146106c957600080fd5b8063a9a24f271461056a578063c1cca2b31461059e578063cfd4c606146105be578063cff0ab96146105d357600080fd5b80637ff8bf25116100dc5780637ff8bf251461050b5780638456cb591461052057806385272a6e146105355780638bac3a241461054a57600080fd5b806373a952e81461045757806378fab2601461048a5780637a702b3c146104be5780637ed5acfa146104de57600080fd5b80634f1ef286116101855780635c975abb116101545780635c975abb146103d45780636a448ef1146103f75780636db5c8fd146104175780636f0dbe6f1461043757600080fd5b80634f1ef2861461035a578063521eb2731461036d57806352d1902d1461038b5780635b494dd5146103a057600080fd5b8063406f7f6f116101c1578063406f7f6f14610285578063468a8c9f146102a55780634a47a3e0146102df5780634d15eb031461031357600080fd5b806306fdde03146101f357806324ea54f41461021e5780633659cfe61461024e5780633f4ba83a14610270575b600080fd5b3480156101ff57600080fd5b506102086106e9565b60405161021591906141cc565b60405180910390f35b34801561022a57600080fd5b5061024060008051602061477983398151915281565b604051908152602001610215565b34801561025a57600080fd5b5061026e610269366004613de4565b61077b565b005b34801561027c57600080fd5b5061026e610864565b34801561029157600080fd5b506102406102a0366004613ffe565b610986565b3480156102b157600080fd5b5060c9546040805164ffffffffff83168152600160281b90920466ffffffffffffff16602083015201610215565b3480156102eb57600080fd5b506102407fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561031f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610215565b61026e610368366004613e01565b610ab4565b34801561037957600080fd5b5060cd546001600160a01b0316610342565b34801561039757600080fd5b50610240610b81565b3480156103ac57600080fd5b506102407f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156103e057600080fd5b5060975460ff166040519015158152602001610215565b34801561040357600080fd5b5061026e610412366004613fe5565b610c34565b34801561042357600080fd5b5060cb54600160b01b900461ffff16610240565b34801561044357600080fd5b5061026e610452366004613ee8565b610cd0565b34801561046357600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610342565b34801561049657600080fd5b506102407f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb181565b3480156104ca57600080fd5b5061026e6104d9366004613fb8565b610da8565b3480156104ea57600080fd5b506104f56201518081565b60405164ffffffffff9091168152602001610215565b34801561051757600080fd5b5060cc54610240565b34801561052c57600080fd5b5061026e610f46565b34801561054157600080fd5b5061024061104e565b34801561055657600080fd5b50610240610565366004614074565b611071565b34801561057657600080fd5b506102407f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad181565b3480156105aa57600080fd5b5061026e6105b9366004613eb8565b611206565b3480156105ca57600080fd5b506102406119eb565b3480156105df57600080fd5b506105e8611a0a565b6040516102159190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b34801561064a57600080fd5b5061026e610659366004613de4565b611b27565b34801561066a57600080fd5b50610342611c64565b34801561067f57600080fd5b5061024060008051602061473283398151915281565b3480156106a157600080fd5b506102407fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a81565b3480156106d557600080fd5b5061026e6106e4366004613f7e565b611cf7565b606060ca80546106f890614661565b80601f016020809104026020016040519081016040528092919081815260200182805461072490614661565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107cd5760405162461bcd60e51b81526004016107c4906141ff565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610816600080516020614712833981519152546001600160a01b031690565b6001600160a01b03161461083c5760405162461bcd60e51b81526004016107c49061424b565b61084581611e61565b6040805160008082526020820190925261086191839190611f73565b50565b6000805160206147798339815191526000805160206147328339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108db57600080fd5b505afa1580156108ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109139190613e9b565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506109826120f2565b5050565b60007fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3a9190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401610a69939291906141a9565b60006040518083038186803b158015610a8157600080fd5b505afa158015610a95573d6000803e3d6000fd5b50505050610aa7888888888888612144565b5198975050505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610afd5760405162461bcd60e51b81526004016107c4906141ff565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b46600080516020614712833981519152546001600160a01b031690565b6001600160a01b031614610b6c5760405162461bcd60e51b81526004016107c49061424b565b610b7582611e61565b61098282826001611f73565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c4565b5060008051602061471283398151915290565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610cb65760405162461bcd60e51b815260206004820152602160248201527f5468652063616c6c6572206d7573742062652074686520506f6c696379506f6f6044820152601b60fa1b60648201526084016107c4565b8060cc6000828254610cc891906145d5565b909155505050565b600054610100900460ff1615808015610cf05750600054600160ff909116105b80610d0a5750303b158015610d0a575060005460ff166001145b610d265760405162461bcd60e51b81526004016107c490614297565b6000805460ff191660011790558015610d49576000805461ff0019166101001790555b610d5888888888888888612619565b8015610d9e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2257600080fd5b505afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a9190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401610e89939291906141a9565b60006040518083038186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b50505050610ec16126a9565b604051631e9c0acf60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637a702b3c90610f0f9086908690600401614377565b600060405180830381600087803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b50505050505050565b6000805160206147798339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fae57600080fd5b505afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190613e9b565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b15801561102e57600080fd5b505afa158015611042573d6000803e3d6000fd5b505050506108616126f1565b60cb5460009061106c908290600160901b900463ffffffff1661272e565b905090565b60008061107c611a0a565b905060006110a161109a8360000151876127d790919063ffffffff16565b87906127d7565b905060006110bc8360200151886127d790919063ffffffff16565b9050818111156110d7576110d082826145d5565b90506110db565b5060005b60006110f48460400151896127d790919063ffffffff16565b90506111008284614478565b811115611122576111118284614478565b61111b90826145d5565b9050611126565b5060005b60006111676111606a1a1601fc4ea7109e00000061114b4264ffffffffff8c166145d5565b8860a0015161115a91906145b6565b906128a8565b84906127d7565b9050600061119d6111606a1a1601fc4ea7109e00000061118e4264ffffffffff8d166145d5565b8960c0015161115a91906145b6565b905060006111bb876080015183856111b59190614478565b906127d7565b60608801516111cb9088906127d7565b6111d59190614478565b90506111e18284614478565b6111eb8288614478565b6111f59190614478565b9750505050505050505b9392505050565b6000805160206147328339815191527fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c07f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c27611260836129b0565b61135d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112bd57600080fd5b505afa1580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190613e9b565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050505b60006113887fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06129b0565b1580156113a957506113a76000805160206147328339815191526129b0565b155b905060008660098111156113bf576113bf6146c2565b1415611430578015806113f0575060cb546113f0906113e19061ffff16612ac3565b8667016345785d8a0000612ad9565b61140c5760405162461bcd60e51b81526004016107c4906142e5565b61141585612b5b565b60cb805461ffff191661ffff929092169190911790556119ab565b6001866009811115611444576114446146c2565b14156114b55780158061146c575060cb5461146c906113e19062010000900461ffff16612ac3565b6114885760405162461bcd60e51b81526004016107c4906142e5565b61149185612b5b565b60cb805461ffff92909216620100000263ffff0000199092169190911790556119ab565b60028660098111156114c9576114c96146c2565b141561153e578015806114f2575060cb546114f2906113e190600160201b900461ffff16612ac3565b61150e5760405162461bcd60e51b81526004016107c4906142e5565b61151785612b5b565b60cb805461ffff92909216600160201b0265ffff00000000199092169190911790556119ab565b6003866009811115611552576115526146c2565b14156115c95780158061157b575060cb5461157b906113e190600160301b900461ffff16612ac3565b6115975760405162461bcd60e51b81526004016107c4906142e5565b6115a085612b5b565b60cb805461ffff92909216600160301b0267ffff000000000000199092169190911790556119ab565b60048660098111156115dd576115dd6146c2565b141561165657801580611606575060cb54611606906113e190600160401b900461ffff16612ac3565b6116225760405162461bcd60e51b81526004016107c4906142e5565b61162b85612b5b565b60cb805461ffff92909216600160401b0269ffff0000000000000000199092169190911790556119ab565b600586600981111561166a5761166a6146c2565b14156116de57801580611693575060cb54611693906113e190600160501b900461ffff16612ac3565b6116af5760405162461bcd60e51b81526004016107c4906142e5565b6116b885612b5b565b60cb805461ffff92909216600160501b0261ffff60501b199092169190911790556119ab565b60068660098111156116f2576116f26146c2565b14156117665780158061171b575060cb5461171b906113e190600160601b900461ffff16612ac3565b6117375760405162461bcd60e51b81526004016107c4906142e5565b61174085612b5b565b60cb805461ffff92909216600160601b0261ffff60601b199092169190911790556119ab565b600786600981111561177a5761177a6146c2565b14156117e45780158061179357506117936113e16119eb565b6117af5760405162461bcd60e51b81526004016107c4906142e5565b6117ba600286612b6d565b60cb805463ffffffff92909216600160701b0263ffffffff60701b199092169190911790556119ab565b60088660098111156117f8576117f86146c2565b14156119585760cc5485101561186a5760405162461bcd60e51b815260206004820152603160248201527f43616e277420736574206578706f737572654c696d6974206c657373207468616044820152706e20616374697665206578706f7375726560781b60648201526084016107c4565b80158061187d575061187d6113e161104e565b6118995760405162461bcd60e51b81526004016107c4906142e5565b6118a161104e565b851115806118c157506118c16000805160206147328339815191526129b0565b6119235760405162461bcd60e51b815260206004820152602d60248201527f547765616b2065786365656465643a20496e637265617365207265717569726560448201526c73204c4556454c315f524f4c4560981b60648201526084016107c4565b61192e600086612b6d565b60cb805463ffffffff92909216600160901b0263ffffffff60901b199092169190911790556119ab565b600986600981111561196c5761196c6146c2565b14156119ab5780156119905760405162461bcd60e51b81526004016107c4906142e5565b60cb805461ffff60b01b1916600160b01b61ffff8816021790555b6119e38660098111156119c0576119c06146c2565b6119cb90600b614478565b602a8111156119dc576119dc6146c2565b8683612c07565b505050505050565b60cb5460009061106c90600290600160701b900463ffffffff1661272e565b611a4a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915260cb548190611a679061ffff16612ac3565b815260cb54602090910190611a859062010000900461ffff16612ac3565b815260cb54602090910190611aa490600160201b900461ffff16612ac3565b815260cb54602090910190611ac390600160301b900461ffff16612ac3565b815260cb54602090910190611ae290600160401b900461ffff16612ac3565b815260cb54602090910190611b0190600160501b900461ffff16612ac3565b815260cb54602090910190611b2090600160601b900461ffff16612ac3565b9052919050565b7f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba157600080fd5b505afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401611c08939291906141a9565b60006040518083038186803b158015611c2057600080fd5b505afa158015611c34573d6000803e3d6000fd5b505060cd80546001600160a01b0319166001600160a01b0386169081179091556109829250601591506000612c07565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cbf57600080fd5b505afa158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106c9190613e9b565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7157600080fd5b505afa158015611d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da99190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401611dd8939291906141a9565b60006040518083038186803b158015611df057600080fd5b505afa158015611e04573d6000803e3d6000fd5b50505050611e106126a9565b60405160016259ff1d60e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ffa600e390610f0f9086908690600401614358565b6000805160206147798339815191526000805160206147328339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed857600080fd5b505afa158015611eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f109190613e9b565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b158015611f5f57600080fd5b505afa158015610f3d573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611fab57611fa683612c68565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe457600080fd5b505afa925050508015612014575060408051601f3d908101601f1916820190925261201191810190613e82565b60015b6120775760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c4565b60008051602061471283398151915281146120e65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c4565b50611fa6838383612d04565b6120fa612d2f565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61214c613c11565b6121546126a9565b8686106121a35760405162461bcd60e51b815260206004820181905260248201527f5072656d69756d206d757374206265206c657373207468616e207061796f757460448201526064016107c4565b4264ffffffffff808216908616116121fd5760405162461bcd60e51b815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e207468652066757475726560448201526064016107c4565b60cb54600160b01b900461ffff16610e1061221883886145ec565b61222291906144a4565b64ffffffffff16106122765760405162461bcd60e51b815260206004820152601b60248201527f506f6c6963792065786365656473206d6178206475726174696f6e000000000060448201526064016107c4565b6001600160a01b0384166122cc5760405162461bcd60e51b815260206004820152601e60248201527f437573746f6d65722063616e2774206265207a65726f2061646472657373000060448201526064016107c4565b867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561232657600080fd5b505afa15801561233a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235e9190613e9b565b604051636eb1769f60e11b81526001600160a01b0387811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e9060440160206040518083038186803b1580156123c957600080fd5b505afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190613e82565b10156124655760405162461bcd60e51b815260206004820152602d60248201527f596f75206d75737420616c6c6f7720454e5355524f20746f207472616e73666560448201526c7220746865207072656d69756d60981b60648201526084016107c4565b61246d6119eb565b8811156124d75760405162461bcd60e51b815260206004820152603260248201527f5269736b4d6f64756c653a205061796f7574206973206d6f7265207468616e206044820152716d6178696d756d2070657220706f6c69637960701b60648201526084016107c4565b60006124ee306124e5611a0a565b8a8c8b8b612d78565b9050806020015160cc60008282546125069190614478565b90915550612514905061104e565b60cc5411156125655760405162461bcd60e51b815260206004820152601e60248201527f5269736b4d6f64756c653a20534352206c696d6974206578636565646564000060448201526064016107c4565b60405163048bc3b360e51b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906391787660906125b89085908a908a90600401614394565b602060405180830381600087803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260a9190613e82565b82525098975050505050505050565b600054610100900460ff16158080156126395750600054600160ff909116105b806126535750303b158015612653575060005460ff166001145b61266f5760405162461bcd60e51b81526004016107c490614297565b6000805460ff191660011790558015612692576000805461ff0019166101001790555b61269a613085565b610d5888888888888888613156565b60975460ff16156126ef5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107c4565b565b6126f96126a9565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121273390565b600082612739611c64565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561277157600080fd5b505afa158015612785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a991906140a9565b6127b39190614612565b6127be90600a61450b565b6127ce9063ffffffff84166145b6565b90505b92915050565b60008215806127e4575081155b156127f1575060006127d1565b816128056002670de0b6b3a7640000614490565b612811906000196145d5565b61281b9190614490565b8311156128765760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c4565b670de0b6b3a764000061288a600282614490565b61289484866145b6565b61289e9190614478565b6127ce9190614490565b6000816128f75760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f000000000000000060448201526064016107c4565b6000612904600284614490565b9050670de0b6b3a764000061291b826000196145d5565b6129259190614490565b8411156129805760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c4565b8281612994670de0b6b3a7640000876145b6565b61299e9190614478565b6129a89190614490565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b505afa158015612a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a439190613e9b565b604051632474521560e21b8152600481018490523360248201526001600160a01b0391909116906391d148549060440160206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d19190613e65565b60006127d161ffff8316655af3107a40006145b6565b600082841415612aeb575060016111ff565b83612b025750670de0b6b3a76400008110156111ff565b82612b0f575060006111ff565b82841015612b3e5781670de0b6b3a7640000612b2b85876128a8565b612b3591906145d5565b111590506111ff565b81612b4984866128a8565b612b3590670de0b6b3a76400006145d5565b60006127d1655af3107a400083614490565b600082612b78611c64565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb057600080fd5b505afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be891906140a9565b612bf29190614612565b612bfd90600a61450b565b6127ce9083614490565b612c0f6133b9565b8015612c1e57612c1e836138b2565b82602a811115612c3057612c306146c2565b6040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a2505050565b6001600160a01b0381163b612cd55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c4565b60008051602061471283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612d0d83613a1b565b600082511180612d1a5750805b15611fa657612d298383613a5b565b50505050565b60975460ff166126ef5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107c4565b612d80613c11565b83851115612ddb5760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b60648201526084016107c4565b612de3613c11565b6001600160a01b038816610160820152604081018690526020810185905260a0810184905264ffffffffff42811661018083015283166101a08201528651612e3790612e309086906127d7565b86906127d7565b60c08201526020870151612e4c9086906127d7565b6060820181905260c08201511015612e7c578060c0015181606001818151612e7491906145d5565b905250612e84565b600060608201525b6040870151612e949086906127d7565b6080820152606081015160c0820151612ead9190614478565b81608001511115612ee55780606001518160c00151612ecc9190614478565b81608001818151612edd91906145d5565b905250612eed565b600060808201525b612f366301e13380826101800151836101a00151612f0b91906145ec565b64ffffffffff168960a00151612f2191906145b6565b612f2b9190614490565b6060830151906127d7565b6101208201526101808101516101a0820151612f87916301e1338091612f5c91906145ec565b64ffffffffff168960c00151612f7291906145b6565b612f7c9190614490565b6080830151906127d7565b6101408201819052610120820151600091612fa191614478565b9050612fba8860800151826127d790919063ffffffff16565b606089015160c0840151612fcd916127d7565b612fd79190614478565b60e0830181905260c083015188918391612ff19190614478565b612ffb9190614478565b11156130495760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d0000000000000060448201526064016107c4565b8160e00151818360c001518961305f91906145d5565b61306991906145d5565b61307391906145d5565b61010083015250979650505050505050565b600054610100900460ff16158080156130a55750600054600160ff909116105b806130bf5750303b1580156130bf575060005460ff166001145b6130db5760405162461bcd60e51b81526004016107c490614297565b6000805460ff1916600117905580156130fe576000805461ff0019166101001790555b613106613b4f565b61310e613b76565b8015610861576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054610100900460ff16158080156131765750600054600160ff909116105b806131905750303b158015613190575060005460ff166001145b6131ac5760405162461bcd60e51b81526004016107c490614297565b6000805460ff1916600117905580156131cf576000805461ff0019166101001790555b87516131e29060ca9060208b0190613c97565b50604080516101408101825261271081526000602082015290810161320689612b5b565b61ffff16815260200161321888612b5b565b61ffff168152600060208201819052604082015260600161323887612b5b565b61ffff16815260200161324c600287612b6d565b63ffffffff168152602001613262600086612b6d565b63ffffffff9081168252612238602092830152825160cb80549385015160408601516060870151608088015160a089015160c08a015160e08b01516101008c0151610120909c015161ffff998a1663ffffffff19909c169b909b1762010000978a16979097029690961767ffffffff000000001916600160201b9589169590950267ffff000000000000191694909417600160301b93881693909302929092176bffffffff00000000000000001916600160401b9187169190910261ffff60501b191617600160501b918616919091021765ffffffffffff60601b1916600160601b9185169190910263ffffffff60701b191617600160701b918516919091021765ffffffffffff60901b1916600160901b959093169490940261ffff60b01b191691909117600160b01b9190921602179055600060cc5560cd80546001600160a01b0319166001600160a01b038416179055610d585b60cb546127106201000090910461ffff1611156134245760405162461bcd60e51b815260206004820152602360248201527f56616c69646174696f6e3a206a72436f6c6c526174696f206d757374206265206044820152623c3d3160e81b60648201526084016107c4565b60cb54612710600160201b90910461ffff1611801590613450575060cb54600160201b900461ffff1615155b6134a65760405162461bcd60e51b815260206004820152602160248201527f56616c69646174696f6e3a20636f6c6c526174696f206d757374206265203c3d6044820152603160f81b60648201526084016107c4565b60cb5461ffff6201000082048116600160201b9092041610156135175760405162461bcd60e51b8152602060048201526024808201527f56616c69646174696f6e3a20636f6c6c526174696f203e3d206a72436f6c6c526044820152636174696f60e01b60648201526084016107c4565b60cb54619c4061ffff9091161180159061353b575060cb5461138861ffff90911610155b6135875760405162461bcd60e51b815260206004820181905260248201527f56616c69646174696f6e3a206d6f63206d757374206265205b302e352c20345d60448201526064016107c4565b60cb54612710600160301b90910461ffff1611156135f35760405162461bcd60e51b8152602060048201526024808201527f56616c69646174696f6e3a20656e7375726f5070466565206d757374206265206044820152633c3d203160e01b60648201526084016107c4565b60cb54612710600160401b90910461ffff1611156136615760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a20656e7375726f436f63466565206d757374206265604482015264203c3d203160d81b60648201526084016107c4565b60cb54612710600160601b90910461ffff1611156136cf5760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a207372526f63206d757374206265203c3d20312028604482015264313030252960d81b60648201526084016107c4565b60cb54612710600160501b90910461ffff16111561373d5760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a206a72526f63206d757374206265203c3d20312028604482015264313030252960d81b60648201526084016107c4565b60cc5461374861104e565b10156137c75760405162461bcd60e51b815260206004820152604260248201527f56616c69646174696f6e3a206578706f737572654c696d69742063616e27742060448201527f6265206c657373207468616e2061637475616c206163746976654578706f7375606482015261726560f01b608482015260a4016107c4565b60cb54600160901b900463ffffffff16158015906137f3575060cb54600160701b900463ffffffff1615155b6138495760405162461bcd60e51b815260206004820152602160248201527f4578706f7375726520616e64204d61785061796f7574206d757374206265203e6044820152600360fc1b60648201526084016107c4565b60cd546001600160a01b03166126ef5760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a2057616c6c65742063616e2774206265207a65726f604482015267206164647265737360c01b60648201526084016107c4565b6000600182602a8111156138c8576138c86146c2565b6138d29190614612565b60c954600160ff929092169190911b915062015180906138f99064ffffffffff16426145ec565b64ffffffffff16111561393b5760c9805466ffffffffffffff8316600160281b026bffffffffffffffffffffffff1990911664ffffffffff4216171790555050565b60c954600160281b9004811666ffffffffffffff1661399d5760c9805464ffffffffff421664ffffffffff1966ffffffffffffff808616600160281b808604929092161702166bffffffffffffffffffffffff19909216919091171790555050565b60405162461bcd60e51b815260206004820152604760248201527f596f7520616c726561647920747765616b6564207468697320706172616d657460448201527f657220726563656e746c792e2057616974206265666f726520747765616b696e606482015266339030b3b0b4b760c91b608482015260a4016107c4565b613a2481612c68565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613ac35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107c4565b600080846001600160a01b031684604051613ade919061418d565b600060405180830381855af49150503d8060008114613b19576040519150601f19603f3d011682016040523d82523d6000602084013e613b1e565b606091505b5091509150613b46828260405180606001604052806027815260200161475260279139613ba5565b95945050505050565b600054610100900460ff166126ef5760405162461bcd60e51b81526004016107c49061430d565b600054610100900460ff16613b9d5760405162461bcd60e51b81526004016107c49061430d565b6126ef613bde565b60608315613bb45750816111ff565b825115613bc45782518084602001fd5b8160405162461bcd60e51b81526004016107c491906141cc565b600054610100900460ff16613c055760405162461bcd60e51b81526004016107c49061430d565b6097805460ff19169055565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b828054613ca390614661565b90600052602060002090601f016020900481019282613cc55760008555613d0b565b82601f10613cde57805160ff1916838001178555613d0b565b82800160010185558215613d0b579182015b82811115613d0b578251825591602001919060010190613cf0565b50613d17929150613d1b565b5090565b5b80821115613d175760008155600101613d1c565b600067ffffffffffffffff80841115613d4b57613d4b6146d8565b604051601f8501601f19908116603f01168101908282118183101715613d7357613d736146d8565b81604052809350858152868686011115613d8c57600080fd5b858560208301376000602087830101525050509392505050565b8035613db1816146ee565b919050565b60006101c08284031215613dc957600080fd5b50919050565b803564ffffffffff81168114613db157600080fd5b600060208284031215613df657600080fd5b81356111ff816146ee565b60008060408385031215613e1457600080fd5b8235613e1f816146ee565b9150602083013567ffffffffffffffff811115613e3b57600080fd5b8301601f81018513613e4c57600080fd5b613e5b85823560208401613d30565b9150509250929050565b600060208284031215613e7757600080fd5b81516111ff81614703565b600060208284031215613e9457600080fd5b5051919050565b600060208284031215613ead57600080fd5b81516111ff816146ee565b60008060408385031215613ecb57600080fd5b8235600a8110613eda57600080fd5b946020939093013593505050565b600080600080600080600060e0888a031215613f0357600080fd5b873567ffffffffffffffff811115613f1a57600080fd5b8801601f81018a13613f2b57600080fd5b613f3a8a823560208401613d30565b9750506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135613f6e816146ee565b8091505092959891949750929550565b6000806101e08385031215613f9257600080fd5b613f9c8484613db6565b91506101c0830135613fad81614703565b809150509250929050565b6000806101e08385031215613fcc57600080fd5b613fd68484613db6565b946101c0939093013593505050565b600060208284031215613ff757600080fd5b5035919050565b60008060008060008060c0878903121561401757600080fd5b86359550602087013594506040870135935061403560608801613dcf565b92506080870135614045816146ee565b915060a08701356bffffffffffffffffffffffff8116811461406657600080fd5b809150509295509295509295565b60008060006060848603121561408957600080fd5b83359250602084013591506140a060408501613dcf565b90509250925092565b6000602082840312156140bb57600080fd5b815160ff811681146111ff57600080fd5b803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e0830152610100808201358184015250610120808201358184015250610140808201358184015250610160614148818301613da6565b6001600160a01b031690830152610180614163828201613dcf565b64ffffffffff16908301526101a061417c828201613dcf565b64ffffffffff811684830152612d29565b6000825161419f818460208701614635565b9190910192915050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60208152600082518060208401526141eb816040850160208701614635565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600e908201526d151dd9585ac8195e18d95959195960921b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101e0810161436782856140cc565b8215156101c08301529392505050565b6101e0810161438682856140cc565b826101c08301529392505050565b600061020082019050845182526020850151602083015260408501516040830152606085015160608301526080850151608083015260a085015160a083015260c085015160c083015260e085015160e083015261010080860151818401525061012080860151818401525061014080860151818401525061016080860151614426828501826001600160a01b03169052565b50506101808581015164ffffffffff908116918401919091526101a09586015116948201949094526001600160a01b03929092166101c08301526bffffffffffffffffffffffff166101e09091015290565b6000821982111561448b5761448b614696565b500190565b60008261449f5761449f6146ac565b500490565b600064ffffffffff808416806144bc576144bc6146ac565b92169190910492915050565b600181815b808511156145035781600019048211156144e9576144e9614696565b808516156144f657918102915b93841c93908002906144cd565b509250929050565b60006127ce60ff841683600082614524575060016127d1565b81614531575060006127d1565b816001811461454757600281146145515761456d565b60019150506127d1565b60ff84111561456257614562614696565b50506001821b6127d1565b5060208310610133831016604e8410600b8410161715614590575081810a6127d1565b61459a83836144c8565b80600019048211156145ae576145ae614696565b029392505050565b60008160001904831182151516156145d0576145d0614696565b500290565b6000828210156145e7576145e7614696565b500390565b600064ffffffffff8381169083168181101561460a5761460a614696565b039392505050565b600060ff821660ff84168082101561462c5761462c614696565b90039392505050565b60005b83811015614650578181015183820152602001614638565b83811115612d295750506000910152565b600181811c9082168061467557607f821691505b60208210811415613dc957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461086157600080fd5b801515811461086157600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220aec1cfde8bc91d90c5c76c7d872a7c3e6dbfcef10a78d4f5e1912bd6277cf0cf64736f6c63430008060033",
846
+ "deployedBytecode": "0x6080604052600436106101ee5760003560e01c806373a952e81161010d578063a9a24f27116100a0578063deaa59df1161006f578063deaa59df1461063e578063e5a6b10f1461065e578063f67b2bad14610673578063fbb8127914610695578063ffa600e3146106c957600080fd5b8063a9a24f271461056a578063c1cca2b31461059e578063cfd4c606146105be578063cff0ab96146105d357600080fd5b80637ff8bf25116100dc5780637ff8bf251461050b5780638456cb591461052057806385272a6e146105355780638bac3a241461054a57600080fd5b806373a952e81461045757806378fab2601461048a5780637a702b3c146104be5780637ed5acfa146104de57600080fd5b80634f1ef286116101855780635c975abb116101545780635c975abb146103d45780636a448ef1146103f75780636db5c8fd146104175780636f0dbe6f1461043757600080fd5b80634f1ef2861461035a578063521eb2731461036d57806352d1902d1461038b5780635b494dd5146103a057600080fd5b8063406f7f6f116101c1578063406f7f6f14610285578063468a8c9f146102a55780634a47a3e0146102df5780634d15eb031461031357600080fd5b806306fdde03146101f357806324ea54f41461021e5780633659cfe61461024e5780633f4ba83a14610270575b600080fd5b3480156101ff57600080fd5b506102086106e9565b60405161021591906141cc565b60405180910390f35b34801561022a57600080fd5b5061024060008051602061477983398151915281565b604051908152602001610215565b34801561025a57600080fd5b5061026e610269366004613de4565b61077b565b005b34801561027c57600080fd5b5061026e610864565b34801561029157600080fd5b506102406102a0366004613ffe565b610986565b3480156102b157600080fd5b5060c9546040805164ffffffffff83168152600160281b90920466ffffffffffffff16602083015201610215565b3480156102eb57600080fd5b506102407fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561031f57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610215565b61026e610368366004613e01565b610ab4565b34801561037957600080fd5b5060cd546001600160a01b0316610342565b34801561039757600080fd5b50610240610b81565b3480156103ac57600080fd5b506102407f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156103e057600080fd5b5060975460ff166040519015158152602001610215565b34801561040357600080fd5b5061026e610412366004613fe5565b610c34565b34801561042357600080fd5b5060cb54600160b01b900461ffff16610240565b34801561044357600080fd5b5061026e610452366004613ee8565b610cd0565b34801561046357600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610342565b34801561049657600080fd5b506102407f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb181565b3480156104ca57600080fd5b5061026e6104d9366004613fb8565b610da8565b3480156104ea57600080fd5b506104f56201518081565b60405164ffffffffff9091168152602001610215565b34801561051757600080fd5b5060cc54610240565b34801561052c57600080fd5b5061026e610f46565b34801561054157600080fd5b5061024061104e565b34801561055657600080fd5b50610240610565366004614074565b611071565b34801561057657600080fd5b506102407f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad181565b3480156105aa57600080fd5b5061026e6105b9366004613eb8565b611206565b3480156105ca57600080fd5b506102406119eb565b3480156105df57600080fd5b506105e8611a0a565b6040516102159190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b34801561064a57600080fd5b5061026e610659366004613de4565b611b27565b34801561066a57600080fd5b50610342611c64565b34801561067f57600080fd5b5061024060008051602061473283398151915281565b3480156106a157600080fd5b506102407fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a81565b3480156106d557600080fd5b5061026e6106e4366004613f7e565b611cf7565b606060ca80546106f890614661565b80601f016020809104026020016040519081016040528092919081815260200182805461072490614661565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107cd5760405162461bcd60e51b81526004016107c4906141ff565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610816600080516020614712833981519152546001600160a01b031690565b6001600160a01b03161461083c5760405162461bcd60e51b81526004016107c49061424b565b61084581611e61565b6040805160008082526020820190925261086191839190611f73565b50565b6000805160206147798339815191526000805160206147328339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108db57600080fd5b505afa1580156108ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109139190613e9b565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561096257600080fd5b505afa158015610976573d6000803e3d6000fd5b505050506109826120f2565b5050565b60007fc6823861ee2bb2198ce6b1fd6faf4c8f44f745bc804aca4a762f67e0d507fd8a7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3a9190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401610a69939291906141a9565b60006040518083038186803b158015610a8157600080fd5b505afa158015610a95573d6000803e3d6000fd5b50505050610aa7888888888888612144565b5198975050505050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610afd5760405162461bcd60e51b81526004016107c4906141ff565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b46600080516020614712833981519152546001600160a01b031690565b6001600160a01b031614610b6c5760405162461bcd60e51b81526004016107c49061424b565b610b7582611e61565b61098282826001611f73565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c215760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c4565b5060008051602061471283398151915290565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610cb65760405162461bcd60e51b815260206004820152602160248201527f5468652063616c6c6572206d7573742062652074686520506f6c696379506f6f6044820152601b60fa1b60648201526084016107c4565b8060cc6000828254610cc891906145d5565b909155505050565b600054610100900460ff1615808015610cf05750600054600160ff909116105b80610d0a5750303b158015610d0a575060005460ff166001145b610d265760405162461bcd60e51b81526004016107c490614297565b6000805460ff191660011790558015610d49576000805461ff0019166101001790555b610d5888888888888888612619565b8015610d9e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2257600080fd5b505afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a9190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401610e89939291906141a9565b60006040518083038186803b158015610ea157600080fd5b505afa158015610eb5573d6000803e3d6000fd5b50505050610ec16126a9565b604051631e9c0acf60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637a702b3c90610f0f9086908690600401614377565b600060405180830381600087803b158015610f2957600080fd5b505af1158015610f3d573d6000803e3d6000fd5b50505050505050565b6000805160206147798339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fae57600080fd5b505afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190613e9b565b6040516312d9a6ad60e01b8152600481018390523360248201526001600160a01b0391909116906312d9a6ad9060440160006040518083038186803b15801561102e57600080fd5b505afa158015611042573d6000803e3d6000fd5b505050506108616126f1565b60cb5460009061106c908290600160901b900463ffffffff1661272e565b905090565b60008061107c611a0a565b905060006110a161109a8360000151876127d790919063ffffffff16565b87906127d7565b905060006110bc8360200151886127d790919063ffffffff16565b9050818111156110d7576110d082826145d5565b90506110db565b5060005b60006110f48460400151896127d790919063ffffffff16565b90506111008284614478565b811115611122576111118284614478565b61111b90826145d5565b9050611126565b5060005b60006111676111606a1a1601fc4ea7109e00000061114b4264ffffffffff8c166145d5565b8860a0015161115a91906145b6565b906128a8565b84906127d7565b9050600061119d6111606a1a1601fc4ea7109e00000061118e4264ffffffffff8d166145d5565b8960c0015161115a91906145b6565b905060006111bb876080015183856111b59190614478565b906127d7565b60608801516111cb9088906127d7565b6111d59190614478565b90506111e18284614478565b6111eb8288614478565b6111f59190614478565b9750505050505050505b9392505050565b6000805160206147328339815191527fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c07f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c27611260836129b0565b61135d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112bd57600080fd5b505afa1580156112d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f59190613e9b565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050505b60006113887fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c06129b0565b1580156113a957506113a76000805160206147328339815191526129b0565b155b905060008660098111156113bf576113bf6146c2565b1415611430578015806113f0575060cb546113f0906113e19061ffff16612ac3565b8667016345785d8a0000612ad9565b61140c5760405162461bcd60e51b81526004016107c4906142e5565b61141585612b5b565b60cb805461ffff191661ffff929092169190911790556119ab565b6001866009811115611444576114446146c2565b14156114b55780158061146c575060cb5461146c906113e19062010000900461ffff16612ac3565b6114885760405162461bcd60e51b81526004016107c4906142e5565b61149185612b5b565b60cb805461ffff92909216620100000263ffff0000199092169190911790556119ab565b60028660098111156114c9576114c96146c2565b141561153e578015806114f2575060cb546114f2906113e190600160201b900461ffff16612ac3565b61150e5760405162461bcd60e51b81526004016107c4906142e5565b61151785612b5b565b60cb805461ffff92909216600160201b0265ffff00000000199092169190911790556119ab565b6003866009811115611552576115526146c2565b14156115c95780158061157b575060cb5461157b906113e190600160301b900461ffff16612ac3565b6115975760405162461bcd60e51b81526004016107c4906142e5565b6115a085612b5b565b60cb805461ffff92909216600160301b0267ffff000000000000199092169190911790556119ab565b60048660098111156115dd576115dd6146c2565b141561165657801580611606575060cb54611606906113e190600160401b900461ffff16612ac3565b6116225760405162461bcd60e51b81526004016107c4906142e5565b61162b85612b5b565b60cb805461ffff92909216600160401b0269ffff0000000000000000199092169190911790556119ab565b600586600981111561166a5761166a6146c2565b14156116de57801580611693575060cb54611693906113e190600160501b900461ffff16612ac3565b6116af5760405162461bcd60e51b81526004016107c4906142e5565b6116b885612b5b565b60cb805461ffff92909216600160501b0261ffff60501b199092169190911790556119ab565b60068660098111156116f2576116f26146c2565b14156117665780158061171b575060cb5461171b906113e190600160601b900461ffff16612ac3565b6117375760405162461bcd60e51b81526004016107c4906142e5565b61174085612b5b565b60cb805461ffff92909216600160601b0261ffff60601b199092169190911790556119ab565b600786600981111561177a5761177a6146c2565b14156117e45780158061179357506117936113e16119eb565b6117af5760405162461bcd60e51b81526004016107c4906142e5565b6117ba600286612b6d565b60cb805463ffffffff92909216600160701b0263ffffffff60701b199092169190911790556119ab565b60088660098111156117f8576117f86146c2565b14156119585760cc5485101561186a5760405162461bcd60e51b815260206004820152603160248201527f43616e277420736574206578706f737572654c696d6974206c657373207468616044820152706e20616374697665206578706f7375726560781b60648201526084016107c4565b80158061187d575061187d6113e161104e565b6118995760405162461bcd60e51b81526004016107c4906142e5565b6118a161104e565b851115806118c157506118c16000805160206147328339815191526129b0565b6119235760405162461bcd60e51b815260206004820152602d60248201527f547765616b2065786365656465643a20496e637265617365207265717569726560448201526c73204c4556454c315f524f4c4560981b60648201526084016107c4565b61192e600086612b6d565b60cb805463ffffffff92909216600160901b0263ffffffff60901b199092169190911790556119ab565b600986600981111561196c5761196c6146c2565b14156119ab5780156119905760405162461bcd60e51b81526004016107c4906142e5565b60cb805461ffff60b01b1916600160b01b61ffff8816021790555b6119e38660098111156119c0576119c06146c2565b6119cb90600b614478565b602a8111156119dc576119dc6146c2565b8683612c07565b505050505050565b60cb5460009061106c90600290600160701b900463ffffffff1661272e565b611a4a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160e0810190915260cb548190611a679061ffff16612ac3565b815260cb54602090910190611a859062010000900461ffff16612ac3565b815260cb54602090910190611aa490600160201b900461ffff16612ac3565b815260cb54602090910190611ac390600160301b900461ffff16612ac3565b815260cb54602090910190611ae290600160401b900461ffff16612ac3565b815260cb54602090910190611b0190600160501b900461ffff16612ac3565b815260cb54602090910190611b2090600160601b900461ffff16612ac3565b9052919050565b7f0df0a8869cf58168a14cd7ac426ff1b8c6ff5d5c800c6f44803f3431dcb3bad17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba157600080fd5b505afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401611c08939291906141a9565b60006040518083038186803b158015611c2057600080fd5b505afa158015611c34573d6000803e3d6000fd5b505060cd80546001600160a01b0319166001600160a01b0386169081179091556109829250601591506000612c07565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cbf57600080fd5b505afa158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106c9190613e9b565b7f92a19c77d2ea87c7f81d50c74403cb2f401780f3ad919571121efe2bdb427eb17f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7157600080fd5b505afa158015611d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da99190613e9b565b6001600160a01b0316639fc094023083336040518463ffffffff1660e01b8152600401611dd8939291906141a9565b60006040518083038186803b158015611df057600080fd5b505afa158015611e04573d6000803e3d6000fd5b50505050611e106126a9565b60405160016259ff1d60e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ffa600e390610f0f9086908690600401614358565b6000805160206147798339815191526000805160206147328339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed857600080fd5b505afa158015611eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f109190613e9b565b60405163c5b8f5cf60e01b815260048101849052602481018390523360448201526001600160a01b03919091169063c5b8f5cf9060640160006040518083038186803b158015611f5f57600080fd5b505afa158015610f3d573d6000803e3d6000fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611fab57611fa683612c68565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe457600080fd5b505afa925050508015612014575060408051601f3d908101601f1916820190925261201191810190613e82565b60015b6120775760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c4565b60008051602061471283398151915281146120e65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c4565b50611fa6838383612d04565b6120fa612d2f565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61214c613c11565b6121546126a9565b8686106121a35760405162461bcd60e51b815260206004820181905260248201527f5072656d69756d206d757374206265206c657373207468616e207061796f757460448201526064016107c4565b4264ffffffffff808216908616116121fd5760405162461bcd60e51b815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e207468652066757475726560448201526064016107c4565b60cb54600160b01b900461ffff16610e1061221883886145ec565b61222291906144a4565b64ffffffffff16106122765760405162461bcd60e51b815260206004820152601b60248201527f506f6c6963792065786365656473206d6178206475726174696f6e000000000060448201526064016107c4565b6001600160a01b0384166122cc5760405162461bcd60e51b815260206004820152601e60248201527f437573746f6d65722063616e2774206265207a65726f2061646472657373000060448201526064016107c4565b867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561232657600080fd5b505afa15801561233a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235e9190613e9b565b604051636eb1769f60e11b81526001600160a01b0387811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e9060440160206040518083038186803b1580156123c957600080fd5b505afa1580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190613e82565b10156124655760405162461bcd60e51b815260206004820152602d60248201527f596f75206d75737420616c6c6f7720454e5355524f20746f207472616e73666560448201526c7220746865207072656d69756d60981b60648201526084016107c4565b61246d6119eb565b8811156124d75760405162461bcd60e51b815260206004820152603260248201527f5269736b4d6f64756c653a205061796f7574206973206d6f7265207468616e206044820152716d6178696d756d2070657220706f6c69637960701b60648201526084016107c4565b60006124ee306124e5611a0a565b8a8c8b8b612d78565b9050806020015160cc60008282546125069190614478565b90915550612514905061104e565b60cc5411156125655760405162461bcd60e51b815260206004820152601e60248201527f5269736b4d6f64756c653a20534352206c696d6974206578636565646564000060448201526064016107c4565b60405163048bc3b360e51b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906391787660906125b89085908a908a90600401614394565b602060405180830381600087803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260a9190613e82565b82525098975050505050505050565b600054610100900460ff16158080156126395750600054600160ff909116105b806126535750303b158015612653575060005460ff166001145b61266f5760405162461bcd60e51b81526004016107c490614297565b6000805460ff191660011790558015612692576000805461ff0019166101001790555b61269a613085565b610d5888888888888888613156565b60975460ff16156126ef5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107c4565b565b6126f96126a9565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121273390565b600082612739611c64565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561277157600080fd5b505afa158015612785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a991906140a9565b6127b39190614612565b6127be90600a61450b565b6127ce9063ffffffff84166145b6565b90505b92915050565b60008215806127e4575081155b156127f1575060006127d1565b816128056002670de0b6b3a7640000614490565b612811906000196145d5565b61281b9190614490565b8311156128765760405162461bcd60e51b8152602060048201526024808201527f7761644d756c3a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c4565b670de0b6b3a764000061288a600282614490565b61289484866145b6565b61289e9190614478565b6127ce9190614490565b6000816128f75760405162461bcd60e51b815260206004820152601860248201527f7761644469763a204469766973696f6e206279207a65726f000000000000000060448201526064016107c4565b6000612904600284614490565b9050670de0b6b3a764000061291b826000196145d5565b6129259190614490565b8411156129805760405162461bcd60e51b8152602060048201526024808201527f7761644469763a204d617468204d756c7469706c69636174696f6e204f766572604482015263666c6f7760e01b60648201526084016107c4565b8281612994670de0b6b3a7640000876145b6565b61299e9190614478565b6129a89190614490565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379502c556040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b505afa158015612a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a439190613e9b565b604051632474521560e21b8152600481018490523360248201526001600160a01b0391909116906391d148549060440160206040518083038186803b158015612a8b57600080fd5b505afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d19190613e65565b60006127d161ffff8316655af3107a40006145b6565b600082841415612aeb575060016111ff565b83612b025750670de0b6b3a76400008110156111ff565b82612b0f575060006111ff565b82841015612b3e5781670de0b6b3a7640000612b2b85876128a8565b612b3591906145d5565b111590506111ff565b81612b4984866128a8565b612b3590670de0b6b3a76400006145d5565b60006127d1655af3107a400083614490565b600082612b78611c64565b6001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb057600080fd5b505afa158015612bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be891906140a9565b612bf29190614612565b612bfd90600a61450b565b6127ce9083614490565b612c0f6133b9565b8015612c1e57612c1e836138b2565b82602a811115612c3057612c306146c2565b6040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a2505050565b6001600160a01b0381163b612cd55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c4565b60008051602061471283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612d0d83613a1b565b600082511180612d1a5750805b15611fa657612d298383613a5b565b50505050565b60975460ff166126ef5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107c4565b612d80613c11565b83851115612ddb5760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b60648201526084016107c4565b612de3613c11565b6001600160a01b038816610160820152604081018690526020810185905260a0810184905264ffffffffff42811661018083015283166101a08201528651612e3790612e309086906127d7565b86906127d7565b60c08201526020870151612e4c9086906127d7565b6060820181905260c08201511015612e7c578060c0015181606001818151612e7491906145d5565b905250612e84565b600060608201525b6040870151612e949086906127d7565b6080820152606081015160c0820151612ead9190614478565b81608001511115612ee55780606001518160c00151612ecc9190614478565b81608001818151612edd91906145d5565b905250612eed565b600060808201525b612f366301e13380826101800151836101a00151612f0b91906145ec565b64ffffffffff168960a00151612f2191906145b6565b612f2b9190614490565b6060830151906127d7565b6101208201526101808101516101a0820151612f87916301e1338091612f5c91906145ec565b64ffffffffff168960c00151612f7291906145b6565b612f7c9190614490565b6080830151906127d7565b6101408201819052610120820151600091612fa191614478565b9050612fba8860800151826127d790919063ffffffff16565b606089015160c0840151612fcd916127d7565b612fd79190614478565b60e0830181905260c083015188918391612ff19190614478565b612ffb9190614478565b11156130495760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d0000000000000060448201526064016107c4565b8160e00151818360c001518961305f91906145d5565b61306991906145d5565b61307391906145d5565b61010083015250979650505050505050565b600054610100900460ff16158080156130a55750600054600160ff909116105b806130bf5750303b1580156130bf575060005460ff166001145b6130db5760405162461bcd60e51b81526004016107c490614297565b6000805460ff1916600117905580156130fe576000805461ff0019166101001790555b613106613b4f565b61310e613b76565b8015610861576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054610100900460ff16158080156131765750600054600160ff909116105b806131905750303b158015613190575060005460ff166001145b6131ac5760405162461bcd60e51b81526004016107c490614297565b6000805460ff1916600117905580156131cf576000805461ff0019166101001790555b87516131e29060ca9060208b0190613c97565b50604080516101408101825261271081526000602082015290810161320689612b5b565b61ffff16815260200161321888612b5b565b61ffff168152600060208201819052604082015260600161323887612b5b565b61ffff16815260200161324c600287612b6d565b63ffffffff168152602001613262600086612b6d565b63ffffffff9081168252612238602092830152825160cb80549385015160408601516060870151608088015160a089015160c08a015160e08b01516101008c0151610120909c015161ffff998a1663ffffffff19909c169b909b1762010000978a16979097029690961767ffffffff000000001916600160201b9589169590950267ffff000000000000191694909417600160301b93881693909302929092176bffffffff00000000000000001916600160401b9187169190910261ffff60501b191617600160501b918616919091021765ffffffffffff60601b1916600160601b9185169190910263ffffffff60701b191617600160701b918516919091021765ffffffffffff60901b1916600160901b959093169490940261ffff60b01b191691909117600160b01b9190921602179055600060cc5560cd80546001600160a01b0319166001600160a01b038416179055610d585b60cb546127106201000090910461ffff1611156134245760405162461bcd60e51b815260206004820152602360248201527f56616c69646174696f6e3a206a72436f6c6c526174696f206d757374206265206044820152623c3d3160e81b60648201526084016107c4565b60cb54612710600160201b90910461ffff1611801590613450575060cb54600160201b900461ffff1615155b6134a65760405162461bcd60e51b815260206004820152602160248201527f56616c69646174696f6e3a20636f6c6c526174696f206d757374206265203c3d6044820152603160f81b60648201526084016107c4565b60cb5461ffff6201000082048116600160201b9092041610156135175760405162461bcd60e51b8152602060048201526024808201527f56616c69646174696f6e3a20636f6c6c526174696f203e3d206a72436f6c6c526044820152636174696f60e01b60648201526084016107c4565b60cb54619c4061ffff9091161180159061353b575060cb5461138861ffff90911610155b6135875760405162461bcd60e51b815260206004820181905260248201527f56616c69646174696f6e3a206d6f63206d757374206265205b302e352c20345d60448201526064016107c4565b60cb54612710600160301b90910461ffff1611156135f35760405162461bcd60e51b8152602060048201526024808201527f56616c69646174696f6e3a20656e7375726f5070466565206d757374206265206044820152633c3d203160e01b60648201526084016107c4565b60cb54612710600160401b90910461ffff1611156136615760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a20656e7375726f436f63466565206d757374206265604482015264203c3d203160d81b60648201526084016107c4565b60cb54612710600160601b90910461ffff1611156136cf5760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a207372526f63206d757374206265203c3d20312028604482015264313030252960d81b60648201526084016107c4565b60cb54612710600160501b90910461ffff16111561373d5760405162461bcd60e51b815260206004820152602560248201527f56616c69646174696f6e3a206a72526f63206d757374206265203c3d20312028604482015264313030252960d81b60648201526084016107c4565b60cc5461374861104e565b10156137c75760405162461bcd60e51b815260206004820152604260248201527f56616c69646174696f6e3a206578706f737572654c696d69742063616e27742060448201527f6265206c657373207468616e2061637475616c206163746976654578706f7375606482015261726560f01b608482015260a4016107c4565b60cb54600160901b900463ffffffff16158015906137f3575060cb54600160701b900463ffffffff1615155b6138495760405162461bcd60e51b815260206004820152602160248201527f4578706f7375726520616e64204d61785061796f7574206d757374206265203e6044820152600360fc1b60648201526084016107c4565b60cd546001600160a01b03166126ef5760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a2057616c6c65742063616e2774206265207a65726f604482015267206164647265737360c01b60648201526084016107c4565b6000600182602a8111156138c8576138c86146c2565b6138d29190614612565b60c954600160ff929092169190911b915062015180906138f99064ffffffffff16426145ec565b64ffffffffff16111561393b5760c9805466ffffffffffffff8316600160281b026bffffffffffffffffffffffff1990911664ffffffffff4216171790555050565b60c954600160281b9004811666ffffffffffffff1661399d5760c9805464ffffffffff421664ffffffffff1966ffffffffffffff808616600160281b808604929092161702166bffffffffffffffffffffffff19909216919091171790555050565b60405162461bcd60e51b815260206004820152604760248201527f596f7520616c726561647920747765616b6564207468697320706172616d657460448201527f657220726563656e746c792e2057616974206265666f726520747765616b696e606482015266339030b3b0b4b760c91b608482015260a4016107c4565b613a2481612c68565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b613ac35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107c4565b600080846001600160a01b031684604051613ade919061418d565b600060405180830381855af49150503d8060008114613b19576040519150601f19603f3d011682016040523d82523d6000602084013e613b1e565b606091505b5091509150613b46828260405180606001604052806027815260200161475260279139613ba5565b95945050505050565b600054610100900460ff166126ef5760405162461bcd60e51b81526004016107c49061430d565b600054610100900460ff16613b9d5760405162461bcd60e51b81526004016107c49061430d565b6126ef613bde565b60608315613bb45750816111ff565b825115613bc45782518084602001fd5b8160405162461bcd60e51b81526004016107c491906141cc565b600054610100900460ff16613c055760405162461bcd60e51b81526004016107c49061430d565b6097805460ff19169055565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b828054613ca390614661565b90600052602060002090601f016020900481019282613cc55760008555613d0b565b82601f10613cde57805160ff1916838001178555613d0b565b82800160010185558215613d0b579182015b82811115613d0b578251825591602001919060010190613cf0565b50613d17929150613d1b565b5090565b5b80821115613d175760008155600101613d1c565b600067ffffffffffffffff80841115613d4b57613d4b6146d8565b604051601f8501601f19908116603f01168101908282118183101715613d7357613d736146d8565b81604052809350858152868686011115613d8c57600080fd5b858560208301376000602087830101525050509392505050565b8035613db1816146ee565b919050565b60006101c08284031215613dc957600080fd5b50919050565b803564ffffffffff81168114613db157600080fd5b600060208284031215613df657600080fd5b81356111ff816146ee565b60008060408385031215613e1457600080fd5b8235613e1f816146ee565b9150602083013567ffffffffffffffff811115613e3b57600080fd5b8301601f81018513613e4c57600080fd5b613e5b85823560208401613d30565b9150509250929050565b600060208284031215613e7757600080fd5b81516111ff81614703565b600060208284031215613e9457600080fd5b5051919050565b600060208284031215613ead57600080fd5b81516111ff816146ee565b60008060408385031215613ecb57600080fd5b8235600a8110613eda57600080fd5b946020939093013593505050565b600080600080600080600060e0888a031215613f0357600080fd5b873567ffffffffffffffff811115613f1a57600080fd5b8801601f81018a13613f2b57600080fd5b613f3a8a823560208401613d30565b9750506020880135955060408801359450606088013593506080880135925060a0880135915060c0880135613f6e816146ee565b8091505092959891949750929550565b6000806101e08385031215613f9257600080fd5b613f9c8484613db6565b91506101c0830135613fad81614703565b809150509250929050565b6000806101e08385031215613fcc57600080fd5b613fd68484613db6565b946101c0939093013593505050565b600060208284031215613ff757600080fd5b5035919050565b60008060008060008060c0878903121561401757600080fd5b86359550602087013594506040870135935061403560608801613dcf565b92506080870135614045816146ee565b915060a08701356bffffffffffffffffffffffff8116811461406657600080fd5b809150509295509295509295565b60008060006060848603121561408957600080fd5b83359250602084013591506140a060408501613dcf565b90509250925092565b6000602082840312156140bb57600080fd5b815160ff811681146111ff57600080fd5b803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e0830152610100808201358184015250610120808201358184015250610140808201358184015250610160614148818301613da6565b6001600160a01b031690830152610180614163828201613dcf565b64ffffffffff16908301526101a061417c828201613dcf565b64ffffffffff811684830152612d29565b6000825161419f818460208701614635565b9190910192915050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60208152600082518060208401526141eb816040850160208701614635565b601f01601f19169190910160400192915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600e908201526d151dd9585ac8195e18d95959195960921b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6101e0810161436782856140cc565b8215156101c08301529392505050565b6101e0810161438682856140cc565b826101c08301529392505050565b600061020082019050845182526020850151602083015260408501516040830152606085015160608301526080850151608083015260a085015160a083015260c085015160c083015260e085015160e083015261010080860151818401525061012080860151818401525061014080860151818401525061016080860151614426828501826001600160a01b03169052565b50506101808581015164ffffffffff908116918401919091526101a09586015116948201949094526001600160a01b03929092166101c08301526bffffffffffffffffffffffff166101e09091015290565b6000821982111561448b5761448b614696565b500190565b60008261449f5761449f6146ac565b500490565b600064ffffffffff808416806144bc576144bc6146ac565b92169190910492915050565b600181815b808511156145035781600019048211156144e9576144e9614696565b808516156144f657918102915b93841c93908002906144cd565b509250929050565b60006127ce60ff841683600082614524575060016127d1565b81614531575060006127d1565b816001811461454757600281146145515761456d565b60019150506127d1565b60ff84111561456257614562614696565b50506001821b6127d1565b5060208310610133831016604e8410600b8410161715614590575081810a6127d1565b61459a83836144c8565b80600019048211156145ae576145ae614696565b029392505050565b60008160001904831182151516156145d0576145d0614696565b500290565b6000828210156145e7576145e7614696565b500390565b600064ffffffffff8381169083168181101561460a5761460a614696565b039392505050565b600060ff821660ff84168082101561462c5761462c614696565b90039392505050565b60005b83811015614650578181015183820152602001614638565b83811115612d295750506000910152565b600181811c9082168061467557607f821691505b60208210811415613dc957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461086157600080fd5b801515811461086157600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb2416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220aec1cfde8bc91d90c5c76c7d872a7c3e6dbfcef10a78d4f5e1912bd6277cf0cf64736f6c63430008060033",
1030
847
  "linkReferences": {},
1031
848
  "deployedLinkReferences": {}
1032
849
  }