-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSelfKeyMain.json
More file actions
9650 lines (9650 loc) · 314 KB
/
SelfKeyMain.json
File metadata and controls
9650 lines (9650 loc) · 314 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"contractName": "SelfKeyMain",
"abi": [
{
"constant": false,
"inputs": [
{
"name": "account",
"type": "address"
}
],
"name": "addWhitelisted",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "account",
"type": "address"
}
],
"name": "removeWhitelisted",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "account",
"type": "address"
}
],
"name": "isWhitelisted",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "affiliateConnections",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceWhitelistAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "addresses",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "account",
"type": "address"
}
],
"name": "addWhitelistAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "vendorStatus",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "affiliateStatus",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "account",
"type": "address"
}
],
"name": "isWhitelistAdmin",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceWhitelisted",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "bytes32"
}
],
"name": "RegisteredAffiliate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "bytes32"
}
],
"name": "RegisteredVendor",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "bytes32"
}
],
"name": "RemovedAffiliate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "bytes32"
}
],
"name": "RemovedVendor",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "bytes32"
}
],
"name": "RegisteredSelfKeyDID",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "user",
"type": "bytes32"
},
{
"indexed": false,
"name": "affiliate",
"type": "bytes32"
}
],
"name": "AddedAffiliateConnection",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "user",
"type": "bytes32"
},
{
"indexed": false,
"name": "affiliate",
"type": "bytes32"
}
],
"name": "RemovedAffiliateConnection",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "id",
"type": "bytes32"
},
{
"indexed": false,
"name": "affiliate",
"type": "bytes32"
}
],
"name": "CreatedSelfKeyDID",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "key",
"type": "bytes32"
},
{
"indexed": false,
"name": "_address",
"type": "address"
}
],
"name": "SetAddress",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "account",
"type": "address"
}
],
"name": "WhitelistedAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "account",
"type": "address"
}
],
"name": "WhitelistedRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "account",
"type": "address"
}
],
"name": "WhitelistAdminAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "account",
"type": "address"
}
],
"name": "WhitelistAdminRemoved",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "key",
"type": "bytes32"
},
{
"name": "_address",
"type": "address"
}
],
"name": "setAddress",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "key",
"type": "bytes32"
}
],
"name": "getAddress",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "affiliateID",
"type": "bytes32"
}
],
"name": "registerAffiliate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "vendorID",
"type": "bytes32"
}
],
"name": "registerVendor",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "user",
"type": "bytes32"
},
{
"name": "affiliate",
"type": "bytes32"
}
],
"name": "addAffiliateConnection",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "affiliateID",
"type": "bytes32"
}
],
"name": "removeAffiliate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "vendorID",
"type": "bytes32"
}
],
"name": "removeVendor",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "user",
"type": "bytes32"
}
],
"name": "removeAffiliateConnection",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "affiliateID",
"type": "bytes32"
}
],
"name": "createDID",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "did",
"type": "bytes32"
}
],
"name": "resolveDID",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"user\",\"type\":\"bytes32\"},{\"name\":\"affiliate\",\"type\":\"bytes32\"}],\"name\":\"addAffiliateConnection\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"affiliateID\",\"type\":\"bytes32\"}],\"name\":\"registerAffiliate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"affiliateConnections\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceWhitelistAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"vendorID\",\"type\":\"bytes32\"}],\"name\":\"registerVendor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"vendorID\",\"type\":\"bytes32\"}],\"name\":\"removeVendor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"addresses\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addWhitelistAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"vendorStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"user\",\"type\":\"bytes32\"}],\"name\":\"removeAffiliateConnection\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"affiliateID\",\"type\":\"bytes32\"}],\"name\":\"createDID\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"affiliateStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"affiliateID\",\"type\":\"bytes32\"}],\"name\":\"removeAffiliate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isWhitelistAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"bytes32\"},{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"setAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceWhitelisted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"did\",\"type\":\"bytes32\"}],\"name\":\"resolveDID\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"RegisteredAffiliate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"RegisteredVendor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"RemovedAffiliate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"RemovedVendor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"RegisteredSelfKeyDID\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"user\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"affiliate\",\"type\":\"bytes32\"}],\"name\":\"AddedAffiliateConnection\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"user\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"affiliate\",\"type\":\"bytes32\"}],\"name\":\"RemovedAffiliateConnection\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"affiliate\",\"type\":\"bytes32\"}],\"name\":\"CreatedSelfKeyDID\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"SetAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistedAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistedRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistAdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"WhitelistAdminRemoved\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Main entrypoint implementing SelfKey platform functionality\",\"methods\":{},\"title\":\"SelfKeyMain\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/carlos/work/dev/github/cbruguera/selfkey-main-contracts/contracts/SelfKeyMain.sol\":\"SelfKeyMain\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/carlos/work/dev/github/cbruguera/selfkey-main-contracts/contracts/SelfKeyMain.sol\":{\"keccak256\":\"0x7f58eac00330a0e903daf480873ecdf9991ff0beec6e66965fb19c4db6219fed\",\"urls\":[\"bzzr://5a72536fed87e531d4d710954fdd84f0bfcb92ad136373e4595feed6ccb4c445\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x75481aaa988c5e9fbc91b4f695678806579c04e0ad56907978c1ca5c7e92a682\",\"urls\":[\"bzzr://da472135eb9268d863825ea26e227a9f8980c54bd32e0764d61711acca59fc89\"]},\"openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol\":{\"keccak256\":\"0x536bb089be8504ab9dc063de2ea79571b1ebc9bd0ffb2429612787d57de1d502\",\"urls\":[\"bzzr://b895e83b578936f24a82b2554b25f655bc2256ca583da661dc21d176b5730144\"]},\"openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol\":{\"keccak256\":\"0x375226cd7fb699df957d5524c2ab3f4fae0ab6a02bf30344e3779786a9bdbc1d\",\"urls\":[\"bzzr://b01e5555a5a2b9e3a1428cdb42fdaa0a9e57edcc54a456a02052d344b3bd9755\"]},\"selfkey-did-ledger/contracts/DIDLedger.sol\":{\"keccak256\":\"0xac265a1082c3c479dd0b8b9a1a3934e7207a06dac5b99d311a65eca984a2b336\",\"urls\":[\"bzzr://8eb4fd9dd3a1f7a9961ae342604d7e84883401a98616144914c200c131532117\"]}},\"version\":1}",
"bytecode": "0x60806040526200001e3362000024640100000000026401000000009004565b620001e6565b620000488160006200008e640100000000026200158d179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620000cb57600080fd5b620000e6828262000151640100000000026401000000009004565b151515620000f357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200018f57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61176280620001f66000396000f3fe608060405234801561001057600080fd5b5060043610610154576000357c010000000000000000000000000000000000000000000000000000000090048063699f200f116100d55780639bf66fc0116100995780639bf66fc014610521578063b4637b6214610567578063bb5f747b14610595578063ca446dd9146105f1578063d6cd94731461063f578063de8d4ed21461064957610154565b8063699f200f146103b95780637362d9c81461042757806385596c841461046b578063900dacec146104b1578063945ffb0e146104df57610154565b80633af32abf1161011c5780633af32abf146102b55780633df6d778146103115780634c5a628c146103535780634e59b6371461035d57806355d87cee1461038b57610154565b80630977167d1461015957806310154bad1461019157806321f8a721146101d5578063291d9549146102435780633819b63414610287575b600080fd5b61018f6004803603604081101561016f57600080fd5b8101908080359060200190929190803590602001909291905050506106b7565b005b6101d3600480360360208110156101a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079e565b005b610201600480360360208110156101eb57600080fd5b81019080803590602001909291905050506107be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102856004803603602081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fb565b005b6102b36004803603602081101561029d57600080fd5b810190808035906020019092919050505061081b565b005b6102f7600480360360208110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a18565b604051808215151515815260200191505060405180910390f35b61033d6004803603602081101561032757600080fd5b8101908080359060200190929190505050610a35565b6040518082815260200191505060405180910390f35b61035b610a4d565b005b6103896004803603602081101561037357600080fd5b8101908080359060200190929190505050610a58565b005b6103b7600480360360208110156103a157600080fd5b8101908080359060200190929190505050610c55565b005b6103e5600480360360208110156103cf57600080fd5b8101908080359060200190929190505050610ccf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104696004803603602081101561043d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d02565b005b6104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610d22565b604051808215151515815260200191505060405180910390f35b6104dd600480360360208110156104c757600080fd5b8101908080359060200190929190505050610d42565b005b61050b600480360360208110156104f557600080fd5b8101908080359060200190929190505050610dcd565b6040518082815260200191505060405180910390f35b61054d6004803603602081101561053757600080fd5b81019080803590602001909291905050506110f6565b604051808215151515815260200191505060405180910390f35b6105936004803603602081101561057d57600080fd5b8101908080359060200190929190505050611116565b005b6105d7600480360360208110156105ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611190565b604051808215151515815260200191505060405180910390f35b61063d6004803603604081101561060757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ad565b005b610647611282565b005b6106756004803603602081101561065f57600080fd5b810190808035906020019092919050505061128d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c033610a18565b15156106cb57600080fd5b6004600082815260200190815260200160002060009054906101000a900460ff161515610743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806117106027913960400191505060405180910390fd5b8060036000848152602001908152602001600020819055507fd3990cfc7e25e281e8e032957e70f6e9707a25ec7e01586060a4d0212800a7328282604051808381526020018281526020019250505060405180910390a15050565b6107a733611190565b15156107b257600080fd5b6107bb81611391565b50565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61080433611190565b151561080f57600080fd5b610818816113eb565b50565b61082433610a18565b151561082f57600080fd5b600061088060405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638f1815b2846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561090757600080fd5b505afa15801561091b573d6000803e3d6000fd5b505050506040513d602081101561093157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116ed6023913960400191505060405180910390fd5b60016004600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff7ff9d2bfb1adb311fa44140c93bf630d217fdc4545739fcd23dc8f228e778e7826040518082815260200191505060405180910390a15050565b6000610a2e82600161144590919063ffffffff16565b9050919050565b60036020528060005260406000206000915090505481565b610a56336114d9565b565b610a6133610a18565b1515610a6c57600080fd5b6000610abd60405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638f1815b2846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015610b4457600080fd5b505afa158015610b58573d6000803e3d6000fd5b505050506040513d6020811015610b6e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151515610bee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116ed6023913960400191505060405180910390fd5b60016005600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9b03d9f8a0626a5f45b39cf28876f00186e9b1c344daccc598993342f2bc8966826040518082815260200191505060405180910390a15050565b610c5e33610a18565b1515610c6957600080fd5b60006005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8d76fa968ea046052df04b852edfc8e37310114d157ec2ad538cafb3191bc465816040518082815260200191505060405180910390a150565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0b33611190565b1515610d1657600080fd5b610d1f81611533565b50565b60056020528060005260406000206000915054906101000a900460ff1681565b610d4b33610a18565b1515610d5657600080fd5b600060036000838152602001908152602001600020549050600060010260036000848152602001908152602001600020819055507f9031cb0e500cd81dbba8b6205908e732a57687c574b9c4a9635adcc084ddb40f8282604051808381526020018281526020019250505060405180910390a15050565b600080610e1f60405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b905060008173ffffffffffffffffffffffffffffffffffffffff1663945ffb0e60006001026040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610e9657600080fd5b505af1158015610eaa573d6000803e3d6000fd5b505050506040513d6020811015610ec057600080fd5b810190808051906020019092919050505090506004600085815260200190815260200160002060009054906101000a900460ff168015610fd45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638f1815b2866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d6020811015610faa57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b15610ff2578360036000838152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff1663d315690582336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b505050507f8bca1f79851aca3d182acf7cb7ebf4ac37f3011345c71ab5786aa1a1ecf808728185604051808381526020018281526020019250505060405180910390a18092505050919050565b60046020528060005260406000206000915054906101000a900460ff1681565b61111f33610a18565b151561112a57600080fd5b60006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa9b844fc9d8562cf07e3921b7248e39b302e5c3ac7f8cd138496219960243832816040518082815260200191505060405180910390a150565b60006111a682600061144590919063ffffffff16565b9050919050565b6111b633611190565b15156111c157600080fd5b806002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f77879ade5d0fc220756fdd6255178c5a1ad8e5ee2ae2970e8b2610242d38d8da8282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b61128b336113eb565b565b6000806112df60405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b90508073ffffffffffffffffffffffffffffffffffffffff16638f1815b2846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561134e57600080fd5b505afa158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b8101908080519060200190929190505050915050919050565b6113a581600161158d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6113ff81600161163d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561148257600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6114ed81600061163d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b61154781600061158d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115c957600080fd5b6115d38282611445565b1515156115df57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561167957600080fd5b6116838282611445565b151561168e57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe444944206973206e6f742072656769737465726564206f6e20746865206c65646765724449442070726f7669646564206973206e6f74206c697374656420617320616666696c69617465a165627a7a72305820649b95855bfd84b4d4e63185208f84e331b66f32386e90171ed5c749c906ba990029",
"deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610154576000357c010000000000000000000000000000000000000000000000000000000090048063699f200f116100d55780639bf66fc0116100995780639bf66fc014610521578063b4637b6214610567578063bb5f747b14610595578063ca446dd9146105f1578063d6cd94731461063f578063de8d4ed21461064957610154565b8063699f200f146103b95780637362d9c81461042757806385596c841461046b578063900dacec146104b1578063945ffb0e146104df57610154565b80633af32abf1161011c5780633af32abf146102b55780633df6d778146103115780634c5a628c146103535780634e59b6371461035d57806355d87cee1461038b57610154565b80630977167d1461015957806310154bad1461019157806321f8a721146101d5578063291d9549146102435780633819b63414610287575b600080fd5b61018f6004803603604081101561016f57600080fd5b8101908080359060200190929190803590602001909291905050506106b7565b005b6101d3600480360360208110156101a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079e565b005b610201600480360360208110156101eb57600080fd5b81019080803590602001909291905050506107be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102856004803603602081101561025957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fb565b005b6102b36004803603602081101561029d57600080fd5b810190808035906020019092919050505061081b565b005b6102f7600480360360208110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a18565b604051808215151515815260200191505060405180910390f35b61033d6004803603602081101561032757600080fd5b8101908080359060200190929190505050610a35565b6040518082815260200191505060405180910390f35b61035b610a4d565b005b6103896004803603602081101561037357600080fd5b8101908080359060200190929190505050610a58565b005b6103b7600480360360208110156103a157600080fd5b8101908080359060200190929190505050610c55565b005b6103e5600480360360208110156103cf57600080fd5b8101908080359060200190929190505050610ccf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104696004803603602081101561043d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d02565b005b6104976004803603602081101561048157600080fd5b8101908080359060200190929190505050610d22565b604051808215151515815260200191505060405180910390f35b6104dd600480360360208110156104c757600080fd5b8101908080359060200190929190505050610d42565b005b61050b600480360360208110156104f557600080fd5b8101908080359060200190929190505050610dcd565b6040518082815260200191505060405180910390f35b61054d6004803603602081101561053757600080fd5b81019080803590602001909291905050506110f6565b604051808215151515815260200191505060405180910390f35b6105936004803603602081101561057d57600080fd5b8101908080359060200190929190505050611116565b005b6105d7600480360360208110156105ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611190565b604051808215151515815260200191505060405180910390f35b61063d6004803603604081101561060757600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ad565b005b610647611282565b005b6106756004803603602081101561065f57600080fd5b810190808035906020019092919050505061128d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c033610a18565b15156106cb57600080fd5b6004600082815260200190815260200160002060009054906101000a900460ff161515610743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806117106027913960400191505060405180910390fd5b8060036000848152602001908152602001600020819055507fd3990cfc7e25e281e8e032957e70f6e9707a25ec7e01586060a4d0212800a7328282604051808381526020018281526020019250505060405180910390a15050565b6107a733611190565b15156107b257600080fd5b6107bb81611391565b50565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61080433611190565b151561080f57600080fd5b610818816113eb565b50565b61082433610a18565b151561082f57600080fd5b600061088060405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638f1815b2846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561090757600080fd5b505afa15801561091b573d6000803e3d6000fd5b505050506040513d602081101561093157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515156109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116ed6023913960400191505060405180910390fd5b60016004600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff7ff9d2bfb1adb311fa44140c93bf630d217fdc4545739fcd23dc8f228e778e7826040518082815260200191505060405180910390a15050565b6000610a2e82600161144590919063ffffffff16565b9050919050565b60036020528060005260406000206000915090505481565b610a56336114d9565b565b610a6133610a18565b1515610a6c57600080fd5b6000610abd60405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638f1815b2846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015610b4457600080fd5b505afa158015610b58573d6000803e3d6000fd5b505050506040513d6020811015610b6e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151515610bee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116ed6023913960400191505060405180910390fd5b60016005600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507f9b03d9f8a0626a5f45b39cf28876f00186e9b1c344daccc598993342f2bc8966826040518082815260200191505060405180910390a15050565b610c5e33610a18565b1515610c6957600080fd5b60006005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055507f8d76fa968ea046052df04b852edfc8e37310114d157ec2ad538cafb3191bc465816040518082815260200191505060405180910390a150565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d0b33611190565b1515610d1657600080fd5b610d1f81611533565b50565b60056020528060005260406000206000915054906101000a900460ff1681565b610d4b33610a18565b1515610d5657600080fd5b600060036000838152602001908152602001600020549050600060010260036000848152602001908152602001600020819055507f9031cb0e500cd81dbba8b6205908e732a57687c574b9c4a9635adcc084ddb40f8282604051808381526020018281526020019250505060405180910390a15050565b600080610e1f60405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b905060008173ffffffffffffffffffffffffffffffffffffffff1663945ffb0e60006001026040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610e9657600080fd5b505af1158015610eaa573d6000803e3d6000fd5b505050506040513d6020811015610ec057600080fd5b810190808051906020019092919050505090506004600085815260200190815260200160002060009054906101000a900460ff168015610fd45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638f1815b2866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d6020811015610faa57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614155b15610ff2578360036000838152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff1663d315690582336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b505050507f8bca1f79851aca3d182acf7cb7ebf4ac37f3011345c71ab5786aa1a1ecf808728185604051808381526020018281526020019250505060405180910390a18092505050919050565b60046020528060005260406000206000915054906101000a900460ff1681565b61111f33610a18565b151561112a57600080fd5b60006004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055507fa9b844fc9d8562cf07e3921b7248e39b302e5c3ac7f8cd138496219960243832816040518082815260200191505060405180910390a150565b60006111a682600061144590919063ffffffff16565b9050919050565b6111b633611190565b15156111c157600080fd5b806002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f77879ade5d0fc220756fdd6255178c5a1ad8e5ee2ae2970e8b2610242d38d8da8282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b61128b336113eb565b565b6000806112df60405160200180807f4449444c656467657200000000000000000000000000000000000000000000008152506009019050604051602081830303815290604052805190602001206107be565b90508073ffffffffffffffffffffffffffffffffffffffff16638f1815b2846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505060206040518083038186803b15801561134e57600080fd5b505afa158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b8101908080519060200190929190505050915050919050565b6113a581600161158d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f60405160405180910390a250565b6113ff81600161163d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561148257600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6114ed81600061163d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b61154781600061158d90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156115c957600080fd5b6115d38282611445565b1515156115df57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561167957600080fd5b6116838282611445565b151561168e57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe444944206973206e6f742072656769737465726564206f6e20746865206c65646765724449442070726f7669646564206973206e6f74206c697374656420617320616666696c69617465a165627a7a72305820649b95855bfd84b4d4e63185208f84e331b66f32386e90171ed5c749c906ba990029",
"sourceMap": "251:3645:2:-;;;433:30:5;452:10;433:18;;;:30;;;:::i;:::-;251:3645:2;;923:143:5;987:29;1008:7;987:16;:20;;;;;;:29;;;;;:::i;:::-;1051:7;1031:28;;;;;;;;;;;;923:143;:::o;259:181:4:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;;;:18;;;:::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;786:162::-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;251:3645:2:-;;;;;;;",
"deployedSourceMap": "251:3645:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;251:3645:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:307;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2199:307:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;848:108:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;848:108:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;1357:129:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1357:129:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;962:114:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;962:114:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;1492:358:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1492:358:2;;;;;;;;;;;;;;;;;:::i;:::-;;725:117:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;725:117:6;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;549:55:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;549:55:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;826:91:5;;;:::i;:::-;;1856:337:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1856:337:2;;;;;;;;;;;;;;;;;:::i;:::-;;2704:168;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2704:168:2;;;;;;;;;;;;;;;;;:::i;:::-;;467:44;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;467:44:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;706:114:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;706:114:5;;;;;;;;;;;;;;;;;;;:::i;:::-;;663:44:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;663:44:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2878:262;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2878:262:2;;;;;;;;;;;;;;;;;:::i;:::-;;3146:540;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3146:540:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;610:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;610:47:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2512:186;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2512:186:2;;;;;;;;;;;;;;;;;:::i;:::-;;577:123:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;577:123:5;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1172:179:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1172:179:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1082:85:6;;;:::i;:::-;;3692:202:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3692:202:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2199:307;675:25:6;689:10;675:13;:25::i;:::-;667:34;;;;;;;;2325:15:2;:26;2341:9;2325:26;;;;;;;;;;;;;;;;;;;;;2317:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2434:9;2405:20;:26;2426:4;2405:26;;;;;;;;;;;:38;;;;2458:41;2483:4;2489:9;2458:41;;;;;;;;;;;;;;;;;;;;;;;;2199:307;;:::o;848:108:6:-;524:28:5;541:10;524:16;:28::i;:::-;516:37;;;;;;;;925:24:6;941:7;925:15;:24::i;:::-;848:108;:::o;1357:129:2:-;1435:7;1465:9;:14;1475:3;1465:14;;;;;;;;;;;;;;;;;;;;;1458:21;;1357:129;;;:::o;962:114:6:-;524:28:5;541:10;524:16;:28::i;:::-;516:37;;;;;;;;1042:27:6;1061:7;1042:18;:27::i;:::-;962:114;:::o;1492:358:2:-;675:25:6;689:10;675:13;:25::i;:::-;667:34;;;;;;;;1593:16:2;1622:22;413:29;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;413:29:2;;;403:40;;;;;;1622:10;:22::i;:::-;1593:52;;1708:1;1663:47;;:6;:20;;;1684:11;1663:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1663:33:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1663:33:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1663:33:2;;;;;;;;;;;;;;;;:47;;;;1655:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1792:4;1761:15;:28;1777:11;1761:28;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;1811:32;1831:11;1811:32;;;;;;;;;;;;;;;;;;711:1:6;1492:358:2;:::o;725:117:6:-;786:4;809:26;827:7;809:13;:17;;:26;;;;:::i;:::-;802:33;;725:117;;;:::o;549:55:2:-;;;;;;;;;;;;;;;;;:::o;826:91:5:-;877:33;899:10;877:21;:33::i;:::-;826:91::o;1856:337:2:-;675:25:6;689:10;675:13;:25::i;:::-;667:34;;;;;;;;1951:16:2;1980:22;413:29;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;413:29:2;;;403:40;;;;;;1980:10;:22::i;:::-;1951:52;;2063:1;2021:44;;:6;:20;;;2042:8;2021:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2021:30:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:30:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2021:30:2;;;;;;;;;;;;;;;;:44;;;;2013:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2141:4;2116:12;:22;2129:8;2116:22;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;2160:26;2177:8;2160:26;;;;;;;;;;;;;;;;;;711:1:6;1856:337:2;:::o;2704:168::-;675:25:6;689:10;675:13;:25::i;:::-;667:34;;;;;;;;2822:5:2;2797:12;:22;2810:8;2797:22;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2842:23;2856:8;2842:23;;;;;;;;;;;;;;;;;;2704:168;:::o;467:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;706:114:5:-;524:28;541:10;524:16;:28::i;:::-;516:37;;;;;;;;786:27;805:7;786:18;:27::i;:::-;706:114;:::o;663:44:2:-;;;;;;;;;;;;;;;;;;;;;;:::o;2878:262::-;675:25:6;689:10;675:13;:25::i;:::-;667:34;;;;;;;;2980:17:2;3000:20;:26;3021:4;3000:26;;;;;;;;;;;;2980:46;;3073:1;3065:10;;3036:20;:26;3057:4;3036:26;;;;;;;;;;;:39;;;;3090:43;3117:4;3123:9;3090:43;;;;;;;;;;;;;;;;;;;;;;;;711:1:6;2878:262:2;:::o;3146:540::-;3218:7;3241:16;3270:22;413:29;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;413:29:2;;;403:40;;;;;;3270:10;:22::i;:::-;3241:52;;3303:14;3320:6;:16;;;3345:1;3337:10;;3320:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3320:28:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3320:28:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3320:28:2;;;;;;;;;;;;;;;;3303:45;;3363:15;:28;3379:11;3363:28;;;;;;;;;;;;;;;;;;;;;:79;;;;;3440:1;3395:47;;:6;:20;;;3416:11;3395:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3395:33:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3395:33:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3395:33:2;;;;;;;;;;;;;;;;:47;;;;3363:79;3359:152;;;3489:11;3458:20;:28;3479:6;3458:28;;;;;;;;;;;:42;;;;3359:152;3563:6;:20;;;3584:6;3592:10;3563:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3563:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3563:40:2;;;;3618:38;3636:6;3644:11;3618:38;;;;;;;;;;;;;;;;;;;;;;;;3673:6;3666:13;;;;3146:540;;;:::o;610:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;2512:186::-;675:25:6;689:10;675:13;:25::i;:::-;667:34;;;;;;;;2642:5:2;2611:15;:28;2627:11;2611:28;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;2662:29;2679:11;2662:29;;;;;;;;;;;;;;;;;;2512:186;:::o;577:123:5:-;641:4;664:29;685:7;664:16;:20;;:29;;;;:::i;:::-;657:36;;577:123;;;:::o;1172:179:2:-;524:28:5;541:10;524:16;:28::i;:::-;516:37;;;;;;;;1296:8:2;1279:9;:14;1289:3;1279:14;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1319;1330:3;1335:8;1319:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;1172:179;;:::o;1082:85:6:-;1130:30;1149:10;1130:18;:30::i;:::-;1082:85::o;3692:202:2:-;3770:7;3793:16;3822:22;413:29;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;413:29:2;;;403:40;;;;;;3822:10;:22::i;:::-;3793:52;;3862:6;:20;;;3883:3;3862:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3862:25:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3862:25:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3862:25:2;;;;;;;;;;;;;;;;3855:32;;;3692:202;;;:::o;1173:134:6:-;1234:26;1252:7;1234:13;:17;;:26;;;;:::i;:::-;1292:7;1275:25;;;;;;;;;;;;1173:134;:::o;1313:142::-;1377:29;1398:7;1377:13;:20;;:29;;;;:::i;:::-;1440:7;1421:27;;;;;;;;;;;;1313:142;:::o;786:162:4:-;858:4;901:1;882:21;;:7;:21;;;;874:30;;;;;;;;921:4;:11;;:20;933:7;921:20;;;;;;;;;;;;;;;;;;;;;;;;;914:27;;786:162;;;;:::o;1072:151:5:-;1139:32;1163:7;1139:16;:23;;:32;;;;:::i;:::-;1208:7;1186:30;;;;;;;;;;;;1072:151;:::o;923:143::-;987:29;1008:7;987:16;:20;;:29;;;;:::i;:::-;1051:7;1031:28;;;;;;;;;;;;923:143;:::o;259:181:4:-;354:1;335:21;;:7;:21;;;;327:30;;;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;;;429:4;406;:11;;:20;418:7;406:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;259:181;;:::o;514:184::-;612:1;593:21;;:7;:21;;;;585:30;;;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;;;686:5;663:4;:11;;:20;675:7;663:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;514:184;;:::o",
"source": "pragma solidity 0.5.4;\n\nimport \"selfkey-did-ledger/contracts/DIDLedger.sol\";\nimport \"openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol\";\n\n/**\n * @title SelfKeyMain\n * @dev Main entrypoint implementing SelfKey platform functionality\n */\ncontract SelfKeyMain is WhitelistedRole {\n //bytes32 constant TYPE_ERC725 = keccak256(abi.encodePacked(\"ERC725\"));\n bytes32 constant LEDGER_KEY = keccak256(abi.encodePacked(\"DIDLedger\"));\n\n // directory\n mapping(bytes32 => address) public addresses;\n //DIDLedger public ledger;\n\n mapping(bytes32 => bytes32) public affiliateConnections;\n mapping(bytes32 => bool) public affiliateStatus;\n mapping(bytes32 => bool) public vendorStatus;\n\n event RegisteredAffiliate(bytes32 id);\n event RegisteredVendor(bytes32 id);\n event RemovedAffiliate(bytes32 id);\n event RemovedVendor(bytes32 id);\n event RegisteredSelfKeyDID(bytes32 id);\n event AddedAffiliateConnection(bytes32 user, bytes32 affiliate);\n event RemovedAffiliateConnection(bytes32 user, bytes32 affiliate);\n event CreatedSelfKeyDID(bytes32 id, bytes32 affiliate);\n event SetAddress(bytes32 key, address _address);\n\n function setAddress(bytes32 key, address _address)\n public\n onlyWhitelistAdmin\n {\n addresses[key] = _address;\n emit SetAddress(key, _address);\n }\n\n function getAddress(bytes32 key)\n public\n view\n returns (address)\n {\n return addresses[key];\n }\n\n function registerAffiliate(bytes32 affiliateID)\n public\n onlyWhitelisted\n {\n DIDLedger ledger = DIDLedger(getAddress(LEDGER_KEY));\n require(ledger.getController(affiliateID) != address(0), \"DID is not registered on the ledger\");\n\n affiliateStatus[affiliateID] = true;\n emit RegisteredAffiliate(affiliateID);\n }\n\n function registerVendor(bytes32 vendorID)\n public\n onlyWhitelisted\n {\n DIDLedger ledger = DIDLedger(getAddress(LEDGER_KEY));\n require(ledger.getController(vendorID) != address(0), \"DID is not registered on the ledger\");\n\n vendorStatus[vendorID] = true;\n emit RegisteredVendor(vendorID);\n }\n\n function addAffiliateConnection(bytes32 user, bytes32 affiliate)\n public\n onlyWhitelisted\n {\n require(affiliateStatus[affiliate], \"DID provided is not listed as affiliate\");\n affiliateConnections[user] = affiliate;\n emit AddedAffiliateConnection(user, affiliate);\n }\n\n function removeAffiliate(bytes32 affiliateID)\n public\n onlyWhitelisted\n {\n affiliateStatus[affiliateID] = false;\n emit RemovedAffiliate(affiliateID);\n }\n\n function removeVendor(bytes32 vendorID)\n public\n onlyWhitelisted\n {\n vendorStatus[vendorID] = false;\n emit RemovedVendor(vendorID);\n }\n\n function removeAffiliateConnection(bytes32 user)\n public\n onlyWhitelisted\n {\n bytes32 affiliate = affiliateConnections[user];\n affiliateConnections[user] = bytes32(0);\n emit RemovedAffiliateConnection(user, affiliate);\n }\n\n function createDID(bytes32 affiliateID)\n public\n returns (bytes32)\n {\n DIDLedger ledger = DIDLedger(getAddress(LEDGER_KEY));\n bytes32 newDID = ledger.createDID(bytes32(0));\n\n if (affiliateStatus[affiliateID] && ledger.getController(affiliateID) != address(0)) {\n affiliateConnections[newDID] = affiliateID;\n }\n\n // transfer DID ownership to user\n ledger.setController(newDID, msg.sender);\n emit CreatedSelfKeyDID(newDID, affiliateID);\n return newDID;\n }\n\n function resolveDID(bytes32 did)\n public\n view\n returns (address)\n {\n DIDLedger ledger = DIDLedger(getAddress(LEDGER_KEY));\n return ledger.getController(did);\n }\n}\n",
"sourcePath": "/home/carlos/work/dev/github/cbruguera/selfkey-main-contracts/contracts/SelfKeyMain.sol",
"ast": {
"absolutePath": "/home/carlos/work/dev/github/cbruguera/selfkey-main-contracts/contracts/SelfKeyMain.sol",
"exportedSymbols": {
"SelfKeyMain": [684]
},
"id": 685,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 330,
"literals": ["solidity", "0.5", ".4"],
"nodeType": "PragmaDirective",
"src": "0:22:2"
},
{
"absolutePath": "selfkey-did-ledger/contracts/DIDLedger.sol",
"file": "selfkey-did-ledger/contracts/DIDLedger.sol",
"id": 331,
"nodeType": "ImportDirective",
"scope": 685,
"sourceUnit": 2034,
"src": "24:52:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol",
"file": "openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol",
"id": 332,
"nodeType": "ImportDirective",
"scope": 685,
"sourceUnit": 1010,
"src": "77:74:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 333,
"name": "WhitelistedRole",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1009,
"src": "275:15:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_WhitelistedRole_$1009",
"typeString": "contract WhitelistedRole"
}
},
"id": 334,
"nodeType": "InheritanceSpecifier",
"src": "275:15:2"
}
],
"contractDependencies": [900, 1009],
"contractKind": "contract",
"documentation": "@title SelfKeyMain\n@dev Main entrypoint implementing SelfKey platform functionality",
"fullyImplemented": true,
"id": 684,
"linearizedBaseContracts": [684, 1009, 900],
"name": "SelfKeyMain",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 342,
"name": "LEDGER_KEY",
"nodeType": "VariableDeclaration",
"scope": 684,
"src": "373:70:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 335,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "373:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "4449444c6564676572",
"id": 339,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "430:11:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_577c19295a654afe965dd3fa7daa67ae8e3649a9be1c5824b866150ed90033c8",
"typeString": "literal_string \"DIDLedger\""
},
"value": "DIDLedger"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_577c19295a654afe965dd3fa7daa67ae8e3649a9be1c5824b866150ed90033c8",
"typeString": "literal_string \"DIDLedger\""
}
],
"expression": {
"argumentTypes": null,
"id": 337,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2035,
"src": "413:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 338,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "413:16:2",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 340,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "413:29:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 336,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2042,
"src": "403:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 341,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "403:40:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 346,
"name": "addresses",
"nodeType": "VariableDeclaration",
"scope": 684,
"src": "467:44:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"typeName": {
"id": 345,
"keyType": {
"id": 343,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "475:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "467:27:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"valueType": {
"id": 344,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "486:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 350,
"name": "affiliateConnections",
"nodeType": "VariableDeclaration",
"scope": 684,
"src": "549:55:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
"typeString": "mapping(bytes32 => bytes32)"
},
"typeName": {
"id": 349,
"keyType": {
"id": 347,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "557:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "549:27:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
"typeString": "mapping(bytes32 => bytes32)"
},
"valueType": {
"id": 348,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "568:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 354,
"name": "affiliateStatus",
"nodeType": "VariableDeclaration",
"scope": 684,
"src": "610:47:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 353,
"keyType": {
"id": 351,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "618:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "610:24:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 352,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "629:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 358,
"name": "vendorStatus",
"nodeType": "VariableDeclaration",
"scope": 684,
"src": "663:44:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 357,
"keyType": {
"id": 355,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "671:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "663:24:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 356,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "682:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 362,
"name": "RegisteredAffiliate",
"nodeType": "EventDefinition",
"parameters": {
"id": 361,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 360,
"indexed": false,
"name": "id",
"nodeType": "VariableDeclaration",
"scope": 362,
"src": "740:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 359,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "740:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "739:12:2"
},
"src": "714:38:2"
},
{
"anonymous": false,
"documentation": null,
"id": 366,
"name": "RegisteredVendor",
"nodeType": "EventDefinition",
"parameters": {
"id": 365,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 364,
"indexed": false,
"name": "id",
"nodeType": "VariableDeclaration",
"scope": 366,
"src": "780:10:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 363,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "780:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "779:12:2"
},
"src": "757:35:2"
},
{
"anonymous": false,
"documentation": null,
"id": 370,
"name": "RemovedAffiliate",
"nodeType": "EventDefinition",
"parameters": {
"id": 369,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 368,
"indexed": false,