@gooddollar/goodcollective-contracts 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/artifacts/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.dbg.json +4 -0
  2. package/artifacts/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.json +995 -0
  3. package/artifacts/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.dbg.json +4 -0
  4. package/artifacts/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.json +113 -0
  5. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.dbg.json +4 -0
  6. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.json +2210 -0
  7. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IIdentityV2.dbg.json +4 -0
  8. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IIdentityV2.json +30 -0
  9. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.dbg.json +4 -0
  10. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.json +45 -0
  11. package/artifacts/contracts/DirectPayments/ProvableNFT.sol/ProvableNFT.dbg.json +4 -0
  12. package/artifacts/contracts/DirectPayments/ProvableNFT.sol/ProvableNFT.json +1187 -0
  13. package/artifacts/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.dbg.json +4 -0
  14. package/artifacts/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.json +831 -0
  15. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.dbg.json +4 -0
  16. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.json +42 -0
  17. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.dbg.json +4 -0
  18. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.json +61 -0
  19. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.dbg.json +4 -0
  20. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.json +47 -0
  21. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.dbg.json +4 -0
  22. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.json +320 -0
  23. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  24. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +30 -0
  25. package/artifacts/contracts/Interfaces.sol/IMembersValidator.dbg.json +4 -0
  26. package/artifacts/contracts/Interfaces.sol/IMembersValidator.json +45 -0
  27. package/artifacts/contracts/UBI/UBIPool.sol/UBIPool.dbg.json +4 -0
  28. package/artifacts/contracts/UBI/UBIPool.sol/UBIPool.json +2078 -0
  29. package/artifacts/contracts/UBI/UBIPoolFactory.sol/UBIPoolFactory.dbg.json +4 -0
  30. package/artifacts/contracts/UBI/UBIPoolFactory.sol/UBIPoolFactory.json +1011 -0
  31. package/artifacts/contracts/test/HelperLibraryTest.sol/HelperLibraryTest.dbg.json +4 -0
  32. package/artifacts/contracts/test/HelperLibraryTest.sol/HelperLibraryTest.json +90 -0
  33. package/artifacts/contracts/utils/HelperLibrary.sol/HelperLibrary.dbg.json +4 -0
  34. package/artifacts/contracts/utils/HelperLibrary.sol/HelperLibrary.json +117 -0
  35. package/artifacts/contracts/utils/Recover.sol/Recover.dbg.json +4 -0
  36. package/artifacts/contracts/utils/Recover.sol/Recover.json +120 -0
  37. package/artifacts/contracts/utils/SwapRouterMock.sol/SwapRouterMock.dbg.json +4 -0
  38. package/artifacts/contracts/utils/SwapRouterMock.sol/SwapRouterMock.json +119 -0
  39. package/contracts/DirectPayments/DirectPaymentsFactory.sol +13 -1
  40. package/contracts/DirectPayments/DirectPaymentsPool.sol +22 -0
  41. package/contracts/UBI/UBIPool.sol +62 -18
  42. package/contracts/UBI/UBIPoolFactory.sol +13 -1
  43. package/contracts/utils/Recover.sol +16 -0
  44. package/package.json +3 -5
  45. package/releases/deployment.json +308 -134
  46. package/typechain-types/contracts/DirectPayments/DirectPaymentsFactory.ts +54 -0
  47. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPayemntsLibrary.ts +77 -0
  48. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.ts +77 -0
  49. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/index.ts +5 -0
  50. package/typechain-types/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.ts +37 -0
  51. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IClaimable.ts +92 -0
  52. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IModule.ts +196 -0
  53. package/typechain-types/contracts/UBI/MultiClaimModule.sol/MultiClaimModule.ts +242 -0
  54. package/typechain-types/contracts/UBI/MultiClaimModule.sol/index.ts +6 -0
  55. package/typechain-types/contracts/UBI/UBIPool.ts +37 -0
  56. package/typechain-types/contracts/UBI/UBIPoolFactory.ts +54 -0
  57. package/typechain-types/contracts/utils/Recover.ts +263 -0
  58. package/typechain-types/contracts/utils/index.ts +1 -0
  59. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsFactory__factory.ts +33 -1
  60. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPayemntsLibrary__factory.ts +96 -0
  61. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary__factory.ts +96 -0
  62. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/index.ts +5 -0
  63. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary__factory.ts +1 -1
  64. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool__factory.ts +24 -1
  65. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IClaimable__factory.ts +33 -0
  66. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IModule__factory.ts +84 -0
  67. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/MultiClaimModule__factory.ts +150 -0
  68. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/index.ts +6 -0
  69. package/typechain-types/factories/contracts/UBI/UBIPoolFactory__factory.ts +33 -1
  70. package/typechain-types/factories/contracts/UBI/UBIPool__factory.ts +24 -1
  71. package/typechain-types/factories/contracts/utils/Recover__factory.ts +172 -0
  72. package/typechain-types/factories/contracts/utils/index.ts +1 -0
  73. package/typechain-types/hardhat.d.ts +9 -0
  74. package/typechain-types/index.ts +2 -0
@@ -0,0 +1,2078 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "UBIPool",
4
+ "sourceName": "contracts/UBI/UBIPool.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract ISuperfluid",
10
+ "name": "_host",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "contract IV3SwapRouter",
15
+ "name": "_swapRouter",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "inputs": [
24
+ {
25
+ "internalType": "address",
26
+ "name": "whitelistedRoot",
27
+ "type": "address"
28
+ }
29
+ ],
30
+ "name": "ALREADY_CLAIMED",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [],
35
+ "name": "CLAIMFOR_DISABLED",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [],
40
+ "name": "EMPTY_MANAGER",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [
45
+ {
46
+ "internalType": "int96",
47
+ "name": "curFeeRate",
48
+ "type": "int96"
49
+ },
50
+ {
51
+ "internalType": "int96",
52
+ "name": "newFeeRate",
53
+ "type": "int96"
54
+ }
55
+ ],
56
+ "name": "FEE_FLOW_FAILED",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "INVALID_0_VALUE",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [],
66
+ "name": "LENGTH_MISMATCH",
67
+ "type": "error"
68
+ },
69
+ {
70
+ "inputs": [],
71
+ "name": "MAX_MEMBERS_REACHED",
72
+ "type": "error"
73
+ },
74
+ {
75
+ "inputs": [
76
+ {
77
+ "internalType": "uint256",
78
+ "name": "claimers",
79
+ "type": "uint256"
80
+ }
81
+ ],
82
+ "name": "MAX_PERIOD_CLAIMERS_REACHED",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [
87
+ {
88
+ "internalType": "int96",
89
+ "name": "flowRate",
90
+ "type": "int96"
91
+ }
92
+ ],
93
+ "name": "MIN_FLOWRATE",
94
+ "type": "error"
95
+ },
96
+ {
97
+ "inputs": [
98
+ {
99
+ "internalType": "address",
100
+ "name": "manager",
101
+ "type": "address"
102
+ }
103
+ ],
104
+ "name": "NOT_MANAGER",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [
109
+ {
110
+ "internalType": "address",
111
+ "name": "claimer",
112
+ "type": "address"
113
+ }
114
+ ],
115
+ "name": "NOT_MEMBER",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [
120
+ {
121
+ "internalType": "address",
122
+ "name": "whitelistedRoot",
123
+ "type": "address"
124
+ }
125
+ ],
126
+ "name": "NOT_WHITELISTED",
127
+ "type": "error"
128
+ },
129
+ {
130
+ "inputs": [],
131
+ "name": "NotAcceptedSuperToken",
132
+ "type": "error"
133
+ },
134
+ {
135
+ "inputs": [],
136
+ "name": "NotImplemented",
137
+ "type": "error"
138
+ },
139
+ {
140
+ "inputs": [
141
+ {
142
+ "internalType": "address",
143
+ "name": "",
144
+ "type": "address"
145
+ }
146
+ ],
147
+ "name": "ONLY_HOST_OR_SENDER",
148
+ "type": "error"
149
+ },
150
+ {
151
+ "inputs": [],
152
+ "name": "UNSUPPORTED_TOKEN",
153
+ "type": "error"
154
+ },
155
+ {
156
+ "inputs": [],
157
+ "name": "UnauthorizedHost",
158
+ "type": "error"
159
+ },
160
+ {
161
+ "inputs": [],
162
+ "name": "ZERO_ADDRESS",
163
+ "type": "error"
164
+ },
165
+ {
166
+ "inputs": [],
167
+ "name": "ZERO_AMOUNT",
168
+ "type": "error"
169
+ },
170
+ {
171
+ "anonymous": false,
172
+ "inputs": [
173
+ {
174
+ "indexed": false,
175
+ "internalType": "address",
176
+ "name": "previousAdmin",
177
+ "type": "address"
178
+ },
179
+ {
180
+ "indexed": false,
181
+ "internalType": "address",
182
+ "name": "newAdmin",
183
+ "type": "address"
184
+ }
185
+ ],
186
+ "name": "AdminChanged",
187
+ "type": "event"
188
+ },
189
+ {
190
+ "anonymous": false,
191
+ "inputs": [
192
+ {
193
+ "indexed": true,
194
+ "internalType": "address",
195
+ "name": "beacon",
196
+ "type": "address"
197
+ }
198
+ ],
199
+ "name": "BeaconUpgraded",
200
+ "type": "event"
201
+ },
202
+ {
203
+ "anonymous": false,
204
+ "inputs": [
205
+ {
206
+ "indexed": false,
207
+ "internalType": "uint8",
208
+ "name": "version",
209
+ "type": "uint8"
210
+ }
211
+ ],
212
+ "name": "Initialized",
213
+ "type": "event"
214
+ },
215
+ {
216
+ "anonymous": false,
217
+ "inputs": [
218
+ {
219
+ "components": [
220
+ {
221
+ "internalType": "address",
222
+ "name": "manager",
223
+ "type": "address"
224
+ },
225
+ {
226
+ "internalType": "contract IMembersValidator",
227
+ "name": "membersValidator",
228
+ "type": "address"
229
+ },
230
+ {
231
+ "internalType": "contract IIdentityV2",
232
+ "name": "uniquenessValidator",
233
+ "type": "address"
234
+ },
235
+ {
236
+ "internalType": "contract IERC20Upgradeable",
237
+ "name": "rewardToken",
238
+ "type": "address"
239
+ }
240
+ ],
241
+ "indexed": false,
242
+ "internalType": "struct PoolSettings",
243
+ "name": "settings",
244
+ "type": "tuple"
245
+ }
246
+ ],
247
+ "name": "PoolSettingsChanged",
248
+ "type": "event"
249
+ },
250
+ {
251
+ "anonymous": false,
252
+ "inputs": [
253
+ {
254
+ "indexed": true,
255
+ "internalType": "bytes32",
256
+ "name": "role",
257
+ "type": "bytes32"
258
+ },
259
+ {
260
+ "indexed": true,
261
+ "internalType": "bytes32",
262
+ "name": "previousAdminRole",
263
+ "type": "bytes32"
264
+ },
265
+ {
266
+ "indexed": true,
267
+ "internalType": "bytes32",
268
+ "name": "newAdminRole",
269
+ "type": "bytes32"
270
+ }
271
+ ],
272
+ "name": "RoleAdminChanged",
273
+ "type": "event"
274
+ },
275
+ {
276
+ "anonymous": false,
277
+ "inputs": [
278
+ {
279
+ "indexed": true,
280
+ "internalType": "bytes32",
281
+ "name": "role",
282
+ "type": "bytes32"
283
+ },
284
+ {
285
+ "indexed": true,
286
+ "internalType": "address",
287
+ "name": "account",
288
+ "type": "address"
289
+ },
290
+ {
291
+ "indexed": true,
292
+ "internalType": "address",
293
+ "name": "sender",
294
+ "type": "address"
295
+ }
296
+ ],
297
+ "name": "RoleGranted",
298
+ "type": "event"
299
+ },
300
+ {
301
+ "anonymous": false,
302
+ "inputs": [
303
+ {
304
+ "indexed": true,
305
+ "internalType": "bytes32",
306
+ "name": "role",
307
+ "type": "bytes32"
308
+ },
309
+ {
310
+ "indexed": true,
311
+ "internalType": "address",
312
+ "name": "account",
313
+ "type": "address"
314
+ },
315
+ {
316
+ "indexed": true,
317
+ "internalType": "address",
318
+ "name": "sender",
319
+ "type": "address"
320
+ }
321
+ ],
322
+ "name": "RoleRevoked",
323
+ "type": "event"
324
+ },
325
+ {
326
+ "anonymous": false,
327
+ "inputs": [
328
+ {
329
+ "indexed": true,
330
+ "internalType": "address",
331
+ "name": "supporter",
332
+ "type": "address"
333
+ },
334
+ {
335
+ "indexed": false,
336
+ "internalType": "uint256",
337
+ "name": "previousContribution",
338
+ "type": "uint256"
339
+ },
340
+ {
341
+ "indexed": false,
342
+ "internalType": "uint256",
343
+ "name": "contribution",
344
+ "type": "uint256"
345
+ },
346
+ {
347
+ "indexed": false,
348
+ "internalType": "int96",
349
+ "name": "previousFlowRate",
350
+ "type": "int96"
351
+ },
352
+ {
353
+ "indexed": false,
354
+ "internalType": "int96",
355
+ "name": "flowRate",
356
+ "type": "int96"
357
+ },
358
+ {
359
+ "indexed": false,
360
+ "internalType": "bool",
361
+ "name": "isFlowUpdate",
362
+ "type": "bool"
363
+ }
364
+ ],
365
+ "name": "SupporterUpdated",
366
+ "type": "event"
367
+ },
368
+ {
369
+ "anonymous": false,
370
+ "inputs": [
371
+ {
372
+ "indexed": false,
373
+ "internalType": "uint256",
374
+ "name": "day",
375
+ "type": "uint256"
376
+ },
377
+ {
378
+ "indexed": false,
379
+ "internalType": "uint256",
380
+ "name": "dailyUbi",
381
+ "type": "uint256"
382
+ },
383
+ {
384
+ "indexed": false,
385
+ "internalType": "uint256",
386
+ "name": "blockNumber",
387
+ "type": "uint256"
388
+ },
389
+ {
390
+ "indexed": false,
391
+ "internalType": "uint256",
392
+ "name": "periodClaimers",
393
+ "type": "uint256"
394
+ },
395
+ {
396
+ "indexed": false,
397
+ "internalType": "uint256",
398
+ "name": "periodDistributed",
399
+ "type": "uint256"
400
+ }
401
+ ],
402
+ "name": "UBICalculated",
403
+ "type": "event"
404
+ },
405
+ {
406
+ "anonymous": false,
407
+ "inputs": [
408
+ {
409
+ "indexed": true,
410
+ "internalType": "address",
411
+ "name": "whitelistedRoot",
412
+ "type": "address"
413
+ },
414
+ {
415
+ "indexed": true,
416
+ "internalType": "address",
417
+ "name": "claimer",
418
+ "type": "address"
419
+ },
420
+ {
421
+ "indexed": false,
422
+ "internalType": "uint256",
423
+ "name": "amount",
424
+ "type": "uint256"
425
+ }
426
+ ],
427
+ "name": "UBIClaimed",
428
+ "type": "event"
429
+ },
430
+ {
431
+ "anonymous": false,
432
+ "inputs": [
433
+ {
434
+ "indexed": false,
435
+ "internalType": "uint256",
436
+ "name": "day",
437
+ "type": "uint256"
438
+ },
439
+ {
440
+ "indexed": false,
441
+ "internalType": "uint256",
442
+ "name": "pool",
443
+ "type": "uint256"
444
+ },
445
+ {
446
+ "indexed": false,
447
+ "internalType": "uint256",
448
+ "name": "cycleLength",
449
+ "type": "uint256"
450
+ },
451
+ {
452
+ "indexed": false,
453
+ "internalType": "uint256",
454
+ "name": "dailyUBIPool",
455
+ "type": "uint256"
456
+ }
457
+ ],
458
+ "name": "UBICycleCalculated",
459
+ "type": "event"
460
+ },
461
+ {
462
+ "anonymous": false,
463
+ "inputs": [
464
+ {
465
+ "components": [
466
+ {
467
+ "internalType": "uint32",
468
+ "name": "cycleLengthDays",
469
+ "type": "uint32"
470
+ },
471
+ {
472
+ "internalType": "uint32",
473
+ "name": "claimPeriodDays",
474
+ "type": "uint32"
475
+ },
476
+ {
477
+ "internalType": "uint32",
478
+ "name": "minActiveUsers",
479
+ "type": "uint32"
480
+ },
481
+ {
482
+ "internalType": "bool",
483
+ "name": "claimForEnabled",
484
+ "type": "bool"
485
+ },
486
+ {
487
+ "internalType": "uint256",
488
+ "name": "maxClaimAmount",
489
+ "type": "uint256"
490
+ },
491
+ {
492
+ "internalType": "uint32",
493
+ "name": "maxMembers",
494
+ "type": "uint32"
495
+ },
496
+ {
497
+ "internalType": "bool",
498
+ "name": "onlyMembers",
499
+ "type": "bool"
500
+ }
501
+ ],
502
+ "indexed": false,
503
+ "internalType": "struct UBIPool.UBISettings",
504
+ "name": "settings",
505
+ "type": "tuple"
506
+ }
507
+ ],
508
+ "name": "UBISettingsChanged",
509
+ "type": "event"
510
+ },
511
+ {
512
+ "anonymous": false,
513
+ "inputs": [
514
+ {
515
+ "indexed": true,
516
+ "internalType": "address",
517
+ "name": "implementation",
518
+ "type": "address"
519
+ }
520
+ ],
521
+ "name": "Upgraded",
522
+ "type": "event"
523
+ },
524
+ {
525
+ "inputs": [],
526
+ "name": "CFAV1_TYPE",
527
+ "outputs": [
528
+ {
529
+ "internalType": "bytes32",
530
+ "name": "",
531
+ "type": "bytes32"
532
+ }
533
+ ],
534
+ "stateMutability": "view",
535
+ "type": "function"
536
+ },
537
+ {
538
+ "inputs": [],
539
+ "name": "DEFAULT_ADMIN_ROLE",
540
+ "outputs": [
541
+ {
542
+ "internalType": "bytes32",
543
+ "name": "",
544
+ "type": "bytes32"
545
+ }
546
+ ],
547
+ "stateMutability": "view",
548
+ "type": "function"
549
+ },
550
+ {
551
+ "inputs": [],
552
+ "name": "MANAGER_ROLE",
553
+ "outputs": [
554
+ {
555
+ "internalType": "bytes32",
556
+ "name": "",
557
+ "type": "bytes32"
558
+ }
559
+ ],
560
+ "stateMutability": "view",
561
+ "type": "function"
562
+ },
563
+ {
564
+ "inputs": [],
565
+ "name": "MEMBER_ROLE",
566
+ "outputs": [
567
+ {
568
+ "internalType": "bytes32",
569
+ "name": "",
570
+ "type": "bytes32"
571
+ }
572
+ ],
573
+ "stateMutability": "view",
574
+ "type": "function"
575
+ },
576
+ {
577
+ "inputs": [],
578
+ "name": "MIN_FLOW_RATE",
579
+ "outputs": [
580
+ {
581
+ "internalType": "int96",
582
+ "name": "",
583
+ "type": "int96"
584
+ }
585
+ ],
586
+ "stateMutability": "view",
587
+ "type": "function"
588
+ },
589
+ {
590
+ "inputs": [
591
+ {
592
+ "internalType": "address",
593
+ "name": "member",
594
+ "type": "address"
595
+ },
596
+ {
597
+ "internalType": "bytes",
598
+ "name": "extraData",
599
+ "type": "bytes"
600
+ }
601
+ ],
602
+ "name": "addMember",
603
+ "outputs": [
604
+ {
605
+ "internalType": "bool",
606
+ "name": "isMember",
607
+ "type": "bool"
608
+ }
609
+ ],
610
+ "stateMutability": "nonpayable",
611
+ "type": "function"
612
+ },
613
+ {
614
+ "inputs": [
615
+ {
616
+ "internalType": "address[]",
617
+ "name": "members",
618
+ "type": "address[]"
619
+ },
620
+ {
621
+ "internalType": "bytes[]",
622
+ "name": "extraData",
623
+ "type": "bytes[]"
624
+ }
625
+ ],
626
+ "name": "addMembers",
627
+ "outputs": [],
628
+ "stateMutability": "nonpayable",
629
+ "type": "function"
630
+ },
631
+ {
632
+ "inputs": [
633
+ {
634
+ "internalType": "contract ISuperToken",
635
+ "name": "superToken",
636
+ "type": "address"
637
+ },
638
+ {
639
+ "internalType": "address",
640
+ "name": "",
641
+ "type": "address"
642
+ },
643
+ {
644
+ "internalType": "bytes32",
645
+ "name": "",
646
+ "type": "bytes32"
647
+ },
648
+ {
649
+ "internalType": "bytes",
650
+ "name": "agreementData",
651
+ "type": "bytes"
652
+ },
653
+ {
654
+ "internalType": "bytes",
655
+ "name": "",
656
+ "type": "bytes"
657
+ },
658
+ {
659
+ "internalType": "bytes",
660
+ "name": "ctx",
661
+ "type": "bytes"
662
+ }
663
+ ],
664
+ "name": "afterAgreementCreated",
665
+ "outputs": [
666
+ {
667
+ "internalType": "bytes",
668
+ "name": "newCtx",
669
+ "type": "bytes"
670
+ }
671
+ ],
672
+ "stateMutability": "nonpayable",
673
+ "type": "function"
674
+ },
675
+ {
676
+ "inputs": [
677
+ {
678
+ "internalType": "contract ISuperToken",
679
+ "name": "superToken",
680
+ "type": "address"
681
+ },
682
+ {
683
+ "internalType": "address",
684
+ "name": "agreementClass",
685
+ "type": "address"
686
+ },
687
+ {
688
+ "internalType": "bytes32",
689
+ "name": "",
690
+ "type": "bytes32"
691
+ },
692
+ {
693
+ "internalType": "bytes",
694
+ "name": "agreementData",
695
+ "type": "bytes"
696
+ },
697
+ {
698
+ "internalType": "bytes",
699
+ "name": "cbdata",
700
+ "type": "bytes"
701
+ },
702
+ {
703
+ "internalType": "bytes",
704
+ "name": "ctx",
705
+ "type": "bytes"
706
+ }
707
+ ],
708
+ "name": "afterAgreementTerminated",
709
+ "outputs": [
710
+ {
711
+ "internalType": "bytes",
712
+ "name": "newCtx",
713
+ "type": "bytes"
714
+ }
715
+ ],
716
+ "stateMutability": "nonpayable",
717
+ "type": "function"
718
+ },
719
+ {
720
+ "inputs": [
721
+ {
722
+ "internalType": "contract ISuperToken",
723
+ "name": "superToken",
724
+ "type": "address"
725
+ },
726
+ {
727
+ "internalType": "address",
728
+ "name": "",
729
+ "type": "address"
730
+ },
731
+ {
732
+ "internalType": "bytes32",
733
+ "name": "",
734
+ "type": "bytes32"
735
+ },
736
+ {
737
+ "internalType": "bytes",
738
+ "name": "agreementData",
739
+ "type": "bytes"
740
+ },
741
+ {
742
+ "internalType": "bytes",
743
+ "name": "cbdata",
744
+ "type": "bytes"
745
+ },
746
+ {
747
+ "internalType": "bytes",
748
+ "name": "ctx",
749
+ "type": "bytes"
750
+ }
751
+ ],
752
+ "name": "afterAgreementUpdated",
753
+ "outputs": [
754
+ {
755
+ "internalType": "bytes",
756
+ "name": "newCtx",
757
+ "type": "bytes"
758
+ }
759
+ ],
760
+ "stateMutability": "nonpayable",
761
+ "type": "function"
762
+ },
763
+ {
764
+ "inputs": [
765
+ {
766
+ "internalType": "contract ISuperToken",
767
+ "name": "superToken",
768
+ "type": "address"
769
+ },
770
+ {
771
+ "internalType": "address",
772
+ "name": "agreementClass",
773
+ "type": "address"
774
+ },
775
+ {
776
+ "internalType": "bytes32",
777
+ "name": "",
778
+ "type": "bytes32"
779
+ },
780
+ {
781
+ "internalType": "bytes",
782
+ "name": "",
783
+ "type": "bytes"
784
+ },
785
+ {
786
+ "internalType": "bytes",
787
+ "name": "",
788
+ "type": "bytes"
789
+ }
790
+ ],
791
+ "name": "beforeAgreementCreated",
792
+ "outputs": [
793
+ {
794
+ "internalType": "bytes",
795
+ "name": "",
796
+ "type": "bytes"
797
+ }
798
+ ],
799
+ "stateMutability": "view",
800
+ "type": "function"
801
+ },
802
+ {
803
+ "inputs": [
804
+ {
805
+ "internalType": "contract ISuperToken",
806
+ "name": "superToken",
807
+ "type": "address"
808
+ },
809
+ {
810
+ "internalType": "address",
811
+ "name": "agreementClass",
812
+ "type": "address"
813
+ },
814
+ {
815
+ "internalType": "bytes32",
816
+ "name": "",
817
+ "type": "bytes32"
818
+ },
819
+ {
820
+ "internalType": "bytes",
821
+ "name": "agreementData",
822
+ "type": "bytes"
823
+ },
824
+ {
825
+ "internalType": "bytes",
826
+ "name": "",
827
+ "type": "bytes"
828
+ }
829
+ ],
830
+ "name": "beforeAgreementTerminated",
831
+ "outputs": [
832
+ {
833
+ "internalType": "bytes",
834
+ "name": "",
835
+ "type": "bytes"
836
+ }
837
+ ],
838
+ "stateMutability": "view",
839
+ "type": "function"
840
+ },
841
+ {
842
+ "inputs": [
843
+ {
844
+ "internalType": "contract ISuperToken",
845
+ "name": "superToken",
846
+ "type": "address"
847
+ },
848
+ {
849
+ "internalType": "address",
850
+ "name": "agreementClass",
851
+ "type": "address"
852
+ },
853
+ {
854
+ "internalType": "bytes32",
855
+ "name": "",
856
+ "type": "bytes32"
857
+ },
858
+ {
859
+ "internalType": "bytes",
860
+ "name": "agreementData",
861
+ "type": "bytes"
862
+ },
863
+ {
864
+ "internalType": "bytes",
865
+ "name": "",
866
+ "type": "bytes"
867
+ }
868
+ ],
869
+ "name": "beforeAgreementUpdated",
870
+ "outputs": [
871
+ {
872
+ "internalType": "bytes",
873
+ "name": "",
874
+ "type": "bytes"
875
+ }
876
+ ],
877
+ "stateMutability": "view",
878
+ "type": "function"
879
+ },
880
+ {
881
+ "inputs": [],
882
+ "name": "cfaV1",
883
+ "outputs": [
884
+ {
885
+ "internalType": "contract ISuperfluid",
886
+ "name": "host",
887
+ "type": "address"
888
+ },
889
+ {
890
+ "internalType": "contract IConstantFlowAgreementV1",
891
+ "name": "cfa",
892
+ "type": "address"
893
+ }
894
+ ],
895
+ "stateMutability": "view",
896
+ "type": "function"
897
+ },
898
+ {
899
+ "inputs": [
900
+ {
901
+ "internalType": "address",
902
+ "name": "_member",
903
+ "type": "address"
904
+ }
905
+ ],
906
+ "name": "checkEntitlement",
907
+ "outputs": [
908
+ {
909
+ "internalType": "uint256",
910
+ "name": "",
911
+ "type": "uint256"
912
+ }
913
+ ],
914
+ "stateMutability": "view",
915
+ "type": "function"
916
+ },
917
+ {
918
+ "inputs": [],
919
+ "name": "checkEntitlement",
920
+ "outputs": [
921
+ {
922
+ "internalType": "uint256",
923
+ "name": "",
924
+ "type": "uint256"
925
+ }
926
+ ],
927
+ "stateMutability": "view",
928
+ "type": "function"
929
+ },
930
+ {
931
+ "inputs": [],
932
+ "name": "claim",
933
+ "outputs": [],
934
+ "stateMutability": "nonpayable",
935
+ "type": "function"
936
+ },
937
+ {
938
+ "inputs": [
939
+ {
940
+ "internalType": "address",
941
+ "name": "claimer",
942
+ "type": "address"
943
+ },
944
+ {
945
+ "internalType": "bool",
946
+ "name": "sendToWhitelistedRoot",
947
+ "type": "bool"
948
+ }
949
+ ],
950
+ "name": "claimFor",
951
+ "outputs": [],
952
+ "stateMutability": "nonpayable",
953
+ "type": "function"
954
+ },
955
+ {
956
+ "inputs": [],
957
+ "name": "currentDayInCycle",
958
+ "outputs": [
959
+ {
960
+ "internalType": "uint256",
961
+ "name": "",
962
+ "type": "uint256"
963
+ }
964
+ ],
965
+ "stateMutability": "view",
966
+ "type": "function"
967
+ },
968
+ {
969
+ "inputs": [],
970
+ "name": "distributionFormula",
971
+ "outputs": [
972
+ {
973
+ "internalType": "uint256",
974
+ "name": "",
975
+ "type": "uint256"
976
+ }
977
+ ],
978
+ "stateMutability": "nonpayable",
979
+ "type": "function"
980
+ },
981
+ {
982
+ "inputs": [],
983
+ "name": "estimateNextDailyUBI",
984
+ "outputs": [
985
+ {
986
+ "internalType": "uint256",
987
+ "name": "nextDailyUbi",
988
+ "type": "uint256"
989
+ }
990
+ ],
991
+ "stateMutability": "view",
992
+ "type": "function"
993
+ },
994
+ {
995
+ "inputs": [],
996
+ "name": "extendedSettings",
997
+ "outputs": [
998
+ {
999
+ "internalType": "uint32",
1000
+ "name": "maxPeriodClaimers",
1001
+ "type": "uint32"
1002
+ },
1003
+ {
1004
+ "internalType": "uint256",
1005
+ "name": "minClaimAmount",
1006
+ "type": "uint256"
1007
+ },
1008
+ {
1009
+ "internalType": "uint32",
1010
+ "name": "managerFeeBps",
1011
+ "type": "uint32"
1012
+ }
1013
+ ],
1014
+ "stateMutability": "view",
1015
+ "type": "function"
1016
+ },
1017
+ {
1018
+ "inputs": [],
1019
+ "name": "getCurrentDay",
1020
+ "outputs": [
1021
+ {
1022
+ "internalType": "uint256",
1023
+ "name": "",
1024
+ "type": "uint256"
1025
+ }
1026
+ ],
1027
+ "stateMutability": "view",
1028
+ "type": "function"
1029
+ },
1030
+ {
1031
+ "inputs": [],
1032
+ "name": "getManagerFee",
1033
+ "outputs": [
1034
+ {
1035
+ "internalType": "address",
1036
+ "name": "feeRecipient",
1037
+ "type": "address"
1038
+ },
1039
+ {
1040
+ "internalType": "uint32",
1041
+ "name": "feeBps",
1042
+ "type": "uint32"
1043
+ }
1044
+ ],
1045
+ "stateMutability": "view",
1046
+ "type": "function"
1047
+ },
1048
+ {
1049
+ "inputs": [
1050
+ {
1051
+ "internalType": "address",
1052
+ "name": "_user",
1053
+ "type": "address"
1054
+ }
1055
+ ],
1056
+ "name": "getRealtimeContribution",
1057
+ "outputs": [
1058
+ {
1059
+ "internalType": "uint256",
1060
+ "name": "",
1061
+ "type": "uint256"
1062
+ }
1063
+ ],
1064
+ "stateMutability": "view",
1065
+ "type": "function"
1066
+ },
1067
+ {
1068
+ "inputs": [],
1069
+ "name": "getRealtimeStats",
1070
+ "outputs": [
1071
+ {
1072
+ "internalType": "uint256",
1073
+ "name": "netIncome",
1074
+ "type": "uint256"
1075
+ },
1076
+ {
1077
+ "internalType": "uint256",
1078
+ "name": "totalFees",
1079
+ "type": "uint256"
1080
+ },
1081
+ {
1082
+ "internalType": "uint256",
1083
+ "name": "protocolFees",
1084
+ "type": "uint256"
1085
+ },
1086
+ {
1087
+ "internalType": "uint256",
1088
+ "name": "managerFees",
1089
+ "type": "uint256"
1090
+ },
1091
+ {
1092
+ "internalType": "int96",
1093
+ "name": "incomeFlowRate",
1094
+ "type": "int96"
1095
+ },
1096
+ {
1097
+ "internalType": "int96",
1098
+ "name": "feeRate",
1099
+ "type": "int96"
1100
+ },
1101
+ {
1102
+ "internalType": "int96",
1103
+ "name": "managerFeeRate",
1104
+ "type": "int96"
1105
+ }
1106
+ ],
1107
+ "stateMutability": "view",
1108
+ "type": "function"
1109
+ },
1110
+ {
1111
+ "inputs": [],
1112
+ "name": "getRegistry",
1113
+ "outputs": [
1114
+ {
1115
+ "internalType": "contract IRegistry",
1116
+ "name": "",
1117
+ "type": "address"
1118
+ }
1119
+ ],
1120
+ "stateMutability": "view",
1121
+ "type": "function"
1122
+ },
1123
+ {
1124
+ "inputs": [
1125
+ {
1126
+ "internalType": "bytes32",
1127
+ "name": "role",
1128
+ "type": "bytes32"
1129
+ }
1130
+ ],
1131
+ "name": "getRoleAdmin",
1132
+ "outputs": [
1133
+ {
1134
+ "internalType": "bytes32",
1135
+ "name": "",
1136
+ "type": "bytes32"
1137
+ }
1138
+ ],
1139
+ "stateMutability": "view",
1140
+ "type": "function"
1141
+ },
1142
+ {
1143
+ "inputs": [
1144
+ {
1145
+ "internalType": "bytes32",
1146
+ "name": "role",
1147
+ "type": "bytes32"
1148
+ },
1149
+ {
1150
+ "internalType": "address",
1151
+ "name": "account",
1152
+ "type": "address"
1153
+ }
1154
+ ],
1155
+ "name": "grantRole",
1156
+ "outputs": [],
1157
+ "stateMutability": "nonpayable",
1158
+ "type": "function"
1159
+ },
1160
+ {
1161
+ "inputs": [
1162
+ {
1163
+ "components": [
1164
+ {
1165
+ "internalType": "address",
1166
+ "name": "swapFrom",
1167
+ "type": "address"
1168
+ },
1169
+ {
1170
+ "internalType": "uint256",
1171
+ "name": "amount",
1172
+ "type": "uint256"
1173
+ },
1174
+ {
1175
+ "internalType": "uint256",
1176
+ "name": "minReturn",
1177
+ "type": "uint256"
1178
+ },
1179
+ {
1180
+ "internalType": "uint256",
1181
+ "name": "deadline",
1182
+ "type": "uint256"
1183
+ },
1184
+ {
1185
+ "internalType": "bytes",
1186
+ "name": "path",
1187
+ "type": "bytes"
1188
+ }
1189
+ ],
1190
+ "internalType": "struct HelperLibrary.SwapData",
1191
+ "name": "_customData",
1192
+ "type": "tuple"
1193
+ },
1194
+ {
1195
+ "internalType": "address",
1196
+ "name": "_sender",
1197
+ "type": "address"
1198
+ },
1199
+ {
1200
+ "internalType": "bytes",
1201
+ "name": "_ctx",
1202
+ "type": "bytes"
1203
+ }
1204
+ ],
1205
+ "name": "handleSwap",
1206
+ "outputs": [
1207
+ {
1208
+ "internalType": "bytes",
1209
+ "name": "",
1210
+ "type": "bytes"
1211
+ }
1212
+ ],
1213
+ "stateMutability": "nonpayable",
1214
+ "type": "function"
1215
+ },
1216
+ {
1217
+ "inputs": [
1218
+ {
1219
+ "internalType": "address",
1220
+ "name": "_member",
1221
+ "type": "address"
1222
+ }
1223
+ ],
1224
+ "name": "hasClaimed",
1225
+ "outputs": [
1226
+ {
1227
+ "internalType": "bool",
1228
+ "name": "",
1229
+ "type": "bool"
1230
+ }
1231
+ ],
1232
+ "stateMutability": "view",
1233
+ "type": "function"
1234
+ },
1235
+ {
1236
+ "inputs": [
1237
+ {
1238
+ "internalType": "bytes32",
1239
+ "name": "role",
1240
+ "type": "bytes32"
1241
+ },
1242
+ {
1243
+ "internalType": "address",
1244
+ "name": "account",
1245
+ "type": "address"
1246
+ }
1247
+ ],
1248
+ "name": "hasRole",
1249
+ "outputs": [
1250
+ {
1251
+ "internalType": "bool",
1252
+ "name": "",
1253
+ "type": "bool"
1254
+ }
1255
+ ],
1256
+ "stateMutability": "view",
1257
+ "type": "function"
1258
+ },
1259
+ {
1260
+ "inputs": [],
1261
+ "name": "host",
1262
+ "outputs": [
1263
+ {
1264
+ "internalType": "contract ISuperfluid",
1265
+ "name": "",
1266
+ "type": "address"
1267
+ }
1268
+ ],
1269
+ "stateMutability": "view",
1270
+ "type": "function"
1271
+ },
1272
+ {
1273
+ "inputs": [
1274
+ {
1275
+ "components": [
1276
+ {
1277
+ "internalType": "address",
1278
+ "name": "manager",
1279
+ "type": "address"
1280
+ },
1281
+ {
1282
+ "internalType": "contract IMembersValidator",
1283
+ "name": "membersValidator",
1284
+ "type": "address"
1285
+ },
1286
+ {
1287
+ "internalType": "contract IIdentityV2",
1288
+ "name": "uniquenessValidator",
1289
+ "type": "address"
1290
+ },
1291
+ {
1292
+ "internalType": "contract IERC20Upgradeable",
1293
+ "name": "rewardToken",
1294
+ "type": "address"
1295
+ }
1296
+ ],
1297
+ "internalType": "struct PoolSettings",
1298
+ "name": "_settings",
1299
+ "type": "tuple"
1300
+ },
1301
+ {
1302
+ "components": [
1303
+ {
1304
+ "internalType": "uint32",
1305
+ "name": "cycleLengthDays",
1306
+ "type": "uint32"
1307
+ },
1308
+ {
1309
+ "internalType": "uint32",
1310
+ "name": "claimPeriodDays",
1311
+ "type": "uint32"
1312
+ },
1313
+ {
1314
+ "internalType": "uint32",
1315
+ "name": "minActiveUsers",
1316
+ "type": "uint32"
1317
+ },
1318
+ {
1319
+ "internalType": "bool",
1320
+ "name": "claimForEnabled",
1321
+ "type": "bool"
1322
+ },
1323
+ {
1324
+ "internalType": "uint256",
1325
+ "name": "maxClaimAmount",
1326
+ "type": "uint256"
1327
+ },
1328
+ {
1329
+ "internalType": "uint32",
1330
+ "name": "maxMembers",
1331
+ "type": "uint32"
1332
+ },
1333
+ {
1334
+ "internalType": "bool",
1335
+ "name": "onlyMembers",
1336
+ "type": "bool"
1337
+ }
1338
+ ],
1339
+ "internalType": "struct UBIPool.UBISettings",
1340
+ "name": "_ubiSettings",
1341
+ "type": "tuple"
1342
+ },
1343
+ {
1344
+ "components": [
1345
+ {
1346
+ "internalType": "uint32",
1347
+ "name": "maxPeriodClaimers",
1348
+ "type": "uint32"
1349
+ },
1350
+ {
1351
+ "internalType": "uint256",
1352
+ "name": "minClaimAmount",
1353
+ "type": "uint256"
1354
+ },
1355
+ {
1356
+ "internalType": "uint32",
1357
+ "name": "managerFeeBps",
1358
+ "type": "uint32"
1359
+ }
1360
+ ],
1361
+ "internalType": "struct UBIPool.ExtendedSettings",
1362
+ "name": "_extendedSettings",
1363
+ "type": "tuple"
1364
+ },
1365
+ {
1366
+ "internalType": "contract UBIPoolFactory",
1367
+ "name": "_registry",
1368
+ "type": "address"
1369
+ }
1370
+ ],
1371
+ "name": "initialize",
1372
+ "outputs": [],
1373
+ "stateMutability": "nonpayable",
1374
+ "type": "function"
1375
+ },
1376
+ {
1377
+ "inputs": [
1378
+ {
1379
+ "internalType": "contract ISuperToken",
1380
+ "name": "_superToken",
1381
+ "type": "address"
1382
+ }
1383
+ ],
1384
+ "name": "isAcceptedSuperToken",
1385
+ "outputs": [
1386
+ {
1387
+ "internalType": "bool",
1388
+ "name": "",
1389
+ "type": "bool"
1390
+ }
1391
+ ],
1392
+ "stateMutability": "view",
1393
+ "type": "function"
1394
+ },
1395
+ {
1396
+ "inputs": [],
1397
+ "name": "nextClaimTime",
1398
+ "outputs": [
1399
+ {
1400
+ "internalType": "uint256",
1401
+ "name": "",
1402
+ "type": "uint256"
1403
+ }
1404
+ ],
1405
+ "stateMutability": "view",
1406
+ "type": "function"
1407
+ },
1408
+ {
1409
+ "inputs": [
1410
+ {
1411
+ "internalType": "address",
1412
+ "name": "_sender",
1413
+ "type": "address"
1414
+ },
1415
+ {
1416
+ "internalType": "uint256",
1417
+ "name": "_amount",
1418
+ "type": "uint256"
1419
+ },
1420
+ {
1421
+ "internalType": "bytes",
1422
+ "name": "",
1423
+ "type": "bytes"
1424
+ }
1425
+ ],
1426
+ "name": "onTokenTransfer",
1427
+ "outputs": [
1428
+ {
1429
+ "internalType": "bool",
1430
+ "name": "",
1431
+ "type": "bool"
1432
+ }
1433
+ ],
1434
+ "stateMutability": "nonpayable",
1435
+ "type": "function"
1436
+ },
1437
+ {
1438
+ "inputs": [],
1439
+ "name": "proxiableUUID",
1440
+ "outputs": [
1441
+ {
1442
+ "internalType": "bytes32",
1443
+ "name": "",
1444
+ "type": "bytes32"
1445
+ }
1446
+ ],
1447
+ "stateMutability": "view",
1448
+ "type": "function"
1449
+ },
1450
+ {
1451
+ "inputs": [
1452
+ {
1453
+ "internalType": "address",
1454
+ "name": "_recipient",
1455
+ "type": "address"
1456
+ },
1457
+ {
1458
+ "internalType": "uint256",
1459
+ "name": "amount",
1460
+ "type": "uint256"
1461
+ }
1462
+ ],
1463
+ "name": "recoverFunds",
1464
+ "outputs": [],
1465
+ "stateMutability": "nonpayable",
1466
+ "type": "function"
1467
+ },
1468
+ {
1469
+ "inputs": [],
1470
+ "name": "registry",
1471
+ "outputs": [
1472
+ {
1473
+ "internalType": "contract UBIPoolFactory",
1474
+ "name": "",
1475
+ "type": "address"
1476
+ }
1477
+ ],
1478
+ "stateMutability": "view",
1479
+ "type": "function"
1480
+ },
1481
+ {
1482
+ "inputs": [
1483
+ {
1484
+ "internalType": "address",
1485
+ "name": "member",
1486
+ "type": "address"
1487
+ }
1488
+ ],
1489
+ "name": "removeMember",
1490
+ "outputs": [],
1491
+ "stateMutability": "nonpayable",
1492
+ "type": "function"
1493
+ },
1494
+ {
1495
+ "inputs": [
1496
+ {
1497
+ "internalType": "bytes32",
1498
+ "name": "role",
1499
+ "type": "bytes32"
1500
+ },
1501
+ {
1502
+ "internalType": "address",
1503
+ "name": "account",
1504
+ "type": "address"
1505
+ }
1506
+ ],
1507
+ "name": "renounceRole",
1508
+ "outputs": [],
1509
+ "stateMutability": "nonpayable",
1510
+ "type": "function"
1511
+ },
1512
+ {
1513
+ "inputs": [
1514
+ {
1515
+ "internalType": "bytes32",
1516
+ "name": "role",
1517
+ "type": "bytes32"
1518
+ },
1519
+ {
1520
+ "internalType": "address",
1521
+ "name": "account",
1522
+ "type": "address"
1523
+ }
1524
+ ],
1525
+ "name": "revokeRole",
1526
+ "outputs": [],
1527
+ "stateMutability": "nonpayable",
1528
+ "type": "function"
1529
+ },
1530
+ {
1531
+ "inputs": [
1532
+ {
1533
+ "components": [
1534
+ {
1535
+ "internalType": "address",
1536
+ "name": "manager",
1537
+ "type": "address"
1538
+ },
1539
+ {
1540
+ "internalType": "contract IMembersValidator",
1541
+ "name": "membersValidator",
1542
+ "type": "address"
1543
+ },
1544
+ {
1545
+ "internalType": "contract IIdentityV2",
1546
+ "name": "uniquenessValidator",
1547
+ "type": "address"
1548
+ },
1549
+ {
1550
+ "internalType": "contract IERC20Upgradeable",
1551
+ "name": "rewardToken",
1552
+ "type": "address"
1553
+ }
1554
+ ],
1555
+ "internalType": "struct PoolSettings",
1556
+ "name": "_settings",
1557
+ "type": "tuple"
1558
+ }
1559
+ ],
1560
+ "name": "setPoolSettings",
1561
+ "outputs": [],
1562
+ "stateMutability": "nonpayable",
1563
+ "type": "function"
1564
+ },
1565
+ {
1566
+ "inputs": [
1567
+ {
1568
+ "components": [
1569
+ {
1570
+ "internalType": "uint32",
1571
+ "name": "cycleLengthDays",
1572
+ "type": "uint32"
1573
+ },
1574
+ {
1575
+ "internalType": "uint32",
1576
+ "name": "claimPeriodDays",
1577
+ "type": "uint32"
1578
+ },
1579
+ {
1580
+ "internalType": "uint32",
1581
+ "name": "minActiveUsers",
1582
+ "type": "uint32"
1583
+ },
1584
+ {
1585
+ "internalType": "bool",
1586
+ "name": "claimForEnabled",
1587
+ "type": "bool"
1588
+ },
1589
+ {
1590
+ "internalType": "uint256",
1591
+ "name": "maxClaimAmount",
1592
+ "type": "uint256"
1593
+ },
1594
+ {
1595
+ "internalType": "uint32",
1596
+ "name": "maxMembers",
1597
+ "type": "uint32"
1598
+ },
1599
+ {
1600
+ "internalType": "bool",
1601
+ "name": "onlyMembers",
1602
+ "type": "bool"
1603
+ }
1604
+ ],
1605
+ "internalType": "struct UBIPool.UBISettings",
1606
+ "name": "_ubiSettings",
1607
+ "type": "tuple"
1608
+ },
1609
+ {
1610
+ "components": [
1611
+ {
1612
+ "internalType": "uint32",
1613
+ "name": "maxPeriodClaimers",
1614
+ "type": "uint32"
1615
+ },
1616
+ {
1617
+ "internalType": "uint256",
1618
+ "name": "minClaimAmount",
1619
+ "type": "uint256"
1620
+ },
1621
+ {
1622
+ "internalType": "uint32",
1623
+ "name": "managerFeeBps",
1624
+ "type": "uint32"
1625
+ }
1626
+ ],
1627
+ "internalType": "struct UBIPool.ExtendedSettings",
1628
+ "name": "_extendedSettings",
1629
+ "type": "tuple"
1630
+ }
1631
+ ],
1632
+ "name": "setUBISettings",
1633
+ "outputs": [],
1634
+ "stateMutability": "nonpayable",
1635
+ "type": "function"
1636
+ },
1637
+ {
1638
+ "inputs": [],
1639
+ "name": "settings",
1640
+ "outputs": [
1641
+ {
1642
+ "internalType": "address",
1643
+ "name": "manager",
1644
+ "type": "address"
1645
+ },
1646
+ {
1647
+ "internalType": "contract IMembersValidator",
1648
+ "name": "membersValidator",
1649
+ "type": "address"
1650
+ },
1651
+ {
1652
+ "internalType": "contract IIdentityV2",
1653
+ "name": "uniquenessValidator",
1654
+ "type": "address"
1655
+ },
1656
+ {
1657
+ "internalType": "contract IERC20Upgradeable",
1658
+ "name": "rewardToken",
1659
+ "type": "address"
1660
+ }
1661
+ ],
1662
+ "stateMutability": "view",
1663
+ "type": "function"
1664
+ },
1665
+ {
1666
+ "inputs": [],
1667
+ "name": "stats",
1668
+ "outputs": [
1669
+ {
1670
+ "internalType": "uint256",
1671
+ "name": "netIncome",
1672
+ "type": "uint256"
1673
+ },
1674
+ {
1675
+ "internalType": "uint256",
1676
+ "name": "totalFees",
1677
+ "type": "uint256"
1678
+ },
1679
+ {
1680
+ "internalType": "uint256",
1681
+ "name": "lastUpdate",
1682
+ "type": "uint256"
1683
+ },
1684
+ {
1685
+ "internalType": "address",
1686
+ "name": "lastFeeRecipient",
1687
+ "type": "address"
1688
+ },
1689
+ {
1690
+ "internalType": "int96",
1691
+ "name": "lastIncomeRate",
1692
+ "type": "int96"
1693
+ },
1694
+ {
1695
+ "internalType": "address",
1696
+ "name": "lastManagerFeeRecipient",
1697
+ "type": "address"
1698
+ },
1699
+ {
1700
+ "internalType": "uint256",
1701
+ "name": "protocolFees",
1702
+ "type": "uint256"
1703
+ },
1704
+ {
1705
+ "internalType": "uint256",
1706
+ "name": "managerFees",
1707
+ "type": "uint256"
1708
+ }
1709
+ ],
1710
+ "stateMutability": "view",
1711
+ "type": "function"
1712
+ },
1713
+ {
1714
+ "inputs": [],
1715
+ "name": "status",
1716
+ "outputs": [
1717
+ {
1718
+ "internalType": "uint256",
1719
+ "name": "currentDay",
1720
+ "type": "uint256"
1721
+ },
1722
+ {
1723
+ "internalType": "uint256",
1724
+ "name": "dailyUbi",
1725
+ "type": "uint256"
1726
+ },
1727
+ {
1728
+ "internalType": "uint256",
1729
+ "name": "dailyCyclePool",
1730
+ "type": "uint256"
1731
+ },
1732
+ {
1733
+ "internalType": "uint256",
1734
+ "name": "startOfCycle",
1735
+ "type": "uint256"
1736
+ },
1737
+ {
1738
+ "internalType": "uint256",
1739
+ "name": "currentCycleLength",
1740
+ "type": "uint256"
1741
+ },
1742
+ {
1743
+ "internalType": "uint256",
1744
+ "name": "periodClaimers",
1745
+ "type": "uint256"
1746
+ },
1747
+ {
1748
+ "internalType": "uint256",
1749
+ "name": "periodDistributed",
1750
+ "type": "uint256"
1751
+ },
1752
+ {
1753
+ "internalType": "uint32",
1754
+ "name": "membersCount",
1755
+ "type": "uint32"
1756
+ }
1757
+ ],
1758
+ "stateMutability": "view",
1759
+ "type": "function"
1760
+ },
1761
+ {
1762
+ "inputs": [],
1763
+ "name": "superToken",
1764
+ "outputs": [
1765
+ {
1766
+ "internalType": "contract ISuperToken",
1767
+ "name": "",
1768
+ "type": "address"
1769
+ }
1770
+ ],
1771
+ "stateMutability": "view",
1772
+ "type": "function"
1773
+ },
1774
+ {
1775
+ "inputs": [
1776
+ {
1777
+ "internalType": "address",
1778
+ "name": "_sender",
1779
+ "type": "address"
1780
+ },
1781
+ {
1782
+ "internalType": "uint256",
1783
+ "name": "_amount",
1784
+ "type": "uint256"
1785
+ },
1786
+ {
1787
+ "internalType": "bytes",
1788
+ "name": "_ctx",
1789
+ "type": "bytes"
1790
+ }
1791
+ ],
1792
+ "name": "support",
1793
+ "outputs": [
1794
+ {
1795
+ "internalType": "bytes",
1796
+ "name": "",
1797
+ "type": "bytes"
1798
+ }
1799
+ ],
1800
+ "stateMutability": "nonpayable",
1801
+ "type": "function"
1802
+ },
1803
+ {
1804
+ "inputs": [
1805
+ {
1806
+ "internalType": "address",
1807
+ "name": "_sender",
1808
+ "type": "address"
1809
+ },
1810
+ {
1811
+ "components": [
1812
+ {
1813
+ "internalType": "address",
1814
+ "name": "swapFrom",
1815
+ "type": "address"
1816
+ },
1817
+ {
1818
+ "internalType": "uint256",
1819
+ "name": "amount",
1820
+ "type": "uint256"
1821
+ },
1822
+ {
1823
+ "internalType": "uint256",
1824
+ "name": "minReturn",
1825
+ "type": "uint256"
1826
+ },
1827
+ {
1828
+ "internalType": "uint256",
1829
+ "name": "deadline",
1830
+ "type": "uint256"
1831
+ },
1832
+ {
1833
+ "internalType": "bytes",
1834
+ "name": "path",
1835
+ "type": "bytes"
1836
+ }
1837
+ ],
1838
+ "internalType": "struct HelperLibrary.SwapData",
1839
+ "name": "_customData",
1840
+ "type": "tuple"
1841
+ },
1842
+ {
1843
+ "internalType": "bytes",
1844
+ "name": "_ctx",
1845
+ "type": "bytes"
1846
+ }
1847
+ ],
1848
+ "name": "supportWithSwap",
1849
+ "outputs": [
1850
+ {
1851
+ "internalType": "bytes",
1852
+ "name": "",
1853
+ "type": "bytes"
1854
+ }
1855
+ ],
1856
+ "stateMutability": "nonpayable",
1857
+ "type": "function"
1858
+ },
1859
+ {
1860
+ "inputs": [
1861
+ {
1862
+ "internalType": "address",
1863
+ "name": "",
1864
+ "type": "address"
1865
+ }
1866
+ ],
1867
+ "name": "supporters",
1868
+ "outputs": [
1869
+ {
1870
+ "internalType": "uint256",
1871
+ "name": "contribution",
1872
+ "type": "uint256"
1873
+ },
1874
+ {
1875
+ "internalType": "int96",
1876
+ "name": "flowRate",
1877
+ "type": "int96"
1878
+ },
1879
+ {
1880
+ "internalType": "uint128",
1881
+ "name": "lastUpdated",
1882
+ "type": "uint128"
1883
+ }
1884
+ ],
1885
+ "stateMutability": "view",
1886
+ "type": "function"
1887
+ },
1888
+ {
1889
+ "inputs": [
1890
+ {
1891
+ "internalType": "bytes4",
1892
+ "name": "interfaceId",
1893
+ "type": "bytes4"
1894
+ }
1895
+ ],
1896
+ "name": "supportsInterface",
1897
+ "outputs": [
1898
+ {
1899
+ "internalType": "bool",
1900
+ "name": "",
1901
+ "type": "bool"
1902
+ }
1903
+ ],
1904
+ "stateMutability": "view",
1905
+ "type": "function"
1906
+ },
1907
+ {
1908
+ "inputs": [],
1909
+ "name": "swapRouter",
1910
+ "outputs": [
1911
+ {
1912
+ "internalType": "contract IV3SwapRouter",
1913
+ "name": "",
1914
+ "type": "address"
1915
+ }
1916
+ ],
1917
+ "stateMutability": "view",
1918
+ "type": "function"
1919
+ },
1920
+ {
1921
+ "inputs": [],
1922
+ "name": "ubiSettings",
1923
+ "outputs": [
1924
+ {
1925
+ "internalType": "uint32",
1926
+ "name": "cycleLengthDays",
1927
+ "type": "uint32"
1928
+ },
1929
+ {
1930
+ "internalType": "uint32",
1931
+ "name": "claimPeriodDays",
1932
+ "type": "uint32"
1933
+ },
1934
+ {
1935
+ "internalType": "uint32",
1936
+ "name": "minActiveUsers",
1937
+ "type": "uint32"
1938
+ },
1939
+ {
1940
+ "internalType": "bool",
1941
+ "name": "claimForEnabled",
1942
+ "type": "bool"
1943
+ },
1944
+ {
1945
+ "internalType": "uint256",
1946
+ "name": "maxClaimAmount",
1947
+ "type": "uint256"
1948
+ },
1949
+ {
1950
+ "internalType": "uint32",
1951
+ "name": "maxMembers",
1952
+ "type": "uint32"
1953
+ },
1954
+ {
1955
+ "internalType": "bool",
1956
+ "name": "onlyMembers",
1957
+ "type": "bool"
1958
+ }
1959
+ ],
1960
+ "stateMutability": "view",
1961
+ "type": "function"
1962
+ },
1963
+ {
1964
+ "inputs": [
1965
+ {
1966
+ "internalType": "address",
1967
+ "name": "newImplementation",
1968
+ "type": "address"
1969
+ }
1970
+ ],
1971
+ "name": "upgradeTo",
1972
+ "outputs": [],
1973
+ "stateMutability": "nonpayable",
1974
+ "type": "function"
1975
+ },
1976
+ {
1977
+ "inputs": [
1978
+ {
1979
+ "internalType": "address",
1980
+ "name": "newImplementation",
1981
+ "type": "address"
1982
+ },
1983
+ {
1984
+ "internalType": "bytes",
1985
+ "name": "data",
1986
+ "type": "bytes"
1987
+ }
1988
+ ],
1989
+ "name": "upgradeToAndCall",
1990
+ "outputs": [],
1991
+ "stateMutability": "payable",
1992
+ "type": "function"
1993
+ },
1994
+ {
1995
+ "inputs": [
1996
+ {
1997
+ "internalType": "bytes",
1998
+ "name": "data",
1999
+ "type": "bytes"
2000
+ }
2001
+ ],
2002
+ "name": "upgradeToLatest",
2003
+ "outputs": [],
2004
+ "stateMutability": "payable",
2005
+ "type": "function"
2006
+ }
2007
+ ],
2008
+ "bytecode": "0x60e06040523060c0523480156200001557600080fd5b5060405162005c2c38038062005c2c833981016040819052620000389162000098565b6001600160a01b038216608081905282908290620000695760405163538ba4f960e01b815260040160405180910390fd5b6001600160a01b031660a05250620000d7915050565b6001600160a01b03811681146200009557600080fd5b50565b60008060408385031215620000ac57600080fd5b8251620000b9816200007f565b6020840151909250620000cc816200007f565b809150509250929050565b60805160a05160c051615aae6200017e6000396000818161124201528181611282015281816115da0152818161161a01526116920152600081816109d001528181610ed80152612595015260008181610c1e01528181610e5a015281816111080152818161174001528181611b8c015281816120a4015281816121ec015281816124ab01528181612dc6015281816130ec0152818161318301526131ed0152615aae6000f3fe6080604052600436106102915760003560e01c806301ffc9a7146102965780630b1ca49a146102cb5780630c710776146102ed5780630ce82d67146103195780630e0cc1b91461033c578063198055381461035c5780631a2a84b3146103955780631a787f2e146103b55780631db128c7146103d5578063200d2ed214610402578063229a36fa14610484578063230dbd29146104a4578063248a9ca3146104c4578063298052df146104e45780632b4116f7146104f95780632f2ff15d1461052657806330d9c9151461054657806336568abe146105665780633659cfe6146105865780633e6968b6146105a657806346b6a742146105bb5780634e71d92d146105db5780634f1ef286146105f057806352d1902d1461060357806353c11f99146106185780635860975414610638578063598f8fbf146106585780635a4c5152146106785780635ab1bd531461070f5780635da93292146107245780635f9e7d77146107395780636180c79314610759578063647c75e21461077957806372ca8a3e146107ea57806373b2e80e1461080a578063791ea89b1461082a5780637b1039991461084a57806388480f0c1461086b578063884d1f40146108bd57806391d14854146108dd57806398d6621b146108fd5780639f8fddd214610912578063a10f469e14610932578063a217fddf14610954578063a4c0ed3614610969578063ae82720014610989578063bcb4546f1461099c578063c31c9c07146109be578063c7713870146109f2578063d3112b2e14610a07578063d547741f14610a3c578063d80528ae14610a5c578063d86ed3e514610aed578063dc61d5c214610b0d578063def482a414610b60578063e06174e414610b80578063ec87621c14610bea578063f437bc5914610c0c575b600080fd5b3480156102a257600080fd5b506102b66102b13660046148f3565b610c40565b60405190151581526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004614932565b610c77565b005b3480156102f957600080fd5b506103066459df64940081565b604051600b9190910b81526020016102c2565b34801561032557600080fd5b5061032e610cab565b6040519081526020016102c2565b34801561034857600080fd5b506102eb61035736600461496d565b610cc9565b34801561036857600080fd5b50610371610cfe565b604080516001600160a01b03909316835263ffffffff9091166020830152016102c2565b3480156103a157600080fd5b5061032e6103b0366004614932565b610d1d565b3480156103c157600080fd5b5061032e6103d0366004614932565b610dbd565b3480156103e157600080fd5b506103f56103f0366004614b0e565b610e38565b6040516102c29190614bd5565b34801561040e57600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f546101405461014254610443979695949392919063ffffffff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015263ffffffff1660e0820152610100016102c2565b34801561049057600080fd5b506102eb61049f366004614c33565b610f59565b3480156104b057600080fd5b506103f56104bf366004614cdf565b61103f565b3480156104d057600080fd5b5061032e6104df366004614da9565b611086565b3480156104f057600080fd5b5061032e61109b565b34801561050557600080fd5b50609754610519906001600160a01b031681565b6040516102c29190614dc2565b34801561053257600080fd5b506102eb610541366004614dd6565b6110da565b34801561055257600080fd5b506103f5610561366004614dfb565b6110fb565b34801561057257600080fd5b506102eb610581366004614dd6565b6111be565b34801561059257600080fd5b506102eb6105a1366004614932565b611238565b3480156105b257600080fd5b5061032e611300565b3480156105c757600080fd5b506102eb6105d636600461505d565b61131c565b3480156105e757600080fd5b506102eb6115c3565b6102eb6105fe3660046150b9565b6115d0565b34801561060f57600080fd5b5061032e611685565b34801561062457600080fd5b506103f5610633366004614cdf565b611733565b34801561064457600080fd5b506102eb610653366004615108565b611810565b34801561066457600080fd5b506102eb610673366004615134565b611882565b34801561068457600080fd5b506101375461013854610139546106ca9263ffffffff80821693600160201b808404831694600160401b850484169460ff600160601b9091048116948216929091041687565b6040805163ffffffff98891681529688166020880152948716948601949094529115156060850152608084015290921660a082015290151560c082015260e0016102c2565b34801561071b57600080fd5b506105196119b7565b34801561073057600080fd5b5061032e6119c7565b34801561074557600080fd5b506103f5610754366004614dfb565b611b7f565b34801561076557600080fd5b506102b66107743660046150b9565b611c64565b34801561078557600080fd5b506107c3610794366004614932565b60986020526000908152604090208054600190910154600b81900b90600160601b90046001600160801b031683565b60408051938452600b9290920b60208401526001600160801b0316908201526060016102c2565b3480156107f657600080fd5b506102b6610805366004614932565b611dc9565b34801561081657600080fd5b506102b6610825366004614932565b611ddd565b34801561083657600080fd5b506102eb610845366004615150565b611f07565b34801561085657600080fd5b5061014354610519906001600160a01b031681565b34801561087757600080fd5b506101445461014554610146546108969263ffffffff90811692911683565b6040805163ffffffff948516815260208101939093529216918101919091526060016102c2565b3480156108c957600080fd5b506103f56108d8366004614dfb565b612097565b3480156108e957600080fd5b506102b66108f8366004614dd6565b612194565b34801561090957600080fd5b5061032e6121bf565b34801561091e57600080fd5b506103f561092d366004615186565b6121ca565b34801561093e57600080fd5b5061032e600080516020615a5983398151915281565b34801561096057600080fd5b5061032e600081565b34801561097557600080fd5b506102b66109843660046151d4565b612284565b6102eb610997366004615223565b6122fd565b3480156109a857600080fd5b5061032e6000805160206159b283398151915281565b3480156109ca57600080fd5b506105197f000000000000000000000000000000000000000000000000000000000000000081565b3480156109fe57600080fd5b5061032e612383565b348015610a1357600080fd5b50609954609a54610a2e916001600160a01b03908116911682565b6040516102c2929190615257565b348015610a4857600080fd5b506102eb610a57366004614dd6565b612394565b348015610a6857600080fd5b50609b54609c54609d54609e54609f5460a05460a154610aa3969594936001600160a01b0380821694600160a01b909204600b0b9391169188565b604080519889526020890197909752958701949094526001600160a01b039283166060870152600b9190910b60808601521660a084015260c083015260e0820152610100016102c2565b348015610af957600080fd5b506103f5610b08366004614cdf565b6123b0565b348015610b1957600080fd5b50610b226123de565b604080519788526020880196909652948601939093526060850191909152600b90810b608085015290810b60a08401520b60c082015260e0016102c2565b348015610b6c57600080fd5b506103f5610b7b366004615271565b612489565b348015610b8c57600080fd5b5061013354610134546101355461013654610bb7936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016102c2565b348015610bf657600080fd5b5061032e600080516020615a1283398151915281565b348015610c1857600080fd5b506105197f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216637965db0b60e01b1480610c7157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020615a12833981519152610c8f816126dc565b610ca7600080516020615a59833981519152836126e6565b5050565b61013d54600090610cba611300565b610cc491906152e5565b905090565b61013754600160601b900460ff16610cf4576040516369973f2560e11b815260040160405180910390fd5b610ca782826127c6565b61013354610146546001600160a01b039091169163ffffffff90911690565b6001600160a01b0381166000908152609860209081526040808320815160608101835281548152600190910154600b81900b938201849052600160601b90046001600160801b031691810191909152908203610d7a575192915050565b6040810151610d92906001600160801b0316426152e5565b81602001516001600160601b0316610daa91906152f8565b8151610db6919061530f565b9392505050565b6000610dc7611300565b61013a54148015610dda575061013b5415155b15610e30576101445463ffffffff1615801590610e0557506101445461013f5463ffffffff90911611155b15610e1257506000919050565b610e1b82611ddd565b610e285761013b54610c71565b600092915050565b610c71612383565b606082336001600160a01b03821614801590610e7d5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610ea6573360405163087231bf60e31b8152600401610e9d9190614dc2565b60405180910390fd5b6097546040516358c0dacb60e01b815273__$0d78a42341742155da77b97d7f993534c7$__916358c0dacb91610f0e917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b0316908a90600401615367565b602060405180830381865af4158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f91906153a2565b5091949350505050565b600080516020615a12833981519152610f71816126dc565b838214610f915760405163899ef10d60e01b815260040160405180910390fd5b60005b8481101561103757611024868683818110610fb157610fb16153bb565b9050602002016020810190610fc69190614932565b858584818110610fd857610fd86153bb565b9050602002810190610fea91906153d1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6b92505050565b508061102f81615417565b915050610f94565b505050505050565b6060600061104f87890189615430565b5090506000806110618789018961546d565b915091506110738d8484848a8a612c32565b93505050505b9998505050505050505050565b60009081526065602052604090206001015490565b61013754600090600160201b900463ffffffff166110b7611300565b6110c1919061530f565b6110ce90620151806152f8565b610cc49061a8c061530f565b6110e382611086565b6110ec816126dc565b6110f68383612c79565b505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114657604051632f2d36a760e01b815260040160405180910390fd5b61114f87612da0565b6111725750604080518082019091526002815261060f60f31b60208201526111b3565b61117b88611dc9565b61119857604051631ea25bab60e31b815260040160405180910390fd5b50604080518082019091526002815261060f60f31b60208201525b979650505050505050565b6001600160a01b038116331461122e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610e9d565b610ca782826126e6565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112805760405162461bcd60e51b8152600401610e9d9061548b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112b2612e54565b6001600160a01b0316146112d85760405162461bcd60e51b8152600401610e9d906154c5565b6112e181612e70565b604080516000808252602082019092526112fd91839190612e7b565b50565b60006201518061131261a8c0426152e5565b610cc491906154ff565b600054610100900460ff161580801561133c5750600054600160ff909116105b8061135d575061134b30612fe6565b15801561135d575060005460ff166001145b6113c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e9d565b6000805460ff1916600117905580156113e3576000805461ff0019166101001790555b61014380546001600160a01b03199081166001600160a01b038581169190911790925586516101338054831691841691909117905560208088015161013480548416918516919091179055604080890151610135805485169186169190911790556060808a0151610136805490951695169490941790925586516101378054898401518a860151968b015163ffffffff9485166001600160401b031990931692909217600160201b91851682021764ffffffffff60401b1916600160401b9785169790970260ff60601b191696909617600160601b9115159190910217905560808801516101385560a0880151610139805460c08b015192841664ffffffffff1990911617911515909502179093558551610144805463ffffffff199081169286169290921790559086015161014555908501516101468054909216921691909117905561153085612ff5565b61153984613035565b61154460003361308c565b611560600080516020615a12833981519152866000015161308c565b61013654611576906001600160a01b0316613096565b80156115bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6115ce3360016127c6565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116185760405162461bcd60e51b8152600401610e9d9061548b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661164a612e54565b6001600160a01b0316146116705760405162461bcd60e51b8152600401610e9d906154c5565b61167982612e70565b610ca782826001612e7b565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117205760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610e9d565b506000805160206159f283398151915290565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611773575061177189612da0565b155b8061178457506117828a611dc9565b155b156117c85782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935061107992505050565b6000806117d7888a018a615430565b90925090506000806117eb888a018a615521565b915091506117fe8e858584868c8c6132c7565b9e9d5050505050505050505050505050565b6097546040516332d4cd0360e11b815273__$0d78a42341742155da77b97d7f993534c7$__916365a99a0691611856916001600160a01b03169086908690600401615546565b60006040518083038186803b15801561186e57600080fd5b505af4158015611037573d6000803e3d6000fd5b600080516020615a1283398151915261189a816126dc565b6118a382612ff5565b6101335482516001600160a01b039081169116146118fd57610133546118e190600080516020615a12833981519152906001600160a01b03166126e6565b6118fd600080516020615a12833981519152836000015161308c565b815161013380546001600160a01b03199081166001600160a01b03938416908117909255602080860180516101348054851691871691909117905560408088018051610135805487169189169190911790556060808a0180516101368054909816908a161790965582519687529251871693860193909352915185168483015291519093169082015290517fc5e56c36231b7247b96ddd6a7e47b60748a332bcb3a514d016fd2e74d9159351916080908290030190a15050565b610143546001600160a01b031690565b6000806119d2611300565b6101375461013a549192506119f591600160201b90910463ffffffff169061530f565b8110611b76576000806000611a0861331a565b9250925092508015611af157610136546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611a46903090600401614dc2565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8791906153a2565b61013c8590556101375463ffffffff1661013e81905561013d879055604080518881526020810184905290810191909152606081018690529091507f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a1505b61013a84905561013b829055610145548211611b0e57600061013b555b61013b5461013f5461014054604080518881526020810194909452438482015260608401929092526080830152517fdd2b882b89647cd6c5641ce6ab9d46f1c17865d2b22f065850f30f83cc7d8cf89181900360a00190a15050600061013f81905561014055505b505061013b5490565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611bbf5750611bbd87612da0565b155b80611bd05750611bce88611dc9565b155b15611bf45750604080518082019091526002815261060f60f31b60208201526111b3565b600080611c0386880188615430565b9092509050600080611c1f6001600160a01b038d1685856134cc565b5050915091508181604051602001611c44929190918252600b0b602082015260400190565b604051602081830303815290604052945050505050979650505050505050565b600080611c718484612a6b565b905080610db657610135546001600160a01b031615611d2a57610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690611cbc908890600401614dc2565b602060405180830381865afa158015611cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfd919061556a565b90506001600160a01b038116611d285784604051630b7b234960e01b8152600401610e9d9190614dc2565b505b610134546001600160a01b031615801590611d5a5750611d58600080516020615a1283398151915233612194565b155b15611d7a578360405163130f4a3760e11b8152600401610e9d9190614dc2565b61013954600160201b900460ff168015611da95750611da7600080516020615a1283398151915233612194565b155b15610db65783604051636f6acad560e01b8152600401610e9d9190614dc2565b6097546001600160a01b0390811691161490565b6101355460009082906001600160a01b031615611e6957610135546040516316874da360e11b81526001600160a01b0390911690632d0e9b4690611e25908690600401614dc2565b602060405180830381865afa158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e66919061556a565b90505b610135546040516316874da360e11b81526001600160a01b0390911690632d0e9b4690611e9a908690600401614dc2565b602060405180830381865afa158015611eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edb919061556a565b9050611ee5611300565b6001600160a01b03909116600090815261014160205260409020541492915050565b600080516020615a12833981519152611f1f816126dc565b611f2883613035565b8251610137805460208087015160408089015160608a01511515600160601b0260ff60601b1963ffffffff928316600160401b021664ffffffffff60401b19948316600160201b9081026001600160401b0319909816998416999099179690961793909316949094179190911790935560808701516101385560a0870151610139805460c08a0151151590960264ffffffffff1990961691841691909117949094179093558451610144805491831663ffffffff19928316179055928501516101455584820151610146805491909216931692909217909155517f9c2d0f3e240667c2b704104ff988af37be9eb4befb81fe00424626b088ee75799061208a908590600060e08201905063ffffffff808451168352806020850151166020840152806040850151166040840152606084015115156060840152608084015160808401528060a08501511660a08401525060c0830151151560c083015292915050565b60405180910390a1505050565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120e257604051632f2d36a760e01b815260040160405180910390fd5b6120eb87612da0565b61210e5750604080518082019091526002815261060f60f31b60208201526111b3565b61211788611dc9565b61213457604051631ea25bab60e31b815260040160405180910390fd5b600061214285870187615430565b50905060008061215c6001600160a01b038c1684306134cc565b505060408051600b9290920b60208301528181019290925281518082038301815260609091019091529b9a5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610cc433610dbd565b606083336001600160a01b0382161480159061220f5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b1561222f573360405163087231bf60e31b8152600401610e9d9190614dc2565b8360000361225057604051630f6fa54560e41b815260040160405180910390fd5b609754612268906001600160a01b0316863087613564565b610f4f858560006040518060200160405280600081525061366a565b6097546000906001600160a01b031633146122b257604051630ce706f760e41b815260040160405180910390fd5b836000036122d357604051630f6fa54560e41b815260040160405180910390fd5b6122ef858560006040518060200160405280600081525061366a565b50600190505b949350505050565b6101435460408051638abf607760e01b815290516000926001600160a01b031691638abf60779160048083019260209291908290030181865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c919061556a565b905061237781612e70565b610ca781836000612e7b565b600061238d61331a565b5092915050565b61239d82611086565b6123a6816126dc565b6110f683836126e6565b606060006123c087890189615430565b5090506123cf8b828686613d12565b9b9a5050505050505050505050565b60975460405163b2f918a160e01b815260009182918291829182918291829173__$0d78a42341742155da77b97d7f993534c7$__9163b2f918a19161243291609b916001600160a01b031690600401615587565b60e060405180830381865af415801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190615611565b959d949c50929a50909850965094509092509050565b606083336001600160a01b038216148015906124ce5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b156124ee573360405163087231bf60e31b8152600401610e9d9190614dc2565b6097546040516370a0823160e01b81526000916001600160a01b0316906370a082319061251f903090600401614dc2565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256091906153a2565b6097546040516321437a5360e01b815291925073__$0d78a42341742155da77b97d7f993534c7$__916321437a53916125cf917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b03909116908c903090600401615685565b602060405180830381865af41580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906153a2565b506097546040516370a0823160e01b815260009183916001600160a01b03909116906370a0823190612646903090600401614dc2565b602060405180830381865afa158015612663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268791906153a2565b61269191906152e5565b9050806000036126b457604051630f6fa54560e41b815260040160405180910390fd5b6126d0878260006040518060200160405280600081525061366a565b50939695505050505050565b6112fd8133613d60565b600080516020615a59833981519152821480156127165750612716600080516020615a5983398151915282612194565b156127bc5761014280546001919060009061273890849063ffffffff166156c6565b825463ffffffff9182166101009390930a9283029190920219909116179055506101435460405163058e524d60e11b81526001600160a01b0390911690630b1ca49a90612789908490600401614dc2565b600060405180830381600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050505b610ca78282613db9565b610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906127f8908690600401614dc2565b602060405180830381865afa158015612815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612839919061556a565b90506001600160a01b0381166128645782604051630b7b234960e01b8152600401610e9d9190614dc2565b6101395463ffffffff1615801590612887575061013954600160201b900460ff16155b156128a4576128a4600080516020615a5983398151915284612c79565b6101395463ffffffff161515806128c5575061013954600160201b900460ff165b80156128e657506128e4600080516020615a5983398151915284612194565b155b15612906578260405163130f4a3760e11b8152600401610e9d9190614dc2565b6101445463ffffffff161580159061292c57506101445461013f5463ffffffff90911611155b156129525761013f54604051635136bc3160e01b81526004810191909152602401610e9d565b600061295c6119c7565b61013a546001600160a01b03841660009081526101416020526040902054919250900361299e5781604051631fc1cabf60e31b8152600401610e9d9190614dc2565b61013a546001600160a01b0383166000908152610141602052604081209190915561013f8054600192906129d390849061530f565b909155505061014080548291906000906129ee90849061530f565b90915550612a18905083612a025784612a04565b825b610136546001600160a01b03169083613e20565b836001600160a01b0316826001600160a01b03167f1c0764b87f885ff7e1be5f7c06a0cc99c5bdc0f7b4884440e6ebe5b12bfd511d83604051612a5d91815260200190565b60405180910390a350505050565b6000612a85600080516020615a5983398151915284612194565b15612a9257506001610c71565b610135546001600160a01b031615612b3357610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690612ad6908790600401614dc2565b602060405180830381865afa158015612af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b17919061556a565b90506001600160a01b038116612b31576000915050610c71565b505b610134546001600160a01b031615612bd557610134546040516356a42afd60e11b81526001600160a01b039091169063ad4855fa90612b7c9030903390889088906004016156e3565b6020604051808303816000875af1158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190615721565b1515600003612bd057506000610c71565b612c11565b61013954600160201b900460ff168015612c045750612c02600080516020615a1283398151915233612194565b155b15612c1157506000610c71565b612c29600080516020615a5983398151915284612c79565b50600192915050565b60606111b38686600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b600080516020615a5983398151915282148015612cab5750612ca9600080516020615a5983398151915282612194565b155b15612d96576101395463ffffffff1615801590612cd85750610139546101425463ffffffff918216911610155b15612cf657604051632263c94160e01b815260040160405180910390fd5b6101435460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc90612d27908490600401614dc2565b600060405180830381600087803b158015612d4157600080fd5b505af1158015612d55573d6000803e3d6000fd5b5050610142805460019350909150600090612d7790849063ffffffff1661573e565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610ca78282613e76565b604051635b69006f60e11b81526000805160206159b283398151915260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6d200de90602401602060405180830381865afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e39919061556a565b6001600160a01b0316826001600160a01b0316149050919050565b6000805160206159f2833981519152546001600160a01b031690565b6000610ca7816126dc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612eae576110f683613efc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f08575060408051601f3d908101601f19168201909252612f05918101906153a2565b60015b612f6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610e9d565b6000805160206159f28339815191528114612fda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610e9d565b506110f6838383613f96565b6001600160a01b03163b151590565b80516001600160a01b03161580613017575060608101516001600160a01b0316155b156112fd57604051631e597d8360e11b815260040160405180910390fd5b602081015163ffffffff1615806130515750805163ffffffff16155b806130645750604081015163ffffffff16155b80613017575060808101516112fd57604051631e597d8360e11b815260040160405180910390fd5b610ca78282612c79565b6001600160a01b0381166130bd5760405163538ba4f960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383811691909117909155604051631e51d6a760e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690633ca3ad4e90613123903090600401614dc2565b602060405180830381865afa158015613140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131649190615721565b15156000036131e2576040516315a722b960e31b8152600160048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ad3915c890602401600060405180830381600087803b1580156131cf57600080fd5b505af19250505080156131e0575060015b505b6040805180820182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168082529151635b69006f60e11b81526000805160206159b283398151915260048201529091602083019163b6d200de90602401602060405180830381865afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613289919061556a565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a8054909316911617905550565b606061330e8786600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b98975050505050505050565b610136546040516370a0823160e01b81526000918291829182916001600160a01b03909116906370a0823190613354903090600401614dc2565b602060405180830381865afa158015613371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339591906153a2565b610137549091506000906133af9063ffffffff16836154ff565b90506000606461013a6002015460696133c891906152f8565b6133d291906154ff565b821180613416575061013e546133e6610cab565b1115801561341657506133f7610cab565b61013e5461340591906152e5565b61013c5461341391906152f8565b83105b61013c5461013e5490975090915061342c610cab565b61343790600161530f565b1015806134415750805b15613461576101375461345a9063ffffffff16846154ff565b9550600193505b6101385461013f546134b191906134a29061271090613482906129046152f8565b61348c91906154ff565b61013754600160401b900463ffffffff16613fc1565b6134ac90896154ff565b613fd8565b610145549095508510156134c457600094505b505050909192565b60008060008060006134dd88613fe7565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e88890613511908b908b908b9060040161575b565b608060405180830381865afa15801561352e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613552919061577e565b929b919a509850909650945050505050565b600080856001600160a01b03166323b872dd60e01b86868660405160240161358e93929190615546565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516135cc91906157bc565b6000604051808303816000865af19150503d8060008114613609576040519150601f19603f3d011682016040523d82523d6000602084013e61360e565b606091505b50915091508180156136385750805115806136385750808060200190518101906136389190615721565b6110375760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610e9d565b80518190151560008061367b610cfe565b609754919350915073__$0d78a42341742155da77b97d7f993534c7$__9063934e2cce90609b906001600160a01b03166136b36119b7565b85886136bf578c6136c2565b60005b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b03938416602486015292909116604484015263ffffffff166064830152608482015260a40160006040518083038186803b15801561372257600080fd5b505af4158015613736573d6000803e3d6000fd5b50506097546000925061375491506001600160a01b03168a30614156565b6001600160a01b038a166000908152609860205260409020549091508415613b4957600082600b0b13801561379157506459df649400600b83900b125b156137b457604051624963df60e91b8152600b83900b6004820152602401610e9d565b6001600160a01b038a16600090815260986020526040902060010180546001600160e01b031916600160601b426001600160801b038116919091026001600160601b031916919091176001600160601b038516179091556138169089906152e5565b613820908a6152f8565b6001600160a01b038b166000908152609860205260408120805490919061384890849061530f565b90915550600090506138586119b7565b6001600160a01b031614613a1b5761386e6119b7565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cf919061556a565b93506138d96119b7565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393a91906157d8565b925073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60030160009054906101000a90046001600160a01b031688888f8961399591906157f5565b8d6040518863ffffffff1660e01b81526004016139b89796959493929190615822565b600060405180830381865af41580156139d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139fd9190810190615872565b609e80546001600160a01b0319166001600160a01b03871617905595505b613a23610cfe565b809450819550505073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60040160009054906101000a90046001600160a01b031688888f89613a8491906157f5565b8d6040518863ffffffff1660e01b8152600401613aa79796959493929190615822565b600060405180830381865af4158015613ac4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aec9190810190615872565b609f80546001600160a01b0319166001600160a01b0387811691909117909155609754919750613b1d9116306141e4565b609e80546001600160601b0392909216600160a01b026001600160a01b03909216919091179055613c88565b6000613b536119b7565b6001600160a01b031614613c4257613b696119b7565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bca919061556a565b9350613bd46119b7565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3591906157d8565b9250613c4284848b614263565b613c4a610cfe565b9094509250613c5a84848b614263565b6001600160a01b038a16600090815260986020526040812080548b9290613c8290849061530f565b90915550505b6001600160a01b038a166000818152609860205260409020547f6342e11b65ccb38a3bb259be9cda846c74ad52b36b62a2ee4799dc3db63a04a390839088613cd1576000613cd3565b8c5b604080519384526020840192909252600b90810b8383015286900b60608301528815156080830152519081900360a00190a25050505050949350505050565b6060613d578460008086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b95945050505050565b613d6a8282612194565b610ca757613d77816142af565b613d828360206142c1565b604051602001613d939291906158df565b60408051601f198184030181529082905262461bcd60e51b8252610e9d91600401614bd5565b613dc38282612194565b15610ca75760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6110f68363a9059cbb60e01b8484604051602401613e3f92919061594e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261445c565b613e808282612194565b610ca75760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613eb83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b613f0581612fe6565b613f675760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610e9d565b6000805160206159f283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f9f8361452e565b600082511180613fac5750805b156110f657613fbb838361456e565b50505050565b600081831015613fd15781610db6565b5090919050565b6000818310613fd15781610db6565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b038116614125576001600160a01b0382166140ac57826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015614085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a9919061556a565b91505b604051635b69006f60e11b81526000805160206159b283398151915260048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa1580156140fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614122919061556a565b90505b6001600160a01b03821661413b5761413b615967565b6001600160a01b03811661415157614151615967565b915091565b60008061416285613fe7565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e888906141969088908890889060040161575b565b608060405180830381865afa1580156141b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d7919061577e565b5090979650505050505050565b6000806141f084613fe7565b60405163e8e7e2d160e01b81529092506001600160a01b038316915063e8e7e2d1906142229087908790600401615257565b602060405180830381865afa15801561423f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f5919061597d565b6001600160a01b03831661427657505050565b600061271061428b63ffffffff8516846152f8565b61429591906154ff565b609754909150613fbb906001600160a01b03168583614657565b6060610c716001600160a01b03831660145b606060006142d08360026152f8565b6142db90600261530f565b6001600160401b038111156142f2576142f26149b3565b6040519080825280601f01601f19166020018201604052801561431c576020820181803683370190505b509050600360fc1b81600081518110614337576143376153bb565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614366576143666153bb565b60200101906001600160f81b031916908160001a905350600061438a8460026152f8565b61439590600161530f565b90505b600181111561440d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106143c9576143c96153bb565b1a60f81b8282815181106143df576143df6153bb565b60200101906001600160f81b031916908160001a90535060049490941c936144068161599a565b9050614398565b508315610db65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e9d565b60006144b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661475a9092919063ffffffff16565b8051909150156110f657808060200190518101906144cf9190615721565b6110f65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e9d565b61453781613efc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061457983612fe6565b6145d45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610e9d565b600080846001600160a01b0316846040516145ef91906157bc565b600060405180830381855af49150503d806000811461462a576040519150601f19603f3d011682016040523d82523d6000602084013e61462f565b606091505b5091509150613d578282604051806060016040528060278152602001615a3260279139614769565b600080846001600160a01b031663a9059cbb60e01b858560405160240161467f92919061594e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516146bd91906157bc565b6000604051808303816000865af19150503d80600081146146fa576040519150601f19603f3d011682016040523d82523d6000602084013e6146ff565b606091505b50915091508180156147295750805115806147295750808060200190518101906147299190615721565b6115bc5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610e9d565b60606122f58484600085614782565b60608315614778575081610db6565b610db68383614852565b6060824710156147e35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e9d565b600080866001600160a01b031685876040516147ff91906157bc565b60006040518083038185875af1925050503d806000811461483c576040519150601f19603f3d011682016040523d82523d6000602084013e614841565b606091505b50915091506111b38783838761487c565b8151156148625781518083602001fd5b8060405162461bcd60e51b8152600401610e9d9190614bd5565b606083156148e95782516000036148e25761489685612fe6565b6148e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e9d565b50816122f5565b6122f58383614852565b60006020828403121561490557600080fd5b81356001600160e01b031981168114610db657600080fd5b6001600160a01b03811681146112fd57600080fd5b60006020828403121561494457600080fd5b8135610db68161491d565b80151581146112fd57600080fd5b80356149688161494f565b919050565b6000806040838503121561498057600080fd5b823561498b8161491d565b9150602083013561499b8161494f565b809150509250929050565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156149f1576149f16149b3565b604052919050565b60006001600160401b03821115614a1257614a126149b3565b50601f01601f191660200190565b600082601f830112614a3157600080fd5b8135614a44614a3f826149f9565b6149c9565b818152846020838601011115614a5957600080fd5b816020850160208301376000918101602001919091529392505050565b600060a08284031215614a8857600080fd5b60405160a081016001600160401b038082118383101715614aab57614aab6149b3565b8160405282935084359150614abf8261491d565b8183526020850135602084015260408501356040840152606085013560608401526080850135915080821115614af457600080fd5b50614b0185828601614a20565b6080830152505092915050565b600080600060608486031215614b2357600080fd5b83356001600160401b0380821115614b3a57600080fd5b614b4687838801614a76565b945060208601359150614b588261491d565b90925060408501359080821115614b6e57600080fd5b50614b7b86828701614a20565b9150509250925092565b60005b83811015614ba0578181015183820152602001614b88565b50506000910152565b60008151808452614bc1816020860160208601614b85565b601f01601f19169290920160200192915050565b602081526000610db66020830184614ba9565b60008083601f840112614bfa57600080fd5b5081356001600160401b03811115614c1157600080fd5b6020830191508360208260051b8501011115614c2c57600080fd5b9250929050565b60008060008060408587031215614c4957600080fd5b84356001600160401b0380821115614c6057600080fd5b614c6c88838901614be8565b90965094506020870135915080821115614c8557600080fd5b50614c9287828801614be8565b95989497509550505050565b60008083601f840112614cb057600080fd5b5081356001600160401b03811115614cc757600080fd5b602083019150836020828501011115614c2c57600080fd5b600080600080600080600080600060c08a8c031215614cfd57600080fd5b8935614d088161491d565b985060208a0135614d188161491d565b975060408a0135965060608a01356001600160401b0380821115614d3b57600080fd5b614d478d838e01614c9e565b909850965060808c0135915080821115614d6057600080fd5b614d6c8d838e01614c9e565b909650945060a08c0135915080821115614d8557600080fd5b50614d928c828d01614c9e565b915080935050809150509295985092959850929598565b600060208284031215614dbb57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060408385031215614de957600080fd5b82359150602083013561499b8161491d565b600080600080600080600060a0888a031215614e1657600080fd5b8735614e218161491d565b96506020880135614e318161491d565b95506040880135945060608801356001600160401b0380821115614e5457600080fd5b614e608b838c01614c9e565b909650945060808a0135915080821115614e7957600080fd5b50614e868a828b01614c9e565b989b979a50959850939692959293505050565b600060808284031215614eab57600080fd5b604051608081016001600160401b0381118282101715614ecd57614ecd6149b3565b6040529050808235614ede8161491d565b81526020830135614eee8161491d565b60208201526040830135614f018161491d565b60408201526060830135614f148161491d565b6060919091015292915050565b63ffffffff811681146112fd57600080fd5b803561496881614f21565b600060e08284031215614f5057600080fd5b60405160e081016001600160401b0381118282101715614f7257614f726149b3565b6040529050808235614f8381614f21565b81526020830135614f9381614f21565b60208201526040830135614fa681614f21565b60408201526060830135614fb98161494f565b606082015260808381013590820152614fd460a08401614f33565b60a0820152614fe560c0840161495d565b60c08201525092915050565b60006060828403121561500357600080fd5b604051606081016001600160401b0381118282101715615025576150256149b3565b604052905080823561503681614f21565b815260208381013590820152604083013561505081614f21565b6040919091015292915050565b6000806000806101e0858703121561507457600080fd5b61507e8686614e99565b935061508d8660808701614f3e565b925061509d866101608701614ff1565b91506101c08501356150ae8161491d565b939692955090935050565b600080604083850312156150cc57600080fd5b82356150d78161491d565b915060208301356001600160401b038111156150f257600080fd5b6150fe85828601614a20565b9150509250929050565b6000806040838503121561511b57600080fd5b82356151268161491d565b946020939093013593505050565b60006080828403121561514657600080fd5b610db68383614e99565b600080610140838503121561516457600080fd5b61516e8484614f3e565b915061517d8460e08501614ff1565b90509250929050565b60008060006060848603121561519b57600080fd5b83356151a68161491d565b92506020840135915060408401356001600160401b038111156151c857600080fd5b614b7b86828701614a20565b600080600080606085870312156151ea57600080fd5b84356151f58161491d565b93506020850135925060408501356001600160401b0381111561521757600080fd5b614c9287828801614c9e565b60006020828403121561523557600080fd5b81356001600160401b0381111561524b57600080fd5b6122f584828501614a20565b6001600160a01b0392831681529116602082015260400190565b60008060006060848603121561528657600080fd5b83356152918161491d565b925060208401356001600160401b03808211156152ad57600080fd5b6152b987838801614a76565b93506040860135915080821115614b6e57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610c7157610c716152cf565b8082028115828204841417610c7157610c716152cf565b80820180821115610c7157610c716152cf565b60018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526000608082015160a060808501526122f560a0850182614ba9565b600060018060a01b038087168352608060208401526153896080840187615322565b9481166040840152929092166060909101525092915050565b6000602082840312156153b457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153e857600080fd5b8301803591506001600160401b0382111561540257600080fd5b602001915036819003821315614c2c57600080fd5b600060018201615429576154296152cf565b5060010190565b6000806040838503121561544357600080fd5b823561544e8161491d565b9150602083013561499b8161491d565b80600b0b81146112fd57600080fd5b6000806040838503121561548057600080fd5b82356151268161545e565b6020808252602c908201526000805160206159d283398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206159d283398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008261551c57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561553457600080fd5b82359150602083013561499b8161545e565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561557c57600080fd5b8151610db68161491d565b82548152600183015460208201526002830154604082015260038301546101208201906155c0606084016001600160a01b0383166149a6565b6155d2608084018260a01d600b0b9052565b5060048401546001600160a01b03166155ee60a08401826149a6565b50600584015460c0830152600684015460e0830152610db66101008301846149a6565b600080600080600080600060e0888a03121561562c57600080fd5b8751965060208801519550604088015194506060880151935060808801516156538161545e565b60a08901519093506156648161545e565b60c08901519092506156758161545e565b8091505092959891949750929550565b600060018060a01b03808816835260a060208401526156a760a0840188615322565b9581166040840152938416606083015250911660809091015292915050565b63ffffffff82811682821603908082111561238d5761238d6152cf565b6001600160a01b03858116825284811660208301528316604082015260806060820181905260009061571790830184614ba9565b9695505050505050565b60006020828403121561573357600080fd5b8151610db68161494f565b63ffffffff81811683821601908082111561238d5761238d6152cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000806000806080858703121561579457600080fd5b8451935060208501516157a68161545e565b6040860151606090960151949790965092505050565b600082516157ce818460208701614b85565b9190910192915050565b6000602082840312156157ea57600080fd5b8151610db681614f21565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610c7157610c716152cf565b8781526001600160a01b03878116602083015286811660408301528516606082015263ffffffff84166080820152600b83900b60a082015260e060c0820181905260009061107990830184614ba9565b60006020828403121561588457600080fd5b81516001600160401b0381111561589a57600080fd5b8201601f810184136158ab57600080fd5b80516158b9614a3f826149f9565b8181528560208385010111156158ce57600080fd5b613d57826020830160208601614b85565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615911816017850160208801614b85565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615942816028840160208801614b85565b01602801949350505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561598f57600080fd5b8151610db68161545e565b6000816159a9576159a96152cf565b50600019019056fea9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd346756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564829b824e2329e205435d941c9f13baf578548505283d29261236d8e6596d4636a264697066735822122062f743e946a147009c29cfe1143fc87a4d6429bfea9b25233a94acfa52341f3364736f6c63430008130033",
2009
+ "deployedBytecode": "0x6080604052600436106102915760003560e01c806301ffc9a7146102965780630b1ca49a146102cb5780630c710776146102ed5780630ce82d67146103195780630e0cc1b91461033c578063198055381461035c5780631a2a84b3146103955780631a787f2e146103b55780631db128c7146103d5578063200d2ed214610402578063229a36fa14610484578063230dbd29146104a4578063248a9ca3146104c4578063298052df146104e45780632b4116f7146104f95780632f2ff15d1461052657806330d9c9151461054657806336568abe146105665780633659cfe6146105865780633e6968b6146105a657806346b6a742146105bb5780634e71d92d146105db5780634f1ef286146105f057806352d1902d1461060357806353c11f99146106185780635860975414610638578063598f8fbf146106585780635a4c5152146106785780635ab1bd531461070f5780635da93292146107245780635f9e7d77146107395780636180c79314610759578063647c75e21461077957806372ca8a3e146107ea57806373b2e80e1461080a578063791ea89b1461082a5780637b1039991461084a57806388480f0c1461086b578063884d1f40146108bd57806391d14854146108dd57806398d6621b146108fd5780639f8fddd214610912578063a10f469e14610932578063a217fddf14610954578063a4c0ed3614610969578063ae82720014610989578063bcb4546f1461099c578063c31c9c07146109be578063c7713870146109f2578063d3112b2e14610a07578063d547741f14610a3c578063d80528ae14610a5c578063d86ed3e514610aed578063dc61d5c214610b0d578063def482a414610b60578063e06174e414610b80578063ec87621c14610bea578063f437bc5914610c0c575b600080fd5b3480156102a257600080fd5b506102b66102b13660046148f3565b610c40565b60405190151581526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004614932565b610c77565b005b3480156102f957600080fd5b506103066459df64940081565b604051600b9190910b81526020016102c2565b34801561032557600080fd5b5061032e610cab565b6040519081526020016102c2565b34801561034857600080fd5b506102eb61035736600461496d565b610cc9565b34801561036857600080fd5b50610371610cfe565b604080516001600160a01b03909316835263ffffffff9091166020830152016102c2565b3480156103a157600080fd5b5061032e6103b0366004614932565b610d1d565b3480156103c157600080fd5b5061032e6103d0366004614932565b610dbd565b3480156103e157600080fd5b506103f56103f0366004614b0e565b610e38565b6040516102c29190614bd5565b34801561040e57600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f546101405461014254610443979695949392919063ffffffff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015263ffffffff1660e0820152610100016102c2565b34801561049057600080fd5b506102eb61049f366004614c33565b610f59565b3480156104b057600080fd5b506103f56104bf366004614cdf565b61103f565b3480156104d057600080fd5b5061032e6104df366004614da9565b611086565b3480156104f057600080fd5b5061032e61109b565b34801561050557600080fd5b50609754610519906001600160a01b031681565b6040516102c29190614dc2565b34801561053257600080fd5b506102eb610541366004614dd6565b6110da565b34801561055257600080fd5b506103f5610561366004614dfb565b6110fb565b34801561057257600080fd5b506102eb610581366004614dd6565b6111be565b34801561059257600080fd5b506102eb6105a1366004614932565b611238565b3480156105b257600080fd5b5061032e611300565b3480156105c757600080fd5b506102eb6105d636600461505d565b61131c565b3480156105e757600080fd5b506102eb6115c3565b6102eb6105fe3660046150b9565b6115d0565b34801561060f57600080fd5b5061032e611685565b34801561062457600080fd5b506103f5610633366004614cdf565b611733565b34801561064457600080fd5b506102eb610653366004615108565b611810565b34801561066457600080fd5b506102eb610673366004615134565b611882565b34801561068457600080fd5b506101375461013854610139546106ca9263ffffffff80821693600160201b808404831694600160401b850484169460ff600160601b9091048116948216929091041687565b6040805163ffffffff98891681529688166020880152948716948601949094529115156060850152608084015290921660a082015290151560c082015260e0016102c2565b34801561071b57600080fd5b506105196119b7565b34801561073057600080fd5b5061032e6119c7565b34801561074557600080fd5b506103f5610754366004614dfb565b611b7f565b34801561076557600080fd5b506102b66107743660046150b9565b611c64565b34801561078557600080fd5b506107c3610794366004614932565b60986020526000908152604090208054600190910154600b81900b90600160601b90046001600160801b031683565b60408051938452600b9290920b60208401526001600160801b0316908201526060016102c2565b3480156107f657600080fd5b506102b6610805366004614932565b611dc9565b34801561081657600080fd5b506102b6610825366004614932565b611ddd565b34801561083657600080fd5b506102eb610845366004615150565b611f07565b34801561085657600080fd5b5061014354610519906001600160a01b031681565b34801561087757600080fd5b506101445461014554610146546108969263ffffffff90811692911683565b6040805163ffffffff948516815260208101939093529216918101919091526060016102c2565b3480156108c957600080fd5b506103f56108d8366004614dfb565b612097565b3480156108e957600080fd5b506102b66108f8366004614dd6565b612194565b34801561090957600080fd5b5061032e6121bf565b34801561091e57600080fd5b506103f561092d366004615186565b6121ca565b34801561093e57600080fd5b5061032e600080516020615a5983398151915281565b34801561096057600080fd5b5061032e600081565b34801561097557600080fd5b506102b66109843660046151d4565b612284565b6102eb610997366004615223565b6122fd565b3480156109a857600080fd5b5061032e6000805160206159b283398151915281565b3480156109ca57600080fd5b506105197f000000000000000000000000000000000000000000000000000000000000000081565b3480156109fe57600080fd5b5061032e612383565b348015610a1357600080fd5b50609954609a54610a2e916001600160a01b03908116911682565b6040516102c2929190615257565b348015610a4857600080fd5b506102eb610a57366004614dd6565b612394565b348015610a6857600080fd5b50609b54609c54609d54609e54609f5460a05460a154610aa3969594936001600160a01b0380821694600160a01b909204600b0b9391169188565b604080519889526020890197909752958701949094526001600160a01b039283166060870152600b9190910b60808601521660a084015260c083015260e0820152610100016102c2565b348015610af957600080fd5b506103f5610b08366004614cdf565b6123b0565b348015610b1957600080fd5b50610b226123de565b604080519788526020880196909652948601939093526060850191909152600b90810b608085015290810b60a08401520b60c082015260e0016102c2565b348015610b6c57600080fd5b506103f5610b7b366004615271565b612489565b348015610b8c57600080fd5b5061013354610134546101355461013654610bb7936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016102c2565b348015610bf657600080fd5b5061032e600080516020615a1283398151915281565b348015610c1857600080fd5b506105197f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216637965db0b60e01b1480610c7157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020615a12833981519152610c8f816126dc565b610ca7600080516020615a59833981519152836126e6565b5050565b61013d54600090610cba611300565b610cc491906152e5565b905090565b61013754600160601b900460ff16610cf4576040516369973f2560e11b815260040160405180910390fd5b610ca782826127c6565b61013354610146546001600160a01b039091169163ffffffff90911690565b6001600160a01b0381166000908152609860209081526040808320815160608101835281548152600190910154600b81900b938201849052600160601b90046001600160801b031691810191909152908203610d7a575192915050565b6040810151610d92906001600160801b0316426152e5565b81602001516001600160601b0316610daa91906152f8565b8151610db6919061530f565b9392505050565b6000610dc7611300565b61013a54148015610dda575061013b5415155b15610e30576101445463ffffffff1615801590610e0557506101445461013f5463ffffffff90911611155b15610e1257506000919050565b610e1b82611ddd565b610e285761013b54610c71565b600092915050565b610c71612383565b606082336001600160a01b03821614801590610e7d5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610ea6573360405163087231bf60e31b8152600401610e9d9190614dc2565b60405180910390fd5b6097546040516358c0dacb60e01b815273__$0d78a42341742155da77b97d7f993534c7$__916358c0dacb91610f0e917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b0316908a90600401615367565b602060405180830381865af4158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f91906153a2565b5091949350505050565b600080516020615a12833981519152610f71816126dc565b838214610f915760405163899ef10d60e01b815260040160405180910390fd5b60005b8481101561103757611024868683818110610fb157610fb16153bb565b9050602002016020810190610fc69190614932565b858584818110610fd857610fd86153bb565b9050602002810190610fea91906153d1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6b92505050565b508061102f81615417565b915050610f94565b505050505050565b6060600061104f87890189615430565b5090506000806110618789018961546d565b915091506110738d8484848a8a612c32565b93505050505b9998505050505050505050565b60009081526065602052604090206001015490565b61013754600090600160201b900463ffffffff166110b7611300565b6110c1919061530f565b6110ce90620151806152f8565b610cc49061a8c061530f565b6110e382611086565b6110ec816126dc565b6110f68383612c79565b505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114657604051632f2d36a760e01b815260040160405180910390fd5b61114f87612da0565b6111725750604080518082019091526002815261060f60f31b60208201526111b3565b61117b88611dc9565b61119857604051631ea25bab60e31b815260040160405180910390fd5b50604080518082019091526002815261060f60f31b60208201525b979650505050505050565b6001600160a01b038116331461122e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610e9d565b610ca782826126e6565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112805760405162461bcd60e51b8152600401610e9d9061548b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112b2612e54565b6001600160a01b0316146112d85760405162461bcd60e51b8152600401610e9d906154c5565b6112e181612e70565b604080516000808252602082019092526112fd91839190612e7b565b50565b60006201518061131261a8c0426152e5565b610cc491906154ff565b600054610100900460ff161580801561133c5750600054600160ff909116105b8061135d575061134b30612fe6565b15801561135d575060005460ff166001145b6113c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e9d565b6000805460ff1916600117905580156113e3576000805461ff0019166101001790555b61014380546001600160a01b03199081166001600160a01b038581169190911790925586516101338054831691841691909117905560208088015161013480548416918516919091179055604080890151610135805485169186169190911790556060808a0151610136805490951695169490941790925586516101378054898401518a860151968b015163ffffffff9485166001600160401b031990931692909217600160201b91851682021764ffffffffff60401b1916600160401b9785169790970260ff60601b191696909617600160601b9115159190910217905560808801516101385560a0880151610139805460c08b015192841664ffffffffff1990911617911515909502179093558551610144805463ffffffff199081169286169290921790559086015161014555908501516101468054909216921691909117905561153085612ff5565b61153984613035565b61154460003361308c565b611560600080516020615a12833981519152866000015161308c565b61013654611576906001600160a01b0316613096565b80156115bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6115ce3360016127c6565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116185760405162461bcd60e51b8152600401610e9d9061548b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661164a612e54565b6001600160a01b0316146116705760405162461bcd60e51b8152600401610e9d906154c5565b61167982612e70565b610ca782826001612e7b565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117205760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610e9d565b506000805160206159f283398151915290565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611773575061177189612da0565b155b8061178457506117828a611dc9565b155b156117c85782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935061107992505050565b6000806117d7888a018a615430565b90925090506000806117eb888a018a615521565b915091506117fe8e858584868c8c6132c7565b9e9d5050505050505050505050505050565b6097546040516332d4cd0360e11b815273__$0d78a42341742155da77b97d7f993534c7$__916365a99a0691611856916001600160a01b03169086908690600401615546565b60006040518083038186803b15801561186e57600080fd5b505af4158015611037573d6000803e3d6000fd5b600080516020615a1283398151915261189a816126dc565b6118a382612ff5565b6101335482516001600160a01b039081169116146118fd57610133546118e190600080516020615a12833981519152906001600160a01b03166126e6565b6118fd600080516020615a12833981519152836000015161308c565b815161013380546001600160a01b03199081166001600160a01b03938416908117909255602080860180516101348054851691871691909117905560408088018051610135805487169189169190911790556060808a0180516101368054909816908a161790965582519687529251871693860193909352915185168483015291519093169082015290517fc5e56c36231b7247b96ddd6a7e47b60748a332bcb3a514d016fd2e74d9159351916080908290030190a15050565b610143546001600160a01b031690565b6000806119d2611300565b6101375461013a549192506119f591600160201b90910463ffffffff169061530f565b8110611b76576000806000611a0861331a565b9250925092508015611af157610136546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611a46903090600401614dc2565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8791906153a2565b61013c8590556101375463ffffffff1661013e81905561013d879055604080518881526020810184905290810191909152606081018690529091507f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a1505b61013a84905561013b829055610145548211611b0e57600061013b555b61013b5461013f5461014054604080518881526020810194909452438482015260608401929092526080830152517fdd2b882b89647cd6c5641ce6ab9d46f1c17865d2b22f065850f30f83cc7d8cf89181900360a00190a15050600061013f81905561014055505b505061013b5490565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611bbf5750611bbd87612da0565b155b80611bd05750611bce88611dc9565b155b15611bf45750604080518082019091526002815261060f60f31b60208201526111b3565b600080611c0386880188615430565b9092509050600080611c1f6001600160a01b038d1685856134cc565b5050915091508181604051602001611c44929190918252600b0b602082015260400190565b604051602081830303815290604052945050505050979650505050505050565b600080611c718484612a6b565b905080610db657610135546001600160a01b031615611d2a57610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690611cbc908890600401614dc2565b602060405180830381865afa158015611cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfd919061556a565b90506001600160a01b038116611d285784604051630b7b234960e01b8152600401610e9d9190614dc2565b505b610134546001600160a01b031615801590611d5a5750611d58600080516020615a1283398151915233612194565b155b15611d7a578360405163130f4a3760e11b8152600401610e9d9190614dc2565b61013954600160201b900460ff168015611da95750611da7600080516020615a1283398151915233612194565b155b15610db65783604051636f6acad560e01b8152600401610e9d9190614dc2565b6097546001600160a01b0390811691161490565b6101355460009082906001600160a01b031615611e6957610135546040516316874da360e11b81526001600160a01b0390911690632d0e9b4690611e25908690600401614dc2565b602060405180830381865afa158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e66919061556a565b90505b610135546040516316874da360e11b81526001600160a01b0390911690632d0e9b4690611e9a908690600401614dc2565b602060405180830381865afa158015611eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edb919061556a565b9050611ee5611300565b6001600160a01b03909116600090815261014160205260409020541492915050565b600080516020615a12833981519152611f1f816126dc565b611f2883613035565b8251610137805460208087015160408089015160608a01511515600160601b0260ff60601b1963ffffffff928316600160401b021664ffffffffff60401b19948316600160201b9081026001600160401b0319909816998416999099179690961793909316949094179190911790935560808701516101385560a0870151610139805460c08a0151151590960264ffffffffff1990961691841691909117949094179093558451610144805491831663ffffffff19928316179055928501516101455584820151610146805491909216931692909217909155517f9c2d0f3e240667c2b704104ff988af37be9eb4befb81fe00424626b088ee75799061208a908590600060e08201905063ffffffff808451168352806020850151166020840152806040850151166040840152606084015115156060840152608084015160808401528060a08501511660a08401525060c0830151151560c083015292915050565b60405180910390a1505050565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120e257604051632f2d36a760e01b815260040160405180910390fd5b6120eb87612da0565b61210e5750604080518082019091526002815261060f60f31b60208201526111b3565b61211788611dc9565b61213457604051631ea25bab60e31b815260040160405180910390fd5b600061214285870187615430565b50905060008061215c6001600160a01b038c1684306134cc565b505060408051600b9290920b60208301528181019290925281518082038301815260609091019091529b9a5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610cc433610dbd565b606083336001600160a01b0382161480159061220f5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b1561222f573360405163087231bf60e31b8152600401610e9d9190614dc2565b8360000361225057604051630f6fa54560e41b815260040160405180910390fd5b609754612268906001600160a01b0316863087613564565b610f4f858560006040518060200160405280600081525061366a565b6097546000906001600160a01b031633146122b257604051630ce706f760e41b815260040160405180910390fd5b836000036122d357604051630f6fa54560e41b815260040160405180910390fd5b6122ef858560006040518060200160405280600081525061366a565b50600190505b949350505050565b6101435460408051638abf607760e01b815290516000926001600160a01b031691638abf60779160048083019260209291908290030181865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c919061556a565b905061237781612e70565b610ca781836000612e7b565b600061238d61331a565b5092915050565b61239d82611086565b6123a6816126dc565b6110f683836126e6565b606060006123c087890189615430565b5090506123cf8b828686613d12565b9b9a5050505050505050505050565b60975460405163b2f918a160e01b815260009182918291829182918291829173__$0d78a42341742155da77b97d7f993534c7$__9163b2f918a19161243291609b916001600160a01b031690600401615587565b60e060405180830381865af415801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190615611565b959d949c50929a50909850965094509092509050565b606083336001600160a01b038216148015906124ce5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b156124ee573360405163087231bf60e31b8152600401610e9d9190614dc2565b6097546040516370a0823160e01b81526000916001600160a01b0316906370a082319061251f903090600401614dc2565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256091906153a2565b6097546040516321437a5360e01b815291925073__$0d78a42341742155da77b97d7f993534c7$__916321437a53916125cf917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b03909116908c903090600401615685565b602060405180830381865af41580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906153a2565b506097546040516370a0823160e01b815260009183916001600160a01b03909116906370a0823190612646903090600401614dc2565b602060405180830381865afa158015612663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268791906153a2565b61269191906152e5565b9050806000036126b457604051630f6fa54560e41b815260040160405180910390fd5b6126d0878260006040518060200160405280600081525061366a565b50939695505050505050565b6112fd8133613d60565b600080516020615a59833981519152821480156127165750612716600080516020615a5983398151915282612194565b156127bc5761014280546001919060009061273890849063ffffffff166156c6565b825463ffffffff9182166101009390930a9283029190920219909116179055506101435460405163058e524d60e11b81526001600160a01b0390911690630b1ca49a90612789908490600401614dc2565b600060405180830381600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050505b610ca78282613db9565b610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906127f8908690600401614dc2565b602060405180830381865afa158015612815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612839919061556a565b90506001600160a01b0381166128645782604051630b7b234960e01b8152600401610e9d9190614dc2565b6101395463ffffffff1615801590612887575061013954600160201b900460ff16155b156128a4576128a4600080516020615a5983398151915284612c79565b6101395463ffffffff161515806128c5575061013954600160201b900460ff165b80156128e657506128e4600080516020615a5983398151915284612194565b155b15612906578260405163130f4a3760e11b8152600401610e9d9190614dc2565b6101445463ffffffff161580159061292c57506101445461013f5463ffffffff90911611155b156129525761013f54604051635136bc3160e01b81526004810191909152602401610e9d565b600061295c6119c7565b61013a546001600160a01b03841660009081526101416020526040902054919250900361299e5781604051631fc1cabf60e31b8152600401610e9d9190614dc2565b61013a546001600160a01b0383166000908152610141602052604081209190915561013f8054600192906129d390849061530f565b909155505061014080548291906000906129ee90849061530f565b90915550612a18905083612a025784612a04565b825b610136546001600160a01b03169083613e20565b836001600160a01b0316826001600160a01b03167f1c0764b87f885ff7e1be5f7c06a0cc99c5bdc0f7b4884440e6ebe5b12bfd511d83604051612a5d91815260200190565b60405180910390a350505050565b6000612a85600080516020615a5983398151915284612194565b15612a9257506001610c71565b610135546001600160a01b031615612b3357610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690612ad6908790600401614dc2565b602060405180830381865afa158015612af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b17919061556a565b90506001600160a01b038116612b31576000915050610c71565b505b610134546001600160a01b031615612bd557610134546040516356a42afd60e11b81526001600160a01b039091169063ad4855fa90612b7c9030903390889088906004016156e3565b6020604051808303816000875af1158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190615721565b1515600003612bd057506000610c71565b612c11565b61013954600160201b900460ff168015612c045750612c02600080516020615a1283398151915233612194565b155b15612c1157506000610c71565b612c29600080516020615a5983398151915284612c79565b50600192915050565b60606111b38686600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b600080516020615a5983398151915282148015612cab5750612ca9600080516020615a5983398151915282612194565b155b15612d96576101395463ffffffff1615801590612cd85750610139546101425463ffffffff918216911610155b15612cf657604051632263c94160e01b815260040160405180910390fd5b6101435460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc90612d27908490600401614dc2565b600060405180830381600087803b158015612d4157600080fd5b505af1158015612d55573d6000803e3d6000fd5b5050610142805460019350909150600090612d7790849063ffffffff1661573e565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610ca78282613e76565b604051635b69006f60e11b81526000805160206159b283398151915260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6d200de90602401602060405180830381865afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e39919061556a565b6001600160a01b0316826001600160a01b0316149050919050565b6000805160206159f2833981519152546001600160a01b031690565b6000610ca7816126dc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612eae576110f683613efc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f08575060408051601f3d908101601f19168201909252612f05918101906153a2565b60015b612f6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610e9d565b6000805160206159f28339815191528114612fda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610e9d565b506110f6838383613f96565b6001600160a01b03163b151590565b80516001600160a01b03161580613017575060608101516001600160a01b0316155b156112fd57604051631e597d8360e11b815260040160405180910390fd5b602081015163ffffffff1615806130515750805163ffffffff16155b806130645750604081015163ffffffff16155b80613017575060808101516112fd57604051631e597d8360e11b815260040160405180910390fd5b610ca78282612c79565b6001600160a01b0381166130bd5760405163538ba4f960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383811691909117909155604051631e51d6a760e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690633ca3ad4e90613123903090600401614dc2565b602060405180830381865afa158015613140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131649190615721565b15156000036131e2576040516315a722b960e31b8152600160048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ad3915c890602401600060405180830381600087803b1580156131cf57600080fd5b505af19250505080156131e0575060015b505b6040805180820182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168082529151635b69006f60e11b81526000805160206159b283398151915260048201529091602083019163b6d200de90602401602060405180830381865afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613289919061556a565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a8054909316911617905550565b606061330e8786600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b98975050505050505050565b610136546040516370a0823160e01b81526000918291829182916001600160a01b03909116906370a0823190613354903090600401614dc2565b602060405180830381865afa158015613371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339591906153a2565b610137549091506000906133af9063ffffffff16836154ff565b90506000606461013a6002015460696133c891906152f8565b6133d291906154ff565b821180613416575061013e546133e6610cab565b1115801561341657506133f7610cab565b61013e5461340591906152e5565b61013c5461341391906152f8565b83105b61013c5461013e5490975090915061342c610cab565b61343790600161530f565b1015806134415750805b15613461576101375461345a9063ffffffff16846154ff565b9550600193505b6101385461013f546134b191906134a29061271090613482906129046152f8565b61348c91906154ff565b61013754600160401b900463ffffffff16613fc1565b6134ac90896154ff565b613fd8565b610145549095508510156134c457600094505b505050909192565b60008060008060006134dd88613fe7565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e88890613511908b908b908b9060040161575b565b608060405180830381865afa15801561352e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613552919061577e565b929b919a509850909650945050505050565b600080856001600160a01b03166323b872dd60e01b86868660405160240161358e93929190615546565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516135cc91906157bc565b6000604051808303816000865af19150503d8060008114613609576040519150601f19603f3d011682016040523d82523d6000602084013e61360e565b606091505b50915091508180156136385750805115806136385750808060200190518101906136389190615721565b6110375760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610e9d565b80518190151560008061367b610cfe565b609754919350915073__$0d78a42341742155da77b97d7f993534c7$__9063934e2cce90609b906001600160a01b03166136b36119b7565b85886136bf578c6136c2565b60005b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b03938416602486015292909116604484015263ffffffff166064830152608482015260a40160006040518083038186803b15801561372257600080fd5b505af4158015613736573d6000803e3d6000fd5b50506097546000925061375491506001600160a01b03168a30614156565b6001600160a01b038a166000908152609860205260409020549091508415613b4957600082600b0b13801561379157506459df649400600b83900b125b156137b457604051624963df60e91b8152600b83900b6004820152602401610e9d565b6001600160a01b038a16600090815260986020526040902060010180546001600160e01b031916600160601b426001600160801b038116919091026001600160601b031916919091176001600160601b038516179091556138169089906152e5565b613820908a6152f8565b6001600160a01b038b166000908152609860205260408120805490919061384890849061530f565b90915550600090506138586119b7565b6001600160a01b031614613a1b5761386e6119b7565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cf919061556a565b93506138d96119b7565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393a91906157d8565b925073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60030160009054906101000a90046001600160a01b031688888f8961399591906157f5565b8d6040518863ffffffff1660e01b81526004016139b89796959493929190615822565b600060405180830381865af41580156139d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139fd9190810190615872565b609e80546001600160a01b0319166001600160a01b03871617905595505b613a23610cfe565b809450819550505073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60040160009054906101000a90046001600160a01b031688888f89613a8491906157f5565b8d6040518863ffffffff1660e01b8152600401613aa79796959493929190615822565b600060405180830381865af4158015613ac4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aec9190810190615872565b609f80546001600160a01b0319166001600160a01b0387811691909117909155609754919750613b1d9116306141e4565b609e80546001600160601b0392909216600160a01b026001600160a01b03909216919091179055613c88565b6000613b536119b7565b6001600160a01b031614613c4257613b696119b7565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bca919061556a565b9350613bd46119b7565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3591906157d8565b9250613c4284848b614263565b613c4a610cfe565b9094509250613c5a84848b614263565b6001600160a01b038a16600090815260986020526040812080548b9290613c8290849061530f565b90915550505b6001600160a01b038a166000818152609860205260409020547f6342e11b65ccb38a3bb259be9cda846c74ad52b36b62a2ee4799dc3db63a04a390839088613cd1576000613cd3565b8c5b604080519384526020840192909252600b90810b8383015286900b60608301528815156080830152519081900360a00190a25050505050949350505050565b6060613d578460008086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b95945050505050565b613d6a8282612194565b610ca757613d77816142af565b613d828360206142c1565b604051602001613d939291906158df565b60408051601f198184030181529082905262461bcd60e51b8252610e9d91600401614bd5565b613dc38282612194565b15610ca75760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6110f68363a9059cbb60e01b8484604051602401613e3f92919061594e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261445c565b613e808282612194565b610ca75760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613eb83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b613f0581612fe6565b613f675760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610e9d565b6000805160206159f283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f9f8361452e565b600082511180613fac5750805b156110f657613fbb838361456e565b50505050565b600081831015613fd15781610db6565b5090919050565b6000818310613fd15781610db6565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b038116614125576001600160a01b0382166140ac57826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015614085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a9919061556a565b91505b604051635b69006f60e11b81526000805160206159b283398151915260048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa1580156140fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614122919061556a565b90505b6001600160a01b03821661413b5761413b615967565b6001600160a01b03811661415157614151615967565b915091565b60008061416285613fe7565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e888906141969088908890889060040161575b565b608060405180830381865afa1580156141b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d7919061577e565b5090979650505050505050565b6000806141f084613fe7565b60405163e8e7e2d160e01b81529092506001600160a01b038316915063e8e7e2d1906142229087908790600401615257565b602060405180830381865afa15801561423f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f5919061597d565b6001600160a01b03831661427657505050565b600061271061428b63ffffffff8516846152f8565b61429591906154ff565b609754909150613fbb906001600160a01b03168583614657565b6060610c716001600160a01b03831660145b606060006142d08360026152f8565b6142db90600261530f565b6001600160401b038111156142f2576142f26149b3565b6040519080825280601f01601f19166020018201604052801561431c576020820181803683370190505b509050600360fc1b81600081518110614337576143376153bb565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614366576143666153bb565b60200101906001600160f81b031916908160001a905350600061438a8460026152f8565b61439590600161530f565b90505b600181111561440d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106143c9576143c96153bb565b1a60f81b8282815181106143df576143df6153bb565b60200101906001600160f81b031916908160001a90535060049490941c936144068161599a565b9050614398565b508315610db65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e9d565b60006144b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661475a9092919063ffffffff16565b8051909150156110f657808060200190518101906144cf9190615721565b6110f65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e9d565b61453781613efc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061457983612fe6565b6145d45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610e9d565b600080846001600160a01b0316846040516145ef91906157bc565b600060405180830381855af49150503d806000811461462a576040519150601f19603f3d011682016040523d82523d6000602084013e61462f565b606091505b5091509150613d578282604051806060016040528060278152602001615a3260279139614769565b600080846001600160a01b031663a9059cbb60e01b858560405160240161467f92919061594e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516146bd91906157bc565b6000604051808303816000865af19150503d80600081146146fa576040519150601f19603f3d011682016040523d82523d6000602084013e6146ff565b606091505b50915091508180156147295750805115806147295750808060200190518101906147299190615721565b6115bc5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610e9d565b60606122f58484600085614782565b60608315614778575081610db6565b610db68383614852565b6060824710156147e35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e9d565b600080866001600160a01b031685876040516147ff91906157bc565b60006040518083038185875af1925050503d806000811461483c576040519150601f19603f3d011682016040523d82523d6000602084013e614841565b606091505b50915091506111b38783838761487c565b8151156148625781518083602001fd5b8060405162461bcd60e51b8152600401610e9d9190614bd5565b606083156148e95782516000036148e25761489685612fe6565b6148e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e9d565b50816122f5565b6122f58383614852565b60006020828403121561490557600080fd5b81356001600160e01b031981168114610db657600080fd5b6001600160a01b03811681146112fd57600080fd5b60006020828403121561494457600080fd5b8135610db68161491d565b80151581146112fd57600080fd5b80356149688161494f565b919050565b6000806040838503121561498057600080fd5b823561498b8161491d565b9150602083013561499b8161494f565b809150509250929050565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156149f1576149f16149b3565b604052919050565b60006001600160401b03821115614a1257614a126149b3565b50601f01601f191660200190565b600082601f830112614a3157600080fd5b8135614a44614a3f826149f9565b6149c9565b818152846020838601011115614a5957600080fd5b816020850160208301376000918101602001919091529392505050565b600060a08284031215614a8857600080fd5b60405160a081016001600160401b038082118383101715614aab57614aab6149b3565b8160405282935084359150614abf8261491d565b8183526020850135602084015260408501356040840152606085013560608401526080850135915080821115614af457600080fd5b50614b0185828601614a20565b6080830152505092915050565b600080600060608486031215614b2357600080fd5b83356001600160401b0380821115614b3a57600080fd5b614b4687838801614a76565b945060208601359150614b588261491d565b90925060408501359080821115614b6e57600080fd5b50614b7b86828701614a20565b9150509250925092565b60005b83811015614ba0578181015183820152602001614b88565b50506000910152565b60008151808452614bc1816020860160208601614b85565b601f01601f19169290920160200192915050565b602081526000610db66020830184614ba9565b60008083601f840112614bfa57600080fd5b5081356001600160401b03811115614c1157600080fd5b6020830191508360208260051b8501011115614c2c57600080fd5b9250929050565b60008060008060408587031215614c4957600080fd5b84356001600160401b0380821115614c6057600080fd5b614c6c88838901614be8565b90965094506020870135915080821115614c8557600080fd5b50614c9287828801614be8565b95989497509550505050565b60008083601f840112614cb057600080fd5b5081356001600160401b03811115614cc757600080fd5b602083019150836020828501011115614c2c57600080fd5b600080600080600080600080600060c08a8c031215614cfd57600080fd5b8935614d088161491d565b985060208a0135614d188161491d565b975060408a0135965060608a01356001600160401b0380821115614d3b57600080fd5b614d478d838e01614c9e565b909850965060808c0135915080821115614d6057600080fd5b614d6c8d838e01614c9e565b909650945060a08c0135915080821115614d8557600080fd5b50614d928c828d01614c9e565b915080935050809150509295985092959850929598565b600060208284031215614dbb57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060408385031215614de957600080fd5b82359150602083013561499b8161491d565b600080600080600080600060a0888a031215614e1657600080fd5b8735614e218161491d565b96506020880135614e318161491d565b95506040880135945060608801356001600160401b0380821115614e5457600080fd5b614e608b838c01614c9e565b909650945060808a0135915080821115614e7957600080fd5b50614e868a828b01614c9e565b989b979a50959850939692959293505050565b600060808284031215614eab57600080fd5b604051608081016001600160401b0381118282101715614ecd57614ecd6149b3565b6040529050808235614ede8161491d565b81526020830135614eee8161491d565b60208201526040830135614f018161491d565b60408201526060830135614f148161491d565b6060919091015292915050565b63ffffffff811681146112fd57600080fd5b803561496881614f21565b600060e08284031215614f5057600080fd5b60405160e081016001600160401b0381118282101715614f7257614f726149b3565b6040529050808235614f8381614f21565b81526020830135614f9381614f21565b60208201526040830135614fa681614f21565b60408201526060830135614fb98161494f565b606082015260808381013590820152614fd460a08401614f33565b60a0820152614fe560c0840161495d565b60c08201525092915050565b60006060828403121561500357600080fd5b604051606081016001600160401b0381118282101715615025576150256149b3565b604052905080823561503681614f21565b815260208381013590820152604083013561505081614f21565b6040919091015292915050565b6000806000806101e0858703121561507457600080fd5b61507e8686614e99565b935061508d8660808701614f3e565b925061509d866101608701614ff1565b91506101c08501356150ae8161491d565b939692955090935050565b600080604083850312156150cc57600080fd5b82356150d78161491d565b915060208301356001600160401b038111156150f257600080fd5b6150fe85828601614a20565b9150509250929050565b6000806040838503121561511b57600080fd5b82356151268161491d565b946020939093013593505050565b60006080828403121561514657600080fd5b610db68383614e99565b600080610140838503121561516457600080fd5b61516e8484614f3e565b915061517d8460e08501614ff1565b90509250929050565b60008060006060848603121561519b57600080fd5b83356151a68161491d565b92506020840135915060408401356001600160401b038111156151c857600080fd5b614b7b86828701614a20565b600080600080606085870312156151ea57600080fd5b84356151f58161491d565b93506020850135925060408501356001600160401b0381111561521757600080fd5b614c9287828801614c9e565b60006020828403121561523557600080fd5b81356001600160401b0381111561524b57600080fd5b6122f584828501614a20565b6001600160a01b0392831681529116602082015260400190565b60008060006060848603121561528657600080fd5b83356152918161491d565b925060208401356001600160401b03808211156152ad57600080fd5b6152b987838801614a76565b93506040860135915080821115614b6e57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610c7157610c716152cf565b8082028115828204841417610c7157610c716152cf565b80820180821115610c7157610c716152cf565b60018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526000608082015160a060808501526122f560a0850182614ba9565b600060018060a01b038087168352608060208401526153896080840187615322565b9481166040840152929092166060909101525092915050565b6000602082840312156153b457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153e857600080fd5b8301803591506001600160401b0382111561540257600080fd5b602001915036819003821315614c2c57600080fd5b600060018201615429576154296152cf565b5060010190565b6000806040838503121561544357600080fd5b823561544e8161491d565b9150602083013561499b8161491d565b80600b0b81146112fd57600080fd5b6000806040838503121561548057600080fd5b82356151268161545e565b6020808252602c908201526000805160206159d283398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206159d283398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008261551c57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561553457600080fd5b82359150602083013561499b8161545e565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561557c57600080fd5b8151610db68161491d565b82548152600183015460208201526002830154604082015260038301546101208201906155c0606084016001600160a01b0383166149a6565b6155d2608084018260a01d600b0b9052565b5060048401546001600160a01b03166155ee60a08401826149a6565b50600584015460c0830152600684015460e0830152610db66101008301846149a6565b600080600080600080600060e0888a03121561562c57600080fd5b8751965060208801519550604088015194506060880151935060808801516156538161545e565b60a08901519093506156648161545e565b60c08901519092506156758161545e565b8091505092959891949750929550565b600060018060a01b03808816835260a060208401526156a760a0840188615322565b9581166040840152938416606083015250911660809091015292915050565b63ffffffff82811682821603908082111561238d5761238d6152cf565b6001600160a01b03858116825284811660208301528316604082015260806060820181905260009061571790830184614ba9565b9695505050505050565b60006020828403121561573357600080fd5b8151610db68161494f565b63ffffffff81811683821601908082111561238d5761238d6152cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000806000806080858703121561579457600080fd5b8451935060208501516157a68161545e565b6040860151606090960151949790965092505050565b600082516157ce818460208701614b85565b9190910192915050565b6000602082840312156157ea57600080fd5b8151610db681614f21565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610c7157610c716152cf565b8781526001600160a01b03878116602083015286811660408301528516606082015263ffffffff84166080820152600b83900b60a082015260e060c0820181905260009061107990830184614ba9565b60006020828403121561588457600080fd5b81516001600160401b0381111561589a57600080fd5b8201601f810184136158ab57600080fd5b80516158b9614a3f826149f9565b8181528560208385010111156158ce57600080fd5b613d57826020830160208601614b85565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615911816017850160208801614b85565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615942816028840160208801614b85565b01602801949350505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561598f57600080fd5b8151610db68161545e565b6000816159a9576159a96152cf565b50600019019056fea9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd346756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564829b824e2329e205435d941c9f13baf578548505283d29261236d8e6596d4636a264697066735822122062f743e946a147009c29cfe1143fc87a4d6429bfea9b25233a94acfa52341f3364736f6c63430008130033",
2010
+ "linkReferences": {
2011
+ "contracts/utils/HelperLibrary.sol": {
2012
+ "HelperLibrary": [
2013
+ {
2014
+ "length": 20,
2015
+ "start": 4150
2016
+ },
2017
+ {
2018
+ "length": 20,
2019
+ "start": 6560
2020
+ },
2021
+ {
2022
+ "length": 20,
2023
+ "start": 9597
2024
+ },
2025
+ {
2026
+ "length": 20,
2027
+ "start": 9971
2028
+ },
2029
+ {
2030
+ "length": 20,
2031
+ "start": 14339
2032
+ },
2033
+ {
2034
+ "length": 20,
2035
+ "start": 15036
2036
+ },
2037
+ {
2038
+ "length": 20,
2039
+ "start": 15275
2040
+ }
2041
+ ]
2042
+ }
2043
+ },
2044
+ "deployedLinkReferences": {
2045
+ "contracts/utils/HelperLibrary.sol": {
2046
+ "HelperLibrary": [
2047
+ {
2048
+ "length": 20,
2049
+ "start": 3768
2050
+ },
2051
+ {
2052
+ "length": 20,
2053
+ "start": 6178
2054
+ },
2055
+ {
2056
+ "length": 20,
2057
+ "start": 9215
2058
+ },
2059
+ {
2060
+ "length": 20,
2061
+ "start": 9589
2062
+ },
2063
+ {
2064
+ "length": 20,
2065
+ "start": 13957
2066
+ },
2067
+ {
2068
+ "length": 20,
2069
+ "start": 14654
2070
+ },
2071
+ {
2072
+ "length": 20,
2073
+ "start": 14893
2074
+ }
2075
+ ]
2076
+ }
2077
+ }
2078
+ }