@arcblock/erc721did-contract 0.3.1 → 0.3.3

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.
@@ -0,0 +1,1414 @@
1
+ import require$$0 from 'dotenv-flow';
2
+ import * as ethers$1 from 'ethers';
3
+ import require$$2 from 'axios';
4
+ import require$$3 from 'p-wait-for';
5
+ import * as util from '@ocap/util';
6
+ import require$$5 from 'lodash/upperFirst';
7
+ import require$$6 from 'lodash/keyBy';
8
+ import require$$7 from 'lodash/pick';
9
+
10
+ function getAugmentedNamespace(n) {
11
+ if (n.__esModule) return n;
12
+ var f = n.default;
13
+ if (typeof f == "function") {
14
+ var a = function a () {
15
+ if (this instanceof a) {
16
+ var args = [null];
17
+ args.push.apply(args, arguments);
18
+ var Ctor = Function.bind.apply(f, args);
19
+ return new Ctor();
20
+ }
21
+ return f.apply(this, arguments);
22
+ };
23
+ a.prototype = f.prototype;
24
+ } else a = {};
25
+ Object.defineProperty(a, '__esModule', {value: true});
26
+ Object.keys(n).forEach(function (k) {
27
+ var d = Object.getOwnPropertyDescriptor(n, k);
28
+ Object.defineProperty(a, k, d.get ? d : {
29
+ enumerable: true,
30
+ get: function () {
31
+ return n[k];
32
+ }
33
+ });
34
+ });
35
+ return a;
36
+ }
37
+
38
+ var contract$1 = {};
39
+
40
+ var require$$1 = /*@__PURE__*/getAugmentedNamespace(ethers$1);
41
+
42
+ var require$$4 = /*@__PURE__*/getAugmentedNamespace(util);
43
+
44
+ var _format$1 = "hh-sol-artifact-1";
45
+ var contractName$1 = "ERC721DID";
46
+ var sourceName$1 = "src/ERC721DID.sol";
47
+ var abi$1 = [
48
+ {
49
+ inputs: [
50
+ ],
51
+ stateMutability: "nonpayable",
52
+ type: "constructor"
53
+ },
54
+ {
55
+ anonymous: false,
56
+ inputs: [
57
+ {
58
+ indexed: true,
59
+ internalType: "address",
60
+ name: "to",
61
+ type: "address"
62
+ },
63
+ {
64
+ indexed: true,
65
+ internalType: "uint256",
66
+ name: "tokenId",
67
+ type: "uint256"
68
+ }
69
+ ],
70
+ name: "Acquired",
71
+ type: "event"
72
+ },
73
+ {
74
+ anonymous: false,
75
+ inputs: [
76
+ {
77
+ indexed: true,
78
+ internalType: "address",
79
+ name: "owner",
80
+ type: "address"
81
+ },
82
+ {
83
+ indexed: true,
84
+ internalType: "address",
85
+ name: "approved",
86
+ type: "address"
87
+ },
88
+ {
89
+ indexed: true,
90
+ internalType: "uint256",
91
+ name: "tokenId",
92
+ type: "uint256"
93
+ }
94
+ ],
95
+ name: "Approval",
96
+ type: "event"
97
+ },
98
+ {
99
+ anonymous: false,
100
+ inputs: [
101
+ {
102
+ indexed: true,
103
+ internalType: "address",
104
+ name: "owner",
105
+ type: "address"
106
+ },
107
+ {
108
+ indexed: true,
109
+ internalType: "address",
110
+ name: "operator",
111
+ type: "address"
112
+ },
113
+ {
114
+ indexed: false,
115
+ internalType: "bool",
116
+ name: "approved",
117
+ type: "bool"
118
+ }
119
+ ],
120
+ name: "ApprovalForAll",
121
+ type: "event"
122
+ },
123
+ {
124
+ anonymous: false,
125
+ inputs: [
126
+ {
127
+ indexed: false,
128
+ internalType: "uint8",
129
+ name: "version",
130
+ type: "uint8"
131
+ }
132
+ ],
133
+ name: "Initialized",
134
+ type: "event"
135
+ },
136
+ {
137
+ anonymous: false,
138
+ inputs: [
139
+ {
140
+ indexed: false,
141
+ internalType: "address",
142
+ name: "userAddress",
143
+ type: "address"
144
+ },
145
+ {
146
+ indexed: false,
147
+ internalType: "address payable",
148
+ name: "relayerAddress",
149
+ type: "address"
150
+ },
151
+ {
152
+ indexed: false,
153
+ internalType: "bytes",
154
+ name: "functionSignature",
155
+ type: "bytes"
156
+ }
157
+ ],
158
+ name: "MetaTransactionExecuted",
159
+ type: "event"
160
+ },
161
+ {
162
+ anonymous: false,
163
+ inputs: [
164
+ {
165
+ indexed: true,
166
+ internalType: "address",
167
+ name: "to",
168
+ type: "address"
169
+ },
170
+ {
171
+ indexed: true,
172
+ internalType: "uint256",
173
+ name: "tokenId",
174
+ type: "uint256"
175
+ }
176
+ ],
177
+ name: "Minted",
178
+ type: "event"
179
+ },
180
+ {
181
+ anonymous: false,
182
+ inputs: [
183
+ {
184
+ indexed: true,
185
+ internalType: "address",
186
+ name: "previousOwner",
187
+ type: "address"
188
+ },
189
+ {
190
+ indexed: true,
191
+ internalType: "address",
192
+ name: "newOwner",
193
+ type: "address"
194
+ }
195
+ ],
196
+ name: "OwnershipTransferred",
197
+ type: "event"
198
+ },
199
+ {
200
+ anonymous: false,
201
+ inputs: [
202
+ {
203
+ indexed: true,
204
+ internalType: "address",
205
+ name: "from",
206
+ type: "address"
207
+ },
208
+ {
209
+ indexed: true,
210
+ internalType: "address",
211
+ name: "to",
212
+ type: "address"
213
+ },
214
+ {
215
+ indexed: true,
216
+ internalType: "uint256",
217
+ name: "tokenId",
218
+ type: "uint256"
219
+ }
220
+ ],
221
+ name: "Transfer",
222
+ type: "event"
223
+ },
224
+ {
225
+ inputs: [
226
+ ],
227
+ name: "ERC712_VERSION",
228
+ outputs: [
229
+ {
230
+ internalType: "string",
231
+ name: "",
232
+ type: "string"
233
+ }
234
+ ],
235
+ stateMutability: "view",
236
+ type: "function"
237
+ },
238
+ {
239
+ inputs: [
240
+ {
241
+ internalType: "address",
242
+ name: "_to",
243
+ type: "address"
244
+ }
245
+ ],
246
+ name: "acquireAsset",
247
+ outputs: [
248
+ ],
249
+ stateMutability: "payable",
250
+ type: "function"
251
+ },
252
+ {
253
+ inputs: [
254
+ {
255
+ internalType: "address",
256
+ name: "to",
257
+ type: "address"
258
+ },
259
+ {
260
+ internalType: "uint256",
261
+ name: "tokenId",
262
+ type: "uint256"
263
+ }
264
+ ],
265
+ name: "approve",
266
+ outputs: [
267
+ ],
268
+ stateMutability: "nonpayable",
269
+ type: "function"
270
+ },
271
+ {
272
+ inputs: [
273
+ {
274
+ internalType: "address",
275
+ name: "owner",
276
+ type: "address"
277
+ }
278
+ ],
279
+ name: "balanceOf",
280
+ outputs: [
281
+ {
282
+ internalType: "uint256",
283
+ name: "",
284
+ type: "uint256"
285
+ }
286
+ ],
287
+ stateMutability: "view",
288
+ type: "function"
289
+ },
290
+ {
291
+ inputs: [
292
+ ],
293
+ name: "contractURI",
294
+ outputs: [
295
+ {
296
+ internalType: "string",
297
+ name: "",
298
+ type: "string"
299
+ }
300
+ ],
301
+ stateMutability: "view",
302
+ type: "function"
303
+ },
304
+ {
305
+ inputs: [
306
+ {
307
+ internalType: "address",
308
+ name: "userAddress",
309
+ type: "address"
310
+ },
311
+ {
312
+ internalType: "bytes",
313
+ name: "functionSignature",
314
+ type: "bytes"
315
+ },
316
+ {
317
+ internalType: "bytes32",
318
+ name: "sigR",
319
+ type: "bytes32"
320
+ },
321
+ {
322
+ internalType: "bytes32",
323
+ name: "sigS",
324
+ type: "bytes32"
325
+ },
326
+ {
327
+ internalType: "uint8",
328
+ name: "sigV",
329
+ type: "uint8"
330
+ }
331
+ ],
332
+ name: "executeMetaTransaction",
333
+ outputs: [
334
+ {
335
+ internalType: "bytes",
336
+ name: "",
337
+ type: "bytes"
338
+ }
339
+ ],
340
+ stateMutability: "payable",
341
+ type: "function"
342
+ },
343
+ {
344
+ inputs: [
345
+ {
346
+ internalType: "uint256",
347
+ name: "_tokenId",
348
+ type: "uint256"
349
+ }
350
+ ],
351
+ name: "formatTokenURIValue",
352
+ outputs: [
353
+ {
354
+ internalType: "string",
355
+ name: "",
356
+ type: "string"
357
+ }
358
+ ],
359
+ stateMutability: "view",
360
+ type: "function"
361
+ },
362
+ {
363
+ inputs: [
364
+ {
365
+ internalType: "uint256",
366
+ name: "tokenId",
367
+ type: "uint256"
368
+ }
369
+ ],
370
+ name: "getApproved",
371
+ outputs: [
372
+ {
373
+ internalType: "address",
374
+ name: "",
375
+ type: "address"
376
+ }
377
+ ],
378
+ stateMutability: "view",
379
+ type: "function"
380
+ },
381
+ {
382
+ inputs: [
383
+ ],
384
+ name: "getChainId",
385
+ outputs: [
386
+ {
387
+ internalType: "uint256",
388
+ name: "",
389
+ type: "uint256"
390
+ }
391
+ ],
392
+ stateMutability: "view",
393
+ type: "function"
394
+ },
395
+ {
396
+ inputs: [
397
+ {
398
+ internalType: "uint256",
399
+ name: "_tokenId",
400
+ type: "uint256"
401
+ }
402
+ ],
403
+ name: "getDIDByTokenId",
404
+ outputs: [
405
+ {
406
+ internalType: "string",
407
+ name: "",
408
+ type: "string"
409
+ }
410
+ ],
411
+ stateMutability: "view",
412
+ type: "function"
413
+ },
414
+ {
415
+ inputs: [
416
+ ],
417
+ name: "getDomainSeperator",
418
+ outputs: [
419
+ {
420
+ internalType: "bytes32",
421
+ name: "",
422
+ type: "bytes32"
423
+ }
424
+ ],
425
+ stateMutability: "view",
426
+ type: "function"
427
+ },
428
+ {
429
+ inputs: [
430
+ {
431
+ internalType: "address",
432
+ name: "user",
433
+ type: "address"
434
+ }
435
+ ],
436
+ name: "getNonce",
437
+ outputs: [
438
+ {
439
+ internalType: "uint256",
440
+ name: "nonce",
441
+ type: "uint256"
442
+ }
443
+ ],
444
+ stateMutability: "view",
445
+ type: "function"
446
+ },
447
+ {
448
+ inputs: [
449
+ {
450
+ internalType: "address",
451
+ name: "_proxyRegistryAddress",
452
+ type: "address"
453
+ },
454
+ {
455
+ internalType: "string",
456
+ name: "_baseImageURI",
457
+ type: "string"
458
+ },
459
+ {
460
+ internalType: "string",
461
+ name: "_contractName",
462
+ type: "string"
463
+ },
464
+ {
465
+ internalType: "string",
466
+ name: "_contractSymbol",
467
+ type: "string"
468
+ },
469
+ {
470
+ internalType: "string",
471
+ name: "_contractDescription",
472
+ type: "string"
473
+ },
474
+ {
475
+ internalType: "uint256",
476
+ name: "_totalLimit",
477
+ type: "uint256"
478
+ },
479
+ {
480
+ internalType: "uint256",
481
+ name: "_price",
482
+ type: "uint256"
483
+ },
484
+ {
485
+ internalType: "address payable",
486
+ name: "_transferTokenAddress",
487
+ type: "address"
488
+ }
489
+ ],
490
+ name: "initialize",
491
+ outputs: [
492
+ ],
493
+ stateMutability: "nonpayable",
494
+ type: "function"
495
+ },
496
+ {
497
+ inputs: [
498
+ {
499
+ internalType: "address",
500
+ name: "owner",
501
+ type: "address"
502
+ },
503
+ {
504
+ internalType: "address",
505
+ name: "operator",
506
+ type: "address"
507
+ }
508
+ ],
509
+ name: "isApprovedForAll",
510
+ outputs: [
511
+ {
512
+ internalType: "bool",
513
+ name: "",
514
+ type: "bool"
515
+ }
516
+ ],
517
+ stateMutability: "view",
518
+ type: "function"
519
+ },
520
+ {
521
+ inputs: [
522
+ {
523
+ internalType: "address",
524
+ name: "_to",
525
+ type: "address"
526
+ }
527
+ ],
528
+ name: "mintAsset",
529
+ outputs: [
530
+ ],
531
+ stateMutability: "nonpayable",
532
+ type: "function"
533
+ },
534
+ {
535
+ inputs: [
536
+ ],
537
+ name: "name",
538
+ outputs: [
539
+ {
540
+ internalType: "string",
541
+ name: "",
542
+ type: "string"
543
+ }
544
+ ],
545
+ stateMutability: "view",
546
+ type: "function"
547
+ },
548
+ {
549
+ inputs: [
550
+ ],
551
+ name: "owner",
552
+ outputs: [
553
+ {
554
+ internalType: "address",
555
+ name: "",
556
+ type: "address"
557
+ }
558
+ ],
559
+ stateMutability: "view",
560
+ type: "function"
561
+ },
562
+ {
563
+ inputs: [
564
+ {
565
+ internalType: "uint256",
566
+ name: "tokenId",
567
+ type: "uint256"
568
+ }
569
+ ],
570
+ name: "ownerOf",
571
+ outputs: [
572
+ {
573
+ internalType: "address",
574
+ name: "",
575
+ type: "address"
576
+ }
577
+ ],
578
+ stateMutability: "view",
579
+ type: "function"
580
+ },
581
+ {
582
+ inputs: [
583
+ ],
584
+ name: "price",
585
+ outputs: [
586
+ {
587
+ internalType: "uint256",
588
+ name: "",
589
+ type: "uint256"
590
+ }
591
+ ],
592
+ stateMutability: "view",
593
+ type: "function"
594
+ },
595
+ {
596
+ inputs: [
597
+ ],
598
+ name: "renounceOwnership",
599
+ outputs: [
600
+ ],
601
+ stateMutability: "nonpayable",
602
+ type: "function"
603
+ },
604
+ {
605
+ inputs: [
606
+ {
607
+ internalType: "address",
608
+ name: "from",
609
+ type: "address"
610
+ },
611
+ {
612
+ internalType: "address",
613
+ name: "to",
614
+ type: "address"
615
+ },
616
+ {
617
+ internalType: "uint256",
618
+ name: "tokenId",
619
+ type: "uint256"
620
+ }
621
+ ],
622
+ name: "safeTransferFrom",
623
+ outputs: [
624
+ ],
625
+ stateMutability: "nonpayable",
626
+ type: "function"
627
+ },
628
+ {
629
+ inputs: [
630
+ {
631
+ internalType: "address",
632
+ name: "from",
633
+ type: "address"
634
+ },
635
+ {
636
+ internalType: "address",
637
+ name: "to",
638
+ type: "address"
639
+ },
640
+ {
641
+ internalType: "uint256",
642
+ name: "tokenId",
643
+ type: "uint256"
644
+ },
645
+ {
646
+ internalType: "bytes",
647
+ name: "data",
648
+ type: "bytes"
649
+ }
650
+ ],
651
+ name: "safeTransferFrom",
652
+ outputs: [
653
+ ],
654
+ stateMutability: "nonpayable",
655
+ type: "function"
656
+ },
657
+ {
658
+ inputs: [
659
+ {
660
+ internalType: "address",
661
+ name: "operator",
662
+ type: "address"
663
+ },
664
+ {
665
+ internalType: "bool",
666
+ name: "approved",
667
+ type: "bool"
668
+ }
669
+ ],
670
+ name: "setApprovalForAll",
671
+ outputs: [
672
+ ],
673
+ stateMutability: "nonpayable",
674
+ type: "function"
675
+ },
676
+ {
677
+ inputs: [
678
+ {
679
+ internalType: "bytes4",
680
+ name: "interfaceId",
681
+ type: "bytes4"
682
+ }
683
+ ],
684
+ name: "supportsInterface",
685
+ outputs: [
686
+ {
687
+ internalType: "bool",
688
+ name: "",
689
+ type: "bool"
690
+ }
691
+ ],
692
+ stateMutability: "view",
693
+ type: "function"
694
+ },
695
+ {
696
+ inputs: [
697
+ ],
698
+ name: "symbol",
699
+ outputs: [
700
+ {
701
+ internalType: "string",
702
+ name: "",
703
+ type: "string"
704
+ }
705
+ ],
706
+ stateMutability: "view",
707
+ type: "function"
708
+ },
709
+ {
710
+ inputs: [
711
+ {
712
+ internalType: "uint256",
713
+ name: "_tokenId",
714
+ type: "uint256"
715
+ }
716
+ ],
717
+ name: "tokenURI",
718
+ outputs: [
719
+ {
720
+ internalType: "string",
721
+ name: "",
722
+ type: "string"
723
+ }
724
+ ],
725
+ stateMutability: "view",
726
+ type: "function"
727
+ },
728
+ {
729
+ inputs: [
730
+ ],
731
+ name: "totalLimit",
732
+ outputs: [
733
+ {
734
+ internalType: "uint256",
735
+ name: "",
736
+ type: "uint256"
737
+ }
738
+ ],
739
+ stateMutability: "view",
740
+ type: "function"
741
+ },
742
+ {
743
+ inputs: [
744
+ ],
745
+ name: "totalSupply",
746
+ outputs: [
747
+ {
748
+ internalType: "uint256",
749
+ name: "",
750
+ type: "uint256"
751
+ }
752
+ ],
753
+ stateMutability: "view",
754
+ type: "function"
755
+ },
756
+ {
757
+ inputs: [
758
+ {
759
+ internalType: "address",
760
+ name: "from",
761
+ type: "address"
762
+ },
763
+ {
764
+ internalType: "address",
765
+ name: "to",
766
+ type: "address"
767
+ },
768
+ {
769
+ internalType: "uint256",
770
+ name: "tokenId",
771
+ type: "uint256"
772
+ }
773
+ ],
774
+ name: "transferFrom",
775
+ outputs: [
776
+ ],
777
+ stateMutability: "nonpayable",
778
+ type: "function"
779
+ },
780
+ {
781
+ inputs: [
782
+ {
783
+ internalType: "address",
784
+ name: "newOwner",
785
+ type: "address"
786
+ }
787
+ ],
788
+ name: "transferOwnership",
789
+ outputs: [
790
+ ],
791
+ stateMutability: "nonpayable",
792
+ type: "function"
793
+ }
794
+ ];
795
+ var bytecode$1 = "0x60806040526006805460ff191690553480156200001b57600080fd5b506040805180820182526009815268115490cdcc8c51125160ba1b60208083019182528351808501909452600384526210509560ea1b908401528151919291620000689160009162000234565b5080516200007e90600190602084019062000234565b5050506200009b62000095620000c260201b60201c565b620000de565b620000a562000130565b620000bc600a620001cc60201b6200105f1760201c565b62000383565b6000620000d9620001d560201b620010681760201c565b905090565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600954600160a81b900460ff1615620001665760405162461bcd60e51b81526004016200015d90620002da565b60405180910390fd5b600954600160a01b900460ff90811614620001ca576009805460ff60a01b191660ff60a01b1790556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890620001c19060ff906200032c565b60405180910390a15b565b80546001019055565b6000333014156200022e57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169150620002319050565b50335b90565b828054620002429062000352565b90600052602060002090601f016020900481019282620002665760008555620002b1565b82601f106200028157805160ff1916838001178555620002b1565b82800160010185558215620002b1579182015b82811115620002b157825182559160200191906001019062000294565b50620002bf929150620002c3565b5090565b5b80821115620002bf5760008155600101620002c4565b602080825281016200032681602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff821681526020810162000326565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806200036757607f821691505b602082108114156200037d576200037d6200033c565b50919050565b61372880620003936000396000f3fe6080604052600436106101cd5760003560e01c8063715018a6116100f7578063a22cb46511610095578063e8a3d48511610064578063e8a3d48514610500578063e985e9c514610515578063f2fde38b14610535578063f79da28a1461055557600080fd5b8063a22cb4651461048a578063a36298c7146104aa578063b88d4fde146104c0578063c87b56dd146104e057600080fd5b806395d89b41116100d157806395d89b411461042c578063982d3ba014610441578063a035b1fe14610454578063a1e5425e1461046a57600080fd5b8063715018a6146103d95780637e032eb4146103ee5780638da5cb5b1461040e57600080fd5b806320379ee51161016f57806342842e0e1161013e57806342842e0e1461035957806342ab1586146103795780636352211e1461039957806370a08231146103b957600080fd5b806320379ee5146102db57806323b872dd146102f05780632d0335ab146103105780633408e4701461034657600080fd5b8063095ea7b3116101ab578063095ea7b3146102575780630c53c51c146102795780630f7e59701461028c57806318160ddd146102b957600080fd5b806301ffc9a7146101d257806306fdde0314610208578063081812fc1461022a575b600080fd5b3480156101de57600080fd5b506101f26101ed36600461229e565b610575565b6040516101ff91906122c9565b60405180910390f35b34801561021457600080fd5b5061021d6105c7565b6040516101ff9190612335565b34801561023657600080fd5b5061024a610245366004612357565b610659565b6040516101ff9190612392565b34801561026357600080fd5b506102776102723660046123b4565b610680565b005b61021d6102873660046124f7565b610721565b34801561029857600080fd5b5061021d604051806040016040528060018152602001603160f81b81525081565b3480156102c557600080fd5b506102ce6108a3565b6040516101ff919061258f565b3480156102e757600080fd5b506007546102ce565b3480156102fc57600080fd5b5061027761030b36600461259d565b6108bf565b34801561031c57600080fd5b506102ce61032b3660046125ed565b6001600160a01b031660009081526008602052604090205490565b34801561035257600080fd5b50466102ce565b34801561036557600080fd5b5061027761037436600461259d565b6108f7565b34801561038557600080fd5b506102776103943660046125ed565b610912565b3480156103a557600080fd5b5061024a6103b4366004612357565b6109a0565b3480156103c557600080fd5b506102ce6103d43660046125ed565b6109d5565b3480156103e557600080fd5b50610277610a19565b3480156103fa57600080fd5b5061021d610409366004612357565b610a2d565b34801561041a57600080fd5b506009546001600160a01b031661024a565b34801561043857600080fd5b5061021d610a77565b61027761044f3660046125ed565b610a86565b34801561046057600080fd5b506102ce60135481565b34801561047657600080fd5b5061021d610485366004612357565b610b71565b34801561049657600080fd5b506102776104a5366004612621565b610ccd565b3480156104b657600080fd5b506102ce60125481565b3480156104cc57600080fd5b506102776104db366004612654565b610ce3565b3480156104ec57600080fd5b5061021d6104fb366004612357565b610d22565b34801561050c57600080fd5b5061021d610d5b565b34801561052157600080fd5b506101f26105303660046126d2565b610db9565b34801561054157600080fd5b506102776105503660046125ed565b610e8b565b34801561056157600080fd5b50610277610570366004612705565b610ec5565b60006001600160e01b031982166380ac58cd60e01b14806105a657506001600160e01b03198216635b5e139f60e01b145b806105c157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600d80546105d690612836565b80601f016020809104026020016040519081016040528092919081815260200182805461060290612836565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b6000610664826110c5565b506000908152600460205260409020546001600160a01b031690565b600061068b826109a0565b9050806001600160a01b0316836001600160a01b031614156106c85760405162461bcd60e51b81526004016106bf906128a1565b60405180910390fd5b806001600160a01b03166106da6110f9565b6001600160a01b031614806106f657506106f6816105306110f9565b6107125760405162461bcd60e51b81526004016106bf90612909565b61071c8383611103565b505050565b60408051606081810183526001600160a01b0388166000818152600860209081529085902054845283015291810186905261075f8782878787611171565b61077b5760405162461bcd60e51b81526004016106bf90612955565b6001600160a01b03871660009081526008602052604090205461079f906001611217565b6001600160a01b0388166000908152600860205260409081902091909155517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b906107ef90899033908a90612965565b60405180910390a1600080306001600160a01b0316888a6040516020016108179291906129dc565b60408051601f1981840301815290829052610831916129fb565b6000604051808303816000865af19150503d806000811461086e576040519150601f19603f3d011682016040523d82523d6000602084013e610873565b606091505b5091509150816108955760405162461bcd60e51b81526004016106bf90612a39565b925050505b95945050505050565b600060016108b0600a5490565b6108ba9190612a5f565b905090565b6108d06108ca6110f9565b8261122a565b6108ec5760405162461bcd60e51b81526004016106bf90612abe565b61071c838383611288565b61071c83838360405180602001604052806000815250610ce3565b61091a6113b0565b6000610925600a5490565b9050600060125411801561093a575060125481115b156109575760405162461bcd60e51b81526004016106bf90612af9565b6000610962836113f9565b905080836001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe60405160405180910390a3505050565b6000818152600260205260408120546001600160a01b0316806105c15760405162461bcd60e51b81526004016106bf90612b3b565b60006001600160a01b0382166109fd5760405162461bcd60e51b81526004016106bf90612b8f565b506001600160a01b031660009081526003602052604090205490565b610a216113b0565b610a2b600061141f565b565b60606000610a3a83610b71565b9050600081600c83604051602001610a5493929190612c54565b6040516020818303038152906040529050610a6f8482611471565b949350505050565b6060601080546105d690612836565b6000610a91600a5490565b90506000601254118015610aa6575060125481115b15610ac35760405162461bcd60e51b81526004016106bf90612af9565b60135415610b2857601354341015610aed5760405162461bcd60e51b81526004016106bf90612cdc565b6014546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610b26573d6000803e3d6000fd5b505b6000610b33836113f9565b905080836001600160a01b03167ffaa12ddb40ba6ec53659ef184da2121c1c228dd2e760b3574db7feca61d99f9a60405160405180910390a3505050565b60606000610b8e8360405180602001604052806000815250611471565b9050600081604051602001610ba391906129fb565b6040516020818303038152906040528051906020012090506000610be982604051602001610bd19190612cec565b6040516020818303038152906040526000601461158d565b9050600060405180604001604052806002815260200160c160f51b815250905060008183604051602001610c1e929190612cff565b60405160208183030381529060405290506000610c648280519060200120604051602001610c4c9190612cec565b6040516020818303038152906040526000600461158d565b90506000838583604051602001610c7d93929190612d15565b60405160208183030381529060405290506000610c9982611676565b9050600081604051602001610cae9190612d43565b60408051601f198184030181529190529b9a5050505050505050505050565b610cdf610cd86110f9565b8383611926565b5050565b610cf4610cee6110f9565b8361122a565b610d105760405162461bcd60e51b81526004016106bf90612abe565b610d1c848484846119c9565b50505050565b6060610d35610d3083610a2d565b6119fc565b604051602001610d459190612d58565b6040516020818303038152906040529050919050565b60606000610d91600d600e600f6011604051602001610d7d9493929190612dde565b6040516020818303038152906040526119fc565b905080604051602001610da49190612d58565b60405160208183030381529060405291505090565b600b5460405163c455279160e01b81526000916001600160a01b039081169190841690829063c455279190610df2908890600401612392565b60206040518083038186803b158015610e0a57600080fd5b505afa158015610e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e429190612e83565b6001600160a01b03161415610e5b5760019150506105c1565b50506001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610e936113b0565b6001600160a01b038116610eb95760405162461bcd60e51b81526004016106bf90612ee5565b610ec28161141f565b50565b600954600160a81b900460ff1615808015610eed57506009546001600160a01b90910460ff16105b80610f0e5750303b158015610f0e5750600954600160a01b900460ff166001145b610f2a5760405162461bcd60e51b81526004016106bf90612f3e565b6009805460ff60a01b1916600160a01b1790558015610f57576009805460ff60a81b1916600160a81b1790555b600b80546001600160a01b0319166001600160a01b038b161790558751610f8590600c9060208b01906121e3565b508651610f9990600d9060208a01906121e3565b508551610fad9060109060208901906121e3565b508451610fc190600e9060208801906121e3565b5060128490556013839055601480546001600160a01b0319166001600160a01b038416179055610ff087611b4f565b610ffe600a80546001019055565b6110078961141f565b8015611054576009805460ff60a81b191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061104b90600190612f63565b60405180910390a15b505050505050505050565b80546001019055565b6000333014156110bf57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506110c29050565b50335b90565b6000818152600260205260409020546001600160a01b0316610ec25760405162461bcd60e51b81526004016106bf90612b3b565b60006108ba611068565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611138826109a0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006001600160a01b0386166111995760405162461bcd60e51b81526004016106bf90612fb1565b60016111ac6111a787611b8b565b611be9565b838686604051600081526020016040526040516111cc9493929190612fca565b6020604051602081039080840390855afa1580156111ee573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b60006112238284612fff565b9392505050565b600080611236836109a0565b9050806001600160a01b0316846001600160a01b0316148061125d575061125d8185610db9565b80610a6f5750836001600160a01b031661127684610659565b6001600160a01b031614949350505050565b826001600160a01b031661129b826109a0565b6001600160a01b0316146112c15760405162461bcd60e51b81526004016106bf90613057565b6001600160a01b0382166112e75760405162461bcd60e51b81526004016106bf906130a6565b826001600160a01b03166112fa826109a0565b6001600160a01b0316146113205760405162461bcd60e51b81526004016106bf90613057565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6113b86110f9565b6001600160a01b03166113d36009546001600160a01b031690565b6001600160a01b031614610a2b5760405162461bcd60e51b81526004016106bf906130e6565b600080611405600a5490565b9050611415600a80546001019055565b6105c18382611c06565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000600d61148085611c20565b604051602001611491929190613103565b60405160208183030381529060405290506000600d6040516020016114b69190613140565b60408051601f198184030181526020838101835260008085528351808501909452601e84527f68747470733a2f2f666f72756d2e6f70656e7a657070656c696e2e636f6d00009184019190915290935061150f88611c20565b9050600061151c30611cbc565b6040805160208101909152600081528951919250901561155057506040805180820190915260018152600b60fa1b60208201525b868686868686868f60405160200161156f989796959493929190613160565b60405160208183030381529060405297505050505050505092915050565b825160609061159c8385612fff565b11156115ba5760405162461bcd60e51b81526004016106bf906132a6565b6000826001600160401b038111156115d4576115d46123f1565b6040519080825280601f01601f1916602001820160405280156115fe576020820181803683370190505b50905060005b8381101561166d57856116178287612fff565b81518110611627576116276132b6565b602001015160f81c60f81b828281518110611644576116446132b6565b60200101906001600160f81b031916908160001a90535080611665816132cc565b915050611604565b50949350505050565b805160609060005b81811080156116ab575083818151811061169a5761169a6132b6565b01602001516001600160f81b031916155b156116b85760010161167e565b6117e361209f8284030204810160010191506000826001600160401b038111156116e4576116e46123f1565b6040519080825280601f01601f19166020018201604052801561170e576020820181803683370190505b5090506000806000198501815b88518110156117f45760018703925088818151811061173c5761173c6132b6565b016020015160f81c93505b8183138061175a575063ffffffff841615155b156117e957848381518110611771576117716132b6565b602001015160f81c60f81b60f81c60ff166101000261ffff1684019350603a8463ffffffff16816117a4576117a46132e7565b0660f81b8584815181106117ba576117ba6132b6565b60200101906001600160f81b031916908160001a905350603a63ffffffff851604935060001990920191611747565b82915060010161171b565b50845b86811080156118245750848181518110611813576118136132b6565b01602001516001600160f81b031916155b15611831576001016117f7565b85810385510396506000876001600160401b03811115611853576118536123f1565b6040519080825280601f01601f19166020018201604052801561187d576020820181803683370190505b50905060005b88811015611918576000888483010390506040518060600160405280603a81526020016136b9603a91398882815181106118bf576118bf6132b6565b0160200151815160f89190911c9081106118db576118db6132b6565b602001015160f81c60f81b8383815181106118f8576118f86132b6565b60200101906001600160f81b031916908160001a90535050600101611883565b509998505050505050505050565b816001600160a01b0316836001600160a01b031614156119585760405162461bcd60e51b81526004016106bf9061332f565b6001600160a01b0383811660008181526005602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31906119bc9085906122c9565b60405180910390a3505050565b6119d4848484611288565b6119e084848484611cd2565b610d1c5760405162461bcd60e51b81526004016106bf9061338c565b6060815160001415611a1c57505060408051602081019091526000815290565b60006040518060600160405280604081526020016136796040913990506000600384516002611a4b9190612fff565b611a55919061339c565b611a609060046133b0565b6001600160401b03811115611a7757611a776123f1565b6040519080825280601f01601f191660200182016040528015611aa1576020820181803683370190505b509050600182016020820185865187015b80821015611b0d576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250611ab2565b5050600386510660018114611b295760028114611b3c57611b44565b603d6001830353603d6002830353611b44565b603d60018303535b509195945050505050565b60065460ff1615611b725760405162461bcd60e51b81526004016106bf906133f2565b611b7b81611de6565b506006805460ff19166001179055565b60006040518060800160405280604381526020016135e76043913980516020918201208351848301516040808701518051908601209051611bcc9501613402565b604051602081830303815290604052805190602001209050919050565b6000611bf460075490565b82604051602001611bcc929190613437565b610cdf828260405180602001604052806000815250611e72565b60606000611c2d83611ea5565b60010190506000816001600160401b03811115611c4c57611c4c6123f1565b6040519080825280601f01601f191660200182016040528015611c76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611caf57611cb4565b611c80565b509392505050565b60606105c16001600160a01b0383166014611f7d565b60006001600160a01b0384163b15611ddb57836001600160a01b031663150b7a02611cfb6110f9565b8786866040518563ffffffff1660e01b8152600401611d1d949392919061345b565b602060405180830381600087803b158015611d3757600080fd5b505af1925050508015611d67575060408051601f3d908101601f19168201909252611d64918101906134aa565b60015b611dc1573d808015611d95576040519150601f19603f3d011682016040523d82523d6000602084013e611d9a565b606091505b508051611db95760405162461bcd60e51b81526004016106bf9061338c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a6f565b506001949350505050565b6040518060800160405280604f815260200161362a604f9139805160209182012082518383012060408051808201825260018152603160f81b9085015251611e54937fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69130914691016134cb565b60408051601f19818403018152919052805160209091012060075550565b611e7c83836120e8565b611e896000848484611cd2565b61071c5760405162461bcd60e51b81526004016106bf9061338c565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611ee45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611f10576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611f2e57662386f26fc10000830492506010015b6305f5e1008310611f46576305f5e100830492506008015b6127108310611f5a57612710830492506004015b60648310611f6c576064830492506002015b600a83106105c15760010192915050565b60606000611f8c8360026133b0565b611f97906002612fff565b6001600160401b03811115611fae57611fae6123f1565b6040519080825280601f01601f191660200182016040528015611fd8576020820181803683370190505b509050600360fc1b81600081518110611ff357611ff36132b6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612022576120226132b6565b60200101906001600160f81b031916908160001a90535060006120468460026133b0565b612051906001612fff565b90505b60018111156120c9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612085576120856132b6565b1a60f81b82828151811061209b5761209b6132b6565b60200101906001600160f81b031916908160001a90535060049490941c936120c28161350d565b9050612054565b5083156112235760405162461bcd60e51b81526004016106bf90613554565b6001600160a01b03821661210e5760405162461bcd60e51b81526004016106bf90613594565b6000818152600260205260409020546001600160a01b0316156121435760405162461bcd60e51b81526004016106bf906135d6565b6000818152600260205260409020546001600160a01b0316156121785760405162461bcd60e51b81526004016106bf906135d6565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546121ef90612836565b90600052602060002090601f0160209004810192826122115760008555612257565b82601f1061222a57805160ff1916838001178555612257565b82800160010185558215612257579182015b8281111561225757825182559160200191906001019061223c565b50612263929150612267565b5090565b5b808211156122635760008155600101612268565b6001600160e01b031981165b8114610ec257600080fd5b80356105c18161227c565b6000602082840312156122b3576122b3600080fd5b6000610a6f8484612293565b8015155b82525050565b602081016105c182846122bf565b60005b838110156122f25781810151838201526020016122da565b83811115610d1c5750506000910152565b600061230d825190565b8084526020840193506123248185602086016122d7565b601f01601f19169290920192915050565b602080825281016112238184612303565b80612288565b80356105c181612346565b60006020828403121561236c5761236c600080fd5b6000610a6f848461234c565b60006001600160a01b0382166105c1565b6122c381612378565b602081016105c18284612389565b61228881612378565b80356105c1816123a0565b600080604083850312156123ca576123ca600080fd5b60006123d685856123a9565b92505060206123e78582860161234c565b9150509250929050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171561242c5761242c6123f1565b6040525050565b600061243e60405190565b905061244a8282612407565b919050565b60006001600160401b03821115612468576124686123f1565b601f19601f8301165b60200192915050565b82818337506000910152565b60006124996124948461244f565b612433565b9050828152602081018484840111156124b4576124b4600080fd5b611cb484828561247a565b600082601f8301126124d3576124d3600080fd5b8135610a6f848260208601612486565b60ff8116612288565b80356105c1816124e3565b600080600080600060a0868803121561251257612512600080fd5b600061251e88886123a9565b95505060208601356001600160401b0381111561253d5761253d600080fd5b612549888289016124bf565b945050604061255a8882890161234c565b935050606061256b8882890161234c565b925050608061257c888289016124ec565b9150509295509295909350565b806122c3565b602081016105c18284612589565b6000806000606084860312156125b5576125b5600080fd5b60006125c186866123a9565b93505060206125d2868287016123a9565b92505060406125e38682870161234c565b9150509250925092565b60006020828403121561260257612602600080fd5b6000610a6f84846123a9565b801515612288565b80356105c18161260e565b6000806040838503121561263757612637600080fd5b600061264385856123a9565b92505060206123e785828601612616565b6000806000806080858703121561266d5761266d600080fd5b600061267987876123a9565b945050602061268a878288016123a9565b935050604061269b8782880161234c565b92505060608501356001600160401b038111156126ba576126ba600080fd5b6126c6878288016124bf565b91505092959194509250565b600080604083850312156126e8576126e8600080fd5b60006126f485856123a9565b92505060206123e7858286016123a9565b600080600080600080600080610100898b03121561272557612725600080fd5b60006127318b8b6123a9565b98505060208901356001600160401b0381111561275057612750600080fd5b61275c8b828c016124bf565b97505060408901356001600160401b0381111561277b5761277b600080fd5b6127878b828c016124bf565b96505060608901356001600160401b038111156127a6576127a6600080fd5b6127b28b828c016124bf565b95505060808901356001600160401b038111156127d1576127d1600080fd5b6127dd8b828c016124bf565b94505060a06127ee8b828c0161234c565b93505060c06127ff8b828c0161234c565b92505060e06128108b828c016123a9565b9150509295985092959890939650565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061284a57607f821691505b6020821081141561285d5761285d612820565b50919050565b60218152602081017f4552433732313a20617070726f76616c20746f2063757272656e74206f776e658152603960f91b602082015290505b60400190565b602080825281016105c181612863565b603d8152602081017f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f81527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006020820152905061289b565b602080825281016105c1816128b1565b60218152602081017f5369676e657220616e64207369676e617475726520646f206e6f74206d6174638152600d60fb1b6020820152905061289b565b602080825281016105c181612919565b606081016129738286612389565b6129806020830185612389565b818103604083015261089a8184612303565b600061299c825190565b6129aa8185602086016122d7565b9290920192915050565b60006105c18260601b90565b60006105c1826129b4565b6122c36129d782612378565b6129c0565b6129e68184612992565b90506129f281836129cb565b60140192915050565b6105c18183612992565b601c8152602081017f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000815290505b60200190565b602080825281016105c181612a05565b634e487b7160e01b600052601160045260246000fd5b600082821015612a7157612a71612a49565b500390565b602d8152602081017f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6581526c1c881bdc88185c1c1c9bdd9959609a1b6020820152905061289b565b602080825281016105c181612a76565b60168152602081017513585e081b5a5b9d0818dbdd5b9d081c995858da195960521b81529050612a33565b602080825281016105c181612ace565b60188152602081017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529050612a33565b602080825281016105c181612b09565b60298152602081017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b6020820152905061289b565b602080825281016105c181612b4b565b61088b60f21b81525b60020190565b681134b6b0b3b2911d1160b91b81525b60090190565b60008154612bd181612836565b600182168015612be85760018114612bf957612c29565b60ff19831686528186019350612c29565b60008581526020902060005b83811015612c2157815488820152600190910190602001612c05565b505081860193505b50505092915050565b683f617373657449643d60b81b8152612bbe565b601160f91b81525b60010190565b66113234b2111d1160c91b8152600701612c6e8185612992565b9050612c7981612b9f565b9050612c8481612bae565b9050612c908184612bc4565b9050612c9b81612c32565b9050612ca78183612992565b9050610a6f81612c46565b601581526020810174139bdd08195b9bdd59da081d1bdad95b881cd95b9d605a1b81529050612a33565b602080825281016105c181612cb2565b612cf78183806122c3565b602001919050565b612d098184612992565b90506112238183612992565b612d1f8185612992565b9050612d2b8184612992565b9050610a6f8183612992565b603d60f91b8152612c4e565b612d4c81612d37565b90506105c18183612992565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152601d8101612d4c565b683d913730b6b2911d1160b91b8152612bbe565b701116113232b9b1b934b83a34b7b7111d1160791b81525b60110190565b701132bc3a32b93730b62fb634b735911d1160791b8152612db0565b607d60f81b8152612c4e565b612de781612d84565b9050612df38186612bc4565b9050612dfe81612d98565b9050612e0a8185612bc4565b9050612e1581612b9f565b9050612e2081612bae565b9050612e2c8184612bc4565b9050612e3781612b9f565b9050612e4281612db6565b9050612e4e8183612bc4565b9050612e5981612c46565b905061089a81612dd2565b60006105c182612378565b61228881612e64565b80516105c181612e6f565b600060208284031215612e9857612e98600080fd5b6000610a6f8484612e78565b60268152602081017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b6020820152905061289b565b602080825281016105c181612ea4565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152905061289b565b602080825281016105c181612ef5565b60ff1690565b6122c38160006105c182612f4e565b602081016105c18284612f54565b60258152602081017f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5381526424a3a722a960d91b6020820152905061289b565b602080825281016105c181612f71565b60ff81166122c3565b60808101612fd88287612589565b612fe56020830186612fc1565b612ff26040830185612589565b61089a6060830184612589565b6000821982111561301257613012612a49565b500190565b60258152602081017f4552433732313a207472616e736665722066726f6d20696e636f72726563742081526437bbb732b960d91b6020820152905061289b565b602080825281016105c181613017565b60248152602081017f4552433732313a207472616e7366657220746f20746865207a65726f206164648152637265737360e01b6020820152905061289b565b602080825281016105c181613067565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65729101908152612a33565b602080825281016105c1816130b6565b61202360f01b8152612ba8565b61310d8184612bc4565b9050612d09816130f6565b7002a3434b99034b990309027232a1037b31607d1b8152612db0565b601760f91b8152612c4e565b61314981613118565b90506131558183612bc4565b90506105c181613134565b61316981612d84565b9050613175818a612992565b905061318081612d98565b905061318c8189612992565b905061319781612b9f565b6d1130ba3a3934b13aba32b9911d1160911b8152600e0190506131ba8188612992565b90506131c581612b9f565b6f1132bc3a32b93730b62fbab936111d1160811b815260100190506131ea8187612992565b90506131f581612b9f565b651139b7111d1160d11b815260060190506132108186612992565b905061321b81612b9f565b721131b7b73a3930b1ba20b2323932b9b9911d1160691b815260130190506132438185612992565b905061324e81612c46565b905061325a8184612992565b90506132668183612992565b905061327181612dd2565b9998505050505050505050565b601381526020810172496e76616c696420736c6963652072616e676560681b81529050612a33565b602080825281016105c18161327e565b634e487b7160e01b600052603260045260246000fd5b60006000198214156132e0576132e0612a49565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60198152602081017f4552433732313a20617070726f766520746f2063616c6c65720000000000000081529050612a33565b602080825281016105c1816132fd565b60328152602081017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6020820152905061289b565b602080825281016105c18161333f565b6000826133ab576133ab6132e7565b500490565b60008160001904831182151516156133ca576133ca612a49565b500290565b600e8152602081016d185b1c9958591e481a5b9a5d195960921b81529050612a33565b602080825281016105c1816133cf565b608081016134108287612589565b61341d6020830186612589565b612ff26040830185612389565b61190160f01b8152612ba8565b6134408161342a565b905061344d8184806122c3565b6020016124718183806122c3565b608081016134698287612389565b6134766020830186612389565b6134836040830185612589565b81810360608301526134958184612303565b9695505050505050565b80516105c18161227c565b6000602082840312156134bf576134bf600080fd5b6000610a6f848461349f565b60a081016134d98288612589565b6134e66020830187612589565b6134f36040830186612589565b6135006060830185612389565b6134956080830184612589565b60008161351c5761351c612a49565b506000190190565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e749101908152612a33565b602080825281016105c181613524565b60208082527f4552433732313a206d696e7420746f20746865207a65726f20616464726573739101908152612a33565b602080825281016105c181613564565b601c8152602081017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529050612a33565b602080825281016105c1816135a456fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c74294142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220ed07ccc2bb843f0841a2684d556a2e564fd3ca7fc33a91978ef39b7c8fcd671664736f6c63430008090033";
796
+ var deployedBytecode$1 = "0x6080604052600436106101cd5760003560e01c8063715018a6116100f7578063a22cb46511610095578063e8a3d48511610064578063e8a3d48514610500578063e985e9c514610515578063f2fde38b14610535578063f79da28a1461055557600080fd5b8063a22cb4651461048a578063a36298c7146104aa578063b88d4fde146104c0578063c87b56dd146104e057600080fd5b806395d89b41116100d157806395d89b411461042c578063982d3ba014610441578063a035b1fe14610454578063a1e5425e1461046a57600080fd5b8063715018a6146103d95780637e032eb4146103ee5780638da5cb5b1461040e57600080fd5b806320379ee51161016f57806342842e0e1161013e57806342842e0e1461035957806342ab1586146103795780636352211e1461039957806370a08231146103b957600080fd5b806320379ee5146102db57806323b872dd146102f05780632d0335ab146103105780633408e4701461034657600080fd5b8063095ea7b3116101ab578063095ea7b3146102575780630c53c51c146102795780630f7e59701461028c57806318160ddd146102b957600080fd5b806301ffc9a7146101d257806306fdde0314610208578063081812fc1461022a575b600080fd5b3480156101de57600080fd5b506101f26101ed36600461229e565b610575565b6040516101ff91906122c9565b60405180910390f35b34801561021457600080fd5b5061021d6105c7565b6040516101ff9190612335565b34801561023657600080fd5b5061024a610245366004612357565b610659565b6040516101ff9190612392565b34801561026357600080fd5b506102776102723660046123b4565b610680565b005b61021d6102873660046124f7565b610721565b34801561029857600080fd5b5061021d604051806040016040528060018152602001603160f81b81525081565b3480156102c557600080fd5b506102ce6108a3565b6040516101ff919061258f565b3480156102e757600080fd5b506007546102ce565b3480156102fc57600080fd5b5061027761030b36600461259d565b6108bf565b34801561031c57600080fd5b506102ce61032b3660046125ed565b6001600160a01b031660009081526008602052604090205490565b34801561035257600080fd5b50466102ce565b34801561036557600080fd5b5061027761037436600461259d565b6108f7565b34801561038557600080fd5b506102776103943660046125ed565b610912565b3480156103a557600080fd5b5061024a6103b4366004612357565b6109a0565b3480156103c557600080fd5b506102ce6103d43660046125ed565b6109d5565b3480156103e557600080fd5b50610277610a19565b3480156103fa57600080fd5b5061021d610409366004612357565b610a2d565b34801561041a57600080fd5b506009546001600160a01b031661024a565b34801561043857600080fd5b5061021d610a77565b61027761044f3660046125ed565b610a86565b34801561046057600080fd5b506102ce60135481565b34801561047657600080fd5b5061021d610485366004612357565b610b71565b34801561049657600080fd5b506102776104a5366004612621565b610ccd565b3480156104b657600080fd5b506102ce60125481565b3480156104cc57600080fd5b506102776104db366004612654565b610ce3565b3480156104ec57600080fd5b5061021d6104fb366004612357565b610d22565b34801561050c57600080fd5b5061021d610d5b565b34801561052157600080fd5b506101f26105303660046126d2565b610db9565b34801561054157600080fd5b506102776105503660046125ed565b610e8b565b34801561056157600080fd5b50610277610570366004612705565b610ec5565b60006001600160e01b031982166380ac58cd60e01b14806105a657506001600160e01b03198216635b5e139f60e01b145b806105c157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600d80546105d690612836565b80601f016020809104026020016040519081016040528092919081815260200182805461060290612836565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b6000610664826110c5565b506000908152600460205260409020546001600160a01b031690565b600061068b826109a0565b9050806001600160a01b0316836001600160a01b031614156106c85760405162461bcd60e51b81526004016106bf906128a1565b60405180910390fd5b806001600160a01b03166106da6110f9565b6001600160a01b031614806106f657506106f6816105306110f9565b6107125760405162461bcd60e51b81526004016106bf90612909565b61071c8383611103565b505050565b60408051606081810183526001600160a01b0388166000818152600860209081529085902054845283015291810186905261075f8782878787611171565b61077b5760405162461bcd60e51b81526004016106bf90612955565b6001600160a01b03871660009081526008602052604090205461079f906001611217565b6001600160a01b0388166000908152600860205260409081902091909155517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b906107ef90899033908a90612965565b60405180910390a1600080306001600160a01b0316888a6040516020016108179291906129dc565b60408051601f1981840301815290829052610831916129fb565b6000604051808303816000865af19150503d806000811461086e576040519150601f19603f3d011682016040523d82523d6000602084013e610873565b606091505b5091509150816108955760405162461bcd60e51b81526004016106bf90612a39565b925050505b95945050505050565b600060016108b0600a5490565b6108ba9190612a5f565b905090565b6108d06108ca6110f9565b8261122a565b6108ec5760405162461bcd60e51b81526004016106bf90612abe565b61071c838383611288565b61071c83838360405180602001604052806000815250610ce3565b61091a6113b0565b6000610925600a5490565b9050600060125411801561093a575060125481115b156109575760405162461bcd60e51b81526004016106bf90612af9565b6000610962836113f9565b905080836001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe60405160405180910390a3505050565b6000818152600260205260408120546001600160a01b0316806105c15760405162461bcd60e51b81526004016106bf90612b3b565b60006001600160a01b0382166109fd5760405162461bcd60e51b81526004016106bf90612b8f565b506001600160a01b031660009081526003602052604090205490565b610a216113b0565b610a2b600061141f565b565b60606000610a3a83610b71565b9050600081600c83604051602001610a5493929190612c54565b6040516020818303038152906040529050610a6f8482611471565b949350505050565b6060601080546105d690612836565b6000610a91600a5490565b90506000601254118015610aa6575060125481115b15610ac35760405162461bcd60e51b81526004016106bf90612af9565b60135415610b2857601354341015610aed5760405162461bcd60e51b81526004016106bf90612cdc565b6014546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610b26573d6000803e3d6000fd5b505b6000610b33836113f9565b905080836001600160a01b03167ffaa12ddb40ba6ec53659ef184da2121c1c228dd2e760b3574db7feca61d99f9a60405160405180910390a3505050565b60606000610b8e8360405180602001604052806000815250611471565b9050600081604051602001610ba391906129fb565b6040516020818303038152906040528051906020012090506000610be982604051602001610bd19190612cec565b6040516020818303038152906040526000601461158d565b9050600060405180604001604052806002815260200160c160f51b815250905060008183604051602001610c1e929190612cff565b60405160208183030381529060405290506000610c648280519060200120604051602001610c4c9190612cec565b6040516020818303038152906040526000600461158d565b90506000838583604051602001610c7d93929190612d15565b60405160208183030381529060405290506000610c9982611676565b9050600081604051602001610cae9190612d43565b60408051601f198184030181529190529b9a5050505050505050505050565b610cdf610cd86110f9565b8383611926565b5050565b610cf4610cee6110f9565b8361122a565b610d105760405162461bcd60e51b81526004016106bf90612abe565b610d1c848484846119c9565b50505050565b6060610d35610d3083610a2d565b6119fc565b604051602001610d459190612d58565b6040516020818303038152906040529050919050565b60606000610d91600d600e600f6011604051602001610d7d9493929190612dde565b6040516020818303038152906040526119fc565b905080604051602001610da49190612d58565b60405160208183030381529060405291505090565b600b5460405163c455279160e01b81526000916001600160a01b039081169190841690829063c455279190610df2908890600401612392565b60206040518083038186803b158015610e0a57600080fd5b505afa158015610e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e429190612e83565b6001600160a01b03161415610e5b5760019150506105c1565b50506001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610e936113b0565b6001600160a01b038116610eb95760405162461bcd60e51b81526004016106bf90612ee5565b610ec28161141f565b50565b600954600160a81b900460ff1615808015610eed57506009546001600160a01b90910460ff16105b80610f0e5750303b158015610f0e5750600954600160a01b900460ff166001145b610f2a5760405162461bcd60e51b81526004016106bf90612f3e565b6009805460ff60a01b1916600160a01b1790558015610f57576009805460ff60a81b1916600160a81b1790555b600b80546001600160a01b0319166001600160a01b038b161790558751610f8590600c9060208b01906121e3565b508651610f9990600d9060208a01906121e3565b508551610fad9060109060208901906121e3565b508451610fc190600e9060208801906121e3565b5060128490556013839055601480546001600160a01b0319166001600160a01b038416179055610ff087611b4f565b610ffe600a80546001019055565b6110078961141f565b8015611054576009805460ff60a81b191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061104b90600190612f63565b60405180910390a15b505050505050505050565b80546001019055565b6000333014156110bf57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506110c29050565b50335b90565b6000818152600260205260409020546001600160a01b0316610ec25760405162461bcd60e51b81526004016106bf90612b3b565b60006108ba611068565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611138826109a0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006001600160a01b0386166111995760405162461bcd60e51b81526004016106bf90612fb1565b60016111ac6111a787611b8b565b611be9565b838686604051600081526020016040526040516111cc9493929190612fca565b6020604051602081039080840390855afa1580156111ee573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b60006112238284612fff565b9392505050565b600080611236836109a0565b9050806001600160a01b0316846001600160a01b0316148061125d575061125d8185610db9565b80610a6f5750836001600160a01b031661127684610659565b6001600160a01b031614949350505050565b826001600160a01b031661129b826109a0565b6001600160a01b0316146112c15760405162461bcd60e51b81526004016106bf90613057565b6001600160a01b0382166112e75760405162461bcd60e51b81526004016106bf906130a6565b826001600160a01b03166112fa826109a0565b6001600160a01b0316146113205760405162461bcd60e51b81526004016106bf90613057565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6113b86110f9565b6001600160a01b03166113d36009546001600160a01b031690565b6001600160a01b031614610a2b5760405162461bcd60e51b81526004016106bf906130e6565b600080611405600a5490565b9050611415600a80546001019055565b6105c18382611c06565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000600d61148085611c20565b604051602001611491929190613103565b60405160208183030381529060405290506000600d6040516020016114b69190613140565b60408051601f198184030181526020838101835260008085528351808501909452601e84527f68747470733a2f2f666f72756d2e6f70656e7a657070656c696e2e636f6d00009184019190915290935061150f88611c20565b9050600061151c30611cbc565b6040805160208101909152600081528951919250901561155057506040805180820190915260018152600b60fa1b60208201525b868686868686868f60405160200161156f989796959493929190613160565b60405160208183030381529060405297505050505050505092915050565b825160609061159c8385612fff565b11156115ba5760405162461bcd60e51b81526004016106bf906132a6565b6000826001600160401b038111156115d4576115d46123f1565b6040519080825280601f01601f1916602001820160405280156115fe576020820181803683370190505b50905060005b8381101561166d57856116178287612fff565b81518110611627576116276132b6565b602001015160f81c60f81b828281518110611644576116446132b6565b60200101906001600160f81b031916908160001a90535080611665816132cc565b915050611604565b50949350505050565b805160609060005b81811080156116ab575083818151811061169a5761169a6132b6565b01602001516001600160f81b031916155b156116b85760010161167e565b6117e361209f8284030204810160010191506000826001600160401b038111156116e4576116e46123f1565b6040519080825280601f01601f19166020018201604052801561170e576020820181803683370190505b5090506000806000198501815b88518110156117f45760018703925088818151811061173c5761173c6132b6565b016020015160f81c93505b8183138061175a575063ffffffff841615155b156117e957848381518110611771576117716132b6565b602001015160f81c60f81b60f81c60ff166101000261ffff1684019350603a8463ffffffff16816117a4576117a46132e7565b0660f81b8584815181106117ba576117ba6132b6565b60200101906001600160f81b031916908160001a905350603a63ffffffff851604935060001990920191611747565b82915060010161171b565b50845b86811080156118245750848181518110611813576118136132b6565b01602001516001600160f81b031916155b15611831576001016117f7565b85810385510396506000876001600160401b03811115611853576118536123f1565b6040519080825280601f01601f19166020018201604052801561187d576020820181803683370190505b50905060005b88811015611918576000888483010390506040518060600160405280603a81526020016136b9603a91398882815181106118bf576118bf6132b6565b0160200151815160f89190911c9081106118db576118db6132b6565b602001015160f81c60f81b8383815181106118f8576118f86132b6565b60200101906001600160f81b031916908160001a90535050600101611883565b509998505050505050505050565b816001600160a01b0316836001600160a01b031614156119585760405162461bcd60e51b81526004016106bf9061332f565b6001600160a01b0383811660008181526005602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31906119bc9085906122c9565b60405180910390a3505050565b6119d4848484611288565b6119e084848484611cd2565b610d1c5760405162461bcd60e51b81526004016106bf9061338c565b6060815160001415611a1c57505060408051602081019091526000815290565b60006040518060600160405280604081526020016136796040913990506000600384516002611a4b9190612fff565b611a55919061339c565b611a609060046133b0565b6001600160401b03811115611a7757611a776123f1565b6040519080825280601f01601f191660200182016040528015611aa1576020820181803683370190505b509050600182016020820185865187015b80821015611b0d576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250611ab2565b5050600386510660018114611b295760028114611b3c57611b44565b603d6001830353603d6002830353611b44565b603d60018303535b509195945050505050565b60065460ff1615611b725760405162461bcd60e51b81526004016106bf906133f2565b611b7b81611de6565b506006805460ff19166001179055565b60006040518060800160405280604381526020016135e76043913980516020918201208351848301516040808701518051908601209051611bcc9501613402565b604051602081830303815290604052805190602001209050919050565b6000611bf460075490565b82604051602001611bcc929190613437565b610cdf828260405180602001604052806000815250611e72565b60606000611c2d83611ea5565b60010190506000816001600160401b03811115611c4c57611c4c6123f1565b6040519080825280601f01601f191660200182016040528015611c76576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611caf57611cb4565b611c80565b509392505050565b60606105c16001600160a01b0383166014611f7d565b60006001600160a01b0384163b15611ddb57836001600160a01b031663150b7a02611cfb6110f9565b8786866040518563ffffffff1660e01b8152600401611d1d949392919061345b565b602060405180830381600087803b158015611d3757600080fd5b505af1925050508015611d67575060408051601f3d908101601f19168201909252611d64918101906134aa565b60015b611dc1573d808015611d95576040519150601f19603f3d011682016040523d82523d6000602084013e611d9a565b606091505b508051611db95760405162461bcd60e51b81526004016106bf9061338c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a6f565b506001949350505050565b6040518060800160405280604f815260200161362a604f9139805160209182012082518383012060408051808201825260018152603160f81b9085015251611e54937fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69130914691016134cb565b60408051601f19818403018152919052805160209091012060075550565b611e7c83836120e8565b611e896000848484611cd2565b61071c5760405162461bcd60e51b81526004016106bf9061338c565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611ee45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611f10576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611f2e57662386f26fc10000830492506010015b6305f5e1008310611f46576305f5e100830492506008015b6127108310611f5a57612710830492506004015b60648310611f6c576064830492506002015b600a83106105c15760010192915050565b60606000611f8c8360026133b0565b611f97906002612fff565b6001600160401b03811115611fae57611fae6123f1565b6040519080825280601f01601f191660200182016040528015611fd8576020820181803683370190505b509050600360fc1b81600081518110611ff357611ff36132b6565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612022576120226132b6565b60200101906001600160f81b031916908160001a90535060006120468460026133b0565b612051906001612fff565b90505b60018111156120c9576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612085576120856132b6565b1a60f81b82828151811061209b5761209b6132b6565b60200101906001600160f81b031916908160001a90535060049490941c936120c28161350d565b9050612054565b5083156112235760405162461bcd60e51b81526004016106bf90613554565b6001600160a01b03821661210e5760405162461bcd60e51b81526004016106bf90613594565b6000818152600260205260409020546001600160a01b0316156121435760405162461bcd60e51b81526004016106bf906135d6565b6000818152600260205260409020546001600160a01b0316156121785760405162461bcd60e51b81526004016106bf906135d6565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546121ef90612836565b90600052602060002090601f0160209004810192826122115760008555612257565b82601f1061222a57805160ff1916838001178555612257565b82800160010185558215612257579182015b8281111561225757825182559160200191906001019061223c565b50612263929150612267565b5090565b5b808211156122635760008155600101612268565b6001600160e01b031981165b8114610ec257600080fd5b80356105c18161227c565b6000602082840312156122b3576122b3600080fd5b6000610a6f8484612293565b8015155b82525050565b602081016105c182846122bf565b60005b838110156122f25781810151838201526020016122da565b83811115610d1c5750506000910152565b600061230d825190565b8084526020840193506123248185602086016122d7565b601f01601f19169290920192915050565b602080825281016112238184612303565b80612288565b80356105c181612346565b60006020828403121561236c5761236c600080fd5b6000610a6f848461234c565b60006001600160a01b0382166105c1565b6122c381612378565b602081016105c18284612389565b61228881612378565b80356105c1816123a0565b600080604083850312156123ca576123ca600080fd5b60006123d685856123a9565b92505060206123e78582860161234c565b9150509250929050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171561242c5761242c6123f1565b6040525050565b600061243e60405190565b905061244a8282612407565b919050565b60006001600160401b03821115612468576124686123f1565b601f19601f8301165b60200192915050565b82818337506000910152565b60006124996124948461244f565b612433565b9050828152602081018484840111156124b4576124b4600080fd5b611cb484828561247a565b600082601f8301126124d3576124d3600080fd5b8135610a6f848260208601612486565b60ff8116612288565b80356105c1816124e3565b600080600080600060a0868803121561251257612512600080fd5b600061251e88886123a9565b95505060208601356001600160401b0381111561253d5761253d600080fd5b612549888289016124bf565b945050604061255a8882890161234c565b935050606061256b8882890161234c565b925050608061257c888289016124ec565b9150509295509295909350565b806122c3565b602081016105c18284612589565b6000806000606084860312156125b5576125b5600080fd5b60006125c186866123a9565b93505060206125d2868287016123a9565b92505060406125e38682870161234c565b9150509250925092565b60006020828403121561260257612602600080fd5b6000610a6f84846123a9565b801515612288565b80356105c18161260e565b6000806040838503121561263757612637600080fd5b600061264385856123a9565b92505060206123e785828601612616565b6000806000806080858703121561266d5761266d600080fd5b600061267987876123a9565b945050602061268a878288016123a9565b935050604061269b8782880161234c565b92505060608501356001600160401b038111156126ba576126ba600080fd5b6126c6878288016124bf565b91505092959194509250565b600080604083850312156126e8576126e8600080fd5b60006126f485856123a9565b92505060206123e7858286016123a9565b600080600080600080600080610100898b03121561272557612725600080fd5b60006127318b8b6123a9565b98505060208901356001600160401b0381111561275057612750600080fd5b61275c8b828c016124bf565b97505060408901356001600160401b0381111561277b5761277b600080fd5b6127878b828c016124bf565b96505060608901356001600160401b038111156127a6576127a6600080fd5b6127b28b828c016124bf565b95505060808901356001600160401b038111156127d1576127d1600080fd5b6127dd8b828c016124bf565b94505060a06127ee8b828c0161234c565b93505060c06127ff8b828c0161234c565b92505060e06128108b828c016123a9565b9150509295985092959890939650565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061284a57607f821691505b6020821081141561285d5761285d612820565b50919050565b60218152602081017f4552433732313a20617070726f76616c20746f2063757272656e74206f776e658152603960f91b602082015290505b60400190565b602080825281016105c181612863565b603d8152602081017f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f81527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006020820152905061289b565b602080825281016105c1816128b1565b60218152602081017f5369676e657220616e64207369676e617475726520646f206e6f74206d6174638152600d60fb1b6020820152905061289b565b602080825281016105c181612919565b606081016129738286612389565b6129806020830185612389565b818103604083015261089a8184612303565b600061299c825190565b6129aa8185602086016122d7565b9290920192915050565b60006105c18260601b90565b60006105c1826129b4565b6122c36129d782612378565b6129c0565b6129e68184612992565b90506129f281836129cb565b60140192915050565b6105c18183612992565b601c8152602081017f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000815290505b60200190565b602080825281016105c181612a05565b634e487b7160e01b600052601160045260246000fd5b600082821015612a7157612a71612a49565b500390565b602d8152602081017f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6581526c1c881bdc88185c1c1c9bdd9959609a1b6020820152905061289b565b602080825281016105c181612a76565b60168152602081017513585e081b5a5b9d0818dbdd5b9d081c995858da195960521b81529050612a33565b602080825281016105c181612ace565b60188152602081017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529050612a33565b602080825281016105c181612b09565b60298152602081017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b6020820152905061289b565b602080825281016105c181612b4b565b61088b60f21b81525b60020190565b681134b6b0b3b2911d1160b91b81525b60090190565b60008154612bd181612836565b600182168015612be85760018114612bf957612c29565b60ff19831686528186019350612c29565b60008581526020902060005b83811015612c2157815488820152600190910190602001612c05565b505081860193505b50505092915050565b683f617373657449643d60b81b8152612bbe565b601160f91b81525b60010190565b66113234b2111d1160c91b8152600701612c6e8185612992565b9050612c7981612b9f565b9050612c8481612bae565b9050612c908184612bc4565b9050612c9b81612c32565b9050612ca78183612992565b9050610a6f81612c46565b601581526020810174139bdd08195b9bdd59da081d1bdad95b881cd95b9d605a1b81529050612a33565b602080825281016105c181612cb2565b612cf78183806122c3565b602001919050565b612d098184612992565b90506112238183612992565b612d1f8185612992565b9050612d2b8184612992565b9050610a6f8183612992565b603d60f91b8152612c4e565b612d4c81612d37565b90506105c18183612992565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152601d8101612d4c565b683d913730b6b2911d1160b91b8152612bbe565b701116113232b9b1b934b83a34b7b7111d1160791b81525b60110190565b701132bc3a32b93730b62fb634b735911d1160791b8152612db0565b607d60f81b8152612c4e565b612de781612d84565b9050612df38186612bc4565b9050612dfe81612d98565b9050612e0a8185612bc4565b9050612e1581612b9f565b9050612e2081612bae565b9050612e2c8184612bc4565b9050612e3781612b9f565b9050612e4281612db6565b9050612e4e8183612bc4565b9050612e5981612c46565b905061089a81612dd2565b60006105c182612378565b61228881612e64565b80516105c181612e6f565b600060208284031215612e9857612e98600080fd5b6000610a6f8484612e78565b60268152602081017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b6020820152905061289b565b602080825281016105c181612ea4565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152905061289b565b602080825281016105c181612ef5565b60ff1690565b6122c38160006105c182612f4e565b602081016105c18284612f54565b60258152602081017f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5381526424a3a722a960d91b6020820152905061289b565b602080825281016105c181612f71565b60ff81166122c3565b60808101612fd88287612589565b612fe56020830186612fc1565b612ff26040830185612589565b61089a6060830184612589565b6000821982111561301257613012612a49565b500190565b60258152602081017f4552433732313a207472616e736665722066726f6d20696e636f72726563742081526437bbb732b960d91b6020820152905061289b565b602080825281016105c181613017565b60248152602081017f4552433732313a207472616e7366657220746f20746865207a65726f206164648152637265737360e01b6020820152905061289b565b602080825281016105c181613067565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65729101908152612a33565b602080825281016105c1816130b6565b61202360f01b8152612ba8565b61310d8184612bc4565b9050612d09816130f6565b7002a3434b99034b990309027232a1037b31607d1b8152612db0565b601760f91b8152612c4e565b61314981613118565b90506131558183612bc4565b90506105c181613134565b61316981612d84565b9050613175818a612992565b905061318081612d98565b905061318c8189612992565b905061319781612b9f565b6d1130ba3a3934b13aba32b9911d1160911b8152600e0190506131ba8188612992565b90506131c581612b9f565b6f1132bc3a32b93730b62fbab936111d1160811b815260100190506131ea8187612992565b90506131f581612b9f565b651139b7111d1160d11b815260060190506132108186612992565b905061321b81612b9f565b721131b7b73a3930b1ba20b2323932b9b9911d1160691b815260130190506132438185612992565b905061324e81612c46565b905061325a8184612992565b90506132668183612992565b905061327181612dd2565b9998505050505050505050565b601381526020810172496e76616c696420736c6963652072616e676560681b81529050612a33565b602080825281016105c18161327e565b634e487b7160e01b600052603260045260246000fd5b60006000198214156132e0576132e0612a49565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60198152602081017f4552433732313a20617070726f766520746f2063616c6c65720000000000000081529050612a33565b602080825281016105c1816132fd565b60328152602081017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6020820152905061289b565b602080825281016105c18161333f565b6000826133ab576133ab6132e7565b500490565b60008160001904831182151516156133ca576133ca612a49565b500290565b600e8152602081016d185b1c9958591e481a5b9a5d195960921b81529050612a33565b602080825281016105c1816133cf565b608081016134108287612589565b61341d6020830186612589565b612ff26040830185612389565b61190160f01b8152612ba8565b6134408161342a565b905061344d8184806122c3565b6020016124718183806122c3565b608081016134698287612389565b6134766020830186612389565b6134836040830185612589565b81810360608301526134958184612303565b9695505050505050565b80516105c18161227c565b6000602082840312156134bf576134bf600080fd5b6000610a6f848461349f565b60a081016134d98288612589565b6134e66020830187612589565b6134f36040830186612589565b6135006060830185612389565b6134956080830184612589565b60008161351c5761351c612a49565b506000190190565b60208082527f537472696e67733a20686578206c656e67746820696e73756666696369656e749101908152612a33565b602080825281016105c181613524565b60208082527f4552433732313a206d696e7420746f20746865207a65726f20616464726573739101908152612a33565b602080825281016105c181613564565b601c8152602081017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529050612a33565b602080825281016105c1816135a456fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c74294142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220ed07ccc2bb843f0841a2684d556a2e564fd3ca7fc33a91978ef39b7c8fcd671664736f6c63430008090033";
797
+ var linkReferences$1 = {
798
+ };
799
+ var deployedLinkReferences$1 = {
800
+ };
801
+ var require$$8 = {
802
+ _format: _format$1,
803
+ contractName: contractName$1,
804
+ sourceName: sourceName$1,
805
+ abi: abi$1,
806
+ bytecode: bytecode$1,
807
+ deployedBytecode: deployedBytecode$1,
808
+ linkReferences: linkReferences$1,
809
+ deployedLinkReferences: deployedLinkReferences$1
810
+ };
811
+
812
+ var _format = "hh-sol-artifact-1";
813
+ var contractName = "ERC721DIDFactory";
814
+ var sourceName = "src/ERC721DIDFactory.sol";
815
+ var abi = [
816
+ {
817
+ inputs: [
818
+ {
819
+ internalType: "address",
820
+ name: "_implementation",
821
+ type: "address"
822
+ }
823
+ ],
824
+ stateMutability: "nonpayable",
825
+ type: "constructor"
826
+ },
827
+ {
828
+ anonymous: false,
829
+ inputs: [
830
+ {
831
+ indexed: false,
832
+ internalType: "address",
833
+ name: "contractAddress",
834
+ type: "address"
835
+ }
836
+ ],
837
+ name: "Created",
838
+ type: "event"
839
+ },
840
+ {
841
+ anonymous: false,
842
+ inputs: [
843
+ {
844
+ indexed: true,
845
+ internalType: "address",
846
+ name: "previousOwner",
847
+ type: "address"
848
+ },
849
+ {
850
+ indexed: true,
851
+ internalType: "address",
852
+ name: "newOwner",
853
+ type: "address"
854
+ }
855
+ ],
856
+ name: "OwnershipTransferred",
857
+ type: "event"
858
+ },
859
+ {
860
+ stateMutability: "nonpayable",
861
+ type: "fallback"
862
+ },
863
+ {
864
+ inputs: [
865
+ {
866
+ internalType: "address",
867
+ name: "_proxyRegistryAddress",
868
+ type: "address"
869
+ },
870
+ {
871
+ internalType: "string",
872
+ name: "_baseImageURI",
873
+ type: "string"
874
+ },
875
+ {
876
+ internalType: "string",
877
+ name: "_contractName",
878
+ type: "string"
879
+ },
880
+ {
881
+ internalType: "string",
882
+ name: "_contractSymbol",
883
+ type: "string"
884
+ },
885
+ {
886
+ internalType: "string",
887
+ name: "_contractDescription",
888
+ type: "string"
889
+ },
890
+ {
891
+ internalType: "uint256",
892
+ name: "_totalLimit",
893
+ type: "uint256"
894
+ },
895
+ {
896
+ internalType: "uint256",
897
+ name: "_price",
898
+ type: "uint256"
899
+ },
900
+ {
901
+ internalType: "address payable",
902
+ name: "_transferTokenAddress",
903
+ type: "address"
904
+ }
905
+ ],
906
+ name: "create",
907
+ outputs: [
908
+ ],
909
+ stateMutability: "nonpayable",
910
+ type: "function"
911
+ },
912
+ {
913
+ inputs: [
914
+ ],
915
+ name: "implementation",
916
+ outputs: [
917
+ {
918
+ internalType: "address",
919
+ name: "",
920
+ type: "address"
921
+ }
922
+ ],
923
+ stateMutability: "view",
924
+ type: "function"
925
+ },
926
+ {
927
+ inputs: [
928
+ ],
929
+ name: "owner",
930
+ outputs: [
931
+ {
932
+ internalType: "address",
933
+ name: "",
934
+ type: "address"
935
+ }
936
+ ],
937
+ stateMutability: "view",
938
+ type: "function"
939
+ },
940
+ {
941
+ inputs: [
942
+ ],
943
+ name: "renounceOwnership",
944
+ outputs: [
945
+ ],
946
+ stateMutability: "nonpayable",
947
+ type: "function"
948
+ },
949
+ {
950
+ inputs: [
951
+ {
952
+ internalType: "address",
953
+ name: "_implementation",
954
+ type: "address"
955
+ }
956
+ ],
957
+ name: "setImplementation",
958
+ outputs: [
959
+ ],
960
+ stateMutability: "nonpayable",
961
+ type: "function"
962
+ },
963
+ {
964
+ inputs: [
965
+ {
966
+ internalType: "address",
967
+ name: "newOwner",
968
+ type: "address"
969
+ }
970
+ ],
971
+ name: "transferOwnership",
972
+ outputs: [
973
+ ],
974
+ stateMutability: "nonpayable",
975
+ type: "function"
976
+ }
977
+ ];
978
+ var bytecode = "0x608060405234801561001057600080fd5b5060405161091438038061091483398101604081905261002f916100e2565b6100383361005d565b600180546001600160a01b0319166001600160a01b039290921691909117905561010b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6100c9816100ad565b81146100d457600080fd5b50565b80516100ba816100c0565b6000602082840312156100f7576100f7600080fd5b600061010384846100d7565b949350505050565b6107fa8061011a6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80635c60da1b14610083578063715018a6146100ac5780638da5cb5b146100b6578063c137ecd7146100c7578063d784d426146100da578063f2fde38b146100ed575b60405162461bcd60e51b815260040161007a90610352565b60405180910390fd5b600154610096906001600160a01b031681565b6040516100a39190610388565b60405180910390f35b6100b4610100565b005b6000546001600160a01b0316610096565b6100b46100d53660046104c4565b610114565b6100b46100e83660046105e3565b6101dd565b6100b46100fb3660046105e3565b610207565b610108610241565b610112600061026b565b565b60015460009061012c906001600160a01b03166102bb565b604051637bced14560e11b81529091506001600160a01b0382169063f79da28a90610169908c908c908c908c908c908c908c908c9060040161066c565b600060405180830381600087803b15801561018357600080fd5b505af1158015610197573d6000803e3d6000fd5b505050507f1449abf21e49fd025f33495e77f7b1461caefdd3d4bb646424a3f445c4576a5b816040516101ca9190610388565b60405180910390a1505050505050505050565b6101e5610241565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61020f610241565b6001600160a01b0381166102355760405162461bcd60e51b815260040161007a906106ff565b61023e8161026b565b50565b6000546001600160a01b031633146101125760405162461bcd60e51b815260040161007a90610779565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166103275760405162461bcd60e51b815260040161007a906107b4565b919050565b600f8152602081016e2ab735b737bb90333ab731ba34b7b760891b815290505b60200190565b602080825281016103628161032c565b92915050565b60006001600160a01b038216610362565b61038281610368565b82525050565b602081016103628284610379565b61039f81610368565b811461023e57600080fd5b803561036281610396565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff821117156103f1576103f16103b5565b6040525050565b600061040360405190565b905061032782826103cb565b600067ffffffffffffffff821115610429576104296103b5565b601f19601f83011660200192915050565b82818337506000910152565b60006104596104548461040f565b6103f8565b90508281526020810184848401111561047457610474600080fd5b61047f84828561043a565b509392505050565b600082601f83011261049b5761049b600080fd5b81356104ab848260208601610446565b949350505050565b8061039f565b8035610362816104b3565b600080600080600080600080610100898b0312156104e4576104e4600080fd5b60006104f08b8b6103aa565b985050602089013567ffffffffffffffff81111561051057610510600080fd5b61051c8b828c01610487565b975050604089013567ffffffffffffffff81111561053c5761053c600080fd5b6105488b828c01610487565b965050606089013567ffffffffffffffff81111561056857610568600080fd5b6105748b828c01610487565b955050608089013567ffffffffffffffff81111561059457610594600080fd5b6105a08b828c01610487565b94505060a06105b18b828c016104b9565b93505060c06105c28b828c016104b9565b92505060e06105d38b828c016103aa565b9150509295985092959890939650565b6000602082840312156105f8576105f8600080fd5b60006104ab84846103aa565b60005b8381101561061f578181015183820152602001610607565b8381111561062e576000848401525b50505050565b600061063e825190565b808452602084019350610655818560208601610604565b601f01601f19169290920192915050565b80610382565b610100810161067b828b610379565b818103602083015261068d818a610634565b905081810360408301526106a18189610634565b905081810360608301526106b58188610634565b905081810360808301526106c98187610634565b90506106d860a0830186610666565b6106e560c0830185610666565b6106f260e0830184610379565b9998505050505050505050565b6020808252810161036281602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815261034c565b6020808252810161036281610749565b601681526020810175115490cc4c4d8dce8818dc99585d194819985a5b195960521b8152905061034c565b602080825281016103628161078956fea26469706673582212206b3b4db5959cc750e7d240d269ad0f1ecf46bc9c3fedc4fa170569c318499f3c64736f6c63430008090033";
979
+ var deployedBytecode = "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80635c60da1b14610083578063715018a6146100ac5780638da5cb5b146100b6578063c137ecd7146100c7578063d784d426146100da578063f2fde38b146100ed575b60405162461bcd60e51b815260040161007a90610352565b60405180910390fd5b600154610096906001600160a01b031681565b6040516100a39190610388565b60405180910390f35b6100b4610100565b005b6000546001600160a01b0316610096565b6100b46100d53660046104c4565b610114565b6100b46100e83660046105e3565b6101dd565b6100b46100fb3660046105e3565b610207565b610108610241565b610112600061026b565b565b60015460009061012c906001600160a01b03166102bb565b604051637bced14560e11b81529091506001600160a01b0382169063f79da28a90610169908c908c908c908c908c908c908c908c9060040161066c565b600060405180830381600087803b15801561018357600080fd5b505af1158015610197573d6000803e3d6000fd5b505050507f1449abf21e49fd025f33495e77f7b1461caefdd3d4bb646424a3f445c4576a5b816040516101ca9190610388565b60405180910390a1505050505050505050565b6101e5610241565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61020f610241565b6001600160a01b0381166102355760405162461bcd60e51b815260040161007a906106ff565b61023e8161026b565b50565b6000546001600160a01b031633146101125760405162461bcd60e51b815260040161007a90610779565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166103275760405162461bcd60e51b815260040161007a906107b4565b919050565b600f8152602081016e2ab735b737bb90333ab731ba34b7b760891b815290505b60200190565b602080825281016103628161032c565b92915050565b60006001600160a01b038216610362565b61038281610368565b82525050565b602081016103628284610379565b61039f81610368565b811461023e57600080fd5b803561036281610396565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff821117156103f1576103f16103b5565b6040525050565b600061040360405190565b905061032782826103cb565b600067ffffffffffffffff821115610429576104296103b5565b601f19601f83011660200192915050565b82818337506000910152565b60006104596104548461040f565b6103f8565b90508281526020810184848401111561047457610474600080fd5b61047f84828561043a565b509392505050565b600082601f83011261049b5761049b600080fd5b81356104ab848260208601610446565b949350505050565b8061039f565b8035610362816104b3565b600080600080600080600080610100898b0312156104e4576104e4600080fd5b60006104f08b8b6103aa565b985050602089013567ffffffffffffffff81111561051057610510600080fd5b61051c8b828c01610487565b975050604089013567ffffffffffffffff81111561053c5761053c600080fd5b6105488b828c01610487565b965050606089013567ffffffffffffffff81111561056857610568600080fd5b6105748b828c01610487565b955050608089013567ffffffffffffffff81111561059457610594600080fd5b6105a08b828c01610487565b94505060a06105b18b828c016104b9565b93505060c06105c28b828c016104b9565b92505060e06105d38b828c016103aa565b9150509295985092959890939650565b6000602082840312156105f8576105f8600080fd5b60006104ab84846103aa565b60005b8381101561061f578181015183820152602001610607565b8381111561062e576000848401525b50505050565b600061063e825190565b808452602084019350610655818560208601610604565b601f01601f19169290920192915050565b80610382565b610100810161067b828b610379565b818103602083015261068d818a610634565b905081810360408301526106a18189610634565b905081810360608301526106b58188610634565b905081810360808301526106c98187610634565b90506106d860a0830186610666565b6106e560c0830185610666565b6106f260e0830184610379565b9998505050505050505050565b6020808252810161036281602681527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160208201526564647265737360d01b604082015260600190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815261034c565b6020808252810161036281610749565b601681526020810175115490cc4c4d8dce8818dc99585d194819985a5b195960521b8152905061034c565b602080825281016103628161078956fea26469706673582212206b3b4db5959cc750e7d240d269ad0f1ecf46bc9c3fedc4fa170569c318499f3c64736f6c63430008090033";
980
+ var linkReferences = {
981
+ };
982
+ var deployedLinkReferences = {
983
+ };
984
+ var require$$9 = {
985
+ _format: _format,
986
+ contractName: contractName,
987
+ sourceName: sourceName,
988
+ abi: abi,
989
+ bytecode: bytecode,
990
+ deployedBytecode: deployedBytecode,
991
+ linkReferences: linkReferences,
992
+ deployedLinkReferences: deployedLinkReferences
993
+ };
994
+
995
+ var require$$10 = [
996
+ {
997
+ chainId: "5",
998
+ chainName: "Goerli",
999
+ contractFactoryAddress: "0x4c093eAf8d569f6b2dC5a217D25cb3f0B60918C3",
1000
+ isTest: true,
1001
+ networkName: "goerli",
1002
+ symbol: "ETH (Goerli)",
1003
+ defaultRPC: "https://goerli.infura.io/v3/31276ea517a941c5b91d914fab83494e",
1004
+ explorer: "https://goerli.etherscan.io",
1005
+ icon: "eth",
1006
+ enable: true,
1007
+ decimal: 18
1008
+ },
1009
+ {
1010
+ chainId: "84531",
1011
+ chainName: "Base Goerli",
1012
+ contractFactoryAddress: "0xe83044a18dAb8F28F99F22f413C3856A0e39B153",
1013
+ isTest: true,
1014
+ networkName: "base-goerli",
1015
+ symbol: "ETH (Base Goerli)",
1016
+ defaultRPC: "https://goerli.base.org",
1017
+ explorer: "https://goerli.basescan.org",
1018
+ icon: "base",
1019
+ enable: true,
1020
+ decimal: 18
1021
+ },
1022
+ {
1023
+ chainId: "97",
1024
+ chainName: "BNB (Binance Smart Chain)",
1025
+ contractFactoryAddress: "0xf13AAEF9071498eE61D0e6390970e0629c60a53C",
1026
+ isTest: true,
1027
+ networkName: "bsc-test",
1028
+ symbol: "tBNB",
1029
+ defaultRPC: "https://bsc.getblock.io/13042277-cdaa-47dc-acda-5a0900eaf4ae/testnet",
1030
+ explorer: "https://testnet.bscscan.com",
1031
+ icon: "bnb",
1032
+ enable: true,
1033
+ decimal: 18
1034
+ },
1035
+ {
1036
+ chainId: "11155111",
1037
+ chainName: "Sepolia",
1038
+ contractFactoryAddress: "0xf13AAEF9071498eE61D0e6390970e0629c60a53C",
1039
+ isTest: true,
1040
+ networkName: "sepolia",
1041
+ symbol: "ETH (Sepolia)",
1042
+ defaultRPC: "https://sepolia.infura.io/v3/31276ea517a941c5b91d914fab83494e",
1043
+ explorer: "https://sepolia.etherscan.io",
1044
+ icon: "eth",
1045
+ enable: false,
1046
+ decimal: 18
1047
+ }
1048
+ ];
1049
+
1050
+ var require$$11 = [
1051
+ {
1052
+ chainId: "31337",
1053
+ chainName: "Localhost",
1054
+ contractFactoryAddress: "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",
1055
+ isTest: true,
1056
+ networkName: "localhost",
1057
+ symbol: "ETH (Localhost)",
1058
+ defaultRPC: "http://localhost:8545",
1059
+ explorer: "http://localhost:8545",
1060
+ icon: "eth",
1061
+ enable: true,
1062
+ decimal: 18
1063
+ }
1064
+ ];
1065
+
1066
+ /* eslint-disable no-unused-vars */
1067
+
1068
+ /* eslint-disable no-undef */
1069
+ require$$0.config();
1070
+ const ethers = require$$1;
1071
+ const axios = require$$2;
1072
+ const waitFor = require$$3;
1073
+ const { toBase58 } = require$$4;
1074
+ const upperFirst = require$$5;
1075
+ const keyBy = require$$6;
1076
+ const pick = require$$7;
1077
+ const ERC721DID = require$$8;
1078
+ const ERC721DIDFactory = require$$9;
1079
+
1080
+ const INFURA_PROJECT_ID = '31276ea517a941c5b91d914fab83494e';
1081
+
1082
+ const CHAIN_MAP = {
1083
+ 1: {
1084
+ networkName: 'mainnet',
1085
+ chainName: 'Ethereum Mainnet',
1086
+ chainId: '1',
1087
+ symbol: 'ETH',
1088
+ defaultRPC: `https://mainnet.infura.io/v3/${INFURA_PROJECT_ID}`,
1089
+ explorer: 'https://etherscan.io',
1090
+ icon: 'eth',
1091
+ enable: true,
1092
+ decimal: 18,
1093
+ },
1094
+ 5: {
1095
+ networkName: 'goerli',
1096
+ chainName: 'Goerli',
1097
+ chainId: '5',
1098
+ symbol: 'ETH (Goerli)',
1099
+ defaultRPC: `https://goerli.infura.io/v3/${INFURA_PROJECT_ID}`,
1100
+ explorer: 'https://goerli.etherscan.io',
1101
+ icon: 'eth',
1102
+ enable: true,
1103
+ decimal: 18,
1104
+ },
1105
+ 31337: {
1106
+ networkName: 'localhost',
1107
+ chainName: 'Localhost',
1108
+ chainId: '31337',
1109
+ symbol: 'ETH (Localhost)',
1110
+ defaultRPC: 'http://localhost:8545',
1111
+ explorer: 'http://localhost:8545',
1112
+ icon: 'eth',
1113
+ enable: true,
1114
+ decimal: 18,
1115
+ },
1116
+ 84531: {
1117
+ networkName: 'base-goerli',
1118
+ chainName: 'Base Goerli',
1119
+ chainId: '84531',
1120
+ symbol: 'ETH (Base Goerli)',
1121
+ defaultRPC: 'https://goerli.base.org',
1122
+ explorer: 'https://goerli.basescan.org',
1123
+ icon: 'base',
1124
+ enable: true,
1125
+ decimal: 18,
1126
+ },
1127
+ 11155111: {
1128
+ networkName: 'sepolia',
1129
+ chainName: 'Sepolia',
1130
+ chainId: '11155111',
1131
+ symbol: 'ETH (Sepolia)',
1132
+ defaultRPC: `https://sepolia.infura.io/v3/${INFURA_PROJECT_ID}`,
1133
+ explorer: 'https://sepolia.etherscan.io',
1134
+ icon: 'eth',
1135
+ enable: false, // FIXME
1136
+ decimal: 18,
1137
+ },
1138
+ 97: {
1139
+ networkName: 'bsc-test',
1140
+ chainName: 'BNB (Binance Smart Chain)',
1141
+ chainId: '97',
1142
+ symbol: 'tBNB',
1143
+ defaultRPC: 'https://bsc.getblock.io/13042277-cdaa-47dc-acda-5a0900eaf4ae/testnet',
1144
+ explorer: 'https://testnet.bscscan.com',
1145
+ icon: 'bnb',
1146
+ enable: true,
1147
+ decimal: 18,
1148
+ },
1149
+ };
1150
+
1151
+ const CUSTOM_CHAIN_MAP = {};
1152
+
1153
+ function getProvider(chainId) {
1154
+ const { defaultRPC } = getChainInfo(chainId);
1155
+ return new ethers.providers.JsonRpcProvider(defaultRPC);
1156
+ }
1157
+
1158
+ async function getContract({ contractAddress, chainId, signer } = {}) {
1159
+ const provider = getProvider(chainId);
1160
+
1161
+ const contract = new ethers.Contract(contractAddress, ERC721DID.abi, signer || provider);
1162
+
1163
+ return contract;
1164
+ }
1165
+
1166
+ async function getContractFactory({ contractAddress, chainId, signer } = {}) {
1167
+ const provider = getProvider(chainId);
1168
+
1169
+ const contract = new ethers.Contract(contractAddress, ERC721DIDFactory.abi, signer || provider);
1170
+
1171
+ return contract;
1172
+ }
1173
+
1174
+ async function getGasPrice({ provider }) {
1175
+ const gwei = 1000000000;
1176
+
1177
+ const chainId = await getChainId({ contract });
1178
+
1179
+ // ethereum
1180
+ if ([1, '1', 'mainnet', 'eth-main'].includes(chainId)) {
1181
+ const { data } = await axios.get(`https://token-data.arcblock.io/api/gas-prices?chainId=${chainId}`);
1182
+ return (data.fast / 10) * gwei;
1183
+ }
1184
+
1185
+ if ([5, '5', 'goerli', 'eth-goerli'].includes(chainId)) {
1186
+ const { gasPrice } = await provider.getFeeData();
1187
+ return gasPrice.toString();
1188
+ }
1189
+
1190
+ // hardhat
1191
+ if ([31337, '31337', 'hardhat'].includes(chainId)) {
1192
+ return 1 * gwei;
1193
+ }
1194
+
1195
+ // TODO: bsc
1196
+ // TODO: matic
1197
+ // TODO: fantom
1198
+
1199
+ return 1 * gwei;
1200
+ }
1201
+
1202
+ async function getTxData(params = {}, type = 'arcblock') {
1203
+ const { contract, fn, args, value } = params;
1204
+ const txData = contract.interface.encodeFunctionData(fn, args);
1205
+
1206
+ const chainId = await getChainId({ contract });
1207
+
1208
+ // const gasPrice = await getGasPrice({ provider: contract.provider });
1209
+ // const gasPriceAsGwei = Math.ceil(ethers.utils.formatUnits(gasPrice, 'gwei').toString());
1210
+
1211
+ const extraEtherValueMap = value
1212
+ ? {
1213
+ value,
1214
+ }
1215
+ : {};
1216
+
1217
+ const gasLimit = await contract.provider
1218
+ .estimateGas({
1219
+ to: contract.address,
1220
+ data: txData,
1221
+ ...extraEtherValueMap,
1222
+ })
1223
+ .then((res) => res.toString());
1224
+
1225
+ if (type === 'arcblock') {
1226
+ return toBase58(
1227
+ Buffer.from(
1228
+ JSON.stringify({
1229
+ network: chainId,
1230
+ tx: {
1231
+ to: contract.address,
1232
+ value: '0',
1233
+ ...extraEtherValueMap,
1234
+ gasLimit,
1235
+ data: txData,
1236
+ },
1237
+ }),
1238
+ 'utf-8'
1239
+ )
1240
+ );
1241
+ }
1242
+
1243
+ return {
1244
+ txData,
1245
+ gasLimit,
1246
+ };
1247
+ }
1248
+
1249
+ const waitForTxReceipt = async ({ contract, txHash }) => {
1250
+ let tx = {};
1251
+ let receipt = {};
1252
+ const txHashTemp = txHash;
1253
+
1254
+ await waitFor(
1255
+ async () => {
1256
+ // ethers getTransaction
1257
+ tx = await contract.provider.getTransaction(txHashTemp);
1258
+ return !!tx?.blockNumber;
1259
+ },
1260
+ { interval: 3000, timeout: 30 * 60 * 1000 }
1261
+ );
1262
+
1263
+ await waitFor(
1264
+ async () => {
1265
+ // ethers getTransactionReceipt
1266
+ const originReceipt = await contract.provider.getTransactionReceipt(txHashTemp);
1267
+ receipt = {
1268
+ ...originReceipt,
1269
+ parseLog: originReceipt?.logs?.map((log) => {
1270
+ try {
1271
+ return contract.interface.parseLog(log);
1272
+ } catch (_error) {
1273
+ return log;
1274
+ }
1275
+ }),
1276
+ };
1277
+ return !!receipt?.blockNumber;
1278
+ },
1279
+ { interval: 3000, timeout: 30 * 60 * 1000 }
1280
+ );
1281
+
1282
+ return receipt;
1283
+ };
1284
+
1285
+ const onContractFilter = async ({ contract, fn, onSuccess }) => {
1286
+ contract.provider.on(
1287
+ {
1288
+ address: contract.address,
1289
+ topics: [contract.interface.getEventTopic(upperFirst(fn))],
1290
+ },
1291
+ async (res) => {
1292
+ await onSuccess(res);
1293
+ }
1294
+ );
1295
+ };
1296
+
1297
+ // @private
1298
+ const getChainIdByChainName = (chainName) => {
1299
+ return keyBy(
1300
+ {
1301
+ ...CHAIN_MAP,
1302
+ ...CUSTOM_CHAIN_MAP,
1303
+ },
1304
+ 'networkName'
1305
+ )[chainName].chainId;
1306
+ };
1307
+
1308
+ const getChainId = async ({ contract }) => {
1309
+ const chainId = await contract.provider.getNetwork().then((res) => res.chainId);
1310
+ return `${chainId}`;
1311
+ };
1312
+
1313
+ const setupContractEnv = ({ customEvmChainList }) => {
1314
+ customEvmChainList.forEach((chain) => {
1315
+ const { chainId } = chain;
1316
+ CUSTOM_CHAIN_MAP[chainId] = chain;
1317
+ });
1318
+ };
1319
+
1320
+ const getChainInfo = (chainId) => {
1321
+ return {
1322
+ ...CHAIN_MAP[chainId],
1323
+ ...CUSTOM_CHAIN_MAP[chainId],
1324
+ };
1325
+ };
1326
+
1327
+ const getExplorerUrl = (chainId) => {
1328
+ const { explorer } = getChainInfo(chainId);
1329
+
1330
+ return `${explorer}`;
1331
+ };
1332
+
1333
+ const getAddressExplorerUrl = ({ chainId, hash }) => {
1334
+ return `${getExplorerUrl(chainId)}/address/${hash}`;
1335
+ };
1336
+
1337
+ const getBlockExplorerUrl = ({ chainId, blockletNumber }) => {
1338
+ return `${getExplorerUrl(chainId)}/block/${blockletNumber}`;
1339
+ };
1340
+
1341
+ const getTxExplorerUrl = ({ chainId, hash }) => {
1342
+ return `${getExplorerUrl(chainId)}/tx/${hash}`;
1343
+ };
1344
+
1345
+ const getCloneContractArgs = ({
1346
+ ownerAddress,
1347
+ baseImageURI,
1348
+ contractName,
1349
+ contractSymbol = '',
1350
+ contractDescription,
1351
+ totalLimit = 0,
1352
+ price = '0',
1353
+ transferTokenAddress,
1354
+ } = {}) => {
1355
+ const params = [
1356
+ ownerAddress,
1357
+ baseImageURI,
1358
+ contractName,
1359
+ contractSymbol,
1360
+ contractDescription,
1361
+ totalLimit,
1362
+ price,
1363
+ transferTokenAddress || ownerAddress,
1364
+ ];
1365
+ return params;
1366
+ };
1367
+
1368
+ const getEvmChainList = () => {
1369
+ // eslint-disable-next-line global-require
1370
+ let defaultChainList = require$$10;
1371
+ try {
1372
+ defaultChainList = [
1373
+ ...defaultChainList,
1374
+ // eslint-disable-next-line global-require
1375
+ ...require$$11,
1376
+ ];
1377
+ } catch (error) {
1378
+ // do nothing
1379
+ }
1380
+ // CUSTOM_CHAIN_MAP is setup by setupContractEnv
1381
+ if (Object.keys(CUSTOM_CHAIN_MAP).length > 0) {
1382
+ defaultChainList = defaultChainList.map((item) => {
1383
+ const { chainId } = item;
1384
+ if (CUSTOM_CHAIN_MAP[chainId]) {
1385
+ // override
1386
+ return {
1387
+ ...item,
1388
+ ...pick(CUSTOM_CHAIN_MAP[chainId], ['enable', 'defaultRPC', 'explorer']),
1389
+ };
1390
+ }
1391
+ return item;
1392
+ });
1393
+ }
1394
+ return defaultChainList;
1395
+ };
1396
+
1397
+ var getContract_1 = contract$1.getContract = getContract;
1398
+ var getContractFactory_1 = contract$1.getContractFactory = getContractFactory;
1399
+ var getTxData_1 = contract$1.getTxData = getTxData;
1400
+ var getGasPrice_1 = contract$1.getGasPrice = getGasPrice;
1401
+ var waitForTxReceipt_1 = contract$1.waitForTxReceipt = waitForTxReceipt;
1402
+ var onContractFilter_1 = contract$1.onContractFilter = onContractFilter;
1403
+ var getChainId_1 = contract$1.getChainId = getChainId;
1404
+ var getChainInfo_1 = contract$1.getChainInfo = getChainInfo;
1405
+ var getBlockExplorerUrl_1 = contract$1.getBlockExplorerUrl = getBlockExplorerUrl;
1406
+ var getTxExplorerUrl_1 = contract$1.getTxExplorerUrl = getTxExplorerUrl;
1407
+ var getAddressExplorerUrl_1 = contract$1.getAddressExplorerUrl = getAddressExplorerUrl;
1408
+ var getCloneContractArgs_1 = contract$1.getCloneContractArgs = getCloneContractArgs;
1409
+ var getEvmChainList_1 = contract$1.getEvmChainList = getEvmChainList;
1410
+ var setupContractEnv_1 = contract$1.setupContractEnv = setupContractEnv;
1411
+ var getChainIdByChainName_1 = contract$1.getChainIdByChainName = getChainIdByChainName;
1412
+ var ethers_1 = contract$1.ethers = ethers;
1413
+
1414
+ export { contract$1 as default, ethers_1 as ethers, getAddressExplorerUrl_1 as getAddressExplorerUrl, getBlockExplorerUrl_1 as getBlockExplorerUrl, getChainId_1 as getChainId, getChainIdByChainName_1 as getChainIdByChainName, getChainInfo_1 as getChainInfo, getCloneContractArgs_1 as getCloneContractArgs, getContract_1 as getContract, getContractFactory_1 as getContractFactory, getEvmChainList_1 as getEvmChainList, getGasPrice_1 as getGasPrice, getTxData_1 as getTxData, getTxExplorerUrl_1 as getTxExplorerUrl, onContractFilter_1 as onContractFilter, setupContractEnv_1 as setupContractEnv, waitForTxReceipt_1 as waitForTxReceipt };