@ensuro/core 2.8.1 → 2.8.2

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 (41) hide show
  1. package/build/contracts/AccessManager.sol/AccessManager.json +618 -0
  2. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +238 -0
  3. package/build/contracts/EToken.sol/EToken.json +1287 -0
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +657 -0
  5. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +222 -0
  6. package/build/contracts/Policy.sol/Policy.json +10 -0
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +1775 -0
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +342 -0
  9. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +1142 -0
  10. package/build/contracts/Reserve.sol/Reserve.json +413 -0
  11. package/build/contracts/RiskModule.sol/RiskModule.json +589 -0
  12. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +1251 -0
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +1145 -0
  14. package/build/contracts/TimeScaled.sol/TimeScaled.json +10 -0
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +1143 -0
  16. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +10 -0
  17. package/build/contracts/interfaces/IAccessManager.sol/IAccessManager.json +343 -0
  18. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +128 -0
  19. package/build/contracts/interfaces/IEToken.sol/IEToken.json +460 -0
  20. package/build/contracts/interfaces/ILPWhitelist.sol/ILPWhitelist.json +103 -0
  21. package/build/contracts/interfaces/IPolicyHolder.sol/IPolicyHolder.json +108 -0
  22. package/build/contracts/interfaces/IPolicyHolderV2.sol/IPolicyHolderV2.json +142 -0
  23. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +820 -0
  24. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +43 -0
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +477 -0
  26. package/build/contracts/interfaces/IRiskModule.sol/IRiskModule.json +165 -0
  27. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +491 -0
  28. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +502 -0
  29. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +736 -0
  30. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  31. package/build/contracts/mocks/IMintableERC20.sol/IMintableERC20.json +47 -0
  32. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +193 -0
  33. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +457 -0
  34. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +54 -0
  35. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +929 -0
  36. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  37. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +1316 -0
  38. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  39. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  40. package/js/deploy.js +6 -25
  41. package/package.json +3 -5
@@ -0,0 +1,657 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "LPManualWhitelist",
4
+ "sourceName": "contracts/LPManualWhitelist.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IPolicyPool",
10
+ "name": "policyPool_",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "NoZeroPolicyPool",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "UpgradeCannotChangePolicyPool",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "anonymous": false,
29
+ "inputs": [
30
+ {
31
+ "indexed": false,
32
+ "internalType": "address",
33
+ "name": "previousAdmin",
34
+ "type": "address"
35
+ },
36
+ {
37
+ "indexed": false,
38
+ "internalType": "address",
39
+ "name": "newAdmin",
40
+ "type": "address"
41
+ }
42
+ ],
43
+ "name": "AdminChanged",
44
+ "type": "event"
45
+ },
46
+ {
47
+ "anonymous": false,
48
+ "inputs": [
49
+ {
50
+ "indexed": true,
51
+ "internalType": "address",
52
+ "name": "beacon",
53
+ "type": "address"
54
+ }
55
+ ],
56
+ "name": "BeaconUpgraded",
57
+ "type": "event"
58
+ },
59
+ {
60
+ "anonymous": false,
61
+ "inputs": [
62
+ {
63
+ "indexed": true,
64
+ "internalType": "enum IAccessManager.GovernanceActions",
65
+ "name": "action",
66
+ "type": "uint8"
67
+ },
68
+ {
69
+ "indexed": false,
70
+ "internalType": "address",
71
+ "name": "value",
72
+ "type": "address"
73
+ }
74
+ ],
75
+ "name": "ComponentChanged",
76
+ "type": "event"
77
+ },
78
+ {
79
+ "anonymous": false,
80
+ "inputs": [
81
+ {
82
+ "indexed": true,
83
+ "internalType": "enum IAccessManager.GovernanceActions",
84
+ "name": "action",
85
+ "type": "uint8"
86
+ },
87
+ {
88
+ "indexed": false,
89
+ "internalType": "uint256",
90
+ "name": "value",
91
+ "type": "uint256"
92
+ }
93
+ ],
94
+ "name": "GovernanceAction",
95
+ "type": "event"
96
+ },
97
+ {
98
+ "anonymous": false,
99
+ "inputs": [
100
+ {
101
+ "indexed": false,
102
+ "internalType": "uint8",
103
+ "name": "version",
104
+ "type": "uint8"
105
+ }
106
+ ],
107
+ "name": "Initialized",
108
+ "type": "event"
109
+ },
110
+ {
111
+ "anonymous": false,
112
+ "inputs": [
113
+ {
114
+ "indexed": false,
115
+ "internalType": "address",
116
+ "name": "provider",
117
+ "type": "address"
118
+ },
119
+ {
120
+ "components": [
121
+ {
122
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
123
+ "name": "deposit",
124
+ "type": "uint8"
125
+ },
126
+ {
127
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
128
+ "name": "withdraw",
129
+ "type": "uint8"
130
+ },
131
+ {
132
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
133
+ "name": "sendTransfer",
134
+ "type": "uint8"
135
+ },
136
+ {
137
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
138
+ "name": "receiveTransfer",
139
+ "type": "uint8"
140
+ }
141
+ ],
142
+ "indexed": false,
143
+ "internalType": "struct LPManualWhitelist.WhitelistStatus",
144
+ "name": "whitelisted",
145
+ "type": "tuple"
146
+ }
147
+ ],
148
+ "name": "LPWhitelistStatusChanged",
149
+ "type": "event"
150
+ },
151
+ {
152
+ "anonymous": false,
153
+ "inputs": [
154
+ {
155
+ "indexed": false,
156
+ "internalType": "address",
157
+ "name": "account",
158
+ "type": "address"
159
+ }
160
+ ],
161
+ "name": "Paused",
162
+ "type": "event"
163
+ },
164
+ {
165
+ "anonymous": false,
166
+ "inputs": [
167
+ {
168
+ "indexed": false,
169
+ "internalType": "address",
170
+ "name": "account",
171
+ "type": "address"
172
+ }
173
+ ],
174
+ "name": "Unpaused",
175
+ "type": "event"
176
+ },
177
+ {
178
+ "anonymous": false,
179
+ "inputs": [
180
+ {
181
+ "indexed": true,
182
+ "internalType": "address",
183
+ "name": "implementation",
184
+ "type": "address"
185
+ }
186
+ ],
187
+ "name": "Upgraded",
188
+ "type": "event"
189
+ },
190
+ {
191
+ "inputs": [],
192
+ "name": "GUARDIAN_ROLE",
193
+ "outputs": [
194
+ {
195
+ "internalType": "bytes32",
196
+ "name": "",
197
+ "type": "bytes32"
198
+ }
199
+ ],
200
+ "stateMutability": "view",
201
+ "type": "function"
202
+ },
203
+ {
204
+ "inputs": [],
205
+ "name": "LEVEL1_ROLE",
206
+ "outputs": [
207
+ {
208
+ "internalType": "bytes32",
209
+ "name": "",
210
+ "type": "bytes32"
211
+ }
212
+ ],
213
+ "stateMutability": "view",
214
+ "type": "function"
215
+ },
216
+ {
217
+ "inputs": [],
218
+ "name": "LEVEL2_ROLE",
219
+ "outputs": [
220
+ {
221
+ "internalType": "bytes32",
222
+ "name": "",
223
+ "type": "bytes32"
224
+ }
225
+ ],
226
+ "stateMutability": "view",
227
+ "type": "function"
228
+ },
229
+ {
230
+ "inputs": [],
231
+ "name": "LEVEL3_ROLE",
232
+ "outputs": [
233
+ {
234
+ "internalType": "bytes32",
235
+ "name": "",
236
+ "type": "bytes32"
237
+ }
238
+ ],
239
+ "stateMutability": "view",
240
+ "type": "function"
241
+ },
242
+ {
243
+ "inputs": [],
244
+ "name": "LP_WHITELIST_ADMIN_ROLE",
245
+ "outputs": [
246
+ {
247
+ "internalType": "bytes32",
248
+ "name": "",
249
+ "type": "bytes32"
250
+ }
251
+ ],
252
+ "stateMutability": "view",
253
+ "type": "function"
254
+ },
255
+ {
256
+ "inputs": [],
257
+ "name": "LP_WHITELIST_ROLE",
258
+ "outputs": [
259
+ {
260
+ "internalType": "bytes32",
261
+ "name": "",
262
+ "type": "bytes32"
263
+ }
264
+ ],
265
+ "stateMutability": "view",
266
+ "type": "function"
267
+ },
268
+ {
269
+ "inputs": [],
270
+ "name": "TWEAK_EXPIRATION",
271
+ "outputs": [
272
+ {
273
+ "internalType": "uint40",
274
+ "name": "",
275
+ "type": "uint40"
276
+ }
277
+ ],
278
+ "stateMutability": "view",
279
+ "type": "function"
280
+ },
281
+ {
282
+ "inputs": [
283
+ {
284
+ "internalType": "contract IEToken",
285
+ "name": "",
286
+ "type": "address"
287
+ },
288
+ {
289
+ "internalType": "address",
290
+ "name": "provider",
291
+ "type": "address"
292
+ },
293
+ {
294
+ "internalType": "uint256",
295
+ "name": "",
296
+ "type": "uint256"
297
+ }
298
+ ],
299
+ "name": "acceptsDeposit",
300
+ "outputs": [
301
+ {
302
+ "internalType": "bool",
303
+ "name": "",
304
+ "type": "bool"
305
+ }
306
+ ],
307
+ "stateMutability": "view",
308
+ "type": "function"
309
+ },
310
+ {
311
+ "inputs": [
312
+ {
313
+ "internalType": "contract IEToken",
314
+ "name": "",
315
+ "type": "address"
316
+ },
317
+ {
318
+ "internalType": "address",
319
+ "name": "providerFrom",
320
+ "type": "address"
321
+ },
322
+ {
323
+ "internalType": "address",
324
+ "name": "providerTo",
325
+ "type": "address"
326
+ },
327
+ {
328
+ "internalType": "uint256",
329
+ "name": "",
330
+ "type": "uint256"
331
+ }
332
+ ],
333
+ "name": "acceptsTransfer",
334
+ "outputs": [
335
+ {
336
+ "internalType": "bool",
337
+ "name": "",
338
+ "type": "bool"
339
+ }
340
+ ],
341
+ "stateMutability": "view",
342
+ "type": "function"
343
+ },
344
+ {
345
+ "inputs": [
346
+ {
347
+ "internalType": "contract IEToken",
348
+ "name": "",
349
+ "type": "address"
350
+ },
351
+ {
352
+ "internalType": "address",
353
+ "name": "provider",
354
+ "type": "address"
355
+ },
356
+ {
357
+ "internalType": "uint256",
358
+ "name": "",
359
+ "type": "uint256"
360
+ }
361
+ ],
362
+ "name": "acceptsWithdrawal",
363
+ "outputs": [
364
+ {
365
+ "internalType": "bool",
366
+ "name": "",
367
+ "type": "bool"
368
+ }
369
+ ],
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
373
+ {
374
+ "inputs": [],
375
+ "name": "currency",
376
+ "outputs": [
377
+ {
378
+ "internalType": "contract IERC20Metadata",
379
+ "name": "",
380
+ "type": "address"
381
+ }
382
+ ],
383
+ "stateMutability": "view",
384
+ "type": "function"
385
+ },
386
+ {
387
+ "inputs": [],
388
+ "name": "getWhitelistDefaults",
389
+ "outputs": [
390
+ {
391
+ "components": [
392
+ {
393
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
394
+ "name": "deposit",
395
+ "type": "uint8"
396
+ },
397
+ {
398
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
399
+ "name": "withdraw",
400
+ "type": "uint8"
401
+ },
402
+ {
403
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
404
+ "name": "sendTransfer",
405
+ "type": "uint8"
406
+ },
407
+ {
408
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
409
+ "name": "receiveTransfer",
410
+ "type": "uint8"
411
+ }
412
+ ],
413
+ "internalType": "struct LPManualWhitelist.WhitelistStatus",
414
+ "name": "",
415
+ "type": "tuple"
416
+ }
417
+ ],
418
+ "stateMutability": "view",
419
+ "type": "function"
420
+ },
421
+ {
422
+ "inputs": [
423
+ {
424
+ "components": [
425
+ {
426
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
427
+ "name": "deposit",
428
+ "type": "uint8"
429
+ },
430
+ {
431
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
432
+ "name": "withdraw",
433
+ "type": "uint8"
434
+ },
435
+ {
436
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
437
+ "name": "sendTransfer",
438
+ "type": "uint8"
439
+ },
440
+ {
441
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
442
+ "name": "receiveTransfer",
443
+ "type": "uint8"
444
+ }
445
+ ],
446
+ "internalType": "struct LPManualWhitelist.WhitelistStatus",
447
+ "name": "defaultStatus",
448
+ "type": "tuple"
449
+ }
450
+ ],
451
+ "name": "initialize",
452
+ "outputs": [],
453
+ "stateMutability": "nonpayable",
454
+ "type": "function"
455
+ },
456
+ {
457
+ "inputs": [],
458
+ "name": "lastTweak",
459
+ "outputs": [
460
+ {
461
+ "internalType": "uint40",
462
+ "name": "",
463
+ "type": "uint40"
464
+ },
465
+ {
466
+ "internalType": "uint56",
467
+ "name": "",
468
+ "type": "uint56"
469
+ }
470
+ ],
471
+ "stateMutability": "view",
472
+ "type": "function"
473
+ },
474
+ {
475
+ "inputs": [],
476
+ "name": "pause",
477
+ "outputs": [],
478
+ "stateMutability": "nonpayable",
479
+ "type": "function"
480
+ },
481
+ {
482
+ "inputs": [],
483
+ "name": "paused",
484
+ "outputs": [
485
+ {
486
+ "internalType": "bool",
487
+ "name": "",
488
+ "type": "bool"
489
+ }
490
+ ],
491
+ "stateMutability": "view",
492
+ "type": "function"
493
+ },
494
+ {
495
+ "inputs": [],
496
+ "name": "policyPool",
497
+ "outputs": [
498
+ {
499
+ "internalType": "contract IPolicyPool",
500
+ "name": "",
501
+ "type": "address"
502
+ }
503
+ ],
504
+ "stateMutability": "view",
505
+ "type": "function"
506
+ },
507
+ {
508
+ "inputs": [],
509
+ "name": "proxiableUUID",
510
+ "outputs": [
511
+ {
512
+ "internalType": "bytes32",
513
+ "name": "",
514
+ "type": "bytes32"
515
+ }
516
+ ],
517
+ "stateMutability": "view",
518
+ "type": "function"
519
+ },
520
+ {
521
+ "inputs": [
522
+ {
523
+ "components": [
524
+ {
525
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
526
+ "name": "deposit",
527
+ "type": "uint8"
528
+ },
529
+ {
530
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
531
+ "name": "withdraw",
532
+ "type": "uint8"
533
+ },
534
+ {
535
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
536
+ "name": "sendTransfer",
537
+ "type": "uint8"
538
+ },
539
+ {
540
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
541
+ "name": "receiveTransfer",
542
+ "type": "uint8"
543
+ }
544
+ ],
545
+ "internalType": "struct LPManualWhitelist.WhitelistStatus",
546
+ "name": "newStatus",
547
+ "type": "tuple"
548
+ }
549
+ ],
550
+ "name": "setWhitelistDefaults",
551
+ "outputs": [],
552
+ "stateMutability": "nonpayable",
553
+ "type": "function"
554
+ },
555
+ {
556
+ "inputs": [
557
+ {
558
+ "internalType": "bytes4",
559
+ "name": "interfaceId",
560
+ "type": "bytes4"
561
+ }
562
+ ],
563
+ "name": "supportsInterface",
564
+ "outputs": [
565
+ {
566
+ "internalType": "bool",
567
+ "name": "",
568
+ "type": "bool"
569
+ }
570
+ ],
571
+ "stateMutability": "view",
572
+ "type": "function"
573
+ },
574
+ {
575
+ "inputs": [],
576
+ "name": "unpause",
577
+ "outputs": [],
578
+ "stateMutability": "nonpayable",
579
+ "type": "function"
580
+ },
581
+ {
582
+ "inputs": [
583
+ {
584
+ "internalType": "address",
585
+ "name": "newImplementation",
586
+ "type": "address"
587
+ }
588
+ ],
589
+ "name": "upgradeTo",
590
+ "outputs": [],
591
+ "stateMutability": "nonpayable",
592
+ "type": "function"
593
+ },
594
+ {
595
+ "inputs": [
596
+ {
597
+ "internalType": "address",
598
+ "name": "newImplementation",
599
+ "type": "address"
600
+ },
601
+ {
602
+ "internalType": "bytes",
603
+ "name": "data",
604
+ "type": "bytes"
605
+ }
606
+ ],
607
+ "name": "upgradeToAndCall",
608
+ "outputs": [],
609
+ "stateMutability": "payable",
610
+ "type": "function"
611
+ },
612
+ {
613
+ "inputs": [
614
+ {
615
+ "internalType": "address",
616
+ "name": "provider",
617
+ "type": "address"
618
+ },
619
+ {
620
+ "components": [
621
+ {
622
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
623
+ "name": "deposit",
624
+ "type": "uint8"
625
+ },
626
+ {
627
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
628
+ "name": "withdraw",
629
+ "type": "uint8"
630
+ },
631
+ {
632
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
633
+ "name": "sendTransfer",
634
+ "type": "uint8"
635
+ },
636
+ {
637
+ "internalType": "enum LPManualWhitelist.WhitelistOptions",
638
+ "name": "receiveTransfer",
639
+ "type": "uint8"
640
+ }
641
+ ],
642
+ "internalType": "struct LPManualWhitelist.WhitelistStatus",
643
+ "name": "newStatus",
644
+ "type": "tuple"
645
+ }
646
+ ],
647
+ "name": "whitelistAddress",
648
+ "outputs": [],
649
+ "stateMutability": "nonpayable",
650
+ "type": "function"
651
+ }
652
+ ],
653
+ "bytecode": "0x60c0604052306080523480156200001557600080fd5b50604051620025013803806200250183398101604081905262000038916200013f565b806001600160a01b0381166200006157604051636b23cf0160e01b815260040160405180910390fd5b6200006b6200007e565b6001600160a01b031660a0525062000171565b600054610100900460ff1615620000eb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146200013d576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200015257600080fd5b81516001600160a01b03811681146200016a57600080fd5b9392505050565b60805160a05161231d620001e4600039600081816102bf015281816106a501528181610a4001528181610b4d01528181610e3b01528181610f3e01528181611149015261168e0152600081816105220152818161056b015281816107b7015281816107f70152610886015261231d6000f3fe60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611b65565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b96000805160206122c883398151915281565b3480156101f557600080fd5b50610209610204366004611ba4565b610518565b005b34801561021757600080fd5b50610170610226366004611bc1565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c49565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611cf1565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d5a565b610b2a565b3480156103f957600080fd5b50610170610408366004611bc1565b610ca3565b34801561041957600080fd5b50610209610428366004611d90565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611d90565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e27565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e35565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b2600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611e81565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611dac565b0361065257506000805260fb6020526000805160206122618339815191525460ff165b60015b81600281111561066757610667611dac565b149150505b9392505050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e35565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611e81565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b5060008051602061228183398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611dac565b0361098a57506000805260fb6020526000805160206122618339815191525462010000900460ff165b600181600281111561099e5761099e611dac565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611dac565b03610a0e57506000805260fb602052600080516020612261833981519152546301000000900460ff165b6001816002811115610a2257610a22611dac565b149150505b949350505050565b6000805160206122c88339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611ecd565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611eea565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611eea565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f21565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611dac565b0361065257506000805260fb60205260008051602061226183398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611eea565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f21565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611ecd565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb60205260408051608081019091526000805160206122618339815191528054829060ff16600281111561102957611029611dac565b600281111561103a5761103a611dac565b81528154602090910190610100900460ff16600281111561105d5761105d611dac565b600281111561106e5761106e611dac565b8152815460209091019062010000900460ff16600281111561109257611092611dac565b60028111156110a3576110a3611dac565b815281546020909101906301000000900460ff1660028111156110c8576110c8611dac565b60028111156110d9576110d9611dac565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361173f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fa6565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b60008051602061228183398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e8383836117db565b6113c1611806565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611413611851565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611dac565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611dac565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611dac565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611dac565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611fbf565b600054610100900460ff166115605760405162461bcd60e51b815260040161056090611fdc565b611568611897565b6105fd816118ce565b60006115806020830183612027565b600281111561159157611591611dac565b141580156115c0575060006115ac6040830160208401612027565b60028111156115bd576115bd611dac565b14155b80156115ed575060006115d96060830160408401612027565b60028111156115ea576115ea611dac565b14155b801561161a575060006116066080830160608401612027565b600281111561161757611617611dac565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611ecd565b6001600160a01b0316146105fd5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6117ac5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b60008051602061228183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6117e483611961565b6000825111806117f15750805b15610c9e5761180083836119a1565b50505050565b60975460ff1661184f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561184f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118be5760405162461bcd60e51b815260040161056090611fdc565b6118c66119c6565b61184f6119ed565b600054610100900460ff166118f55760405162461bcd60e51b815260040161056090611fdc565b6118fe81611571565b6000805260fb6020528060008051602061226183398151915261192182826120c3565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a600082604051611956929190612169565b60405180910390a150565b61196a8161173f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061066c83836040518060600160405280602781526020016122a160279139611a1c565b600054610100900460ff1661184f5760405162461bcd60e51b815260040161056090611fdc565b600054610100900460ff16611a145760405162461bcd60e51b815260040161056090611fdc565b61184f611a94565b6060600080856001600160a01b031685604051611a399190612211565b600060405180830381855af49150503d8060008114611a74576040519150601f19603f3d011682016040523d82523d6000602084013e611a79565b606091505b5091509150611a8a86838387611ac7565b9695505050505050565b600054610100900460ff16611abb5760405162461bcd60e51b815260040161056090611fdc565b6097805460ff19169055565b60608315611b36578251600003611b2f576001600160a01b0385163b611b2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b5081610a27565b610a278383815115611b4b5781518083602001fd5b8060405162461bcd60e51b8152600401610560919061222d565b600060208284031215611b7757600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611bb657600080fd5b813561066c81611b8f565b600080600060608486031215611bd657600080fd5b8335611be181611b8f565b92506020840135611bf181611b8f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c4157611c41611c02565b604052919050565b60008060408385031215611c5c57600080fd5b8235611c6781611b8f565b915060208381013567ffffffffffffffff80821115611c8557600080fd5b818601915086601f830112611c9957600080fd5b813581811115611cab57611cab611c02565b611cbd601f8201601f19168501611c18565b91508082528784828501011115611cd357600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d0757600080fd5b8435611d1281611b8f565b93506020850135611d2281611b8f565b92506040850135611d3281611b8f565b9396929550929360600135925050565b600060808284031215611d5457600080fd5b50919050565b60008060a08385031215611d6d57600080fd5b8235611d7881611b8f565b9150611d878460208501611d42565b90509250929050565b600060808284031215611da257600080fd5b61066c8383611d42565b634e487b7160e01b600052602160045260246000fd5b60038110611de057634e487b7160e01b600052602160045260246000fd5b9052565b611def828251611dc2565b6020810151611e016020840182611dc2565b506040810151611e146040840182611dc2565b506060810151610c9e6060840182611dc2565b608081016105128284611de4565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611edf57600080fd5b815161066c81611b8f565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f3357600080fd5b6040516080810181811067ffffffffffffffff82111715611f5657611f56611c02565b6040528235611f6481611f14565b81526020830135611f7481611f14565b60208201526040830135611f8781611f14565b60408201526060830135611f9a81611f14565b60608201529392505050565b600060208284031215611fb857600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611de4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561203957600080fd5b813561066c81611f14565b6000813561051281611f14565b6003821061206f57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120a757634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b81356120ce81611f14565b600381106120ec57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561210b81611f14565b6003811061212957634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061215461214e60408401612044565b82612051565b6107a961216360608401612044565b82612089565b6001600160a01b038316815260a08101823561218481611f14565b6121916020840182611dc2565b5060208301356121a081611f14565b6121ad6040840182611dc2565b5060408301356121bc81611f14565b6121c96060840182611dc2565b5060608301356121d881611f14565b6121e56080840182611dc2565b509392505050565b60005b838110156122085781810151838201526020016121f0565b50506000910152565b600082516122238184602087016121ed565b9190910192915050565b602081526000825180602084015261224c8160408501602087016121ed565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122005fb35769581529ca3c635230379bd3f7c1c54eff061bb901be3c57bc3f91fab64736f6c63430008100033",
654
+ "deployedBytecode": "0x60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611b65565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b96000805160206122c883398151915281565b3480156101f557600080fd5b50610209610204366004611ba4565b610518565b005b34801561021757600080fd5b50610170610226366004611bc1565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c49565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611cf1565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d5a565b610b2a565b3480156103f957600080fd5b50610170610408366004611bc1565b610ca3565b34801561041957600080fd5b50610209610428366004611d90565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611d90565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e27565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e35565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b2600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611e81565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611dac565b0361065257506000805260fb6020526000805160206122618339815191525460ff165b60015b81600281111561066757610667611dac565b149150505b9392505050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e35565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e600080516020612281833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611e81565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b5060008051602061228183398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611dac565b0361098a57506000805260fb6020526000805160206122618339815191525462010000900460ff165b600181600281111561099e5761099e611dac565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611dac565b03610a0e57506000805260fb602052600080516020612261833981519152546301000000900460ff165b6001816002811115610a2257610a22611dac565b149150505b949350505050565b6000805160206122c88339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611ecd565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611eea565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611eea565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f21565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611dac565b0361065257506000805260fb60205260008051602061226183398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611ecd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611eea565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f21565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611ecd565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb60205260408051608081019091526000805160206122618339815191528054829060ff16600281111561102957611029611dac565b600281111561103a5761103a611dac565b81528154602090910190610100900460ff16600281111561105d5761105d611dac565b600281111561106e5761106e611dac565b8152815460209091019062010000900460ff16600281111561109257611092611dac565b60028111156110a3576110a3611dac565b815281546020909101906301000000900460ff1660028111156110c8576110c8611dac565b60028111156110d9576110d9611dac565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206122c88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611ecd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361173f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fa6565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b60008051602061228183398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e8383836117db565b6113c1611806565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611413611851565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611dac565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611dac565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611dac565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611dac565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611fbf565b600054610100900460ff166115605760405162461bcd60e51b815260040161056090611fdc565b611568611897565b6105fd816118ce565b60006115806020830183612027565b600281111561159157611591611dac565b141580156115c0575060006115ac6040830160208401612027565b60028111156115bd576115bd611dac565b14155b80156115ed575060006115d96060830160408401612027565b60028111156115ea576115ea611dac565b14155b801561161a575060006116066080830160608401612027565b600281111561161757611617611dac565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611ecd565b6001600160a01b0316146105fd5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6117ac5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b60008051602061228183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6117e483611961565b6000825111806117f15750805b15610c9e5761180083836119a1565b50505050565b60975460ff1661184f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561184f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118be5760405162461bcd60e51b815260040161056090611fdc565b6118c66119c6565b61184f6119ed565b600054610100900460ff166118f55760405162461bcd60e51b815260040161056090611fdc565b6118fe81611571565b6000805260fb6020528060008051602061226183398151915261192182826120c3565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a600082604051611956929190612169565b60405180910390a150565b61196a8161173f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061066c83836040518060600160405280602781526020016122a160279139611a1c565b600054610100900460ff1661184f5760405162461bcd60e51b815260040161056090611fdc565b600054610100900460ff16611a145760405162461bcd60e51b815260040161056090611fdc565b61184f611a94565b6060600080856001600160a01b031685604051611a399190612211565b600060405180830381855af49150503d8060008114611a74576040519150601f19603f3d011682016040523d82523d6000602084013e611a79565b606091505b5091509150611a8a86838387611ac7565b9695505050505050565b600054610100900460ff16611abb5760405162461bcd60e51b815260040161056090611fdc565b6097805460ff19169055565b60608315611b36578251600003611b2f576001600160a01b0385163b611b2f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610560565b5081610a27565b610a278383815115611b4b5781518083602001fd5b8060405162461bcd60e51b8152600401610560919061222d565b600060208284031215611b7757600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611bb657600080fd5b813561066c81611b8f565b600080600060608486031215611bd657600080fd5b8335611be181611b8f565b92506020840135611bf181611b8f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c4157611c41611c02565b604052919050565b60008060408385031215611c5c57600080fd5b8235611c6781611b8f565b915060208381013567ffffffffffffffff80821115611c8557600080fd5b818601915086601f830112611c9957600080fd5b813581811115611cab57611cab611c02565b611cbd601f8201601f19168501611c18565b91508082528784828501011115611cd357600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d0757600080fd5b8435611d1281611b8f565b93506020850135611d2281611b8f565b92506040850135611d3281611b8f565b9396929550929360600135925050565b600060808284031215611d5457600080fd5b50919050565b60008060a08385031215611d6d57600080fd5b8235611d7881611b8f565b9150611d878460208501611d42565b90509250929050565b600060808284031215611da257600080fd5b61066c8383611d42565b634e487b7160e01b600052602160045260246000fd5b60038110611de057634e487b7160e01b600052602160045260246000fd5b9052565b611def828251611dc2565b6020810151611e016020840182611dc2565b506040810151611e146040840182611dc2565b506060810151610c9e6060840182611dc2565b608081016105128284611de4565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611edf57600080fd5b815161066c81611b8f565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f3357600080fd5b6040516080810181811067ffffffffffffffff82111715611f5657611f56611c02565b6040528235611f6481611f14565b81526020830135611f7481611f14565b60208201526040830135611f8781611f14565b60408201526060830135611f9a81611f14565b60608201529392505050565b600060208284031215611fb857600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611de4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561203957600080fd5b813561066c81611f14565b6000813561051281611f14565b6003821061206f57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120a757634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b81356120ce81611f14565b600381106120ec57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561210b81611f14565b6003811061212957634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061215461214e60408401612044565b82612051565b6107a961216360608401612044565b82612089565b6001600160a01b038316815260a08101823561218481611f14565b6121916020840182611dc2565b5060208301356121a081611f14565b6121ad6040840182611dc2565b5060408301356121bc81611f14565b6121c96060840182611dc2565b5060608301356121d881611f14565b6121e56080840182611dc2565b509392505050565b60005b838110156122085781810151838201526020016121f0565b50506000910152565b600082516122238184602087016121ed565b9190910192915050565b602081526000825180602084015261224c8160408501602087016121ed565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122005fb35769581529ca3c635230379bd3f7c1c54eff061bb901be3c57bc3f91fab64736f6c63430008100033",
655
+ "linkReferences": {},
656
+ "deployedLinkReferences": {}
657
+ }