x
214
{ parameter (or (or (unit %default) (or (address %propose_administrator) (address %remove_administrator))) (or (or (unit %set_administrator) (address %set_generic_oracle)) (or (address %set_sirs_oracle) (list %set_symbol_relation_path (pair (string %symbol) (bool %inversed)))))) ; storage (pair (pair (big_map %administrators address int) (address %generic_oracle)) (pair (address %sirs_oracle) (list %symbol_relation_path (pair (string %symbol) (bool %inversed))))) ; code { LAMBDA (pair unit (pair (pair (big_map address int) address) (pair address (list (pair string bool))))) (pair unit (pair (pair (big_map address int) address) (pair address (list (pair string bool))))) { CDR ; DUP ; CAR ; CAR ; PUSH int 1 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 21 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; NIL operation ; SENDER ; CONTRACT unit ; IF_NONE { PUSH int 131 ; FAILWITH } {} ; AMOUNT ; UNIT ; TRANSFER_TOKENS ; CONS } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; PUSH (option int) (Some 0) ; DIG 4 ; UPDATE ; PAIR ; PAIR } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; NONE int ; DIG 4 ; UPDATE ; PAIR ; PAIR } ; NIL operation } } { IF_LEFT { IF_LEFT { DROP ; SWAP ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; CAR ; CAR ; PUSH int 0 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 46 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 405 ; FAILWITH } ; UNPAIR ; UNPAIR ; PUSH (option int) (Some 1) ; SENDER ; UPDATE ; PAIR ; PAIR } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; CAR ; DIG 2 ; SWAP ; PAIR ; PAIR } } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; UPDATE 3 } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; UPDATE 4 } } ; NIL operation } ; PAIR } ; view "get_price" unit nat { UNPAIR ; PUSH nat 1000000 ; DUP 3 ; GET 4 ; ITER { DUP ; CDR ; PUSH bool False ; COMPARE ; EQ ; IF { PUSH nat 1000000 ; DUP 5 ; CAR ; CDR ; DIG 2 ; CAR ; VIEW "get_price" nat ; IF_NONE { PUSH int 502 ; FAILWITH } {} ; DIG 2 ; MUL ; EDIV ; IF_NONE { PUSH int 160 ; FAILWITH } { CAR } } { DUP 4 ; CAR ; CDR ; SWAP ; CAR ; VIEW "get_price" nat ; IF_NONE { PUSH int 502 ; FAILWITH } {} ; PUSH nat 1000000 ; DIG 2 ; MUL ; EDIV ; IF_NONE { PUSH int 162 ; FAILWITH } { CAR } } } ; SWAP ; DROP ; PUSH nat 1000000 ; DIG 2 ; GET 3 ; UNIT ; VIEW "get_price" nat ; IF_NONE { PUSH int 502 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 166 ; FAILWITH } { CAR } } }