@taqueria/plugin-contract-types 0.0.0-pr-91-a8fa7172

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/Readme.md +212 -0
  2. package/example/contracts/example-contract-1.tz +1409 -0
  3. package/example/contracts/example-contract-2.tz +798 -0
  4. package/example/contracts/example-contract-3.json +7080 -0
  5. package/example/contracts/example-contract-4.tz +1374 -0
  6. package/example/contracts/example-contract-5.tz +1424 -0
  7. package/example/contracts/example-contract-6.tz +675 -0
  8. package/example/contracts/example-contract-7.tz +384 -0
  9. package/example/contracts/example-contract-8.tz +28 -0
  10. package/example/contracts/example-contract-9.tz +1010 -0
  11. package/example/example-usage-type-utilities.ts +35 -0
  12. package/example/example-usage.ts +410 -0
  13. package/example/types-file/example-contract-1.code.ts +6 -0
  14. package/example/types-file/example-contract-1.types.ts +87 -0
  15. package/example/types-file/example-contract-2.code.ts +6 -0
  16. package/example/types-file/example-contract-2.types.ts +122 -0
  17. package/example/types-file/example-contract-4.code.ts +6 -0
  18. package/example/types-file/example-contract-4.types.ts +97 -0
  19. package/example/types-file/example-contract-5.code.ts +6 -0
  20. package/example/types-file/example-contract-5.types.ts +173 -0
  21. package/example/types-file/example-contract-6.code.ts +6 -0
  22. package/example/types-file/example-contract-6.types.ts +122 -0
  23. package/example/types-file/example-contract-7.code.ts +6 -0
  24. package/example/types-file/example-contract-7.types.ts +78 -0
  25. package/example/types-file/example-contract-8.code.ts +6 -0
  26. package/example/types-file/example-contract-8.types.ts +86 -0
  27. package/example/types-file/example-contract-9.code.ts +6 -0
  28. package/example/types-file/example-contract-9.types.ts +29 -0
  29. package/example/types-file/type-aliases.ts +81 -0
  30. package/example/types-file/type-utils.ts +36 -0
  31. package/index.js +969 -0
  32. package/index.js.map +1 -0
  33. package/index.ts +32 -0
  34. package/package.json +55 -0
  35. package/run.ts +3 -0
  36. package/src/cli-process.ts +111 -0
  37. package/src/cli.ts +34 -0
  38. package/src/generator/common.ts +21 -0
  39. package/src/generator/contract-name.ts +6 -0
  40. package/src/generator/contract-parser.ts +358 -0
  41. package/src/generator/process.ts +66 -0
  42. package/src/generator/schema-output.ts +54 -0
  43. package/src/generator/typescript-output.ts +239 -0
  44. package/src/taquito-contract-type-generator.ts +4 -0
  45. package/src/type-aliases-file-content.ts +83 -0
  46. package/src/type-aliases.ts +80 -0
  47. package/src/type-utils-file-content.ts +38 -0
  48. package/src/type-utils.ts +35 -0
  49. package/tasks.ts +127 -0
  50. package/test/generator.spec.ts +69 -0
  51. package/tsconfig.json +13 -0
@@ -0,0 +1,675 @@
1
+ { parameter
2
+ (or (or (or %admin (or (unit %confirm_admin) (bool %pause)) (address %set_admin))
3
+ (or %assets
4
+ (or (pair %balance_of
5
+ (list %requests (pair (address %owner) (nat %token_id)))
6
+ (contract %callback
7
+ (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance)))))
8
+ (list %transfer
9
+ (pair (address %from_)
10
+ (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))))
11
+ (list %update_operators
12
+ (or (pair %add_operator (address %owner) (pair (address %operator) (nat %token_id)))
13
+ (pair %remove_operator (address %owner) (pair (address %operator) (nat %token_id)))))))
14
+ (or %tokens
15
+ (or (list %burn_tokens (pair (address %owner) (pair (nat %token_id) (nat %amount))))
16
+ (pair %create_token (nat %token_id) (map %token_info string bytes)))
17
+ (list %mint_tokens (pair (address %owner) (pair (nat %token_id) (nat %amount)))))) ;
18
+ storage
19
+ (pair (pair (option %admin
20
+ (pair (pair (address %admin) (bool %paused)) (option %pending_admin address)))
21
+ (pair %assets
22
+ (pair (big_map %ledger (pair address nat) nat)
23
+ (big_map %operators (pair address (pair address nat)) unit))
24
+ (pair (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes)))
25
+ (big_map %token_total_supply nat nat))))
26
+ (big_map %metadata string bytes)) ;
27
+ code { PUSH string "FA2_TOKEN_UNDEFINED" ;
28
+ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
29
+ LAMBDA
30
+ (pair (pair address nat) (big_map (pair address nat) nat))
31
+ nat
32
+ { UNPAIR ; GET ; IF_NONE { PUSH nat 0 } {} } ;
33
+ DUP ;
34
+ LAMBDA
35
+ (pair (lambda (pair (pair address nat) (big_map (pair address nat) nat)) nat)
36
+ (pair (pair address nat) (pair nat (big_map (pair address nat) nat))))
37
+ (big_map (pair address nat) nat)
38
+ { UNPAIR ;
39
+ SWAP ;
40
+ UNPAIR ;
41
+ UNPAIR ;
42
+ DIG 2 ;
43
+ UNPAIR ;
44
+ DIG 3 ;
45
+ DIG 3 ;
46
+ PAIR ;
47
+ DUP 3 ;
48
+ SWAP ;
49
+ DUP ;
50
+ DUG 2 ;
51
+ PAIR ;
52
+ DIG 4 ;
53
+ SWAP ;
54
+ EXEC ;
55
+ DIG 2 ;
56
+ ADD ;
57
+ PUSH nat 0 ;
58
+ SWAP ;
59
+ DUP ;
60
+ DUG 2 ;
61
+ COMPARE ;
62
+ EQ ;
63
+ IF { DROP ; NONE nat ; SWAP ; UPDATE }
64
+ { DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } } ;
65
+ SWAP ;
66
+ APPLY ;
67
+ DUP 3 ;
68
+ DUP 3 ;
69
+ PAIR ;
70
+ LAMBDA
71
+ (pair (pair (lambda (pair (pair address nat) (big_map (pair address nat) nat)) nat) string)
72
+ (pair (pair address nat) (pair nat (big_map (pair address nat) nat))))
73
+ (big_map (pair address nat) nat)
74
+ { UNPAIR ;
75
+ UNPAIR ;
76
+ DIG 2 ;
77
+ UNPAIR ;
78
+ UNPAIR ;
79
+ DIG 2 ;
80
+ UNPAIR ;
81
+ DIG 3 ;
82
+ DIG 3 ;
83
+ PAIR ;
84
+ DUP 3 ;
85
+ SWAP ;
86
+ DUP ;
87
+ DUG 2 ;
88
+ PAIR ;
89
+ DIG 4 ;
90
+ SWAP ;
91
+ EXEC ;
92
+ DIG 2 ;
93
+ SWAP ;
94
+ SUB ;
95
+ ISNAT ;
96
+ IF_NONE
97
+ { DROP 2 ; FAILWITH }
98
+ { DIG 3 ;
99
+ DROP ;
100
+ PUSH nat 0 ;
101
+ SWAP ;
102
+ DUP ;
103
+ DUG 2 ;
104
+ COMPARE ;
105
+ EQ ;
106
+ IF { DROP ; NONE nat ; SWAP ; UPDATE }
107
+ { DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } } } ;
108
+ SWAP ;
109
+ APPLY ;
110
+ LAMBDA
111
+ (option (pair (pair address bool) (option address)))
112
+ unit
113
+ { IF_NONE
114
+ { UNIT }
115
+ { CAR ;
116
+ CAR ;
117
+ SENDER ;
118
+ COMPARE ;
119
+ NEQ ;
120
+ IF { PUSH string "NOT_AN_ADMIN" ; FAILWITH } { UNIT } } } ;
121
+ DIG 6 ;
122
+ UNPAIR ;
123
+ IF_LEFT
124
+ { DIG 6 ;
125
+ DROP ;
126
+ IF_LEFT
127
+ { DIG 3 ;
128
+ DROP ;
129
+ DIG 3 ;
130
+ DROP ;
131
+ DIG 3 ;
132
+ DROP ;
133
+ DIG 3 ;
134
+ DROP ;
135
+ SWAP ;
136
+ DUP ;
137
+ DUG 2 ;
138
+ CAR ;
139
+ CAR ;
140
+ SWAP ;
141
+ IF_LEFT
142
+ { IF_LEFT
143
+ { DROP ;
144
+ DIG 2 ;
145
+ DROP ;
146
+ IF_NONE
147
+ { PUSH string "NO_ADMIN_CAPABILITIES_CONFIGURED" ; FAILWITH }
148
+ { DUP ;
149
+ CDR ;
150
+ IF_NONE
151
+ { DROP ; PUSH string "NO_PENDING_ADMIN" ; FAILWITH }
152
+ { SENDER ;
153
+ COMPARE ;
154
+ EQ ;
155
+ IF { NONE address ; SWAP ; CAR ; CDR ; SENDER ; PAIR ; PAIR ; SOME }
156
+ { DROP ; PUSH string "NOT_A_PENDING_ADMIN" ; FAILWITH } } } ;
157
+ NIL operation ;
158
+ PAIR }
159
+ { SWAP ;
160
+ DUP ;
161
+ DUG 2 ;
162
+ DIG 4 ;
163
+ SWAP ;
164
+ EXEC ;
165
+ DROP ;
166
+ SWAP ;
167
+ IF_NONE
168
+ { DROP ; PUSH string "NO_ADMIN_CAPABILITIES_CONFIGURED" ; FAILWITH }
169
+ { DUP ; CDR ; DUG 2 ; CAR ; CAR ; PAIR ; PAIR ; SOME } ;
170
+ NIL operation ;
171
+ PAIR } }
172
+ { SWAP ;
173
+ DUP ;
174
+ DUG 2 ;
175
+ DIG 4 ;
176
+ SWAP ;
177
+ EXEC ;
178
+ DROP ;
179
+ SWAP ;
180
+ IF_NONE
181
+ { DROP ; PUSH string "NO_ADMIN_CAPABILITIES_CONFIGURED" ; FAILWITH }
182
+ { SWAP ; SOME ; SWAP ; CAR ; PAIR ; SOME } ;
183
+ NIL operation ;
184
+ PAIR } ;
185
+ UNPAIR ;
186
+ DUP 3 ;
187
+ CDR ;
188
+ DIG 3 ;
189
+ CAR ;
190
+ CDR ;
191
+ DIG 3 ;
192
+ PAIR ;
193
+ PAIR ;
194
+ SWAP ;
195
+ PAIR }
196
+ { DIG 2 ;
197
+ DROP ;
198
+ SWAP ;
199
+ DUP ;
200
+ DUG 2 ;
201
+ CAR ;
202
+ CAR ;
203
+ IF_NONE
204
+ { UNIT }
205
+ { CAR ; CDR ; IF { PUSH string "PAUSED" ; FAILWITH } { UNIT } } ;
206
+ DROP ;
207
+ SWAP ;
208
+ DUP ;
209
+ DUG 2 ;
210
+ CAR ;
211
+ CDR ;
212
+ SWAP ;
213
+ IF_LEFT
214
+ { IF_LEFT
215
+ { DIG 3 ;
216
+ DROP ;
217
+ DIG 3 ;
218
+ DROP ;
219
+ SWAP ;
220
+ DUP ;
221
+ DUG 2 ;
222
+ CDR ;
223
+ CAR ;
224
+ DUP 3 ;
225
+ CAR ;
226
+ CAR ;
227
+ DIG 2 ;
228
+ DUP ;
229
+ CAR ;
230
+ MAP { DUP 4 ;
231
+ SWAP ;
232
+ DUP ;
233
+ DUG 2 ;
234
+ CDR ;
235
+ MEM ;
236
+ NOT ;
237
+ IF { DROP ; DUP 7 ; FAILWITH }
238
+ { DUP 3 ; SWAP ; DUP ; DUG 2 ; PAIR ; DUP 8 ; SWAP ; EXEC ; SWAP ; PAIR } } ;
239
+ DIG 2 ;
240
+ DROP ;
241
+ DIG 2 ;
242
+ DROP ;
243
+ DIG 4 ;
244
+ DROP ;
245
+ DIG 4 ;
246
+ DROP ;
247
+ SWAP ;
248
+ CDR ;
249
+ PUSH mutez 0 ;
250
+ DIG 2 ;
251
+ TRANSFER_TOKENS ;
252
+ SWAP ;
253
+ NIL operation ;
254
+ DIG 2 ;
255
+ CONS ;
256
+ PAIR }
257
+ { DIG 5 ;
258
+ DROP ;
259
+ SWAP ;
260
+ DUP ;
261
+ DUG 2 ;
262
+ LAMBDA
263
+ (pair (pair address address) (pair nat (big_map (pair address (pair address nat)) unit)))
264
+ unit
265
+ { UNPAIR ;
266
+ UNPAIR ;
267
+ DIG 2 ;
268
+ UNPAIR ;
269
+ DUP 4 ;
270
+ DUP 4 ;
271
+ COMPARE ;
272
+ EQ ;
273
+ IF { DROP 4 ; UNIT }
274
+ { DIG 3 ;
275
+ PAIR ;
276
+ DIG 2 ;
277
+ PAIR ;
278
+ MEM ;
279
+ IF { UNIT } { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } } } ;
280
+ DIG 2 ;
281
+ DUP 3 ;
282
+ CAR ;
283
+ CAR ;
284
+ SWAP ;
285
+ ITER { DUP ;
286
+ DUG 2 ;
287
+ CDR ;
288
+ ITER { SWAP ;
289
+ DUP 5 ;
290
+ CDR ;
291
+ CAR ;
292
+ DUP 3 ;
293
+ CDR ;
294
+ CAR ;
295
+ MEM ;
296
+ NOT ;
297
+ IF { DROP 2 ; DUP 8 ; FAILWITH }
298
+ { DUP 5 ;
299
+ CAR ;
300
+ CDR ;
301
+ DUP 3 ;
302
+ CDR ;
303
+ CAR ;
304
+ PAIR ;
305
+ SENDER ;
306
+ DUP 5 ;
307
+ CAR ;
308
+ PAIR ;
309
+ PAIR ;
310
+ DUP 5 ;
311
+ SWAP ;
312
+ EXEC ;
313
+ DROP ;
314
+ SWAP ;
315
+ DUP ;
316
+ DUG 2 ;
317
+ CDR ;
318
+ CDR ;
319
+ PAIR ;
320
+ SWAP ;
321
+ DUP ;
322
+ DUG 2 ;
323
+ CDR ;
324
+ CAR ;
325
+ DUP 4 ;
326
+ CAR ;
327
+ PAIR ;
328
+ PAIR ;
329
+ DUP 8 ;
330
+ SWAP ;
331
+ EXEC ;
332
+ SWAP ;
333
+ DUP ;
334
+ DUG 2 ;
335
+ CDR ;
336
+ CDR ;
337
+ PAIR ;
338
+ SWAP ;
339
+ DUP ;
340
+ DUG 2 ;
341
+ CDR ;
342
+ CAR ;
343
+ DIG 2 ;
344
+ CAR ;
345
+ PAIR ;
346
+ PAIR ;
347
+ DUP 8 ;
348
+ SWAP ;
349
+ EXEC } } ;
350
+ SWAP ;
351
+ DROP } ;
352
+ SWAP ;
353
+ DROP ;
354
+ SWAP ;
355
+ DROP ;
356
+ DIG 3 ;
357
+ DROP ;
358
+ DIG 3 ;
359
+ DROP ;
360
+ DIG 3 ;
361
+ DROP ;
362
+ SWAP ;
363
+ DUP ;
364
+ DUG 2 ;
365
+ CDR ;
366
+ DIG 2 ;
367
+ CAR ;
368
+ CDR ;
369
+ DIG 2 ;
370
+ PAIR ;
371
+ PAIR ;
372
+ NIL operation ;
373
+ PAIR } }
374
+ { DIG 3 ;
375
+ DROP ;
376
+ DIG 3 ;
377
+ DROP ;
378
+ DIG 3 ;
379
+ DROP ;
380
+ DIG 3 ;
381
+ DROP ;
382
+ SWAP ;
383
+ DUP ;
384
+ DUG 2 ;
385
+ CAR ;
386
+ CDR ;
387
+ SWAP ;
388
+ SENDER ;
389
+ DUG 2 ;
390
+ ITER { SWAP ;
391
+ DUP 3 ;
392
+ DUP 3 ;
393
+ IF_LEFT {} {} ;
394
+ CAR ;
395
+ COMPARE ;
396
+ EQ ;
397
+ IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
398
+ SWAP ;
399
+ IF_LEFT
400
+ { SWAP ;
401
+ UNIT ;
402
+ SOME ;
403
+ DUP 3 ;
404
+ CDR ;
405
+ CDR ;
406
+ DUP 4 ;
407
+ CDR ;
408
+ CAR ;
409
+ PAIR ;
410
+ DIG 3 ;
411
+ CAR ;
412
+ PAIR ;
413
+ UPDATE }
414
+ { DUP ;
415
+ DUG 2 ;
416
+ CDR ;
417
+ CDR ;
418
+ DUP 3 ;
419
+ CDR ;
420
+ CAR ;
421
+ PAIR ;
422
+ DIG 2 ;
423
+ CAR ;
424
+ PAIR ;
425
+ NONE unit ;
426
+ SWAP ;
427
+ UPDATE } } ;
428
+ SWAP ;
429
+ DROP ;
430
+ SWAP ;
431
+ DUP ;
432
+ DUG 2 ;
433
+ CDR ;
434
+ SWAP ;
435
+ DIG 2 ;
436
+ CAR ;
437
+ CAR ;
438
+ PAIR ;
439
+ PAIR ;
440
+ NIL operation ;
441
+ PAIR } ;
442
+ UNPAIR ;
443
+ DUP 3 ;
444
+ CDR ;
445
+ DIG 2 ;
446
+ DIG 3 ;
447
+ CAR ;
448
+ CAR ;
449
+ PAIR ;
450
+ PAIR ;
451
+ SWAP ;
452
+ PAIR } }
453
+ { DIG 5 ;
454
+ DROP ;
455
+ SWAP ;
456
+ DUP ;
457
+ DUG 2 ;
458
+ CAR ;
459
+ CAR ;
460
+ DIG 3 ;
461
+ SWAP ;
462
+ EXEC ;
463
+ DROP ;
464
+ SWAP ;
465
+ DUP ;
466
+ DUG 2 ;
467
+ CAR ;
468
+ CDR ;
469
+ SWAP ;
470
+ IF_LEFT
471
+ { DIG 4 ;
472
+ DROP ;
473
+ IF_LEFT
474
+ { SWAP ;
475
+ DUP ;
476
+ DUG 2 ;
477
+ CAR ;
478
+ CAR ;
479
+ SWAP ;
480
+ DUP ;
481
+ DUG 2 ;
482
+ ITER { DUP ;
483
+ DUG 2 ;
484
+ CDR ;
485
+ CDR ;
486
+ PAIR ;
487
+ SWAP ;
488
+ DUP ;
489
+ DUG 2 ;
490
+ CDR ;
491
+ CAR ;
492
+ DIG 2 ;
493
+ CAR ;
494
+ PAIR ;
495
+ PAIR ;
496
+ DUP 5 ;
497
+ SWAP ;
498
+ EXEC } ;
499
+ DIG 4 ;
500
+ DROP ;
501
+ DUP 3 ;
502
+ CDR ;
503
+ CDR ;
504
+ DIG 2 ;
505
+ ITER { SWAP ;
506
+ DUP ;
507
+ DUP 3 ;
508
+ CDR ;
509
+ CAR ;
510
+ GET ;
511
+ IF_NONE
512
+ { DROP 2 ; DUP 5 ; FAILWITH }
513
+ { DUP 3 ;
514
+ CDR ;
515
+ CDR ;
516
+ SWAP ;
517
+ SUB ;
518
+ ISNAT ;
519
+ IF_NONE { DUP 6 ; FAILWITH } {} ;
520
+ SOME ;
521
+ DIG 2 ;
522
+ CDR ;
523
+ CAR ;
524
+ UPDATE } } ;
525
+ DIG 4 ;
526
+ DROP ;
527
+ DIG 4 ;
528
+ DROP ;
529
+ DUP 3 ;
530
+ CDR ;
531
+ DIG 3 ;
532
+ CAR ;
533
+ CDR ;
534
+ DIG 3 ;
535
+ PAIR ;
536
+ PAIR ;
537
+ DUP ;
538
+ DUG 2 ;
539
+ CDR ;
540
+ CAR ;
541
+ PAIR ;
542
+ SWAP ;
543
+ CAR ;
544
+ PAIR ;
545
+ NIL operation ;
546
+ PAIR }
547
+ { DIG 3 ;
548
+ DROP ;
549
+ DIG 3 ;
550
+ DROP ;
551
+ DIG 3 ;
552
+ DROP ;
553
+ DUP ;
554
+ CAR ;
555
+ DUP 3 ;
556
+ CDR ;
557
+ CAR ;
558
+ SWAP ;
559
+ DUP ;
560
+ DUG 2 ;
561
+ GET ;
562
+ IF_NONE
563
+ { DUP 3 ;
564
+ CDR ;
565
+ CDR ;
566
+ DUP 4 ;
567
+ CDR ;
568
+ CAR ;
569
+ DIG 3 ;
570
+ DUP 4 ;
571
+ SWAP ;
572
+ SOME ;
573
+ SWAP ;
574
+ UPDATE ;
575
+ PAIR ;
576
+ DUP 3 ;
577
+ CAR ;
578
+ PAIR ;
579
+ DIG 2 ;
580
+ CDR ;
581
+ CDR ;
582
+ PUSH nat 0 ;
583
+ DIG 3 ;
584
+ SWAP ;
585
+ SOME ;
586
+ SWAP ;
587
+ UPDATE ;
588
+ SWAP ;
589
+ DUP ;
590
+ DUG 2 ;
591
+ CDR ;
592
+ CAR ;
593
+ PAIR ;
594
+ SWAP ;
595
+ CAR ;
596
+ PAIR }
597
+ { DROP 4 ; PUSH string "FA2_DUP_TOKEN_ID" ; FAILWITH } ;
598
+ NIL operation ;
599
+ PAIR } }
600
+ { DIG 3 ;
601
+ DROP ;
602
+ DIG 4 ;
603
+ DROP ;
604
+ SWAP ;
605
+ DUP ;
606
+ DUG 2 ;
607
+ CAR ;
608
+ CAR ;
609
+ SWAP ;
610
+ DUP ;
611
+ DUG 2 ;
612
+ ITER { DUP ;
613
+ DUG 2 ;
614
+ CDR ;
615
+ CDR ;
616
+ PAIR ;
617
+ SWAP ;
618
+ DUP ;
619
+ DUG 2 ;
620
+ CDR ;
621
+ CAR ;
622
+ DIG 2 ;
623
+ CAR ;
624
+ PAIR ;
625
+ PAIR ;
626
+ DUP 5 ;
627
+ SWAP ;
628
+ EXEC } ;
629
+ DIG 4 ;
630
+ DROP ;
631
+ DUP 3 ;
632
+ CDR ;
633
+ CDR ;
634
+ DIG 2 ;
635
+ ITER { SWAP ;
636
+ DUP ;
637
+ DUP 3 ;
638
+ CDR ;
639
+ CAR ;
640
+ GET ;
641
+ IF_NONE
642
+ { DROP 2 ; DUP 4 ; FAILWITH }
643
+ { DUP 3 ; CDR ; CDR ; ADD ; SOME ; DIG 2 ; CDR ; CAR ; UPDATE } } ;
644
+ DIG 4 ;
645
+ DROP ;
646
+ DUP 3 ;
647
+ CDR ;
648
+ DIG 3 ;
649
+ CAR ;
650
+ CDR ;
651
+ DIG 3 ;
652
+ PAIR ;
653
+ PAIR ;
654
+ DUP ;
655
+ DUG 2 ;
656
+ CDR ;
657
+ CAR ;
658
+ PAIR ;
659
+ SWAP ;
660
+ CAR ;
661
+ PAIR ;
662
+ NIL operation ;
663
+ PAIR } ;
664
+ UNPAIR ;
665
+ DUP 3 ;
666
+ CDR ;
667
+ DIG 2 ;
668
+ DIG 3 ;
669
+ CAR ;
670
+ CAR ;
671
+ PAIR ;
672
+ PAIR ;
673
+ SWAP ;
674
+ PAIR } } }
675
+