BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • uXAU/uUSD Target FlatYouves
operations (12.5K)Storage Code Interact Tokens Fork Views Statistics Details
Latest
​x
663
1296
 
1
{ parameter (or
2
              (or
3
                (or
4
                  (or
5
                    (or (unit %acceptAdminProposal)
6
                        (pair %addLiquidity (address %owner)
7
                                            (pair (nat %minLqtMinted)
8
                                                  (pair (nat %maxTokensDeposited)
9
                                                        (pair (nat %cashDeposited)
10
                                                              (timestamp %deadline))))))
11
                    (or
12
                      (pair %addLiquidityInternal
13
                        (pair (address %owner)
14
                              (pair (nat %minLqtMinted)
15
                                    (pair (nat %maxTokensDeposited)
16
                                          (pair (nat %cashDeposited)
17
                                                (timestamp %deadline)))))
18
                        address)
19
                      (pair %cashToToken (address %to)
20
                                         (pair (nat %minTokensBought)
21
                                               (pair (nat %cashSold)
22
                                                     (timestamp %deadline))))))
23
                  (or
24
                    (or
25
                      (pair %cashToTokenInternal
26
                        (pair (address %to)
27
                              (pair (nat %minTokensBought)
28
                                    (pair (nat %cashSold) (timestamp %deadline))))
29
                        address)
30
                      (pair %changeFee (nat %numerator) (nat %denominator)))
31
                    (or (contract %fetchLqtTokenPriceInCash nat)
32
                        (contract %fetchLqtTokenPriceInToken nat))))
33
                (or
34
                  (or
35
                    (or
36
                      (pair %fetchLqtTokenPriceInternal (contract nat)
37
                                                        (or (unit %cash) (unit %token)))
38
                      (address %proposeNewAdmin))
39
                    (or
40
                      (pair %removeLiquidity (address %to)
41
                                             (pair (nat %lqtBurned)
42
                                                   (pair (nat %minCashWithdrawn)
43
                                                         (pair (nat %minTokensWithdrawn)
44
                                                               (timestamp %deadline)))))
45
                      (pair %removeLiquidityInternal
46
                        (pair (address %to)
47
                              (pair (nat %lqtBurned)
48
                                    (pair (nat %minCashWithdrawn)
49
                                          (pair (nat %minTokensWithdrawn)
50
                                                (timestamp %deadline)))))
51
                        address)))
52
                  (or (or (address %setLqtAddress) (address %setRewardRecipient))
53
                      (or
54
                        (pair %tokenToCash (address %to)
55
                                           (pair (nat %tokensSold)
56
                                                 (pair (nat %minCashBought)
57
                                                       (timestamp %deadline))))
58
                        (pair %tokenToCashInternal
59
                          (pair (address %to)
60
                                (pair (nat %tokensSold)
61
                                      (pair (nat %minCashBought) (timestamp %deadline))))
62
                          address)))))
63
              (or
64
                (or (list %updateCashPoolInternal (pair (pair address nat) nat))
65
                    (unit %updatePools))
66
                (list %updateTokenPoolInternal (pair (pair address nat) nat)))) ;
67
  storage (pair (address %tokenAddress)
68
                (pair (nat %tokenId)
69
                      (pair (nat %tokenPool)
70
                            (pair (nat %tokenMultiplier)
71
                                  (pair (address %cashAddress)
72
                                        (pair (nat %cashId)
73
                                              (pair (nat %cashPool)
74
                                                    (pair (nat %cashMultiplier)
75
                                                          (pair (address %admin)
76
                                                                (pair
77
                                                                  (address %proposedAdmin)
78
                                                                  (pair (nat %lqtTotal)
79
                                                                        (pair
80
                                                                          (address %lqtAddress)
81
                                                                          (pair
82
                                                                            (address %rewardRecipient)
83
                                                                            (pair
84
                                                                              (nat %pendingPoolUpdates)
85
                                                                              (pair
86
                                                                                (pair %feeRatio
87
                                                                                  (nat %numerator)
88
                                                                                  (nat %denominator))
89
                                                                                (address %targetPriceOracle)))))))))))))))) ;
90
  code { LAMBDA
91
           (pair nat nat)
92
           (pair nat nat)
93
           { UNPAIR ;
94
             DUP 2 ;
95
             DUP 2 ;
96
             ADD ;
97
             DUG 2 ;
98
             SUB ;
99
             DUP 2 ;
100
             DUP 3 ;
101
             MUL ;
102
             DUP ;
103
             MUL ;
104
             DUP ;
105
             MUL ;
106
             DIG 2 ;
107
             DUP 2 ;
108
             EDIV ;
109
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
110
             CAR ;
111
             DUP 3 ;
112
             DUP 4 ;
113
             MUL ;
114
             DUP ;
115
             MUL ;
116
             DUP ;
117
             MUL ;
118
             PUSH int 0 ;
119
             DUP 5 ;
120
             COMPARE ;
121
             EQ ;
122
             IF
123
               { DIG 3 ; DROP ; PUSH int 0 }
124
               { DIG 3 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ;
125
             SWAP ;
126
             DIG 3 ;
127
             SUB ;
128
             ISNAT ;
129
             IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
130
             DUG 2 ;
131
             ADD ;
132
             ISNAT ;
133
             IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
134
             PUSH nat 8 ;
135
             MUL ;
136
             SWAP ;
137
             PAIR } ;
138
         LAMBDA
139
           (pair (lambda (pair nat nat) (pair nat nat))
140
                 (pair (pair (pair nat nat) (pair int nat)) (pair nat nat)))
141
           nat
142
           { UNPAIR ;
143
             SWAP ;
144
             LEFT nat ;
145
             LOOP_LEFT { PUSH int 0 ;
146
                         DUP 2 ;
147
                         CAR ;
148
                         CDR ;
149
                         CAR ;
150
                         COMPARE ;
151
                         EQ ;
152
                         IF
153
                           { CAR ;
154
                             CAR ;
155
                             CDR ;
156
                             RIGHT (pair (pair (pair nat nat) (pair int nat))
157
                                         (pair nat nat)) }
158
                           { DUP ;
159
                             CAR ;
160
                             CAR ;
161
                             CDR ;
162
                             DUP 2 ;
163
                             CDR ;
164
                             CDR ;
165
                             SUB ;
166
                             ISNAT ;
167
                             IF_NONE { PUSH nat 2 ; FAILWITH } {} ;
168
                             DUP 2 ;
169
                             CAR ;
170
                             CAR ;
171
                             CAR ;
172
                             DUP 3 ;
173
                             CDR ;
174
                             CAR ;
175
                             ADD ;
176
                             PAIR ;
177
                             DUP 3 ;
178
                             SWAP ;
179
                             EXEC ;
180
                             UNPAIR ;
181
                             DUP 3 ;
182
                             CAR ;
183
                             CDR ;
184
                             CDR ;
185
                             SWAP ;
186
                             SUB ;
187
                             ISNAT ;
188
                             IF_NONE
189
                               { DROP ; PUSH nat 2 ; FAILWITH }
190
                               { EDIV ;
191
                                 IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
192
                                 CAR ;
193
                                 DUP 2 ;
194
                                 CAR ;
195
                                 CAR ;
196
                                 CDR ;
197
                                 ADD } ;
198
                             DUP 2 ;
199
                             CDR ;
200
                             DUP 3 ;
201
                             CAR ;
202
                             CDR ;
203
                             DIG 2 ;
204
                             DUP 4 ;
205
                             CAR ;
206
                             CAR ;
207
                             CAR ;
208
                             PAIR ;
209
                             PAIR ;
210
                             PAIR ;
211
                             DUP ;
212
                             CDR ;
213
                             DUP 2 ;
214
                             CAR ;
215
                             CDR ;
216
                             CDR ;
217
                             PUSH int 1 ;
218
                             DIG 4 ;
219
                             CAR ;
220
                             CDR ;
221
                             CAR ;
222
                             SUB ;
223
                             PAIR ;
224
                             DIG 2 ;
225
                             CAR ;
226
                             CAR ;
227
                             PAIR ;
228
                             PAIR ;
229
                             LEFT nat } } ;
230
             SWAP ;
231
             DROP } ;
232
         DUP 2 ;
233
         APPLY ;
234
         DIG 2 ;
235
         UNPAIR ;
236
         PUSH mutez 0 ;
237
         AMOUNT ;
238
         COMPARE ;
239
         NEQ ;
240
         IF
241
           { DROP 4 ; PUSH nat 10 ; FAILWITH }
242
           { IF_LEFT
243
               { IF_LEFT
244
                   { IF_LEFT
245
                       { DIG 2 ;
246
                         DIG 3 ;
247
                         DROP 2 ;
248
                         IF_LEFT
249
                           { IF_LEFT
250
                               { DROP ;
251
                                 DUP ;
252
                                 GET 19 ;
253
                                 SENDER ;
254
                                 COMPARE ;
255
                                 NEQ ;
256
                                 IF
257
                                   { DROP ; PUSH nat 27 ; FAILWITH }
258
                                   { DUP ; GET 19 ; UPDATE 17 ; NIL operation ; PAIR } }
259
                               { SELF %updatePools ;
260
                                 SELF %addLiquidityInternal ;
261
                                 SWAP ;
262
                                 PUSH mutez 0 ;
263
                                 UNIT ;
264
                                 TRANSFER_TOKENS ;
265
                                 SENDER ;
266
                                 DIG 3 ;
267
                                 PAIR ;
268
                                 DIG 2 ;
269
                                 PUSH mutez 0 ;
270
                                 DIG 2 ;
271
                                 TRANSFER_TOKENS ;
272
                                 DIG 2 ;
273
                                 NIL operation ;
274
                                 DIG 2 ;
275
                                 CONS ;
276
                                 DIG 2 ;
277
                                 CONS ;
278
                                 PAIR } }
279
                           { IF_LEFT
280
                               { UNPAIR ;
281
                                 UNPAIR 5 ;
282
                                 PUSH nat 0 ;
283
                                 DUP 8 ;
284
                                 GET 27 ;
285
                                 COMPARE ;
286
                                 GT ;
287
                                 IF
288
                                   { DROP 7 ; PUSH nat 6 ; FAILWITH }
289
                                   { DIG 4 ;
290
                                     NOW ;
291
                                     COMPARE ;
292
                                     GE ;
293
                                     IF
294
                                       { DROP 6 ; PUSH nat 3 ; FAILWITH }
295
                                       { SELF_ADDRESS ;
296
                                         SENDER ;
297
                                         COMPARE ;
298
                                         NEQ ;
299
                                         IF
300
                                           { DROP 6 ; PUSH nat 39 ; FAILWITH }
301
                                           { DUP 6 ;
302
                                             GET 13 ;
303
                                             DUP ;
304
                                             DUP 8 ;
305
                                             GET 21 ;
306
                                             DUP 7 ;
307
                                             MUL ;
308
                                             EDIV ;
309
                                             IF_NONE
310
                                               { PUSH string "DIV by 0" ; FAILWITH }
311
                                               {} ;
312
                                             CAR ;
313
                                             SWAP ;
314
                                             DUP 8 ;
315
                                             GET 5 ;
316
                                             DUP 7 ;
317
                                             MUL ;
318
                                             SWAP ;
319
                                             INT ;
320
                                             SWAP ;
321
                                             NEG ;
322
                                             EDIV ;
323
                                             IF_NONE
324
                                               { PUSH string "DIV by 0" ; FAILWITH }
325
                                               {} ;
326
                                             CAR ;
327
                                             ABS ;
328
                                             DIG 4 ;
329
                                             DUP 2 ;
330
                                             COMPARE ;
331
                                             GT ;
332
                                             IF
333
                                               { DROP 7 ; PUSH nat 4 ; FAILWITH }
334
                                               { DIG 3 ;
335
                                                 DUP 3 ;
336
                                                 COMPARE ;
337
                                                 LT ;
338
                                                 IF
339
                                                   { DROP 6 ; PUSH nat 5 ; FAILWITH }
340
                                                   { DUP 6 ;
341
                                                     DUP 3 ;
342
                                                     DUP 8 ;
343
                                                     GET 21 ;
344
                                                     ADD ;
345
                                                     UPDATE 21 ;
346
                                                     DUP 2 ;
347
                                                     DUP 8 ;
348
                                                     GET 5 ;
349
                                                     ADD ;
350
                                                     UPDATE 5 ;
351
                                                     DUP 5 ;
352
                                                     DIG 7 ;
353
                                                     GET 13 ;
354
                                                     ADD ;
355
                                                     UPDATE 13 ;
356
                                                     SWAP ;
357
                                                     SELF_ADDRESS ;
358
                                                     DUP 7 ;
359
                                                     DUP 4 ;
360
                                                     DUP ;
361
                                                     CAR ;
362
                                                     CONTRACT %transfer (list (pair
363
                                                                               address
364
                                                                               (list (pair
365
                                                                                      address
366
                                                                                      (pair
367
                                                                                        nat
368
                                                                                        nat))))) ;
369
                                                     IF_NONE
370
                                                       { PUSH nat 0 ; FAILWITH }
371
                                                       {} ;
372
                                                     PUSH mutez 0 ;
373
                                                     NIL (pair address
374
                                                               (list (pair address
375
                                                                          (pair nat nat)))) ;
376
                                                     NIL (pair address (pair nat nat)) ;
377
                                                     DIG 7 ;
378
                                                     DIG 5 ;
379
                                                     GET 3 ;
380
                                                     PAIR ;
381
                                                     DIG 6 ;
382
                                                     PAIR ;
383
                                                     CONS ;
384
                                                     DIG 4 ;
385
                                                     PAIR ;
386
                                                     CONS ;
387
                                                     TRANSFER_TOKENS ;
388
                                                     DIG 4 ;
389
                                                     SELF_ADDRESS ;
390
                                                     DIG 6 ;
391
                                                     DUP 5 ;
392
                                                     DUP ;
393
                                                     GET 9 ;
394
                                                     CONTRACT %transfer (list (pair
395
                                                                               address
396
                                                                               (list (pair
397
                                                                                      address
398
                                                                                      (pair
399
                                                                                        nat
400
                                                                                        nat))))) ;
401
                                                     IF_NONE
402
                                                       { PUSH nat 0 ; FAILWITH }
403
                                                       {} ;
404
                                                     PUSH mutez 0 ;
405
                                                     NIL (pair address
406
                                                               (list (pair address
407
                                                                          (pair nat nat)))) ;
408
                                                     NIL (pair address (pair nat nat)) ;
409
                                                     DIG 7 ;
410
                                                     DIG 5 ;
411
                                                     GET 11 ;
412
                                                     PAIR ;
413
                                                     DIG 6 ;
414
                                                     PAIR ;
415
                                                     CONS ;
416
                                                     DIG 4 ;
417
                                                     PAIR ;
418
                                                     CONS ;
419
                                                     TRANSFER_TOKENS ;
420
                                                     DIG 3 ;
421
                                                     INT ;
422
                                                     DIG 4 ;
423
                                                     DUP 5 ;
424
                                                     GET 23 ;
425
                                                     CONTRACT %mintOrBurn (pair
426
                                                                            (int %quantity)
427
                                                                            (address %target)) ;
428
                                                     IF_NONE
429
                                                       { PUSH nat 12 ; FAILWITH }
430
                                                       {} ;
431
                                                     PUSH mutez 0 ;
432
                                                     DIG 2 ;
433
                                                     DIG 3 ;
434
                                                     PAIR ;
435
                                                     TRANSFER_TOKENS ;
436
                                                     DIG 3 ;
437
                                                     NIL operation ;
438
                                                     DIG 2 ;
439
                                                     CONS ;
440
                                                     DIG 2 ;
441
                                                     CONS ;
442
                                                     DIG 2 ;
443
                                                     CONS ;
444
                                                     PAIR } } } } } }
445
                               { SELF %updatePools ;
446
                                 SELF %cashToTokenInternal ;
447
                                 SWAP ;
448
                                 PUSH mutez 0 ;
449
                                 UNIT ;
450
                                 TRANSFER_TOKENS ;
451
                                 SENDER ;
452
                                 DIG 3 ;
453
                                 PAIR ;
454
                                 DIG 2 ;
455
                                 PUSH mutez 0 ;
456
                                 DIG 2 ;
457
                                 TRANSFER_TOKENS ;
458
                                 DIG 2 ;
459
                                 NIL operation ;
460
                                 DIG 2 ;
461
                                 CONS ;
462
                                 DIG 2 ;
463
                                 CONS ;
464
                                 PAIR } } }
465
                       { IF_LEFT
466
                           { IF_LEFT
467
                               { UNPAIR ;
468
                                 UNPAIR 4 ;
469
                                 PUSH nat 0 ;
470
                                 DUP 7 ;
471
                                 GET 27 ;
472
                                 COMPARE ;
473
                                 GT ;
474
                                 IF
475
                                   { DROP 8 ; PUSH nat 6 ; FAILWITH }
476
                                   { DIG 3 ;
477
                                     NOW ;
478
                                     COMPARE ;
479
                                     GE ;
480
                                     IF
481
                                       { DROP 7 ; PUSH nat 3 ; FAILWITH }
482
                                       { SELF_ADDRESS ;
483
                                         SENDER ;
484
                                         COMPARE ;
485
                                         NEQ ;
486
                                         IF
487
                                           { DROP 7 ; PUSH nat 39 ; FAILWITH }
488
                                           { DUP 5 ;
489
                                             GET 30 ;
490
                                             UNIT ;
491
                                             VIEW "get_token_price_in_cash" nat ;
492
                                             IF_NONE { PUSH nat 40 ; FAILWITH } {} ;
493
                                             PUSH nat 1000000000000 ;
494
                                             DUP 7 ;
495
                                             GET 15 ;
496
                                             MUL ;
497
                                             SWAP ;
498
                                             DUP 7 ;
499
                                             GET 7 ;
500
                                             MUL ;
501
                                             DUP 2 ;
502
                                             DUP 8 ;
503
                                             GET 13 ;
504
                                             MUL ;
505
                                             DUP 2 ;
506
                                             DUP 9 ;
507
                                             GET 5 ;
508
                                             MUL ;
509
                                             DUP ;
510
                                             DUP 3 ;
511
                                             PAIR ;
512
                                             DIG 11 ;
513
                                             SWAP ;
514
                                             EXEC ;
515
                                             CAR ;
516
                                             DIG 3 ;
517
                                             DIG 2 ;
518
                                             DIG 3 ;
519
                                             PAIR ;
520
                                             DIG 2 ;
521
                                             PUSH int 5 ;
522
                                             PAIR ;
523
                                             PUSH nat 0 ;
524
                                             DIG 4 ;
525
                                             DUP 8 ;
526
                                             MUL ;
527
                                             PAIR ;
528
                                             PAIR ;
529
                                             PAIR ;
530
                                             DIG 7 ;
531
                                             SWAP ;
532
                                             EXEC ;
533
                                             EDIV ;
534
                                             IF_NONE
535
                                               { PUSH string "DIV by 0" ; FAILWITH }
536
                                               {} ;
537
                                             CAR ;
538
                                             DUP 6 ;
539
                                             GET 29 ;
540
                                             CDR ;
541
                                             DUP 2 ;
542
                                             DUP 8 ;
543
                                             GET 29 ;
544
                                             CAR ;
545
                                             MUL ;
546
                                             EDIV ;
547
                                             IF_NONE
548
                                               { PUSH string "DIV by 0" ; FAILWITH }
549
                                               {} ;
550
                                             CAR ;
551
                                             DIG 3 ;
552
                                             DUP 2 ;
553
                                             COMPARE ;
554
                                             LT ;
555
                                             IF { DROP ; PUSH nat 18 ; FAILWITH } {} ;
556
                                             PUSH int 2 ;
557
                                             DUP 2 ;
558
                                             DIG 3 ;
559
                                             SUB ;
560
                                             EDIV ;
561
                                             IF_NONE
562
                                               { PUSH string "DIV by 0" ; FAILWITH }
563
                                               {} ;
564
                                             CAR ;
565
                                             ISNAT ;
566
                                             IF_NONE { PUSH nat 19 ; FAILWITH } {} ;
567
                                             DUP ;
568
                                             DUP 3 ;
569
                                             ADD ;
570
                                             DUP 7 ;
571
                                             GET 5 ;
572
                                             SUB ;
573
                                             ISNAT ;
574
                                             IF_NONE { PUSH nat 19 ; FAILWITH } {} ;
575
                                             DUP 7 ;
576
                                             DUP 6 ;
577
                                             DIG 8 ;
578
                                             GET 13 ;
579
                                             ADD ;
580
                                             UPDATE 13 ;
581
                                             SWAP ;
582
                                             UPDATE 5 ;
583
                                             DIG 4 ;
584
                                             SELF_ADDRESS ;
585
                                             DIG 6 ;
586
                                             DUP 4 ;
587
                                             DUP ;
588
                                             GET 9 ;
589
                                             CONTRACT %transfer (list (pair address
590
                                                                           (list (pair
591
                                                                                  address
592
                                                                                  (pair
593
                                                                                    nat
594
                                                                                    nat))))) ;
595
                                             IF_NONE { PUSH nat 0 ; FAILWITH } {} ;
596
                                             PUSH mutez 0 ;
597
                                             NIL (pair address
598
                                                       (list (pair address (pair nat nat)))) ;
599
                                             NIL (pair address (pair nat nat)) ;
600
                                             DIG 7 ;
601
                                             DIG 5 ;
602
                                             GET 11 ;
603
                                             PAIR ;
604
                                             DIG 6 ;
605
                                             PAIR ;
606
                                             CONS ;
607
                                             DIG 4 ;
608
                                             PAIR ;
609
                                             CONS ;
610
                                             TRANSFER_TOKENS ;
611
                                             DIG 3 ;
612
                                             DIG 4 ;
613
                                             SELF_ADDRESS ;
614
                                             DUP 5 ;
615
                                             DUP ;
616
                                             CAR ;
617
                                             CONTRACT %transfer (list (pair address
618
                                                                           (list (pair
619
                                                                                  address
620
                                                                                  (pair
621
                                                                                    nat
622
                                                                                    nat))))) ;
623
                                             IF_NONE { PUSH nat 0 ; FAILWITH } {} ;
624
                                             PUSH mutez 0 ;
625
                                             NIL (pair address
626
                                                       (list (pair address (pair nat nat)))) ;
627
                                             NIL (pair address (pair nat nat)) ;
628
                                             DIG 7 ;
629
                                             DIG 5 ;
630
                                             GET 3 ;
631
                                             PAIR ;
632
                                             DIG 6 ;
633
                                             PAIR ;
634
                                             CONS ;
635
                                             DIG 4 ;
636
                                             PAIR ;
637
                                             CONS ;
638
                                             TRANSFER_TOKENS ;
639
                                             DIG 3 ;
640
                                             DUP 4 ;
641
                                             GET 25 ;
642
                                             SELF_ADDRESS ;
643
                                             DUP 6 ;
644
                                             DUP ;
645
                                             CAR ;
646
                                             CONTRACT %transfer (list (pair address
647
                                                                           (list (pair
648
                                                                                  address
649
                                                                                  (pair
650
                                                                                    nat
651
                                                                                    nat))))) ;
652
                                             IF_NONE { PUSH nat 0 ; FAILWITH } {} ;
653
                                             PUSH mutez 0 ;
654
                                             NIL (pair address
655
                                                       (list (pair address (pair nat nat)))) ;
656
                                             NIL (pair address (pair nat nat)) ;
657
                                             DIG 7 ;
658
                                             DIG 5 ;
659
                                             GET 3 ;
660
                                             PAIR ;
661
                                             DIG 6 ;
662
                                             PAIR ;
663
                                             CONS ;
664
                                             DIG 4 ;
665
                                             PAIR ;
666
                                             CONS ;
667
                                             TRANSFER_TOKENS ;
668
                                             DIG 3 ;
669
                                             NIL operation ;
670
                                             DIG 2 ;
671
                                             CONS ;
672
                                             DIG 2 ;
673
                                             CONS ;
674
                                             DIG 2 ;
675
                                             CONS ;
676
                                             PAIR } } } }
677
                               { DIG 2 ;
678
                                 DIG 3 ;
679
                                 DROP 2 ;
680
                                 DUP 2 ;
681
                                 GET 17 ;
682
                                 SENDER ;
683
                                 COMPARE ;
684
                                 NEQ ;
685
                                 IF
686
                                   { DROP 2 ; PUSH nat 26 ; FAILWITH }
687
                                   { UPDATE 29 ; NIL operation ; PAIR } } }
688
                           { DIG 2 ;
689
                             DIG 3 ;
690
                             DROP 2 ;
691
                             IF_LEFT
692
                               { SELF %updatePools ;
693
                                 SELF %fetchLqtTokenPriceInternal ;
694
                                 SWAP ;
695
                                 PUSH mutez 0 ;
696
                                 UNIT ;
697
                                 TRANSFER_TOKENS ;
698
                                 SWAP ;
699
                                 PUSH mutez 0 ;
700
                                 UNIT ;
701
                                 LEFT unit ;
702
                                 DIG 4 ;
703
                                 PAIR ;
704
                                 TRANSFER_TOKENS }
705
                               { SELF %updatePools ;
706
                                 SELF %fetchLqtTokenPriceInternal ;
707
                                 SWAP ;
708
                                 PUSH mutez 0 ;
709
                                 UNIT ;
710
                                 TRANSFER_TOKENS ;
711
                                 SWAP ;
712
                                 PUSH mutez 0 ;
713
                                 UNIT ;
714
                                 RIGHT unit ;
715
                                 DIG 4 ;
716
                                 PAIR ;
717
                                 TRANSFER_TOKENS } ;
718
                             DIG 2 ;
719
                             NIL operation ;
720
                             DIG 2 ;
721
                             CONS ;
722
                             DIG 2 ;
723
                             CONS ;
724
                             PAIR } } }
725
                   { IF_LEFT
726
                       { DIG 2 ;
727
                         DIG 3 ;
728
                         DROP 2 ;
729
                         IF_LEFT
730
                           { IF_LEFT
731
                               { UNPAIR ;
732
                                 SELF_ADDRESS ;
733
                                 SENDER ;
734
                                 COMPARE ;
735
                                 NEQ ;
736
                                 IF
737
                                   { DROP 3 ; PUSH nat 39 ; FAILWITH }
738
                                   { SWAP ;
739
                                     IF_LEFT
740
                                       { DROP ;
741
                                         DUP 2 ;
742
                                         GET 30 ;
743
                                         UNIT ;
744
                                         VIEW "get_token_price_in_cash" nat ;
745
                                         IF_NONE { PUSH nat 40 ; FAILWITH } {} ;
746
                                         DUP 3 ;
747
                                         GET 7 ;
748
                                         DUP 4 ;
749
                                         GET 5 ;
750
                                         MUL ;
751
                                         MUL ;
752
                                         PUSH nat 1000000000000 ;
753
                                         DUP 4 ;
754
                                         GET 15 ;
755
                                         DUP 5 ;
756
                                         GET 13 ;
757
                                         MUL ;
758
                                         MUL ;
759
                                         DUP 4 ;
760
                                         GET 21 ;
761
                                         SWAP ;
762
                                         DIG 2 ;
763
                                         ADD ;
764
                                         SWAP ;
765
                                         INT ;
766
                                         SWAP ;
767
                                         NEG ;
768
                                         EDIV ;
769
                                         IF_NONE
770
                                           { PUSH string "DIV by 0" ; FAILWITH }
771
                                           {} ;
772
                                         CAR }
773
                                       { DROP ;
774
                                         DUP 2 ;
775
                                         GET 30 ;
776
                                         UNIT ;
777
                                         VIEW "get_cash_price_in_token" nat ;
778
                                         IF_NONE { PUSH nat 40 ; FAILWITH } {} ;
779
                                         PUSH nat 1000000000000 ;
780
                                         DUP 4 ;
781
                                         GET 7 ;
782
                                         DUP 5 ;
783
                                         GET 5 ;
784
                                         MUL ;
785
                                         MUL ;
786
                                         SWAP ;
787
                                         DUP 4 ;
788
                                         GET 15 ;
789
                                         DUP 5 ;
790
                                         GET 13 ;
791
                                         MUL ;
792
                                         MUL ;
793
                                         DUP 4 ;
794
                                         GET 21 ;
795
                                         SWAP ;
796
                                         DIG 2 ;
797
                                         ADD ;
798
                                         SWAP ;
799
                                         INT ;
800
                                         SWAP ;
801
                                         NEG ;
802
                                         EDIV ;
803
                                         IF_NONE
804
                                           { PUSH string "DIV by 0" ; FAILWITH }
805
                                           {} ;
806
                                         CAR } ;
807
                                     ABS ;
808
                                     SWAP ;
809
                                     PUSH mutez 0 ;
810
                                     DIG 2 ;
811
                                     TRANSFER_TOKENS ;
812
                                     SWAP ;
813
                                     NIL operation ;
814
                                     DIG 2 ;
815
                                     CONS ;
816
                                     PAIR } }
817
                               { DUP 2 ;
818
                                 GET 17 ;
819
                                 SENDER ;
820
                                 COMPARE ;
821
                                 NEQ ;
822
                                 IF
823
                                   { DROP 2 ; PUSH nat 26 ; FAILWITH }
824
                                   { UPDATE 19 ; NIL operation ; PAIR } } }
825
                           { IF_LEFT
826
                               { SELF %updatePools ;
827
                                 SELF %removeLiquidityInternal ;
828
                                 SWAP ;
829
                                 PUSH mutez 0 ;
830
                                 UNIT ;
831
                                 TRANSFER_TOKENS ;
832
                                 SENDER ;
833
                                 DIG 3 ;
834
                                 PAIR ;
835
                                 DIG 2 ;
836
                                 PUSH mutez 0 ;
837
                                 DIG 2 ;
838
                                 TRANSFER_TOKENS ;
839
                                 DIG 2 ;
840
                                 NIL operation ;
841
                                 DIG 2 ;
842
                                 CONS ;
843
                                 DIG 2 ;
844
                                 CONS ;
845
                                 PAIR }
846
                               { UNPAIR ;
847
                                 UNPAIR 5 ;
848
                                 PUSH nat 0 ;
849
                                 DUP 8 ;
850
                                 GET 27 ;
851
                                 COMPARE ;
852
                                 GT ;
853
                                 IF
854
                                   { DROP 7 ; PUSH nat 6 ; FAILWITH }
855
                                   { DIG 4 ;
856
                                     NOW ;
857
                                     COMPARE ;
858
                                     GE ;
859
                                     IF
860
                                       { DROP 6 ; PUSH nat 3 ; FAILWITH }
861
                                       { SELF_ADDRESS ;
862
                                         SENDER ;
863
                                         COMPARE ;
864
                                         NEQ ;
865
                                         IF
866
                                           { DROP 6 ; PUSH nat 39 ; FAILWITH }
867
                                           { DUP 6 ;
868
                                             GET 21 ;
869
                                             DUP 7 ;
870
                                             GET 13 ;
871
                                             DUP 4 ;
872
                                             MUL ;
873
                                             EDIV ;
874
                                             IF_NONE
875
                                               { PUSH string "DIV by 0" ; FAILWITH }
876
                                               {} ;
877
                                             CAR ;
878
                                             DUP 7 ;
879
                                             GET 21 ;
880
                                             DUP 8 ;
881
                                             GET 5 ;
882
                                             DUP 5 ;
883
                                             MUL ;
884
                                             EDIV ;
885
                                             IF_NONE
886
                                               { PUSH string "DIV by 0" ; FAILWITH }
887
                                               {} ;
888
                                             CAR ;
889
                                             DIG 4 ;
890
                                             DUP 3 ;
891
                                             COMPARE ;
892
                                             LT ;
893
                                             IF
894
                                               { DROP 7 ; PUSH nat 11 ; FAILWITH }
895
                                               { DIG 4 ;
896
                                                 DUP 2 ;
897
                                                 COMPARE ;
898
                                                 LT ;
899
                                                 IF
900
                                                   { DROP 6 ; PUSH nat 13 ; FAILWITH }
901
                                                   { DUP 4 ;
902
                                                     DUP 7 ;
903
                                                     GET 21 ;
904
                                                     SUB ;
905
                                                     ISNAT ;
906
                                                     IF_NONE
907
                                                       { PUSH nat 14 ; FAILWITH }
908
                                                       {} ;
909
                                                     DUP 2 ;
910
                                                     DUP 8 ;
911
                                                     GET 5 ;
912
                                                     SUB ;
913
                                                     ISNAT ;
914
                                                     IF_NONE
915
                                                       { PUSH nat 15 ; FAILWITH }
916
                                                       {} ;
917
                                                     DUP 4 ;
918
                                                     DUP 9 ;
919
                                                     GET 13 ;
920
                                                     SUB ;
921
                                                     ISNAT ;
922
                                                     IF_NONE
923
                                                       { PUSH nat 16 ; FAILWITH }
924
                                                       {} ;
925
                                                     DIG 6 ;
926
                                                     PUSH int 0 ;
927
                                                     SUB ;
928
                                                     DIG 7 ;
929
                                                     DUP 9 ;
930
                                                     GET 23 ;
931
                                                     CONTRACT %mintOrBurn (pair
932
                                                                            (int %quantity)
933
                                                                            (address %target)) ;
934
                                                     IF_NONE
935
                                                       { PUSH nat 12 ; FAILWITH }
936
                                                       {} ;
937
                                                     PUSH mutez 0 ;
938
                                                     DIG 2 ;
939
                                                     DIG 3 ;
940
                                                     PAIR ;
941
                                                     TRANSFER_TOKENS ;
942
                                                     DIG 4 ;
943
                                                     DUP 7 ;
944
                                                     SELF_ADDRESS ;
945
                                                     DUP 10 ;
946
                                                     DUP ;
947
                                                     CAR ;
948
                                                     CONTRACT %transfer (list (pair
949
                                                                               address
950
                                                                               (list (pair
951
                                                                                      address
952
                                                                                      (pair
953
                                                                                        nat
954
                                                                                        nat))))) ;
955
                                                     IF_NONE
956
                                                       { PUSH nat 0 ; FAILWITH }
957
                                                       {} ;
958
                                                     PUSH mutez 0 ;
959
                                                     NIL (pair address
960
                                                               (list (pair address
961
                                                                          (pair nat nat)))) ;
962
                                                     NIL (pair address (pair nat nat)) ;
963
                                                     DIG 7 ;
964
                                                     DIG 5 ;
965
                                                     GET 3 ;
966
                                                     PAIR ;
967
                                                     DIG 6 ;
968
                                                     PAIR ;
969
                                                     CONS ;
970
                                                     DIG 4 ;
971
                                                     PAIR ;
972
                                                     CONS ;
973
                                                     TRANSFER_TOKENS ;
974
                                                     DIG 5 ;
975
                                                     DIG 6 ;
976
                                                     SELF_ADDRESS ;
977
                                                     DUP 9 ;
978
                                                     DUP ;
979
                                                     GET 9 ;
980
                                                     CONTRACT %transfer (list (pair
981
                                                                               address
982
                                                                               (list (pair
983
                                                                                      address
984
                                                                                      (pair
985
                                                                                        nat
986
                                                                                        nat))))) ;
987
                                                     IF_NONE
988
                                                       { PUSH nat 0 ; FAILWITH }
989
                                                       {} ;
990
                                                     PUSH mutez 0 ;
991
                                                     NIL (pair address
992
                                                               (list (pair address
993
                                                                          (pair nat nat)))) ;
994
                                                     NIL (pair address (pair nat nat)) ;
995
                                                     DIG 7 ;
996
                                                     DIG 5 ;
997
                                                     GET 11 ;
998
                                                     PAIR ;
999
                                                     DIG 6 ;
1000
                                                     PAIR ;
1001
                                                     CONS ;
1002
                                                     DIG 4 ;
1003
                                                     PAIR ;
1004
                                                     CONS ;
1005
                                                     TRANSFER_TOKENS ;
1006
                                                     DIG 6 ;
1007
                                                     DIG 4 ;
1008
                                                     UPDATE 13 ;
1009
                                                     DIG 5 ;
1010
                                                     UPDATE 21 ;
1011
                                                     DIG 4 ;
1012
                                                     UPDATE 5 ;
1013
                                                     NIL operation ;
1014
                                                     DIG 2 ;
1015
                                                     CONS ;
1016
                                                     DIG 2 ;
1017
                                                     CONS ;
1018
                                                     DIG 2 ;
1019
                                                     CONS ;
1020
                                                     PAIR } } } } } } } }
1021
                       { IF_LEFT
1022
                           { DIG 2 ;
1023
                             DIG 3 ;
1024
                             DROP 2 ;
1025
                             IF_LEFT
1026
                               { PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ;
1027
                                 DUP 3 ;
1028
                                 GET 23 ;
1029
                                 COMPARE ;
1030
                                 NEQ ;
1031
                                 IF
1032
                                   { DROP 2 ; PUSH nat 24 ; FAILWITH }
1033
                                   { UPDATE 23 ; NIL operation ; PAIR } }
1034
                               { DUP 2 ;
1035
                                 GET 17 ;
1036
                                 SENDER ;
1037
                                 COMPARE ;
1038
                                 NEQ ;
1039
                                 IF
1040
                                   { DROP 2 ; PUSH nat 26 ; FAILWITH }
1041
                                   { UPDATE 25 ; NIL operation ; PAIR } } }
1042
                           { IF_LEFT
1043
                               { DIG 2 ;
1044
                                 DIG 3 ;
1045
                                 DROP 2 ;
1046
                                 SELF %updatePools ;
1047
                                 SELF %tokenToCashInternal ;
1048
                                 SWAP ;
1049
                                 PUSH mutez 0 ;
1050
                                 UNIT ;
1051
                                 TRANSFER_TOKENS ;
1052
                                 SENDER ;
1053
                                 DIG 3 ;
1054
                                 PAIR ;
1055
                                 DIG 2 ;
1056
                                 PUSH mutez 0 ;
1057
                                 DIG 2 ;
1058
                                 TRANSFER_TOKENS ;
1059
                                 DIG 2 ;
1060
                                 NIL operation ;
1061
                                 DIG 2 ;
1062
                                 CONS ;
1063
                                 DIG 2 ;
1064
                                 CONS ;
1065
                                 PAIR }
1066
                               { UNPAIR ;
1067
                                 UNPAIR 4 ;
1068
                                 PUSH nat 0 ;
1069
                                 DUP 7 ;
1070
                                 GET 27 ;
1071
                                 COMPARE ;
1072
                                 GT ;
1073
                                 IF
1074
                                   { DROP 8 ; PUSH nat 6 ; FAILWITH }
1075
                                   { DIG 3 ;
1076
                                     NOW ;
1077
                                     COMPARE ;
1078
                                     GE ;
1079
                                     IF
1080
                                       { DROP 7 ; PUSH nat 3 ; FAILWITH }
1081
                                       { SELF_ADDRESS ;
1082
                                         SENDER ;
1083
                                         COMPARE ;
1084
                                         NEQ ;
1085
                                         IF
1086
                                           { DROP 7 ; PUSH nat 39 ; FAILWITH }
1087
                                           { DUP 5 ;
1088
                                             GET 30 ;
1089
                                             UNIT ;
1090
                                             VIEW "get_token_price_in_cash" nat ;
1091
                                             IF_NONE { PUSH nat 40 ; FAILWITH } {} ;
1092
                                             PUSH nat 1000000000000 ;
1093
                                             DUP 7 ;
1094
                                             GET 15 ;
1095
                                             MUL ;
1096
                                             SWAP ;
1097
                                             DUP 7 ;
1098
                                             GET 7 ;
1099
                                             MUL ;
1100
                                             DUP ;
1101
                                             DUP 8 ;
1102
                                             GET 5 ;
1103
                                             MUL ;
1104
                                             DUP 3 ;
1105
                                             DUP 9 ;
1106
                                             GET 13 ;
1107
                                             MUL ;
1108
                                             DUP ;
1109
                                             DUP 3 ;
1110
                                             PAIR ;
1111
                                             DIG 11 ;
1112
                                             SWAP ;
1113
                                             EXEC ;
1114
                                             CAR ;
1115
                                             DIG 4 ;
1116
                                             DIG 2 ;
1117
                                             DIG 3 ;
1118
                                             PAIR ;
1119
                                             DIG 2 ;
1120
                                             PUSH int 5 ;
1121
                                             PAIR ;
1122
                                             PUSH nat 0 ;
1123
                                             DIG 4 ;
1124
                                             DUP 7 ;
1125
                                             MUL ;
1126
                                             PAIR ;
1127
                                             PAIR ;
1128
                                             PAIR ;
1129
                                             DIG 7 ;
1130
                                             SWAP ;
1131
                                             EXEC ;
1132
                                             EDIV ;
1133
                                             IF_NONE
1134
                                               { PUSH string "DIV by 0" ; FAILWITH }
1135
                                               {} ;
1136
                                             CAR ;
1137
                                             DUP 6 ;
1138
                                             GET 29 ;
1139
                                             CDR ;
1140
                                             DUP 2 ;
1141
                                             DUP 8 ;
1142
                                             GET 29 ;
1143
                                             CAR ;
1144
                                             MUL ;
1145
                                             EDIV ;
1146
                                             IF_NONE
1147
                                               { PUSH string "DIV by 0" ; FAILWITH }
1148
                                               {} ;
1149
                                             CAR ;
1150
                                             DIG 4 ;
1151
                                             DUP 2 ;
1152
                                             COMPARE ;
1153
                                             LT ;
1154
                                             IF { DROP ; PUSH nat 8 ; FAILWITH } {} ;
1155
                                             PUSH int 2 ;
1156
                                             DUP 2 ;
1157
                                             DIG 3 ;
1158
                                             SUB ;
1159
                                             EDIV ;
1160
                                             IF_NONE
1161
                                               { PUSH string "DIV by 0" ; FAILWITH }
1162
                                               {} ;
1163
                                             CAR ;
1164
                                             ISNAT ;
1165
                                             IF_NONE { PUSH nat 1 ; FAILWITH } {} ;
1166
                                             DUP 4 ;
1167
                                             SELF_ADDRESS ;
1168
                                             DIG 6 ;
1169
                                             DUP 8 ;
1170
                                             DUP ;
1171
                                             CAR ;
1172
                                             CONTRACT %transfer (list (pair address
1173
                                                                           (list (pair
1174
                                                                                  address
1175
                                                                                  (pair
1176
                                                                                    nat
1177
                                                                                    nat))))) ;
1178
                                             IF_NONE { PUSH nat 0 ; FAILWITH } {} ;
1179
                                             PUSH mutez 0 ;
1180
                                             NIL (pair address
1181
                                                       (list (pair address (pair nat nat)))) ;
1182
                                             NIL (pair address (pair nat nat)) ;
1183
                                             DIG 7 ;
1184
                                             DIG 5 ;
1185
                                             GET 3 ;
1186
                                             PAIR ;
1187
                                             DIG 6 ;
1188
                                             PAIR ;
1189
                                             CONS ;
1190
                                             DIG 4 ;
1191
                                             PAIR ;
1192
                                             CONS ;
1193
                                             TRANSFER_TOKENS ;
1194
                                             DUP 3 ;
1195
                                             DIG 4 ;
1196
                                             SELF_ADDRESS ;
1197
                                             DUP 8 ;
1198
                                             DUP ;
1199
                                             GET 9 ;
1200
                                             CONTRACT %transfer (list (pair address
1201
                                                                           (list (pair
1202
                                                                                  address
1203
                                                                                  (pair
1204
                                                                                    nat
1205
                                                                                    nat))))) ;
1206
                                             IF_NONE { PUSH nat 0 ; FAILWITH } {} ;
1207
                                             PUSH mutez 0 ;
1208
                                             NIL (pair address
1209
                                                       (list (pair address (pair nat nat)))) ;
1210
                                             NIL (pair address (pair nat nat)) ;
1211
                                             DIG 7 ;
1212
                                             DIG 5 ;
1213
                                             GET 11 ;
1214
                                             PAIR ;
1215
                                             DIG 6 ;
1216
                                             PAIR ;
1217
                                             CONS ;
1218
                                             DIG 4 ;
1219
                                             PAIR ;
1220
                                             CONS ;
1221
                                             TRANSFER_TOKENS ;
1222
                                             DUP 3 ;
1223
                                             DUP 7 ;
1224
                                             GET 25 ;
1225
                                             SELF_ADDRESS ;
1226
                                             DUP 9 ;
1227
                                             DUP ;
1228
                                             GET 9 ;
1229
                                             CONTRACT %transfer (list (pair address
1230
                                                                           (list (pair
1231
                                                                                  address
1232
                                                                                  (pair
1233
                                                                                    nat
1234
                                                                                    nat))))) ;
1235
                                             IF_NONE { PUSH nat 0 ; FAILWITH } {} ;
1236
                                             PUSH mutez 0 ;
1237
                                             NIL (pair address
1238
                                                       (list (pair address (pair nat nat)))) ;
1239
                                             NIL (pair address (pair nat nat)) ;
1240
                                             DIG 7 ;
1241
                                             DIG 5 ;
1242
                                             GET 11 ;
1243
                                             PAIR ;
1244
                                             DIG 6 ;
1245
                                             PAIR ;
1246
                                             CONS ;
1247
                                             DIG 4 ;
1248
                                             PAIR ;
1249
                                             CONS ;
1250
                                             TRANSFER_TOKENS ;
1251
                                             DIG 3 ;
1252
                                             DIG 4 ;
1253
                                             ADD ;
1254
                                             DUP 6 ;
1255
                                             GET 13 ;
1256
                                             SUB ;
1257
                                             ISNAT ;
1258
                                             IF_NONE { PUSH nat 1 ; FAILWITH } {} ;
1259
                                             DUP 6 ;
1260
                                             DIG 5 ;
1261
                                             DIG 6 ;
1262
                                             GET 5 ;
1263
                                             ADD ;
1264
                                             UPDATE 5 ;
1265
                                             SWAP ;
1266
                                             UPDATE 13 ;
1267
                                             NIL operation ;
1268
                                             DIG 2 ;
1269
                                             CONS ;
1270
                                             DIG 2 ;
1271
                                             CONS ;
1272
                                             DIG 2 ;
1273
                                             CONS ;
1274
                                             PAIR } } } } } } } }
1275
               { DIG 2 ;
1276
                 DIG 3 ;
1277
                 DROP 2 ;
1278
                 IF_LEFT
1279
                   { IF_LEFT
1280
                       { DUP 2 ;
1281
                         GET 9 ;
1282
                         SENDER ;
1283
                         COMPARE ;
1284
                         NEQ ;
1285
                         PUSH nat 0 ;
1286
                         DUP 4 ;
1287
                         GET 27 ;
1288
                         COMPARE ;
1289
                         EQ ;
1290
                         OR ;
1291
                         IF
1292
                           { DROP 2 ; PUSH nat 33 ; FAILWITH }
1293
                           { IF_CONS { SWAP ; DROP ; CDR } { PUSH nat 31 ; FAILWITH } ;
1294
                             PUSH nat 1 ;
1295
                             DUP 3 ;
1296
                             GET 27 ;
1297
                             SUB ;
1298
                             ISNAT ;
1299
                             IF_NONE { PUSH nat 41 ; FAILWITH } {} ;
1300
                             DUG 2 ;
1301
                             UPDATE 13 ;
1302
                             SWAP ;
1303
                             UPDATE 27 ;
1304
                             NIL operation ;
1305
                             PAIR } }
1306
                       { DROP ;
1307
                         SELF_ADDRESS ;
1308
                         SENDER ;
1309
                         COMPARE ;
1310
                         NEQ ;
1311
                         SOURCE ;
1312
                         SENDER ;
1313
                         COMPARE ;
1314
                         NEQ ;
1315
                         AND ;
1316
                         IF
1317
                           { DROP ; PUSH nat 25 ; FAILWITH }
1318
                           { SELF %updateTokenPoolInternal ;
1319
                             SELF %updateCashPoolInternal ;
1320
                             DUP 3 ;
1321
                             CAR ;
1322
                             CONTRACT %balance_of (pair (list (pair address nat))
1323
                                                        (contract (list (pair
1324
                                                                        (pair address
1325
                                                                              nat)
1326
                                                                        nat)))) ;
1327
                             IF_NONE { PUSH nat 28 ; FAILWITH } {} ;
1328
                             PUSH mutez 0 ;
1329
                             DIG 3 ;
1330
                             NIL (pair address nat) ;
1331
                             DUP 6 ;
1332
                             GET 3 ;
1333
                             SELF_ADDRESS ;
1334
                             PAIR ;
1335
                             CONS ;
1336
                             PAIR ;
1337
                             TRANSFER_TOKENS ;
1338
                             DUP 3 ;
1339
                             GET 9 ;
1340
                             CONTRACT %balance_of (pair (list (pair address nat))
1341
                                                        (contract (list (pair
1342
                                                                        (pair address
1343
                                                                              nat)
1344
                                                                        nat)))) ;
1345
                             IF_NONE { PUSH nat 35 ; FAILWITH } {} ;
1346
                             PUSH mutez 0 ;
1347
                             DIG 3 ;
1348
                             NIL (pair address nat) ;
1349
                             DUP 6 ;
1350
                             GET 11 ;
1351
                             SELF_ADDRESS ;
1352
                             PAIR ;
1353
                             CONS ;
1354
                             PAIR ;
1355
                             TRANSFER_TOKENS ;
1356
                             DIG 2 ;
1357
                             PUSH nat 2 ;
1358
                             UPDATE 27 ;
1359
                             NIL operation ;
1360
                             DIG 3 ;
1361
                             CONS ;
1362
                             DIG 2 ;
1363
                             CONS ;
1364
                             PAIR } } }
1365
                   { DUP 2 ;
1366
                     CAR ;
1367
                     SENDER ;
1368
                     COMPARE ;
1369
                     NEQ ;
1370
                     PUSH nat 0 ;
1371
                     DUP 4 ;
1372
                     GET 27 ;
1373
                     COMPARE ;
1374
                     EQ ;
1375
                     OR ;
1376
                     IF
1377
                       { DROP 2 ; PUSH nat 30 ; FAILWITH }
1378
                       { IF_CONS { SWAP ; DROP ; CDR } { PUSH nat 31 ; FAILWITH } ;
1379
                         PUSH nat 1 ;
1380
                         DUP 3 ;
1381
                         GET 27 ;
1382
                         SUB ;
1383
                         ISNAT ;
1384
                         IF_NONE { PUSH nat 41 ; FAILWITH } {} ;
1385
                         DUG 2 ;
1386
                         UPDATE 5 ;
1387
                         SWAP ;
1388
                         UPDATE 27 ;
1389
                         NIL operation ;
1390
                         PAIR } } } } } ;
1391
  view "tokensPool" unit nat { CDR ; GET 5 } ;
1392
  view "cashPool" unit nat { CDR ; GET 13 } ;
1393
  view "liquidityTotal" unit nat { CDR ; GET 21 } ;
1394
  view "lqtPriceInCashLazyCalculated" unit nat
1395
        { CDR ;
1396
          DUP ;
1397
          GET 30 ;
1398
          UNIT ;
1399
          VIEW "get_token_price_in_cash" nat ;
1400
          IF_NONE { PUSH nat 40 ; FAILWITH } {} ;
1401
          DUP 2 ;
1402
          GET 7 ;
1403
          DUP 3 ;
1404
          GET 5 ;
1405
          MUL ;
1406
          MUL ;
1407
          PUSH nat 1000000000000 ;
1408
          DUP 3 ;
1409
          GET 15 ;
1410
          DUP 4 ;
1411
          GET 13 ;
1412
          MUL ;
1413
          MUL ;
1414
          DIG 2 ;
1415
          GET 21 ;
1416
          SWAP ;
1417
          DIG 2 ;
1418
          ADD ;
1419
          SWAP ;
1420
          INT ;
1421
          SWAP ;
1422
          NEG ;
1423
          EDIV ;
1424
          IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1425
          CAR ;
1426
          ABS } ;
1427
  view "lqtPriceInTokenLazyCalculated" unit nat
1428
        { CDR ;
1429
          DUP ;
1430
          GET 30 ;
1431
          UNIT ;
1432
          VIEW "get_cash_price_in_token" nat ;
1433
          IF_NONE { PUSH nat 40 ; FAILWITH } {} ;
1434
          PUSH nat 1000000000000 ;
1435
          DUP 3 ;
1436
          GET 7 ;
1437
          DUP 4 ;
1438
          GET 5 ;
1439
          MUL ;
1440
          MUL ;
1441
          SWAP ;
1442
          DUP 3 ;
1443
          GET 15 ;
1444
          DUP 4 ;
1445
          GET 13 ;
1446
          MUL ;
1447
          MUL ;
1448
          DIG 2 ;
1449
          GET 21 ;
1450
          SWAP ;
1451
          DIG 2 ;
1452
          ADD ;
1453
          SWAP ;
1454
          INT ;
1455
          SWAP ;
1456
          NEG ;
1457
          EDIV ;
1458
          IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1459
          CAR ;
1460
          ABS } }