BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Plenty Staking Admin
operations (5.91K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
967
1255
 
1
parameter (or
2
            (or
3
              (or
4
                (or (address %AdminChange)
5
                    (pair %AdminOperation (nat %Operation) (address %address)))
6
                (or
7
                  (pair %FarmAdminChange (address %AdminAddress) (address %FarmAddress))
8
                  (address %FarmChangeState)))
9
              (or
10
                (or
11
                  (pair %FarmDeposit (address %address)
12
                                     (pair (nat %amount) (nat %blocks)))
13
                  (address %FarmFeeWithdrawl))
14
                (or
15
                  (pair %FarmRecoverTokens
16
                    (pair (address %FarmAddress) (pair (address %address) (nat %id)))
17
                    (pair (address %token) (pair (nat %type) (nat %value))))
18
                  (or
19
                    (pair %FarmUnstakeFeeChange
20
                      (pair (address %address) (nat %blocksPerCycle))
21
                      (pair (nat %cycles) (pair (nat %defaultFee) (nat %depositFee))))
22
                    (unit %MintTokens)))))
23
            (or
24
              (or
25
                (or (address %ModifyDeveloperAddress)
26
                    (pair %ModifyDeveloperFee (nat %FarmCut) (nat %TokenCut)))
27
                (or (nat %ModifyMintParameters)
28
                    (or (nat %SetOperation) (address %TokenAdminChange))))
29
              (or
30
                (or (pair %VoteOperation (nat %Operation) (nat %Vote))
31
                    (unit %VotingHardReset))
32
                (or
33
                  (pair %WithdrawFunds (pair (address %TokenAddress) (nat %amount))
34
                                       (pair (nat %id) (nat %type)))
35
                  (or (unit %deposit) (nat %deposit_callback))))));
36
storage (pair
37
          (pair (pair (set %Accounts address) (address %DeveloperAddress))
38
                (pair (nat %DeveloperFarmCut)
39
                      (pair (nat %DeveloperTokenCut) (nat %Operation))))
40
          (pair (pair (address %Token) (map %Votes address bool))
41
                (pair (address %admin) (pair (nat %balance) (bool %state)))));
42
code { UNPAIR ;
43
       IF_LEFT
44
         { IF_LEFT
45
             { IF_LEFT
46
                 { IF_LEFT
47
                     { SWAP ;
48
                       DUP ;
49
                       DUG 2 ;
50
                       CAR ;
51
                       CAR ;
52
                       CAR ;
53
                       SENDER ;
54
                       MEM ;
55
                       IF {} { PUSH string "Invalid Sender" ; FAILWITH } ;
56
                       PUSH nat 9 ;
57
                       DUP 3 ;
58
                       CAR ;
59
                       GET 6 ;
60
                       COMPARE ;
61
                       EQ ;
62
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
63
                       PUSH nat 1 ;
64
                       PUSH nat 2 ;
65
                       NIL address ;
66
                       DUP 5 ;
67
                       CAR ;
68
                       CAR ;
69
                       CAR ;
70
                       ITER { CONS } ;
71
                       NIL address ;
72
                       SWAP ;
73
                       ITER { CONS } ;
74
                       SIZE ;
75
                       EDIV ;
76
                       IF_NONE { PUSH int 965 ; FAILWITH } { CAR } ;
77
                       ADD ;
78
                       NIL address ;
79
                       DUP 4 ;
80
                       GET 3 ;
81
                       CDR ;
82
                       ITER { CAR ; CONS } ;
83
                       NIL address ;
84
                       SWAP ;
85
                       ITER { CONS } ;
86
                       SIZE ;
87
                       COMPARE ;
88
                       GE ;
89
                       IF
90
                         {}
91
                         { PUSH string "Voting has not reached Decision" ; FAILWITH } ;
92
                       SWAP ;
93
                       DUP ;
94
                       DUG 2 ;
95
                       UNPAIR ;
96
                       UNPAIR ;
97
                       UNPAIR ;
98
                       PUSH bool False ;
99
                       DIG 6 ;
100
                       GET 5 ;
101
                       UPDATE ;
102
                       PUSH bool True ;
103
                       DUP 6 ;
104
                       UPDATE ;
105
                       PAIR ;
106
                       PAIR ;
107
                       PAIR ;
108
                       SWAP ;
109
                       UPDATE 5 ;
110
                       UNPAIR ;
111
                       SWAP ;
112
                       UNPAIR ;
113
                       CAR ;
114
                       EMPTY_MAP address bool ;
115
                       SWAP ;
116
                       PAIR ;
117
                       PAIR ;
118
                       SWAP ;
119
                       UNPAIR ;
120
                       SWAP ;
121
                       UNPAIR ;
122
                       SWAP ;
123
                       CAR ;
124
                       PUSH nat 0 ;
125
                       SWAP ;
126
                       PAIR ;
127
                       SWAP ;
128
                       PAIR ;
129
                       SWAP ;
130
                       PAIR ;
131
                       PAIR }
132
                     { SWAP ;
133
                       DUP ;
134
                       DUG 2 ;
135
                       GET 5 ;
136
                       SENDER ;
137
                       COMPARE ;
138
                       EQ ;
139
                       IF {} { PUSH string "Invalid Sender" ; FAILWITH } ;
140
                       PUSH nat 10 ;
141
                       DUP 3 ;
142
                       CAR ;
143
                       GET 6 ;
144
                       COMPARE ;
145
                       EQ ;
146
                       IF {} { PUSH string "Voting Already in Progress" ; FAILWITH } ;
147
                       NIL address ;
148
                       DUP 3 ;
149
                       CAR ;
150
                       CAR ;
151
                       CAR ;
152
                       ITER { CONS } ;
153
                       NIL address ;
154
                       SWAP ;
155
                       ITER { CONS } ;
156
                       SIZE ;
157
                       NIL address ;
158
                       DUP 4 ;
159
                       GET 3 ;
160
                       CDR ;
161
                       ITER { CAR ; CONS } ;
162
                       NIL address ;
163
                       SWAP ;
164
                       ITER { CONS } ;
165
                       SIZE ;
166
                       COMPARE ;
167
                       GE ;
168
                       IF
169
                         {}
170
                         { PUSH string "Voting has not reached Decision" ; FAILWITH } ;
171
                       DUP ;
172
                       CAR ;
173
                       PUSH nat 1 ;
174
                       COMPARE ;
175
                       EQ ;
176
                       IF
177
                         { SWAP ;
178
                           UNPAIR ;
179
                           UNPAIR ;
180
                           UNPAIR ;
181
                           PUSH bool True ;
182
                           DIG 5 ;
183
                           CDR ;
184
                           UPDATE ;
185
                           PAIR ;
186
                           PAIR ;
187
                           PAIR }
188
                         { SWAP ;
189
                           UNPAIR ;
190
                           UNPAIR ;
191
                           UNPAIR ;
192
                           PUSH bool False ;
193
                           DIG 5 ;
194
                           CDR ;
195
                           UPDATE ;
196
                           PAIR ;
197
                           PAIR ;
198
                           PAIR } ;
199
                       UNPAIR ;
200
                       SWAP ;
201
                       UNPAIR ;
202
                       CAR ;
203
                       EMPTY_MAP address bool ;
204
                       SWAP ;
205
                       PAIR ;
206
                       PAIR ;
207
                       SWAP ;
208
                       UNPAIR ;
209
                       SWAP ;
210
                       UNPAIR ;
211
                       SWAP ;
212
                       CAR ;
213
                       PUSH nat 0 ;
214
                       SWAP ;
215
                       PAIR ;
216
                       SWAP ;
217
                       PAIR ;
218
                       SWAP ;
219
                       PAIR ;
220
                       PAIR } ;
221
                   NIL operation }
222
                 { IF_LEFT
223
                     { SWAP ;
224
                       DUP ;
225
                       DUG 2 ;
226
                       GET 5 ;
227
                       SENDER ;
228
                       COMPARE ;
229
                       EQ ;
230
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
231
                       PUSH nat 7 ;
232
                       DUP 3 ;
233
                       CAR ;
234
                       GET 6 ;
235
                       COMPARE ;
236
                       EQ ;
237
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
238
                       NIL address ;
239
                       DUP 3 ;
240
                       GET 3 ;
241
                       CDR ;
242
                       ITER { CAR ; CONS } ;
243
                       NIL address ;
244
                       SWAP ;
245
                       ITER { CONS } ;
246
                       SIZE ;
247
                       NIL address ;
248
                       DUP 4 ;
249
                       CAR ;
250
                       CAR ;
251
                       CAR ;
252
                       ITER { CONS } ;
253
                       NIL address ;
254
                       SWAP ;
255
                       ITER { CONS } ;
256
                       SIZE ;
257
                       COMPARE ;
258
                       EQ ;
259
                       IF {} { PUSH string "EveryOne hasn't voted" ; FAILWITH } ;
260
                       DUP ;
261
                       CDR ;
262
                       CONTRACT %changeAdmin address ;
263
                       IF_NONE { PUSH int 840 ; FAILWITH } {} ;
264
                       NIL operation ;
265
                       SWAP ;
266
                       PUSH mutez 0 ;
267
                       DIG 3 ;
268
                       CAR ;
269
                       TRANSFER_TOKENS ;
270
                       CONS ;
271
                       SWAP ;
272
                       UNPAIR ;
273
                       SWAP ;
274
                       UNPAIR ;
275
                       CAR ;
276
                       EMPTY_MAP address bool ;
277
                       SWAP ;
278
                       PAIR ;
279
                       PAIR ;
280
                       SWAP ;
281
                       UNPAIR ;
282
                       SWAP ;
283
                       UNPAIR ;
284
                       SWAP ;
285
                       CAR ;
286
                       PUSH nat 0 ;
287
                       SWAP ;
288
                       PAIR ;
289
                       SWAP ;
290
                       PAIR ;
291
                       SWAP ;
292
                       PAIR ;
293
                       PAIR ;
294
                       SWAP }
295
                     { SWAP ;
296
                       DUP ;
297
                       DUG 2 ;
298
                       GET 5 ;
299
                       SENDER ;
300
                       COMPARE ;
301
                       EQ ;
302
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
303
                       PUSH nat 8 ;
304
                       DUP 3 ;
305
                       CAR ;
306
                       GET 6 ;
307
                       COMPARE ;
308
                       EQ ;
309
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
310
                       NIL address ;
311
                       DUP 3 ;
312
                       GET 3 ;
313
                       CDR ;
314
                       ITER { CAR ; CONS } ;
315
                       NIL address ;
316
                       SWAP ;
317
                       ITER { CONS } ;
318
                       SIZE ;
319
                       NIL address ;
320
                       DUP 4 ;
321
                       CAR ;
322
                       CAR ;
323
                       CAR ;
324
                       ITER { CONS } ;
325
                       NIL address ;
326
                       SWAP ;
327
                       ITER { CONS } ;
328
                       SIZE ;
329
                       COMPARE ;
330
                       EQ ;
331
                       IF {} { PUSH string "EveryOne hasn't voted" ; FAILWITH } ;
332
                       CONTRACT %changeState unit ;
333
                       IF_NONE { PUSH int 861 ; FAILWITH } {} ;
334
                       NIL operation ;
335
                       SWAP ;
336
                       PUSH mutez 0 ;
337
                       UNIT ;
338
                       TRANSFER_TOKENS ;
339
                       CONS ;
340
                       SWAP ;
341
                       UNPAIR ;
342
                       SWAP ;
343
                       UNPAIR ;
344
                       CAR ;
345
                       EMPTY_MAP address bool ;
346
                       SWAP ;
347
                       PAIR ;
348
                       PAIR ;
349
                       SWAP ;
350
                       UNPAIR ;
351
                       SWAP ;
352
                       UNPAIR ;
353
                       SWAP ;
354
                       CAR ;
355
                       PUSH nat 0 ;
356
                       SWAP ;
357
                       PAIR ;
358
                       SWAP ;
359
                       PAIR ;
360
                       SWAP ;
361
                       PAIR ;
362
                       PAIR ;
363
                       SWAP } } }
364
             { IF_LEFT
365
                 { IF_LEFT
366
                     { SWAP ;
367
                       DUP ;
368
                       DUG 2 ;
369
                       GET 5 ;
370
                       SENDER ;
371
                       COMPARE ;
372
                       EQ ;
373
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
374
                       SWAP ;
375
                       DUP ;
376
                       DUG 2 ;
377
                       CAR ;
378
                       GET 3 ;
379
                       SWAP ;
380
                       DUP ;
381
                       DUG 2 ;
382
                       GET 3 ;
383
                       EDIV ;
384
                       IF_NONE { PUSH int 736 ; FAILWITH } { CAR } ;
385
                       SWAP ;
386
                       DUP ;
387
                       DUG 2 ;
388
                       GET 3 ;
389
                       SWAP ;
390
                       DUP ;
391
                       DUG 2 ;
392
                       ADD ;
393
                       DUP 4 ;
394
                       GET 7 ;
395
                       COMPARE ;
396
                       GE ;
397
                       IF {} { PUSH string "Insufficient Balance" ; FAILWITH } ;
398
                       DUP 3 ;
399
                       DUP 3 ;
400
                       GET 3 ;
401
                       DUP 3 ;
402
                       ADD ;
403
                       DIG 4 ;
404
                       GET 7 ;
405
                       SUB ;
406
                       ISNAT ;
407
                       IF_NONE { PUSH int 740 ; FAILWITH } {} ;
408
                       UPDATE 7 ;
409
                       DUG 2 ;
410
                       NIL operation ;
411
                       DUP 4 ;
412
                       GET 3 ;
413
                       CAR ;
414
                       CONTRACT %transfer (pair address (pair address nat)) ;
415
                       IF_NONE { PUSH int 720 ; FAILWITH } {} ;
416
                       PUSH mutez 0 ;
417
                       DIG 4 ;
418
                       DUP ;
419
                       GET 3 ;
420
                       SWAP ;
421
                       DUP ;
422
                       DUG 6 ;
423
                       CAR ;
424
                       SELF_ADDRESS ;
425
                       PAIR 3 ;
426
                       TRANSFER_TOKENS ;
427
                       CONS ;
428
                       DUP 3 ;
429
                       CAR ;
430
                       CONTRACT %AddReward (pair nat nat) ;
431
                       IF_NONE { PUSH int 750 ; FAILWITH } {} ;
432
                       PUSH mutez 0 ;
433
                       DIG 4 ;
434
                       DUP ;
435
                       GET 3 ;
436
                       SWAP ;
437
                       GET 4 ;
438
                       PAIR ;
439
                       TRANSFER_TOKENS ;
440
                       CONS ;
441
                       DUP 3 ;
442
                       GET 3 ;
443
                       CAR ;
444
                       CONTRACT %transfer (pair address (pair address nat)) ;
445
                       IF_NONE { PUSH int 720 ; FAILWITH } {} ;
446
                       PUSH mutez 0 ;
447
                       DIG 3 ;
448
                       DUP 5 ;
449
                       CAR ;
450
                       CAR ;
451
                       CDR ;
452
                       SELF_ADDRESS ;
453
                       PAIR 3 ;
454
                       TRANSFER_TOKENS ;
455
                       CONS }
456
                     { CONTRACT %WithdrawFee unit ;
457
                       IF_NONE { PUSH int 768 ; FAILWITH } {} ;
458
                       NIL operation ;
459
                       SWAP ;
460
                       PUSH mutez 0 ;
461
                       UNIT ;
462
                       TRANSFER_TOKENS ;
463
                       CONS } }
464
                 { IF_LEFT
465
                     { SWAP ;
466
                       DUP ;
467
                       DUG 2 ;
468
                       GET 5 ;
469
                       SENDER ;
470
                       COMPARE ;
471
                       EQ ;
472
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
473
                       PUSH nat 5 ;
474
                       DUP 3 ;
475
                       CAR ;
476
                       GET 6 ;
477
                       COMPARE ;
478
                       EQ ;
479
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
480
                       NIL address ;
481
                       DUP 3 ;
482
                       GET 3 ;
483
                       CDR ;
484
                       ITER { CAR ; CONS } ;
485
                       NIL address ;
486
                       SWAP ;
487
                       ITER { CONS } ;
488
                       SIZE ;
489
                       NIL address ;
490
                       DUP 4 ;
491
                       CAR ;
492
                       CAR ;
493
                       CAR ;
494
                       ITER { CONS } ;
495
                       NIL address ;
496
                       SWAP ;
497
                       ITER { CONS } ;
498
                       SIZE ;
499
                       COMPARE ;
500
                       EQ ;
501
                       IF {} { PUSH string "Not everyone has voted" ; FAILWITH } ;
502
                       DUP ;
503
                       CAR ;
504
                       CAR ;
505
                       CONTRACT %RecoverExcessToken (pair (pair address nat)
506
                                                          (pair address (pair nat nat))) ;
507
                       IF_NONE { PUSH int 790 ; FAILWITH } {} ;
508
                       NIL operation ;
509
                       SWAP ;
510
                       PUSH mutez 0 ;
511
                       DIG 3 ;
512
                       DUP ;
513
                       GET 6 ;
514
                       SWAP ;
515
                       DUP ;
516
                       DUG 5 ;
517
                       GET 5 ;
518
                       PAIR ;
519
                       DUP 5 ;
520
                       GET 3 ;
521
                       PAIR ;
522
                       DIG 4 ;
523
                       DUP ;
524
                       GET 5 ;
525
                       SWAP ;
526
                       CAR ;
527
                       GET 3 ;
528
                       PAIR ;
529
                       PAIR ;
530
                       TRANSFER_TOKENS ;
531
                       CONS ;
532
                       SWAP ;
533
                       UNPAIR ;
534
                       SWAP ;
535
                       UNPAIR ;
536
                       CAR ;
537
                       EMPTY_MAP address bool ;
538
                       SWAP ;
539
                       PAIR ;
540
                       PAIR ;
541
                       SWAP ;
542
                       UNPAIR ;
543
                       SWAP ;
544
                       UNPAIR ;
545
                       SWAP ;
546
                       CAR ;
547
                       PUSH nat 0 ;
548
                       SWAP ;
549
                       PAIR ;
550
                       SWAP ;
551
                       PAIR ;
552
                       SWAP ;
553
                       PAIR ;
554
                       PAIR ;
555
                       SWAP }
556
                     { IF_LEFT
557
                         { SWAP ;
558
                           DUP ;
559
                           DUG 2 ;
560
                           GET 5 ;
561
                           SENDER ;
562
                           COMPARE ;
563
                           EQ ;
564
                           IF {} { PUSH string "Invalid User" ; FAILWITH } ;
565
                           PUSH nat 6 ;
566
                           DUP 3 ;
567
                           CAR ;
568
                           GET 6 ;
569
                           COMPARE ;
570
                           EQ ;
571
                           IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
572
                           NIL address ;
573
                           DUP 3 ;
574
                           GET 3 ;
575
                           CDR ;
576
                           ITER { CAR ; CONS } ;
577
                           NIL address ;
578
                           SWAP ;
579
                           ITER { CONS } ;
580
                           SIZE ;
581
                           NIL address ;
582
                           DUP 4 ;
583
                           CAR ;
584
                           CAR ;
585
                           CAR ;
586
                           ITER { CONS } ;
587
                           NIL address ;
588
                           SWAP ;
589
                           ITER { CONS } ;
590
                           SIZE ;
591
                           COMPARE ;
592
                           EQ ;
593
                           IF {} { PUSH string "Not everyone has voted" ; FAILWITH } ;
594
                           DUP ;
595
                           CAR ;
596
                           CAR ;
597
                           CONTRACT %changeUnstakeFee (pair (pair nat nat)
598
                                                            (pair nat nat)) ;
599
                           IF_NONE { PUSH int 814 ; FAILWITH } {} ;
600
                           NIL operation ;
601
                           SWAP ;
602
                           PUSH mutez 0 ;
603
                           DIG 3 ;
604
                           DUP ;
605
                           GET 6 ;
606
                           SWAP ;
607
                           DUP ;
608
                           DUG 5 ;
609
                           GET 5 ;
610
                           PAIR ;
611
                           DIG 4 ;
612
                           DUP ;
613
                           GET 3 ;
614
                           SWAP ;
615
                           CAR ;
616
                           CDR ;
617
                           PAIR ;
618
                           PAIR ;
619
                           TRANSFER_TOKENS ;
620
                           CONS }
621
                         { DROP ;
622
                           DUP ;
623
                           GET 8 ;
624
                           IF {} { PUSH string " Callback in Progress" ; FAILWITH } ;
625
                           PUSH bool False ;
626
                           UPDATE 8 ;
627
                           DUP ;
628
                           GET 3 ;
629
                           CAR ;
630
                           CONTRACT %mint unit ;
631
                           IF_NONE { PUSH int 545 ; FAILWITH } {} ;
632
                           NIL operation ;
633
                           SWAP ;
634
                           PUSH mutez 0 ;
635
                           UNIT ;
636
                           TRANSFER_TOKENS ;
637
                           CONS ;
638
                           SWAP ;
639
                           DUP ;
640
                           DUG 2 ;
641
                           GET 3 ;
642
                           CAR ;
643
                           CONTRACT %getBalance (pair address (contract nat)) ;
644
                           IF_NONE { PUSH int 556 ; FAILWITH } {} ;
645
                           PUSH mutez 0 ;
646
                           SELF %deposit_callback ;
647
                           SELF_ADDRESS ;
648
                           PAIR ;
649
                           TRANSFER_TOKENS ;
650
                           CONS } } } } }
651
         { IF_LEFT
652
             { IF_LEFT
653
                 { IF_LEFT
654
                     { SWAP ;
655
                       DUP ;
656
                       DUG 2 ;
657
                       GET 5 ;
658
                       SENDER ;
659
                       COMPARE ;
660
                       EQ ;
661
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
662
                       PUSH nat 3 ;
663
                       DUP 3 ;
664
                       CAR ;
665
                       GET 6 ;
666
                       COMPARE ;
667
                       EQ ;
668
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
669
                       NIL address ;
670
                       DUP 3 ;
671
                       GET 3 ;
672
                       CDR ;
673
                       ITER { CAR ; CONS } ;
674
                       NIL address ;
675
                       SWAP ;
676
                       ITER { CONS } ;
677
                       SIZE ;
678
                       NIL address ;
679
                       DUP 4 ;
680
                       CAR ;
681
                       CAR ;
682
                       CAR ;
683
                       ITER { CONS } ;
684
                       NIL address ;
685
                       SWAP ;
686
                       ITER { CONS } ;
687
                       SIZE ;
688
                       COMPARE ;
689
                       EQ ;
690
                       IF {} { PUSH string "EveryOne hasn't voted" ; FAILWITH } ;
691
                       SWAP ;
692
                       UNPAIR ;
693
                       UNPAIR ;
694
                       CAR ;
695
                       DIG 3 ;
696
                       SWAP ;
697
                       PAIR ;
698
                       PAIR ;
699
                       SWAP ;
700
                       UNPAIR ;
701
                       CAR ;
702
                       EMPTY_MAP address bool ;
703
                       SWAP ;
704
                       PAIR ;
705
                       PAIR ;
706
                       SWAP ;
707
                       UNPAIR ;
708
                       SWAP ;
709
                       UNPAIR ;
710
                       SWAP ;
711
                       CAR ;
712
                       PUSH nat 0 ;
713
                       SWAP ;
714
                       PAIR ;
715
                       SWAP ;
716
                       PAIR ;
717
                       SWAP ;
718
                       PAIR ;
719
                       PAIR }
720
                     { SWAP ;
721
                       DUP ;
722
                       DUG 2 ;
723
                       GET 5 ;
724
                       SENDER ;
725
                       COMPARE ;
726
                       EQ ;
727
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
728
                       PUSH nat 4 ;
729
                       DUP 3 ;
730
                       CAR ;
731
                       GET 6 ;
732
                       COMPARE ;
733
                       EQ ;
734
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
735
                       NIL address ;
736
                       DUP 3 ;
737
                       GET 3 ;
738
                       CDR ;
739
                       ITER { CAR ; CONS } ;
740
                       NIL address ;
741
                       SWAP ;
742
                       ITER { CONS } ;
743
                       SIZE ;
744
                       NIL address ;
745
                       DUP 4 ;
746
                       CAR ;
747
                       CAR ;
748
                       CAR ;
749
                       ITER { CONS } ;
750
                       NIL address ;
751
                       SWAP ;
752
                       ITER { CONS } ;
753
                       SIZE ;
754
                       COMPARE ;
755
                       EQ ;
756
                       IF {} { PUSH string "EveryOne hasn't voted" ; FAILWITH } ;
757
                       SWAP ;
758
                       UNPAIR ;
759
                       UNPAIR ;
760
                       SWAP ;
761
                       CDR ;
762
                       DUP 4 ;
763
                       CAR ;
764
                       SWAP ;
765
                       CDR ;
766
                       DIG 4 ;
767
                       CDR ;
768
                       PAIR ;
769
                       SWAP ;
770
                       PAIR ;
771
                       SWAP ;
772
                       PAIR ;
773
                       SWAP ;
774
                       UNPAIR ;
775
                       CAR ;
776
                       EMPTY_MAP address bool ;
777
                       SWAP ;
778
                       PAIR ;
779
                       PAIR ;
780
                       SWAP ;
781
                       UNPAIR ;
782
                       SWAP ;
783
                       UNPAIR ;
784
                       SWAP ;
785
                       CAR ;
786
                       PUSH nat 0 ;
787
                       SWAP ;
788
                       PAIR ;
789
                       SWAP ;
790
                       PAIR ;
791
                       SWAP ;
792
                       PAIR ;
793
                       PAIR } ;
794
                   NIL operation }
795
                 { IF_LEFT
796
                     { SWAP ;
797
                       DUP ;
798
                       DUG 2 ;
799
                       GET 5 ;
800
                       SENDER ;
801
                       COMPARE ;
802
                       EQ ;
803
                       IF {} { PUSH string "Invalid Admin Sender" ; FAILWITH } ;
804
                       PUSH nat 1 ;
805
                       DUP 3 ;
806
                       CAR ;
807
                       GET 6 ;
808
                       COMPARE ;
809
                       EQ ;
810
                       IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
811
                       NIL address ;
812
                       DUP 3 ;
813
                       GET 3 ;
814
                       CDR ;
815
                       ITER { CAR ; CONS } ;
816
                       NIL address ;
817
                       SWAP ;
818
                       ITER { CONS } ;
819
                       SIZE ;
820
                       NIL address ;
821
                       DUP 4 ;
822
                       CAR ;
823
                       CAR ;
824
                       CAR ;
825
                       ITER { CONS } ;
826
                       NIL address ;
827
                       SWAP ;
828
                       ITER { CONS } ;
829
                       SIZE ;
830
                       COMPARE ;
831
                       EQ ;
832
                       IF {} { PUSH string "Not everyone has voted" ; FAILWITH } ;
833
                       NIL operation ;
834
                       DUP 3 ;
835
                       GET 3 ;
836
                       CAR ;
837
                       CONTRACT %mint unit ;
838
                       IF_NONE { PUSH int 577 ; FAILWITH } {} ;
839
                       PUSH mutez 0 ;
840
                       UNIT ;
841
                       TRANSFER_TOKENS ;
842
                       CONS ;
843
                       DUP 3 ;
844
                       GET 3 ;
845
                       CAR ;
846
                       CONTRACT %ModifyParameters nat ;
847
                       IF_NONE { PUSH int 587 ; FAILWITH } {} ;
848
                       PUSH mutez 0 ;
849
                       DIG 3 ;
850
                       TRANSFER_TOKENS ;
851
                       CONS ;
852
                       SWAP ;
853
                       UNPAIR ;
854
                       SWAP ;
855
                       UNPAIR ;
856
                       CAR ;
857
                       EMPTY_MAP address bool ;
858
                       SWAP ;
859
                       PAIR ;
860
                       PAIR ;
861
                       SWAP ;
862
                       UNPAIR ;
863
                       SWAP ;
864
                       UNPAIR ;
865
                       SWAP ;
866
                       CAR ;
867
                       PUSH nat 0 ;
868
                       SWAP ;
869
                       PAIR ;
870
                       SWAP ;
871
                       PAIR ;
872
                       SWAP ;
873
                       PAIR ;
874
                       PAIR ;
875
                       SWAP }
876
                     { IF_LEFT
877
                         { SWAP ;
878
                           DUP ;
879
                           DUG 2 ;
880
                           CAR ;
881
                           CAR ;
882
                           CAR ;
883
                           SENDER ;
884
                           MEM ;
885
                           IF {} { PUSH string "Invalid Sender" ; FAILWITH } ;
886
                           PUSH nat 0 ;
887
                           DUP 3 ;
888
                           CAR ;
889
                           GET 6 ;
890
                           COMPARE ;
891
                           EQ ;
892
                           IF
893
                             {}
894
                             { PUSH string "Voting Already in Progress" ; FAILWITH } ;
895
                           SWAP ;
896
                           UNPAIR ;
897
                           UNPAIR ;
898
                           SWAP ;
899
                           UNPAIR ;
900
                           SWAP ;
901
                           CAR ;
902
                           DIG 4 ;
903
                           SWAP ;
904
                           PAIR ;
905
                           SWAP ;
906
                           PAIR ;
907
                           SWAP ;
908
                           PAIR ;
909
                           SWAP ;
910
                           UNPAIR ;
911
                           UNPAIR ;
912
                           SWAP ;
913
                           PUSH (option bool) (Some True) ;
914
                           SENDER ;
915
                           UPDATE ;
916
                           SWAP ;
917
                           PAIR ;
918
                           PAIR ;
919
                           SWAP ;
920
                           PAIR ;
921
                           NIL operation }
922
                         { SWAP ;
923
                           DUP ;
924
                           DUG 2 ;
925
                           GET 5 ;
926
                           SENDER ;
927
                           COMPARE ;
928
                           EQ ;
929
                           IF {} { PUSH string "Invalid Admin " ; FAILWITH } ;
930
                           PUSH nat 2 ;
931
                           DUP 3 ;
932
                           CAR ;
933
                           GET 6 ;
934
                           COMPARE ;
935
                           EQ ;
936
                           IF {} { PUSH string "Invalid Operation Value" ; FAILWITH } ;
937
                           NIL address ;
938
                           DUP 3 ;
939
                           GET 3 ;
940
                           CDR ;
941
                           ITER { CAR ; CONS } ;
942
                           NIL address ;
943
                           SWAP ;
944
                           ITER { CONS } ;
945
                           SIZE ;
946
                           NIL address ;
947
                           DUP 4 ;
948
                           CAR ;
949
                           CAR ;
950
                           CAR ;
951
                           ITER { CONS } ;
952
                           NIL address ;
953
                           SWAP ;
954
                           ITER { CONS } ;
955
                           SIZE ;
956
                           COMPARE ;
957
                           EQ ;
958
                           IF {} { PUSH string "Not everyone has voted" ; FAILWITH } ;
959
                           NIL operation ;
960
                           DUP 3 ;
961
                           GET 3 ;
962
                           CAR ;
963
                           CONTRACT %setAdministrator address ;
964
                           IF_NONE { PUSH int 612 ; FAILWITH } {} ;
965
                           PUSH mutez 0 ;
966
                           DIG 3 ;
967
                           TRANSFER_TOKENS ;
968
                           CONS ;
969
                           SWAP ;
970
                           UNPAIR ;
971
                           SWAP ;
972
                           UNPAIR ;
973
                           CAR ;
974
                           EMPTY_MAP address bool ;
975
                           SWAP ;
976
                           PAIR ;
977
                           PAIR ;
978
                           SWAP ;
979
                           UNPAIR ;
980
                           SWAP ;
981
                           UNPAIR ;
982
                           SWAP ;
983
                           CAR ;
984
                           PUSH nat 0 ;
985
                           SWAP ;
986
                           PAIR ;
987
                           SWAP ;
988
                           PAIR ;
989
                           SWAP ;
990
                           PAIR ;
991
                           PAIR ;
992
                           SWAP } } } }
993
             { IF_LEFT
994
                 { IF_LEFT
995
                     { SWAP ;
996
                       DUP ;
997
                       DUG 2 ;
998
                       CAR ;
999
                       CAR ;
1000
                       CAR ;
1001
                       SENDER ;
1002
                       MEM ;
1003
                       IF {} { PUSH string "Invalid Sender" ; FAILWITH } ;
1004
                       SWAP ;
1005
                       DUP ;
1006
                       DUG 2 ;
1007
                       CAR ;
1008
                       GET 6 ;
1009
                       SWAP ;
1010
                       DUP ;
1011
                       DUG 2 ;
1012
                       CAR ;
1013
                       COMPARE ;
1014
                       EQ ;
1015
                       IF {} { PUSH string "Invalid Vote" ; FAILWITH } ;
1016
                       CDR ;
1017
                       PUSH nat 1 ;
1018
                       COMPARE ;
1019
                       EQ ;
1020
                       IF
1021
                         { UNPAIR ;
1022
                           SWAP ;
1023
                           UNPAIR ;
1024
                           UNPAIR ;
1025
                           SWAP ;
1026
                           PUSH (option bool) (Some True) ;
1027
                           SENDER ;
1028
                           UPDATE ;
1029
                           SWAP ;
1030
                           PAIR ;
1031
                           PAIR ;
1032
                           SWAP ;
1033
                           PAIR }
1034
                         {} }
1035
                     { DROP ;
1036
                       DUP ;
1037
                       CAR ;
1038
                       CAR ;
1039
                       CAR ;
1040
                       SENDER ;
1041
                       MEM ;
1042
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
1043
                       UNPAIR ;
1044
                       SWAP ;
1045
                       UNPAIR ;
1046
                       CAR ;
1047
                       EMPTY_MAP address bool ;
1048
                       SWAP ;
1049
                       PAIR ;
1050
                       PAIR ;
1051
                       SWAP ;
1052
                       UNPAIR ;
1053
                       SWAP ;
1054
                       UNPAIR ;
1055
                       SWAP ;
1056
                       CAR ;
1057
                       PUSH nat 0 ;
1058
                       SWAP ;
1059
                       PAIR ;
1060
                       SWAP ;
1061
                       PAIR ;
1062
                       SWAP ;
1063
                       PAIR ;
1064
                       PAIR } ;
1065
                   NIL operation }
1066
                 { IF_LEFT
1067
                     { SWAP ;
1068
                       DUP ;
1069
                       DUG 2 ;
1070
                       GET 5 ;
1071
                       SENDER ;
1072
                       COMPARE ;
1073
                       EQ ;
1074
                       IF {} { PUSH string "Invalid User" ; FAILWITH } ;
1075
                       SWAP ;
1076
                       DUP ;
1077
                       DUG 2 ;
1078
                       GET 3 ;
1079
                       CAR ;
1080
                       SWAP ;
1081
                       DUP ;
1082
                       DUG 2 ;
1083
                       CAR ;
1084
                       CAR ;
1085
                       COMPARE ;
1086
                       EQ ;
1087
                       IF
1088
                         { SWAP ;
1089
                           DUP ;
1090
                           DUG 2 ;
1091
                           SWAP ;
1092
                           DUP ;
1093
                           DUG 2 ;
1094
                           CAR ;
1095
                           CDR ;
1096
                           DIG 3 ;
1097
                           GET 7 ;
1098
                           SUB ;
1099
                           ISNAT ;
1100
                           IF_NONE { PUSH int 659 ; FAILWITH } {} ;
1101
                           UPDATE 7 ;
1102
                           SWAP ;
1103
                           NIL operation ;
1104
                           DUP 3 ;
1105
                           GET 3 ;
1106
                           CAR ;
1107
                           CONTRACT %transfer (pair address (pair address nat)) ;
1108
                           IF_NONE { PUSH int 720 ; FAILWITH } {} ;
1109
                           PUSH mutez 0 ;
1110
                           DIG 3 ;
1111
                           CAR ;
1112
                           CDR ;
1113
                           SENDER ;
1114
                           SELF_ADDRESS ;
1115
                           PAIR 3 ;
1116
                           TRANSFER_TOKENS ;
1117
                           CONS }
1118
                         { SWAP ;
1119
                           DUP ;
1120
                           DUG 2 ;
1121
                           CAR ;
1122
                           GET 5 ;
1123
                           SWAP ;
1124
                           DUP ;
1125
                           DUG 2 ;
1126
                           CAR ;
1127
                           CDR ;
1128
                           EDIV ;
1129
                           IF_NONE { PUSH int 665 ; FAILWITH } { CAR } ;
1130
                           DUP ;
1131
                           DUP 3 ;
1132
                           CAR ;
1133
                           CDR ;
1134
                           SUB ;
1135
                           ISNAT ;
1136
                           IF_NONE { PUSH int 667 ; FAILWITH } {} ;
1137
                           PUSH nat 1 ;
1138
                           DUP 4 ;
1139
                           GET 4 ;
1140
                           COMPARE ;
1141
                           EQ ;
1142
                           IF
1143
                             { NIL operation ;
1144
                               DUP 4 ;
1145
                               CAR ;
1146
                               CAR ;
1147
                               CONTRACT %transfer (list (pair address
1148
                                                             (list (pair address
1149
                                                                        (pair nat nat))))) ;
1150
                               IF_NONE { PUSH int 705 ; FAILWITH } {} ;
1151
                               PUSH mutez 0 ;
1152
                               NIL (pair address (list (pair address (pair nat nat)))) ;
1153
                               NIL (pair address (pair nat nat)) ;
1154
                               DIG 5 ;
1155
                               DUP 8 ;
1156
                               GET 3 ;
1157
                               SENDER ;
1158
                               PAIR 3 ;
1159
                               CONS ;
1160
                               SELF_ADDRESS ;
1161
                               PAIR ;
1162
                               CONS ;
1163
                               TRANSFER_TOKENS ;
1164
                               CONS ;
1165
                               DUP 3 ;
1166
                               CAR ;
1167
                               CAR ;
1168
                               CONTRACT %transfer (list (pair address
1169
                                                             (list (pair address
1170
                                                                        (pair nat nat))))) ;
1171
                               IF_NONE { PUSH int 705 ; FAILWITH } {} ;
1172
                               PUSH mutez 0 ;
1173
                               NIL (pair address (list (pair address (pair nat nat)))) ;
1174
                               NIL (pair address (pair nat nat)) ;
1175
                               DIG 5 ;
1176
                               DIG 6 ;
1177
                               GET 3 ;
1178
                               DUP 8 ;
1179
                               CAR ;
1180
                               CAR ;
1181
                               CDR ;
1182
                               PAIR 3 ;
1183
                               CONS ;
1184
                               SELF_ADDRESS ;
1185
                               PAIR ;
1186
                               CONS ;
1187
                               TRANSFER_TOKENS ;
1188
                               CONS }
1189
                             { NIL operation ;
1190
                               DUP 4 ;
1191
                               CAR ;
1192
                               CAR ;
1193
                               CONTRACT %transfer (pair address (pair address nat)) ;
1194
                               IF_NONE { PUSH int 720 ; FAILWITH } {} ;
1195
                               PUSH mutez 0 ;
1196
                               DIG 3 ;
1197
                               SENDER ;
1198
                               SELF_ADDRESS ;
1199
                               PAIR 3 ;
1200
                               TRANSFER_TOKENS ;
1201
                               CONS ;
1202
                               DIG 2 ;
1203
                               CAR ;
1204
                               CAR ;
1205
                               CONTRACT %transfer (pair address (pair address nat)) ;
1206
                               IF_NONE { PUSH int 720 ; FAILWITH } {} ;
1207
                               PUSH mutez 0 ;
1208
                               DIG 3 ;
1209
                               DUP 5 ;
1210
                               CAR ;
1211
                               CAR ;
1212
                               CDR ;
1213
                               SELF_ADDRESS ;
1214
                               PAIR 3 ;
1215
                               TRANSFER_TOKENS ;
1216
                               CONS } } }
1217
                     { IF_LEFT
1218
                         { DROP ;
1219
                           DUP ;
1220
                           GET 8 ;
1221
                           IF {} { PUSH string " Callback in Progress" ; FAILWITH } ;
1222
                           PUSH bool False ;
1223
                           UPDATE 8 ;
1224
                           DUP ;
1225
                           GET 3 ;
1226
                           CAR ;
1227
                           CONTRACT %getBalance (pair address (contract nat)) ;
1228
                           IF_NONE { PUSH int 631 ; FAILWITH } {} ;
1229
                           NIL operation ;
1230
                           SWAP ;
1231
                           PUSH mutez 0 ;
1232
                           SELF %deposit_callback ;
1233
                           SELF_ADDRESS ;
1234
                           PAIR ;
1235
                           TRANSFER_TOKENS ;
1236
                           CONS }
1237
                         { SWAP ;
1238
                           DUP ;
1239
                           DUG 2 ;
1240
                           GET 3 ;
1241
                           CAR ;
1242
                           SENDER ;
1243
                           COMPARE ;
1244
                           EQ ;
1245
                           IF
1246
                             {}
1247
                             { PUSH string "Sender is not Token Contract" ; FAILWITH } ;
1248
                           UPDATE 7 ;
1249
                           PUSH bool True ;
1250
                           UPDATE 8 ;
1251
                           NIL operation } } } } } ;
1252
       NIL operation ;
1253
       SWAP ;
1254
       ITER { CONS } ;
1255
       PAIR }