diff --git a/batcher/batcher-ghostnet.tz b/batcher/batcher-ghostnet.tz index 6d05f1ff..be37be01 100644 --- a/batcher/batcher-ghostnet.tz +++ b/batcher/batcher-ghostnet.tz @@ -1,76 +1,77 @@ { parameter - (or (or (or (or (pair %add_or_update_metadata (string %key) (bytes %value)) - (pair %add_token_swap_pair - (pair %swap - (pair %from - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (pair %to - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string))) - (address %oracle_address) - (string %oracle_asset_name) - (nat %oracle_precision) - (bool %is_disabled_for_deposits))) - (or (nat %amend_token_and_pair_limit) (address %change_admin_address))) - (or (or (nat %change_deposit_time_window) (mutez %change_fee)) - (or (pair %change_oracle_source_of_pair - (string %pair_name) - (address %oracle_address) - (string %oracle_asset_name) - (nat %oracle_precision)) - (nat %change_scale_factor)))) - (or (or (or (pair %deposit - (pair %swap - (pair %from - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (pair %to - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string))) - (timestamp %created_at) - (nat %side) - (nat %tolerance)) - (string %disable_swap_pair_for_deposit)) - (or (string %enable_swap_pair_for_deposit) (unit %redeem))) - (or (or (string %remove_metadata) - (pair %remove_token_swap_pair - (pair %swap - (pair %from - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (pair %to - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string))) - (address %oracle_address) - (string %oracle_asset_name) - (nat %oracle_precision) - (bool %is_disabled_for_deposits))) - (string %tick)))) ; + (or (or (or (or (or (pair %add_or_update_metadata (string %key) (bytes %value)) + (pair %add_token_swap_pair + (pair %swap + (pair %from + (pair %token + (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string)) + (nat %amount)) + (pair %to + (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string))) + (address %oracle_address) + (string %oracle_asset_name) + (nat %oracle_precision) + (bool %is_disabled_for_deposits))) + (or (nat %amend_token_and_pair_limit) (pair %cancel string string))) + (or (or (address %change_admin_address) (nat %change_deposit_time_window)) + (or (mutez %change_fee) (address %change_fee_recipient_address)))) + (or (or (or (address %change_marketmaker_address) + (pair %change_oracle_source_of_pair + (string %pair_name) + (address %oracle_address) + (string %oracle_asset_name) + (nat %oracle_precision))) + (or (pair %deposit + (pair %swap + (pair %from + (pair %token + (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string)) + (nat %amount)) + (pair %to + (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string))) + (timestamp %created_at) + (nat %side) + (nat %tolerance)) + (string %disable_swap_pair_for_deposit))) + (or (or (string %enable_swap_pair_for_deposit) (unit %redeem)) + (or (nat %redeemByBatch) (string %remove_metadata))))) + (or (pair %remove_token_swap_pair + (pair %swap + (pair %from + (pair %token + (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string)) + (nat %amount)) + (pair %to + (nat %token_id) + (string %name) + (option %address address) + (nat %decimals) + (option %standard string))) + (address %oracle_address) + (string %oracle_asset_name) + (nat %oracle_precision) + (bool %is_disabled_for_deposits)) + (string %tick))) ; storage (pair (pair (pair (pair (address %administrator) (pair %batch_set @@ -108,28 +109,20 @@ (nat %sell_exact_volume) (nat %sell_plus_volume) (nat %sell_total_volume)) - (pair %pair - (pair (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)))))) + (pair %pair string string) + (nat %holdings) + (bool %market_vault_used))))) (nat %deposit_time_window_in_seconds) (mutez %fee_in_mutez)) (pair (address %fee_recipient) (nat %last_order_number)) (nat %limit_on_tokens_or_pairs) - (big_map %metadata string bytes)) - (pair (pair (big_map %rates_current + (address %marketmaker)) + (pair (pair (big_map %metadata string bytes) + (big_map %rates_current string (pair (pair %swap (string %from) (string %to)) (pair %rate (int %p) (int %q)) - (timestamp %when))) - (nat %scale_factor_for_oracle_staleness)) + (timestamp %when)))) (big_map %user_batch_ordertypes address (map nat @@ -200,6 +193,24 @@ CAR ; MUL ; PAIR ; + LAMBDA + (pair int int) + int + { UNPAIR ; + SWAP ; + PUSH int 1 ; + PAIR ; + LEFT int ; + LOOP_LEFT + { UNPAIR ; + PUSH int 0 ; + DUP 3 ; + COMPARE ; + EQ ; + IF { SWAP ; DROP ; RIGHT (pair int int) } + { PUSH int 1 ; DIG 2 ; SUB ; DUP 3 ; DIG 2 ; MUL ; PAIR ; LEFT int } } ; + SWAP ; + DROP } ; LAMBDA (pair (pair (pair nat string (option address) nat (option string)) nat) (map string (pair (pair nat string (option address) nat (option string)) nat))) @@ -236,191 +247,368 @@ SOME ; DIG 2 ; UPDATE } } ; - LAMBDA - (pair int int) - int - { UNPAIR ; - SWAP ; - PUSH int 1 ; - PAIR ; - LEFT int ; - LOOP_LEFT - { UNPAIR ; - PUSH int 0 ; - DUP 3 ; - COMPARE ; - EQ ; - IF { SWAP ; DROP ; RIGHT (pair int int) } - { PUSH int 1 ; DIG 2 ; SUB ; DUP 3 ; DIG 2 ; MUL ; PAIR ; LEFT int } } ; - SWAP ; - DROP } ; DIG 4 ; UNPAIR ; IF_LEFT - { DIG 2 ; - DIG 3 ; + { DIG 3 ; DIG 4 ; - DIG 5 ; - DROP 4 ; + DROP 2 ; IF_LEFT - { IF_LEFT + { DIG 3 ; + DROP ; + IF_LEFT { IF_LEFT - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - DUP 3 ; - CAR ; - DUP ; - CDR ; - DUP ; - CDR ; - DUP 6 ; - CAR ; - CDR ; - CDR ; - CDR ; - DUP 6 ; - CAR ; - GET ; - IF_NONE - { DIG 5 ; + { DIG 2 ; + DROP ; + IF_LEFT + { DUP 2 ; CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + DUP 3 ; CDR ; - CDR ; - CDR ; + DUP ; + CAR ; + DUP ; + CAR ; DUP 6 ; CDR ; - DIG 6 ; CAR ; - SWAP ; - SOME ; - SWAP ; - UPDATE } - { DROP ; - DIG 5 ; CAR ; - CDR ; - CDR ; - CDR ; + CAR ; DUP 6 ; - CDR ; - SOME ; - DIG 6 ; CAR ; - UPDATE } ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - NIL operation ; - PAIR } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - PUSH nat 6 ; - DUP 2 ; - CAR ; - CAR ; - CAR ; - GET 7 ; - COMPARE ; - LT ; - IF { DROP 2 ; PUSH nat 134 ; FAILWITH } - { PUSH nat 6 ; - DUP 2 ; - CAR ; - CDR ; - GET 7 ; - COMPARE ; - LT ; - IF { DROP 2 ; PUSH nat 134 ; FAILWITH } - { PUSH nat 6 ; - DUP 2 ; - GET 7 ; - COMPARE ; - NEQ ; - IF { DROP 2 ; PUSH nat 133 ; FAILWITH } - { DUP 2 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 3 ; - CAR ; - CDR ; - CDR ; - CAR ; - DUP 3 ; - CAR ; - DUP ; - CAR ; - CAR ; - DUP 2 ; - CDR ; - DUP 4 ; - PUSH nat 1 ; - DUP 7 ; - SIZE ; - ADD ; - COMPARE ; - GT ; - IF { DIG 3 ; DROP ; PUSH nat 127 ; FAILWITH } - { PUSH bool False ; - DUP 8 ; - CDR ; - CDR ; - ITER { CDR ; - SWAP ; - DUP 2 ; + GET ; + IF_NONE + { DIG 5 ; + CDR ; + CAR ; + CAR ; + CAR ; + DUP 6 ; + CDR ; + DIG 6 ; + CAR ; + SWAP ; + SOME ; + SWAP ; + UPDATE } + { DROP ; + DIG 5 ; + CDR ; + CAR ; + CAR ; + CAR ; + DUP 6 ; + CDR ; + SOME ; + DIG 6 ; + CAR ; + UPDATE } ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 2 ; + NIL operation ; + PAIR } + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + PUSH nat 6 ; + DUP 2 ; + CAR ; + CAR ; + CAR ; + GET 7 ; + COMPARE ; + LT ; + IF { DROP 2 ; PUSH nat 134 ; FAILWITH } + { PUSH nat 6 ; + DUP 2 ; + CAR ; + CDR ; + GET 7 ; + COMPARE ; + LT ; + IF { DROP 2 ; PUSH nat 134 ; FAILWITH } + { PUSH nat 6 ; + DUP 2 ; + GET 7 ; + COMPARE ; + NEQ ; + IF { DROP 2 ; PUSH nat 133 ; FAILWITH } + { DUP 2 ; + CDR ; + CDR ; + DUP 3 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 4 ; + CAR ; + CDR ; + CDR ; + CAR ; + DUP 4 ; + CAR ; + DUP ; + CAR ; + CAR ; + DUP 2 ; + CDR ; + DUP 4 ; + PUSH nat 1 ; + DUP 7 ; + SIZE ; + ADD ; + COMPARE ; + GT ; + IF { DIG 3 ; DROP ; PUSH nat 127 ; FAILWITH } + { PUSH bool False ; + DUP 7 ; + ITER { CDR ; + SWAP ; + DUP 2 ; + GET 8 ; + DUP 5 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 6 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 7 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 8 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DUP 8 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + OR } ; + PUSH bool False ; + DUP 8 ; + ITER { CDR ; + SWAP ; + DUP 2 ; + GET 8 ; + DUP 5 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 6 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 7 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 8 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DUP 8 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + OR } ; + AND ; + IF { PUSH nat 0 } + { PUSH bool False ; + DUP 7 ; + ITER { CDR ; + SWAP ; + DUP 2 ; + GET 8 ; + DUP 5 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 6 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 7 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 8 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DUP 8 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + OR } ; + PUSH bool False ; + DUP 8 ; + ITER { CDR ; + SWAP ; + DUP 2 ; + GET 8 ; + DUP 5 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 6 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 7 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 8 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DUP 8 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + OR } ; + OR ; + IF { PUSH nat 1 } { PUSH nat 2 } } ; + DIG 4 ; + SWAP ; + DUP 7 ; + SIZE ; + ADD ; + COMPARE ; + GT ; + IF { PUSH nat 126 ; FAILWITH } {} } ; + DUP 3 ; + CDR ; + GET 3 ; + DIG 3 ; + CAR ; + CAR ; + GET 3 ; + PAIR ; + DUP 4 ; + DUP 2 ; + CAR ; + DIG 2 ; + CDR ; + DUP 2 ; + DUP 2 ; + COMPARE ; + GT ; + IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE + { DUP 4 ; + DUP 3 ; + GET 3 ; + GET ; + IF_NONE + { DIG 3 ; DUP 3 ; DIG 3 ; GET 3 ; SWAP ; SOME ; SWAP ; UPDATE } + { DUP 3 ; GET 8 ; - DUP 5 ; + DUP 2 ; GET 8 ; COMPARE ; EQ ; - DUP 3 ; + DUP 4 ; GET 7 ; - DUP 6 ; + DUP 3 ; GET 7 ; COMPARE ; EQ ; - DUP 4 ; + DUP 5 ; GET 5 ; - DUP 7 ; + DUP 4 ; GET 5 ; COMPARE ; EQ ; - DUP 5 ; + DUP 6 ; GET 3 ; - DUP 8 ; + DUP 5 ; GET 3 ; COMPARE ; EQ ; - DIG 5 ; + DIG 6 ; CAR ; - DUP 8 ; + DIG 5 ; CAR ; COMPARE ; EQ ; @@ -428,40 +616,40 @@ AND ; AND ; AND ; - OR } ; - PUSH bool False ; - DUP 9 ; - CDR ; - CDR ; - ITER { CDR ; - SWAP ; - DUP 2 ; + IF { DIG 2 } { DIG 2 ; DROP ; PUSH nat 115 ; FAILWITH } } ; + DUP ; + DUP 3 ; + GET 3 ; + GET ; + IF_NONE + { DUP 2 ; DIG 2 ; GET 3 ; SWAP ; SOME ; SWAP ; UPDATE } + { DUP 3 ; GET 8 ; - DUP 5 ; + DUP 2 ; GET 8 ; COMPARE ; EQ ; - DUP 3 ; + DUP 4 ; GET 7 ; - DUP 6 ; + DUP 3 ; GET 7 ; COMPARE ; EQ ; - DUP 4 ; + DUP 5 ; GET 5 ; - DUP 7 ; + DUP 4 ; GET 5 ; COMPARE ; EQ ; - DUP 5 ; + DUP 6 ; GET 3 ; - DUP 8 ; + DUP 5 ; GET 3 ; COMPARE ; EQ ; - DIG 5 ; + DIG 6 ; CAR ; - DUP 8 ; + DIG 5 ; CAR ; COMPARE ; EQ ; @@ -469,1770 +657,4102 @@ AND ; AND ; AND ; - OR } ; - AND ; - IF { PUSH nat 0 } - { PUSH bool False ; - DUP 8 ; - CDR ; - CDR ; - ITER { CDR ; - SWAP ; - DUP 2 ; - GET 8 ; - DUP 5 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 6 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 7 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 8 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DUP 8 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - OR } ; - PUSH bool False ; - DUP 9 ; - CDR ; - CDR ; - ITER { CDR ; - SWAP ; - DUP 2 ; - GET 8 ; - DUP 5 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 6 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 7 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 8 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DUP 8 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - OR } ; - OR ; - IF { PUSH nat 1 } { PUSH nat 2 } } ; - DIG 4 ; - SWAP ; - DUP 8 ; - CDR ; - CDR ; - SIZE ; - ADD ; - COMPARE ; - GT ; - IF { PUSH nat 126 ; FAILWITH } {} } ; - DUP 3 ; - CDR ; - GET 3 ; - DIG 3 ; - CAR ; - CAR ; - GET 3 ; - SWAP ; - DUP 5 ; - DUP 3 ; - DUP 3 ; - COMPARE ; - GT ; - IF { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } - { SWAP ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } ; - GET ; - IF_NONE - { DUP 5 ; - CDR ; - CDR ; - DUP ; - DUP 4 ; - GET 3 ; - GET ; - IF_NONE - { DUP 3 ; DIG 3 ; GET 3 ; SWAP ; SOME ; SWAP ; UPDATE } - { DUP 4 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 7 ; + IF {} { DROP ; PUSH nat 115 ; FAILWITH } } ; DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 6 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 7 ; - GET 3 ; - DUP 5 ; + CAR ; + DUP ; + CDR ; GET 3 ; - COMPARE ; - EQ ; - DIG 7 ; + SWAP ; CAR ; - DIG 5 ; CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF {} { DROP ; PUSH nat 115 ; FAILWITH } } ; - DUP ; - DUP 3 ; - GET 3 ; - GET ; - IF_NONE - { DUP 2 ; DIG 2 ; GET 3 ; SWAP ; SOME ; SWAP ; UPDATE } - { DUP 3 ; - GET 8 ; + GET 3 ; + PAIR ; + SWAP ; DUP 2 ; + CAR ; + DIG 2 ; + CDR ; + DIG 3 ; + DUP 5 ; GET 8 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 7 ; - DUP 3 ; + DUP 6 ; GET 7 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 5 ; - DUP 4 ; + DUP 7 ; GET 5 ; - COMPARE ; - EQ ; - DUP 6 ; + DUP 8 ; GET 3 ; - DUP 5 ; + DIG 8 ; + CAR ; + DUP ; + CDR ; GET 3 ; - COMPARE ; - EQ ; - DIG 6 ; + SWAP ; CAR ; - DIG 5 ; CAR ; + GET 3 ; + PAIR ; + PAIR 5 ; + DUP 4 ; + DUP 4 ; COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF {} { DROP ; PUSH nat 115 ; FAILWITH } } ; + GT ; + IF { DIG 3 ; PUSH string "/" ; CONCAT ; DIG 3 ; CONCAT } + { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 3 ; CONCAT } ; + SWAP ; + SOME ; + SWAP ; + UPDATE ; + PAIR } + { DROP 6 ; PUSH nat 116 ; FAILWITH } ; + UNPAIR ; DUP 3 ; - CAR ; - DUP ; + DIG 3 ; CDR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - SWAP ; - DUP 2 ; + DUP ; CAR ; - DIG 2 ; + DUP ; CDR ; - DIG 3 ; - DUP 5 ; - GET 8 ; - DUP 6 ; - GET 7 ; - DUP 7 ; - GET 5 ; - DUP 8 ; - GET 3 ; - DIG 8 ; - CAR ; + DIG 4 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; DUP ; CDR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - PAIR 5 ; - DUP 4 ; - DUP 4 ; - COMPARE ; - GT ; - IF { DIG 3 ; PUSH string "/" ; CONCAT ; DIG 3 ; CONCAT } - { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 3 ; CONCAT } ; - SWAP ; - SOME ; - SWAP ; - UPDATE ; - PAIR } - { DROP 5 ; PUSH nat 116 ; FAILWITH } ; - UNPAIR ; - DUP 3 ; - DIG 3 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 4 ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CDR ; - DIG 2 ; - UPDATE 2 ; - UPDATE 2 ; - NIL operation ; - PAIR } } } } } - { IF_LEFT - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - CDR ; - CDR ; - SIZE ; - DUP 2 ; - COMPARE ; - LT ; - IF { DROP 2 ; PUSH nat 128 ; FAILWITH } - { DUP 2 ; - CDR ; - CAR ; - CDR ; - CDR ; - SIZE ; - DUP 2 ; - COMPARE ; - LT ; - IF { DROP 2 ; PUSH nat 129 ; FAILWITH } - { DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CDR ; - DUP ; - CDR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - NIL operation ; - PAIR } } } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - NIL operation ; - PAIR } } } - { IF_LEFT - { IF_LEFT - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - PUSH nat 600 ; - DUP 2 ; - COMPARE ; - LT ; - IF { DROP 2 ; PUSH nat 131 ; FAILWITH } - { PUSH nat 3600 ; - DUP 2 ; - COMPARE ; - GT ; - IF { DROP 2 ; PUSH nat 132 ; FAILWITH } - { DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - NIL operation ; - PAIR } } } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 4 ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - NIL operation ; - PAIR } } - { IF_LEFT - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; - DUP ; - GET 3 ; - DUP 2 ; - GET 5 ; - VIEW "getPrice" (pair timestamp nat) ; - IF_NONE { PUSH nat 123 ; FAILWITH } { DROP } ; - DUP 3 ; - DUP 4 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 6 ; - CDR ; - CAR ; - CDR ; - CDR ; - DIG 5 ; - DUP 7 ; - GET 3 ; - UPDATE 3 ; - DUP 7 ; - GET 5 ; - UPDATE 5 ; - DUP 7 ; - GET 6 ; - UPDATE 7 ; - SOME ; - DIG 6 ; - CAR ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - NIL operation ; - PAIR } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - PUSH nat 1 ; - DUP 2 ; - COMPARE ; - LT ; - IF { DROP 2 ; PUSH nat 135 ; FAILWITH } - { PUSH nat 10 ; - DUP 2 ; - COMPARE ; - GT ; - IF { DROP 2 ; PUSH nat 136 ; FAILWITH } - { DUP 2 ; - DIG 2 ; - CDR ; - DUP ; - CAR ; - DUP ; - CAR ; - DIG 4 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 2 ; - NIL operation ; - PAIR } } } } } } - { IF_LEFT - { DIG 2 ; - DIG 4 ; - DROP 2 ; - IF_LEFT - { DIG 2 ; - DIG 3 ; - DROP 2 ; - IF_LEFT - { DUP ; - GET 5 ; - PUSH nat 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; UNIT ; LEFT unit } - { PUSH nat 1 ; - SWAP ; - COMPARE ; - EQ ; - IF { UNIT ; RIGHT unit } { PUSH nat 106 ; FAILWITH } } ; - DUP 3 ; - CDR ; - CDR ; - DUP 3 ; - CAR ; - DUP ; - CDR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - DUP 2 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 2 ; - IF_LEFT { DROP } { DROP ; SWAP } ; - SWAP ; - PAIR ; - NOW ; - DUP 4 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 3 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; - DUP ; - GET 8 ; - IF { DROP 5 ; PUSH nat 125 ; FAILWITH } - { DUP 4 ; - CAR ; - DUP 5 ; - GET 5 ; - PUSH nat 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; UNIT ; LEFT unit } - { PUSH nat 1 ; - SWAP ; - COMPARE ; - EQ ; - IF { UNIT ; RIGHT unit } { PUSH nat 106 ; FAILWITH } } ; - IF_LEFT - { DROP ; - SWAP ; - CAR ; - CAR ; - CAR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - COMPARE ; - EQ ; - IF {} { PUSH nat 138 ; FAILWITH } } - { DROP ; - SWAP ; - CAR ; + DIG 2 ; + UPDATE 2 ; + UPDATE 2 ; + NIL operation ; + PAIR } } } } } + { IF_LEFT + { DIG 2 ; + DROP ; + DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CDR ; + CDR ; + SIZE ; + DUP 2 ; + COMPARE ; + LT ; + IF { DROP 2 ; PUSH nat 128 ; FAILWITH } + { DUP 2 ; CDR ; - GET 3 ; - SWAP ; - CAR ; CAR ; - GET 3 ; + CDR ; + CDR ; + SIZE ; + DUP 2 ; COMPARE ; - EQ ; - IF {} { PUSH nat 138 ; FAILWITH } } ; - DUP 4 ; - CAR ; - CAR ; - CDR ; - CDR ; - AMOUNT ; - DUP 2 ; - DUP 2 ; - COMPARE ; - LT ; - IF { DROP 6 ; PUSH nat 113 ; FAILWITH } - { DUP 2 ; - SWAP ; - COMPARE ; - GT ; - IF { DROP 5 ; PUSH nat 130 ; FAILWITH } - { DUP 5 ; - CAR ; - CAR ; - CDR ; - CAR ; - DUP 6 ; - CAR ; - CAR ; - CAR ; - CDR ; - CDR ; - DUP 7 ; - CAR ; - CAR ; - CAR ; - CDR ; - CAR ; - DUP 6 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE { PUSH nat 0 } {} ; - GET ; - IF_NONE - { DROP ; - DUP 5 ; - CAR ; - CAR ; - CAR ; - CDR ; - PUSH nat 0 ; - DUP 2 ; - CAR ; - ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; - PUSH nat 1 ; - ADD ; - DUP 5 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PAIR 8 ; - DIG 5 ; - RIGHT - (or (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) - (pair timestamp timestamp)) ; - DIG 3 ; - PAIR 4 ; - DUP 2 ; - DUP 3 ; - CDR ; - DUP 3 ; - SOME ; - DUP 4 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DIG 2 ; - CAR ; - DUP 3 ; - CAR ; - SOME ; - DUP 4 ; - GET 6 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { DUP ; - GET 3 ; - IF_LEFT - { DIG 2 ; - DROP ; - IF_LEFT - { DROP 2 ; - PUSH nat 0 ; - DUP 6 ; - CAR ; - CAR ; - CAR ; - CDR ; - CAR ; - ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; - PUSH nat 1 ; - ADD ; - DUP 4 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PAIR 8 ; - DIG 4 ; - RIGHT - (or (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) - (pair timestamp timestamp)) ; - DIG 3 ; - PAIR 4 ; - DUP 5 ; - CAR ; - CAR ; - CAR ; - CDR ; - DUP 6 ; - CAR ; - CAR ; - CAR ; - CDR ; - CDR ; - DUP 3 ; - SOME ; - DUP 4 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DUP 6 ; - CAR ; - CAR ; - CAR ; - CDR ; - CAR ; - DUP 3 ; - CAR ; - SOME ; - DUP 4 ; - GET 6 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { DIG 3 ; DROP 2 ; DUP 5 ; CAR ; CAR ; CAR ; CDR } } - { DUP 3 ; - INT ; - ADD ; - DIG 4 ; - COMPARE ; - GE ; - IF { DUP ; - GET 3 ; - IF_LEFT - { SWAP ; - DIG 2 ; - DROP 2 ; - IF_LEFT - { DROP ; PUSH nat 105 ; FAILWITH } - { DROP ; PUSH nat 105 ; FAILWITH } } - { DIG 2 ; - INT ; - DUP 2 ; - ADD ; - PAIR ; - RIGHT - (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) ; - LEFT timestamp ; - UPDATE 3 } ; - DUP 5 ; - CAR ; - CAR ; - CAR ; - CDR ; - DUP 6 ; - CAR ; - CAR ; - CAR ; - CDR ; - CDR ; - DUP 3 ; - SOME ; - DUP 4 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DUP 6 ; - CAR ; - CAR ; - CAR ; - CDR ; - CAR ; - DUP 3 ; - CAR ; - SOME ; - DUP 4 ; - GET 6 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { SWAP ; DROP ; DUP 5 ; CAR ; CAR ; CAR ; CDR } } } ; - SWAP ; - DUP ; - GET 3 ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } - { DROP ; PUSH bool True } ; - IF { DUP ; - GET 3 ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } - { DROP ; PUSH bool True } ; - IF { DIG 3 ; DROP } - { DUP 6 ; - CDR ; - CAR ; - CDR ; - CDR ; - DIG 4 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; - DUP ; - GET 3 ; - SWAP ; - GET 5 ; - VIEW "getPrice" (pair timestamp nat) ; - IF_NONE { PUSH nat 124 ; FAILWITH } {} ; - CAR ; - DUP 6 ; - CAR ; - CAR ; - CDR ; - CAR ; - INT ; - DUP 7 ; - CDR ; - CAR ; - CAR ; - CDR ; - INT ; - MUL ; - NOW ; - SUB ; - COMPARE ; - LT ; - IF {} { PUSH nat 120 ; FAILWITH } } ; - DUP 5 ; - DIG 5 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DUP 6 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; + LT ; + IF { DROP 2 ; PUSH nat 129 ; FAILWITH } + { DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CDR ; + DUP ; + CDR ; + DIG 4 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + NIL operation ; + PAIR } } } + { PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + SENDER ; + DUP 2 ; + UNPAIR ; + DUP 5 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 3 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } ; + GET ; + IF_NONE + { DROP 4 ; PUSH nat 117 ; FAILWITH } + { DUP 4 ; + CDR ; + CDR ; + DUP 2 ; + CAR ; + DUP 2 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + NOW ; + DUP 7 ; + CAR ; + CAR ; + CAR ; + CDR ; + DUP ; + CDR ; + DUP 2 ; + CAR ; + DUP 9 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 0 } {} ; + GET ; + IF_NONE + { PUSH nat 0 ; + DUP 2 ; + CAR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; + PUSH nat 1 ; + ADD ; + PUSH bool False ; + PUSH nat 0 ; + DIG 9 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DIG 6 ; + RIGHT + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; + DUP 7 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DUP 9 ; + CAR ; + CAR ; + CDR ; + CAR ; + DUP 2 ; + GET 3 ; + IF_LEFT + { SWAP ; + DROP ; + IF_LEFT + { DROP 2 ; + PUSH nat 0 ; DUP 2 ; CAR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; PUSH nat 1 ; - DUP 3 ; - CAR ; - CDR ; - CAR ; - CDR ; ADD ; - DUP 7 ; - GET 5 ; + PUSH bool False ; PUSH nat 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; UNIT ; LEFT unit } - { PUSH nat 1 ; - SWAP ; - COMPARE ; - EQ ; - IF { UNIT ; RIGHT unit } { PUSH nat 106 ; FAILWITH } } ; - DUP 8 ; - GET 6 ; + DIG 9 ; PUSH nat 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; UNIT ; RIGHT unit ; LEFT unit } - { PUSH nat 1 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; UNIT ; LEFT unit ; LEFT unit } - { PUSH nat 2 ; - SWAP ; - COMPARE ; - EQ ; - IF { UNIT ; RIGHT (or unit unit) } { PUSH nat 107 ; FAILWITH } } } ; - SENDER ; - DUP 6 ; - CDR ; - CDR ; - DUP 11 ; - CAR ; - DUP ; - CAR ; - CAR ; - DUP 2 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DIG 6 ; + RIGHT + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; + DUP 7 ; + DUP 3 ; + DUP 4 ; CDR ; DUP 4 ; - DUP 3 ; - GET 3 ; - GET ; - IF_NONE - { DROP 4 ; PUSH nat 110 ; FAILWITH } - { DUP 5 ; - DUP 3 ; - GET 3 ; - GET ; - IF_NONE - { DROP 5 ; PUSH nat 110 ; FAILWITH } - { DUP ; - GET 8 ; - DUP 4 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 2 ; - GET 7 ; - DUP 5 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 5 ; - DUP 6 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 3 ; - DUP 7 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 4 ; - CAR ; - DIG 6 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - DUP 2 ; - GET 8 ; - DUP 4 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 5 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 6 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 7 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DIG 6 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - AND ; - IF { DUP ; - CDR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - DUP 2 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUP 8 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 6 ; - IF_LEFT { DROP ; SWAP } { DROP ; DIG 2 } ; - DIG 2 ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - MEM ; - IF {} { PUSH nat 110 ; FAILWITH } } - { DROP 2 ; PUSH nat 110 ; FAILWITH } } } ; - PUSH bool False ; - DIG 2 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; DIG 3 ; - DIG 10 ; CAR ; - DIG 4 ; - DUP 7 ; - DUP 7 ; - PAIR 7 ; DUP 4 ; - CDR ; - CAR ; - CDR ; CAR ; - DUP 2 ; - GET 5 ; - GET ; - IF_NONE - { PUSH bool True } - { PUSH nat 0 ; - SWAP ; - ITER { CDR ; SIZE ; ADD } ; - PUSH nat 10 ; - SWAP ; - COMPARE ; - LE } ; - IF { DUP ; - GET 5 ; - DUP 5 ; - CDR ; - CAR ; - CDR ; - CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DIG 3 ; DIG 8 ; DROP 3 ; DUP 7 ; DIG 2 } } + { DIG 9 ; + DROP ; + DUP 2 ; + INT ; + ADD ; + DIG 4 ; + COMPARE ; + GE ; + IF { DUP 2 ; + GET 3 ; + IF_LEFT + { SWAP ; + DIG 2 ; + DROP 2 ; + IF_LEFT + { DROP ; PUSH nat 105 ; FAILWITH } + { DROP ; PUSH nat 105 ; FAILWITH } } + { SWAP ; + INT ; DUP 2 ; - GET ; - IF_NONE - { DUP 5 ; - CDR ; - CAR ; - CDR ; - CAR ; - EMPTY_MAP nat (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; - EMPTY_MAP (pair (or unit unit) (or (or unit unit) unit)) nat ; - DUP 5 ; - GET 7 ; - CAR ; - CDR ; - DUP 6 ; - GET 11 ; - DUP 7 ; - GET 9 ; - PAIR ; - SWAP ; - SOME ; - SWAP ; - UPDATE ; - DUP 7 ; - SWAP ; - SOME ; - SWAP ; - UPDATE ; - DIG 2 ; - SWAP ; - SOME ; - SWAP ; - UPDATE } - { DUP ; - DUP 6 ; - GET ; - IF_NONE - { EMPTY_MAP (pair (or unit unit) (or (or unit unit) unit)) nat ; - DUP 4 ; - GET 7 ; - CAR ; - CDR ; - DUP 5 ; - GET 11 ; - DUP 6 ; - GET 9 ; - PAIR ; - SWAP ; - SOME ; - SWAP ; - UPDATE ; - DUP 6 ; - SWAP ; - SOME ; - SWAP ; - UPDATE } - { DUP 4 ; - GET 11 ; - DUP 5 ; - GET 9 ; - PAIR ; - DUP 2 ; - DUP 2 ; - GET ; - IF_NONE - { SWAP ; DUP 5 ; GET 7 ; CAR ; CDR ; DIG 2 ; SWAP ; SOME ; SWAP ; UPDATE } - { DUP 6 ; GET 7 ; CAR ; CDR ; ADD ; DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } ; - SOME ; - DUP 6 ; - UPDATE } ; - DUP 6 ; - CDR ; - CAR ; - CDR ; - CAR ; - SWAP ; - SOME ; - DIG 2 ; - UPDATE } ; - DUP 6 ; - GET 5 ; - DUP 3 ; - GET 9 ; - IF_LEFT - { DROP ; - DUP 3 ; - GET 7 ; - CAR ; - CDR ; - DUP 2 ; - GET 7 ; - ADD ; - DUP 4 ; - GET 11 ; - IF_LEFT - { IF_LEFT - { DROP ; - DUP 2 ; - DUP 5 ; - GET 7 ; - CAR ; - CDR ; - DIG 3 ; - GET 3 ; - ADD ; - UPDATE 3 ; - SWAP ; - UPDATE 7 } - { DROP ; - DUP 2 ; + ADD ; + PAIR ; + RIGHT + (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) ; + LEFT timestamp ; + UPDATE 3 ; + DUP 7 ; + PAIR } ; + UNPAIR ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DROP ; DUP 7 ; DIG 2 } } } ; + DIG 2 ; + DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } ; + NOT ; + IF { PUSH nat 140 ; FAILWITH } {} ; + DIG 7 ; + CDR ; + CAR ; + CDR ; + CAR ; + DUP 8 ; + GET ; + IF_NONE + { DROP 8 ; PUSH nat 139 ; FAILWITH } + { DUP 2 ; + CAR ; + DUP 2 ; + DUP 2 ; + GET ; + IF_NONE + { SWAP ; DIG 4 ; DROP 3 ; PUSH nat 139 ; FAILWITH } + { DUP 6 ; + DUP 7 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 9 ; + CDR ; + CAR ; + CDR ; + CAR ; + DIG 7 ; + DIG 7 ; + NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + SWAP ; + UPDATE ; + SOME ; + DUP 13 ; + UPDATE ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + SWAP ; + PAIR } ; + UNPAIR ; + DUP 3 ; + GET 5 ; + DUP 2 ; + ITER { UNPAIR ; + UNPAIR ; + IF_LEFT + { DROP ; + DUP 2 ; + DUP 4 ; + GET 7 ; + SUB ; + ABS ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 3 ; + SUB ; + ABS ; + UPDATE 3 ; + SWAP ; + UPDATE 7 } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + CAR ; + SUB ; + ABS ; + UPDATE 1 ; + SWAP ; + UPDATE 7 } } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 5 ; + SUB ; + ABS ; + UPDATE 5 ; + SWAP ; + UPDATE 7 } } + { DROP ; + DUP 2 ; + DUP 4 ; + GET 14 ; + SUB ; + ABS ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 11 ; + SUB ; + ABS ; + UPDATE 11 ; + SWAP ; + UPDATE 14 } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 9 ; + SUB ; + ABS ; + UPDATE 9 ; + SWAP ; + UPDATE 14 } } + { DROP ; + DUP 3 ; + DIG 2 ; + DIG 3 ; + GET 13 ; + SUB ; + ABS ; + UPDATE 13 ; + SWAP ; + UPDATE 14 } } } ; + PUSH nat 1 ; + DUP 5 ; + GET 9 ; + SUB ; + ABS ; + DIG 4 ; + DIG 2 ; + UPDATE 5 ; + SWAP ; + UPDATE 9 ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DUP 7 ; + DIG 7 ; + CDR ; + DUP 7 ; + SOME ; + DIG 7 ; + CAR ; + UPDATE ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + DUP 5 ; + GET 8 ; + DUP 6 ; + GET 7 ; + DUP 7 ; + GET 5 ; + DIG 7 ; + GET 3 ; + DIG 6 ; + PUSH nat 1 ; + DIG 8 ; + PAIR ; + PAIR ; + PAIR 5 ; + PUSH mutez 0 ; + EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; + PAIR ; + DIG 3 ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 3 ; + DIG 3 ; + CAR ; + IF_LEFT { DROP ; DUP 4 ; CAR ; CAR ; CAR } { DROP ; DUP 4 ; CAR ; CDR } ; + PAIR ; + PAIR ; + DUP 6 ; + SWAP ; + EXEC ; + DUP 4 ; + CAR ; + CAR ; + CDR ; + CDR ; + DIG 2 ; + ADD ; + SWAP ; + PAIR } ; + SWAP ; + DIG 4 ; + DROP 2 ; + UNPAIR ; + SELF_ADDRESS ; + NIL operation ; + DIG 2 ; + ITER { CDR ; + DUP ; + CAR ; + GET 5 ; + IF_NONE + { DROP ; PUSH nat 109 ; FAILWITH } + { DUP 2 ; + CAR ; + GET 8 ; + IF_NONE + { DROP 2 ; PUSH nat 108 ; FAILWITH } + { PUSH string "FA1.2 token" ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; + CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + DIG 2 ; + CDR ; + DUP 8 ; + DUP 6 ; + PAIR 3 ; + TRANSFER_TOKENS } + { PUSH string "FA2 token" ; + SWAP ; + COMPARE ; + EQ ; + IF { CONTRACT %transfer + (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + NIL (pair address (list (pair address nat nat))) ; + NIL (pair address nat nat) ; DUP 5 ; - GET 7 ; - CAR ; CDR ; - DIG 3 ; - CAR ; - ADD ; - UPDATE 1 ; - SWAP ; - UPDATE 7 } } - { DROP ; - DUP 2 ; - DUP 5 ; - GET 7 ; - CAR ; - CDR ; - DIG 3 ; - GET 5 ; - ADD ; - UPDATE 5 ; - SWAP ; - UPDATE 7 } } - { DROP ; - DUP 3 ; - GET 7 ; - CAR ; - CDR ; - DUP 2 ; - GET 14 ; - ADD ; - DUP 4 ; - GET 11 ; - IF_LEFT - { IF_LEFT - { DROP ; - DUP 2 ; - DUP 5 ; - GET 7 ; + DIG 5 ; CAR ; - CDR ; - DIG 3 ; - GET 11 ; - ADD ; - UPDATE 11 ; - SWAP ; - UPDATE 14 } - { DROP ; - DUP 2 ; - DUP 5 ; - GET 7 ; CAR ; - CDR ; - DIG 3 ; - GET 9 ; - ADD ; - UPDATE 9 ; - SWAP ; - UPDATE 14 } } - { DROP ; - DUP 2 ; - DUP 5 ; - GET 7 ; - CAR ; - CDR ; - DIG 3 ; - GET 13 ; - ADD ; - UPDATE 13 ; - SWAP ; - UPDATE 14 } } ; - DUP 6 ; - DUP 7 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DUP 12 ; - DIG 12 ; - CDR ; - DIG 12 ; - DIG 7 ; - UPDATE 5 ; - SOME ; - DIG 10 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - DUP ; - CAR ; - DUP ; - CDR ; - DUP ; - CAR ; - DIG 6 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - SELF_ADDRESS ; - DIG 4 ; - CAR ; - CDR ; - CAR ; - CAR ; - CONTRACT unit ; - IF_NONE - { DIG 4 ; DROP ; PUSH nat 102 ; FAILWITH } - { DIG 5 ; UNIT ; TRANSFER_TOKENS } ; - DUP 5 ; - GET 7 ; - CAR ; - DUP ; - CAR ; - GET 5 ; - IF_NONE - { DIG 2 ; DIG 5 ; DROP 3 ; PUSH nat 109 ; FAILWITH } - { DIG 6 ; - GET 5 ; - DUP 3 ; - CAR ; - GET 8 ; - IF_NONE - { SWAP ; DIG 2 ; DIG 4 ; DROP 4 ; PUSH nat 108 ; FAILWITH } - { PUSH string "FA1.2 token" ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; - SWAP ; - CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - DIG 3 ; - CDR ; - DIG 5 ; - DIG 4 ; - PAIR 3 ; - TRANSFER_TOKENS } - { PUSH string "FA2 token" ; - SWAP ; - COMPARE ; - EQ ; - IF { SWAP ; - CONTRACT %transfer - (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - NIL (pair address (list (pair address nat nat))) ; - NIL (pair address nat nat) ; - DUP 6 ; - CDR ; - DIG 6 ; - CAR ; - CAR ; - DIG 8 ; - PAIR 3 ; - CONS ; - DIG 4 ; - PAIR ; - CONS ; - TRANSFER_TOKENS } - { SWAP ; DIG 2 ; DIG 4 ; DROP 4 ; PUSH nat 108 ; FAILWITH } } } } ; - DUP 3 ; - DIG 3 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 6 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - NIL operation ; - DIG 2 ; - CONS ; - DIG 2 ; - CONS ; - PAIR } - { DROP 7 ; PUSH nat 112 ; FAILWITH } } - { DROP 6 ; PUSH nat 103 ; FAILWITH } } } } } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 2 ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; - DUP 3 ; - DUP 4 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 6 ; - CDR ; - CAR ; - CDR ; - CDR ; - DIG 5 ; - PUSH bool True ; - UPDATE 8 ; - SOME ; - DIG 6 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - NIL operation ; - PAIR } } - { IF_LEFT - { DIG 2 ; - DIG 3 ; - DROP 2 ; - DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 2 ; - GET ; - IF_NONE { PUSH nat 117 ; FAILWITH } {} ; - DUP 3 ; - DUP 4 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 6 ; - CDR ; - CAR ; - CDR ; - CDR ; - DIG 5 ; - PUSH bool False ; - UPDATE 8 ; - SOME ; - DIG 6 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - NIL operation } - { DROP ; - SENDER ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - SELF_ADDRESS ; - DUP 3 ; - CDR ; - CAR ; - CDR ; - CAR ; - DUP ; - DUP 4 ; - GET ; - IF_NONE - { DIG 4 ; + DUP 11 ; + PAIR 3 ; + CONS ; + DUP 6 ; + PAIR ; + CONS ; + TRANSFER_TOKENS } + { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; + CONS } ; + SWAP ; + DIG 4 ; + DROP 2 ; + PUSH mutez 0 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CDR ; + CAR ; + CAR ; + CONTRACT unit ; + IF_NONE + { SWAP ; DROP ; PUSH nat 102 ; FAILWITH } + { DIG 2 ; UNIT ; TRANSFER_TOKENS } ; + CONS } + { SWAP ; DROP } ; + PAIR } } } } } + { DIG 2 ; + DROP ; + IF_LEFT + { IF_LEFT + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CAR ; + CDR ; + CAR ; + CAR ; + DUP 2 ; + COMPARE ; + EQ ; + IF { PUSH nat 144 ; FAILWITH } {} ; + DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DIG 4 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + NIL operation ; + PAIR } + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + PUSH nat 600 ; + DUP 2 ; + COMPARE ; + LT ; + IF { DROP 2 ; PUSH nat 131 ; FAILWITH } + { PUSH nat 3600 ; + DUP 2 ; + COMPARE ; + GT ; + IF { DROP 2 ; PUSH nat 132 ; FAILWITH } + { DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 4 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + NIL operation ; + PAIR } } } } + { IF_LEFT + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 4 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 } + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + DUP 2 ; + COMPARE ; + EQ ; + IF { PUSH nat 144 ; FAILWITH } {} ; + DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CDR ; + DUP ; + CAR ; + DIG 4 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 } ; + NIL operation ; + PAIR } } } + { IF_LEFT + { DIG 2 ; + DIG 3 ; + DROP 2 ; + IF_LEFT + { IF_LEFT + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CAR ; + CDR ; + CAR ; + CAR ; + DUP 2 ; + COMPARE ; + EQ ; + IF { PUSH nat 144 ; FAILWITH } {} ; + DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CDR ; + DUP ; + CDR ; + DIG 4 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 } + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + DUP ; + GET 3 ; + DUP 2 ; + GET 5 ; + VIEW "getPrice" (pair timestamp nat) ; + IF_NONE { PUSH nat 123 ; FAILWITH } { DROP } ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 6 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIG 5 ; + DUP 7 ; + GET 3 ; + UPDATE 3 ; + DUP 7 ; + GET 5 ; + UPDATE 5 ; + DUP 7 ; + GET 6 ; + UPDATE 7 ; + SOME ; + DIG 6 ; + CAR ; + UPDATE ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 } ; + NIL operation ; + PAIR } + { IF_LEFT + { DUP ; + GET 5 ; + PUSH nat 0 ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; UNIT ; LEFT unit } + { PUSH nat 1 ; + SWAP ; + COMPARE ; + EQ ; + IF { UNIT ; RIGHT unit } { PUSH nat 106 ; FAILWITH } } ; + DUP 2 ; + CAR ; + DUP ; + CDR ; + GET 3 ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + PAIR ; + SWAP ; + IF_LEFT { DROP } { DROP ; DUP ; CAR ; SWAP ; CDR ; PAIR } ; + NOW ; + DUP 4 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 3 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + DUP ; + GET 8 ; + IF { DROP 5 ; PUSH nat 125 ; FAILWITH } + { DUP 4 ; + CAR ; + DUP 5 ; + GET 5 ; + PUSH nat 0 ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; UNIT ; LEFT unit } + { PUSH nat 1 ; + SWAP ; + COMPARE ; + EQ ; + IF { UNIT ; RIGHT unit } { PUSH nat 106 ; FAILWITH } } ; + IF_LEFT + { DROP ; + SWAP ; + CAR ; + CAR ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + COMPARE ; + EQ ; + IF {} { PUSH nat 156 ; FAILWITH } } + { DROP ; + SWAP ; + CAR ; + CDR ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + COMPARE ; + EQ ; + IF {} { PUSH nat 156 ; FAILWITH } } ; + DUP 4 ; + CAR ; + CAR ; + CDR ; + CDR ; + AMOUNT ; + DUP 2 ; + DUP 2 ; + COMPARE ; + LT ; + IF { DROP 6 ; PUSH nat 113 ; FAILWITH } + { COMPARE ; + GT ; + IF { DROP 4 ; PUSH nat 130 ; FAILWITH } + { DUP 4 ; + CAR ; + CAR ; + CAR ; + CDR ; + DUP ; + CDR ; + DUP 2 ; + CAR ; + DUP 5 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 0 } {} ; + GET ; + IF_NONE + { PUSH nat 0 ; + DUP 2 ; + CAR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; + PUSH nat 1 ; + ADD ; + PUSH bool False ; + PUSH nat 0 ; + DUP 6 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DIG 6 ; + RIGHT + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; + DIG 4 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DUP 6 ; + CAR ; + CAR ; + CDR ; + CAR ; + DUP 2 ; + GET 3 ; + IF_LEFT + { SWAP ; + DROP ; + IF_LEFT + { DROP 2 ; + PUSH nat 0 ; + DUP 2 ; + CAR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; + PUSH nat 1 ; + ADD ; + PUSH bool False ; + PUSH nat 0 ; + DUP 6 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DIG 6 ; + RIGHT + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; + DIG 4 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DIG 3 ; DROP 2 ; DIG 4 ; DIG 2 } } + { DUP 2 ; + INT ; + ADD ; + DIG 4 ; + COMPARE ; + GE ; + IF { DUP 2 ; + GET 3 ; + IF_LEFT + { SWAP ; + DIG 2 ; + DIG 6 ; + DROP 3 ; + IF_LEFT + { DROP ; PUSH nat 105 ; FAILWITH } + { DROP ; PUSH nat 105 ; FAILWITH } } + { SWAP ; + INT ; + DUP 2 ; + ADD ; + PAIR ; + RIGHT + (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) ; + LEFT timestamp ; + UPDATE 3 ; + DIG 4 ; + PAIR } ; + UNPAIR ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DROP ; DIG 4 ; DIG 2 } } } ; + DIG 2 ; + DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } ; + IF { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } ; + IF { DIG 3 ; DROP } + { DUP 3 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIG 4 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + DUP ; + GET 3 ; + SWAP ; + GET 5 ; + VIEW "getPrice" (pair timestamp nat) ; + IF_NONE { PUSH nat 124 ; FAILWITH } {} ; + CAR ; + DUP 4 ; + CAR ; + CAR ; + CDR ; + CAR ; + INT ; + NOW ; + SUB ; + COMPARE ; + LT ; + IF {} { PUSH nat 120 ; FAILWITH } } ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DUP 6 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + DUP 2 ; + CAR ; + SENDER ; + PUSH nat 1 ; + DUP 4 ; + CAR ; + CDR ; + CAR ; + CDR ; + ADD ; + DUP 7 ; + GET 5 ; + PUSH nat 0 ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; UNIT ; LEFT unit } + { PUSH nat 1 ; + SWAP ; + COMPARE ; + EQ ; + IF { UNIT ; RIGHT unit } { PUSH nat 106 ; FAILWITH } } ; + DUP 8 ; + GET 6 ; + PUSH nat 0 ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; UNIT ; RIGHT unit ; LEFT unit } + { PUSH nat 1 ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; UNIT ; LEFT unit ; LEFT unit } + { PUSH nat 2 ; + SWAP ; + COMPARE ; + EQ ; + IF { UNIT ; RIGHT (or unit unit) } { PUSH nat 107 ; FAILWITH } } } ; + SENDER ; + DUP 7 ; + CDR ; + CDR ; + DUP 11 ; + CAR ; + DUP ; + CAR ; + CAR ; + DUP 2 ; + CDR ; + DUP 4 ; + DUP 3 ; + GET 3 ; + GET ; + IF_NONE + { DROP 4 ; PUSH nat 110 ; FAILWITH } + { DIG 4 ; + DUP 3 ; + GET 3 ; + GET ; + IF_NONE + { DROP 4 ; PUSH nat 110 ; FAILWITH } + { DUP ; + GET 8 ; + DUP 4 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 2 ; + GET 7 ; + DUP 5 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 5 ; + DUP 6 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 3 ; + DUP 7 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 4 ; + CAR ; + DIG 6 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + DUP 2 ; + GET 8 ; + DUP 4 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 5 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 6 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 7 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DIG 6 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + AND ; + IF { DUP ; + CDR ; + GET 3 ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + PAIR ; + DUP 8 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 5 ; + IF_LEFT { DROP ; SWAP } { DROP ; DUP 2 ; CAR ; DIG 2 ; CDR ; PAIR } ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + MEM ; + IF {} { PUSH nat 110 ; FAILWITH } } + { DROP ; PUSH nat 110 ; FAILWITH } } } ; + PUSH bool False ; + DIG 2 ; + DIG 3 ; + DIG 10 ; + CAR ; + DIG 4 ; + DUP 8 ; + DUP 7 ; + PAIR 7 ; + DUP 5 ; + CDR ; + CAR ; + CDR ; + CAR ; + DUP 2 ; + GET 5 ; + GET ; + IF_NONE + { PUSH bool True } + { PUSH nat 0 ; + SWAP ; + ITER { CDR ; SIZE ; ADD } ; + PUSH nat 10 ; + SWAP ; + COMPARE ; + LE } ; + IF { DUP 5 ; + CAR ; + CDR ; + CDR ; + CDR ; + DIG 3 ; + COMPARE ; + EQ ; + IF { DIG 4 ; PUSH bool True ; UPDATE 10 } { DIG 4 } ; + DUP ; + GET 5 ; + DUP 3 ; + GET 9 ; + IF_LEFT + { DROP ; + DUP 3 ; + GET 7 ; + CAR ; + CDR ; + DUP 2 ; + GET 7 ; + ADD ; + DUP 4 ; + GET 11 ; + IF_LEFT + { IF_LEFT + { DROP ; + DUP 2 ; + DUP 5 ; + GET 7 ; + CAR ; + CDR ; + DIG 3 ; + GET 3 ; + ADD ; + UPDATE 3 ; + SWAP ; + UPDATE 7 } + { DROP ; + DUP 2 ; + DUP 5 ; + GET 7 ; + CAR ; + CDR ; + DIG 3 ; + CAR ; + ADD ; + UPDATE 1 ; + SWAP ; + UPDATE 7 } } + { DROP ; + DUP 2 ; + DUP 5 ; + GET 7 ; + CAR ; + CDR ; + DIG 3 ; + GET 5 ; + ADD ; + UPDATE 5 ; + SWAP ; + UPDATE 7 } } + { DROP ; + DUP 3 ; + GET 7 ; + CAR ; + CDR ; + DUP 2 ; + GET 14 ; + ADD ; + DUP 4 ; + GET 11 ; + IF_LEFT + { IF_LEFT + { DROP ; + DUP 2 ; + DUP 5 ; + GET 7 ; + CAR ; + CDR ; + DIG 3 ; + GET 11 ; + ADD ; + UPDATE 11 ; + SWAP ; + UPDATE 14 } + { DROP ; + DUP 2 ; + DUP 5 ; + GET 7 ; + CAR ; + CDR ; + DIG 3 ; + GET 9 ; + ADD ; + UPDATE 9 ; + SWAP ; + UPDATE 14 } } + { DROP ; + DUP 2 ; + DUP 5 ; + GET 7 ; + CAR ; + CDR ; + DIG 3 ; + GET 13 ; + ADD ; + UPDATE 13 ; + SWAP ; + UPDATE 14 } } ; + DUP 7 ; + CDR ; + DUG 2 ; + UPDATE 5 ; + SOME ; + DUP 5 ; + UPDATE ; + DUP 5 ; + CDR ; + CAR ; + CDR ; + CAR ; + DUP 3 ; + GET 5 ; + GET ; + IF_NONE + { DUP ; + DUP 5 ; + GET ; + IF_NONE + { DROP ; PUSH nat 142 ; FAILWITH } + { PUSH nat 1 ; DUP 2 ; GET 9 ; ADD ; UPDATE 9 ; SOME ; DUP 5 ; UPDATE } } + { DUP 5 ; + GET ; + IF_NONE + { DUP ; + DUP 5 ; + GET ; + IF_NONE + { DROP ; PUSH nat 142 ; FAILWITH } + { PUSH nat 1 ; DUP 2 ; GET 9 ; ADD ; UPDATE 9 ; SOME ; DUP 5 ; UPDATE } } + { DROP } } ; + DUP 5 ; + CDR ; + CAR ; + CDR ; + CAR ; + DUP 3 ; + GET 5 ; + DUP 2 ; + DUP 2 ; + GET ; + IF_NONE + { SWAP ; + EMPTY_MAP nat (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + EMPTY_MAP (pair (or unit unit) (or (or unit unit) unit)) nat ; + DUP 6 ; + GET 7 ; + CAR ; + CDR ; + DUP 7 ; + GET 11 ; + DUP 8 ; + GET 9 ; + PAIR ; + SWAP ; + SOME ; + SWAP ; + UPDATE ; + DIG 7 ; + SWAP ; + SOME ; + SWAP ; + UPDATE ; + DIG 2 ; + SWAP ; + SOME ; + SWAP ; + UPDATE } + { DUP ; + DUP 8 ; + GET ; + IF_NONE + { EMPTY_MAP (pair (or unit unit) (or (or unit unit) unit)) nat ; + DUP 6 ; + GET 7 ; + CAR ; + CDR ; + DUP 7 ; + GET 11 ; + DUP 8 ; + GET 9 ; + PAIR ; + SWAP ; + SOME ; + SWAP ; + UPDATE ; + DIG 7 ; + SWAP ; + SOME ; + SWAP ; + UPDATE } + { DUP 6 ; + GET 11 ; + DUP 7 ; + GET 9 ; + PAIR ; + DUP 2 ; + DUP 2 ; + GET ; + IF_NONE + { SWAP ; DUP 7 ; GET 7 ; CAR ; CDR ; DIG 2 ; SWAP ; SOME ; SWAP ; UPDATE } + { DUP 8 ; GET 7 ; CAR ; CDR ; ADD ; DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } ; + SOME ; + DIG 7 ; + UPDATE } ; + DIG 2 ; + SWAP ; + SOME ; + DIG 2 ; + UPDATE } ; + DUP 5 ; + DIG 5 ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DIG 8 ; + DIG 6 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + DUP ; + CAR ; + DUP ; + CDR ; + DUP ; + CAR ; + DIG 6 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 ; + DUP 3 ; + GET 7 ; + CAR ; + SELF_ADDRESS ; + DUP 2 ; + CAR ; + GET 5 ; + IF_NONE + { SWAP ; DIG 4 ; DROP 3 ; PUSH nat 109 ; FAILWITH } + { DIG 5 ; + GET 5 ; + DUP 4 ; + CAR ; + GET 8 ; + IF_NONE + { DROP 4 ; PUSH nat 108 ; FAILWITH } + { PUSH string "FA1.2 token" ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; + SWAP ; + CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + DIG 4 ; + CDR ; + DIG 4 ; + DIG 4 ; + PAIR 3 ; + TRANSFER_TOKENS } + { PUSH string "FA2 token" ; + SWAP ; + COMPARE ; + EQ ; + IF { SWAP ; + CONTRACT %transfer + (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + NIL (pair address (list (pair address nat nat))) ; + NIL (pair address nat nat) ; + DUP 7 ; + CDR ; + DIG 7 ; + CAR ; + CAR ; + DIG 7 ; + PAIR 3 ; + CONS ; + DIG 4 ; + PAIR ; + CONS ; + TRANSFER_TOKENS } + { DROP 4 ; PUSH nat 108 ; FAILWITH } } } } ; + DUP 2 ; + DIG 2 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 5 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + NIL operation ; + DIG 2 ; + CONS ; + PAIR } + { DROP 7 ; PUSH nat 112 ; FAILWITH } } + { DROP 5 ; PUSH nat 103 ; FAILWITH } } } } } + { DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 2 ; + GET ; + IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 6 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIG 5 ; + PUSH bool True ; + UPDATE 8 ; + SOME ; + DIG 6 ; + UPDATE ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + NIL operation ; + PAIR } } } + { IF_LEFT + { IF_LEFT + { DIG 2 ; + DIG 3 ; + DROP 2 ; + DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 2 ; + GET ; + IF_NONE { PUSH nat 117 ; FAILWITH } {} ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 6 ; + CDR ; + CAR ; + CDR ; + CDR ; + DIG 5 ; + PUSH bool False ; + UPDATE 8 ; + SOME ; + DIG 6 ; + UPDATE ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + NIL operation } + { DROP ; + SENDER ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + SELF_ADDRESS ; + PUSH mutez 0 ; + PUSH mutez 0 ; + PAIR ; + PUSH mutez 0 ; + DUP 5 ; + CAR ; + CDR ; + CAR ; + CAR ; + PAIR ; + DUP 4 ; + DUP 6 ; + CAR ; + CDR ; + CDR ; + CDR ; + PAIR ; + PAIR ; + PAIR ; + DUP 4 ; + CAR ; + CAR ; + CDR ; + CDR ; + DUP 5 ; + CAR ; + CAR ; + CAR ; + CDR ; + DUP 6 ; + CDR ; + CAR ; + CDR ; + CAR ; + DUP 7 ; + CDR ; + CDR ; + EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; + DUP 3 ; + DUP 9 ; + GET ; + IF_NONE + { SWAP ; DIG 4 ; DIG 9 ; DIG 10 ; DROP 4 ; DIG 2 ; PAIR ; SWAP } + { NONE nat ; + IF_NONE + { DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DUP 4 ; + PAIR ; + PAIR ; + PAIR ; + SWAP ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 4 ; + UNPAIR ; + DUP 3 ; + CDR ; + DUP ; + DUP 9 ; + GET ; + IF_NONE + { DIG 7 ; DIG 8 ; DROP 3 ; PAIR ; DUG 2 ; PAIR ; DIG 3 ; DIG 3 } + { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT + { CAR ; CDR ; SOME } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } ; + IF_NONE + { SWAP ; DIG 8 ; DIG 9 ; DROP 4 ; PAIR ; DUG 2 ; PAIR ; DIG 3 ; DIG 3 } + { DUP 2 ; + GET 10 ; + DUP 6 ; + DIG 5 ; + PAIR ; + PAIR ; + DUP 7 ; + DUP 4 ; + GET 5 ; + PAIR ; + DIG 9 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR ; + DIG 8 ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 4 ; + UNPAIR ; + UNPAIR ; + PUSH nat 0 ; + DUP 5 ; + GET 7 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { PUSH nat 0 ; + DUP 5 ; + GET 14 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { DUP 8 ; + CDR ; + DUP 7 ; + GET 3 ; + DUP 10 ; + CAR ; + IF_LEFT + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } } + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } } } ; + IF { DUP 6 ; + GET 6 ; + CAR ; + DUP 6 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 7 ; + DIG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 9 ; + CAR ; + IF_LEFT + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + GET 5 ; + INT ; + SWAP ; + GET 3 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + CAR ; + INT ; + SWAP ; + GET 6 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 3 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } ; + DUP 4 ; + IF { DUP 3 ; + DUP 3 ; + CAR ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CDR ; + DIG 3 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 } + { DUP 3 ; + DUP 3 ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 2 ; + UPDATE 2 } ; + SWAP } + { DUP 6 ; + GET 6 ; + CAR ; + DIG 8 ; + CAR ; + IF_LEFT + { DROP ; + DUP 6 ; + SWAP ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } + { DROP ; + DUP 6 ; + SWAP ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } ; + DUP 3 ; + DUP 3 ; + CDR ; + CAR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 1 ; + UPDATE 2 ; + DIG 7 ; + DIG 8 ; + DIG 3 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } ; + DUG 3 ; + PAIR ; + PAIR ; + DIG 3 ; + DIG 3 ; + PAIR ; + DIG 2 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR } ; + UNPAIR ; + CAR ; + CDR ; + SWAP ; + CAR ; + CAR ; + DUP 3 ; + CAR ; + DUP 5 ; + DUP 2 ; + GET ; + IF_NONE + { DIG 4 ; DROP 2 ; PUSH nat 141 ; FAILWITH } + { PUSH nat 1 ; + DUP 2 ; + GET 9 ; + SUB ; + ABS ; + DIG 6 ; + DUG 2 ; + UPDATE 9 ; + SOME ; + DIG 2 ; + UPDATE } ; + DUP ; + DUP 5 ; + CAR ; + GET ; + IF_NONE + { PUSH nat 141 ; FAILWITH } + { PUSH nat 0 ; SWAP ; GET 9 ; COMPARE ; LE } ; + DIG 5 ; + DIG 3 ; + PAIR ; + DIG 6 ; + DIG 2 ; + IF { DIG 2 ; + DROP ; + DUP 5 ; + DIG 5 ; + CDR ; + DIG 5 ; + CAR ; + NONE (pair nat + (or (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) + timestamp) + (pair nat nat nat nat nat nat nat nat) + (pair string string) + nat + bool) ; + SWAP ; + UPDATE ; + UPDATE 2 } + { DIG 4 ; DROP ; DIG 4 ; DIG 3 ; UPDATE 2 } ; + PAIR ; + DIG 2 ; + DIG 3 ; + DIG 4 ; + NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + SWAP ; + UPDATE } } ; + PAIR ; + PAIR ; + PAIR } ; + DIG 5 ; + DIG 6 ; + DROP 2 } + { DUP 2 ; + DUP 2 ; + GET ; + IF_NONE + { DIG 11 ; + DIG 12 ; + DROP 3 ; + DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DIG 3 } + { DUP 7 ; + CDR ; + DUP ; + DUP 4 ; + GET ; + IF_NONE + { SWAP ; + DIG 2 ; + DIG 13 ; + DIG 14 ; + DROP 5 ; + DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DIG 3 } + { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT + { CAR ; CDR ; SOME } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } ; + IF_NONE + { SWAP ; + DIG 2 ; + DIG 3 ; + DIG 14 ; + DIG 15 ; + DROP 6 ; + DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DIG 3 } + { DUP 2 ; + GET 10 ; + DUP 12 ; + DIG 13 ; + PAIR ; + PAIR ; + DUP 9 ; + DUP 4 ; + GET 5 ; + PAIR ; + DIG 8 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR ; + DIG 3 ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 4 ; + UNPAIR ; + UNPAIR ; + PUSH nat 0 ; + DUP 5 ; + GET 7 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { PUSH nat 0 ; + DUP 5 ; + GET 14 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { DUP 8 ; + CDR ; + DUP 7 ; + GET 3 ; + DUP 10 ; + CAR ; + IF_LEFT + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } } + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } } } ; + IF { DUP 6 ; + GET 6 ; + CAR ; + DUP 6 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 7 ; + DIG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 9 ; + CAR ; + IF_LEFT + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + GET 5 ; + INT ; + SWAP ; + GET 3 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + CAR ; + INT ; + SWAP ; + GET 6 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 3 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } ; + DUP 4 ; + IF { DUP 3 ; + DUP 3 ; + CAR ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CDR ; + DIG 3 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 } + { DUP 3 ; + DUP 3 ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 2 ; + UPDATE 2 } ; + SWAP } + { DUP 6 ; + GET 6 ; + CAR ; + DIG 8 ; + CAR ; + IF_LEFT + { DROP ; + DUP 6 ; + SWAP ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } + { DROP ; + DUP 6 ; + SWAP ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } ; + DUP 3 ; + DUP 3 ; + CDR ; + CAR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 1 ; + UPDATE 2 ; + DIG 7 ; + DIG 8 ; + DIG 3 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } ; + DUG 3 ; + PAIR ; + PAIR ; + DIG 3 ; + DIG 3 ; + PAIR ; + DIG 2 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR } ; + DIG 12 ; + DIG 13 ; + DROP 2 ; + UNPAIR ; + CAR ; + CDR ; + SWAP ; + CAR ; + CAR ; + DUP 3 ; + CAR ; + DUP 5 ; + DUP 2 ; + GET ; + IF_NONE + { DIG 4 ; DROP 2 ; PUSH nat 141 ; FAILWITH } + { PUSH nat 1 ; + DUP 2 ; + GET 9 ; + SUB ; + ABS ; + DIG 6 ; + DUG 2 ; + UPDATE 9 ; + SOME ; + DIG 2 ; + UPDATE } ; + DUP ; + DUP 5 ; + CAR ; + GET ; + IF_NONE + { PUSH nat 141 ; FAILWITH } + { PUSH nat 0 ; SWAP ; GET 9 ; COMPARE ; LE } ; + DIG 10 ; + DIG 3 ; + PAIR ; + DIG 7 ; + DIG 2 ; + IF { DIG 2 ; + DROP ; + DUP 8 ; + DIG 8 ; + CDR ; + DIG 5 ; + CAR ; + NONE (pair nat + (or (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) + timestamp) + (pair nat nat nat nat nat nat nat nat) + (pair string string) + nat + bool) ; + SWAP ; + UPDATE ; + UPDATE 2 } + { DIG 4 ; DROP ; DIG 7 ; DIG 3 ; UPDATE 2 } ; + PAIR ; + DIG 2 ; + DIG 4 ; + DIG 4 ; + NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + SWAP ; + UPDATE } } } ; + PAIR ; + PAIR ; + PAIR } ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + CAR ; + DIG 3 ; + CAR ; + DIG 3 ; + DIG 2 ; + PAIR ; + DIG 3 ; + DIG 3 ; + SOME ; + DUP 6 ; + UPDATE } ; + DUG 2 ; + UNPAIR ; + NIL operation ; + DIG 2 ; + ITER { CDR ; + DUP ; + CAR ; + GET 5 ; + IF_NONE + { DROP ; PUSH nat 109 ; FAILWITH } + { DUP 2 ; + CAR ; + GET 8 ; + IF_NONE + { DROP 2 ; PUSH nat 108 ; FAILWITH } + { PUSH string "FA1.2 token" ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; + CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + DIG 2 ; + CDR ; + DUP 9 ; + DUP 9 ; + PAIR 3 ; + TRANSFER_TOKENS } + { PUSH string "FA2 token" ; + SWAP ; + COMPARE ; + EQ ; + IF { CONTRACT %transfer + (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + NIL (pair address (list (pair address nat nat))) ; + NIL (pair address nat nat) ; + DUP 5 ; + CDR ; + DIG 5 ; + CAR ; + CAR ; + DUP 12 ; + PAIR 3 ; + CONS ; + DUP 9 ; + PAIR ; + CONS ; + TRANSFER_TOKENS } + { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; + CONS } ; + DIG 4 ; DIG 5 ; DROP 2 ; - EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; - SWAP } - { DUP 5 ; + PUSH mutez 0 ; + DUP 4 ; + CDR ; + CAR ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CAR ; + CDR ; + CONTRACT unit ; + IF_NONE + { PUSH nat 102 ; FAILWITH } + { DUP 4 ; CDR ; CAR ; UNIT ; TRANSFER_TOKENS } ; + CONS } + {} ; + PUSH mutez 0 ; + DUP 4 ; + CAR ; + CDR ; + CDR ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CAR ; + CAR ; + CONTRACT unit ; + IF_NONE + { PUSH nat 102 ; FAILWITH } + { DUP 4 ; CAR ; CDR ; CDR ; UNIT ; TRANSFER_TOKENS } ; + CONS } + {} ; + PUSH mutez 0 ; + DUP 4 ; + CDR ; + CDR ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CDR ; + CAR ; + CONTRACT unit ; + IF_NONE + { DIG 2 ; DROP ; PUSH nat 102 ; FAILWITH } + { DIG 3 ; CDR ; CDR ; UNIT ; TRANSFER_TOKENS } ; + CONS } + { DIG 2 ; DROP } ; + DUP 4 ; + DIG 4 ; CDR ; + DUP ; + CAR ; + DUP ; CDR ; + DIG 6 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + DUP ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DIG 5 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + SWAP } } + { IF_LEFT + { SENDER ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + SELF_ADDRESS ; + PUSH mutez 0 ; + PUSH mutez 0 ; + PAIR ; + PUSH mutez 0 ; DUP 6 ; CAR ; + CDR ; + CAR ; CAR ; + PAIR ; + DUP 4 ; + DUP 7 ; CAR ; CDR ; + CDR ; + CDR ; PAIR ; - EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; - DUP 3 ; PAIR ; PAIR ; - SWAP ; - ITER { UNPAIR ; - DIG 2 ; - UNPAIR ; - UNPAIR ; - DUP 3 ; - CDR ; - DUP 5 ; - GET ; - IF_NONE - { DIG 3 ; DIG 4 ; DROP 2 } - { DUP ; - GET 3 ; - IF_LEFT - { IF_LEFT - { CAR ; CDR ; SOME } - { DROP ; - NONE (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp)) } } - { DROP ; - NONE (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp)) } ; - IF_NONE - { DIG 4 ; DIG 5 ; DROP 3 } - { SWAP ; - GET 5 ; - DIG 3 ; + DUP 5 ; + CAR ; + CAR ; + CDR ; + CDR ; + DUP 6 ; + CAR ; + CAR ; + CAR ; + CDR ; + DUP 7 ; + CDR ; + CAR ; + CDR ; + CAR ; + DUP 8 ; + CDR ; + CDR ; + EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; + DUP 3 ; + DUP 9 ; + GET ; + IF_NONE + { SWAP ; DIG 4 ; DIG 8 ; DIG 10 ; DIG 11 ; DROP 5 ; DIG 2 ; PAIR ; SWAP } + { DIG 9 ; + SOME ; + IF_NONE + { DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DUP 4 ; + PAIR ; + PAIR ; + PAIR ; + SWAP ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + UNPAIR ; + UNPAIR ; DIG 2 ; + UNPAIR ; + DIG 4 ; + UNPAIR ; + DUP 3 ; + CDR ; + DUP ; + DUP 9 ; + GET ; + IF_NONE + { DIG 7 ; DIG 8 ; DROP 3 ; PAIR ; DUG 2 ; PAIR ; DIG 3 ; DIG 3 } + { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT + { CAR ; CDR ; SOME } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } ; + IF_NONE + { SWAP ; DIG 8 ; DIG 9 ; DROP 4 ; PAIR ; DUG 2 ; PAIR ; DIG 3 ; DIG 3 } + { DUP 2 ; + GET 10 ; + DUP 6 ; + DIG 5 ; + PAIR ; + PAIR ; + DUP 7 ; + DUP 4 ; + GET 5 ; + PAIR ; + DIG 9 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR ; + DIG 8 ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 4 ; + UNPAIR ; + UNPAIR ; + PUSH nat 0 ; + DUP 5 ; + GET 7 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { PUSH nat 0 ; + DUP 5 ; + GET 14 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { DUP 8 ; + CDR ; + DUP 7 ; + GET 3 ; + DUP 10 ; + CAR ; + IF_LEFT + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } } + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } } } ; + IF { DUP 6 ; + GET 6 ; + CAR ; + DUP 6 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 7 ; + DIG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 9 ; + CAR ; + IF_LEFT + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + GET 5 ; + INT ; + SWAP ; + GET 3 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + CAR ; + INT ; + SWAP ; + GET 6 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 3 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } ; + DUP 4 ; + IF { DUP 3 ; + DUP 3 ; + CAR ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CDR ; + DIG 3 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 } + { DUP 3 ; + DUP 3 ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 2 ; + UPDATE 2 } ; + SWAP } + { DUP 6 ; + GET 6 ; + CAR ; + DIG 8 ; + CAR ; + IF_LEFT + { DROP ; + DUP 6 ; + SWAP ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } + { DROP ; + DUP 6 ; + SWAP ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } ; + DUP 3 ; + DUP 3 ; + CDR ; + CAR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 1 ; + UPDATE 2 ; + DIG 7 ; + DIG 8 ; + DIG 3 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } ; + DUG 3 ; + PAIR ; + PAIR ; + DIG 3 ; + DIG 3 ; + PAIR ; + DIG 2 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR } ; + UNPAIR ; + CAR ; + CDR ; + SWAP ; + CAR ; + CAR ; + DUP 3 ; + CAR ; + DUP 5 ; + DUP 2 ; + GET ; + IF_NONE + { DIG 4 ; DROP 2 ; PUSH nat 141 ; FAILWITH } + { PUSH nat 1 ; + DUP 2 ; + GET 9 ; + SUB ; + ABS ; + DIG 6 ; + DUG 2 ; + UPDATE 9 ; + SOME ; + DIG 2 ; + UPDATE } ; + DUP ; + DUP 5 ; + CAR ; + GET ; + IF_NONE + { PUSH nat 141 ; FAILWITH } + { PUSH nat 0 ; SWAP ; GET 9 ; COMPARE ; LE } ; + DIG 5 ; + DIG 3 ; + PAIR ; + DIG 6 ; + DIG 2 ; + IF { DIG 2 ; + DROP ; + DUP 5 ; + DIG 5 ; + CDR ; + DIG 5 ; + CAR ; + NONE (pair nat + (or (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) + timestamp) + (pair nat nat nat nat nat nat nat nat) + (pair string string) + nat + bool) ; + SWAP ; + UPDATE ; + UPDATE 2 } + { DIG 4 ; DROP ; DIG 4 ; DIG 3 ; UPDATE 2 } ; + PAIR ; + DIG 2 ; + DIG 3 ; + DIG 4 ; + NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + SWAP ; + UPDATE } } ; PAIR ; PAIR ; - DIG 4 ; - ITER { UNPAIR ; - DIG 2 ; - UNPAIR ; - UNPAIR ; - PUSH nat 0 ; - DUP 4 ; - GET 7 ; - COMPARE ; - EQ ; - IF { PUSH bool False } - { PUSH nat 0 ; - DUP 4 ; - GET 14 ; + PAIR } ; + DIG 5 ; + DIG 6 ; + DROP 2 } + { DUP 2 ; + DUP 2 ; + GET ; + IF_NONE + { DIG 11 ; + DIG 12 ; + DROP 3 ; + DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DIG 3 } + { DUP 7 ; + CDR ; + DUP ; + DUP 4 ; + GET ; + IF_NONE + { SWAP ; + DIG 2 ; + DIG 13 ; + DIG 14 ; + DROP 5 ; + DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DIG 3 } + { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT + { CAR ; CDR ; SOME } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } } + { DROP ; + NONE (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp)) } ; + IF_NONE + { SWAP ; + DIG 2 ; + DIG 3 ; + DIG 14 ; + DIG 15 ; + DROP 6 ; + DIG 5 ; + DIG 6 ; + PAIR ; + DIG 3 ; + DIG 5 ; + PAIR ; + DIG 3 ; + DIG 3 } + { DUP 2 ; + GET 10 ; + DUP 12 ; + DIG 13 ; + PAIR ; + PAIR ; + DUP 9 ; + DUP 4 ; + GET 5 ; + PAIR ; + DIG 8 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR ; + DIG 3 ; + ITER { UNPAIR ; + DIG 2 ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + UNPAIR ; + DIG 4 ; + UNPAIR ; + UNPAIR ; + PUSH nat 0 ; + DUP 5 ; + GET 7 ; COMPARE ; EQ ; IF { PUSH bool False } - { DUP 4 ; - CDR ; - DUP 2 ; - GET 3 ; + { PUSH nat 0 ; + DUP 5 ; + GET 14 ; + COMPARE ; + EQ ; + IF { PUSH bool False } + { DUP 8 ; + CDR ; + DUP 7 ; + GET 3 ; + DUP 10 ; + CAR ; + IF_LEFT + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } + { DROP ; PUSH bool True } } } + { DROP ; + SWAP ; + IF_LEFT + { IF_LEFT + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } + { DROP ; PUSH bool False } } } + { DROP ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } + { DROP ; PUSH bool True } } } } } ; + IF { DUP 6 ; + GET 6 ; + CAR ; DUP 6 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 7 ; + DIG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 9 ; CAR ; IF_LEFT { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + GET 5 ; + INT ; SWAP ; - IF_LEFT - { IF_LEFT - { DROP ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } - { DROP ; PUSH bool True } } - { DROP ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } - { DROP ; PUSH bool True } } } - { DROP ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool False } } - { DROP ; PUSH bool True } } } - { DROP ; + GET 3 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; SWAP ; - IF_LEFT - { IF_LEFT - { DROP ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } - { DROP ; PUSH bool False } } - { DROP ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool False } { DROP ; PUSH bool True } } - { DROP ; PUSH bool False } } } - { DROP ; - IF_LEFT - { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool True } } - { DROP ; PUSH bool True } } } } } ; - IF { DUP ; - GET 6 ; - CAR ; - DIG 4 ; - CAR ; - IF_LEFT - { DROP ; - DUP 2 ; - GET 5 ; - DUP ; - GET 5 ; - INT ; - SWAP ; - GET 3 ; - INT ; - DIG 6 ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP ; - CAR ; - DUP 3 ; - CDR ; - MUL ; - SWAP ; - CDR ; - DUP 3 ; - CAR ; - MUL ; - PAIR ; - PUSH int 1 ; - DIG 3 ; - PAIR ; - DUP ; - CDR ; - DUP 3 ; - CDR ; - MUL ; - SWAP ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DUP 4 ; - SWAP ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} } - { DROP ; - DUP 2 ; - GET 5 ; - DUP ; - CAR ; - INT ; - SWAP ; - GET 6 ; - INT ; - DIG 6 ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP ; - CAR ; - DUP 3 ; - CDR ; - MUL ; - SWAP ; - CDR ; - DUP 3 ; - CAR ; - MUL ; - PAIR ; - PUSH int 1 ; - DIG 3 ; - PAIR ; - DUP ; - CDR ; - DUP 3 ; - CDR ; - MUL ; - SWAP ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DUP 4 ; - SWAP ; - CDR ; - DUP 4 ; - CAR ; - MUL ; - COMPARE ; - LE ; - NOT ; - IF { PUSH int 0 ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; DUP 3 ; CAR ; COMPARE ; @@ -2244,7 +4764,7 @@ PUSH nat 0 ; PUSH nat 10 ; PAIR ; - DUP 16 ; + DUP 26 ; SWAP ; EXEC ; DIG 2 ; @@ -2256,1503 +4776,1864 @@ ISNAT ; IF_NONE { PUSH nat 119 ; FAILWITH } {} ; DIG 2 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } + { DROP ; + DUP 8 ; + GET 5 ; + DUP ; + CAR ; + INT ; + SWAP ; + GET 6 ; + INT ; + DIG 11 ; + INT ; + PUSH int 1 ; + SWAP ; PAIR ; + PUSH int 1 ; + DIG 2 ; PAIR ; - DUP 11 ; + DUP ; + CAR ; + DUP 3 ; + CDR ; + MUL ; SWAP ; - EXEC } - { SWAP ; DIG 2 ; DROP 2 } } } - { SWAP ; - DUP 2 ; - GET 6 ; - CAR ; - DIG 5 ; - DIG 5 ; - CAR ; - IF_LEFT { DROP ; SWAP ; CAR ; CAR } { DROP ; SWAP ; CDR } ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 10 ; + GET 6 ; + GET 3 ; + DUP ; + CDR ; + DUP 3 ; + CDR ; + MUL ; + SWAP ; + CAR ; + DUP 3 ; + CAR ; + MUL ; + PAIR ; + DUP ; + CDR ; + DUP 4 ; + CDR ; + MUL ; + DUP 4 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + DIG 2 ; + CDR ; + DIG 4 ; + CAR ; + MUL ; + SUB ; + PAIR ; + PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 26 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 3 ; + PAIR ; + PUSH nat 0 ; + DUP 2 ; + CDR ; + COMPARE ; + GT ; + IF { DIG 9 ; SWAP ; PAIR ; DUP 21 ; SWAP ; EXEC } { DROP ; DIG 8 } ; + PUSH int 1 ; + PUSH int 0 ; + PAIR ; + DUP ; + CAR ; + DUP 4 ; + CDR ; + MUL ; + SWAP ; + CDR ; + DUP 4 ; + CAR ; + MUL ; + COMPARE ; + LE ; + NOT ; + IF { PUSH int 0 ; + DUP 3 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } + { SWAP } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 24 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 2 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } + { SWAP ; DIG 2 ; DROP 2 } } ; + DUP 4 ; + IF { DUP 3 ; + DUP 3 ; + CAR ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CAR ; + DUP ; + CDR ; + DIG 3 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 } + { DUP 3 ; + DUP 3 ; + CDR ; + CDR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 2 ; + UPDATE 2 } ; + SWAP } + { DUP 6 ; + GET 6 ; + CAR ; + DIG 8 ; + CAR ; + IF_LEFT + { DROP ; + DUP 6 ; + SWAP ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } + { DROP ; + DUP 6 ; + SWAP ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} } ; + DUP 3 ; + DUP 3 ; + CDR ; + CAR ; + ADD ; + DUP 3 ; + DIG 3 ; + CDR ; + DIG 2 ; + UPDATE 1 ; + UPDATE 2 ; + DIG 7 ; + DIG 8 ; + DIG 3 ; + PAIR ; + PAIR ; + DUP 19 ; + SWAP ; + EXEC } ; + DUG 3 ; PAIR ; PAIR ; - DUP 13 ; - SWAP ; - EXEC } ; - DUG 2 ; - PAIR ; - SWAP ; - DIG 2 ; - PAIR ; - PAIR } ; - CAR ; - CDR ; - DIG 2 ; - SWAP ; - DIG 2 ; - DIG 3 ; - NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; - SWAP ; - UPDATE } } ; - PAIR ; - PAIR } ; + DIG 3 ; + DIG 3 ; + PAIR ; + DIG 2 ; + DIG 3 ; + PAIR ; + PAIR ; + PAIR } ; + DIG 12 ; + DIG 13 ; + DROP 2 ; + UNPAIR ; + CAR ; + CDR ; + SWAP ; + CAR ; + CAR ; + DUP 3 ; + CAR ; + DUP 5 ; + DUP 2 ; + GET ; + IF_NONE + { DIG 4 ; DROP 2 ; PUSH nat 141 ; FAILWITH } + { PUSH nat 1 ; + DUP 2 ; + GET 9 ; + SUB ; + ABS ; + DIG 6 ; + DUG 2 ; + UPDATE 9 ; + SOME ; + DIG 2 ; + UPDATE } ; + DUP ; + DUP 5 ; + CAR ; + GET ; + IF_NONE + { PUSH nat 141 ; FAILWITH } + { PUSH nat 0 ; SWAP ; GET 9 ; COMPARE ; LE } ; + DIG 10 ; + DIG 3 ; + PAIR ; + DIG 7 ; + DIG 2 ; + IF { DIG 2 ; + DROP ; + DUP 8 ; + DIG 8 ; + CDR ; + DIG 5 ; + CAR ; + NONE (pair nat + (or (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) + timestamp) + (pair nat nat nat nat nat nat nat nat) + (pair string string) + nat + bool) ; + SWAP ; + UPDATE ; + UPDATE 2 } + { DIG 4 ; DROP ; DIG 7 ; DIG 3 ; UPDATE 2 } ; + PAIR ; + DIG 2 ; + DIG 4 ; + DIG 4 ; + NONE (map (pair (or unit unit) (or (or unit unit) unit)) nat) ; + SWAP ; + UPDATE } } } ; + PAIR ; + PAIR ; + PAIR } ; + UNPAIR ; + UNPAIR ; + UNPAIR ; + DIG 2 ; + CAR ; + DIG 3 ; + CAR ; + DIG 3 ; + DIG 2 ; + PAIR ; + DIG 3 ; + DIG 3 ; + SOME ; + DUP 6 ; + UPDATE } ; + DUG 2 ; + UNPAIR ; + NIL operation ; + DIG 2 ; + ITER { CDR ; + DUP ; + CAR ; + GET 5 ; + IF_NONE + { DROP ; PUSH nat 109 ; FAILWITH } + { DUP 2 ; + CAR ; + GET 8 ; + IF_NONE + { DROP 2 ; PUSH nat 108 ; FAILWITH } + { PUSH string "FA1.2 token" ; + DUP 2 ; + COMPARE ; + EQ ; + IF { DROP ; + CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + DIG 2 ; + CDR ; + DUP 9 ; + DUP 9 ; + PAIR 3 ; + TRANSFER_TOKENS } + { PUSH string "FA2 token" ; + SWAP ; + COMPARE ; + EQ ; + IF { CONTRACT %transfer + (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; + IF_NONE { PUSH nat 101 ; FAILWITH } {} ; + PUSH mutez 0 ; + NIL (pair address (list (pair address nat nat))) ; + NIL (pair address nat nat) ; + DUP 5 ; + CDR ; + DIG 5 ; + CAR ; + CAR ; + DUP 12 ; + PAIR 3 ; + CONS ; + DUP 9 ; + PAIR ; + CONS ; + TRANSFER_TOKENS } + { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; + CONS } ; + DIG 4 ; DIG 5 ; - DIG 6 ; DROP 2 ; + PUSH mutez 0 ; + DUP 4 ; + CDR ; + CAR ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CAR ; + CDR ; + CONTRACT unit ; + IF_NONE + { PUSH nat 102 ; FAILWITH } + { DUP 4 ; CDR ; CAR ; UNIT ; TRANSFER_TOKENS } ; + CONS } + {} ; + PUSH mutez 0 ; + DUP 4 ; CAR ; - UNPAIR ; - SWAP ; - DUG 2 ; - SOME ; - DUP 5 ; - UPDATE } ; - NIL operation ; - DIG 2 ; - ITER { CDR ; - DUP ; - CAR ; - GET 5 ; - IF_NONE - { DROP ; PUSH nat 109 ; FAILWITH } - { DUP 2 ; - CAR ; - GET 8 ; - IF_NONE - { DROP 2 ; PUSH nat 108 ; FAILWITH } - { PUSH string "FA1.2 token" ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; - CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - DIG 2 ; - CDR ; - DUP 7 ; - DUP 7 ; - PAIR 3 ; - TRANSFER_TOKENS } - { PUSH string "FA2 token" ; - SWAP ; - COMPARE ; - EQ ; - IF { CONTRACT %transfer - (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - NIL (pair address (list (pair address nat nat))) ; - NIL (pair address nat nat) ; - DUP 5 ; - CDR ; - DIG 5 ; - CAR ; - CAR ; - DUP 10 ; - PAIR 3 ; - CONS ; - DUP 7 ; - PAIR ; - CONS ; - TRANSFER_TOKENS } - { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; - CONS } ; - DIG 2 ; - DIG 3 ; - DROP 2 ; - DUP 3 ; - DIG 3 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 5 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - SWAP } ; - PAIR } } - { DIG 3 ; - DROP ; - IF_LEFT - { DIG 2 ; - DIG 3 ; - DIG 4 ; - DROP 3 ; - IF_LEFT - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - DUP 3 ; - CAR ; - DUP ; - CDR ; - DUP ; - CDR ; - DIG 5 ; - CAR ; - CDR ; - CDR ; - CDR ; - DIG 5 ; - NONE bytes ; - SWAP ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP ; - GET 8 ; - IF {} { PUSH nat 137 ; FAILWITH } ; - DUP 2 ; - CDR ; - CAR ; - CDR ; - CDR ; - DUP 2 ; - CAR ; - DUP ; - CDR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - DUP 2 ; - DUP 2 ; - CAR ; - DIG 2 ; - CDR ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE - { DROP 2 ; PUSH nat 117 ; FAILWITH } - { DROP ; - DUP 3 ; CDR ; CDR ; - DIG 2 ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CAR ; + CAR ; + CONTRACT unit ; + IF_NONE + { PUSH nat 102 ; FAILWITH } + { DUP 4 ; CAR ; CDR ; CDR ; UNIT ; TRANSFER_TOKENS } ; + CONS } + {} ; + PUSH mutez 0 ; + DUP 4 ; + CDR ; + CDR ; + COMPARE ; + GT ; + IF { DUP 3 ; + CAR ; + CDR ; + CAR ; + CONTRACT unit ; + IF_NONE + { DIG 2 ; DROP ; PUSH nat 102 ; FAILWITH } + { DIG 3 ; CDR ; CDR ; UNIT ; TRANSFER_TOKENS } ; + CONS } + { DIG 2 ; DROP } ; + DUP 4 ; + DIG 4 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 6 ; + UPDATE 1 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + DUP ; CAR ; DUP ; CAR ; + DUP ; CAR ; - GET 3 ; + DIG 5 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + SWAP } + { DIG 2 ; + DIG 3 ; + DROP 2 ; DUP 2 ; - CDR ; - GET 3 ; - DIG 4 ; - DUP 3 ; - DUP 3 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; COMPARE ; - GT ; - IF { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } - { SWAP ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } ; - NONE (pair (pair (pair (pair nat string (option address) nat (option string)) nat) - (pair nat string (option address) nat (option string))) - address - string - nat - bool) ; - SWAP ; - UPDATE ; - DUP 3 ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; DUP 3 ; + CDR ; + DUP ; CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUP 4 ; - DIG 3 ; + DUP ; + CAR ; + DIG 5 ; CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - PUSH bool False ; - DUP 4 ; - ITER { CDR ; - CAR ; - DUP 6 ; - DUP 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUP 7 ; - DIG 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 2 ; - DUP 2 ; - GET 8 ; - DUP 6 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 7 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 8 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 9 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DUP 9 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - DUP 3 ; - GET 8 ; - DUP 6 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 7 ; - DUP 7 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 5 ; - DUP 8 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 6 ; - GET 3 ; - DUP 9 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 6 ; - CAR ; - DUP 9 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - OR ; - OR } ; - IF { SWAP ; DROP ; DIG 2 } - { DUP 4 ; - DUP 3 ; - GET 3 ; - GET ; - IF_NONE - { SWAP ; DROP ; DIG 2 } - { DUP 3 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 6 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DUP 7 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF { DIG 3 ; - DIG 2 ; - GET 3 ; - NONE (pair nat string (option address) nat (option string)) ; - SWAP ; - UPDATE } - { SWAP ; DIG 3 ; DROP 2 ; PUSH nat 115 ; FAILWITH } } } ; - PUSH bool False ; - DUP 4 ; - ITER { CDR ; - CAR ; - DUP 3 ; - DUP 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUP 4 ; - DIG 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 2 ; - DUP 2 ; - GET 8 ; - DUP 6 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 7 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 8 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 9 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DUP 9 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - DUP 3 ; - GET 8 ; - DUP 6 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 7 ; - DUP 7 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 5 ; - DUP 8 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 6 ; - GET 3 ; - DUP 9 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 6 ; - CAR ; - DUP 9 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - OR ; - OR } ; - IF { SWAP ; DROP } - { DUP ; - DUP 3 ; - GET 3 ; - GET ; - IF_NONE - { SWAP ; DROP } - { DUP 3 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 6 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DUP 7 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF { SWAP ; - GET 3 ; - NONE (pair nat string (option address) nat (option string)) ; - SWAP ; - UPDATE } - { DROP 2 ; PUSH nat 115 ; FAILWITH } } } ; + CAR ; + CAR ; + CAR ; + DIG 5 ; + NONE bytes ; SWAP ; - PAIR } ; - UNPAIR ; - DUP 3 ; - DIG 3 ; - CDR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 4 ; - UPDATE 2 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CDR ; - DIG 2 ; - UPDATE 2 ; - UPDATE 2 } ; - NIL operation ; - PAIR } - { PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; + UPDATE ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 2 ; + NIL operation } } ; + PAIR } } } + { DIG 2 ; + DROP ; + IF_LEFT + { DIG 2 ; + DIG 3 ; + DIG 4 ; + DROP 3 ; + DUP 2 ; + CAR ; + CAR ; + CAR ; + CAR ; + SENDER ; + COMPARE ; + EQ ; + IF {} { PUSH nat 114 ; FAILWITH } ; + PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP ; + GET 8 ; + IF {} { PUSH nat 137 ; FAILWITH } ; + DUP 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 2 ; + CAR ; + DUP ; + CDR ; + GET 3 ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + SWAP ; + DUP 3 ; + DUP 3 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } ; + GET ; + IF_NONE + { DROP 2 ; PUSH nat 117 ; FAILWITH } + { DROP ; + DUP 3 ; CDR ; - CAR ; CDR ; + DIG 2 ; + CAR ; + DUP ; CDR ; + GET 3 ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + PAIR ; + DUP ; + CAR ; DUP 2 ; + CDR ; + DIG 4 ; + DUP 3 ; + DUP 3 ; + COMPARE ; + GT ; + IF { DIG 2 ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; DIG 2 ; CONCAT } ; + NONE (pair (pair string string) address string nat bool) ; + SWAP ; + UPDATE ; + DUP 3 ; + DUP 3 ; + CAR ; GET ; - IF_NONE - { DROP 5 ; PUSH nat 117 ; FAILWITH } - { DUP 3 ; - CDR ; - CDR ; - DUP 2 ; - CAR ; - DUP 2 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUP 3 ; - GET 8 ; - DUP 4 ; - GET 7 ; - DUP 5 ; - GET 5 ; - DIG 5 ; - GET 3 ; - DIG 4 ; - PUSH nat 1 ; - DIG 6 ; - PAIR ; - PAIR ; - PAIR 5 ; - DUP ; - GET 8 ; - DUP 2 ; - GET 7 ; - DUP 3 ; - GET 5 ; - DUP 4 ; - GET 3 ; - DUP 5 ; - CAR ; - DUP ; - CDR ; - GET 3 ; - SWAP ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - PAIR 5 ; - DUP ; - GET 3 ; - SWAP ; - GET 5 ; - VIEW "getPrice" (pair timestamp nat) ; - IF_NONE { PUSH nat 122 ; FAILWITH } {} ; - UNPAIR ; - DUP 5 ; - CDR ; - CAR ; - CAR ; - CAR ; - DUP 5 ; - GET ; - IF_NONE - {} - { DUP 2 ; - SWAP ; - GET 4 ; - COMPARE ; - GE ; - IF { PUSH nat 121 ; FAILWITH } {} } ; - DUP 5 ; - CAR ; - CAR ; - CDR ; - CAR ; - INT ; - DUP 6 ; - CDR ; - CAR ; - CAR ; - CDR ; - INT ; - DUP 3 ; - DUG 2 ; - MUL ; - NOW ; - SUB ; - COMPARE ; - LT ; - IF {} { PUSH nat 120 ; FAILWITH } ; - DUP 5 ; - CDR ; - CDR ; - DUP 4 ; - CAR ; - DIG 4 ; - GET 7 ; - DUP ; - DUP 3 ; - CAR ; - CAR ; - GET 7 ; - COMPARE ; - GT ; - IF { DUP 2 ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 4 ; + DIG 3 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + PUSH bool False ; + DUP 4 ; + ITER { CDR ; + CAR ; + DUP 6 ; + DUP 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 7 ; + DIG 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 2 ; + DUP 2 ; + GET 8 ; + DUP 6 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 7 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 8 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 9 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DUP 9 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + DUP 3 ; + GET 8 ; + DUP 6 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 7 ; + DUP 7 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 5 ; + DUP 8 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 6 ; + GET 3 ; + DUP 9 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 6 ; + CAR ; + DUP 9 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + OR ; + OR } ; + IF { SWAP ; DROP ; DIG 2 } + { DUP 4 ; + DUP 3 ; + GET 3 ; + GET ; + IF_NONE + { SWAP ; DROP ; DIG 2 } + { DUP 3 ; + GET 8 ; + DUP 2 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 7 ; + DUP 3 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 5 ; + DUP 4 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 6 ; + GET 3 ; + DUP 5 ; + GET 3 ; + COMPARE ; + EQ ; + DUP 7 ; CAR ; + DIG 5 ; CAR ; - GET 7 ; - SUB ; - PUSH int 10 ; - PAIR ; - DUP 8 ; - SWAP ; - EXEC ; - DIG 4 ; - MUL ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + IF { DIG 3 ; + DIG 2 ; + GET 3 ; + NONE (pair nat string (option address) nat (option string)) ; + SWAP ; + UPDATE } + { SWAP ; DIG 3 ; DROP 2 ; PUSH nat 115 ; FAILWITH } } } ; + PUSH bool False ; + DUP 4 ; + ITER { CDR ; + CAR ; + DUP 3 ; + DUP 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 4 ; + DIG 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 2 ; + DUP 2 ; + GET 8 ; + DUP 6 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 3 ; + GET 7 ; + DUP 7 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 5 ; + DUP 8 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 3 ; + DUP 9 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 5 ; + CAR ; + DUP 9 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + DUP 3 ; + GET 8 ; + DUP 6 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 7 ; + DUP 7 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 5 ; + DUP 8 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 6 ; + GET 3 ; + DUP 9 ; + GET 3 ; + COMPARE ; + EQ ; + DIG 6 ; + CAR ; + DUP 9 ; + CAR ; + COMPARE ; + EQ ; + AND ; + AND ; + AND ; + AND ; + OR ; + OR } ; + IF { SWAP ; DROP } + { DUP ; + DUP 3 ; + GET 3 ; + GET ; + IF_NONE + { SWAP ; DROP } + { DUP 3 ; + GET 8 ; DUP 2 ; + GET 8 ; + COMPARE ; + EQ ; + DUP 4 ; + GET 7 ; + DUP 3 ; + GET 7 ; + COMPARE ; + EQ ; + DUP 5 ; + GET 5 ; + DUP 4 ; + GET 5 ; + COMPARE ; + EQ ; + DUP 6 ; + GET 3 ; + DUP 5 ; + GET 3 ; + COMPARE ; + EQ ; + DUP 7 ; CAR ; + DIG 5 ; CAR ; - GET 7 ; - INT ; - PUSH int 10 ; - PAIR ; - DUP 8 ; - SWAP ; - EXEC ; - SWAP } - { INT ; PUSH int 10 ; PAIR ; DUP 8 ; SWAP ; EXEC ; DIG 4 } ; - INT ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DIG 3 ; - SWAP ; - DUP 3 ; - CDR ; - GET 3 ; - DIG 3 ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - PAIR 3 ; - DUP ; - CAR ; - DUP 3 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 3 ; - DIG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - SWAP ; - GET 7 ; - SWAP ; - GET 7 ; - SUB ; - DUP ; - ABS ; - INT ; - PUSH int 10 ; - PAIR ; - DIG 5 ; - SWAP ; - EXEC ; - PUSH int 0 ; - DUP 3 ; - COMPARE ; - EQ ; - IF { DROP 2 ; PUSH int 1 ; PUSH int 1 } - { PUSH int 0 ; - DIG 2 ; COMPARE ; - LT ; - IF { PUSH int 1 ; + EQ ; + AND ; + AND ; + AND ; + AND ; + IF { SWAP ; + GET 3 ; + NONE (pair nat string (option address) nat (option string)) ; SWAP ; - PAIR ; - PUSH int 1 ; - PUSH int 1 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL } - { PUSH int 1 ; SWAP } } ; - PAIR ; - DUP 2 ; - GET 3 ; - DUP 2 ; - CDR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - UPDATE 3 ; - DUP 3 ; - CDR ; - CAR ; - CAR ; - CAR ; - DUP 4 ; - DIG 4 ; - CDR ; - DUP ; - CAR ; - DUP ; - CAR ; - DUP 5 ; - DUP 8 ; - GET ; - IF_NONE - { DIG 4 ; DUP 6 ; DIG 7 ; SWAP ; SOME ; SWAP ; UPDATE } - { GET 4 ; - DUP 7 ; - GET 4 ; - COMPARE ; - GT ; - IF { DIG 4 ; DUP 6 ; SOME ; DIG 7 ; UPDATE } { DIG 6 ; DROP ; DIG 4 } } ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CDR ; - CDR ; - DUP 3 ; - CAR ; - UNIT ; - LEFT unit ; - DUP 3 ; - DUP 3 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 3 ; - DIG 3 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 2 ; - IF_LEFT { DROP } { DROP ; SWAP } ; - SWAP ; - PAIR ; - NOW ; - DUP 3 ; - CAR ; - CAR ; - CAR ; - CDR ; - DUP 4 ; - CAR ; - CAR ; - CDR ; - CAR ; - DUP 2 ; - CDR ; - DUP 3 ; - CAR ; - DUP 6 ; - UNPAIR ; - GET 3 ; + UPDATE } + { DROP 2 ; PUSH nat 115 ; FAILWITH } } } ; + SWAP ; + PAIR } ; + UNPAIR ; + DUP 3 ; + DIG 3 ; + CDR ; + DUP ; + CAR ; + DUP ; + CDR ; + DIG 4 ; + UPDATE 2 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 2 ; + DUP ; + CDR ; + DIG 2 ; + UPDATE 2 ; + UPDATE 2 ; + NIL operation ; + PAIR } + { PUSH mutez 1 ; + AMOUNT ; + COMPARE ; + LT ; + IF {} { PUSH nat 118 ; FAILWITH } ; + DUP 2 ; + CDR ; + CAR ; + CDR ; + CDR ; + DUP 2 ; + GET ; + IF_NONE + { DROP 5 ; PUSH nat 117 ; FAILWITH } + { DUP 3 ; + CDR ; + CDR ; + DUP 2 ; + CAR ; + DUP 2 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DUP 3 ; + GET 8 ; + DUP 4 ; + GET 7 ; + DUP 5 ; + GET 5 ; + DIG 5 ; + GET 3 ; + DIG 4 ; + PUSH nat 1 ; + DIG 6 ; + PAIR ; + PAIR ; + PAIR 5 ; + DUP ; + GET 8 ; + DUP 2 ; + GET 7 ; + DUP 3 ; + GET 5 ; + DUP 4 ; + GET 3 ; + DUP 5 ; + CAR ; + DUP ; + CDR ; + GET 3 ; + SWAP ; + CAR ; + CAR ; + GET 3 ; + PAIR ; + PAIR 5 ; + DUP ; + GET 3 ; + SWAP ; + GET 5 ; + VIEW "getPrice" (pair timestamp nat) ; + IF_NONE { PUSH nat 122 ; FAILWITH } {} ; + UNPAIR ; + DUP 5 ; + CDR ; + CAR ; + CAR ; + CDR ; + DUP 5 ; + GET ; + IF_NONE + {} + { DUP 2 ; SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; + GET 4 ; + COMPARE ; + GE ; + IF { PUSH nat 121 ; FAILWITH } {} } ; + DUP 5 ; + CAR ; + CAR ; + CDR ; + CAR ; + INT ; + DUP 2 ; + SWAP ; + NOW ; + SUB ; + COMPARE ; + LT ; + IF {} { PUSH nat 120 ; FAILWITH } ; + DUP 5 ; + CDR ; + CDR ; + DUP 4 ; + CAR ; + DIG 4 ; + GET 7 ; + DUP ; + DUP 3 ; + CAR ; + CAR ; + GET 7 ; + COMPARE ; + GT ; + IF { DUP 2 ; + CAR ; + CAR ; + GET 7 ; + SUB ; + PUSH int 10 ; + PAIR ; + DUP 8 ; + SWAP ; + EXEC ; + DIG 4 ; + MUL ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DUP 2 ; + CAR ; + CAR ; + GET 7 ; + INT ; + PUSH int 10 ; + PAIR ; + DUP 8 ; + SWAP ; + EXEC ; + SWAP } + { INT ; PUSH int 10 ; PAIR ; DUP 8 ; SWAP ; EXEC ; DIG 4 } ; + INT ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CDR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DIG 3 ; + SWAP ; + DUP 3 ; + CDR ; + GET 3 ; + DIG 3 ; + CAR ; + CAR ; + GET 3 ; + PAIR ; + PAIR 3 ; + DUP ; + CAR ; + DUP 3 ; + DUP 2 ; + CAR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + DIG 3 ; + DIG 2 ; + CDR ; + GET ; + IF_NONE { PUSH nat 111 ; FAILWITH } {} ; + SWAP ; + GET 7 ; + SWAP ; + GET 7 ; + SUB ; + DUP ; + ABS ; + INT ; + PUSH int 10 ; + PAIR ; + DIG 5 ; + SWAP ; + EXEC ; + PUSH int 0 ; + DUP 3 ; + COMPARE ; + EQ ; + IF { DROP 2 ; PUSH int 1 ; PUSH int 1 } + { PUSH int 0 ; + DIG 2 ; + COMPARE ; + LT ; + IF { PUSH int 1 ; + SWAP ; + PAIR ; + PUSH int 1 ; + PUSH int 1 ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CDR ; + DIG 2 ; + CAR ; + MUL } + { PUSH int 1 ; SWAP } } ; + PAIR ; + DUP 2 ; + GET 3 ; + DUP 2 ; + CDR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + UPDATE 3 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP ; + CAR ; + DUP ; + CAR ; + DIG 6 ; + CDR ; + CAR ; + CAR ; + CDR ; + DUP ; + DUP 8 ; + GET ; + IF_NONE + { DUP 6 ; DIG 7 ; SWAP ; SOME ; SWAP ; UPDATE } + { GET 4 ; + DUP 7 ; + GET 4 ; COMPARE ; GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE { PUSH nat 0 } {} ; - GET ; - IF_NONE - { DIG 3 ; - DROP 2 ; - NONE (pair nat - (or (or (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) - (pair timestamp timestamp)) - timestamp) - (pair nat nat nat nat nat nat nat nat) - (pair (pair nat string (option address) nat (option string)) - nat - string - (option address) - nat - (option string))) } - { DUP ; - GET 3 ; - IF_LEFT - { DIG 2 ; - DROP ; - IF_LEFT - { DROP 2 ; - PUSH nat 0 ; - DUP 2 ; - CAR ; - ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; - PUSH nat 1 ; - ADD ; - DIG 3 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PAIR 8 ; - DUP 5 ; - RIGHT - (or (pair (pair timestamp - (pair (pair nat nat nat) - (or (or unit unit) unit) - (pair nat nat nat nat) - (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) - (pair timestamp timestamp)) ; - DIG 3 ; - PAIR 4 ; - DUP 2 ; - DUP 3 ; - CDR ; - DUP 3 ; - SOME ; - DUP 4 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DIG 2 ; - CAR ; - DUP 3 ; - CAR ; - SOME ; - DUP 4 ; - GET 6 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { DIG 4 ; DROP 2 ; SWAP } } - { DIG 5 ; - DROP ; - DUP 3 ; - INT ; - ADD ; - DUP 5 ; - COMPARE ; - GE ; - IF { DUP ; - GET 3 ; - IF_LEFT - { SWAP ; - DIG 2 ; - DROP 2 ; - IF_LEFT - { DROP ; PUSH nat 105 ; FAILWITH } - { DROP ; PUSH nat 105 ; FAILWITH } } - { DIG 2 ; - INT ; - DUP 2 ; - ADD ; - PAIR ; - RIGHT - (pair (pair timestamp + IF { DUP 6 ; SOME ; DIG 7 ; UPDATE } { DIG 6 ; DROP } } ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 2 ; + DUP 2 ; + CAR ; + UNIT ; + LEFT unit ; + PAIR ; + NOW ; + DUP 3 ; + CAR ; + CAR ; + CAR ; + CDR ; + DIG 2 ; + UNPAIR ; + IF_LEFT { DROP } { DROP ; DUP ; CAR ; SWAP ; CDR ; PAIR } ; + DUP 4 ; + CAR ; + CAR ; + CDR ; + CAR ; + DUP 3 ; + CDR ; + DUP 4 ; + CAR ; + DUP 4 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + GET ; + IF_NONE { PUSH nat 0 } {} ; + GET ; + IF_NONE + { DROP 2 ; + DIG 2 ; + SWAP ; + NONE (pair nat + (or (or (pair (pair timestamp (pair (pair nat nat nat) (or (or unit unit) unit) (pair nat nat nat nat) (pair (pair string string) (pair int int) timestamp))) - (pair (pair string string) (pair int int) timestamp)) ; - LEFT timestamp ; - UPDATE 3 } ; - DUP 2 ; - DUP 3 ; - CDR ; - DUP 3 ; - SOME ; - DUP 4 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DIG 2 ; - CAR ; + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) + timestamp) + (pair nat nat nat nat nat nat nat nat) + (pair string string) + nat + bool) } + { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; PUSH bool True } { DROP ; PUSH bool False } } + { DROP ; PUSH bool False } ; + IF { SWAP ; DIG 2 ; DROP 2 ; DIG 3 } + { DUP ; + GET 3 ; + IF_LEFT + { DIG 2 ; + DROP ; + IF_LEFT + { DROP 2 ; + PUSH nat 0 ; DUP 3 ; CAR ; - SOME ; - DUP 4 ; - GET 6 ; - UNPAIR ; - GET 3 ; - SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { SWAP ; DROP ; SWAP } } ; - SWAP ; - SOME } ; - IF_NONE - { SWAP ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } - { DUP ; - GET 3 ; - IF_LEFT - { IF_LEFT - { DIG 3 ; DROP 2 ; PUSH bool False } - { CAR ; PUSH int 120 ; ADD ; DIG 3 ; COMPARE ; GT } } - { DIG 3 ; DROP 2 ; PUSH bool False } ; - IF { NOW ; - DUP 2 ; - GET 5 ; - DUP ; - GET 9 ; - INT ; - DUP 2 ; - GET 11 ; - INT ; - DUP 3 ; - GET 13 ; - INT ; - DUP 4 ; - CAR ; - INT ; - DUP 5 ; - GET 3 ; - INT ; - DUP 6 ; - GET 5 ; - INT ; - DIG 3 ; - DIG 4 ; - DIG 5 ; - PAIR ; - PAIR ; - SWAP ; - DIG 2 ; - DIG 3 ; - PAIR ; - PAIR ; - DUP 8 ; - GET 3 ; - DUP 2 ; - CAR ; - CAR ; - DUP 4 ; - UNPAIR ; - UNPAIR ; - DUP 5 ; - DUP 15 ; - DIG 4 ; - DIG 4 ; - DIG 4 ; - ADD ; - ADD ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP 2 ; - CDR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DUP 3 ; - CDR ; - DUP 3 ; - CAR ; - MUL ; - COMPARE ; - LE ; - IF { SWAP ; DROP } { DROP } ; - DUP 3 ; - CAR ; - UNPAIR ; - DUP 6 ; - UNPAIR ; - CDR ; - DIG 3 ; - DIG 3 ; - ADD ; - DUP 5 ; - DIG 3 ; - DIG 3 ; - ADD ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DUP 3 ; - CDR ; + ITER { CDR ; DUP 2 ; DUP 2 ; COMPARE ; GT ; IF { SWAP ; DROP } { DROP } } ; + PUSH nat 1 ; + ADD ; + PUSH bool False ; + PUSH nat 0 ; + DIG 3 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 8 ; + DUP 7 ; + RIGHT + (or (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) + (pair timestamp timestamp)) ; + DIG 5 ; + PAIR 6 ; + DIG 3 ; + DUP 3 ; + DUP 4 ; + CDR ; + DUP 4 ; + SOME ; + DUP 5 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; + CAR ; + DUP 4 ; + CAR ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DIG 2 ; DROP 2 ; DIG 3 ; DIG 2 } } + { DIG 3 ; + DROP ; DUP 3 ; - CAR ; - MUL ; - COMPARE ; - LE ; - IF { SWAP ; DROP } { DROP } ; - DIG 3 ; - UNPAIR ; - UNPAIR ; - DIG 6 ; - CDR ; - DUG 3 ; - ADD ; + INT ; ADD ; DUP 5 ; - CDR ; - DUP 13 ; - CDR ; - MUL ; - DIG 5 ; - CAR ; - DUP 13 ; - CAR ; - MUL ; - PAIR ; - PUSH int 1 ; - DIG 3 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DUP 3 ; - CDR ; - DUP 3 ; - CAR ; - MUL ; - COMPARE ; - LE ; - IF { SWAP ; DROP } { DROP } ; - PUSH int 0 ; - DUP 4 ; - CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 4 ; CDR ; MUL ; PUSH int -1 ; DUP 5 ; CAR ; MUL ; PAIR } - { DUP 3 } ; - DUP ; - CDR ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR ; - DUP 14 ; - SWAP ; - EXEC ; - DIG 2 ; - CAR ; - MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - PUSH int 0 ; - DUP 4 ; - CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 4 ; CDR ; MUL ; PUSH int -1 ; DUP 5 ; CAR ; MUL ; PAIR } - { DUP 3 } ; - DUP ; - CDR ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR ; - DUP 15 ; - SWAP ; - EXEC ; - DIG 2 ; - CAR ; - MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - PUSH int 0 ; - DUP 4 ; - CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 4 ; CDR ; MUL ; PUSH int -1 ; DUP 5 ; CAR ; MUL ; PAIR } - { DUP 3 } ; - DUP ; - CDR ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR ; - DUP 16 ; - SWAP ; - EXEC ; - DIG 2 ; - CAR ; - MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - DUP 4 ; - CAR ; - DUP 7 ; - CDR ; - MUL ; - DUP 5 ; - CDR ; - DUP 8 ; - CAR ; - MUL ; - COMPARE ; - LT ; - NOT ; - DUP 6 ; - CAR ; - DUP 8 ; - CDR ; - MUL ; - DUP 7 ; - CDR ; - DUP 9 ; - CAR ; - MUL ; COMPARE ; - LT ; - NOT ; - AND ; - IF { DIG 3 ; DIG 4 ; DIG 5 ; DROP 3 ; UNIT ; RIGHT unit ; LEFT unit } - { DUP 4 ; - CAR ; - DUP 6 ; - CDR ; - MUL ; - DIG 4 ; + GE ; + IF { DUP ; + GET 3 ; + IF_LEFT + { SWAP ; + DIG 2 ; + DIG 5 ; + DROP 3 ; + IF_LEFT + { DROP ; PUSH nat 105 ; FAILWITH } + { DROP ; PUSH nat 105 ; FAILWITH } } + { DIG 2 ; + INT ; + DUP 2 ; + ADD ; + PAIR ; + RIGHT + (pair (pair timestamp + (pair (pair nat nat nat) + (or (or unit unit) unit) + (pair nat nat nat nat) + (pair (pair string string) (pair int int) timestamp))) + (pair (pair string string) (pair int int) timestamp)) ; + LEFT timestamp ; + UPDATE 3 ; + DIG 3 ; + PAIR } ; + UNPAIR ; + DUP 3 ; + DUP 4 ; CDR ; - DUP 6 ; + DUP 4 ; + SOME ; + DUP 5 ; CAR ; - MUL ; - COMPARE ; - LT ; - NOT ; - DUP 6 ; + UPDATE ; + UPDATE 2 ; + DIG 3 ; CAR ; - DUP 6 ; - CDR ; - MUL ; - DIG 6 ; - CDR ; - DIG 6 ; + DUP 4 ; CAR ; - MUL ; + SOME ; + DUP 5 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; COMPARE ; - LT ; - NOT ; - AND ; - IF { UNIT ; LEFT unit ; LEFT unit } { UNIT ; RIGHT (or unit unit) } } ; - DUP 10 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PUSH nat 0 ; - PAIR 4 ; - DIG 2 ; - DIG 3 ; - DIG 4 ; - DIG 5 ; - PAIR 3 ; - PAIR 4 ; - DUP ; - GET 3 ; - IF_LEFT - { IF_LEFT - { DROP ; - DUP 2 ; - GET 3 ; - DUP 3 ; - CAR ; - ADD ; - DUP 3 ; - GET 13 ; - DIG 3 ; - GET 11 ; - ADD ; - SWAP } - { DROP ; - DUP 2 ; - GET 13 ; - DUP 3 ; - GET 11 ; - DUP 4 ; - GET 9 ; - ADD ; - ADD ; - DIG 2 ; - CAR } } + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { SWAP ; DROP ; DIG 3 ; DIG 2 } } ; + DUG 2 } ; + DUG 2 ; + SOME } ; + IF_NONE + { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 } + { DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT + { DIG 4 ; DROP 2 ; PUSH bool False } + { CAR ; PUSH int 120 ; ADD ; DIG 4 ; COMPARE ; GT } } + { DIG 4 ; DROP 2 ; PUSH bool False } ; + IF { NOW ; + DUP 2 ; + GET 5 ; + DUP ; + GET 9 ; + INT ; + DUP 2 ; + GET 11 ; + INT ; + DUP 3 ; + GET 13 ; + INT ; + DUP 4 ; + CAR ; + INT ; + DUP 5 ; + GET 3 ; + INT ; + DUP 6 ; + GET 5 ; + INT ; + DIG 3 ; + DIG 4 ; + DIG 5 ; + PAIR ; + PAIR ; + SWAP ; + DIG 2 ; + DIG 3 ; + PAIR ; + PAIR ; + DUP 8 ; + GET 3 ; + DUP 2 ; + CAR ; + CAR ; + DUP 4 ; + UNPAIR ; + UNPAIR ; + DUP 5 ; + DUP 15 ; + DIG 4 ; + DIG 4 ; + DIG 4 ; + ADD ; + ADD ; + PUSH int 1 ; + SWAP ; + PAIR ; + DUP 2 ; + CDR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CDR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DUP 3 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + COMPARE ; + LE ; + IF { SWAP ; DROP } { DROP } ; + DUP 3 ; + CAR ; + UNPAIR ; + DUP 6 ; + UNPAIR ; + CDR ; + DIG 3 ; + DIG 3 ; + ADD ; + DUP 5 ; + DIG 3 ; + DIG 3 ; + ADD ; + PUSH int 1 ; + SWAP ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CDR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DUP 3 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + COMPARE ; + LE ; + IF { SWAP ; DROP } { DROP } ; + DIG 3 ; + UNPAIR ; + UNPAIR ; + DIG 6 ; + CDR ; + DUG 3 ; + ADD ; + ADD ; + DUP 5 ; + CDR ; + DUP 13 ; + CDR ; + MUL ; + DIG 5 ; + CAR ; + DUP 13 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 3 ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CDR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + PUSH int 1 ; + DIG 2 ; + PAIR ; + DUP 2 ; + CAR ; + DUP 2 ; + CDR ; + MUL ; + DUP 3 ; + CDR ; + DUP 3 ; + CAR ; + MUL ; + COMPARE ; + LE ; + IF { SWAP ; DROP } { DROP } ; + PUSH int 0 ; + DUP 4 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 4 ; CDR ; MUL ; PUSH int -1 ; DUP 5 ; CAR ; MUL ; PAIR } + { DUP 3 } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 14 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + PUSH int 0 ; + DUP 4 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 4 ; CDR ; MUL ; PUSH int -1 ; DUP 5 ; CAR ; MUL ; PAIR } + { DUP 3 } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 15 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + PUSH int 0 ; + DUP 4 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 4 ; CDR ; MUL ; PUSH int -1 ; DUP 5 ; CAR ; MUL ; PAIR } + { DUP 3 } ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DUP 16 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DUP 4 ; + CAR ; + DUP 7 ; + CDR ; + MUL ; + DUP 5 ; + CDR ; + DUP 8 ; + CAR ; + MUL ; + COMPARE ; + LT ; + NOT ; + DUP 6 ; + CAR ; + DUP 8 ; + CDR ; + MUL ; + DUP 7 ; + CDR ; + DUP 9 ; + CAR ; + MUL ; + COMPARE ; + LT ; + NOT ; + AND ; + IF { DIG 3 ; DIG 4 ; DIG 5 ; DROP 3 ; UNIT ; RIGHT unit ; LEFT unit } + { DUP 4 ; + CAR ; + DUP 6 ; + CDR ; + MUL ; + DIG 4 ; + CDR ; + DUP 6 ; + CAR ; + MUL ; + COMPARE ; + LT ; + NOT ; + DUP 6 ; + CAR ; + DUP 6 ; + CDR ; + MUL ; + DIG 6 ; + CDR ; + DIG 6 ; + CAR ; + MUL ; + COMPARE ; + LT ; + NOT ; + AND ; + IF { UNIT ; LEFT unit ; LEFT unit } { UNIT ; RIGHT (or unit unit) } } ; + DUP 10 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PUSH nat 0 ; + PAIR 4 ; + DIG 2 ; + DIG 3 ; + DIG 4 ; + DIG 5 ; + PAIR 3 ; + PAIR 4 ; + DUP ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; DUP 2 ; - GET 5 ; - DUP 3 ; GET 3 ; - DUP 4 ; + DUP 3 ; CAR ; ADD ; + DUP 3 ; + GET 13 ; + DIG 3 ; + GET 11 ; + ADD ; + SWAP } + { DROP ; + DUP 2 ; + GET 13 ; + DUP 3 ; + GET 11 ; + DUP 4 ; + GET 9 ; + ADD ; ADD ; DIG 2 ; - GET 13 ; - SWAP } ; + CAR } } + { DROP ; + DUP 2 ; + GET 5 ; DUP 3 ; GET 3 ; - IF_LEFT - { IF_LEFT - { DIG 9 ; DROP 2 ; DUP 8 } - { DROP ; - DUP 8 ; - GET 3 ; - DUP 10 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 10 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DUP 9 ; - SWAP ; - UPDATE 3 } } + DUP 4 ; + CAR ; + ADD ; + ADD ; + DIG 2 ; + GET 13 ; + SWAP } ; + DUP 3 ; + GET 3 ; + IF_LEFT + { IF_LEFT + { DIG 9 ; DROP 2 ; DUP 8 } { DROP ; DUP 8 ; GET 3 ; DUP 10 ; - CDR ; + CAR ; DUP 2 ; CDR ; MUL ; DIG 10 ; - CAR ; + CDR ; DIG 2 ; CAR ; MUL ; PAIR ; DUP 9 ; SWAP ; - UPDATE 3 } ; - DUP 4 ; - GET 3 ; - IF_LEFT - { IF_LEFT { DROP ; DUP 4 ; CAR ; GET 3 } { DROP ; DUP 4 ; CAR ; CAR } } - { DROP ; DUP 4 ; CAR ; GET 4 } ; - DUP 2 ; + UPDATE 3 } } + { DROP ; + DUP 8 ; GET 3 ; - DUP 2 ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP 2 ; + DUP 10 ; CDR ; DUP 2 ; CDR ; MUL ; - DIG 2 ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - PUSH int 0 ; - DUP 2 ; + DIG 10 ; CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 2 ; CDR ; MUL ; PUSH int -1 ; DIG 2 ; CAR ; MUL ; PAIR } - {} ; - DUP ; - CDR ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR ; - DIG 13 ; - SWAP ; - EXEC ; DIG 2 ; CAR ; MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - DIG 5 ; - DIG 5 ; - DIG 2 ; - DIG 5 ; - DIG 4 ; - PAIR 4 ; - UPDATE 5 ; - SWAP ; - UPDATE 6 ; - DIG 2 ; - DIG 5 ; - DIG 2 ; - DIG 3 ; - PAIR ; PAIR ; - LEFT (pair timestamp timestamp) ; - LEFT timestamp ; - UPDATE 3 ; - DUP 2 ; - DUP 3 ; - CDR ; - DUP 3 ; - SOME ; - DUP 4 ; - CAR ; - UPDATE ; - UPDATE 2 ; - DIG 2 ; - CAR ; - DUP 3 ; - CAR ; - SOME ; - DIG 3 ; - GET 6 ; - UNPAIR ; - GET 3 ; + DUP 9 ; SWAP ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - UPDATE ; - UPDATE 1 } - { DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 } ; - DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DIG 4 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 } ; - NIL operation ; - PAIR } } } } } ; + UPDATE 3 } ; + DUP 4 ; + GET 3 ; + IF_LEFT + { IF_LEFT { DROP ; DUP 4 ; CAR ; GET 3 } { DROP ; DUP 4 ; CAR ; CAR } } + { DROP ; DUP 4 ; CAR ; GET 4 } ; + DUP 2 ; + GET 3 ; + DUP 2 ; + INT ; + PUSH int 1 ; + SWAP ; + PAIR ; + DUP 2 ; + CDR ; + DUP 2 ; + CDR ; + MUL ; + DIG 2 ; + CAR ; + DIG 2 ; + CAR ; + MUL ; + PAIR ; + PUSH int 0 ; + DUP 2 ; + CAR ; + COMPARE ; + LT ; + IF { PUSH int -1 ; DUP 2 ; CDR ; MUL ; PUSH int -1 ; DIG 2 ; CAR ; MUL ; PAIR } + {} ; + DUP ; + CDR ; + PUSH nat 0 ; + PUSH nat 10 ; + PAIR ; + DIG 13 ; + SWAP ; + EXEC ; + DIG 2 ; + CAR ; + MUL ; + EDIV ; + IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; + CAR ; + ISNAT ; + IF_NONE { PUSH nat 119 ; FAILWITH } {} ; + DIG 5 ; + DIG 5 ; + DIG 2 ; + DIG 5 ; + DIG 4 ; + PAIR 4 ; + UPDATE 5 ; + SWAP ; + UPDATE 6 ; + DIG 2 ; + DIG 5 ; + DIG 2 ; + DIG 3 ; + PAIR ; + PAIR ; + LEFT (pair timestamp timestamp) ; + LEFT timestamp ; + UPDATE 3 ; + DUP 2 ; + DUP 3 ; + CDR ; + DUP 3 ; + SOME ; + DUP 4 ; + CAR ; + UPDATE ; + UPDATE 2 ; + DIG 2 ; + CAR ; + DUP 3 ; + CAR ; + SOME ; + DIG 3 ; + GET 7 ; + UNPAIR ; + DUP ; + DUP 3 ; + COMPARE ; + GT ; + IF { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } + { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; + UPDATE ; + UPDATE 1 } + { DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 } ; + DUP 2 ; + DIG 2 ; + CAR ; + DUP ; + CAR ; + DUP ; + CAR ; + DIG 4 ; + UPDATE 2 ; + UPDATE 1 ; + UPDATE 1 ; + UPDATE 1 } ; + NIL operation ; + PAIR } } } } ; view "get_fee_in_mutez" unit mutez { CDR ; CAR ; CAR ; CDR ; CDR } ; view "get_valid_swaps" unit @@ -3772,6 +6653,27 @@ (nat %decimals) (option %standard string))) { CDR ; CDR ; CDR } ; + view "redeemable_holdings_available" + unit + bool + { CDR ; + SENDER ; + SWAP ; + CDR ; + CAR ; + CDR ; + CAR ; + SWAP ; + GET ; + IF_NONE + { PUSH bool False } + { PUSH bool False ; + SWAP ; + ITER { CDR ; + PUSH bool False ; + SWAP ; + ITER { CDR ; PUSH nat 0 ; SWAP ; COMPARE ; GT ; OR } ; + OR } } } ; view "get_current_batches" unit (list (pair (nat %batch_number) @@ -3805,17 +6707,9 @@ (nat %sell_exact_volume) (nat %sell_plus_volume) (nat %sell_total_volume)) - (pair %pair - (pair (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)))) + (pair %pair string string) + (nat %holdings) + (bool %market_vault_used))) { CDR ; NIL (pair nat (or (or (pair (pair timestamp @@ -3827,12 +6721,9 @@ (pair timestamp timestamp)) timestamp) (pair nat nat nat nat nat nat nat nat) - (pair (pair nat string (option address) nat (option string)) - nat - string - (option address) - nat - (option string))) ; + (pair string string) + nat + bool) ; DUP 2 ; CAR ; CAR ; diff --git a/batcher/batcher-storage-ghostnet.tz b/batcher/batcher-storage-ghostnet.tz index af1bb63a..1f588915 100644 --- a/batcher/batcher-storage-ghostnet.tz +++ b/batcher/batcher-storage-ghostnet.tz @@ -1,36 +1,25 @@ -(Pair (Pair (Pair (Pair "tz1aSL2gjFnfh96Xf1Zp4T36LxbzKuzyvVJ4" {} {}) 600 10000) +(Pair (Pair (Pair (Pair "tz1ca4batAsNxMYab3mUK5H4QRjY8drV4ViL" {} {}) 600 10000) (Pair "tz1burnburnburnburnburnburnburjAYjjX" 0) 10 - { Elt "" - 0x68747470733a2f2f697066732e6763702e6d617269676f6c642e6465762f697066732f516d56375a534b6358324d4e75656938745a3268723555484d5a66737039476b375675345878766d6246734a4e45 }) - (Pair (Pair {} 1) + "KT1XKvKiTTj8N6WKv3MhnZhFjZopFGQGBTdT") + (Pair (Pair {} {}) {} - { Elt "tzBTC/EURL" - (Pair (Pair (Pair (Pair 0 "tzBTC" (Some "KT1P8RdJ5MfHMK5phKJ5JsfNfask5v2b2NQS") 8 (Some "FA1.2 token")) - 1) - 0 - "EURL" - (Some "KT1RcHjqDWWycYQGrz4KBYoGZSMmMuVpkmuS") - 6 - (Some "FA2 token")) - "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" - "BTC-EUR" - 6 - False) ; + { Elt "BTCtz/USDT" + (Pair (Pair "BTCtz" "USDT") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) ; + Elt "BTCtz/USDtz" + (Pair (Pair "BTCtz" "USDtz") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) ; + Elt "tzBTC/EURL" + (Pair (Pair "tzBTC" "EURL") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-EUR" 6 False) ; Elt "tzBTC/USDT" - (Pair (Pair (Pair (Pair 0 "tzBTC" (Some "KT1P8RdJ5MfHMK5phKJ5JsfNfask5v2b2NQS") 8 (Some "FA1.2 token")) - 1) - 0 - "USDT" - (Some "KT1WNrZ7pEbpmYBGPib1e7UVCeC6GA6TkJYR") - 6 - (Some "FA2 token")) - "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" - "BTC-USDT" - 6 - False) }) - { Elt "EURL" (Pair 0 "EURL" (Some "KT1RcHjqDWWycYQGrz4KBYoGZSMmMuVpkmuS") 6 (Some "FA2 token")) ; + (Pair (Pair "tzBTC" "USDT") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) ; + Elt "tzBTC/USDtz" + (Pair (Pair "tzBTC" "USDtz") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) }) + { Elt "BTCtz" + (Pair 0 "BTCtz" (Some "KT1ErLEYVsxqHxLgLucXViq5DYrtSyDuSFTe") 8 (Some "FA2 token")) ; + Elt "EURL" (Pair 0 "EURL" (Some "KT1RcHjqDWWycYQGrz4KBYoGZSMmMuVpkmuS") 6 (Some "FA2 token")) ; Elt "USDT" (Pair 0 "USDT" (Some "KT1WNrZ7pEbpmYBGPib1e7UVCeC6GA6TkJYR") 6 (Some "FA2 token")) ; + Elt "USDtz" + (Pair 0 "USDtz" (Some "KT1B8tP5Q8Cb7HctLfxt4MVk2cWouHFrnbjW") 6 (Some "FA1.2 token")) ; Elt "tzBTC" (Pair 0 "tzBTC" (Some "KT1P8RdJ5MfHMK5phKJ5JsfNfask5v2b2NQS") 8 (Some "FA1.2 token")) }) diff --git a/batcher/batcher.mligo b/batcher/batcher.mligo index 942ccf0b..bc3c1afe 100644 --- a/batcher/batcher.mligo +++ b/batcher/batcher.mligo @@ -414,6 +414,7 @@ let collect_redemptions let collect_redemption_payouts (holder: address) (fees: fees) + (specific_batch_opt:nat option) (storage: Storage.t): (fees * user_batch_ordertypes * batch_set * token_amount_map) = let fee_in_mutez = storage.fee_in_mutez in let batch_set = storage.batch_set in @@ -422,7 +423,12 @@ let collect_redemption_payouts let empty_tam = (Map.empty : token_amount_map) in match Big_map.find_opt holder ubots with | None -> fees, ubots, batch_set, empty_tam - | Some bots -> let u_bots, u_tam, bs, _tkns, u_fees, _fim = Map.fold collect_redemptions bots (bots, empty_tam, batch_set, tokens, fees, fee_in_mutez) in + | Some bots -> let u_bots, u_tam, bs, _tkns, u_fees, _fim = match specific_batch_opt with + | Some sb -> (match Map.find_opt sb bots with + | None -> (bots, empty_tam, batch_set, tokens, fees, fee_in_mutez) + | Some opts -> collect_redemptions ((bots, empty_tam, batch_set, tokens, fees, fee_in_mutez),(sb,opts))) + | None -> Map.fold collect_redemptions bots (bots, empty_tam, batch_set, tokens, fees, fee_in_mutez) + in let updated_ubots = Big_map.update holder (Some u_bots) ubots in u_fees, updated_ubots, bs, u_tam @@ -475,6 +481,25 @@ let deposit let deposit_op = Utils.Treasury_Utils.handle_transfer deposit_address treasury_vault deposited_token in [ deposit_op] +[@inline] +let redeem_by_batch + (redeem_address : address) + (batch_id: nat) + (storage : storage) : operation list * storage = + let treasury_vault = Utils.get_vault () in + let fees = { + to_send = 0mutez; + to_refund = 0mutez; + to_market_maker = 0mutez; + payer = redeem_address; + recipient = storage.fee_recipient; + market_maker = storage.marketmaker; + } in + let fees, updated_ubots, updated_batch_set, payout_token_map = Ubots.collect_redemption_payouts redeem_address fees (Some batch_id) storage in + let operations = Utils.Treasury_Utils.transfer_holdings treasury_vault redeem_address payout_token_map in + let operations = resolve_fees fees operations in + let updated_storage = { storage with user_batch_ordertypes = updated_ubots; batch_set = updated_batch_set; } in + (operations, updated_storage) [@inline] let redeem @@ -489,7 +514,7 @@ let redeem recipient = storage.fee_recipient; market_maker = storage.marketmaker; } in - let fees, updated_ubots, updated_batch_set, payout_token_map = Ubots.collect_redemption_payouts redeem_address fees storage in + let fees, updated_ubots, updated_batch_set, payout_token_map = Ubots.collect_redemption_payouts redeem_address fees None storage in let operations = Utils.Treasury_Utils.transfer_holdings treasury_vault redeem_address payout_token_map in let operations = resolve_fees fees operations in let updated_storage = { storage with user_batch_ordertypes = updated_ubots; batch_set = updated_batch_set; } in @@ -1025,6 +1050,7 @@ type entrypoint = | Deposit of external_swap_order | Tick of string | Redeem + | RedeemByBatch of nat | Cancel of pair | Change_fee of tez | Change_admin_address of address @@ -1237,23 +1263,12 @@ let enforce_correct_side | Sell -> if swap.from.token.name = valid_swap.swap.to then () else failwith Errors.incorrect_side_specified -[@inline] -let enforce_correct_side - (order:external_swap_order) - (valid_swap:valid_swap) : unit = - let swap = order.swap in - let side = Utils.nat_to_side order.side in - match side with - | Buy -> - if swap.from.token.name = valid_swap.swap.from.token.name then () else failwith incorrect_side_specified - | Sell -> - if swap.from.token.name = valid_swap.swap.to.name then () else failwith incorrect_side_specified (* Register a deposit during a valid (Open) deposit time; fails otherwise. Updates the current_batch if the time is valid but the new batch was not initialized. *) [@inline] let deposit (external_order: external_swap_order) (storage : storage) : result = - let pair = Utils.pair_of_external_swap external_order storage.valid_tokens in + let pair = Utils.pair_of_external_swap external_order in let current_time = Tezos.get_now () in let pair_name = Utils.get_rate_name_from_pair pair in let valid_swap = get_valid_swap_reduced pair_name storage in @@ -1295,6 +1310,14 @@ let redeem let (tokens_transfer_ops, new_storage) = Treasury.redeem holder storage in (tokens_transfer_ops, new_storage) +[@inline] +let redeem_by_batch + (batch_id:nat) + (storage : storage) : result = + let holder = Tezos.get_sender () in + let () = Utils.reject_if_tez_supplied () in + let (tokens_transfer_ops, new_storage) = Treasury.redeem_by_batch holder batch_id storage in + (tokens_transfer_ops, new_storage) [@inline] let change_oracle_price_source @@ -1502,6 +1525,7 @@ let main (* User endpoints *) | Deposit order -> deposit order storage | Redeem -> redeem storage + | RedeemByBatch i -> redeem_by_batch i storage | Cancel pair -> cancel pair storage (* Maintenance endpoint *) | Tick r -> tick r storage diff --git a/batcher/marketmaker-ghostnet.tz b/batcher/marketmaker-ghostnet.tz deleted file mode 100644 index 76526f76..00000000 --- a/batcher/marketmaker-ghostnet.tz +++ /dev/null @@ -1,2227 +0,0 @@ -{ parameter - (or (or (or (pair %addLiquidity - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (address %change_admin_address)) - (or (address %change_batcher_address) (string %claim))) - (or (string %removeLiquidity) (unit %tick))) ; - storage - (pair (pair (pair (pair (address %administrator) (address %batcher)) - (nat %last_holding_id) - (nat %limit_on_tokens_or_pairs)) - (pair (big_map %metadata string bytes) - (big_map %user_holdings (pair address string) nat)) - (map %valid_swaps - string - (pair (pair %swap (string %from) (string %to)) - (address %oracle_address) - (string %oracle_asset_name) - (nat %oracle_precision) - (bool %is_disabled_for_deposits))) - (map %valid_tokens - string - (pair (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)))) - (big_map %vault_holdings - nat - (pair (pair (pair (address %holder) (nat %id)) (nat %shares) (string %token)) - (mutez %unclaimed))) - (big_map %vaults - string - (pair (pair (map %foreign_tokens - string - (pair (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount))) - (set %holdings nat)) - (pair %native_token - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (nat %total_shares)))) ; - code { LAMBDA - (pair nat nat nat) - nat - { UNPAIR 3 ; - PAIR ; - PAIR ; - LEFT nat ; - LOOP_LEFT - { UNPAIR ; - UNPAIR ; - PUSH nat 0 ; - DUP 3 ; - COMPARE ; - EQ ; - IF { DROP 2 ; RIGHT (pair (pair nat nat) nat) } - { PUSH nat 1 ; - PUSH nat 1 ; - DUP 4 ; - AND ; - COMPARE ; - EQ ; - IF { DUP ; DIG 3 ; MUL } { DIG 2 } ; - PUSH nat 1 ; - DIG 3 ; - LSR ; - DUP 3 ; - DIG 3 ; - MUL ; - PAIR ; - PAIR ; - LEFT nat } } } ; - LAMBDA - (pair int int) - int - { UNPAIR ; - SWAP ; - PUSH int 1 ; - PAIR ; - LEFT int ; - LOOP_LEFT - { UNPAIR ; - PUSH int 0 ; - DUP 3 ; - COMPARE ; - EQ ; - IF { SWAP ; DROP ; RIGHT (pair int int) } - { PUSH int 1 ; DIG 2 ; SUB ; DUP 3 ; DIG 2 ; MUL ; PAIR ; LEFT int } } ; - SWAP ; - DROP } ; - LAMBDA - (pair bool nat) - unit - { UNPAIR ; NOT ; IF { FAILWITH } { DROP ; UNIT } } ; - EMPTY_MAP string (pair (pair nat string (option address) nat (option string)) nat) ; - LAMBDA - (pair (pair (pair nat string (option address) nat (option string)) nat) - (map string (pair (pair nat string (option address) nat (option string)) nat))) - (map string (pair (pair nat string (option address) nat (option string)) nat)) - { UNPAIR ; - SWAP ; - UNIT ; - RIGHT unit ; - DIG 2 ; - DUP ; - CAR ; - GET 3 ; - DUP 4 ; - DUP 2 ; - GET ; - IF_NONE - { DIG 2 ; DROP ; SWAP ; SOME ; SWAP ; UPDATE } - { DIG 3 ; - IF_LEFT - { DROP ; - DUP ; - CDR ; - DUP 4 ; - CDR ; - COMPARE ; - GT ; - IF { DROP ; PUSH nat 111 ; FAILWITH } - { DUP 3 ; CDR ; SWAP ; CDR ; SUB ; ABS } } - { DROP ; CDR ; DUP 3 ; CDR ; ADD } ; - DIG 3 ; - DIG 3 ; - DIG 2 ; - UPDATE 2 ; - SOME ; - DIG 2 ; - UPDATE } } ; - LAMBDA - (pair (map string (pair (pair nat string (option address) nat (option string)) nat)) - (pair nat - (pair (pair nat string (option address) nat (option string)) nat) - (option - (pair (pair (map string (pair (pair nat string (option address) nat (option string)) nat)) - (set nat)) - (pair (pair nat string (option address) nat (option string)) nat) - nat)))) - (pair (pair (map string (pair (pair nat string (option address) nat (option string)) nat)) - (set nat)) - (pair (pair nat string (option address) nat (option string)) nat) - nat) - { UNPAIR ; - SWAP ; - UNPAIR 3 ; - DIG 2 ; - IF_NONE - { DUP 2 ; - CDR ; - DIG 2 ; - PAIR ; - EMPTY_SET nat ; - DIG 2 ; - PUSH bool True ; - SWAP ; - UPDATE ; - DIG 2 ; - PAIR ; - PAIR } - { DIG 3 ; - DROP ; - DUP ; - CDR ; - CAR ; - DUP ; - CAR ; - DUP 5 ; - CAR ; - DUP 2 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - NOT ; - IF { DROP 4 ; PUSH nat 115 ; FAILWITH } - { DUP 4 ; - CDR ; - DUP 3 ; - CDR ; - CDR ; - ADD ; - DUP 2 ; - DIG 5 ; - CDR ; - DIG 3 ; - CDR ; - ADD ; - UPDATE 2 ; - DUP 3 ; - DUP 4 ; - CAR ; - DUP 5 ; - CAR ; - CDR ; - DUP 7 ; - MEM ; - IF { DIG 5 ; DROP ; DIG 4 ; CAR ; CDR } - { DIG 4 ; CAR ; CDR ; DIG 5 ; PUSH bool True ; SWAP ; UPDATE } ; - UPDATE 2 ; - UPDATE 1 ; - DUP ; - CDR ; - DIG 3 ; - UPDATE 2 ; - UPDATE 2 ; - DUP ; - CDR ; - DIG 2 ; - UPDATE 1 ; - UPDATE 2 } } } ; - DUP 3 ; - APPLY ; - LAMBDA - (pair (pair (lambda - (pair (pair (pair nat string (option address) nat (option string)) nat) - (map string (pair (pair nat string (option address) nat (option string)) nat))) - (map string (pair (pair nat string (option address) nat (option string)) nat))) - (lambda (pair nat nat nat) nat)) - (pair (pair int int) - (pair (pair nat string (option address) nat (option string)) nat) - (map string (pair (pair nat string (option address) nat (option string)) nat)))) - (pair (pair (pair nat string (option address) nat (option string)) nat) - (map string (pair (pair nat string (option address) nat (option string)) nat))) - { UNPAIR ; - UNPAIR ; - DIG 2 ; - UNPAIR 3 ; - DUP 2 ; - CDR ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP ; - CDR ; - DUP 3 ; - CDR ; - MUL ; - SWAP ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - PUSH int 0 ; - DUP 2 ; - CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 2 ; CDR ; MUL ; PUSH int -1 ; DIG 2 ; CAR ; MUL ; PAIR } - {} ; - DUP ; - CDR ; - PUSH nat 1 ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR 3 ; - DIG 6 ; - SWAP ; - EXEC ; - DIG 2 ; - CAR ; - MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - DUP 2 ; - CDR ; - DUP 2 ; - COMPARE ; - GT ; - IF { DROP 4 ; PUSH nat 153 ; FAILWITH } - { DUP ; - DUP 3 ; - CDR ; - INT ; - SUB ; - ABS ; - DUP 3 ; - DIG 2 ; - UPDATE 2 ; - PUSH nat 0 ; - DUP 2 ; - CDR ; - COMPARE ; - EQ ; - IF { DIG 4 ; DROP 2 ; DIG 2 } - { DIG 3 ; SWAP ; PAIR ; DIG 3 ; SWAP ; EXEC } ; - DUG 2 ; - UPDATE 2 ; - PAIR } } ; - DUP 7 ; - DUP 4 ; - PAIR ; - APPLY ; - DIG 7 ; - UNPAIR ; - IF_LEFT - { DIG 2 ; - DIG 4 ; - DIG 5 ; - DIG 7 ; - DIG 8 ; - DROP 5 ; - IF_LEFT - { IF_LEFT - { PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - SENDER ; - SELF_ADDRESS ; - DUP 3 ; - CAR ; - GET 5 ; - IF_NONE - { DROP ; PUSH nat 109 ; FAILWITH } - { DUP 4 ; - CAR ; - GET 8 ; - IF_NONE - { DROP 2 ; PUSH nat 108 ; FAILWITH } - { PUSH string "FA1.2 token" ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; - CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 5 ; - CDR ; - DIG 3 ; - DUP 5 ; - PAIR 3 ; - TRANSFER_TOKENS } - { PUSH string "FA2 token" ; - SWAP ; - COMPARE ; - EQ ; - IF { CONTRACT %transfer - (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - NIL (pair address (list (pair address nat nat))) ; - NIL (pair address nat nat) ; - DUP 7 ; - CDR ; - DUP 8 ; - CAR ; - CAR ; - DIG 6 ; - PAIR 3 ; - CONS ; - DUP 5 ; - PAIR ; - CONS ; - TRANSFER_TOKENS } - { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; - PUSH nat 1 ; - DUP 5 ; - CAR ; - CAR ; - CDR ; - CAR ; - ADD ; - DUP 4 ; - CAR ; - GET 3 ; - DUP 4 ; - PAIR ; - DUP 6 ; - CAR ; - CDR ; - CAR ; - CDR ; - DUP 2 ; - GET ; - IF_NONE - { DIG 7 ; - DROP ; - DUP 5 ; - CAR ; - GET 3 ; - DUP 7 ; - CDR ; - CDR ; - DUP 2 ; - GET ; - DUP 7 ; - DUP 5 ; - PAIR 3 ; - DIG 8 ; - SWAP ; - EXEC ; - DUP 8 ; - DUP 9 ; - CDR ; - DUP 10 ; - CDR ; - CDR ; - DIG 3 ; - SOME ; - DIG 4 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - DUP ; - CDR ; - DUP 8 ; - CDR ; - CAR ; - PUSH mutez 0 ; - DUP 9 ; - CAR ; - GET 3 ; - DIG 9 ; - CDR ; - PAIR ; - DUP 7 ; - DIG 9 ; - PAIR ; - PAIR ; - PAIR ; - DUP 6 ; - SWAP ; - SOME ; - SWAP ; - UPDATE ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CAR ; - DUP ; - CDR ; - DUP ; - CAR ; - DIG 7 ; - CAR ; - CDR ; - CAR ; - CDR ; - DUP 7 ; - DIG 6 ; - SWAP ; - SOME ; - SWAP ; - UPDATE ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - DUP ; - CAR ; - DUP ; - CAR ; - DUP ; - CDR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 } - { SWAP ; - DIG 2 ; - DROP 2 ; - DUP 4 ; - CAR ; - GET 3 ; - DUP 6 ; - CDR ; - CDR ; - DUP 2 ; - GET ; - DUP 6 ; - DUP 4 ; - PAIR 3 ; - DIG 7 ; - SWAP ; - EXEC ; - DUP 7 ; - CDR ; - CAR ; - DUP 4 ; - GET ; - NONE (pair (pair (pair address nat) nat string) mutez) ; - DUP 2 ; - COMPARE ; - EQ ; - IF { SWAP ; - DIG 2 ; - DIG 3 ; - DIG 5 ; - DIG 6 ; - DIG 7 ; - DIG 8 ; - DROP 8 ; - PUSH nat 149 ; - FAILWITH } - { IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; - PUSH nat 150 ; - DIG 6 ; - DUP 3 ; - CAR ; - CAR ; - CAR ; - COMPARE ; - EQ ; - PAIR ; - DIG 8 ; - SWAP ; - EXEC ; - DROP ; - DUP ; - DUP 2 ; - CAR ; - DUP ; - CDR ; - DIG 8 ; - CDR ; - DIG 4 ; - CAR ; - CDR ; - CAR ; - ADD ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - DUP 6 ; - DUP 7 ; - CDR ; - DUP 8 ; - CDR ; - CDR ; - DIG 4 ; - SOME ; - DIG 5 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - DUP ; - CDR ; - DUP 6 ; - CDR ; - CAR ; - DIG 3 ; - SOME ; - DIG 4 ; - UPDATE ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CAR ; - DUP ; - CDR ; - DUP ; - CAR ; - DIG 5 ; - CAR ; - CDR ; - CAR ; - CDR ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 } } ; - NIL operation ; - DIG 2 ; - CONS } - { DIG 2 ; - DIG 3 ; - DROP 2 ; - DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - NIL operation } ; - PAIR } - { DIG 2 ; - DIG 3 ; - DROP 2 ; - IF_LEFT - { DUP 2 ; - CAR ; - CAR ; - CAR ; - CAR ; - SENDER ; - COMPARE ; - EQ ; - IF {} { PUSH nat 114 ; FAILWITH } ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP 2 ; - DIG 2 ; - CAR ; - DUP ; - CAR ; - DUP ; - CAR ; - DIG 4 ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 1 ; - UPDATE 1 ; - NIL operation ; - PAIR } - { PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - SENDER ; - DUP 3 ; - CAR ; - CDR ; - CAR ; - CDR ; - DIG 2 ; - DUP 3 ; - PAIR ; - GET ; - IF_NONE - { DROP 2 ; PUSH nat 155 ; FAILWITH } - { DUP 3 ; - CDR ; - CAR ; - DUP 2 ; - GET ; - IF_NONE - { DROP 3 ; PUSH nat 155 ; FAILWITH } - { DUP ; - CDR ; - PUSH mutez 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP 5 ; PUSH nat 155 ; FAILWITH } - { DIG 3 ; - CONTRACT unit ; - IF_NONE - { DROP ; PUSH nat 102 ; FAILWITH } - { SWAP ; UNIT ; TRANSFER_TOKENS } ; - DUP 4 ; - DUP 5 ; - CDR ; - DIG 5 ; - CDR ; - CAR ; - DIG 4 ; - PUSH mutez 0 ; - UPDATE 2 ; - SOME ; - DIG 5 ; - UPDATE ; - UPDATE 1 ; - UPDATE 2 ; - NIL operation ; - DIG 2 ; - CONS ; - PAIR } } } } } } - { DIG 3 ; - DROP ; - IF_LEFT - { DIG 6 ; - DIG 7 ; - DROP 2 ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - SENDER ; - DUP 2 ; - DUP 2 ; - PAIR ; - DUP 4 ; - CAR ; - CDR ; - CAR ; - CDR ; - DUP 2 ; - GET ; - DUP 5 ; - CDR ; - CDR ; - DUP 5 ; - GET ; - DUP 2 ; - IF_NONE { PUSH nat 151 ; FAILWITH } { DROP } ; - DUP ; - IF_NONE { PUSH nat 152 ; FAILWITH } { DROP } ; - DIG 5 ; - SWAP ; - IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; - DIG 3 ; - DIG 5 ; - DIG 5 ; - DIG 5 ; - IF_NONE { PUSH string "option is None" ; FAILWITH } {} ; - DUP 6 ; - CDR ; - CAR ; - DUP ; - DUP 3 ; - GET ; - IF_NONE { PUSH nat 149 ; FAILWITH } {} ; - PUSH nat 150 ; - DUP 2 ; - CAR ; - CAR ; - CAR ; - DUP 6 ; - COMPARE ; - EQ ; - PAIR ; - DIG 12 ; - SWAP ; - EXEC ; - DROP ; - UNPAIR ; - CDR ; - CAR ; - DUP 8 ; - CDR ; - CDR ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP 2 ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DUP 13 ; - DUP 10 ; - CDR ; - CAR ; - DUP 3 ; - PAIR 3 ; - DUP 12 ; - SWAP ; - EXEC ; - UNPAIR ; - SWAP ; - DIG 14 ; - DIG 3 ; - PAIR ; - PAIR ; - DUP 10 ; - CAR ; - CAR ; - ITER { CDR ; - SWAP ; - UNPAIR ; - UNPAIR ; - DIG 2 ; - DIG 3 ; - DUP 3 ; - PAIR 3 ; - DUP 14 ; - SWAP ; - EXEC ; - UNPAIR ; - DIG 3 ; - SWAP ; - PAIR ; - DUP 15 ; - SWAP ; - EXEC ; - DIG 2 ; - PAIR ; - PAIR } ; - DIG 11 ; - DIG 12 ; - DROP 2 ; - UNPAIR ; - CDR ; - DUP 11 ; - CDR ; - CDR ; - DUP 5 ; - COMPARE ; - GT ; - IF { SWAP ; DIG 2 ; DIG 3 ; DIG 10 ; DROP 5 ; PUSH nat 154 ; FAILWITH } - { DIG 3 ; - DUP 11 ; - CDR ; - CDR ; - SUB ; - ABS ; - DIG 2 ; - DUP 11 ; - DUP 12 ; - CDR ; - DIG 5 ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CAR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 1 ; - DUP ; - CAR ; - DIG 10 ; - CAR ; - CDR ; - DUP 8 ; - PUSH bool False ; - SWAP ; - UPDATE ; - UPDATE 2 ; - UPDATE 1 ; - DUP ; - CDR ; - DIG 3 ; - UPDATE 2 ; - UPDATE 2 ; - PAIR } ; - UNPAIR ; - DUP 6 ; - CONTRACT unit ; - IF_NONE { PUSH nat 102 ; FAILWITH } { DUP 4 ; UNIT ; TRANSFER_TOKENS } ; - SELF_ADDRESS ; - NIL operation ; - DIG 4 ; - ITER { CDR ; - DUP ; - CAR ; - GET 5 ; - IF_NONE - { DROP ; PUSH nat 109 ; FAILWITH } - { DUP 2 ; - CAR ; - GET 8 ; - IF_NONE - { DROP 2 ; PUSH nat 108 ; FAILWITH } - { PUSH string "FA1.2 token" ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DROP ; - CONTRACT %transfer (pair (address %from) (address %to) (nat %value)) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - DIG 2 ; - CDR ; - DUP 11 ; - DUP 6 ; - PAIR 3 ; - TRANSFER_TOKENS } - { PUSH string "FA2 token" ; - SWAP ; - COMPARE ; - EQ ; - IF { CONTRACT %transfer - (list (pair (address %from_) (list %tx (pair (address %to_) (nat %token_id) (nat %amount))))) ; - IF_NONE { PUSH nat 101 ; FAILWITH } {} ; - PUSH mutez 0 ; - NIL (pair address (list (pair address nat nat))) ; - NIL (pair address nat nat) ; - DUP 5 ; - CDR ; - DIG 5 ; - CAR ; - CAR ; - DUP 14 ; - PAIR 3 ; - CONS ; - DUP 6 ; - PAIR ; - CONS ; - TRANSFER_TOKENS } - { DROP 2 ; PUSH nat 108 ; FAILWITH } } } } ; - CONS } ; - SWAP ; - DIG 7 ; - DROP 2 ; - DUP 9 ; - DUP 10 ; - CAR ; - DUP ; - CDR ; - DUP ; - CAR ; - DUP 13 ; - CAR ; - CDR ; - CAR ; - CDR ; - DIG 12 ; - NONE nat ; - SWAP ; - UPDATE ; - UPDATE 2 ; - UPDATE 1 ; - UPDATE 2 ; - UPDATE 1 ; - DUP ; - CDR ; - DIG 6 ; - DIG 7 ; - NONE (pair (pair (pair address nat) nat string) mutez) ; - SWAP ; - UPDATE ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CDR ; - DIG 7 ; - CDR ; - CDR ; - DIG 5 ; - SOME ; - DIG 7 ; - UPDATE ; - UPDATE 2 ; - UPDATE 2 ; - PUSH mutez 0 ; - DIG 4 ; - COMPARE ; - GT ; - IF { SWAP ; DIG 2 ; CONS } { DIG 2 ; DROP ; SWAP } } - { DIG 2 ; - DIG 3 ; - DIG 4 ; - DIG 5 ; - DROP 5 ; - PUSH mutez 1 ; - AMOUNT ; - COMPARE ; - LT ; - IF {} { PUSH nat 118 ; FAILWITH } ; - DUP ; - CAR ; - CAR ; - CAR ; - CDR ; - UNIT ; - VIEW "get_current_batches" - (list (pair (nat %batch_number) - (or %status - (or (pair %cleared - (pair (timestamp %at) - (pair %clearing - (pair %clearing_volumes (nat %minus) (nat %exact) (nat %plus)) - (or %clearing_tolerance (or (unit %exact) (unit %minus)) (unit %plus)) - (pair %total_cleared_volumes - (nat %buy_side_total_cleared_volume) - (nat %buy_side_volume_subject_to_clearing) - (nat %sell_side_total_cleared_volume) - (nat %sell_side_volume_subject_to_clearing)) - (pair %clearing_rate - (pair %swap (string %from) (string %to)) - (pair %rate (int %p) (int %q)) - (timestamp %when)))) - (pair %rate - (pair %swap (string %from) (string %to)) - (pair %rate (int %p) (int %q)) - (timestamp %when))) - (pair %closed (timestamp %closing_time) (timestamp %start_time))) - (timestamp %open)) - (pair %volumes - (nat %buy_minus_volume) - (nat %buy_exact_volume) - (nat %buy_plus_volume) - (nat %buy_total_volume) - (nat %sell_minus_volume) - (nat %sell_exact_volume) - (nat %sell_plus_volume) - (nat %sell_total_volume)) - (pair %pair string string) - (nat %holdings) - (bool %market_vault_used))) ; - IF_NONE { PUSH nat 158 ; FAILWITH } {} ; - NIL string ; - DUP 3 ; - CAR ; - CDR ; - CDR ; - CDR ; - ITER { CAR ; CONS } ; - DIG 2 ; - SWAP ; - ITER { SWAP ; - DUP ; - CDR ; - CDR ; - DIG 2 ; - GET ; - IF_NONE - {} - { DUP 2 ; - CDR ; - CDR ; - DUP ; - DUP 3 ; - PAIR ; - DUP 3 ; - CAR ; - CAR ; - ITER { UNPAIR ; - DIG 2 ; - UNPAIR ; - DUP 5 ; - DIG 3 ; - GET ; - IF_NONE - { DIG 2 ; DROP } - { SWAP ; - DIG 2 ; - DROP 2 ; - DUP ; - CAR ; - CAR ; - DUP 5 ; - CDR ; - CAR ; - CAR ; - GET 3 ; - GET ; - IF_NONE - { DROP 2 ; DUP ; DUP 3 } - { DUP 6 ; - CAR ; - CDR ; - CDR ; - CDR ; - DUP 3 ; - CDR ; - CAR ; - DUP 7 ; - CDR ; - CAR ; - DUP 9 ; - CAR ; - CDR ; - CDR ; - CAR ; - DUP 7 ; - CAR ; - GET 3 ; - DUP 3 ; - CAR ; - GET 3 ; - DUP 2 ; - DUP 2 ; - COMPARE ; - GT ; - IF { SWAP ; PUSH string "/" ; CONCAT ; SWAP ; CONCAT } - { PUSH string "/" ; CONCAT ; SWAP ; CONCAT } ; - GET ; - IF_NONE - { DIG 2 ; DROP ; DUG 2 ; PAIR ; DIG 3 } - { DUP ; - GET 3 ; - DUP 2 ; - GET 5 ; - VIEW "getPrice" (pair timestamp nat) ; - IF_NONE { PUSH nat 159 ; FAILWITH } {} ; - UNPAIR ; - DUP 3 ; - CAR ; - DUP 7 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DUP 8 ; - DIG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - PUSH nat 1 ; - DIG 2 ; - PAIR ; - PAIR ; - DUP 4 ; - GET 7 ; - DUP ; - DUP 3 ; - CAR ; - CAR ; - GET 7 ; - COMPARE ; - GT ; - IF { DUP 2 ; - CAR ; - CAR ; - GET 7 ; - SUB ; - PUSH int 10 ; - PAIR ; - DUP 16 ; - SWAP ; - EXEC ; - DIG 3 ; - MUL ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - DUP 2 ; - CAR ; - CAR ; - GET 7 ; - INT ; - PUSH int 10 ; - PAIR ; - DUP 16 ; - SWAP ; - EXEC ; - SWAP } - { INT ; PUSH int 10 ; PAIR ; DUP 16 ; SWAP ; EXEC ; DIG 3 } ; - INT ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - PUSH int 1 ; - DIG 2 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DIG 2 ; - SWAP ; - DUP 3 ; - CDR ; - GET 3 ; - DIG 3 ; - CAR ; - CAR ; - GET 3 ; - PAIR ; - PAIR 3 ; - DUP ; - CAR ; - DUP 6 ; - DUP 2 ; - CAR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - DIG 6 ; - DIG 2 ; - CDR ; - GET ; - IF_NONE { PUSH nat 111 ; FAILWITH } {} ; - SWAP ; - GET 7 ; - SWAP ; - GET 7 ; - SUB ; - DUP ; - ABS ; - INT ; - PUSH int 10 ; - PAIR ; - DUP 14 ; - SWAP ; - EXEC ; - PUSH int 0 ; - DUP 3 ; - COMPARE ; - EQ ; - IF { DROP 2 ; PUSH int 1 ; PUSH int 1 } - { PUSH int 0 ; - DIG 2 ; - COMPARE ; - LT ; - IF { PUSH int 1 ; - SWAP ; - PAIR ; - PUSH int 1 ; - PUSH int 1 ; - PAIR ; - DUP 2 ; - CAR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CDR ; - DIG 2 ; - CAR ; - MUL } - { PUSH int 1 ; SWAP } } ; - PAIR ; - DUP 2 ; - GET 3 ; - DUP 2 ; - CDR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - UPDATE 3 ; - DUP 7 ; - CAR ; - GET 3 ; - DUP 3 ; - CAR ; - CDR ; - COMPARE ; - EQ ; - DUP 4 ; - CAR ; - GET 3 ; - DIG 3 ; - CAR ; - CAR ; - COMPARE ; - EQ ; - AND ; - IF { DUP 4 ; - CDR ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP 2 ; - GET 3 ; - DUP 2 ; - CDR ; - DUP 2 ; - CDR ; - MUL ; - DIG 2 ; - CAR ; - DIG 2 ; - CAR ; - MUL ; - PAIR ; - DUP 7 ; - CDR ; - INT ; - PUSH int 1 ; - SWAP ; - PAIR ; - DUP ; - DUP 3 ; - COMPARE ; - GT ; - IF { SWAP ; DROP } { DROP } ; - SWAP ; - GET 3 ; - DUP ; - CAR ; - DUP 3 ; - CDR ; - MUL ; - SWAP ; - CDR ; - DUP 3 ; - CAR ; - MUL ; - PAIR ; - PUSH int 0 ; - DUP 2 ; - CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 2 ; CDR ; MUL ; PUSH int -1 ; DIG 2 ; CAR ; MUL ; PAIR } - {} ; - DUP ; - CDR ; - PUSH nat 1 ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR 3 ; - DUP 15 ; - SWAP ; - EXEC ; - DIG 2 ; - CAR ; - MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - PUSH int 0 ; - DUP 3 ; - CAR ; - COMPARE ; - LT ; - IF { PUSH int -1 ; DUP 3 ; CDR ; MUL ; PUSH int -1 ; DIG 3 ; CAR ; MUL ; PAIR } - { SWAP } ; - DUP ; - CDR ; - PUSH nat 1 ; - PUSH nat 0 ; - PUSH nat 10 ; - PAIR 3 ; - DUP 15 ; - SWAP ; - EXEC ; - DIG 2 ; - CAR ; - MUL ; - EDIV ; - IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; - CAR ; - ISNAT ; - IF_NONE { PUSH nat 119 ; FAILWITH } {} ; - DUP 7 ; - SWAP ; - UPDATE 2 ; - DUP 3 ; - DIG 2 ; - UPDATE 2 ; - DUP ; - CAR ; - DUP 4 ; - CAR ; - DUP 2 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF { DUP ; CDR ; DUP 4 ; CDR ; ADD ; DIG 3 ; SWAP ; UPDATE 2 } - { DIG 2 ; DROP ; PUSH nat 115 ; FAILWITH } ; - DUP 2 ; - CAR ; - DUP 6 ; - CAR ; - DUP 2 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF { SWAP ; - CDR ; - DUP 5 ; - CDR ; - SUB ; - PUSH int 0 ; - DUP 2 ; - COMPARE ; - LT ; - IF { DIG 4 ; DROP 2 ; PUSH nat 111 ; FAILWITH } - { DIG 4 ; SWAP ; ABS ; UPDATE 2 } } - { SWAP ; DIG 4 ; DROP 2 ; PUSH nat 115 ; FAILWITH } ; - DUP 3 ; - CAR ; - DUP 7 ; - CAR ; - DUP 2 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF { DUP 3 ; - CDR ; - DUP 7 ; - CDR ; - SUB ; - PUSH int 0 ; - DUP 2 ; - COMPARE ; - LT ; - IF { DIG 6 ; DROP 2 ; PUSH nat 111 ; FAILWITH } - { DIG 6 ; SWAP ; ABS ; UPDATE 2 } } - { DIG 5 ; DROP ; PUSH nat 115 ; FAILWITH } ; - DUP 4 ; - CAR ; - DUP 6 ; - CAR ; - DUP 2 ; - GET 8 ; - DUP 2 ; - GET 8 ; - COMPARE ; - EQ ; - DUP 3 ; - GET 7 ; - DUP 3 ; - GET 7 ; - COMPARE ; - EQ ; - DUP 4 ; - GET 5 ; - DUP 4 ; - GET 5 ; - COMPARE ; - EQ ; - DUP 5 ; - GET 3 ; - DUP 5 ; - GET 3 ; - COMPARE ; - EQ ; - DIG 5 ; - CAR ; - DIG 5 ; - CAR ; - COMPARE ; - EQ ; - AND ; - AND ; - AND ; - AND ; - IF { DIG 3 ; CDR ; DUP 5 ; CDR ; ADD ; DIG 4 ; SWAP ; UPDATE 2 } - { DIG 3 ; DIG 4 ; DROP 2 ; PUSH nat 115 ; FAILWITH } ; - DIG 2 ; - SWAP ; - PAIR ; - SWAP } - { DROP ; DUG 2 ; PAIR ; DIG 3 } } ; - DUG 2 ; - UNPAIR ; - DUP 7 ; - DUP 8 ; - CDR ; - DIG 4 ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CAR ; - DUP 8 ; - CAR ; - CAR ; - DUP 6 ; - SOME ; - DIG 6 ; - CAR ; - GET 3 ; - UPDATE ; - UPDATE 1 ; - UPDATE 1 ; - DUP 4 ; - DUP 5 ; - CDR ; - DIG 3 ; - UPDATE 1 ; - UPDATE 2 ; - DUP ; - CAR ; - DIG 4 ; - CAR ; - CAR ; - DUP 5 ; - SOME ; - DIG 5 ; - CAR ; - GET 3 ; - UPDATE ; - UPDATE 1 ; - UPDATE 1 ; - DUP 3 ; - DUP 3 ; - SOME ; - DUP 4 ; - CDR ; - CAR ; - CAR ; - GET 3 ; - UPDATE ; - DUP 2 ; - SOME ; - DIG 2 ; - CDR ; - CAR ; - CAR ; - GET 3 ; - UPDATE ; - SWAP } } ; - PAIR } ; - SWAP ; - DIG 2 ; - DROP 2 ; - DUP 2 ; - DIG 2 ; - CDR ; - DIG 2 ; - CDR ; - UPDATE 2 ; - UPDATE 2 } } ; - DIG 2 ; - DIG 3 ; - DROP 2 ; - DUP ; - CAR ; - CAR ; - CAR ; - CDR ; - UNIT ; - VIEW "redeemable_holdings_available" bool ; - IF_NONE { PUSH nat 161 ; FAILWITH } {} ; - IF { DUP ; - CAR ; - CAR ; - CAR ; - CDR ; - CONTRACT %redeem unit ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - UNIT ; - TRANSFER_TOKENS ; - SOME } - { NONE operation } ; - DUP 2 ; - NIL operation ; - PAIR ; - DIG 3 ; - ITER { SWAP ; - UNPAIR ; - DUP 5 ; - CAR ; - CAR ; - CAR ; - CDR ; - DUP 4 ; - GET 10 ; - IF { DIG 3 ; DROP 2 ; DUP 2 ; CDR ; CDR ; NIL operation ; PAIR } - { PUSH nat 0 ; - DUP 5 ; - GET 5 ; - GET 7 ; - COMPARE ; - EQ ; - IF { NONE nat } { DUP 4 ; GET 5 ; GET 7 ; SOME } ; - PUSH nat 0 ; - DUP 6 ; - GET 5 ; - GET 14 ; - COMPARE ; - EQ ; - IF { NONE nat } { DUP 5 ; GET 5 ; GET 14 ; SOME } ; - IF_NONE - { IF_NONE - { DIG 3 ; DROP 2 ; DUP 2 ; CDR ; CDR ; NIL operation ; PAIR } - { DIG 4 ; - GET 7 ; - UNPAIR ; - DUP 6 ; - CAR ; - CDR ; - CDR ; - CDR ; - SWAP ; - GET ; - IF_NONE - { DROP 3 ; PUSH nat 138 ; FAILWITH } - { DUP 6 ; - CAR ; - CDR ; - CDR ; - CDR ; - DIG 2 ; - GET ; - IF_NONE - { DROP 3 ; PUSH nat 138 ; FAILWITH } - { DUP 6 ; - CDR ; - CDR ; - DUP ; - DUP 4 ; - GET 3 ; - GET ; - IF_NONE - { DIG 3 ; DROP 2 ; PUSH nat 152 ; FAILWITH } - { DUP ; - CDR ; - CAR ; - DUP 2 ; - CDR ; - CAR ; - CDR ; - DUP ; - DUP 8 ; - COMPARE ; - LT ; - IF { DROP ; DIG 5 } { DIG 6 ; DROP } ; - DUP 2 ; - DUP 2 ; - DIG 3 ; - CDR ; - SUB ; - ABS ; - UPDATE 2 ; - DIG 3 ; - DUP 4 ; - DIG 4 ; - CDR ; - DIG 3 ; - UPDATE 1 ; - UPDATE 2 ; - SOME ; - DUP 5 ; - GET 3 ; - UPDATE ; - SWAP ; - PAIR } ; - UNPAIR ; - PUSH nat 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DIG 2 ; DIG 3 ; DIG 4 ; DROP 4 ; NIL operation } - { DIG 2 ; - DIG 3 ; - UNIT ; - LEFT unit ; - UNIT ; - LEFT unit ; - LEFT unit ; - IF_LEFT - { IF_LEFT { DROP ; PUSH nat 1 } { DROP ; PUSH nat 0 } } - { DROP ; PUSH nat 2 } ; - SWAP ; - IF_LEFT { DROP ; PUSH nat 0 } { DROP ; PUSH nat 1 } ; - NOW ; - DIG 4 ; - DIG 5 ; - DIG 5 ; - PAIR ; - PAIR ; - PAIR 4 ; - DUP ; - CAR ; - CAR ; - CAR ; - GET 5 ; - IF_NONE - { DIG 2 ; DROP 2 ; PUSH nat 109 ; FAILWITH } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA1.2 token" ; SWAP ; COMPARE ; EQ } ; - IF { DUP ; - CONTRACT %approve (pair (address %spender) (nat %value)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 4 ; - CAR ; - CAR ; - CDR ; - DUP 7 ; - PAIR ; - TRANSFER_TOKENS } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA2 token" ; SWAP ; COMPARE ; EQ } ; - IF { SELF_ADDRESS ; - DUP 2 ; - CONTRACT %add_operator - (pair (pair (address %operator) (address %owner)) (nat %token_id)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 5 ; - CAR ; - CAR ; - CAR ; - CAR ; - DIG 3 ; - DUP 8 ; - PAIR ; - PAIR ; - TRANSFER_TOKENS } - { PUSH nat 108 ; FAILWITH } } ; - DUP 5 ; - CONTRACT %deposit - (pair (pair %swap - (pair %from - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (pair %to - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string))) - (timestamp %created_at) - (nat %side) - (nat %tolerance)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 5 ; - TRANSFER_TOKENS ; - DUP 4 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA1.2 token" ; SWAP ; COMPARE ; EQ } ; - IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; NONE operation } - { DUP 4 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA2 token" ; SWAP ; COMPARE ; EQ } ; - IF { SELF_ADDRESS ; - DIG 3 ; - CONTRACT %remove_operator - (pair (pair (address %operator) (address %owner)) (nat %token_id)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DIG 5 ; - CAR ; - CAR ; - CAR ; - CAR ; - DIG 3 ; - DIG 7 ; - PAIR ; - PAIR ; - TRANSFER_TOKENS ; - SOME } - { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH nat 108 ; FAILWITH } } ; - IF_NONE { NIL operation } { NIL operation ; SWAP ; CONS } ; - SWAP ; - CONS ; - SWAP ; - CONS } } ; - PAIR } } } } - { SWAP ; - IF_NONE - { DIG 4 ; - GET 7 ; - UNPAIR ; - DUP 6 ; - CAR ; - CDR ; - CDR ; - CDR ; - SWAP ; - GET ; - IF_NONE - { DROP 3 ; PUSH nat 138 ; FAILWITH } - { DUP 6 ; - CAR ; - CDR ; - CDR ; - CDR ; - DIG 2 ; - GET ; - IF_NONE - { DROP 3 ; PUSH nat 138 ; FAILWITH } - { DUP 6 ; - CDR ; - CDR ; - DUP ; - DUP 3 ; - GET 3 ; - GET ; - IF_NONE - { DIG 3 ; DROP 2 ; PUSH nat 152 ; FAILWITH } - { DUP ; - CDR ; - CAR ; - DUP 2 ; - CDR ; - CAR ; - CDR ; - DUP ; - DUP 8 ; - COMPARE ; - LT ; - IF { DROP ; DIG 5 } { DIG 6 ; DROP } ; - DUP 2 ; - DUP 2 ; - DIG 3 ; - CDR ; - SUB ; - ABS ; - UPDATE 2 ; - DIG 3 ; - DUP 4 ; - DIG 4 ; - CDR ; - DIG 3 ; - UPDATE 1 ; - UPDATE 2 ; - SOME ; - DUP 4 ; - GET 3 ; - UPDATE ; - SWAP ; - PAIR } ; - UNPAIR ; - PUSH nat 0 ; - DUP 2 ; - COMPARE ; - EQ ; - IF { DIG 2 ; DIG 3 ; DIG 4 ; DROP 4 ; NIL operation } - { DIG 3 ; - DIG 3 ; - UNIT ; - RIGHT unit ; - UNIT ; - LEFT unit ; - LEFT unit ; - IF_LEFT - { IF_LEFT { DROP ; PUSH nat 1 } { DROP ; PUSH nat 0 } } - { DROP ; PUSH nat 2 } ; - SWAP ; - IF_LEFT { DROP ; PUSH nat 0 } { DROP ; PUSH nat 1 } ; - NOW ; - DIG 4 ; - DIG 5 ; - DIG 5 ; - PAIR ; - PAIR ; - PAIR 4 ; - DUP ; - CAR ; - CAR ; - CAR ; - GET 5 ; - IF_NONE - { DIG 2 ; DROP 2 ; PUSH nat 109 ; FAILWITH } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA1.2 token" ; SWAP ; COMPARE ; EQ } ; - IF { DUP ; - CONTRACT %approve (pair (address %spender) (nat %value)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 4 ; - CAR ; - CAR ; - CDR ; - DUP 7 ; - PAIR ; - TRANSFER_TOKENS } - { DUP 2 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA2 token" ; SWAP ; COMPARE ; EQ } ; - IF { SELF_ADDRESS ; - DUP 2 ; - CONTRACT %add_operator - (pair (pair (address %operator) (address %owner)) (nat %token_id)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 5 ; - CAR ; - CAR ; - CAR ; - CAR ; - DIG 3 ; - DUP 8 ; - PAIR ; - PAIR ; - TRANSFER_TOKENS } - { PUSH nat 108 ; FAILWITH } } ; - DUP 5 ; - CONTRACT %deposit - (pair (pair %swap - (pair %from - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (pair %to - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string))) - (timestamp %created_at) - (nat %side) - (nat %tolerance)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DUP 5 ; - TRANSFER_TOKENS ; - DUP 4 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA1.2 token" ; SWAP ; COMPARE ; EQ } ; - IF { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; NONE operation } - { DUP 4 ; - CAR ; - CAR ; - CAR ; - GET 8 ; - IF_NONE - { PUSH bool False } - { PUSH string "FA2 token" ; SWAP ; COMPARE ; EQ } ; - IF { SELF_ADDRESS ; - DIG 3 ; - CONTRACT %remove_operator - (pair (pair (address %operator) (address %owner)) (nat %token_id)) ; - IF_NONE { PUSH nat 157 ; FAILWITH } {} ; - PUSH mutez 0 ; - DIG 5 ; - CAR ; - CAR ; - CAR ; - CAR ; - DIG 3 ; - DIG 7 ; - PAIR ; - PAIR ; - TRANSFER_TOKENS ; - SOME } - { DIG 2 ; DIG 3 ; DIG 5 ; DROP 3 ; PUSH nat 108 ; FAILWITH } } ; - IF_NONE { NIL operation } { NIL operation ; SWAP ; CONS } ; - SWAP ; - CONS ; - SWAP ; - CONS } } ; - PAIR } } } - { SWAP ; DIG 2 ; DIG 5 ; DROP 4 ; DUP 2 ; CDR ; CDR ; NIL operation ; PAIR } } } ; - UNPAIR ; - DUP 4 ; - DIG 4 ; - CDR ; - DIG 3 ; - UPDATE 2 ; - UPDATE 2 ; - NIL operation ; - DIG 3 ; - ITER { CONS } ; - DIG 2 ; - NIL operation ; - SWAP ; - ITER { CONS } ; - ITER { CONS } ; - NIL operation ; - SWAP ; - ITER { CONS } ; - PAIR } ; - DIG 2 ; - DROP ; - UNPAIR ; - SWAP ; - DIG 2 ; - IF_NONE { SWAP } { DIG 2 ; SWAP ; CONS } } ; - PAIR } } ; - view "get_market_vault_holdings" - unit - (pair (map %holdings - string - (pair (pair (pair (address %holder) (nat %id)) (nat %shares) (string %token)) - (mutez %unclaimed))) - (map %vaults - string - (pair (pair (map %foreign_tokens - string - (pair (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount))) - (set %holdings nat)) - (pair %native_token - (pair %token - (nat %token_id) - (string %name) - (option %address address) - (nat %decimals) - (option %standard string)) - (nat %amount)) - (nat %total_shares)))) - { CDR ; - SENDER ; - NIL string ; - DUP 3 ; - CAR ; - CDR ; - CDR ; - CDR ; - ITER { CAR ; CONS } ; - EMPTY_MAP - string - (pair (pair (map string (pair (pair nat string (option address) nat (option string)) nat)) - (set nat)) - (pair (pair nat string (option address) nat (option string)) nat) - nat) ; - DUP 2 ; - ITER { SWAP ; - DUP 5 ; - CDR ; - CDR ; - DUP 3 ; - GET ; - IF_NONE { SWAP ; DROP } { DIG 2 ; SWAP ; SOME ; SWAP ; UPDATE } } ; - EMPTY_MAP string (pair (pair (pair address nat) nat string) mutez) ; - DIG 2 ; - ITER { SWAP ; - DUP 5 ; - CAR ; - CDR ; - CAR ; - CDR ; - DUP 3 ; - DUP 6 ; - PAIR ; - GET ; - IF_NONE - { SWAP ; DROP } - { DUP 6 ; - CDR ; - CAR ; - SWAP ; - GET ; - IF_NONE { SWAP ; DROP } { DIG 2 ; SWAP ; SOME ; SWAP ; UPDATE } } } ; - DIG 2 ; - DIG 3 ; - DROP 2 ; - PAIR } } - diff --git a/batcher/marketmaker-storage-ghostnet.tz b/batcher/marketmaker-storage-ghostnet.tz deleted file mode 100644 index 70949864..00000000 --- a/batcher/marketmaker-storage-ghostnet.tz +++ /dev/null @@ -1,27 +0,0 @@ -(Pair (Pair (Pair (Pair "tz1aSL2gjFnfh96Xf1Zp4T36LxbzKuzyvVJ4" "tz1burnburnburnburnburnburnburjAYjjX") - 0 - 10) - (Pair {} {}) - { Elt "tzBTC/EURL" - (Pair (Pair "tzBTC" "EURL") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-EUR" 6 False) ; - Elt "tzBTC/USDT" - (Pair (Pair "tzBTC" "USDT") "KT1DG2g5DPYWqyHKGpRL579YkYZwJxibwaAZ" "BTC-USDT" 6 False) } - { Elt "EURL" (Pair 0 "EURL" (Some "KT1RcHjqDWWycYQGrz4KBYoGZSMmMuVpkmuS") 6 (Some "FA2 token")) ; - Elt "USDT" (Pair 0 "USDT" (Some "KT1WNrZ7pEbpmYBGPib1e7UVCeC6GA6TkJYR") 6 (Some "FA2 token")) ; - Elt "tzBTC" - (Pair 0 "tzBTC" (Some "KT1P8RdJ5MfHMK5phKJ5JsfNfask5v2b2NQS") 8 (Some "FA1.2 token")) }) - {} - { Elt "EURL" - (Pair (Pair {} {}) - (Pair (Pair 0 "EURL" (Some "KT1RcHjqDWWycYQGrz4KBYoGZSMmMuVpkmuS") 6 (Some "FA2 token")) 0) - 0) ; - Elt "USDT" - (Pair (Pair {} {}) - (Pair (Pair 0 "USDT" (Some "KT1WNrZ7pEbpmYBGPib1e7UVCeC6GA6TkJYR") 6 (Some "FA2 token")) 0) - 0) ; - Elt "tzBTC" - (Pair (Pair {} {}) - (Pair (Pair 0 "tzBTC" (Some "KT1P8RdJ5MfHMK5phKJ5JsfNfask5v2b2NQS") 8 (Some "FA1.2 token")) - 0) - 0) }) - diff --git a/batcher/storage/initial_storage_ghostnet.mligo b/batcher/storage/initial_storage_ghostnet.mligo index a6dac013..e4036021 100644 --- a/batcher/storage/initial_storage_ghostnet.mligo +++ b/batcher/storage/initial_storage_ghostnet.mligo @@ -14,7 +14,7 @@ let f(_:unit) : Batcher.Storage.t = { }); (("BTCtz"), { token_id = 0n; - name = "tzBTC"; + name = "BTCtz"; address = Some(("KT1ErLEYVsxqHxLgLucXViq5DYrtSyDuSFTe" : address)); decimals = 8n; standard = Some "FA2 token" diff --git a/batcher/storage/marketmaker_storage_ghostnet.mligo b/batcher/storage/marketmaker_storage_ghostnet.mligo index c8adb6be..42fa8f3b 100644 --- a/batcher/storage/marketmaker_storage_ghostnet.mligo +++ b/batcher/storage/marketmaker_storage_ghostnet.mligo @@ -12,7 +12,7 @@ let f(_:unit) : MarketMaker.Storage.t = { }); (("BTCtz"), { token_id = 0n; - name = "tzBTC"; + name = "BTCtz"; address = Some(("KT1ErLEYVsxqHxLgLucXViq5DYrtSyDuSFTe" : address)); decimals = 8n; standard = Some "FA2 token"