@hyperlane-xyz/tron-sdk 21.0.0

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 (83) hide show
  1. package/LICENSE.md +195 -0
  2. package/README.md +47 -0
  3. package/dist/abi/DomainRoutingIsm.json +240 -0
  4. package/dist/abi/ERC20.json +293 -0
  5. package/dist/abi/ERC20Test.json +365 -0
  6. package/dist/abi/HypERC20.json +920 -0
  7. package/dist/abi/HypERC20Collateral.json +1556 -0
  8. package/dist/abi/HypNative.json +1561 -0
  9. package/dist/abi/IERC20.json +190 -0
  10. package/dist/abi/IInterchainSecurityModule.json +44 -0
  11. package/dist/abi/IPostDispatchHook.json +81 -0
  12. package/dist/abi/InterchainGasPaymaster.json +518 -0
  13. package/dist/abi/Mailbox.json +686 -0
  14. package/dist/abi/MerkleTreeHook.json +375 -0
  15. package/dist/abi/NoopIsm.json +57 -0
  16. package/dist/abi/PausableHook.json +199 -0
  17. package/dist/abi/ProxyAdmin.json +156 -0
  18. package/dist/abi/StaticMerkleRootMultisigIsm.json +100 -0
  19. package/dist/abi/StaticMessageIdMultisigIsm.json +100 -0
  20. package/dist/abi/StorageGasOracle.json +205 -0
  21. package/dist/abi/TransparentUpgradeableProxy.json +81 -0
  22. package/dist/abi/ValidatorAnnounce.json +299 -0
  23. package/dist/clients/protocol.d.ts +17 -0
  24. package/dist/clients/protocol.d.ts.map +1 -0
  25. package/dist/clients/protocol.js +40 -0
  26. package/dist/clients/protocol.js.map +1 -0
  27. package/dist/clients/provider.d.ts +67 -0
  28. package/dist/clients/provider.d.ts.map +1 -0
  29. package/dist/clients/provider.js +558 -0
  30. package/dist/clients/provider.js.map +1 -0
  31. package/dist/clients/signer.d.ts +46 -0
  32. package/dist/clients/signer.d.ts.map +1 -0
  33. package/dist/clients/signer.js +561 -0
  34. package/dist/clients/signer.js.map +1 -0
  35. package/dist/hook/hook-query.d.ts +41 -0
  36. package/dist/hook/hook-query.d.ts.map +1 -0
  37. package/dist/hook/hook-query.js +79 -0
  38. package/dist/hook/hook-query.js.map +1 -0
  39. package/dist/hook/hook-tx.d.ts +39 -0
  40. package/dist/hook/hook-tx.d.ts.map +1 -0
  41. package/dist/hook/hook-tx.js +95 -0
  42. package/dist/hook/hook-tx.js.map +1 -0
  43. package/dist/index.d.ts +5 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/ism/ism-query.d.ts +70 -0
  48. package/dist/ism/ism-query.d.ts.map +1 -0
  49. package/dist/ism/ism-query.js +137 -0
  50. package/dist/ism/ism-query.js.map +1 -0
  51. package/dist/ism/ism-tx.d.ts +67 -0
  52. package/dist/ism/ism-tx.d.ts.map +1 -0
  53. package/dist/ism/ism-tx.js +110 -0
  54. package/dist/ism/ism-tx.js.map +1 -0
  55. package/dist/tests/1_interchain_security.e2e-test.d.ts +2 -0
  56. package/dist/tests/1_interchain_security.e2e-test.d.ts.map +1 -0
  57. package/dist/tests/1_interchain_security.e2e-test.js +172 -0
  58. package/dist/tests/1_interchain_security.e2e-test.js.map +1 -0
  59. package/dist/tests/2_core.e2e-test.d.ts +2 -0
  60. package/dist/tests/2_core.e2e-test.d.ts.map +1 -0
  61. package/dist/tests/2_core.e2e-test.js +117 -0
  62. package/dist/tests/2_core.e2e-test.js.map +1 -0
  63. package/dist/tests/3_post_dispatch.e2e-test.d.ts +2 -0
  64. package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +1 -0
  65. package/dist/tests/3_post_dispatch.e2e-test.js +116 -0
  66. package/dist/tests/3_post_dispatch.e2e-test.js.map +1 -0
  67. package/dist/tests/4_warp.e2e-test.d.ts +2 -0
  68. package/dist/tests/4_warp.e2e-test.d.ts.map +1 -0
  69. package/dist/tests/4_warp.e2e-test.js +304 -0
  70. package/dist/tests/4_warp.e2e-test.js.map +1 -0
  71. package/dist/tests/index.e2e-test.d.ts +5 -0
  72. package/dist/tests/index.e2e-test.d.ts.map +1 -0
  73. package/dist/tests/index.e2e-test.js +6 -0
  74. package/dist/tests/index.e2e-test.js.map +1 -0
  75. package/dist/utils/index.d.ts +24 -0
  76. package/dist/utils/index.d.ts.map +1 -0
  77. package/dist/utils/index.js +71 -0
  78. package/dist/utils/index.js.map +1 -0
  79. package/dist/utils/types.d.ts +94 -0
  80. package/dist/utils/types.d.ts.map +1 -0
  81. package/dist/utils/types.js +13 -0
  82. package/dist/utils/types.js.map +1 -0
  83. package/package.json +63 -0
@@ -0,0 +1,686 @@
1
+ {
2
+ "contractName": "Mailbox",
3
+ "abi": [
4
+ {
5
+ "inputs": [
6
+ {
7
+ "internalType": "uint32",
8
+ "name": "_localDomain",
9
+ "type": "uint32"
10
+ }
11
+ ],
12
+ "stateMutability": "nonpayable",
13
+ "type": "constructor"
14
+ },
15
+ {
16
+ "anonymous": false,
17
+ "inputs": [
18
+ {
19
+ "indexed": true,
20
+ "internalType": "address",
21
+ "name": "hook",
22
+ "type": "address"
23
+ }
24
+ ],
25
+ "name": "DefaultHookSet",
26
+ "type": "event"
27
+ },
28
+ {
29
+ "anonymous": false,
30
+ "inputs": [
31
+ {
32
+ "indexed": true,
33
+ "internalType": "address",
34
+ "name": "module",
35
+ "type": "address"
36
+ }
37
+ ],
38
+ "name": "DefaultIsmSet",
39
+ "type": "event"
40
+ },
41
+ {
42
+ "anonymous": false,
43
+ "inputs": [
44
+ {
45
+ "indexed": true,
46
+ "internalType": "address",
47
+ "name": "sender",
48
+ "type": "address"
49
+ },
50
+ {
51
+ "indexed": true,
52
+ "internalType": "uint32",
53
+ "name": "destination",
54
+ "type": "uint32"
55
+ },
56
+ {
57
+ "indexed": true,
58
+ "internalType": "bytes32",
59
+ "name": "recipient",
60
+ "type": "bytes32"
61
+ },
62
+ {
63
+ "indexed": false,
64
+ "internalType": "bytes",
65
+ "name": "message",
66
+ "type": "bytes"
67
+ }
68
+ ],
69
+ "name": "Dispatch",
70
+ "type": "event"
71
+ },
72
+ {
73
+ "anonymous": false,
74
+ "inputs": [
75
+ {
76
+ "indexed": true,
77
+ "internalType": "bytes32",
78
+ "name": "messageId",
79
+ "type": "bytes32"
80
+ }
81
+ ],
82
+ "name": "DispatchId",
83
+ "type": "event"
84
+ },
85
+ {
86
+ "anonymous": false,
87
+ "inputs": [
88
+ {
89
+ "indexed": false,
90
+ "internalType": "uint8",
91
+ "name": "version",
92
+ "type": "uint8"
93
+ }
94
+ ],
95
+ "name": "Initialized",
96
+ "type": "event"
97
+ },
98
+ {
99
+ "anonymous": false,
100
+ "inputs": [
101
+ {
102
+ "indexed": true,
103
+ "internalType": "address",
104
+ "name": "previousOwner",
105
+ "type": "address"
106
+ },
107
+ {
108
+ "indexed": true,
109
+ "internalType": "address",
110
+ "name": "newOwner",
111
+ "type": "address"
112
+ }
113
+ ],
114
+ "name": "OwnershipTransferred",
115
+ "type": "event"
116
+ },
117
+ {
118
+ "anonymous": false,
119
+ "inputs": [
120
+ {
121
+ "indexed": true,
122
+ "internalType": "uint32",
123
+ "name": "origin",
124
+ "type": "uint32"
125
+ },
126
+ {
127
+ "indexed": true,
128
+ "internalType": "bytes32",
129
+ "name": "sender",
130
+ "type": "bytes32"
131
+ },
132
+ {
133
+ "indexed": true,
134
+ "internalType": "address",
135
+ "name": "recipient",
136
+ "type": "address"
137
+ }
138
+ ],
139
+ "name": "Process",
140
+ "type": "event"
141
+ },
142
+ {
143
+ "anonymous": false,
144
+ "inputs": [
145
+ {
146
+ "indexed": true,
147
+ "internalType": "bytes32",
148
+ "name": "messageId",
149
+ "type": "bytes32"
150
+ }
151
+ ],
152
+ "name": "ProcessId",
153
+ "type": "event"
154
+ },
155
+ {
156
+ "anonymous": false,
157
+ "inputs": [
158
+ {
159
+ "indexed": true,
160
+ "internalType": "address",
161
+ "name": "hook",
162
+ "type": "address"
163
+ }
164
+ ],
165
+ "name": "RequiredHookSet",
166
+ "type": "event"
167
+ },
168
+ {
169
+ "inputs": [],
170
+ "name": "PACKAGE_VERSION",
171
+ "outputs": [
172
+ {
173
+ "internalType": "string",
174
+ "name": "",
175
+ "type": "string"
176
+ }
177
+ ],
178
+ "stateMutability": "view",
179
+ "type": "function"
180
+ },
181
+ {
182
+ "inputs": [],
183
+ "name": "VERSION",
184
+ "outputs": [
185
+ {
186
+ "internalType": "uint8",
187
+ "name": "",
188
+ "type": "uint8"
189
+ }
190
+ ],
191
+ "stateMutability": "view",
192
+ "type": "function"
193
+ },
194
+ {
195
+ "inputs": [],
196
+ "name": "defaultHook",
197
+ "outputs": [
198
+ {
199
+ "internalType": "contract IPostDispatchHook",
200
+ "name": "",
201
+ "type": "address"
202
+ }
203
+ ],
204
+ "stateMutability": "view",
205
+ "type": "function"
206
+ },
207
+ {
208
+ "inputs": [],
209
+ "name": "defaultIsm",
210
+ "outputs": [
211
+ {
212
+ "internalType": "contract IInterchainSecurityModule",
213
+ "name": "",
214
+ "type": "address"
215
+ }
216
+ ],
217
+ "stateMutability": "view",
218
+ "type": "function"
219
+ },
220
+ {
221
+ "inputs": [
222
+ {
223
+ "internalType": "bytes32",
224
+ "name": "_id",
225
+ "type": "bytes32"
226
+ }
227
+ ],
228
+ "name": "delivered",
229
+ "outputs": [
230
+ {
231
+ "internalType": "bool",
232
+ "name": "",
233
+ "type": "bool"
234
+ }
235
+ ],
236
+ "stateMutability": "view",
237
+ "type": "function"
238
+ },
239
+ {
240
+ "inputs": [],
241
+ "name": "deployedBlock",
242
+ "outputs": [
243
+ {
244
+ "internalType": "uint256",
245
+ "name": "",
246
+ "type": "uint256"
247
+ }
248
+ ],
249
+ "stateMutability": "view",
250
+ "type": "function"
251
+ },
252
+ {
253
+ "inputs": [
254
+ {
255
+ "internalType": "uint32",
256
+ "name": "destinationDomain",
257
+ "type": "uint32"
258
+ },
259
+ {
260
+ "internalType": "bytes32",
261
+ "name": "recipientAddress",
262
+ "type": "bytes32"
263
+ },
264
+ {
265
+ "internalType": "bytes",
266
+ "name": "messageBody",
267
+ "type": "bytes"
268
+ },
269
+ {
270
+ "internalType": "bytes",
271
+ "name": "metadata",
272
+ "type": "bytes"
273
+ },
274
+ {
275
+ "internalType": "contract IPostDispatchHook",
276
+ "name": "hook",
277
+ "type": "address"
278
+ }
279
+ ],
280
+ "name": "dispatch",
281
+ "outputs": [
282
+ {
283
+ "internalType": "bytes32",
284
+ "name": "",
285
+ "type": "bytes32"
286
+ }
287
+ ],
288
+ "stateMutability": "payable",
289
+ "type": "function"
290
+ },
291
+ {
292
+ "inputs": [
293
+ {
294
+ "internalType": "uint32",
295
+ "name": "destinationDomain",
296
+ "type": "uint32"
297
+ },
298
+ {
299
+ "internalType": "bytes32",
300
+ "name": "recipientAddress",
301
+ "type": "bytes32"
302
+ },
303
+ {
304
+ "internalType": "bytes",
305
+ "name": "messageBody",
306
+ "type": "bytes"
307
+ },
308
+ {
309
+ "internalType": "bytes",
310
+ "name": "hookMetadata",
311
+ "type": "bytes"
312
+ }
313
+ ],
314
+ "name": "dispatch",
315
+ "outputs": [
316
+ {
317
+ "internalType": "bytes32",
318
+ "name": "",
319
+ "type": "bytes32"
320
+ }
321
+ ],
322
+ "stateMutability": "payable",
323
+ "type": "function"
324
+ },
325
+ {
326
+ "inputs": [
327
+ {
328
+ "internalType": "uint32",
329
+ "name": "_destinationDomain",
330
+ "type": "uint32"
331
+ },
332
+ {
333
+ "internalType": "bytes32",
334
+ "name": "_recipientAddress",
335
+ "type": "bytes32"
336
+ },
337
+ {
338
+ "internalType": "bytes",
339
+ "name": "_messageBody",
340
+ "type": "bytes"
341
+ }
342
+ ],
343
+ "name": "dispatch",
344
+ "outputs": [
345
+ {
346
+ "internalType": "bytes32",
347
+ "name": "",
348
+ "type": "bytes32"
349
+ }
350
+ ],
351
+ "stateMutability": "payable",
352
+ "type": "function"
353
+ },
354
+ {
355
+ "inputs": [
356
+ {
357
+ "internalType": "address",
358
+ "name": "_owner",
359
+ "type": "address"
360
+ },
361
+ {
362
+ "internalType": "address",
363
+ "name": "_defaultIsm",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "internalType": "address",
368
+ "name": "_defaultHook",
369
+ "type": "address"
370
+ },
371
+ {
372
+ "internalType": "address",
373
+ "name": "_requiredHook",
374
+ "type": "address"
375
+ }
376
+ ],
377
+ "name": "initialize",
378
+ "outputs": [],
379
+ "stateMutability": "nonpayable",
380
+ "type": "function"
381
+ },
382
+ {
383
+ "inputs": [],
384
+ "name": "latestDispatchedId",
385
+ "outputs": [
386
+ {
387
+ "internalType": "bytes32",
388
+ "name": "",
389
+ "type": "bytes32"
390
+ }
391
+ ],
392
+ "stateMutability": "view",
393
+ "type": "function"
394
+ },
395
+ {
396
+ "inputs": [],
397
+ "name": "localDomain",
398
+ "outputs": [
399
+ {
400
+ "internalType": "uint32",
401
+ "name": "",
402
+ "type": "uint32"
403
+ }
404
+ ],
405
+ "stateMutability": "view",
406
+ "type": "function"
407
+ },
408
+ {
409
+ "inputs": [],
410
+ "name": "nonce",
411
+ "outputs": [
412
+ {
413
+ "internalType": "uint32",
414
+ "name": "",
415
+ "type": "uint32"
416
+ }
417
+ ],
418
+ "stateMutability": "view",
419
+ "type": "function"
420
+ },
421
+ {
422
+ "inputs": [],
423
+ "name": "owner",
424
+ "outputs": [
425
+ {
426
+ "internalType": "address",
427
+ "name": "",
428
+ "type": "address"
429
+ }
430
+ ],
431
+ "stateMutability": "view",
432
+ "type": "function"
433
+ },
434
+ {
435
+ "inputs": [
436
+ {
437
+ "internalType": "bytes",
438
+ "name": "_metadata",
439
+ "type": "bytes"
440
+ },
441
+ {
442
+ "internalType": "bytes",
443
+ "name": "_message",
444
+ "type": "bytes"
445
+ }
446
+ ],
447
+ "name": "process",
448
+ "outputs": [],
449
+ "stateMutability": "payable",
450
+ "type": "function"
451
+ },
452
+ {
453
+ "inputs": [
454
+ {
455
+ "internalType": "bytes32",
456
+ "name": "_id",
457
+ "type": "bytes32"
458
+ }
459
+ ],
460
+ "name": "processedAt",
461
+ "outputs": [
462
+ {
463
+ "internalType": "uint48",
464
+ "name": "",
465
+ "type": "uint48"
466
+ }
467
+ ],
468
+ "stateMutability": "view",
469
+ "type": "function"
470
+ },
471
+ {
472
+ "inputs": [
473
+ {
474
+ "internalType": "bytes32",
475
+ "name": "_id",
476
+ "type": "bytes32"
477
+ }
478
+ ],
479
+ "name": "processor",
480
+ "outputs": [
481
+ {
482
+ "internalType": "address",
483
+ "name": "",
484
+ "type": "address"
485
+ }
486
+ ],
487
+ "stateMutability": "view",
488
+ "type": "function"
489
+ },
490
+ {
491
+ "inputs": [
492
+ {
493
+ "internalType": "uint32",
494
+ "name": "destinationDomain",
495
+ "type": "uint32"
496
+ },
497
+ {
498
+ "internalType": "bytes32",
499
+ "name": "recipientAddress",
500
+ "type": "bytes32"
501
+ },
502
+ {
503
+ "internalType": "bytes",
504
+ "name": "messageBody",
505
+ "type": "bytes"
506
+ },
507
+ {
508
+ "internalType": "bytes",
509
+ "name": "metadata",
510
+ "type": "bytes"
511
+ },
512
+ {
513
+ "internalType": "contract IPostDispatchHook",
514
+ "name": "hook",
515
+ "type": "address"
516
+ }
517
+ ],
518
+ "name": "quoteDispatch",
519
+ "outputs": [
520
+ {
521
+ "internalType": "uint256",
522
+ "name": "fee",
523
+ "type": "uint256"
524
+ }
525
+ ],
526
+ "stateMutability": "view",
527
+ "type": "function"
528
+ },
529
+ {
530
+ "inputs": [
531
+ {
532
+ "internalType": "uint32",
533
+ "name": "destinationDomain",
534
+ "type": "uint32"
535
+ },
536
+ {
537
+ "internalType": "bytes32",
538
+ "name": "recipientAddress",
539
+ "type": "bytes32"
540
+ },
541
+ {
542
+ "internalType": "bytes",
543
+ "name": "messageBody",
544
+ "type": "bytes"
545
+ }
546
+ ],
547
+ "name": "quoteDispatch",
548
+ "outputs": [
549
+ {
550
+ "internalType": "uint256",
551
+ "name": "fee",
552
+ "type": "uint256"
553
+ }
554
+ ],
555
+ "stateMutability": "view",
556
+ "type": "function"
557
+ },
558
+ {
559
+ "inputs": [
560
+ {
561
+ "internalType": "uint32",
562
+ "name": "destinationDomain",
563
+ "type": "uint32"
564
+ },
565
+ {
566
+ "internalType": "bytes32",
567
+ "name": "recipientAddress",
568
+ "type": "bytes32"
569
+ },
570
+ {
571
+ "internalType": "bytes",
572
+ "name": "messageBody",
573
+ "type": "bytes"
574
+ },
575
+ {
576
+ "internalType": "bytes",
577
+ "name": "defaultHookMetadata",
578
+ "type": "bytes"
579
+ }
580
+ ],
581
+ "name": "quoteDispatch",
582
+ "outputs": [
583
+ {
584
+ "internalType": "uint256",
585
+ "name": "fee",
586
+ "type": "uint256"
587
+ }
588
+ ],
589
+ "stateMutability": "view",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [
594
+ {
595
+ "internalType": "address",
596
+ "name": "_recipient",
597
+ "type": "address"
598
+ }
599
+ ],
600
+ "name": "recipientIsm",
601
+ "outputs": [
602
+ {
603
+ "internalType": "contract IInterchainSecurityModule",
604
+ "name": "",
605
+ "type": "address"
606
+ }
607
+ ],
608
+ "stateMutability": "view",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [],
613
+ "name": "renounceOwnership",
614
+ "outputs": [],
615
+ "stateMutability": "nonpayable",
616
+ "type": "function"
617
+ },
618
+ {
619
+ "inputs": [],
620
+ "name": "requiredHook",
621
+ "outputs": [
622
+ {
623
+ "internalType": "contract IPostDispatchHook",
624
+ "name": "",
625
+ "type": "address"
626
+ }
627
+ ],
628
+ "stateMutability": "view",
629
+ "type": "function"
630
+ },
631
+ {
632
+ "inputs": [
633
+ {
634
+ "internalType": "address",
635
+ "name": "_hook",
636
+ "type": "address"
637
+ }
638
+ ],
639
+ "name": "setDefaultHook",
640
+ "outputs": [],
641
+ "stateMutability": "nonpayable",
642
+ "type": "function"
643
+ },
644
+ {
645
+ "inputs": [
646
+ {
647
+ "internalType": "address",
648
+ "name": "_module",
649
+ "type": "address"
650
+ }
651
+ ],
652
+ "name": "setDefaultIsm",
653
+ "outputs": [],
654
+ "stateMutability": "nonpayable",
655
+ "type": "function"
656
+ },
657
+ {
658
+ "inputs": [
659
+ {
660
+ "internalType": "address",
661
+ "name": "_hook",
662
+ "type": "address"
663
+ }
664
+ ],
665
+ "name": "setRequiredHook",
666
+ "outputs": [],
667
+ "stateMutability": "nonpayable",
668
+ "type": "function"
669
+ },
670
+ {
671
+ "inputs": [
672
+ {
673
+ "internalType": "address",
674
+ "name": "newOwner",
675
+ "type": "address"
676
+ }
677
+ ],
678
+ "name": "transferOwnership",
679
+ "outputs": [],
680
+ "stateMutability": "nonpayable",
681
+ "type": "function"
682
+ }
683
+ ],
684
+ "bytecode": "0x60c06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b50604051620025c4380380620025c4833981016040819052620000509162000063565b4360805263ffffffff1660a05262000092565b6000602082840312156200007657600080fd5b815163ffffffff811681146200008b57600080fd5b9392505050565b60805160a0516124fe620000c6600039600081816104da01528181610d6501526119b70152600061048c01526124fe6000f3fe6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063e70f48ac1161008a578063f7ccd32111610064578063f7ccd321146107df578063f8c8765e14610819578063fa31de0114610853578063ffa1ad741461086657600080fd5b8063e70f48ac14610731578063f2fde38b1461076b578063f794687a146107a557600080fd5b80639c42bd18116100c65780639c42bd1814610600578063affed0e01461063a578063d6d08a0914610671578063e495f1d4146106b857600080fd5b80638da5cb5b1461051157806393c448471461055657806399b04809146105c657600080fd5b80635d1fe5a9116101595780637c39d130116101335780637c39d1301461041357806381d2ea951461042657806382ea7bfe146104605780638d3638f4146104ae57600080fd5b80635d1fe5a9146103405780636e5f516e1461039d578063715018a6146103e457600080fd5b80631426b7f41161018a5780631426b7f4146102855780633d1250b7146102c157806348aee8d41461032d57600080fd5b806307a2fda1146101b157806310b83dc014610234578063134fbb4f14610255575b600080fd5b3480156101bd57600080fd5b50d380156101ca57600080fd5b50d280156101d757600080fd5b506102186101e6366004611dc0565b6000908152606a602052604090205474010000000000000000000000000000000000000000900465ffffffffffff1690565b60405165ffffffffffff90911681526020015b60405180910390f35b610247610242366004611e57565b6108a7565b60405190815260200161022b565b34801561026157600080fd5b50d3801561026e57600080fd5b50d2801561027b57600080fd5b5061024760665481565b34801561029157600080fd5b50d3801561029e57600080fd5b50d280156102ab57600080fd5b506102bf6102ba366004611f0b565b610b7b565b005b3480156102cd57600080fd5b50d380156102da57600080fd5b50d280156102e757600080fd5b506068546103089073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022b565b61024761033b366004611f45565b610c9b565b34801561034c57600080fd5b50d3801561035957600080fd5b50d2801561036657600080fd5b50610308610375366004611dc0565b6000908152606a602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b3480156103a957600080fd5b50d380156103b657600080fd5b50d280156103c357600080fd5b506067546103089073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f057600080fd5b50d380156103fd57600080fd5b50d2801561040a57600080fd5b506102bf610cd9565b6102bf610421366004611fcf565b610ced565b34801561043257600080fd5b50d3801561043f57600080fd5b50d2801561044c57600080fd5b5061024761045b366004611e57565b61118f565b34801561046c57600080fd5b50d3801561047957600080fd5b50d2801561048657600080fd5b506102477f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ba57600080fd5b50d380156104c757600080fd5b50d280156104d457600080fd5b506104fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161022b565b34801561051d57600080fd5b50d3801561052a57600080fd5b50d2801561053757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610308565b34801561056257600080fd5b50d3801561056f57600080fd5b50d2801561057c57600080fd5b506105b96040518060400160405280600681526020017f31302e312e33000000000000000000000000000000000000000000000000000081525081565b60405161022b91906120a9565b3480156105d257600080fd5b50d380156105df57600080fd5b50d280156105ec57600080fd5b506102bf6105fb366004611f0b565b611322565b34801561060c57600080fd5b50d3801561061957600080fd5b50d2801561062657600080fd5b506102476106353660046120bc565b61143d565b34801561064657600080fd5b50d3801561065357600080fd5b50d2801561066057600080fd5b506065546104fc9063ffffffff1681565b34801561067d57600080fd5b50d3801561068a57600080fd5b50d2801561069757600080fd5b506069546103089073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c457600080fd5b50d380156106d157600080fd5b50d280156106de57600080fd5b506107216106ed366004611dc0565b6000908152606a602052604090205474010000000000000000000000000000000000000000900465ffffffffffff16151590565b604051901515815260200161022b565b34801561073d57600080fd5b50d3801561074a57600080fd5b50d2801561075757600080fd5b50610308610766366004611f0b565b611479565b34801561077757600080fd5b50d3801561078457600080fd5b50d2801561079157600080fd5b506102bf6107a0366004611f0b565b6115b0565b3480156107b157600080fd5b50d380156107be57600080fd5b50d280156107cb57600080fd5b506102bf6107da366004611f0b565b611667565b3480156107eb57600080fd5b50d380156107f857600080fd5b50d2801561080557600080fd5b50610247610814366004611f45565b611782565b34801561082557600080fd5b50d3801561083257600080fd5b50d2801561083f57600080fd5b506102bf61084e36600461210a565b6117b5565b6102476108613660046120bc565b61196f565b34801561087257600080fd5b50d3801561087f57600080fd5b50d2801561088c57600080fd5b50610895600381565b60405160ff909116815260200161022b565b600073ffffffffffffffffffffffffffffffffffffffff82166108e05760685473ffffffffffffffffffffffffffffffffffffffff1691505b60006108ee898989896119a2565b8051602082012060668190556065805492935090916001919060009061091b90849063ffffffff166121ba565b92506101000a81548163ffffffff021916908363ffffffff160217905550888a63ffffffff163373ffffffffffffffffffffffffffffffffffffffff167f769f711d20c679153d382254f59892613b58a97cc876b249134ac25c80f9c8148560405161098791906120a9565b60405180910390a460405181907f788dbc1b7152732178210e7f4d9d010ef016f9eafbe66786bd7169f56e0c353a90600090a26069546040517faaccd23000000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063aaccd23090610a15908a908a908890600401612227565b602060405180830381865afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190612257565b905080341015610a635750345b6069546040517f086011b900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063086011b9908390610abf908b908b908990600401612227565b6000604051808303818588803b158015610ad857600080fd5b505af1158015610aec573d6000803e3d6000fd5b50505050508473ffffffffffffffffffffffffffffffffffffffff1663086011b98234610b199190612270565b8989876040518563ffffffff1660e01b8152600401610b3a93929190612227565b6000604051808303818588803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b50949e9d5050505050505050505050505050565b610b836119eb565b73ffffffffffffffffffffffffffffffffffffffff81163b610c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4d61696c626f783a20726571756972656420686f6f6b206e6f7420636f6e747260448201527f616374000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f329ec8e2438a73828ecf31a6568d7a91d7b1d79e342b0692914fd053d1a002b190600090a250565b6000610cce878787878787606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108a7565b979650505050505050565b610ce16119eb565b610ceb6000611a6c565b565b6003610cf98383611ae3565b60ff1614610d63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d61696c626f783a206261642076657273696f6e0000000000000000000000006044820152606401610c23565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16610d948383611b07565b63ffffffff1614610e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4d61696c626f783a20756e65787065637465642064657374696e6174696f6e006044820152606401610c23565b6000610e4283838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119e092505050565b6000818152606a602052604090205490915074010000000000000000000000000000000000000000900465ffffffffffff1615610edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d61696c626f783a20616c72656164792064656c6976657265640000000000006044820152606401610c23565b6000610ee78484611b2a565b90506000610ef482611479565b60408051808201825233815265ffffffffffff43811660208084019182526000898152606a9091529390932091518254935190911674010000000000000000000000000000000000000000027fffffffffffff000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff918216179290921790559091508216610f928686611b45565b610f9c8787611b5e565b63ffffffff167f0d381c2a574ae8f04e213db7cfb4df8df712cdbd427d9868ffef380660ca657460405160405180910390a460405183907f1cae38cdd3d3919489272725a5ae62a4f48b2989b0dae843d3c279fee18073a990600090a26040517ff7e83aee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f7e83aee90611051908a908a908a908a90600401612283565b6020604051808303816000875af1158015611070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109491906122aa565b6110fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d61696c626f783a2049534d20766572696669636174696f6e206661696c65646044820152606401610c23565b8173ffffffffffffffffffffffffffffffffffffffff166356d5d475346111218888611b5e565b61112b8989611b45565b6111358a8a611b6e565b6040518663ffffffff1660e01b815260040161115494939291906122cc565b6000604051808303818588803b15801561116d57600080fd5b505af1158015611181573d6000803e3d6000fd5b505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82166111c85760685473ffffffffffffffffffffffffffffffffffffffff1691505b60006111d6898989896119a2565b6040517faaccd23000000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff84169063aaccd2309061122f90889088908690600401612227565b602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190612257565b6069546040517faaccd23000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063aaccd230906112ca90899089908790600401612227565b602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190612257565b61131591906122f2565b9998505050505050505050565b61132a6119eb565b73ffffffffffffffffffffffffffffffffffffffff81163b6113ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4d61696c626f783a2064656661756c7420686f6f6b206e6f7420636f6e74726160448201527f63740000000000000000000000000000000000000000000000000000000000006064820152608401610c23565b606880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f65a63e5066ee2fcdf9d32a7f1bf7ce71c76066f19d0609dddccd334ab87237d790600090a250565b60006114708585858561145286808385612305565b60685473ffffffffffffffffffffffffffffffffffffffff1661118f565b95945050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde523cf30000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff8616916114fa919061232f565b600060405180830381855afa9150503d8060008114611535576040519150601f19603f3d011682016040523d82523d6000602084013e61153a565b606091505b509150915081801561154c5750805115155b1561158f57600081806020019051810190611567919061234b565b905073ffffffffffffffffffffffffffffffffffffffff81161561158d57949350505050565b505b505060675473ffffffffffffffffffffffffffffffffffffffff1692915050565b6115b86119eb565b73ffffffffffffffffffffffffffffffffffffffff811661165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c23565b61166481611a6c565b50565b61166f6119eb565b73ffffffffffffffffffffffffffffffffffffffff81163b611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d61696c626f783a2064656661756c742049534d206e6f7420636f6e7472616360448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610c23565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa76ad0adbf45318f8633aa0210f711273d50fbb6fef76ed95bbae97082c75daa90600090a250565b6000610cce878787878787606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661118f565b600054610100900460ff16158080156117d55750600054600160ff909116105b806117ef5750303b1580156117ef575060005460ff166001145b61187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c23565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156118d957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6118e1611b8a565b6118ea84611667565b6118f383611322565b6118fc82610b7b565b611905856115b0565b801561196857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60006114708585858561198486808385612305565b60685473ffffffffffffffffffffffffffffffffffffffff166108a7565b6065546060906114709060039063ffffffff167f00000000000000000000000000000000000000000000000000000000000000003389898989611c29565b805160209091012090565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c23565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611af26001828486612305565b611afb91612368565b60f81c90505b92915050565b6000611b17602d60298486612305565b611b20916123b0565b60e01c9392505050565b6000611b3e611b398484611c67565b611c77565b9392505050565b6000611b55602960098486612305565b611b3e916123f6565b6000611b17600960058486612305565b366000611b7e83604d8187612305565b915091505b9250929050565b600054610100900460ff16611c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c23565b610ceb611d20565b60608888888888888888604051602001611c4a989796959493929190612432565b604051602081830303815290604052905098975050505050505050565b6000611b55604d602d8486612305565b600073ffffffffffffffffffffffffffffffffffffffff821115611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152608401610c23565b5090565b600054610100900460ff16611db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c23565b610ceb33611a6c565b600060208284031215611dd257600080fd5b5035919050565b803563ffffffff81168114611ded57600080fd5b919050565b60008083601f840112611e0457600080fd5b50813567ffffffffffffffff811115611e1c57600080fd5b602083019150836020828501011115611b8357600080fd5b74ffffffffffffffffffffffffffffffffffffffffff8116811461166457600080fd5b600080600080600080600060a0888a031215611e7257600080fd5b611e7b88611dd9565b965060208801359550604088013567ffffffffffffffff80821115611e9f57600080fd5b611eab8b838c01611df2565b909750955060608a0135915080821115611ec457600080fd5b50611ed18a828b01611df2565b9094509250506080880135611ee581611e34565b73ffffffffffffffffffffffffffffffffffffffff811691505092959891949750929550565b600060208284031215611f1d57600080fd5b8135611f2881611e34565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b60008060008060008060808789031215611f5e57600080fd5b611f6787611dd9565b955060208701359450604087013567ffffffffffffffff80821115611f8b57600080fd5b611f978a838b01611df2565b90965094506060890135915080821115611fb057600080fd5b50611fbd89828a01611df2565b979a9699509497509295939492505050565b60008060008060408587031215611fe557600080fd5b843567ffffffffffffffff80821115611ffd57600080fd5b61200988838901611df2565b9096509450602087013591508082111561202257600080fd5b5061202f87828801611df2565b95989497509550505050565b60005b8381101561205657818101518382015260200161203e565b50506000910152565b6000815180845261207781602086016020860161203b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611b3e602083018461205f565b600080600080606085870312156120d257600080fd5b6120db85611dd9565b935060208501359250604085013567ffffffffffffffff8111156120fe57600080fd5b61202f87828801611df2565b6000806000806080858703121561212057600080fd5b843561212b81611e34565b73ffffffffffffffffffffffffffffffffffffffff908116945060208601359061215482611e34565b908116935060408601359061216882611e34565b908116925060608601359061217c82611e34565b94979396509194505090911690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156121d7576121d761218b565b5092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408152600061223b6040830185876121de565b828103602084015261224d818561205f565b9695505050505050565b60006020828403121561226957600080fd5b5051919050565b81810381811115611b0157611b0161218b565b6040815260006122976040830186886121de565b8281036020840152610cce8185876121de565b6000602082840312156122bc57600080fd5b81518015158114611b3e57600080fd5b63ffffffff8516815283602082015260606040820152600061224d6060830184866121de565b80820180821115611b0157611b0161218b565b6000808585111561231557600080fd5b8386111561232257600080fd5b5050820193919092039150565b6000825161234181846020870161203b565b9190910192915050565b60006020828403121561235d57600080fd5b8151611f2881611e34565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156123a85780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156123a85760049490940360031b84901b1690921692915050565b80356020831015611b01577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fff000000000000000000000000000000000000000000000000000000000000008960f81b16815260007fffffffff00000000000000000000000000000000000000000000000000000000808a60e01b166001840152808960e01b166005840152876009840152808760e01b1660298401525084602d8301528284604d8401375060009101604d0190815297965050505050505056fea26474726f6e582212208977bc0ff4bcb06a43a5343e90d68188b420a08acab8658e1f0e157fddf778ea64736f6c63430008160033",
685
+ "deployedBytecode": "0x6080604052600436106101ac5760003560e01c80638da5cb5b116100ec578063e70f48ac1161008a578063f7ccd32111610064578063f7ccd321146107df578063f8c8765e14610819578063fa31de0114610853578063ffa1ad741461086657600080fd5b8063e70f48ac14610731578063f2fde38b1461076b578063f794687a146107a557600080fd5b80639c42bd18116100c65780639c42bd1814610600578063affed0e01461063a578063d6d08a0914610671578063e495f1d4146106b857600080fd5b80638da5cb5b1461051157806393c448471461055657806399b04809146105c657600080fd5b80635d1fe5a9116101595780637c39d130116101335780637c39d1301461041357806381d2ea951461042657806382ea7bfe146104605780638d3638f4146104ae57600080fd5b80635d1fe5a9146103405780636e5f516e1461039d578063715018a6146103e457600080fd5b80631426b7f41161018a5780631426b7f4146102855780633d1250b7146102c157806348aee8d41461032d57600080fd5b806307a2fda1146101b157806310b83dc014610234578063134fbb4f14610255575b600080fd5b3480156101bd57600080fd5b50d380156101ca57600080fd5b50d280156101d757600080fd5b506102186101e6366004611dc0565b6000908152606a602052604090205474010000000000000000000000000000000000000000900465ffffffffffff1690565b60405165ffffffffffff90911681526020015b60405180910390f35b610247610242366004611e57565b6108a7565b60405190815260200161022b565b34801561026157600080fd5b50d3801561026e57600080fd5b50d2801561027b57600080fd5b5061024760665481565b34801561029157600080fd5b50d3801561029e57600080fd5b50d280156102ab57600080fd5b506102bf6102ba366004611f0b565b610b7b565b005b3480156102cd57600080fd5b50d380156102da57600080fd5b50d280156102e757600080fd5b506068546103089073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022b565b61024761033b366004611f45565b610c9b565b34801561034c57600080fd5b50d3801561035957600080fd5b50d2801561036657600080fd5b50610308610375366004611dc0565b6000908152606a602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b3480156103a957600080fd5b50d380156103b657600080fd5b50d280156103c357600080fd5b506067546103089073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103f057600080fd5b50d380156103fd57600080fd5b50d2801561040a57600080fd5b506102bf610cd9565b6102bf610421366004611fcf565b610ced565b34801561043257600080fd5b50d3801561043f57600080fd5b50d2801561044c57600080fd5b5061024761045b366004611e57565b61118f565b34801561046c57600080fd5b50d3801561047957600080fd5b50d2801561048657600080fd5b506102477f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ba57600080fd5b50d380156104c757600080fd5b50d280156104d457600080fd5b506104fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161022b565b34801561051d57600080fd5b50d3801561052a57600080fd5b50d2801561053757600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610308565b34801561056257600080fd5b50d3801561056f57600080fd5b50d2801561057c57600080fd5b506105b96040518060400160405280600681526020017f31302e312e33000000000000000000000000000000000000000000000000000081525081565b60405161022b91906120a9565b3480156105d257600080fd5b50d380156105df57600080fd5b50d280156105ec57600080fd5b506102bf6105fb366004611f0b565b611322565b34801561060c57600080fd5b50d3801561061957600080fd5b50d2801561062657600080fd5b506102476106353660046120bc565b61143d565b34801561064657600080fd5b50d3801561065357600080fd5b50d2801561066057600080fd5b506065546104fc9063ffffffff1681565b34801561067d57600080fd5b50d3801561068a57600080fd5b50d2801561069757600080fd5b506069546103089073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c457600080fd5b50d380156106d157600080fd5b50d280156106de57600080fd5b506107216106ed366004611dc0565b6000908152606a602052604090205474010000000000000000000000000000000000000000900465ffffffffffff16151590565b604051901515815260200161022b565b34801561073d57600080fd5b50d3801561074a57600080fd5b50d2801561075757600080fd5b50610308610766366004611f0b565b611479565b34801561077757600080fd5b50d3801561078457600080fd5b50d2801561079157600080fd5b506102bf6107a0366004611f0b565b6115b0565b3480156107b157600080fd5b50d380156107be57600080fd5b50d280156107cb57600080fd5b506102bf6107da366004611f0b565b611667565b3480156107eb57600080fd5b50d380156107f857600080fd5b50d2801561080557600080fd5b50610247610814366004611f45565b611782565b34801561082557600080fd5b50d3801561083257600080fd5b50d2801561083f57600080fd5b506102bf61084e36600461210a565b6117b5565b6102476108613660046120bc565b61196f565b34801561087257600080fd5b50d3801561087f57600080fd5b50d2801561088c57600080fd5b50610895600381565b60405160ff909116815260200161022b565b600073ffffffffffffffffffffffffffffffffffffffff82166108e05760685473ffffffffffffffffffffffffffffffffffffffff1691505b60006108ee898989896119a2565b8051602082012060668190556065805492935090916001919060009061091b90849063ffffffff166121ba565b92506101000a81548163ffffffff021916908363ffffffff160217905550888a63ffffffff163373ffffffffffffffffffffffffffffffffffffffff167f769f711d20c679153d382254f59892613b58a97cc876b249134ac25c80f9c8148560405161098791906120a9565b60405180910390a460405181907f788dbc1b7152732178210e7f4d9d010ef016f9eafbe66786bd7169f56e0c353a90600090a26069546040517faaccd23000000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063aaccd23090610a15908a908a908890600401612227565b602060405180830381865afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190612257565b905080341015610a635750345b6069546040517f086011b900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063086011b9908390610abf908b908b908990600401612227565b6000604051808303818588803b158015610ad857600080fd5b505af1158015610aec573d6000803e3d6000fd5b50505050508473ffffffffffffffffffffffffffffffffffffffff1663086011b98234610b199190612270565b8989876040518563ffffffff1660e01b8152600401610b3a93929190612227565b6000604051808303818588803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b50949e9d5050505050505050505050505050565b610b836119eb565b73ffffffffffffffffffffffffffffffffffffffff81163b610c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4d61696c626f783a20726571756972656420686f6f6b206e6f7420636f6e747260448201527f616374000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f329ec8e2438a73828ecf31a6568d7a91d7b1d79e342b0692914fd053d1a002b190600090a250565b6000610cce878787878787606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108a7565b979650505050505050565b610ce16119eb565b610ceb6000611a6c565b565b6003610cf98383611ae3565b60ff1614610d63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d61696c626f783a206261642076657273696f6e0000000000000000000000006044820152606401610c23565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16610d948383611b07565b63ffffffff1614610e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4d61696c626f783a20756e65787065637465642064657374696e6174696f6e006044820152606401610c23565b6000610e4283838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119e092505050565b6000818152606a602052604090205490915074010000000000000000000000000000000000000000900465ffffffffffff1615610edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d61696c626f783a20616c72656164792064656c6976657265640000000000006044820152606401610c23565b6000610ee78484611b2a565b90506000610ef482611479565b60408051808201825233815265ffffffffffff43811660208084019182526000898152606a9091529390932091518254935190911674010000000000000000000000000000000000000000027fffffffffffff000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff918216179290921790559091508216610f928686611b45565b610f9c8787611b5e565b63ffffffff167f0d381c2a574ae8f04e213db7cfb4df8df712cdbd427d9868ffef380660ca657460405160405180910390a460405183907f1cae38cdd3d3919489272725a5ae62a4f48b2989b0dae843d3c279fee18073a990600090a26040517ff7e83aee00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063f7e83aee90611051908a908a908a908a90600401612283565b6020604051808303816000875af1158015611070573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109491906122aa565b6110fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d61696c626f783a2049534d20766572696669636174696f6e206661696c65646044820152606401610c23565b8173ffffffffffffffffffffffffffffffffffffffff166356d5d475346111218888611b5e565b61112b8989611b45565b6111358a8a611b6e565b6040518663ffffffff1660e01b815260040161115494939291906122cc565b6000604051808303818588803b15801561116d57600080fd5b505af1158015611181573d6000803e3d6000fd5b505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82166111c85760685473ffffffffffffffffffffffffffffffffffffffff1691505b60006111d6898989896119a2565b6040517faaccd23000000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff84169063aaccd2309061122f90889088908690600401612227565b602060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112709190612257565b6069546040517faaccd23000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063aaccd230906112ca90899089908790600401612227565b602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190612257565b61131591906122f2565b9998505050505050505050565b61132a6119eb565b73ffffffffffffffffffffffffffffffffffffffff81163b6113ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4d61696c626f783a2064656661756c7420686f6f6b206e6f7420636f6e74726160448201527f63740000000000000000000000000000000000000000000000000000000000006064820152608401610c23565b606880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f65a63e5066ee2fcdf9d32a7f1bf7ce71c76066f19d0609dddccd334ab87237d790600090a250565b60006114708585858561145286808385612305565b60685473ffffffffffffffffffffffffffffffffffffffff1661118f565b95945050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde523cf30000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff8616916114fa919061232f565b600060405180830381855afa9150503d8060008114611535576040519150601f19603f3d011682016040523d82523d6000602084013e61153a565b606091505b509150915081801561154c5750805115155b1561158f57600081806020019051810190611567919061234b565b905073ffffffffffffffffffffffffffffffffffffffff81161561158d57949350505050565b505b505060675473ffffffffffffffffffffffffffffffffffffffff1692915050565b6115b86119eb565b73ffffffffffffffffffffffffffffffffffffffff811661165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c23565b61166481611a6c565b50565b61166f6119eb565b73ffffffffffffffffffffffffffffffffffffffff81163b611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d61696c626f783a2064656661756c742049534d206e6f7420636f6e7472616360448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610c23565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa76ad0adbf45318f8633aa0210f711273d50fbb6fef76ed95bbae97082c75daa90600090a250565b6000610cce878787878787606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661118f565b600054610100900460ff16158080156117d55750600054600160ff909116105b806117ef5750303b1580156117ef575060005460ff166001145b61187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c23565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156118d957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6118e1611b8a565b6118ea84611667565b6118f383611322565b6118fc82610b7b565b611905856115b0565b801561196857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60006114708585858561198486808385612305565b60685473ffffffffffffffffffffffffffffffffffffffff166108a7565b6065546060906114709060039063ffffffff167f00000000000000000000000000000000000000000000000000000000000000003389898989611c29565b805160209091012090565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c23565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611af26001828486612305565b611afb91612368565b60f81c90505b92915050565b6000611b17602d60298486612305565b611b20916123b0565b60e01c9392505050565b6000611b3e611b398484611c67565b611c77565b9392505050565b6000611b55602960098486612305565b611b3e916123f6565b6000611b17600960058486612305565b366000611b7e83604d8187612305565b915091505b9250929050565b600054610100900460ff16611c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c23565b610ceb611d20565b60608888888888888888604051602001611c4a989796959493929190612432565b604051602081830303815290604052905098975050505050505050565b6000611b55604d602d8486612305565b600073ffffffffffffffffffffffffffffffffffffffff821115611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f76657260448201527f666c6f77000000000000000000000000000000000000000000000000000000006064820152608401610c23565b5090565b600054610100900460ff16611db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c23565b610ceb33611a6c565b600060208284031215611dd257600080fd5b5035919050565b803563ffffffff81168114611ded57600080fd5b919050565b60008083601f840112611e0457600080fd5b50813567ffffffffffffffff811115611e1c57600080fd5b602083019150836020828501011115611b8357600080fd5b74ffffffffffffffffffffffffffffffffffffffffff8116811461166457600080fd5b600080600080600080600060a0888a031215611e7257600080fd5b611e7b88611dd9565b965060208801359550604088013567ffffffffffffffff80821115611e9f57600080fd5b611eab8b838c01611df2565b909750955060608a0135915080821115611ec457600080fd5b50611ed18a828b01611df2565b9094509250506080880135611ee581611e34565b73ffffffffffffffffffffffffffffffffffffffff811691505092959891949750929550565b600060208284031215611f1d57600080fd5b8135611f2881611e34565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b60008060008060008060808789031215611f5e57600080fd5b611f6787611dd9565b955060208701359450604087013567ffffffffffffffff80821115611f8b57600080fd5b611f978a838b01611df2565b90965094506060890135915080821115611fb057600080fd5b50611fbd89828a01611df2565b979a9699509497509295939492505050565b60008060008060408587031215611fe557600080fd5b843567ffffffffffffffff80821115611ffd57600080fd5b61200988838901611df2565b9096509450602087013591508082111561202257600080fd5b5061202f87828801611df2565b95989497509550505050565b60005b8381101561205657818101518382015260200161203e565b50506000910152565b6000815180845261207781602086016020860161203b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611b3e602083018461205f565b600080600080606085870312156120d257600080fd5b6120db85611dd9565b935060208501359250604085013567ffffffffffffffff8111156120fe57600080fd5b61202f87828801611df2565b6000806000806080858703121561212057600080fd5b843561212b81611e34565b73ffffffffffffffffffffffffffffffffffffffff908116945060208601359061215482611e34565b908116935060408601359061216882611e34565b908116925060608601359061217c82611e34565b94979396509194505090911690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156121d7576121d761218b565b5092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408152600061223b6040830185876121de565b828103602084015261224d818561205f565b9695505050505050565b60006020828403121561226957600080fd5b5051919050565b81810381811115611b0157611b0161218b565b6040815260006122976040830186886121de565b8281036020840152610cce8185876121de565b6000602082840312156122bc57600080fd5b81518015158114611b3e57600080fd5b63ffffffff8516815283602082015260606040820152600061224d6060830184866121de565b80820180821115611b0157611b0161218b565b6000808585111561231557600080fd5b8386111561232257600080fd5b5050820193919092039150565b6000825161234181846020870161203b565b9190910192915050565b60006020828403121561235d57600080fd5b8151611f2881611e34565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156123a85780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156123a85760049490940360031b84901b1690921692915050565b80356020831015611b01577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fff000000000000000000000000000000000000000000000000000000000000008960f81b16815260007fffffffff00000000000000000000000000000000000000000000000000000000808a60e01b166001840152808960e01b166005840152876009840152808760e01b1660298401525084602d8301528284604d8401375060009101604d0190815297965050505050505056fea26474726f6e582212208977bc0ff4bcb06a43a5343e90d68188b420a08acab8658e1f0e157fddf778ea64736f6c63430008160033"
686
+ }