BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • sDAO Gaming Hall v2
FA2Ledger
operations (1)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
750
1734
 
1
parameter (or
2
            (or
3
              (or
4
                (or
5
                  (pair %add_Game (bytes %payout)
6
                                  (pair (bytes %gameplay) (nat %guess_limit)))
7
                  (or %admin (or (unit %confirm_admin) (bool %pause))
8
                             (address %set_admin)))
9
                (or
10
                  (or %assets
11
                    (or
12
                      (pair %balance_of
13
                        (list %requests (pair (address %owner) (nat %token_id)))
14
                        (contract %callback (list (pair
15
                                                  (pair %request (address %owner)
16
                                                                 (nat %token_id))
17
                                                  (nat %balance)))))
18
                      (list %transfer (pair (address %from_)
19
                                           (list %txs (pair (address %to_)
20
                                                           (pair (nat %token_id)
21
                                                                 (nat %amount)))))))
22
                    (list %update_operators (or
23
                                             (pair %add_operator (address %owner)
24
                                                                 (pair
25
                                                                   (address %operator)
26
                                                                   (nat %token_id)))
27
                                             (pair %remove_operator (address %owner)
28
                                                                    (pair
29
                                                                      (address %operator)
30
                                                                      (nat %token_id))))))
31
                  (nat %cancel_Bet)))
32
              (or
33
                (or (nat %disable_Game)
34
                    (pair %divest_Shares
35
                      (pair %bankroll_currency (address %fa2_address)
36
                                               (option %token_id nat))
37
                      (nat %amt)))
38
                (or
39
                  (pair %invest
40
                    (pair %bankroll_currency (address %fa2_address)
41
                                             (option %token_id nat))
42
                    (nat %amt))
43
                  (pair %make_Bet
44
                    (pair %game_currency (address %fa2_address) (option %token_id nat))
45
                    (pair (nat %game_id) (pair (nat %bet) (list %guess nat)))))))
46
            (or
47
              (or
48
                (or (pair %resolve_Bet (nat %game_id) (bytes %revealed_secret))
49
                    (address %set_GP))
50
                (or (nat %set_GPCutoff) (nat %set_InvestFee)))
51
              (nat %set_MaxPayout)));
52
storage (pair
53
          (pair %assets
54
            (pair (big_map %ledger (pair address nat) nat)
55
                  (big_map %operators (pair address (pair address nat)) unit))
56
            (pair
57
              (big_map %token_metadata nat
58
                                       (pair (nat %token_id)
59
                                             (map %token_info string bytes)))
60
              (big_map %token_total_supply nat nat)))
61
          (pair (big_map %metadata string bytes)
62
                (pair
63
                  (option %pauseable_admin (pair (pair (address %admin) (bool %paused))
64
                                                (option %pending_admin address)))
65
                  (pair
66
                    (big_map %game_info nat
67
                                        (pair (nat %game_id)
68
                                              (pair
69
                                                (pair %game_currency
70
                                                  (address %fa2_address)
71
                                                  (option %token_id nat))
72
                                                (pair
73
                                                  (or %stage (unit %game_Resolved)
74
                                                             (unit %maker_Committed))
75
                                                  (pair (address %maker)
76
                                                        (pair (option %house_hash bytes)
77
                                                              (pair
78
                                                                (timestamp %start_time)
79
                                                                (pair (nat %bet)
80
                                                                      (pair
81
                                                                        (list %guess nat)
82
                                                                        (pair
83
                                                                          (nat %payout)
84
                                                                          (pair
85
                                                                            (option %ended timestamp)
86
                                                                            (pair
87
                                                                              (option %winner bool)
88
                                                                              (pair
89
                                                                                (option %result nat)
90
                                                                                (bool %notify))))))))))))))
91
                    (pair
92
                      (big_map %game_code nat
93
                                          (pair (nat %game_id)
94
                                                (pair (bool %playable)
95
                                                      (pair (bytes %payout_calc_lambda)
96
                                                            (pair
97
                                                              (bytes %gameplay_lambda)
98
                                                              (nat %guess_limit))))))
99
                      (pair
100
                        (big_map %bankroll_ledger
101
                          (pair (address %fa2_address) (option %token_id nat))
102
                          (pair
103
                            (pair %game_currency (address %fa2_address)
104
                                                 (option %token_id nat))
105
                            (pair
106
                              (pair %share_currency (address %fa2_address)
107
                                                    (option %token_id nat))
108
                              (pair (nat %total_bankroll)
109
                                    (pair (nat %total_vbankroll)
110
                                          (nat %total_shares_issued))))))
111
                        (pair (nat %current_game_id)
112
                              (pair (nat %next_share_token_id)
113
                                    (pair (nat %next_game_id)
114
                                          (pair (address %house_wallet)
115
                                                (pair (address %gp_core)
116
                                                      (pair (nat %gp_cutoff)
117
                                                            (pair (nat %game_accuracy)
118
                                                                  (pair
119
                                                                    (nat %invest_fee)
120
                                                                    (nat %max_payout)))))))))))))));
121
code { LAMBDA
122
         (option (pair (pair address bool) (option address)))
123
         unit
124
         { IF_NONE
125
             { UNIT }
126
             { CAR ;
127
               CAR ;
128
               SENDER ;
129
               COMPARE ;
130
               NEQ ;
131
               IF { PUSH string "NOT_AN_ADMIN" ; FAILWITH } { UNIT } } } ;
132
       LAMBDA
133
         (option (pair (pair address bool) (option address)))
134
         unit
135
         { IF_NONE
136
             { UNIT }
137
             { CAR ; CDR ; IF { PUSH string "PAUSED" ; FAILWITH } { UNIT } } } ;
138
       PUSH string "FA2_TOKEN_UNDEFINED" ;
139
       PUSH string "FA2_INSUFFICIENT_BALANCE" ;
140
       LAMBDA
141
         (pair (pair address nat) (big_map (pair address nat) nat))
142
         nat
143
         { UNPAIR ; GET ; IF_NONE { PUSH nat 0 } {} } ;
144
       DUP ;
145
       LAMBDA
146
         (pair (lambda (pair (pair address nat) (big_map (pair address nat) nat)) nat)
147
               (pair (pair address nat) (pair nat (big_map (pair address nat) nat))))
148
         (big_map (pair address nat) nat)
149
         { UNPAIR ;
150
           SWAP ;
151
           UNPAIR ;
152
           UNPAIR ;
153
           DIG 2 ;
154
           UNPAIR ;
155
           DIG 3 ;
156
           DIG 3 ;
157
           PAIR ;
158
           DUP 3 ;
159
           SWAP ;
160
           DUP ;
161
           DUG 2 ;
162
           PAIR ;
163
           DIG 4 ;
164
           SWAP ;
165
           EXEC ;
166
           DIG 2 ;
167
           ADD ;
168
           PUSH nat 0 ;
169
           SWAP ;
170
           DUP ;
171
           DUG 2 ;
172
           COMPARE ;
173
           EQ ;
174
           IF
175
             { DROP ; NONE nat ; SWAP ; UPDATE }
176
             { DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } } ;
177
       SWAP ;
178
       APPLY ;
179
       DUP 3 ;
180
       DUP 3 ;
181
       PAIR ;
182
       LAMBDA
183
         (pair
184
           (pair (lambda (pair (pair address nat) (big_map (pair address nat) nat)) nat)
185
                 string)
186
           (pair (pair address nat) (pair nat (big_map (pair address nat) nat))))
187
         (big_map (pair address nat) nat)
188
         { UNPAIR ;
189
           UNPAIR ;
190
           DIG 2 ;
191
           UNPAIR ;
192
           UNPAIR ;
193
           DIG 2 ;
194
           UNPAIR ;
195
           DIG 3 ;
196
           DIG 3 ;
197
           PAIR ;
198
           DUP 3 ;
199
           SWAP ;
200
           DUP ;
201
           DUG 2 ;
202
           PAIR ;
203
           DIG 4 ;
204
           SWAP ;
205
           EXEC ;
206
           DIG 2 ;
207
           SWAP ;
208
           SUB ;
209
           ISNAT ;
210
           IF_NONE
211
             { DROP 2 ; FAILWITH }
212
             { DIG 3 ;
213
               DROP ;
214
               PUSH nat 0 ;
215
               SWAP ;
216
               DUP ;
217
               DUG 2 ;
218
               COMPARE ;
219
               EQ ;
220
               IF
221
                 { DROP ; NONE nat ; SWAP ; UPDATE }
222
                 { DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } } } ;
223
       SWAP ;
224
       APPLY ;
225
       LAMBDA
226
         (pair (pair address address) (pair nat (pair address (option nat))))
227
         operation
228
         { UNPAIR ;
229
           UNPAIR ;
230
           DIG 2 ;
231
           UNPAIR ;
232
           SWAP ;
233
           DUP ;
234
           DUG 2 ;
235
           CDR ;
236
           IF_NONE
237
             { SWAP ;
238
               CAR ;
239
               CONTRACT %transfer (pair (address %from)
240
                                        (pair (address %to) (nat %value))) ;
241
               IF_NONE { PUSH string "Invalid FA1.2 Address" ; FAILWITH } {} ;
242
               PUSH mutez 0 ;
243
               DIG 3 ;
244
               DIG 4 ;
245
               DIG 4 ;
246
               SWAP ;
247
               PAIR ;
248
               SWAP ;
249
               PAIR ;
250
               TRANSFER_TOKENS }
251
             { DROP ;
252
               SWAP ;
253
               DUP ;
254
               DUG 2 ;
255
               CDR ;
256
               IF_NONE { PUSH string "NO_ID" ; FAILWITH } {} ;
257
               DIG 2 ;
258
               CAR ;
259
               SWAP ;
260
               DIG 2 ;
261
               SWAP ;
262
               PAIR ;
263
               SWAP ;
264
               PAIR ;
265
               DUP ;
266
               CAR ;
267
               CONTRACT %transfer (list (pair (address %from_)
268
                                             (list %txs (pair (address %to_)
269
                                                             (pair (nat %token_id)
270
                                                                   (nat %amount)))))) ;
271
               IF_NONE { PUSH string "Invalid FA2 Address" ; FAILWITH } {} ;
272
               PUSH mutez 0 ;
273
               NIL (pair address (list (pair address (pair nat nat)))) ;
274
               DIG 4 ;
275
               NIL (pair address (pair nat nat)) ;
276
               DIG 6 ;
277
               DUP 7 ;
278
               CDR ;
279
               CAR ;
280
               DIG 7 ;
281
               CDR ;
282
               CDR ;
283
               SWAP ;
284
               PAIR ;
285
               SWAP ;
286
               PAIR ;
287
               CONS ;
288
               SWAP ;
289
               PAIR ;
290
               CONS ;
291
               TRANSFER_TOKENS } } ;
292
       LAMBDA
293
         (or unit unit)
294
         bool
295
         { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } ;
296
       LAMBDA
297
         (pair bool string)
298
         unit
299
         { UNPAIR ; NOT ; IF { FAILWITH } { DROP ; UNIT } } ;
300
       LAMBDA (list nat) nat { PUSH nat 0 ; SWAP ; ITER { DROP ; PUSH nat 1 ; ADD } } ;
301
       LAMBDA
302
         (pair nat
303
               (pair
304
                 (pair
305
                   (pair (big_map (pair address nat) nat)
306
                         (big_map (pair address (pair address nat)) unit))
307
                   (pair (big_map nat (pair nat (map string bytes))) (big_map nat nat)))
308
                 (pair (big_map string bytes)
309
                       (pair (option (pair (pair address bool) (option address)))
310
                             (pair
311
                               (big_map nat
312
                                        (pair nat
313
                                              (pair (pair address (option nat))
314
                                                    (pair (or unit unit)
315
                                                          (pair address
316
                                                                (pair (option bytes)
317
                                                                      (pair timestamp
318
                                                                            (pair nat
319
                                                                                  (pair
320
                                                                                    (list nat)
321
                                                                                    (pair
322
                                                                                      nat
323
                                                                                      (pair
324
                                                                                        (option timestamp)
325
                                                                                        (pair
326
                                                                                          (option bool)
327
                                                                                          (pair
328
                                                                                            (option nat)
329
                                                                                            bool)))))))))))))
330
                               (pair
331
                                 (big_map nat
332
                                          (pair nat
333
                                                (pair bool (pair bytes (pair bytes nat)))))
334
                                 (pair
335
                                   (big_map (pair address (option nat))
336
                                            (pair (pair address (option nat))
337
                                                  (pair (pair address (option nat))
338
                                                        (pair nat (pair nat nat)))))
339
                                   (pair nat
340
                                         (pair nat
341
                                               (pair nat
342
                                                     (pair address
343
                                                           (pair address
344
                                                                 (pair nat
345
                                                                       (pair nat
346
                                                                             (pair nat
347
                                                                                   nat)))))))))))))))
348
         (pair nat (pair bool (pair bytes (pair bytes nat))))
349
         { UNPAIR ;
350
           SWAP ;
351
           GET 9 ;
352
           SWAP ;
353
           GET ;
354
           IF_NONE
355
             { PUSH string "NO_GAME" ; FAILWITH }
356
             { PUSH bool True ;
357
               SWAP ;
358
               DUP ;
359
               DUG 2 ;
360
               GET 3 ;
361
               COMPARE ;
362
               EQ ;
363
               IF {} { DROP ; PUSH string "NO_GAME" ; FAILWITH } } } ;
364
       LAMBDA
365
         (pair nat
366
               (pair
367
                 (pair
368
                   (pair (big_map (pair address nat) nat)
369
                         (big_map (pair address (pair address nat)) unit))
370
                   (pair (big_map nat (pair nat (map string bytes))) (big_map nat nat)))
371
                 (pair (big_map string bytes)
372
                       (pair (option (pair (pair address bool) (option address)))
373
                             (pair
374
                               (big_map nat
375
                                        (pair nat
376
                                              (pair (pair address (option nat))
377
                                                    (pair (or unit unit)
378
                                                          (pair address
379
                                                                (pair (option bytes)
380
                                                                      (pair timestamp
381
                                                                            (pair nat
382
                                                                                  (pair
383
                                                                                    (list nat)
384
                                                                                    (pair
385
                                                                                      nat
386
                                                                                      (pair
387
                                                                                        (option timestamp)
388
                                                                                        (pair
389
                                                                                          (option bool)
390
                                                                                          (pair
391
                                                                                            (option nat)
392
                                                                                            bool)))))))))))))
393
                               (pair
394
                                 (big_map nat
395
                                          (pair nat
396
                                                (pair bool (pair bytes (pair bytes nat)))))
397
                                 (pair
398
                                   (big_map (pair address (option nat))
399
                                            (pair (pair address (option nat))
400
                                                  (pair (pair address (option nat))
401
                                                        (pair nat (pair nat nat)))))
402
                                   (pair nat
403
                                         (pair nat
404
                                               (pair nat
405
                                                     (pair address
406
                                                           (pair address
407
                                                                 (pair nat
408
                                                                       (pair nat
409
                                                                             (pair nat
410
                                                                                   nat)))))))))))))))
411
         (pair nat
412
               (pair (pair address (option nat))
413
                     (pair (or unit unit)
414
                           (pair address
415
                                 (pair (option bytes)
416
                                       (pair timestamp
417
                                             (pair nat
418
                                                   (pair (list nat)
419
                                                         (pair nat
420
                                                               (pair (option timestamp)
421
                                                                     (pair (option bool)
422
                                                                           (pair
423
                                                                             (option nat)
424
                                                                             bool))))))))))))
425
         { UNPAIR ; SWAP ; GET 7 ; SWAP ; GET ; IF_NONE { PUSH string "GAME_MISSING" ; FAILWITH } {} } ;
426
       LAMBDA
427
         (pair (pair address (option nat))
428
               (pair
429
                 (pair
430
                   (pair (big_map (pair address nat) nat)
431
                         (big_map (pair address (pair address nat)) unit))
432
                   (pair (big_map nat (pair nat (map string bytes))) (big_map nat nat)))
433
                 (pair (big_map string bytes)
434
                       (pair (option (pair (pair address bool) (option address)))
435
                             (pair
436
                               (big_map nat
437
                                        (pair nat
438
                                              (pair (pair address (option nat))
439
                                                    (pair (or unit unit)
440
                                                          (pair address
441
                                                                (pair (option bytes)
442
                                                                      (pair timestamp
443
                                                                            (pair nat
444
                                                                                  (pair
445
                                                                                    (list nat)
446
                                                                                    (pair
447
                                                                                      nat
448
                                                                                      (pair
449
                                                                                        (option timestamp)
450
                                                                                        (pair
451
                                                                                          (option bool)
452
                                                                                          (pair
453
                                                                                            (option nat)
454
                                                                                            bool)))))))))))))
455
                               (pair
456
                                 (big_map nat
457
                                          (pair nat
458
                                                (pair bool (pair bytes (pair bytes nat)))))
459
                                 (pair
460
                                   (big_map (pair address (option nat))
461
                                            (pair (pair address (option nat))
462
                                                  (pair (pair address (option nat))
463
                                                        (pair nat (pair nat nat)))))
464
                                   (pair nat
465
                                         (pair nat
466
                                               (pair nat
467
                                                     (pair address
468
                                                           (pair address
469
                                                                 (pair nat
470
                                                                       (pair nat
471
                                                                             (pair nat
472
                                                                                   nat)))))))))))))))
473
         (pair (pair address (option nat))
474
               (pair (pair address (option nat)) (pair nat (pair nat nat))))
475
         { UNPAIR ;
476
           SWAP ;
477
           GET 11 ;
478
           SWAP ;
479
           GET ;
480
           IF_NONE { PUSH string "BANKROLL_MISSING" ; FAILWITH } {} } ;
481
       DIG 14 ;
482
       UNPAIR ;
483
       PUSH string "Amount must be 0mutez" ;
484
       PUSH mutez 0 ;
485
       AMOUNT ;
486
       COMPARE ;
487
       EQ ;
488
       PAIR ;
489
       DUP 8 ;
490
       SWAP ;
491
       EXEC ;
492
       DROP ;
493
       SELF_ADDRESS ;
494
       SWAP ;
495
       IF_LEFT
496
         { IF_LEFT
497
             { DIG 5 ;
498
               DIG 6 ;
499
               DIG 13 ;
500
               DIG 15 ;
501
               DROP 4 ;
502
               IF_LEFT
503
                 { DIG 3 ;
504
                   DIG 4 ;
505
                   DIG 5 ;
506
                   DIG 6 ;
507
                   DIG 7 ;
508
                   DIG 8 ;
509
                   DIG 9 ;
510
                   DIG 10 ;
511
                   DIG 11 ;
512
                   DROP 9 ;
513
                   IF_LEFT
514
                     { DIG 2 ;
515
                       SWAP ;
516
                       DIG 2 ;
517
                       DROP ;
518
                       SWAP ;
519
                       DUP ;
520
                       DUG 2 ;
521
                       GET 5 ;
522
                       DIG 3 ;
523
                       SWAP ;
524
                       EXEC ;
525
                       DROP ;
526
                       SWAP ;
527
                       DUP ;
528
                       DUP ;
529
                       DUG 3 ;
530
                       GET 9 ;
531
                       DUP 4 ;
532
                       GET 17 ;
533
                       PUSH bool True ;
534
                       DUP 5 ;
535
                       CAR ;
536
                       DUP 6 ;
537
                       GET 3 ;
538
                       DIG 6 ;
539
                       GET 4 ;
540
                       SWAP ;
541
                       PAIR ;
542
                       SWAP ;
543
                       PAIR ;
544
                       SWAP ;
545
                       PAIR ;
546
                       SWAP ;
547
                       PAIR ;
548
                       SOME ;
549
                       DUP 4 ;
550
                       GET 17 ;
551
                       UPDATE ;
552
                       UPDATE 9 ;
553
                       PUSH nat 1 ;
554
                       DIG 2 ;
555
                       GET 17 ;
556
                       ADD ;
557
                       UPDATE 17 ;
558
                       NIL operation ;
559
                       PAIR }
560
                     { SWAP ;
561
                       DROP ;
562
                       SWAP ;
563
                       DUP ;
564
                       DUG 2 ;
565
                       GET 5 ;
566
                       SWAP ;
567
                       IF_LEFT
568
                         { IF_LEFT
569
                             { DIG 3 ;
570
                               DROP 2 ;
571
                               IF_NONE
572
                                 { PUSH string "NO_ADMIN_CAPABILITIES_CONFIGURED" ;
573
                                   FAILWITH }
574
                                 { DUP ;
575
                                   CDR ;
576
                                   IF_NONE
577
                                     { DROP ; PUSH string "NO_PENDING_ADMIN" ; FAILWITH }
578
                                     { SENDER ;
579
                                       COMPARE ;
580
                                       EQ ;
581
                                       IF
582
                                         { NONE address ; SWAP ; CAR ; CDR ; SENDER ; PAIR ; PAIR ; SOME }
583
                                         { DROP ;
584
                                           PUSH string "NOT_A_PENDING_ADMIN" ;
585
                                           FAILWITH } } } ;
586
                               NIL operation ;
587
                               PAIR }
588
                             { SWAP ;
589
                               DUP ;
590
                               DUG 2 ;
591
                               DIG 4 ;
592
                               SWAP ;
593
                               EXEC ;
594
                               DROP ;
595
                               SWAP ;
596
                               IF_NONE
597
                                 { DROP ;
598
                                   PUSH string "NO_ADMIN_CAPABILITIES_CONFIGURED" ;
599
                                   FAILWITH }
600
                                 { DUP ; CDR ; DUG 2 ; CAR ; CAR ; PAIR ; PAIR ; SOME } ;
601
                               NIL operation ;
602
                               PAIR } }
603
                         { SWAP ;
604
                           DUP ;
605
                           DUG 2 ;
606
                           DIG 4 ;
607
                           SWAP ;
608
                           EXEC ;
609
                           DROP ;
610
                           SWAP ;
611
                           IF_NONE
612
                             { DROP ;
613
                               PUSH string "NO_ADMIN_CAPABILITIES_CONFIGURED" ;
614
                               FAILWITH }
615
                             { SWAP ; SOME ; SWAP ; CAR ; PAIR ; SOME } ;
616
                           NIL operation ;
617
                           PAIR } ;
618
                       UNPAIR ;
619
                       DUG 2 ;
620
                       UPDATE 5 ;
621
                       SWAP ;
622
                       PAIR } }
623
                 { DIG 12 ;
624
                   DROP ;
625
                   IF_LEFT
626
                     { SWAP ;
627
                       DIG 3 ;
628
                       DIG 4 ;
629
                       DIG 5 ;
630
                       DIG 6 ;
631
                       DIG 7 ;
632
                       DROP 6 ;
633
                       SWAP ;
634
                       DUP ;
635
                       DUG 2 ;
636
                       CAR ;
637
                       SWAP ;
638
                       IF_LEFT
639
                         { IF_LEFT
640
                             { DIG 3 ;
641
                               DIG 4 ;
642
                               DROP 2 ;
643
                               SWAP ;
644
                               DUP ;
645
                               DUG 2 ;
646
                               CDR ;
647
                               CAR ;
648
                               DUP 3 ;
649
                               CAR ;
650
                               CAR ;
651
                               DIG 2 ;
652
                               DUP ;
653
                               CAR ;
654
                               MAP { DUP 4 ;
655
                                     SWAP ;
656
                                     DUP ;
657
                                     DUG 2 ;
658
                                     CDR ;
659
                                     MEM ;
660
                                     NOT ;
661
                                     IF
662
                                       { DROP ; DUP 7 ; FAILWITH }
663
                                       { DUP 3 ;
664
                                         SWAP ;
665
                                         DUP ;
666
                                         DUG 2 ;
667
                                         CDR ;
668
                                         DUP 3 ;
669
                                         CAR ;
670
                                         PAIR ;
671
                                         PAIR ;
672
                                         DUP 8 ;
673
                                         SWAP ;
674
                                         EXEC ;
675
                                         SWAP ;
676
                                         PAIR } } ;
677
                               DIG 2 ;
678
                               DIG 3 ;
679
                               DIG 6 ;
680
                               DIG 7 ;
681
                               DROP 4 ;
682
                               SWAP ;
683
                               CDR ;
684
                               PUSH mutez 0 ;
685
                               DIG 2 ;
686
                               TRANSFER_TOKENS ;
687
                               SWAP ;
688
                               NIL operation ;
689
                               DIG 2 ;
690
                               CONS ;
691
                               PAIR }
692
                             { DIG 5 ;
693
                               DROP ;
694
                               SWAP ;
695
                               DUP ;
696
                               DUG 2 ;
697
                               LAMBDA
698
                                 (pair (pair address address)
699
                                       (pair nat
700
                                             (big_map (pair address (pair address nat))
701
                                                      unit)))
702
                                 unit
703
                                 { UNPAIR ;
704
                                   UNPAIR ;
705
                                   DIG 2 ;
706
                                   UNPAIR ;
707
                                   DUP 4 ;
708
                                   DUP 4 ;
709
                                   COMPARE ;
710
                                   EQ ;
711
                                   IF
712
                                     { DROP 4 ; UNIT }
713
                                     { DIG 3 ;
714
                                       PAIR ;
715
                                       DIG 2 ;
716
                                       PAIR ;
717
                                       MEM ;
718
                                       IF
719
                                         { UNIT }
720
                                         { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } } } ;
721
                               DIG 2 ;
722
                               DUP 3 ;
723
                               CAR ;
724
                               CAR ;
725
                               SWAP ;
726
                               ITER { DUP ;
727
                                      DUG 2 ;
728
                                      CDR ;
729
                                      ITER { SWAP ;
730
                                             DUP 5 ;
731
                                             CDR ;
732
                                             CAR ;
733
                                             DUP 3 ;
734
                                             GET 3 ;
735
                                             MEM ;
736
                                             NOT ;
737
                                             IF
738
                                               { DROP 2 ; DUP 8 ; FAILWITH }
739
                                               { DUP 5 ;
740
                                                 CAR ;
741
                                                 CDR ;
742
                                                 DUP 3 ;
743
                                                 GET 3 ;
744
                                                 PAIR ;
745
                                                 SENDER ;
746
                                                 DUP 5 ;
747
                                                 CAR ;
748
                                                 PAIR ;
749
                                                 PAIR ;
750
                                                 DUP 5 ;
751
                                                 SWAP ;
752
                                                 EXEC ;
753
                                                 DROP ;
754
                                                 SWAP ;
755
                                                 DUP ;
756
                                                 DUG 2 ;
757
                                                 GET 4 ;
758
                                                 PAIR ;
759
                                                 SWAP ;
760
                                                 DUP ;
761
                                                 DUG 2 ;
762
                                                 GET 3 ;
763
                                                 DUP 4 ;
764
                                                 CAR ;
765
                                                 PAIR ;
766
                                                 PAIR ;
767
                                                 DUP 8 ;
768
                                                 SWAP ;
769
                                                 EXEC ;
770
                                                 SWAP ;
771
                                                 DUP ;
772
                                                 DUG 2 ;
773
                                                 GET 4 ;
774
                                                 PAIR ;
775
                                                 SWAP ;
776
                                                 DUP ;
777
                                                 DUG 2 ;
778
                                                 GET 3 ;
779
                                                 DIG 2 ;
780
                                                 CAR ;
781
                                                 PAIR ;
782
                                                 PAIR ;
783
                                                 DUP 8 ;
784
                                                 SWAP ;
785
                                                 EXEC } } ;
786
                                      SWAP ;
787
                                      DROP } ;
788
                               SWAP ;
789
                               DIG 2 ;
790
                               DIG 5 ;
791
                               DIG 6 ;
792
                               DIG 7 ;
793
                               DROP 5 ;
794
                               SWAP ;
795
                               DUP ;
796
                               DUG 2 ;
797
                               CDR ;
798
                               DIG 2 ;
799
                               CAR ;
800
                               CDR ;
801
                               DIG 2 ;
802
                               PAIR ;
803
                               PAIR ;
804
                               NIL operation ;
805
                               PAIR } }
806
                         { DIG 3 ;
807
                           DIG 4 ;
808
                           DIG 5 ;
809
                           DIG 6 ;
810
                           DROP 4 ;
811
                           SWAP ;
812
                           DUP ;
813
                           DUG 2 ;
814
                           CAR ;
815
                           CDR ;
816
                           SWAP ;
817
                           SENDER ;
818
                           DUG 2 ;
819
                           ITER { SWAP ;
820
                                  DUP 3 ;
821
                                  DUP 3 ;
822
                                  IF_LEFT {} {} ;
823
                                  CAR ;
824
                                  COMPARE ;
825
                                  EQ ;
826
                                  IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
827
                                  SWAP ;
828
                                  IF_LEFT
829
                                    { SWAP ;
830
                                      UNIT ;
831
                                      SOME ;
832
                                      DUP 3 ;
833
                                      GET 4 ;
834
                                      DUP 4 ;
835
                                      GET 3 ;
836
                                      PAIR ;
837
                                      DIG 3 ;
838
                                      CAR ;
839
                                      PAIR ;
840
                                      UPDATE }
841
                                    { DUP ;
842
                                      DUG 2 ;
843
                                      GET 4 ;
844
                                      DUP 3 ;
845
                                      GET 3 ;
846
                                      PAIR ;
847
                                      DIG 2 ;
848
                                      CAR ;
849
                                      PAIR ;
850
                                      NONE unit ;
851
                                      SWAP ;
852
                                      UPDATE } } ;
853
                           SWAP ;
854
                           DROP ;
855
                           SWAP ;
856
                           DUP ;
857
                           DUG 2 ;
858
                           CDR ;
859
                           SWAP ;
860
                           DIG 2 ;
861
                           CAR ;
862
                           CAR ;
863
                           PAIR ;
864
                           PAIR ;
865
                           NIL operation ;
866
                           PAIR } ;
867
                       UNPAIR ;
868
                       DUG 2 ;
869
                       UPDATE 1 ;
870
                       SWAP ;
871
                       PAIR }
872
                     { DIG 8 ;
873
                       DIG 9 ;
874
                       DIG 10 ;
875
                       DIG 11 ;
876
                       DROP 4 ;
877
                       DIG 2 ;
878
                       SWAP ;
879
                       DIG 2 ;
880
                       PUSH string "NOT_HOUSE_WALLET" ;
881
                       DUP 4 ;
882
                       GET 19 ;
883
                       SENDER ;
884
                       COMPARE ;
885
                       EQ ;
886
                       PAIR ;
887
                       DIG 6 ;
888
                       SWAP ;
889
                       EXEC ;
890
                       DROP ;
891
                       DUP 3 ;
892
                       DUP 3 ;
893
                       PAIR ;
894
                       DIG 5 ;
895
                       SWAP ;
896
                       EXEC ;
897
                       DUP ;
898
                       GET 7 ;
899
                       SENDER ;
900
                       COMPARE ;
901
                       EQ ;
902
                       SWAP ;
903
                       DUP ;
904
                       DUG 2 ;
905
                       GET 5 ;
906
                       DIG 7 ;
907
                       SWAP ;
908
                       EXEC ;
909
                       AND ;
910
                       IF
911
                         { DUP ;
912
                           PUSH unit Unit ;
913
                           LEFT unit ;
914
                           UPDATE 5 ;
915
                           NOW ;
916
                           SOME ;
917
                           UPDATE 19 ;
918
                           DUP 5 ;
919
                           SWAP ;
920
                           DUP ;
921
                           DUG 2 ;
922
                           GET 3 ;
923
                           PAIR ;
924
                           DIG 6 ;
925
                           SWAP ;
926
                           EXEC ;
927
                           DUP ;
928
                           DUP 4 ;
929
                           GET 17 ;
930
                           DIG 2 ;
931
                           GET 7 ;
932
                           ADD ;
933
                           UPDATE 7 ;
934
                           DUP 3 ;
935
                           GET 3 ;
936
                           DIG 3 ;
937
                           GET 13 ;
938
                           PAIR ;
939
                           SENDER ;
940
                           DIG 4 ;
941
                           PAIR ;
942
                           PAIR ;
943
                           DIG 5 ;
944
                           SWAP ;
945
                           EXEC ;
946
                           DIG 4 ;
947
                           DUP ;
948
                           DUP ;
949
                           DUG 6 ;
950
                           GET 7 ;
951
                           DUP 5 ;
952
                           SOME ;
953
                           DIG 6 ;
954
                           UPDATE ;
955
                           UPDATE 7 ;
956
                           DIG 4 ;
957
                           GET 11 ;
958
                           DIG 3 ;
959
                           SOME ;
960
                           DIG 4 ;
961
                           GET 3 ;
962
                           UPDATE ;
963
                           UPDATE 11 ;
964
                           NIL operation ;
965
                           DIG 2 ;
966
                           CONS ;
967
                           PAIR }
968
                         { DROP 6 ; PUSH string "CANCEL_FAIL" ; FAILWITH } } } }
969
             { DIG 4 ;
970
               DIG 8 ;
971
               DIG 12 ;
972
               DROP 3 ;
973
               IF_LEFT
974
                 { DIG 5 ;
975
                   DIG 9 ;
976
                   DIG 12 ;
977
                   DROP 3 ;
978
                   IF_LEFT
979
                     { DIG 3 ;
980
                       DIG 5 ;
981
                       DIG 6 ;
982
                       DIG 7 ;
983
                       DIG 8 ;
984
                       DIG 9 ;
985
                       DROP 6 ;
986
                       DIG 2 ;
987
                       SWAP ;
988
                       DIG 2 ;
989
                       DROP ;
990
                       SWAP ;
991
                       DUP ;
992
                       DUG 2 ;
993
                       GET 5 ;
994
                       DIG 4 ;
995
                       SWAP ;
996
                       EXEC ;
997
                       DROP ;
998
                       SWAP ;
999
                       DUP ;
1000
                       DUG 2 ;
1001
                       SWAP ;
1002
                       DUP ;
1003
                       DUG 2 ;
1004
                       PAIR ;
1005
                       DIG 3 ;
1006
                       SWAP ;
1007
                       EXEC ;
1008
                       DIG 2 ;
1009
                       DUP ;
1010
                       GET 9 ;
1011
                       DIG 2 ;
1012
                       PUSH bool False ;
1013
                       UPDATE 3 ;
1014
                       SOME ;
1015
                       DIG 3 ;
1016
                       UPDATE ;
1017
                       UPDATE 9 ;
1018
                       NIL operation ;
1019
                       PAIR }
1020
                     { DIG 4 ;
1021
                       DIG 10 ;
1022
                       DROP 2 ;
1023
                       DIG 2 ;
1024
                       SWAP ;
1025
                       DUP ;
1026
                       DUG 2 ;
1027
                       CDR ;
1028
                       PAIR ;
1029
                       SWAP ;
1030
                       CAR ;
1031
                       DUG 2 ;
1032
                       UNPAIR ;
1033
                       PUSH string "AMT_TOO_LOW" ;
1034
                       PUSH nat 0 ;
1035
                       DUP 3 ;
1036
                       COMPARE ;
1037
                       GT ;
1038
                       PAIR ;
1039
                       DIG 6 ;
1040
                       SWAP ;
1041
                       EXEC ;
1042
                       DROP ;
1043
                       SWAP ;
1044
                       DUP ;
1045
                       DUG 2 ;
1046
                       DIG 4 ;
1047
                       PAIR ;
1048
                       DIG 4 ;
1049
                       SWAP ;
1050
                       EXEC ;
1051
                       PUSH nat 0 ;
1052
                       SWAP ;
1053
                       DUP ;
1054
                       DUG 2 ;
1055
                       GET 8 ;
1056
                       COMPARE ;
1057
                       EQ ;
1058
                       IF
1059
                         { PUSH string "NO_SHARES" ; FAILWITH }
1060
                         { PUSH int 0 ;
1061
                           DUP 3 ;
1062
                           DUP 3 ;
1063
                           GET 8 ;
1064
                           SUB ;
1065
                           COMPARE ;
1066
                           LT ;
1067
                           IF
1068
                             { PUSH string "AMT_TOO_HIGH" ; FAILWITH }
1069
                             { DUP ;
1070
                               GET 8 ;
1071
                               SWAP ;
1072
                               DUP ;
1073
                               DUG 2 ;
1074
                               GET 7 ;
1075
                               DUP 4 ;
1076
                               MUL ;
1077
                               EDIV ;
1078
                               IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1079
                               CAR } } ;
1080
                       DUP ;
1081
                       DUP 3 ;
1082
                       GET 7 ;
1083
                       SUB ;
1084
                       ISNAT ;
1085
                       IF_NONE { PUSH string "TOKENS_TOO_HIGH" ; FAILWITH } {} ;
1086
                       SWAP ;
1087
                       DUP ;
1088
                       DUG 2 ;
1089
                       DUP 4 ;
1090
                       GET 5 ;
1091
                       SUB ;
1092
                       ISNAT ;
1093
                       IF_NONE { PUSH string "TOKENS_TOO_HIGH" ; FAILWITH } {} ;
1094
                       DUP 5 ;
1095
                       DUP 5 ;
1096
                       GET 8 ;
1097
                       SUB ;
1098
                       ISNAT ;
1099
                       IF_NONE { PUSH string "SHARES_OVERFLOW" ; FAILWITH } {} ;
1100
                       DUP 5 ;
1101
                       CAR ;
1102
                       DIG 4 ;
1103
                       PAIR ;
1104
                       SENDER ;
1105
                       DIG 8 ;
1106
                       PAIR ;
1107
                       PAIR ;
1108
                       DIG 7 ;
1109
                       SWAP ;
1110
                       EXEC ;
1111
                       DUP 5 ;
1112
                       GET 3 ;
1113
                       CDR ;
1114
                       IF_NONE { PUSH string "NO_ID" ; FAILWITH } {} ;
1115
                       DUP 8 ;
1116
                       CAR ;
1117
                       NIL (pair address (pair nat nat)) ;
1118
                       SENDER ;
1119
                       DIG 3 ;
1120
                       DIG 9 ;
1121
                       SWAP ;
1122
                       PAIR ;
1123
                       SWAP ;
1124
                       PAIR ;
1125
                       CONS ;
1126
                       SWAP ;
1127
                       DUP ;
1128
                       DUG 2 ;
1129
                       CAR ;
1130
                       CAR ;
1131
                       SWAP ;
1132
                       DUP ;
1133
                       DUG 2 ;
1134
                       ITER { DUP ;
1135
                              DUG 2 ;
1136
                              GET 4 ;
1137
                              PAIR ;
1138
                              SWAP ;
1139
                              DUP ;
1140
                              DUG 2 ;
1141
                              GET 3 ;
1142
                              DIG 2 ;
1143
                              CAR ;
1144
                              PAIR ;
1145
                              PAIR ;
1146
                              DUP 10 ;
1147
                              SWAP ;
1148
                              EXEC } ;
1149
                       DIG 9 ;
1150
                       DROP ;
1151
                       DUP 3 ;
1152
                       CDR ;
1153
                       CDR ;
1154
                       DIG 2 ;
1155
                       ITER { SWAP ;
1156
                              DUP ;
1157
                              DUP 3 ;
1158
                              GET 3 ;
1159
                              GET ;
1160
                              IF_NONE
1161
                                { DROP 2 ; DUP 10 ; FAILWITH }
1162
                                { DUP 3 ;
1163
                                  GET 4 ;
1164
                                  SWAP ;
1165
                                  SUB ;
1166
                                  ISNAT ;
1167
                                  IF_NONE { DUP 11 ; FAILWITH } {} ;
1168
                                  SOME ;
1169
                                  DIG 2 ;
1170
                                  GET 3 ;
1171
                                  UPDATE } } ;
1172
                       DIG 9 ;
1173
                       DIG 10 ;
1174
                       DROP 2 ;
1175
                       DUP 3 ;
1176
                       CDR ;
1177
                       DIG 3 ;
1178
                       CAR ;
1179
                       CDR ;
1180
                       DIG 3 ;
1181
                       PAIR ;
1182
                       PAIR ;
1183
                       DUP ;
1184
                       DUG 2 ;
1185
                       CDR ;
1186
                       CAR ;
1187
                       PAIR ;
1188
                       SWAP ;
1189
                       CAR ;
1190
                       PAIR ;
1191
                       DIG 6 ;
1192
                       DUP ;
1193
                       GET 11 ;
1194
                       DUP 8 ;
1195
                       DIG 7 ;
1196
                       UPDATE 7 ;
1197
                       DIG 6 ;
1198
                       UPDATE 5 ;
1199
                       DIG 5 ;
1200
                       UPDATE 8 ;
1201
                       SOME ;
1202
                       DIG 5 ;
1203
                       CAR ;
1204
                       UPDATE ;
1205
                       UPDATE 11 ;
1206
                       SWAP ;
1207
                       UPDATE 1 ;
1208
                       NIL operation ;
1209
                       DIG 2 ;
1210
                       CONS ;
1211
                       PAIR } }
1212
                 { DIG 8 ;
1213
                   DIG 10 ;
1214
                   DIG 13 ;
1215
                   DROP 3 ;
1216
                   IF_LEFT
1217
                     { DIG 4 ;
1218
                       DIG 5 ;
1219
                       DROP 2 ;
1220
                       DIG 2 ;
1221
                       SWAP ;
1222
                       DUP ;
1223
                       DUG 2 ;
1224
                       CDR ;
1225
                       PAIR ;
1226
                       SWAP ;
1227
                       CAR ;
1228
                       DUG 2 ;
1229
                       UNPAIR ;
1230
                       SWAP ;
1231
                       DUP ;
1232
                       DUG 2 ;
1233
                       GET 5 ;
1234
                       DIG 10 ;
1235
                       SWAP ;
1236
                       EXEC ;
1237
                       DROP ;
1238
                       PUSH string "AMT_TOO_LOW" ;
1239
                       PUSH nat 0 ;
1240
                       DUP 3 ;
1241
                       COMPARE ;
1242
                       GT ;
1243
                       PAIR ;
1244
                       DIG 6 ;
1245
                       SWAP ;
1246
                       EXEC ;
1247
                       DROP ;
1248
                       DUP 3 ;
1249
                       DIG 2 ;
1250
                       DUP 5 ;
1251
                       SWAP ;
1252
                       DUP ;
1253
                       DUG 2 ;
1254
                       GET 11 ;
1255
                       SWAP ;
1256
                       DUP ;
1257
                       DUG 2 ;
1258
                       GET ;
1259
                       IF_NONE
1260
                         { SWAP ;
1261
                           DUP ;
1262
                           DUG 2 ;
1263
                           CAR ;
1264
                           DUP 3 ;
1265
                           GET 15 ;
1266
                           EMPTY_MAP string bytes ;
1267
                           PUSH bytes 0x697066733a2f2f516d59684d4d7967573434657651786248327651367739786d626b48634131724455577739566d58335865564336 ;
1268
                           SOME ;
1269
                           PUSH string "thumbnailUri" ;
1270
                           UPDATE ;
1271
                           PUSH bytes 0x53425432 ;
1272
                           SOME ;
1273
                           PUSH string "symbol" ;
1274
                           UPDATE ;
1275
                           PUSH bytes 0x7344414f2042616e6b726f6c6c20546f6b656e207632 ;
1276
                           SOME ;
1277
                           PUSH string "name" ;
1278
                           UPDATE ;
1279
                           PUSH bytes 0x36 ;
1280
                           SOME ;
1281
                           PUSH string "decimals" ;
1282
                           UPDATE ;
1283
                           SWAP ;
1284
                           PAIR ;
1285
                           DUP ;
1286
                           CAR ;
1287
                           DUP 3 ;
1288
                           CDR ;
1289
                           CAR ;
1290
                           SWAP ;
1291
                           DUP ;
1292
                           DUG 2 ;
1293
                           GET ;
1294
                           IF_NONE
1295
                             { DUP 3 ;
1296
                               CDR ;
1297
                               CDR ;
1298
                               DUP 4 ;
1299
                               CDR ;
1300
                               CAR ;
1301
                               DIG 3 ;
1302
                               DUP 4 ;
1303
                               SWAP ;
1304
                               SOME ;
1305
                               SWAP ;
1306
                               UPDATE ;
1307
                               PAIR ;
1308
                               DUP 3 ;
1309
                               CAR ;
1310
                               PAIR ;
1311
                               DIG 2 ;
1312
                               CDR ;
1313
                               CDR ;
1314
                               PUSH nat 0 ;
1315
                               DIG 3 ;
1316
                               SWAP ;
1317
                               SOME ;
1318
                               SWAP ;
1319
                               UPDATE ;
1320
                               SWAP ;
1321
                               DUP ;
1322
                               DUG 2 ;
1323
                               CDR ;
1324
                               CAR ;
1325
                               PAIR ;
1326
                               SWAP ;
1327
                               CAR ;
1328
                               PAIR }
1329
                             { DROP 4 ; PUSH string "FA2_DUP_TOKEN_ID" ; FAILWITH } ;
1330
                           DUP 3 ;
1331
                           SWAP ;
1332
                           UPDATE 1 ;
1333
                           PUSH nat 1 ;
1334
                           DUP 4 ;
1335
                           GET 15 ;
1336
                           ADD ;
1337
                           UPDATE 15 ;
1338
                           DUP 3 ;
1339
                           GET 11 ;
1340
                           DUP 3 ;
1341
                           DIG 5 ;
1342
                           DIG 5 ;
1343
                           GET 15 ;
1344
                           SOME ;
1345
                           SWAP ;
1346
                           PAIR ;
1347
                           PUSH nat 0 ;
1348
                           PUSH nat 0 ;
1349
                           PUSH nat 0 ;
1350
                           SWAP ;
1351
                           PAIR ;
1352
                           SWAP ;
1353
                           PAIR ;
1354
                           SWAP ;
1355
                           PAIR ;
1356
                           SWAP ;
1357
                           PAIR ;
1358
                           SOME ;
1359
                           DIG 3 ;
1360
                           UPDATE ;
1361
                           UPDATE 11 }
1362
                         { SWAP ; DIG 3 ; DROP 3 } ;
1363
                       DUP ;
1364
                       DIG 4 ;
1365
                       PAIR ;
1366
                       DIG 4 ;
1367
                       SWAP ;
1368
                       EXEC ;
1369
                       PUSH nat 10000 ;
1370
                       DUP 3 ;
1371
                       GET 27 ;
1372
                       SWAP ;
1373
                       DUP ;
1374
                       DUG 2 ;
1375
                       SUB ;
1376
                       DUP 5 ;
1377
                       MUL ;
1378
                       ISNAT ;
1379
                       IF_NONE { PUSH string "INVEST_OVERFLOW" ; FAILWITH } {} ;
1380
                       EDIV ;
1381
                       IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1382
                       CAR ;
1383
                       DUP ;
1384
                       DIG 4 ;
1385
                       SUB ;
1386
                       ISNAT ;
1387
                       IF_NONE { PUSH string "FEE_OVERFLOW" ; FAILWITH } {} ;
1388
                       PUSH nat 0 ;
1389
                       DUP 4 ;
1390
                       GET 5 ;
1391
                       COMPARE ;
1392
                       EQ ;
1393
                       IF
1394
                         { SWAP ; DUP ; DUG 2 }
1395
                         { DUP 3 ;
1396
                           GET 5 ;
1397
                           DUP 4 ;
1398
                           GET 8 ;
1399
                           DUP 4 ;
1400
                           MUL ;
1401
                           EDIV ;
1402
                           IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1403
                           CAR } ;
1404
                       DUP 4 ;
1405
                       CAR ;
1406
                       DUP 4 ;
1407
                       PAIR ;
1408
                       DIG 6 ;
1409
                       SENDER ;
1410
                       PAIR ;
1411
                       PAIR ;
1412
                       DUP 7 ;
1413
                       SWAP ;
1414
                       EXEC ;
1415
                       DUP 5 ;
1416
                       CAR ;
1417
                       DUP 4 ;
1418
                       PAIR ;
1419
                       DUP 7 ;
1420
                       GET 21 ;
1421
                       SENDER ;
1422
                       PAIR ;
1423
                       PAIR ;
1424
                       DIG 7 ;
1425
                       SWAP ;
1426
                       EXEC ;
1427
                       DUP 7 ;
1428
                       GET 21 ;
1429
                       NOW ;
1430
                       PAIR ;
1431
                       DUP 7 ;
1432
                       CAR ;
1433
                       DIG 5 ;
1434
                       DIG 2 ;
1435
                       UNPAIR ;
1436
                       SWAP ;
1437
                       CONTRACT %notifyRewards (pair
1438
                                                 (pair %token (address %fa2_address)
1439
                                                              (option %token_id nat))
1440
                                                 (pair (nat %amt) (timestamp %timestamp))) ;
1441
                       IF_NONE { PUSH string "Invalid" ; FAILWITH } {} ;
1442
                       PUSH mutez 0 ;
1443
                       DIG 4 ;
1444
                       DIG 4 ;
1445
                       DIG 4 ;
1446
                       SWAP ;
1447
                       PAIR ;
1448
                       SWAP ;
1449
                       PAIR ;
1450
                       TRANSFER_TOKENS ;
1451
                       DUP 6 ;
1452
                       DUP 6 ;
1453
                       DUP 8 ;
1454
                       GET 7 ;
1455
                       ADD ;
1456
                       UPDATE 7 ;
1457
                       DIG 5 ;
1458
                       DUP 7 ;
1459
                       GET 5 ;
1460
                       ADD ;
1461
                       UPDATE 5 ;
1462
                       DUP 5 ;
1463
                       DUP 7 ;
1464
                       GET 8 ;
1465
                       ADD ;
1466
                       UPDATE 8 ;
1467
                       DUP 6 ;
1468
                       GET 3 ;
1469
                       CDR ;
1470
                       IF_NONE { PUSH string "NO_ID" ; FAILWITH } {} ;
1471
                       DUP 8 ;
1472
                       CAR ;
1473
                       NIL (pair address (pair nat nat)) ;
1474
                       SENDER ;
1475
                       DIG 3 ;
1476
                       DIG 8 ;
1477
                       SWAP ;
1478
                       PAIR ;
1479
                       SWAP ;
1480
                       PAIR ;
1481
                       CONS ;
1482
                       SWAP ;
1483
                       DUP ;
1484
                       DUG 2 ;
1485
                       CAR ;
1486
                       CAR ;
1487
                       SWAP ;
1488
                       DUP ;
1489
                       DUG 2 ;
1490
                       ITER { DUP ;
1491
                              DUG 2 ;
1492
                              GET 4 ;
1493
                              PAIR ;
1494
                              SWAP ;
1495
                              DUP ;
1496
                              DUG 2 ;
1497
                              GET 3 ;
1498
                              DIG 2 ;
1499
                              CAR ;
1500
                              PAIR ;
1501
                              PAIR ;
1502
                              DUP 10 ;
1503
                              SWAP ;
1504
                              EXEC } ;
1505
                       DIG 9 ;
1506
                       DROP ;
1507
                       DUP 3 ;
1508
                       CDR ;
1509
                       CDR ;
1510
                       DIG 2 ;
1511
                       ITER { SWAP ;
1512
                              DUP ;
1513
                              DUP 3 ;
1514
                              GET 3 ;
1515
                              GET ;
1516
                              IF_NONE
1517
                                { DROP 2 ; DUP 9 ; FAILWITH }
1518
                                { DUP 3 ; GET 4 ; ADD ; SOME ; DIG 2 ; GET 3 ; UPDATE } } ;
1519
                       DIG 9 ;
1520
                       DROP ;
1521
                       DUP 3 ;
1522
                       CDR ;
1523
                       DIG 3 ;
1524
                       CAR ;
1525
                       CDR ;
1526
                       DIG 3 ;
1527
                       PAIR ;
1528
                       PAIR ;
1529
                       DUP ;
1530
                       DUG 2 ;
1531
                       CDR ;
1532
                       CAR ;
1533
                       PAIR ;
1534
                       SWAP ;
1535
                       CAR ;
1536
                       PAIR ;
1537
                       DIG 6 ;
1538
                       DUP ;
1539
                       GET 11 ;
1540
                       DIG 3 ;
1541
                       SOME ;
1542
                       DIG 7 ;
1543
                       CAR ;
1544
                       UPDATE ;
1545
                       UPDATE 11 ;
1546
                       SWAP ;
1547
                       UPDATE 1 ;
1548
                       NIL operation ;
1549
                       DIG 4 ;
1550
                       CONS ;
1551
                       DIG 2 ;
1552
                       CONS ;
1553
                       DIG 2 ;
1554
                       CONS ;
1555
                       PAIR }
1556
                     { DIG 8 ;
1557
                       DIG 9 ;
1558
                       DROP 2 ;
1559
                       DIG 2 ;
1560
                       SWAP ;
1561
                       DIG 2 ;
1562
                       DUP 3 ;
1563
                       GET 5 ;
1564
                       DIG 9 ;
1565
                       SWAP ;
1566
                       EXEC ;
1567
                       DROP ;
1568
                       PUSH string "NO_BET" ;
1569
                       PUSH nat 0 ;
1570
                       DUP 4 ;
1571
                       GET 5 ;
1572
                       COMPARE ;
1573
                       GT ;
1574
                       PAIR ;
1575
                       DUP 8 ;
1576
                       SWAP ;
1577
                       EXEC ;
1578
                       DROP ;
1579
                       DUP 3 ;
1580
                       DUP 3 ;
1581
                       CAR ;
1582
                       PAIR ;
1583
                       DIG 4 ;
1584
                       SWAP ;
1585
                       EXEC ;
1586
                       DUP 4 ;
1587
                       DUP 4 ;
1588
                       GET 3 ;
1589
                       PAIR ;
1590
                       DIG 5 ;
1591
                       SWAP ;
1592
                       EXEC ;
1593
                       PUSH string "NO_GUESS" ;
1594
                       PUSH nat 0 ;
1595
                       DUP 6 ;
1596
                       GET 6 ;
1597
                       DUP 9 ;
1598
                       SWAP ;
1599
                       EXEC ;
1600
                       COMPARE ;
1601
                       GT ;
1602
                       PAIR ;
1603
                       DUP 8 ;
1604
                       SWAP ;
1605
                       EXEC ;
1606
                       DROP ;
1607
                       PUSH string "GUESS_OVERFLOW" ;
1608
                       SWAP ;
1609
                       DUP ;
1610
                       DUG 2 ;
1611
                       GET 8 ;
1612
                       DUP 6 ;
1613
                       GET 6 ;
1614
                       DIG 8 ;
1615
                       SWAP ;
1616
                       EXEC ;
1617
                       COMPARE ;
1618
                       LT ;
1619
                       PAIR ;
1620
                       DIG 6 ;
1621
                       SWAP ;
1622
                       EXEC ;
1623
                       DROP ;
1624
                       GET 5 ;
1625
                       UNPACK (lambda (pair (list nat) nat) nat) ;
1626
                       IF_NONE { PUSH string "CALC_CORRUPT" ; FAILWITH } {} ;
1627
                       DUP 4 ;
1628
                       GET 5 ;
1629
                       DUP 5 ;
1630
                       GET 6 ;
1631
                       PAIR ;
1632
                       EXEC ;
1633
                       DUP 5 ;
1634
                       GET 23 ;
1635
                       DUP 3 ;
1636
                       GET 5 ;
1637
                       EDIV ;
1638
                       IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1639
                       CAR ;
1640
                       DUP 5 ;
1641
                       GET 5 ;
1642
                       COMPARE ;
1643
                       GT ;
1644
                       IF { PUSH bool True } { PUSH bool False } ;
1645
                       DUP 5 ;
1646
                       GET 3 ;
1647
                       DUP 6 ;
1648
                       CAR ;
1649
                       PUSH unit Unit ;
1650
                       RIGHT unit ;
1651
                       SENDER ;
1652
                       NONE bytes ;
1653
                       NOW ;
1654
                       DUP 11 ;
1655
                       GET 5 ;
1656
                       DUP 12 ;
1657
                       GET 6 ;
1658
                       DUP 14 ;
1659
                       GET 28 ;
1660
                       DUP 12 ;
1661
                       GET 7 ;
1662
                       DIG 11 ;
1663
                       DUG 2 ;
1664
                       MUL ;
1665
                       PUSH nat 100 ;
1666
                       DUP 3 ;
1667
                       MUL ;
1668
                       COMPARE ;
1669
                       GT ;
1670
                       IF { DROP ; PUSH string "PAYOUT TOO HIGH" ; FAILWITH } {} ;
1671
                       NONE timestamp ;
1672
                       NONE bool ;
1673
                       NONE nat ;
1674
                       DIG 12 ;
1675
                       SWAP ;
1676
                       PAIR ;
1677
                       SWAP ;
1678
                       PAIR ;
1679
                       SWAP ;
1680
                       PAIR ;
1681
                       SWAP ;
1682
                       PAIR ;
1683
                       SWAP ;
1684
                       PAIR ;
1685
                       SWAP ;
1686
                       PAIR ;
1687
                       SWAP ;
1688
                       PAIR ;
1689
                       SWAP ;
1690
                       PAIR ;
1691
                       SWAP ;
1692
                       PAIR ;
1693
                       SWAP ;
1694
                       PAIR ;
1695
                       SWAP ;
1696
                       PAIR ;
1697
                       SWAP ;
1698
                       PAIR ;
1699
                       DUP 4 ;
1700
                       CAR ;
1701
                       DIG 4 ;
1702
                       GET 5 ;
1703
                       PAIR ;
1704
                       DIG 3 ;
1705
                       SENDER ;
1706
                       PAIR ;
1707
                       PAIR ;
1708
                       DIG 4 ;
1709
                       SWAP ;
1710
                       EXEC ;
1711
                       SWAP ;
1712
                       DUP ;
1713
                       DUG 2 ;
1714
                       GET 17 ;
1715
                       DUP 4 ;
1716
                       GET 7 ;
1717
                       SUB ;
1718
                       ISNAT ;
1719
                       IF_NONE { PUSH string "HOUSE_BANKROLL_DRY" ; FAILWITH } {} ;
1720
                       DIG 4 ;
1721
                       DUP ;
1722
                       DUP ;
1723
                       DUG 6 ;
1724
                       GET 7 ;
1725
                       DUP 5 ;
1726
                       SOME ;
1727
                       DUP 8 ;
1728
                       GET 13 ;
1729
                       UPDATE ;
1730
                       UPDATE 7 ;
1731
                       PUSH nat 1 ;
1732
                       DUP 7 ;
1733
                       GET 13 ;
1734
                       ADD ;
1735
                       UPDATE 13 ;
1736
                       DIG 5 ;
1737
                       GET 11 ;
1738
                       DIG 5 ;
1739
                       DIG 3 ;
1740
                       UPDATE 7 ;
1741
                       SOME ;
1742
                       DIG 4 ;
1743
                       GET 3 ;
1744
                       UPDATE ;
1745
                       UPDATE 11 ;
1746
                       NIL operation ;
1747
                       DIG 2 ;
1748
                       CONS ;
1749
                       PAIR } } } }
1750
         { DIG 6 ;
1751
           DIG 10 ;
1752
           DIG 11 ;
1753
           DIG 12 ;
1754
           DIG 13 ;
1755
           DIG 14 ;
1756
           DIG 15 ;
1757
           DROP 7 ;
1758
           IF_LEFT
1759
             { IF_LEFT
1760
                 { IF_LEFT
1761
                     { DIG 9 ;
1762
                       DROP ;
1763
                       DIG 2 ;
1764
                       SWAP ;
1765
                       DIG 2 ;
1766
                       PUSH string "NOT_HOUSE_WALLET" ;
1767
                       DUP 4 ;
1768
                       GET 19 ;
1769
                       SENDER ;
1770
                       COMPARE ;
1771
                       EQ ;
1772
                       PAIR ;
1773
                       DIG 7 ;
1774
                       SWAP ;
1775
                       EXEC ;
1776
                       DROP ;
1777
                       DUP 3 ;
1778
                       DUP 3 ;
1779
                       CAR ;
1780
                       PAIR ;
1781
                       DIG 5 ;
1782
                       SWAP ;
1783
                       EXEC ;
1784
                       DUP ;
1785
                       GET 5 ;
1786
                       DIG 7 ;
1787
                       SWAP ;
1788
                       EXEC ;
1789
                       IF
1790
                         { DUP ;
1791
                           PUSH unit Unit ;
1792
                           LEFT unit ;
1793
                           UPDATE 5 ;
1794
                           DUP 4 ;
1795
                           CDR ;
1796
                           SOME ;
1797
                           UPDATE 9 ;
1798
                           NOW ;
1799
                           SOME ;
1800
                           UPDATE 19 ;
1801
                           DUP 4 ;
1802
                           CDR ;
1803
                           DUP 6 ;
1804
                           PAIR ;
1805
                           SWAP ;
1806
                           DUP ;
1807
                           DUG 2 ;
1808
                           DIG 4 ;
1809
                           DIG 2 ;
1810
                           UNPAIR ;
1811
                           DUP 4 ;
1812
                           GET 9 ;
1813
                           IF_NONE { PUSH string "NO_HOUSE_HASH" ; FAILWITH } {} ;
1814
                           SWAP ;
1815
                           DUP ;
1816
                           DUG 2 ;
1817
                           DUP 6 ;
1818
                           CAR ;
1819
                           PAIR ;
1820
                           DIG 11 ;
1821
                           SWAP ;
1822
                           EXEC ;
1823
                           GET 7 ;
1824
                           UNPACK (lambda (pair (list nat) bytes)
1825
                                          (pair (pair bool nat) (option nat))) ;
1826
                           IF_NONE { PUSH string "GAME_CORRUPT" ; FAILWITH } {} ;
1827
                           SWAP ;
1828
                           DIG 3 ;
1829
                           CONCAT ;
1830
                           SHA256 ;
1831
                           PUSH nat 2 ;
1832
                           PUSH nat 30 ;
1833
                           SLICE ;
1834
                           IF_NONE { PUSH string "SLICE" ; FAILWITH } {} ;
1835
                           DUP 5 ;
1836
                           GET 15 ;
1837
                           PAIR ;
1838
                           EXEC ;
1839
                           UNPAIR ;
1840
                           UNPAIR ;
1841
                           DIG 2 ;
1842
                           IF_NONE
1843
                             { PUSH nat 0 ; DUP 6 ; GET 17 ; PAIR }
1844
                             { DUP 4 ;
1845
                               GET 25 ;
1846
                               SUB ;
1847
                               DUP 6 ;
1848
                               GET 17 ;
1849
                               MUL ;
1850
                               ISNAT ;
1851
                               IF_NONE { PUSH string "PAYCUT_OVERFLOW" ; FAILWITH } {} ;
1852
                               DUP 4 ;
1853
                               GET 25 ;
1854
                               SWAP ;
1855
                               EDIV ;
1856
                               IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1857
                               CAR ;
1858
                               DUP ;
1859
                               DUP 7 ;
1860
                               GET 17 ;
1861
                               SUB ;
1862
                               ISNAT ;
1863
                               IF_NONE { PUSH string "CHG_OVERFLOW" ; FAILWITH } {} ;
1864
                               SWAP ;
1865
                               PAIR } ;
1866
                           UNPAIR ;
1867
                           DIG 4 ;
1868
                           DUP 7 ;
1869
                           GET 3 ;
1870
                           PAIR ;
1871
                           DIG 11 ;
1872
                           SWAP ;
1873
                           EXEC ;
1874
                           SWAP ;
1875
                           DUP ;
1876
                           DUG 2 ;
1877
                           SWAP ;
1878
                           DUP ;
1879
                           DUG 2 ;
1880
                           GET 5 ;
1881
                           SUB ;
1882
                           ISNAT ;
1883
                           IF_NONE
1884
                             { PUSH string "HOUSE_BANKROLL_OVERFLOW" ; FAILWITH }
1885
                             {} ;
1886
                           PUSH bool True ;
1887
                           DIG 5 ;
1888
                           COMPARE ;
1889
                           EQ ;
1890
                           IF
1891
                             { NIL operation ;
1892
                               DUP 8 ;
1893
                               GET 3 ;
1894
                               DIG 4 ;
1895
                               DUP 9 ;
1896
                               GET 13 ;
1897
                               ADD ;
1898
                               PAIR ;
1899
                               DIG 7 ;
1900
                               GET 7 ;
1901
                               DIG 7 ;
1902
                               PAIR ;
1903
                               PAIR ;
1904
                               DIG 10 ;
1905
                               SWAP ;
1906
                               EXEC ;
1907
                               CONS ;
1908
                               DUP 3 ;
1909
                               DIG 2 ;
1910
                               UPDATE 5 ;
1911
                               DIG 3 ;
1912
                               DIG 3 ;
1913
                               GET 7 ;
1914
                               ADD ;
1915
                               UPDATE 7 ;
1916
                               PUSH bool True ;
1917
                               SOME ;
1918
                               DIG 3 ;
1919
                               SOME ;
1920
                               SWAP ;
1921
                               PAIR ;
1922
                               SWAP ;
1923
                               PAIR ;
1924
                               SWAP ;
1925
                               PAIR }
1926
                             { DIG 2 ;
1927
                               DIG 3 ;
1928
                               DIG 5 ;
1929
                               DIG 11 ;
1930
                               DROP 5 ;
1931
                               NIL operation ;
1932
                               SWAP ;
1933
                               DUP ;
1934
                               DUG 2 ;
1935
                               DUP 5 ;
1936
                               GET 13 ;
1937
                               DUP 4 ;
1938
                               GET 5 ;
1939
                               ADD ;
1940
                               UPDATE 5 ;
1941
                               DUP 5 ;
1942
                               GET 17 ;
1943
                               DIG 5 ;
1944
                               GET 13 ;
1945
                               DIG 4 ;
1946
                               GET 7 ;
1947
                               ADD ;
1948
                               ADD ;
1949
                               UPDATE 7 ;
1950
                               PUSH bool False ;
1951
                               SOME ;
1952
                               DIG 3 ;
1953
                               SOME ;
1954
                               SWAP ;
1955
                               PAIR ;
1956
                               SWAP ;
1957
                               PAIR ;
1958
                               SWAP ;
1959
                               PAIR } ;
1960
                           DUP ;
1961
                           DUG 2 ;
1962
                           GET 5 ;
1963
                           UPDATE 21 ;
1964
                           SWAP ;
1965
                           DUP ;
1966
                           DUG 2 ;
1967
                           GET 6 ;
1968
                           UPDATE 23 ;
1969
                           DUP 5 ;
1970
                           GET 21 ;
1971
                           NOW ;
1972
                           PAIR ;
1973
                           SWAP ;
1974
                           DUP ;
1975
                           DUG 2 ;
1976
                           GET 3 ;
1977
                           DUP 5 ;
1978
                           GET 7 ;
1979
                           DIG 2 ;
1980
                           UNPAIR ;
1981
                           SWAP ;
1982
                           CONTRACT %notifyGP (pair
1983
                                                (pair %token (address %fa2_address)
1984
                                                             (option %token_id nat))
1985
                                                (pair (address %user_address)
1986
                                                      (timestamp %timestamp))) ;
1987
                           IF_NONE { PUSH string "Invalid" ; FAILWITH } {} ;
1988
                           PUSH mutez 0 ;
1989
                           DIG 4 ;
1990
                           DIG 4 ;
1991
                           DIG 4 ;
1992
                           SWAP ;
1993
                           PAIR ;
1994
                           SWAP ;
1995
                           PAIR ;
1996
                           TRANSFER_TOKENS ;
1997
                           DIG 5 ;
1998
                           DUP ;
1999
                           DUP ;
2000
                           DUG 7 ;
2001
                           GET 7 ;
2002
                           DUP 4 ;
2003
                           SOME ;
2004
                           DIG 7 ;
2005
                           CAR ;
2006
                           UPDATE ;
2007
                           UPDATE 7 ;
2008
                           DIG 5 ;
2009
                           GET 11 ;
2010
                           DUP 5 ;
2011
                           GET 3 ;
2012
                           SOME ;
2013
                           DIG 4 ;
2014
                           GET 3 ;
2015
                           UPDATE ;
2016
                           UPDATE 11 ;
2017
                           PUSH bool True ;
2018
                           DIG 4 ;
2019
                           GET 24 ;
2020
                           COMPARE ;
2021
                           EQ ;
2022
                           IF
2023
                             { DIG 2 ; CAR ; DIG 2 ; CONS }
2024
                             { SWAP ; DROP ; SWAP ; CAR } ;
2025
                           PAIR }
2026
                         { DROP 7 ; PUSH string "RESOLVE_FAIL" ; FAILWITH } }
2027
                     { DIG 3 ;
2028
                       DIG 4 ;
2029
                       DIG 5 ;
2030
                       DIG 6 ;
2031
                       DIG 7 ;
2032
                       DIG 8 ;
2033
                       DROP 6 ;
2034
                       DIG 2 ;
2035
                       SWAP ;
2036
                       DIG 2 ;
2037
                       DROP ;
2038
                       SWAP ;
2039
                       DUP ;
2040
                       DUG 2 ;
2041
                       GET 5 ;
2042
                       DIG 3 ;
2043
                       SWAP ;
2044
                       EXEC ;
2045
                       DROP ;
2046
                       UPDATE 21 ;
2047
                       NIL operation ;
2048
                       PAIR } }
2049
                 { DIG 3 ;
2050
                   DIG 4 ;
2051
                   DIG 5 ;
2052
                   DIG 6 ;
2053
                   DIG 7 ;
2054
                   DIG 8 ;
2055
                   DROP 6 ;
2056
                   IF_LEFT
2057
                     { DIG 2 ;
2058
                       SWAP ;
2059
                       DIG 2 ;
2060
                       DROP ;
2061
                       SWAP ;
2062
                       DUP ;
2063
                       DUG 2 ;
2064
                       GET 5 ;
2065
                       DIG 3 ;
2066
                       SWAP ;
2067
                       EXEC ;
2068
                       DROP ;
2069
                       UPDATE 23 ;
2070
                       NIL operation ;
2071
                       PAIR }
2072
                     { DIG 2 ;
2073
                       SWAP ;
2074
                       DIG 2 ;
2075
                       DROP ;
2076
                       SWAP ;
2077
                       DUP ;
2078
                       DUG 2 ;
2079
                       GET 5 ;
2080
                       DIG 3 ;
2081
                       SWAP ;
2082
                       EXEC ;
2083
                       DROP ;
2084
                       UPDATE 27 ;
2085
                       NIL operation ;
2086
                       PAIR } } }
2087
             { DIG 3 ;
2088
               DIG 4 ;
2089
               DIG 5 ;
2090
               DIG 6 ;
2091
               DIG 7 ;
2092
               DIG 8 ;
2093
               DROP 6 ;
2094
               DIG 2 ;
2095
               SWAP ;
2096
               DIG 2 ;
2097
               DROP ;
2098
               SWAP ;
2099
               DUP ;
2100
               DUG 2 ;
2101
               GET 5 ;
2102
               DIG 3 ;
2103
               SWAP ;
2104
               EXEC ;
2105
               DROP ;
2106
               UPDATE 28 ;
2107
               NIL operation ;
2108
               PAIR } } }