1234567891011121314151617181920212223242526272829303132333435363738394041424344openHash.BuiltinopenPpx_compare_lib.Builtininclude(Sexplib0.Sexp:moduletypeofSexplib0.Sexpwithtypet:=Sexplib0.Sexp.t)(** Type of S-expressions *)typet=Sexplib0.Sexp.t=|Atomofstring|Listoftlist[@@deriving_inlinecompare,hash]letreccompare=(funa__001_->funb__002_->ifPpx_compare_lib.phys_equala__001_b__002_then0else(match(a__001_,b__002_)with|(Atom_a__003_,Atom_b__004_)->compare_string_a__003__b__004_|(Atom_,_)->(-1)|(_,Atom_)->1|(List_a__005_,List_b__006_)->compare_listcompare_a__005__b__006_):t->t->int)letrec(hash_fold_t:Ppx_hash_lib.Std.Hash.state->t->Ppx_hash_lib.Std.Hash.state)=(funhsv->funarg->matchargwith|Atom_a0->lethsv=Ppx_hash_lib.Std.Hash.fold_inthsv0inlethsv=hsvinhash_fold_stringhsv_a0|List_a0->lethsv=Ppx_hash_lib.Std.Hash.fold_inthsv1inlethsv=hsvinhash_fold_listhash_fold_thsv_a0:Ppx_hash_lib.Std.Hash.state->t->Ppx_hash_lib.Std.Hash.state)and(hash:t->Ppx_hash_lib.Std.Hash.hash_value)=letfuncarg=Ppx_hash_lib.Std.Hash.get_hash_value(lethsv=Ppx_hash_lib.Std.Hash.create()inhash_fold_thsvarg)infunx->funcx[@@@end]letof_string=()