@layerzerolabs/lz-evm-oapp-v2 2.0.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 (51) hide show
  1. package/artifacts/contracts/oapp/OApp.sol/OApp.json +332 -0
  2. package/artifacts/contracts/oapp/OAppCore.sol/OAppCore.json +195 -0
  3. package/artifacts/contracts/oapp/OAppReceiver.sol/OAppReceiver.json +316 -0
  4. package/artifacts/contracts/oapp/OAppSender.sol/OAppSender.json +211 -0
  5. package/artifacts/contracts/oapp/examples/OmniCounter.sol/MsgCodec.json +10 -0
  6. package/artifacts/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +874 -0
  7. package/artifacts/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +373 -0
  8. package/artifacts/contracts/oapp/interfaces/IOAppComposer.sol/IOAppComposer.json +44 -0
  9. package/artifacts/contracts/oapp/interfaces/IOAppCore.sol/IOAppCore.json +143 -0
  10. package/artifacts/contracts/oapp/interfaces/IOAppMsgInspector.sol/IOAppMsgInspector.json +51 -0
  11. package/artifacts/contracts/oapp/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +111 -0
  12. package/artifacts/contracts/oapp/libs/OAppOptionsType3.sol/OAppOptionsType3.json +187 -0
  13. package/artifacts/contracts/oapp/libs/OptionsBuilder.sol/OptionsBuilder.json +38 -0
  14. package/artifacts/contracts/oft/OFT.sol/OFT.json +1466 -0
  15. package/artifacts/contracts/oft/OFTAdapter.sol/OFTAdapter.json +1204 -0
  16. package/artifacts/contracts/oft/OFTCore.sol/OFTCore.json +1170 -0
  17. package/artifacts/contracts/oft/interfaces/IOFT.sol/IOFT.json +472 -0
  18. package/artifacts/contracts/oft/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  19. package/artifacts/contracts/oft/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  20. package/artifacts/contracts/precrime/OAppPreCrimeSimulator.sol/OAppPreCrimeSimulator.json +277 -0
  21. package/artifacts/contracts/precrime/PreCrime.sol/PreCrime.json +352 -0
  22. package/artifacts/contracts/precrime/extensions/PreCrimeE1.sol/PreCrimeE1.json +352 -0
  23. package/artifacts/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json +175 -0
  24. package/artifacts/contracts/precrime/interfaces/IPreCrime.sol/IPreCrime.json +188 -0
  25. package/artifacts/contracts/precrime/libs/Packet.sol/PacketDecoder.json +10 -0
  26. package/contracts/oapp/OApp.sol +39 -0
  27. package/contracts/oapp/OAppCore.sol +68 -0
  28. package/contracts/oapp/OAppReceiver.sol +101 -0
  29. package/contracts/oapp/OAppSender.sol +124 -0
  30. package/contracts/oapp/examples/OmniCounter.sol +283 -0
  31. package/contracts/oapp/examples/OmniCounterPreCrime.sol +102 -0
  32. package/contracts/oapp/interfaces/IOAppComposer.sol +12 -0
  33. package/contracts/oapp/interfaces/IOAppCore.sol +51 -0
  34. package/contracts/oapp/interfaces/IOAppMsgInspector.sol +22 -0
  35. package/contracts/oapp/interfaces/IOAppOptionsType3.sol +43 -0
  36. package/contracts/oapp/libs/OAppOptionsType3.sol +82 -0
  37. package/contracts/oapp/libs/OptionsBuilder.sol +200 -0
  38. package/contracts/oft/OFT.sol +116 -0
  39. package/contracts/oft/OFTAdapter.sol +131 -0
  40. package/contracts/oft/OFTCore.sol +456 -0
  41. package/contracts/oft/OFTPrecrime.sol +99 -0
  42. package/contracts/oft/interfaces/IOFT.sol +168 -0
  43. package/contracts/oft/libs/OFTComposeMsgCodec.sol +91 -0
  44. package/contracts/oft/libs/OFTMsgCodec.sol +83 -0
  45. package/contracts/precrime/OAppPreCrimeSimulator.sol +125 -0
  46. package/contracts/precrime/PreCrime.sol +208 -0
  47. package/contracts/precrime/extensions/PreCrimeE1.sol +30 -0
  48. package/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol +55 -0
  49. package/contracts/precrime/interfaces/IPreCrime.sol +40 -0
  50. package/contracts/precrime/libs/Packet.sol +61 -0
  51. package/package.json +35 -0
@@ -0,0 +1,1204 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "OFTAdapter",
4
+ "sourceName": "contracts/oft/OFTAdapter.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_token",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_lzEndpoint",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_owner",
21
+ "type": "address"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "InvalidEndpointCall",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "InvalidLocalDecimals",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [
39
+ {
40
+ "internalType": "bytes",
41
+ "name": "options",
42
+ "type": "bytes"
43
+ }
44
+ ],
45
+ "name": "InvalidOptions",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "LzTokenUnavailable",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [
55
+ {
56
+ "internalType": "uint32",
57
+ "name": "eid",
58
+ "type": "uint32"
59
+ }
60
+ ],
61
+ "name": "NoPeer",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [
66
+ {
67
+ "internalType": "uint256",
68
+ "name": "msgValue",
69
+ "type": "uint256"
70
+ }
71
+ ],
72
+ "name": "NotEnoughNative",
73
+ "type": "error"
74
+ },
75
+ {
76
+ "inputs": [
77
+ {
78
+ "internalType": "address",
79
+ "name": "addr",
80
+ "type": "address"
81
+ }
82
+ ],
83
+ "name": "OnlyEndpoint",
84
+ "type": "error"
85
+ },
86
+ {
87
+ "inputs": [
88
+ {
89
+ "internalType": "uint32",
90
+ "name": "eid",
91
+ "type": "uint32"
92
+ },
93
+ {
94
+ "internalType": "bytes32",
95
+ "name": "sender",
96
+ "type": "bytes32"
97
+ }
98
+ ],
99
+ "name": "OnlyPeer",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "OnlySelf",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [
109
+ {
110
+ "internalType": "bytes",
111
+ "name": "result",
112
+ "type": "bytes"
113
+ }
114
+ ],
115
+ "name": "SimulationResult",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [
120
+ {
121
+ "internalType": "uint256",
122
+ "name": "amountToCreditLD",
123
+ "type": "uint256"
124
+ },
125
+ {
126
+ "internalType": "uint256",
127
+ "name": "minAmountToCreditLD",
128
+ "type": "uint256"
129
+ }
130
+ ],
131
+ "name": "SlippageExceeded",
132
+ "type": "error"
133
+ },
134
+ {
135
+ "anonymous": false,
136
+ "inputs": [
137
+ {
138
+ "components": [
139
+ {
140
+ "internalType": "uint32",
141
+ "name": "eid",
142
+ "type": "uint32"
143
+ },
144
+ {
145
+ "internalType": "uint16",
146
+ "name": "msgType",
147
+ "type": "uint16"
148
+ },
149
+ {
150
+ "internalType": "bytes",
151
+ "name": "options",
152
+ "type": "bytes"
153
+ }
154
+ ],
155
+ "indexed": false,
156
+ "internalType": "struct EnforcedOptionParam[]",
157
+ "name": "_enforcedOptions",
158
+ "type": "tuple[]"
159
+ }
160
+ ],
161
+ "name": "EnforcedOptionSet",
162
+ "type": "event"
163
+ },
164
+ {
165
+ "anonymous": false,
166
+ "inputs": [
167
+ {
168
+ "indexed": false,
169
+ "internalType": "address",
170
+ "name": "inspector",
171
+ "type": "address"
172
+ }
173
+ ],
174
+ "name": "MsgInspectorSet",
175
+ "type": "event"
176
+ },
177
+ {
178
+ "anonymous": false,
179
+ "inputs": [
180
+ {
181
+ "indexed": true,
182
+ "internalType": "bytes32",
183
+ "name": "guid",
184
+ "type": "bytes32"
185
+ },
186
+ {
187
+ "indexed": true,
188
+ "internalType": "address",
189
+ "name": "toAddress",
190
+ "type": "address"
191
+ },
192
+ {
193
+ "indexed": false,
194
+ "internalType": "uint256",
195
+ "name": "amountToCreditLD",
196
+ "type": "uint256"
197
+ },
198
+ {
199
+ "indexed": false,
200
+ "internalType": "uint256",
201
+ "name": "amountReceivedLD",
202
+ "type": "uint256"
203
+ }
204
+ ],
205
+ "name": "OFTReceived",
206
+ "type": "event"
207
+ },
208
+ {
209
+ "anonymous": false,
210
+ "inputs": [
211
+ {
212
+ "indexed": true,
213
+ "internalType": "bytes32",
214
+ "name": "guid",
215
+ "type": "bytes32"
216
+ },
217
+ {
218
+ "indexed": true,
219
+ "internalType": "address",
220
+ "name": "fromAddress",
221
+ "type": "address"
222
+ },
223
+ {
224
+ "indexed": false,
225
+ "internalType": "uint256",
226
+ "name": "amountDebitedLD",
227
+ "type": "uint256"
228
+ },
229
+ {
230
+ "indexed": false,
231
+ "internalType": "uint256",
232
+ "name": "amountToCreditLD",
233
+ "type": "uint256"
234
+ },
235
+ {
236
+ "indexed": false,
237
+ "internalType": "bytes",
238
+ "name": "composeMsg",
239
+ "type": "bytes"
240
+ }
241
+ ],
242
+ "name": "OFTSent",
243
+ "type": "event"
244
+ },
245
+ {
246
+ "anonymous": false,
247
+ "inputs": [
248
+ {
249
+ "indexed": true,
250
+ "internalType": "address",
251
+ "name": "previousOwner",
252
+ "type": "address"
253
+ },
254
+ {
255
+ "indexed": true,
256
+ "internalType": "address",
257
+ "name": "newOwner",
258
+ "type": "address"
259
+ }
260
+ ],
261
+ "name": "OwnershipTransferred",
262
+ "type": "event"
263
+ },
264
+ {
265
+ "anonymous": false,
266
+ "inputs": [
267
+ {
268
+ "indexed": false,
269
+ "internalType": "uint32",
270
+ "name": "eid",
271
+ "type": "uint32"
272
+ },
273
+ {
274
+ "indexed": false,
275
+ "internalType": "bytes32",
276
+ "name": "peer",
277
+ "type": "bytes32"
278
+ }
279
+ ],
280
+ "name": "PeerSet",
281
+ "type": "event"
282
+ },
283
+ {
284
+ "anonymous": false,
285
+ "inputs": [
286
+ {
287
+ "indexed": false,
288
+ "internalType": "address",
289
+ "name": "preCrimeAddress",
290
+ "type": "address"
291
+ }
292
+ ],
293
+ "name": "PreCrimeSet",
294
+ "type": "event"
295
+ },
296
+ {
297
+ "inputs": [],
298
+ "name": "SEND",
299
+ "outputs": [
300
+ {
301
+ "internalType": "uint16",
302
+ "name": "",
303
+ "type": "uint16"
304
+ }
305
+ ],
306
+ "stateMutability": "view",
307
+ "type": "function"
308
+ },
309
+ {
310
+ "inputs": [],
311
+ "name": "SEND_AND_CALL",
312
+ "outputs": [
313
+ {
314
+ "internalType": "uint16",
315
+ "name": "",
316
+ "type": "uint16"
317
+ }
318
+ ],
319
+ "stateMutability": "view",
320
+ "type": "function"
321
+ },
322
+ {
323
+ "inputs": [
324
+ {
325
+ "components": [
326
+ {
327
+ "internalType": "uint32",
328
+ "name": "srcEid",
329
+ "type": "uint32"
330
+ },
331
+ {
332
+ "internalType": "bytes32",
333
+ "name": "sender",
334
+ "type": "bytes32"
335
+ },
336
+ {
337
+ "internalType": "uint64",
338
+ "name": "nonce",
339
+ "type": "uint64"
340
+ }
341
+ ],
342
+ "internalType": "struct Origin",
343
+ "name": "origin",
344
+ "type": "tuple"
345
+ }
346
+ ],
347
+ "name": "allowInitializePath",
348
+ "outputs": [
349
+ {
350
+ "internalType": "bool",
351
+ "name": "",
352
+ "type": "bool"
353
+ }
354
+ ],
355
+ "stateMutability": "view",
356
+ "type": "function"
357
+ },
358
+ {
359
+ "inputs": [
360
+ {
361
+ "internalType": "uint32",
362
+ "name": "_eid",
363
+ "type": "uint32"
364
+ },
365
+ {
366
+ "internalType": "uint16",
367
+ "name": "_msgType",
368
+ "type": "uint16"
369
+ },
370
+ {
371
+ "internalType": "bytes",
372
+ "name": "_extraOptions",
373
+ "type": "bytes"
374
+ }
375
+ ],
376
+ "name": "combineOptions",
377
+ "outputs": [
378
+ {
379
+ "internalType": "bytes",
380
+ "name": "",
381
+ "type": "bytes"
382
+ }
383
+ ],
384
+ "stateMutability": "view",
385
+ "type": "function"
386
+ },
387
+ {
388
+ "inputs": [],
389
+ "name": "decimalConversionRate",
390
+ "outputs": [
391
+ {
392
+ "internalType": "uint256",
393
+ "name": "",
394
+ "type": "uint256"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [],
402
+ "name": "endpoint",
403
+ "outputs": [
404
+ {
405
+ "internalType": "contract ILayerZeroEndpointV2",
406
+ "name": "",
407
+ "type": "address"
408
+ }
409
+ ],
410
+ "stateMutability": "view",
411
+ "type": "function"
412
+ },
413
+ {
414
+ "inputs": [
415
+ {
416
+ "internalType": "uint32",
417
+ "name": "eid",
418
+ "type": "uint32"
419
+ },
420
+ {
421
+ "internalType": "uint16",
422
+ "name": "msgType",
423
+ "type": "uint16"
424
+ }
425
+ ],
426
+ "name": "enforcedOptions",
427
+ "outputs": [
428
+ {
429
+ "internalType": "bytes",
430
+ "name": "enforcedOption",
431
+ "type": "bytes"
432
+ }
433
+ ],
434
+ "stateMutability": "view",
435
+ "type": "function"
436
+ },
437
+ {
438
+ "inputs": [
439
+ {
440
+ "internalType": "uint32",
441
+ "name": "_eid",
442
+ "type": "uint32"
443
+ },
444
+ {
445
+ "internalType": "bytes32",
446
+ "name": "_peer",
447
+ "type": "bytes32"
448
+ }
449
+ ],
450
+ "name": "isPeer",
451
+ "outputs": [
452
+ {
453
+ "internalType": "bool",
454
+ "name": "",
455
+ "type": "bool"
456
+ }
457
+ ],
458
+ "stateMutability": "view",
459
+ "type": "function"
460
+ },
461
+ {
462
+ "inputs": [
463
+ {
464
+ "components": [
465
+ {
466
+ "internalType": "uint32",
467
+ "name": "srcEid",
468
+ "type": "uint32"
469
+ },
470
+ {
471
+ "internalType": "bytes32",
472
+ "name": "sender",
473
+ "type": "bytes32"
474
+ },
475
+ {
476
+ "internalType": "uint64",
477
+ "name": "nonce",
478
+ "type": "uint64"
479
+ }
480
+ ],
481
+ "internalType": "struct Origin",
482
+ "name": "_origin",
483
+ "type": "tuple"
484
+ },
485
+ {
486
+ "internalType": "bytes32",
487
+ "name": "_guid",
488
+ "type": "bytes32"
489
+ },
490
+ {
491
+ "internalType": "bytes",
492
+ "name": "_message",
493
+ "type": "bytes"
494
+ },
495
+ {
496
+ "internalType": "address",
497
+ "name": "_executor",
498
+ "type": "address"
499
+ },
500
+ {
501
+ "internalType": "bytes",
502
+ "name": "_extraData",
503
+ "type": "bytes"
504
+ }
505
+ ],
506
+ "name": "lzReceive",
507
+ "outputs": [],
508
+ "stateMutability": "payable",
509
+ "type": "function"
510
+ },
511
+ {
512
+ "inputs": [
513
+ {
514
+ "components": [
515
+ {
516
+ "components": [
517
+ {
518
+ "internalType": "uint32",
519
+ "name": "srcEid",
520
+ "type": "uint32"
521
+ },
522
+ {
523
+ "internalType": "bytes32",
524
+ "name": "sender",
525
+ "type": "bytes32"
526
+ },
527
+ {
528
+ "internalType": "uint64",
529
+ "name": "nonce",
530
+ "type": "uint64"
531
+ }
532
+ ],
533
+ "internalType": "struct Origin",
534
+ "name": "origin",
535
+ "type": "tuple"
536
+ },
537
+ {
538
+ "internalType": "uint32",
539
+ "name": "dstEid",
540
+ "type": "uint32"
541
+ },
542
+ {
543
+ "internalType": "address",
544
+ "name": "receiver",
545
+ "type": "address"
546
+ },
547
+ {
548
+ "internalType": "bytes32",
549
+ "name": "guid",
550
+ "type": "bytes32"
551
+ },
552
+ {
553
+ "internalType": "uint256",
554
+ "name": "value",
555
+ "type": "uint256"
556
+ },
557
+ {
558
+ "internalType": "address",
559
+ "name": "executor",
560
+ "type": "address"
561
+ },
562
+ {
563
+ "internalType": "bytes",
564
+ "name": "message",
565
+ "type": "bytes"
566
+ },
567
+ {
568
+ "internalType": "bytes",
569
+ "name": "extraData",
570
+ "type": "bytes"
571
+ }
572
+ ],
573
+ "internalType": "struct InboundPacket[]",
574
+ "name": "_packets",
575
+ "type": "tuple[]"
576
+ }
577
+ ],
578
+ "name": "lzReceiveAndRevert",
579
+ "outputs": [],
580
+ "stateMutability": "payable",
581
+ "type": "function"
582
+ },
583
+ {
584
+ "inputs": [
585
+ {
586
+ "components": [
587
+ {
588
+ "internalType": "uint32",
589
+ "name": "srcEid",
590
+ "type": "uint32"
591
+ },
592
+ {
593
+ "internalType": "bytes32",
594
+ "name": "sender",
595
+ "type": "bytes32"
596
+ },
597
+ {
598
+ "internalType": "uint64",
599
+ "name": "nonce",
600
+ "type": "uint64"
601
+ }
602
+ ],
603
+ "internalType": "struct Origin",
604
+ "name": "_origin",
605
+ "type": "tuple"
606
+ },
607
+ {
608
+ "internalType": "bytes32",
609
+ "name": "_guid",
610
+ "type": "bytes32"
611
+ },
612
+ {
613
+ "internalType": "bytes",
614
+ "name": "_message",
615
+ "type": "bytes"
616
+ },
617
+ {
618
+ "internalType": "address",
619
+ "name": "_executor",
620
+ "type": "address"
621
+ },
622
+ {
623
+ "internalType": "bytes",
624
+ "name": "_extraData",
625
+ "type": "bytes"
626
+ }
627
+ ],
628
+ "name": "lzReceiveSimulate",
629
+ "outputs": [],
630
+ "stateMutability": "payable",
631
+ "type": "function"
632
+ },
633
+ {
634
+ "inputs": [],
635
+ "name": "msgInspector",
636
+ "outputs": [
637
+ {
638
+ "internalType": "address",
639
+ "name": "",
640
+ "type": "address"
641
+ }
642
+ ],
643
+ "stateMutability": "view",
644
+ "type": "function"
645
+ },
646
+ {
647
+ "inputs": [
648
+ {
649
+ "internalType": "uint32",
650
+ "name": "",
651
+ "type": "uint32"
652
+ },
653
+ {
654
+ "internalType": "bytes32",
655
+ "name": "",
656
+ "type": "bytes32"
657
+ }
658
+ ],
659
+ "name": "nextNonce",
660
+ "outputs": [
661
+ {
662
+ "internalType": "uint64",
663
+ "name": "nonce",
664
+ "type": "uint64"
665
+ }
666
+ ],
667
+ "stateMutability": "view",
668
+ "type": "function"
669
+ },
670
+ {
671
+ "inputs": [],
672
+ "name": "oApp",
673
+ "outputs": [
674
+ {
675
+ "internalType": "address",
676
+ "name": "",
677
+ "type": "address"
678
+ }
679
+ ],
680
+ "stateMutability": "view",
681
+ "type": "function"
682
+ },
683
+ {
684
+ "inputs": [],
685
+ "name": "oAppVersion",
686
+ "outputs": [
687
+ {
688
+ "internalType": "uint64",
689
+ "name": "senderVersion",
690
+ "type": "uint64"
691
+ },
692
+ {
693
+ "internalType": "uint64",
694
+ "name": "receiverVersion",
695
+ "type": "uint64"
696
+ }
697
+ ],
698
+ "stateMutability": "pure",
699
+ "type": "function"
700
+ },
701
+ {
702
+ "inputs": [],
703
+ "name": "oftVersion",
704
+ "outputs": [
705
+ {
706
+ "internalType": "uint64",
707
+ "name": "major",
708
+ "type": "uint64"
709
+ },
710
+ {
711
+ "internalType": "uint64",
712
+ "name": "minor",
713
+ "type": "uint64"
714
+ }
715
+ ],
716
+ "stateMutability": "pure",
717
+ "type": "function"
718
+ },
719
+ {
720
+ "inputs": [],
721
+ "name": "outboundAmount",
722
+ "outputs": [
723
+ {
724
+ "internalType": "uint256",
725
+ "name": "",
726
+ "type": "uint256"
727
+ }
728
+ ],
729
+ "stateMutability": "view",
730
+ "type": "function"
731
+ },
732
+ {
733
+ "inputs": [],
734
+ "name": "owner",
735
+ "outputs": [
736
+ {
737
+ "internalType": "address",
738
+ "name": "",
739
+ "type": "address"
740
+ }
741
+ ],
742
+ "stateMutability": "view",
743
+ "type": "function"
744
+ },
745
+ {
746
+ "inputs": [
747
+ {
748
+ "internalType": "uint32",
749
+ "name": "eid",
750
+ "type": "uint32"
751
+ }
752
+ ],
753
+ "name": "peers",
754
+ "outputs": [
755
+ {
756
+ "internalType": "bytes32",
757
+ "name": "peer",
758
+ "type": "bytes32"
759
+ }
760
+ ],
761
+ "stateMutability": "view",
762
+ "type": "function"
763
+ },
764
+ {
765
+ "inputs": [],
766
+ "name": "preCrime",
767
+ "outputs": [
768
+ {
769
+ "internalType": "address",
770
+ "name": "",
771
+ "type": "address"
772
+ }
773
+ ],
774
+ "stateMutability": "view",
775
+ "type": "function"
776
+ },
777
+ {
778
+ "inputs": [
779
+ {
780
+ "components": [
781
+ {
782
+ "internalType": "uint32",
783
+ "name": "dstEid",
784
+ "type": "uint32"
785
+ },
786
+ {
787
+ "internalType": "bytes32",
788
+ "name": "to",
789
+ "type": "bytes32"
790
+ },
791
+ {
792
+ "internalType": "uint256",
793
+ "name": "amountToSendLD",
794
+ "type": "uint256"
795
+ },
796
+ {
797
+ "internalType": "uint256",
798
+ "name": "minAmountToCreditLD",
799
+ "type": "uint256"
800
+ }
801
+ ],
802
+ "internalType": "struct SendParam",
803
+ "name": "_sendParam",
804
+ "type": "tuple"
805
+ },
806
+ {
807
+ "internalType": "bytes",
808
+ "name": "",
809
+ "type": "bytes"
810
+ }
811
+ ],
812
+ "name": "quoteOFT",
813
+ "outputs": [
814
+ {
815
+ "components": [
816
+ {
817
+ "internalType": "uint256",
818
+ "name": "minAmountLD",
819
+ "type": "uint256"
820
+ },
821
+ {
822
+ "internalType": "uint256",
823
+ "name": "maxAmountLD",
824
+ "type": "uint256"
825
+ }
826
+ ],
827
+ "internalType": "struct OFTLimit",
828
+ "name": "oftLimit",
829
+ "type": "tuple"
830
+ },
831
+ {
832
+ "components": [
833
+ {
834
+ "internalType": "uint256",
835
+ "name": "feeAmountLD",
836
+ "type": "uint256"
837
+ },
838
+ {
839
+ "internalType": "string",
840
+ "name": "description",
841
+ "type": "string"
842
+ }
843
+ ],
844
+ "internalType": "struct OFTFeeDetail[]",
845
+ "name": "oftFeeDetails",
846
+ "type": "tuple[]"
847
+ },
848
+ {
849
+ "components": [
850
+ {
851
+ "internalType": "uint256",
852
+ "name": "amountDebitLD",
853
+ "type": "uint256"
854
+ },
855
+ {
856
+ "internalType": "uint256",
857
+ "name": "amountCreditLD",
858
+ "type": "uint256"
859
+ }
860
+ ],
861
+ "internalType": "struct OFTReceipt",
862
+ "name": "oftReceipt",
863
+ "type": "tuple"
864
+ }
865
+ ],
866
+ "stateMutability": "view",
867
+ "type": "function"
868
+ },
869
+ {
870
+ "inputs": [
871
+ {
872
+ "components": [
873
+ {
874
+ "internalType": "uint32",
875
+ "name": "dstEid",
876
+ "type": "uint32"
877
+ },
878
+ {
879
+ "internalType": "bytes32",
880
+ "name": "to",
881
+ "type": "bytes32"
882
+ },
883
+ {
884
+ "internalType": "uint256",
885
+ "name": "amountToSendLD",
886
+ "type": "uint256"
887
+ },
888
+ {
889
+ "internalType": "uint256",
890
+ "name": "minAmountToCreditLD",
891
+ "type": "uint256"
892
+ }
893
+ ],
894
+ "internalType": "struct SendParam",
895
+ "name": "_sendParam",
896
+ "type": "tuple"
897
+ },
898
+ {
899
+ "internalType": "bytes",
900
+ "name": "_extraOptions",
901
+ "type": "bytes"
902
+ },
903
+ {
904
+ "internalType": "bool",
905
+ "name": "_payInLzToken",
906
+ "type": "bool"
907
+ },
908
+ {
909
+ "internalType": "bytes",
910
+ "name": "_composeMsg",
911
+ "type": "bytes"
912
+ },
913
+ {
914
+ "internalType": "bytes",
915
+ "name": "",
916
+ "type": "bytes"
917
+ }
918
+ ],
919
+ "name": "quoteSend",
920
+ "outputs": [
921
+ {
922
+ "components": [
923
+ {
924
+ "internalType": "uint256",
925
+ "name": "nativeFee",
926
+ "type": "uint256"
927
+ },
928
+ {
929
+ "internalType": "uint256",
930
+ "name": "lzTokenFee",
931
+ "type": "uint256"
932
+ }
933
+ ],
934
+ "internalType": "struct MessagingFee",
935
+ "name": "msgFee",
936
+ "type": "tuple"
937
+ }
938
+ ],
939
+ "stateMutability": "view",
940
+ "type": "function"
941
+ },
942
+ {
943
+ "inputs": [],
944
+ "name": "renounceOwnership",
945
+ "outputs": [],
946
+ "stateMutability": "nonpayable",
947
+ "type": "function"
948
+ },
949
+ {
950
+ "inputs": [
951
+ {
952
+ "components": [
953
+ {
954
+ "internalType": "uint32",
955
+ "name": "dstEid",
956
+ "type": "uint32"
957
+ },
958
+ {
959
+ "internalType": "bytes32",
960
+ "name": "to",
961
+ "type": "bytes32"
962
+ },
963
+ {
964
+ "internalType": "uint256",
965
+ "name": "amountToSendLD",
966
+ "type": "uint256"
967
+ },
968
+ {
969
+ "internalType": "uint256",
970
+ "name": "minAmountToCreditLD",
971
+ "type": "uint256"
972
+ }
973
+ ],
974
+ "internalType": "struct SendParam",
975
+ "name": "_sendParam",
976
+ "type": "tuple"
977
+ },
978
+ {
979
+ "internalType": "bytes",
980
+ "name": "_extraOptions",
981
+ "type": "bytes"
982
+ },
983
+ {
984
+ "components": [
985
+ {
986
+ "internalType": "uint256",
987
+ "name": "nativeFee",
988
+ "type": "uint256"
989
+ },
990
+ {
991
+ "internalType": "uint256",
992
+ "name": "lzTokenFee",
993
+ "type": "uint256"
994
+ }
995
+ ],
996
+ "internalType": "struct MessagingFee",
997
+ "name": "_fee",
998
+ "type": "tuple"
999
+ },
1000
+ {
1001
+ "internalType": "address",
1002
+ "name": "_refundAddress",
1003
+ "type": "address"
1004
+ },
1005
+ {
1006
+ "internalType": "bytes",
1007
+ "name": "_composeMsg",
1008
+ "type": "bytes"
1009
+ },
1010
+ {
1011
+ "internalType": "bytes",
1012
+ "name": "",
1013
+ "type": "bytes"
1014
+ }
1015
+ ],
1016
+ "name": "send",
1017
+ "outputs": [
1018
+ {
1019
+ "components": [
1020
+ {
1021
+ "internalType": "bytes32",
1022
+ "name": "guid",
1023
+ "type": "bytes32"
1024
+ },
1025
+ {
1026
+ "internalType": "uint64",
1027
+ "name": "nonce",
1028
+ "type": "uint64"
1029
+ },
1030
+ {
1031
+ "components": [
1032
+ {
1033
+ "internalType": "uint256",
1034
+ "name": "nativeFee",
1035
+ "type": "uint256"
1036
+ },
1037
+ {
1038
+ "internalType": "uint256",
1039
+ "name": "lzTokenFee",
1040
+ "type": "uint256"
1041
+ }
1042
+ ],
1043
+ "internalType": "struct MessagingFee",
1044
+ "name": "fee",
1045
+ "type": "tuple"
1046
+ }
1047
+ ],
1048
+ "internalType": "struct MessagingReceipt",
1049
+ "name": "msgReceipt",
1050
+ "type": "tuple"
1051
+ },
1052
+ {
1053
+ "components": [
1054
+ {
1055
+ "internalType": "uint256",
1056
+ "name": "amountDebitLD",
1057
+ "type": "uint256"
1058
+ },
1059
+ {
1060
+ "internalType": "uint256",
1061
+ "name": "amountCreditLD",
1062
+ "type": "uint256"
1063
+ }
1064
+ ],
1065
+ "internalType": "struct OFTReceipt",
1066
+ "name": "oftReceipt",
1067
+ "type": "tuple"
1068
+ }
1069
+ ],
1070
+ "stateMutability": "payable",
1071
+ "type": "function"
1072
+ },
1073
+ {
1074
+ "inputs": [
1075
+ {
1076
+ "internalType": "address",
1077
+ "name": "_delegate",
1078
+ "type": "address"
1079
+ }
1080
+ ],
1081
+ "name": "setDelegate",
1082
+ "outputs": [],
1083
+ "stateMutability": "nonpayable",
1084
+ "type": "function"
1085
+ },
1086
+ {
1087
+ "inputs": [
1088
+ {
1089
+ "components": [
1090
+ {
1091
+ "internalType": "uint32",
1092
+ "name": "eid",
1093
+ "type": "uint32"
1094
+ },
1095
+ {
1096
+ "internalType": "uint16",
1097
+ "name": "msgType",
1098
+ "type": "uint16"
1099
+ },
1100
+ {
1101
+ "internalType": "bytes",
1102
+ "name": "options",
1103
+ "type": "bytes"
1104
+ }
1105
+ ],
1106
+ "internalType": "struct EnforcedOptionParam[]",
1107
+ "name": "_enforcedOptions",
1108
+ "type": "tuple[]"
1109
+ }
1110
+ ],
1111
+ "name": "setEnforcedOptions",
1112
+ "outputs": [],
1113
+ "stateMutability": "nonpayable",
1114
+ "type": "function"
1115
+ },
1116
+ {
1117
+ "inputs": [
1118
+ {
1119
+ "internalType": "address",
1120
+ "name": "_msgInspector",
1121
+ "type": "address"
1122
+ }
1123
+ ],
1124
+ "name": "setMsgInspector",
1125
+ "outputs": [],
1126
+ "stateMutability": "nonpayable",
1127
+ "type": "function"
1128
+ },
1129
+ {
1130
+ "inputs": [
1131
+ {
1132
+ "internalType": "uint32",
1133
+ "name": "_eid",
1134
+ "type": "uint32"
1135
+ },
1136
+ {
1137
+ "internalType": "bytes32",
1138
+ "name": "_peer",
1139
+ "type": "bytes32"
1140
+ }
1141
+ ],
1142
+ "name": "setPeer",
1143
+ "outputs": [],
1144
+ "stateMutability": "nonpayable",
1145
+ "type": "function"
1146
+ },
1147
+ {
1148
+ "inputs": [
1149
+ {
1150
+ "internalType": "address",
1151
+ "name": "_preCrime",
1152
+ "type": "address"
1153
+ }
1154
+ ],
1155
+ "name": "setPreCrime",
1156
+ "outputs": [],
1157
+ "stateMutability": "nonpayable",
1158
+ "type": "function"
1159
+ },
1160
+ {
1161
+ "inputs": [],
1162
+ "name": "sharedDecimals",
1163
+ "outputs": [
1164
+ {
1165
+ "internalType": "uint8",
1166
+ "name": "",
1167
+ "type": "uint8"
1168
+ }
1169
+ ],
1170
+ "stateMutability": "pure",
1171
+ "type": "function"
1172
+ },
1173
+ {
1174
+ "inputs": [],
1175
+ "name": "token",
1176
+ "outputs": [
1177
+ {
1178
+ "internalType": "address",
1179
+ "name": "",
1180
+ "type": "address"
1181
+ }
1182
+ ],
1183
+ "stateMutability": "view",
1184
+ "type": "function"
1185
+ },
1186
+ {
1187
+ "inputs": [
1188
+ {
1189
+ "internalType": "address",
1190
+ "name": "newOwner",
1191
+ "type": "address"
1192
+ }
1193
+ ],
1194
+ "name": "transferOwnership",
1195
+ "outputs": [],
1196
+ "stateMutability": "nonpayable",
1197
+ "type": "function"
1198
+ }
1199
+ ],
1200
+ "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003984380380620039848339810160408190526200003491620001fc565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000099919062000246565b828281818181620000aa336200018a565b620000b5816200018a565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b158015620000ff57600080fd5b505af115801562000114573d6000803e3d6000fd5b50505050505050506200012c620001da60201b60201c565b60ff168360ff16101562000153576040516301e9714b60e41b815260040160405180910390fd5b6200016060068462000288565b6200016d90600a620003a7565b60a0525050506001600160a01b0390921660c05250620003b89050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b80516001600160a01b0381168114620001f757600080fd5b919050565b6000806000606084860312156200021257600080fd5b6200021d84620001df565b92506200022d60208501620001df565b91506200023d60408501620001df565b90509250925092565b6000602082840312156200025957600080fd5b815160ff811681146200026b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620002a457620002a462000272565b92915050565b600181815b80851115620002eb578160001904821115620002cf57620002cf62000272565b80851615620002dd57918102915b93841c9390800290620002af565b509250929050565b6000826200030457506001620002a4565b816200031357506000620002a4565b81600181146200032c5760028114620003375762000357565b6001915050620002a4565b60ff8411156200034b576200034b62000272565b50506001821b620002a4565b5060208310610133831016604e8410600b84101617156200037c575081810a620002a4565b620003888383620002aa565b80600019048211156200039f576200039f62000272565b029392505050565b60006200026b60ff841683620002f3565b60805160a05160c051613541620004436000396000818161065901528181611a7c01528181611c4a0152611ce10152600081816104b501528181611a1901528181611b2c0152611b660152600081816103c90152818161069f015281816110a6015281816113ca015281816116d70152818161181601528181611dd10152611eca01526135416000f3fe6080604052600436106101e35760003560e01c8063857749b011610102578063bd815db011610095578063d424388511610064578063d42438851461060a578063f2fde38b1461062a578063fc0c546a1461064a578063ff7bd03d1461067d57600080fd5b8063bd815db014610595578063c1e36500146105a8578063ca5eb5e1146105d7578063d045a0dc146105f757600080fd5b8063b731ea0a116100d1578063b731ea0a146104fb578063b98bd07014610528578063bb0b6a5314610548578063bc70b3541461057557600080fd5b8063857749b01461045c5780638da5cb5b14610478578063963efcaa146104a35780639689cb05146104e557600080fd5b806349e460171161017a5780635e280f11116101495780635e280f11146103b75780636fc1b31e146103eb578063715018a61461040b5780637d25a05e1461042057600080fd5b806349e460171461032657806352ae2879146103475780635535d4611461035a5780635a0dfe4d1461038757600080fd5b806317442b70116101b657806317442b70146102af5780631f5e1334146102c45780633400288b146102d957806346a40f75146102f957600080fd5b8063111ecdad146101e857806313137d651461023f578063134d4f2514610254578063156a0d0f1461027c575b600080fd5b3480156101f457600080fd5b506004546102159073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61025261024d366004612376565b61069d565b005b34801561026057600080fd5b50610269600281565b60405161ffff9091168152602001610236565b34801561028857600080fd5b50600160025b6040805167ffffffffffffffff938416815292909116602083015201610236565b3480156102bb57600080fd5b5060018061028e565b3480156102d057600080fd5b50610269600181565b3480156102e557600080fd5b506102526102f436600461242a565b61079c565b34801561030557600080fd5b50610319610314366004612474565b6107fa565b6040516102369190612535565b61033961033436600461254c565b610870565b60405161023692919061264e565b34801561035357600080fd5b5030610215565b34801561036657600080fd5b5061037a6103753660046126b3565b610980565b6040516102369190612754565b34801561039357600080fd5b506103a76103a236600461242a565b610a25565b6040519015158152602001610236565b3480156103c357600080fd5b506102157f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f757600080fd5b50610252610406366004612767565b610a44565b34801561041757600080fd5b50610252610ac6565b34801561042c57600080fd5b5061044361043b36600461242a565b600092915050565b60405167ffffffffffffffff9091168152602001610236565b34801561046857600080fd5b5060405160068152602001610236565b34801561048457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610215565b3480156104af57600080fd5b506104d77f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610236565b3480156104f157600080fd5b506104d760055481565b34801561050757600080fd5b506002546102159073ffffffffffffffffffffffffffffffffffffffff1681565b34801561053457600080fd5b506102526105433660046127c9565b610ada565b34801561055457600080fd5b506104d76105633660046127ff565b60016020526000908152604090205481565b34801561058157600080fd5b5061037a61059036600461281a565b610c3b565b6102526105a33660046127c9565b610dcf565b3480156105b457600080fd5b506105c86105c336600461287b565b610f86565b604051610236939291906128cf565b3480156105e357600080fd5b506102526105f2366004612767565b611059565b610252610605366004612376565b611105565b34801561061657600080fd5b50610252610625366004612767565b61114d565b34801561063657600080fd5b50610252610645366004612767565b6111c8565b34801561065657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610215565b34801561068957600080fd5b506103a7610698366004612986565b61127f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610713576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061072d90610728908a6127ff565b6112b5565b146107845761073f60208801886127ff565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161070a565b6107938787878787878761130a565b50505050505050565b6107a4611499565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b6040805180820190915260008082526020820152600061082f60408b013560608c013561082a60208e018e6127ff565b61151a565b9150506000806108438c8c8c8b8b88611577565b909250905061086061085860208e018e6127ff565b83838c6116c1565b9c9b505050505050505050505050565b61087861229b565b60408051808201909152600080825260208201526000806108b48d604001358e606001358f60000160208101906108af91906127ff565b6117af565b915091506000806108c98f8f8f8d8d88611577565b915091506108fc8f60000160208101906108e391906127ff565b83838f8036038101906108f691906129fa565b8f6117e3565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff1686600001517fee6b77e8cd280835aecc97812d736c35faad222d91b12de19c7ed912e9aed71b86868e8e6040516109669493929190612a75565b60405180910390a350505050995099975050505050505050565b6003602090815260009283526040808420909152908252902080546109a490612a9f565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090612a9f565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b505050505081565b63ffffffff821660009081526001602052604090205481145b92915050565b610a4c611499565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610ace611499565b610ad860006118fb565b565b610ae2611499565b60005b81811015610c0957610b27838383818110610b0257610b02612aec565b9050602002810190610b149190612b1b565b610b22906040810190612b59565b611970565b828282818110610b3957610b39612aec565b9050602002810190610b4b9190612b1b565b610b59906040810190612b59565b60036000868686818110610b6f57610b6f612aec565b9050602002810190610b819190612b1b565b610b8f9060208101906127ff565b63ffffffff1663ffffffff1681526020019081526020016000206000868686818110610bbd57610bbd612aec565b9050602002810190610bcf9190612b1b565b610be0906040810190602001612bbe565b61ffff168152602081019190915260400160002091610c00919083612c29565b50600101610ae5565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67482826040516107ee929190612d43565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610c6f90612a9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b90612a9f565b8015610ce85780601f10610cbd57610100808354040283529160200191610ce8565b820191906000526020600020905b815481529060010190602001808311610ccb57829003601f168201915b505050505090508051600003610d385783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610dc79350505050565b6000839003610d48579050610dc7565b60028310610d9157610d5a8484611970565b80610d688460028188612e81565b604051602001610d7a93929190612eab565b604051602081830303815290604052915050610dc7565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b949350505050565b60005b81811015610ec15736838383818110610ded57610ded612aec565b9050602002810190610dff9190612ee7565b9050610e1b610e1160208301836127ff565b6020830135610a25565b610e255750610eb9565b3063d045a0dc60c08301358360a0810135610e44610100830183612b59565b610e55610100890160e08a01612767565b610e636101208a018a612b59565b6040518963ffffffff1660e01b8152600401610e859796959493929190612f31565b6000604051808303818588803b158015610e9e57600080fd5b505af1158015610eb2573d6000803e3d6000fd5b5050505050505b600101610dd2565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f539190810190612fc5565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b60408051808201909152600080825260208201526060610fb9604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182611015565b604080518082019091526000815260606020820152815260200190600190039081610fed5790505b50935060008061103560408b013560608c013561082a60208e018e6127ff565b604080518082019091529182526020820152969a9599509597509395505050505050565b611061611499565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b5050505050565b33301461113e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079387878787878787610784565b611155611499565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610abb565b6111d0611499565b73ffffffffffffffffffffffffffffffffffffffff8116611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070a565b61127c816118fb565b50565b600060208201803590600190839061129790866127ff565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610a3e576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161070a565b600061131c61131987876119d0565b90565b9050600061133261132d88886119ef565b611a12565b9050600061134d838361134860208e018e6127ff565b611a48565b9050602887111561143a57600061138a61136d60608d0160408e01613085565b61137a60208e018e6127ff565b846113858d8d611aab565b611af6565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114069087908e9060009087906004016130a2565b600060405180830381600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b50505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8516918b917f80a66cf84dc0b742c17c4672ee6687d7cb340ab0e5d367ac6b02bed1a6489f8d910160405180910390a350505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070a565b60008061152685611b28565b91508190508381101561156f576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161070a565b935093915050565b60608060006115c9896020013561158d86611b5f565b88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b8b92505050565b90935090506000816115dc5760016115df565b60025b90506115f96115f160208c018c6127ff565b828b8b610c3b565b60045490935073ffffffffffffffffffffffffffffffffffffffff16156116b457600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb916116719188918891016130e1565b602060405180830381865afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b29190613106565b505b5050965096945050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611731896112b5565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611766929190613123565b6040805180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906131f7565b95945050505050565b60008084156117cd576117c3858585611c1d565b909250905061156f565b6117d78484611c93565b90969095509350505050565b6117eb61229b565b60006117fa8460000151611d8c565b602085015190915015611814576118148460200151611dcd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016118718c6112b5565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016118ad929190613123565b60806040518083038185885af11580156118cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118f09190613213565b979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061197f6002828486612e81565b6119889161327b565b60f01c9050600381146119cb5782826040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b505050565b60006119df6020828486612e81565b6119e8916132c3565b9392505050565b60006119ff602860208486612e81565b611a08916132ff565b60c01c9392505050565b6000610a3e7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613374565b60008260056000828254611a5c919061338b565b90915550611aa3905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611ef3565b509092915050565b6060611aba8260288186612e81565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611b0f949392919061339e565b6040516020818303038152906040529050949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b55818461341c565b610a3e9190613374565b6000610a3e7f00000000000000000000000000000000000000000000000000000000000000008361341c565b8051606090151580611bec578484604051602001611bd892919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611c13565b84843385604051602001611c039493929190613457565b6040516020818303038152906040525b9150935093915050565b600080611c2b85858561151a565b9092509050611c7273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085611fc7565b8060056000828254611c8491906134b0565b92505081905550935093915050565b6005546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829182919073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c91906134c3565b611d56919061338b565b9050611d6381868661151a565b80935081945050508160056000828254611d7d91906134b0565b92505081905550509250929050565b6000813414611dc9576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161070a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e91906134dc565b905073ffffffffffffffffffffffffffffffffffffffff8116611ead576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eef73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611fc7565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119cb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261202b565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526120259085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611f45565b50505050565b600061208d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661213a9092919063ffffffff16565b90508051600014806120ae5750808060200190518101906120ae9190613106565b6119cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161070a565b6060610dc78484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161216e91906134f9565b60006040518083038185875af1925050503d80600081146121ab576040519150601f19603f3d011682016040523d82523d6000602084013e6121b0565b606091505b50915091506118f0878383876060831561225257825160000361224b5773ffffffffffffffffffffffffffffffffffffffff85163b61224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161070a565b5081610dc7565b610dc783838151156122675781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016122de604051806040016040528060008152602001600081525090565b905290565b6000606082840312156122f557600080fd5b50919050565b60008083601f84011261230d57600080fd5b50813567ffffffffffffffff81111561232557600080fd5b60208301915083602082850101111561233d57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461127c57600080fd5b803561237181612344565b919050565b600080600080600080600060e0888a03121561239157600080fd5b61239b89896122e3565b965060608801359550608088013567ffffffffffffffff808211156123bf57600080fd5b6123cb8b838c016122fb565b909750955060a08a013591506123e082612344565b90935060c089013590808211156123f657600080fd5b506124038a828b016122fb565b989b979a50959850939692959293505050565b803563ffffffff8116811461237157600080fd5b6000806040838503121561243d57600080fd5b61244683612416565b946020939093013593505050565b6000608082840312156122f557600080fd5b801515811461127c57600080fd5b600080600080600080600080610100898b03121561249157600080fd5b61249b8a8a612454565b9750608089013567ffffffffffffffff808211156124b857600080fd5b6124c48c838d016122fb565b909950975060a08b013591506124d982612466565b90955060c08a013590808211156124ef57600080fd5b6124fb8c838d016122fb565b909650945060e08b013591508082111561251457600080fd5b506125218b828c016122fb565b999c989b5096995094979396929594505050565b815181526020808301519082015260408101610a3e565b6000806000806000806000806000898b0361014081121561256c57600080fd5b6125768c8c612454565b995060808b013567ffffffffffffffff8082111561259357600080fd5b61259f8e838f016122fb565b909b50995089915060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60840112156125d757600080fd5b60a08d0198506125e960e08e01612366565b97506101008d013592508083111561260057600080fd5b61260c8e848f016122fb565b90975095506101208d013592508691508083111561262957600080fd5b50506126378c828d016122fb565b915080935050809150509295985092959850929598565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161268a604084018280518252602090810151910152565b5082516080830152602083015160a08301526119e8565b803561ffff8116811461237157600080fd5b600080604083850312156126c657600080fd5b6126cf83612416565b91506126dd602084016126a1565b90509250929050565b60005b838110156127015781810151838201526020016126e9565b50506000910152565b600081518084526127228160208601602086016126e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119e8602083018461270a565b60006020828403121561277957600080fd5b81356119e881612344565b60008083601f84011261279657600080fd5b50813567ffffffffffffffff8111156127ae57600080fd5b6020830191508360208260051b850101111561233d57600080fd5b600080602083850312156127dc57600080fd5b823567ffffffffffffffff8111156127f357600080fd5b6117d785828601612784565b60006020828403121561281157600080fd5b6119e882612416565b6000806000806060858703121561283057600080fd5b61283985612416565b9350612847602086016126a1565b9250604085013567ffffffffffffffff81111561286357600080fd5b61286f878288016122fb565b95989497509550505050565b600080600060a0848603121561289057600080fd5b61289a8585612454565b9250608084013567ffffffffffffffff8111156128b657600080fd5b6128c2868287016122fb565b9497909650939450505050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015612968578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400185528151805188528301518388018790526129558789018261270a565b975050938201939082019060010161290b565b50508751606088015250505060208501516080850152509050610dc7565b60006060828403121561299857600080fd5b6119e883836122e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156129f4576129f46129a2565b60405290565b600060408284031215612a0c57600080fd5b612a146129d1565b82358152602083013560208201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b848152836020820152606060408201526000612a95606083018486612a2c565b9695505050505050565b600181811c90821680612ab357607f821691505b6020821081036122f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112612b4f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8e57600080fd5b83018035915067ffffffffffffffff821115612ba957600080fd5b60200191503681900382131561233d57600080fd5b600060208284031215612bd057600080fd5b6119e8826126a1565b601f8211156119cb576000816000526020600020601f850160051c81016020861015612c025750805b601f850160051c820191505b81811015612c2157828155600101612c0e565b505050505050565b67ffffffffffffffff831115612c4157612c416129a2565b612c5583612c4f8354612a9f565b83612bd9565b6000601f841160018114612ca75760008515612c715750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110fe565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612cf65786850135825560209485019460019092019101612cd6565b5086821015612d31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612e73577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112612dc357600080fd5b8a01606063ffffffff612dd583612416565b16855261ffff612de68984016126a1565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612e1f57600080fd5b90910187810191903567ffffffffffffffff811115612e3d57600080fd5b803603831315612e4c57600080fd5b8188870152612e5e8287018285612a2c565b96890196955050509186019150600101612d62565b509098975050505050505050565b60008085851115612e9157600080fd5b83861115612e9e57600080fd5b5050820193919092039150565b60008451612ebd8184602089016126e6565b8201838582376000930192835250909392505050565b602081526000610dc7602083018486612a2c565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612b4f57600080fd5b67ffffffffffffffff8116811461127c57600080fd5b63ffffffff612f3f89612416565b1681526020880135602082015260006040890135612f5c81612f1b565b67ffffffffffffffff811660408401525087606083015260e06080830152612f8860e083018789612a2c565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612fb7818587612a2c565b9a9950505050505050505050565b600060208284031215612fd757600080fd5b815167ffffffffffffffff80821115612fef57600080fd5b818401915084601f83011261300357600080fd5b815181811115613015576130156129a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561305b5761305b6129a2565b8160405282815287602084870101111561307457600080fd5b6118f08360208301602088016126e6565b60006020828403121561309757600080fd5b81356119e881612f1b565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612a95608083018461270a565b6040815260006130f4604083018561270a565b82810360208401526117a6818561270a565b60006020828403121561311857600080fd5b81516119e881612466565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261315960e084018261270a565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613194828261270a565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156131d957600080fd5b6131e16129d1565b9050815181526020820151602082015292915050565b60006040828403121561320957600080fd5b6119e883836131c7565b60006080828403121561322557600080fd5b6040516060810181811067ffffffffffffffff82111715613248576132486129a2565b60405282518152602083015161325d81612f1b565b602082015261326f84604085016131c7565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156132bb5780818660020360031b1b83161692505b505092915050565b80356020831015610a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156132bb5760089490940360031b84901b1690921692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a3e57610a3e613345565b81810381811115610a3e57610a3e613345565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161340c81602c8501602087016126e6565b91909101602c0195945050505050565b600082613452577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166020820152826028820152600082516134a08160488501602087016126e6565b9190910160480195945050505050565b80820180821115610a3e57610a3e613345565b6000602082840312156134d557600080fd5b5051919050565b6000602082840312156134ee57600080fd5b81516119e881612344565b60008251612b4f8184602087016126e656fea26469706673582212202e3eaeeebadf13e23cfd5ce4a049c38a2ffb9a48f93711a706a572896e6a0fc864736f6c63430008160033",
1201
+ "deployedBytecode": "0x6080604052600436106101e35760003560e01c8063857749b011610102578063bd815db011610095578063d424388511610064578063d42438851461060a578063f2fde38b1461062a578063fc0c546a1461064a578063ff7bd03d1461067d57600080fd5b8063bd815db014610595578063c1e36500146105a8578063ca5eb5e1146105d7578063d045a0dc146105f757600080fd5b8063b731ea0a116100d1578063b731ea0a146104fb578063b98bd07014610528578063bb0b6a5314610548578063bc70b3541461057557600080fd5b8063857749b01461045c5780638da5cb5b14610478578063963efcaa146104a35780639689cb05146104e557600080fd5b806349e460171161017a5780635e280f11116101495780635e280f11146103b75780636fc1b31e146103eb578063715018a61461040b5780637d25a05e1461042057600080fd5b806349e460171461032657806352ae2879146103475780635535d4611461035a5780635a0dfe4d1461038757600080fd5b806317442b70116101b657806317442b70146102af5780631f5e1334146102c45780633400288b146102d957806346a40f75146102f957600080fd5b8063111ecdad146101e857806313137d651461023f578063134d4f2514610254578063156a0d0f1461027c575b600080fd5b3480156101f457600080fd5b506004546102159073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61025261024d366004612376565b61069d565b005b34801561026057600080fd5b50610269600281565b60405161ffff9091168152602001610236565b34801561028857600080fd5b50600160025b6040805167ffffffffffffffff938416815292909116602083015201610236565b3480156102bb57600080fd5b5060018061028e565b3480156102d057600080fd5b50610269600181565b3480156102e557600080fd5b506102526102f436600461242a565b61079c565b34801561030557600080fd5b50610319610314366004612474565b6107fa565b6040516102369190612535565b61033961033436600461254c565b610870565b60405161023692919061264e565b34801561035357600080fd5b5030610215565b34801561036657600080fd5b5061037a6103753660046126b3565b610980565b6040516102369190612754565b34801561039357600080fd5b506103a76103a236600461242a565b610a25565b6040519015158152602001610236565b3480156103c357600080fd5b506102157f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f757600080fd5b50610252610406366004612767565b610a44565b34801561041757600080fd5b50610252610ac6565b34801561042c57600080fd5b5061044361043b36600461242a565b600092915050565b60405167ffffffffffffffff9091168152602001610236565b34801561046857600080fd5b5060405160068152602001610236565b34801561048457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610215565b3480156104af57600080fd5b506104d77f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610236565b3480156104f157600080fd5b506104d760055481565b34801561050757600080fd5b506002546102159073ffffffffffffffffffffffffffffffffffffffff1681565b34801561053457600080fd5b506102526105433660046127c9565b610ada565b34801561055457600080fd5b506104d76105633660046127ff565b60016020526000908152604090205481565b34801561058157600080fd5b5061037a61059036600461281a565b610c3b565b6102526105a33660046127c9565b610dcf565b3480156105b457600080fd5b506105c86105c336600461287b565b610f86565b604051610236939291906128cf565b3480156105e357600080fd5b506102526105f2366004612767565b611059565b610252610605366004612376565b611105565b34801561061657600080fd5b50610252610625366004612767565b61114d565b34801561063657600080fd5b50610252610645366004612767565b6111c8565b34801561065657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610215565b34801561068957600080fd5b506103a7610698366004612986565b61127f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610713576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061072d90610728908a6127ff565b6112b5565b146107845761073f60208801886127ff565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161070a565b6107938787878787878761130a565b50505050505050565b6107a4611499565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b6040805180820190915260008082526020820152600061082f60408b013560608c013561082a60208e018e6127ff565b61151a565b9150506000806108438c8c8c8b8b88611577565b909250905061086061085860208e018e6127ff565b83838c6116c1565b9c9b505050505050505050505050565b61087861229b565b60408051808201909152600080825260208201526000806108b48d604001358e606001358f60000160208101906108af91906127ff565b6117af565b915091506000806108c98f8f8f8d8d88611577565b915091506108fc8f60000160208101906108e391906127ff565b83838f8036038101906108f691906129fa565b8f6117e3565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff1686600001517fee6b77e8cd280835aecc97812d736c35faad222d91b12de19c7ed912e9aed71b86868e8e6040516109669493929190612a75565b60405180910390a350505050995099975050505050505050565b6003602090815260009283526040808420909152908252902080546109a490612a9f565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090612a9f565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b505050505081565b63ffffffff821660009081526001602052604090205481145b92915050565b610a4c611499565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610ace611499565b610ad860006118fb565b565b610ae2611499565b60005b81811015610c0957610b27838383818110610b0257610b02612aec565b9050602002810190610b149190612b1b565b610b22906040810190612b59565b611970565b828282818110610b3957610b39612aec565b9050602002810190610b4b9190612b1b565b610b59906040810190612b59565b60036000868686818110610b6f57610b6f612aec565b9050602002810190610b819190612b1b565b610b8f9060208101906127ff565b63ffffffff1663ffffffff1681526020019081526020016000206000868686818110610bbd57610bbd612aec565b9050602002810190610bcf9190612b1b565b610be0906040810190602001612bbe565b61ffff168152602081019190915260400160002091610c00919083612c29565b50600101610ae5565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67482826040516107ee929190612d43565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610c6f90612a9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b90612a9f565b8015610ce85780601f10610cbd57610100808354040283529160200191610ce8565b820191906000526020600020905b815481529060010190602001808311610ccb57829003601f168201915b505050505090508051600003610d385783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610dc79350505050565b6000839003610d48579050610dc7565b60028310610d9157610d5a8484611970565b80610d688460028188612e81565b604051602001610d7a93929190612eab565b604051602081830303815290604052915050610dc7565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b949350505050565b60005b81811015610ec15736838383818110610ded57610ded612aec565b9050602002810190610dff9190612ee7565b9050610e1b610e1160208301836127ff565b6020830135610a25565b610e255750610eb9565b3063d045a0dc60c08301358360a0810135610e44610100830183612b59565b610e55610100890160e08a01612767565b610e636101208a018a612b59565b6040518963ffffffff1660e01b8152600401610e859796959493929190612f31565b6000604051808303818588803b158015610e9e57600080fd5b505af1158015610eb2573d6000803e3d6000fd5b5050505050505b600101610dd2565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f539190810190612fc5565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b60408051808201909152600080825260208201526060610fb9604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182611015565b604080518082019091526000815260606020820152815260200190600190039081610fed5790505b50935060008061103560408b013560608c013561082a60208e018e6127ff565b604080518082019091529182526020820152969a9599509597509395505050505050565b611061611499565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b5050505050565b33301461113e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079387878787878787610784565b611155611499565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610abb565b6111d0611499565b73ffffffffffffffffffffffffffffffffffffffff8116611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070a565b61127c816118fb565b50565b600060208201803590600190839061129790866127ff565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610a3e576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161070a565b600061131c61131987876119d0565b90565b9050600061133261132d88886119ef565b611a12565b9050600061134d838361134860208e018e6127ff565b611a48565b9050602887111561143a57600061138a61136d60608d0160408e01613085565b61137a60208e018e6127ff565b846113858d8d611aab565b611af6565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114069087908e9060009087906004016130a2565b600060405180830381600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b50505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8516918b917f80a66cf84dc0b742c17c4672ee6687d7cb340ab0e5d367ac6b02bed1a6489f8d910160405180910390a350505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070a565b60008061152685611b28565b91508190508381101561156f576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161070a565b935093915050565b60608060006115c9896020013561158d86611b5f565b88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b8b92505050565b90935090506000816115dc5760016115df565b60025b90506115f96115f160208c018c6127ff565b828b8b610c3b565b60045490935073ffffffffffffffffffffffffffffffffffffffff16156116b457600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb916116719188918891016130e1565b602060405180830381865afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b29190613106565b505b5050965096945050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611731896112b5565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611766929190613123565b6040805180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906131f7565b95945050505050565b60008084156117cd576117c3858585611c1d565b909250905061156f565b6117d78484611c93565b90969095509350505050565b6117eb61229b565b60006117fa8460000151611d8c565b602085015190915015611814576118148460200151611dcd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016118718c6112b5565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016118ad929190613123565b60806040518083038185885af11580156118cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118f09190613213565b979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061197f6002828486612e81565b6119889161327b565b60f01c9050600381146119cb5782826040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b505050565b60006119df6020828486612e81565b6119e8916132c3565b9392505050565b60006119ff602860208486612e81565b611a08916132ff565b60c01c9392505050565b6000610a3e7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613374565b60008260056000828254611a5c919061338b565b90915550611aa3905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611ef3565b509092915050565b6060611aba8260288186612e81565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611b0f949392919061339e565b6040516020818303038152906040529050949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b55818461341c565b610a3e9190613374565b6000610a3e7f00000000000000000000000000000000000000000000000000000000000000008361341c565b8051606090151580611bec578484604051602001611bd892919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611c13565b84843385604051602001611c039493929190613457565b6040516020818303038152906040525b9150935093915050565b600080611c2b85858561151a565b9092509050611c7273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085611fc7565b8060056000828254611c8491906134b0565b92505081905550935093915050565b6005546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829182919073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c91906134c3565b611d56919061338b565b9050611d6381868661151a565b80935081945050508160056000828254611d7d91906134b0565b92505081905550509250929050565b6000813414611dc9576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161070a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e91906134dc565b905073ffffffffffffffffffffffffffffffffffffffff8116611ead576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eef73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611fc7565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119cb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261202b565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526120259085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611f45565b50505050565b600061208d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661213a9092919063ffffffff16565b90508051600014806120ae5750808060200190518101906120ae9190613106565b6119cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161070a565b6060610dc78484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161216e91906134f9565b60006040518083038185875af1925050503d80600081146121ab576040519150601f19603f3d011682016040523d82523d6000602084013e6121b0565b606091505b50915091506118f0878383876060831561225257825160000361224b5773ffffffffffffffffffffffffffffffffffffffff85163b61224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161070a565b5081610dc7565b610dc783838151156122675781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016122de604051806040016040528060008152602001600081525090565b905290565b6000606082840312156122f557600080fd5b50919050565b60008083601f84011261230d57600080fd5b50813567ffffffffffffffff81111561232557600080fd5b60208301915083602082850101111561233d57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461127c57600080fd5b803561237181612344565b919050565b600080600080600080600060e0888a03121561239157600080fd5b61239b89896122e3565b965060608801359550608088013567ffffffffffffffff808211156123bf57600080fd5b6123cb8b838c016122fb565b909750955060a08a013591506123e082612344565b90935060c089013590808211156123f657600080fd5b506124038a828b016122fb565b989b979a50959850939692959293505050565b803563ffffffff8116811461237157600080fd5b6000806040838503121561243d57600080fd5b61244683612416565b946020939093013593505050565b6000608082840312156122f557600080fd5b801515811461127c57600080fd5b600080600080600080600080610100898b03121561249157600080fd5b61249b8a8a612454565b9750608089013567ffffffffffffffff808211156124b857600080fd5b6124c48c838d016122fb565b909950975060a08b013591506124d982612466565b90955060c08a013590808211156124ef57600080fd5b6124fb8c838d016122fb565b909650945060e08b013591508082111561251457600080fd5b506125218b828c016122fb565b999c989b5096995094979396929594505050565b815181526020808301519082015260408101610a3e565b6000806000806000806000806000898b0361014081121561256c57600080fd5b6125768c8c612454565b995060808b013567ffffffffffffffff8082111561259357600080fd5b61259f8e838f016122fb565b909b50995089915060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60840112156125d757600080fd5b60a08d0198506125e960e08e01612366565b97506101008d013592508083111561260057600080fd5b61260c8e848f016122fb565b90975095506101208d013592508691508083111561262957600080fd5b50506126378c828d016122fb565b915080935050809150509295985092959850929598565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161268a604084018280518252602090810151910152565b5082516080830152602083015160a08301526119e8565b803561ffff8116811461237157600080fd5b600080604083850312156126c657600080fd5b6126cf83612416565b91506126dd602084016126a1565b90509250929050565b60005b838110156127015781810151838201526020016126e9565b50506000910152565b600081518084526127228160208601602086016126e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119e8602083018461270a565b60006020828403121561277957600080fd5b81356119e881612344565b60008083601f84011261279657600080fd5b50813567ffffffffffffffff8111156127ae57600080fd5b6020830191508360208260051b850101111561233d57600080fd5b600080602083850312156127dc57600080fd5b823567ffffffffffffffff8111156127f357600080fd5b6117d785828601612784565b60006020828403121561281157600080fd5b6119e882612416565b6000806000806060858703121561283057600080fd5b61283985612416565b9350612847602086016126a1565b9250604085013567ffffffffffffffff81111561286357600080fd5b61286f878288016122fb565b95989497509550505050565b600080600060a0848603121561289057600080fd5b61289a8585612454565b9250608084013567ffffffffffffffff8111156128b657600080fd5b6128c2868287016122fb565b9497909650939450505050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015612968578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400185528151805188528301518388018790526129558789018261270a565b975050938201939082019060010161290b565b50508751606088015250505060208501516080850152509050610dc7565b60006060828403121561299857600080fd5b6119e883836122e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156129f4576129f46129a2565b60405290565b600060408284031215612a0c57600080fd5b612a146129d1565b82358152602083013560208201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b848152836020820152606060408201526000612a95606083018486612a2c565b9695505050505050565b600181811c90821680612ab357607f821691505b6020821081036122f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112612b4f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8e57600080fd5b83018035915067ffffffffffffffff821115612ba957600080fd5b60200191503681900382131561233d57600080fd5b600060208284031215612bd057600080fd5b6119e8826126a1565b601f8211156119cb576000816000526020600020601f850160051c81016020861015612c025750805b601f850160051c820191505b81811015612c2157828155600101612c0e565b505050505050565b67ffffffffffffffff831115612c4157612c416129a2565b612c5583612c4f8354612a9f565b83612bd9565b6000601f841160018114612ca75760008515612c715750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110fe565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612cf65786850135825560209485019460019092019101612cd6565b5086821015612d31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612e73577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112612dc357600080fd5b8a01606063ffffffff612dd583612416565b16855261ffff612de68984016126a1565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612e1f57600080fd5b90910187810191903567ffffffffffffffff811115612e3d57600080fd5b803603831315612e4c57600080fd5b8188870152612e5e8287018285612a2c565b96890196955050509186019150600101612d62565b509098975050505050505050565b60008085851115612e9157600080fd5b83861115612e9e57600080fd5b5050820193919092039150565b60008451612ebd8184602089016126e6565b8201838582376000930192835250909392505050565b602081526000610dc7602083018486612a2c565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612b4f57600080fd5b67ffffffffffffffff8116811461127c57600080fd5b63ffffffff612f3f89612416565b1681526020880135602082015260006040890135612f5c81612f1b565b67ffffffffffffffff811660408401525087606083015260e06080830152612f8860e083018789612a2c565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612fb7818587612a2c565b9a9950505050505050505050565b600060208284031215612fd757600080fd5b815167ffffffffffffffff80821115612fef57600080fd5b818401915084601f83011261300357600080fd5b815181811115613015576130156129a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561305b5761305b6129a2565b8160405282815287602084870101111561307457600080fd5b6118f08360208301602088016126e6565b60006020828403121561309757600080fd5b81356119e881612f1b565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612a95608083018461270a565b6040815260006130f4604083018561270a565b82810360208401526117a6818561270a565b60006020828403121561311857600080fd5b81516119e881612466565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261315960e084018261270a565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613194828261270a565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156131d957600080fd5b6131e16129d1565b9050815181526020820151602082015292915050565b60006040828403121561320957600080fd5b6119e883836131c7565b60006080828403121561322557600080fd5b6040516060810181811067ffffffffffffffff82111715613248576132486129a2565b60405282518152602083015161325d81612f1b565b602082015261326f84604085016131c7565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156132bb5780818660020360031b1b83161692505b505092915050565b80356020831015610a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156132bb5760089490940360031b84901b1690921692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a3e57610a3e613345565b81810381811115610a3e57610a3e613345565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161340c81602c8501602087016126e6565b91909101602c0195945050505050565b600082613452577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166020820152826028820152600082516134a08160488501602087016126e6565b9190910160480195945050505050565b80820180821115610a3e57610a3e613345565b6000602082840312156134d557600080fd5b5051919050565b6000602082840312156134ee57600080fd5b81516119e881612344565b60008251612b4f8184602087016126e656fea26469706673582212202e3eaeeebadf13e23cfd5ce4a049c38a2ffb9a48f93711a706a572896e6a0fc864736f6c63430008160033",
1202
+ "linkReferences": {},
1203
+ "deployedLinkReferences": {}
1204
+ }