["^ ","~:output",["^ ","~:js","goog.provide('datascript.pull_api');\ndatascript.pull_api.into_BANG_ = (function datascript$pull_api$into_BANG_(transient_coll,items){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj_BANG_,transient_coll,items);\n});\ndatascript.pull_api._PLUS_default_limit_PLUS_ = (1000);\ndatascript.pull_api.initial_frame = (function datascript$pull_api$initial_frame(pattern,eids,multi_QMARK_){\nreturn cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(null,\"multi?\",\"multi?\",-749311069),new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700),new cljs.core.Keyword(null,\"state\",\"state\",-1988618099),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),new cljs.core.Keyword(null,\"specs\",\"specs\",1426570741),new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423),new cljs.core.Keyword(null,\"results\",\"results\",-1134170113)],[multi_QMARK_,eids,new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"depth\",\"depth\",1768663640),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,\"seen\",\"seen\",-518999789),cljs.core.PersistentHashSet.EMPTY], null),cljs.core.seq(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(pattern)),new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101).cljs$core$IFn$_invoke$arity$1(pattern),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),pattern,cljs.core.transient$(cljs.core.PersistentVector.EMPTY)]);\n});\ndatascript.pull_api.subpattern_frame = (function datascript$pull_api$subpattern_frame(pattern,eids,multi_QMARK_,attr){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.pull_api.initial_frame(pattern,eids,multi_QMARK_),new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353),attr);\n});\ndatascript.pull_api.reset_frame = (function datascript$pull_api$reset_frame(frame,eids,kvps){\nvar pattern = new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(frame);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700),eids,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"specs\",\"specs\",1426570741),cljs.core.seq(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(pattern)),new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101),new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101).cljs$core$IFn$_invoke$arity$1(pattern),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),new cljs.core.Keyword(null,\"results\",\"results\",-1134170113),(function (){var G__23009 = new cljs.core.Keyword(null,\"results\",\"results\",-1134170113).cljs$core$IFn$_invoke$arity$1(frame);\nif(cljs.core.seq(kvps)){\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(G__23009,kvps);\n} else {\nreturn G__23009;\n}\n})()], 0));\n});\ndatascript.pull_api.push_recursion = (function datascript$pull_api$push_recursion(rec,attr,eid){\nvar map__23010 = rec;\nvar map__23010__$1 = (((((!((map__23010 == null))))?(((((map__23010.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23010.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23010):map__23010);\nvar depth = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23010__$1,new cljs.core.Keyword(null,\"depth\",\"depth\",1768663640));\nvar seen = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23010__$1,new cljs.core.Keyword(null,\"seen\",\"seen\",-518999789));\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(rec,new cljs.core.Keyword(null,\"depth\",\"depth\",1768663640),cljs.core.update.cljs$core$IFn$_invoke$arity$3(depth,attr,cljs.core.fnil.cljs$core$IFn$_invoke$arity$2(cljs.core.inc,(0))),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"seen\",\"seen\",-518999789),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(seen,eid)], 0));\n});\ndatascript.pull_api.seen_eid_QMARK_ = (function datascript$pull_api$seen_eid_QMARK_(frame,eid){\nreturn cljs.core.contains_QMARK_(cljs.core.get_in.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),new cljs.core.Keyword(null,\"seen\",\"seen\",-518999789)], null),cljs.core.PersistentHashSet.EMPTY),eid);\n});\ndatascript.pull_api.pull_seen_eid = (function datascript$pull_api$pull_seen_eid(frame,frames,eid){\nif(datascript.pull_api.seen_eid_QMARK_(frame,eid)){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.update.cljs$core$IFn$_invoke$arity$4(frame,new cljs.core.Keyword(null,\"results\",\"results\",-1134170113),cljs.core.conj_BANG_,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),eid], null)));\n} else {\nreturn null;\n}\n});\ndatascript.pull_api.single_frame_result = (function datascript$pull_api$single_frame_result(key,frame){\nvar G__23012 = new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317).cljs$core$IFn$_invoke$arity$1(frame);\nvar G__23012__$1 = (((G__23012 == null))?null:cljs.core.persistent_BANG_(G__23012));\nif((G__23012__$1 == null)){\nreturn null;\n} else {\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$2(G__23012__$1,key);\n}\n});\ndatascript.pull_api.recursion_result = (function datascript$pull_api$recursion_result(frame){\nreturn datascript.pull_api.single_frame_result(new cljs.core.Keyword(\"datascript.pull-api\",\"recursion\",\"datascript.pull-api/recursion\",-1897884534),frame);\n});\ndatascript.pull_api.recursion_frame = (function datascript$pull_api$recursion_frame(parent,eid){\nvar attr = new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353).cljs$core$IFn$_invoke$arity$1(parent);\nvar rec = datascript.pull_api.push_recursion(new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765).cljs$core$IFn$_invoke$arity$1(parent),attr,eid);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.pull_api.subpattern_frame(new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(parent),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false,new cljs.core.Keyword(\"datascript.pull-api\",\"recursion\",\"datascript.pull-api/recursion\",-1897884534)),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),rec);\n});\ndatascript.pull_api.pull_recursion_frame = (function datascript$pull_api$pull_recursion_frame(db,p__23015){\nvar vec__23018 = p__23015;\nvar seq__23019 = cljs.core.seq(vec__23018);\nvar first__23020 = cljs.core.first(seq__23019);\nvar seq__23019__$1 = cljs.core.next(seq__23019);\nvar frame = first__23020;\nvar frames = seq__23019__$1;\nvar temp__5733__auto__ = cljs.core.seq(new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto__){\nvar eids = temp__5733__auto__;\nvar frame__$1 = datascript.pull_api.reset_frame(frame,cljs.core.rest(eids),datascript.pull_api.recursion_result(frame));\nvar eid = cljs.core.first(eids);\nvar or__4185__auto__ = datascript.pull_api.pull_seen_eid(frame__$1,frames,eid);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.pull_api.recursion_frame(frame__$1,eid)], 0));\n}\n} else {\nvar kvps = datascript.pull_api.recursion_result(frame);\nvar results = (function (){var G__23021 = new cljs.core.Keyword(null,\"results\",\"results\",-1134170113).cljs$core$IFn$_invoke$arity$1(frame);\nif(cljs.core.seq(kvps)){\nreturn cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(G__23021,kvps);\n} else {\nreturn G__23021;\n}\n})();\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,\"state\",\"state\",-1988618099),new cljs.core.Keyword(null,\"done\",\"done\",-889844188),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"results\",\"results\",-1134170113),results], 0)));\n}\n});\ndatascript.pull_api.recurse_attr = (function datascript$pull_api$recurse_attr(db,attr,multi_QMARK_,eids,eid,parent,frames){\nvar map__23022 = parent;\nvar map__23022__$1 = (((((!((map__23022 == null))))?(((((map__23022.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23022.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23022):map__23022);\nvar recursion = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23022__$1,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765));\nvar pattern = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23022__$1,new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423));\nvar depth = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(recursion,new cljs.core.Keyword(null,\"depth\",\"depth\",1768663640)),attr,(0));\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765).cljs$core$IFn$_invoke$arity$1(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713).cljs$core$IFn$_invoke$arity$1(pattern),attr)),depth)){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,parent);\n} else {\nreturn datascript.pull_api.pull_recursion_frame(db,cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 7, [new cljs.core.Keyword(null,\"state\",\"state\",-1988618099),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423),pattern,new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353),attr,new cljs.core.Keyword(null,\"multi?\",\"multi?\",-749311069),multi_QMARK_,new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700),eids,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),recursion,new cljs.core.Keyword(null,\"results\",\"results\",-1134170113),cljs.core.transient$(cljs.core.PersistentVector.EMPTY)], null)], 0)));\n}\n});\nvar pattern_23104 = (new datascript.pull_parser.PullSpec(true,cljs.core.PersistentArrayMap.EMPTY,null,null,null));\ndatascript.pull_api.expand_frame = (function datascript$pull_api$expand_frame(parent,eid,attr_key,multi_QMARK_,eids){\nvar rec = datascript.pull_api.push_recursion(new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765).cljs$core$IFn$_invoke$arity$1(parent),attr_key,eid);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(datascript.pull_api.subpattern_frame(pattern_23104,eids,multi_QMARK_,attr_key),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),rec);\n});\ndatascript.pull_api.pull_attr_datoms = (function datascript$pull_api$pull_attr_datoms(db,attr_key,attr,eid,forward_QMARK_,datoms,opts,p__23027){\nvar vec__23028 = p__23027;\nvar seq__23029 = cljs.core.seq(vec__23028);\nvar first__23030 = cljs.core.first(seq__23029);\nvar seq__23029__$1 = cljs.core.next(seq__23029);\nvar parent = first__23030;\nvar frames = seq__23029__$1;\nvar limit = cljs.core.get.cljs$core$IFn$_invoke$arity$3(opts,new cljs.core.Keyword(null,\"limit\",\"limit\",-1355822363),(1000));\nvar attr_key__$1 = (function (){var or__4185__auto__ = new cljs.core.Keyword(null,\"as\",\"as\",1148689641).cljs$core$IFn$_invoke$arity$1(opts);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn attr_key;\n}\n})();\nvar found = cljs.core.not_empty((function (){var G__23031 = datoms;\nif(cljs.core.truth_(limit)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.take.cljs$core$IFn$_invoke$arity$1(limit),G__23031);\n} else {\nreturn G__23031;\n}\n})());\nif(cljs.core.truth_(found)){\nvar ref_QMARK_ = datascript.db.ref_QMARK_(db,attr);\nvar component_QMARK_ = ((ref_QMARK_) && (datascript.db.component_QMARK_(db,attr)));\nvar multi_QMARK_ = (cljs.core.truth_(forward_QMARK_)?datascript.db.multival_QMARK_(db,attr):(!(component_QMARK_)));\nvar datom_val = (cljs.core.truth_(forward_QMARK_)?(function (d){\nreturn d.v;\n}):(function (d){\nreturn d.e;\n}));\nif(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,\"subpattern\",\"subpattern\",45002743))){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.pull_api.subpattern_frame(new cljs.core.Keyword(null,\"subpattern\",\"subpattern\",45002743).cljs$core$IFn$_invoke$arity$1(opts),cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found),multi_QMARK_,attr_key__$1)], 0));\n} else {\nif(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765))){\nreturn datascript.pull_api.recurse_attr(db,attr_key__$1,multi_QMARK_,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found),eid,parent,frames);\n} else {\nif(cljs.core.truth_(((component_QMARK_)?forward_QMARK_:false))){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,parent,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.pull_api.expand_frame(parent,eid,attr_key__$1,multi_QMARK_,cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(datom_val,found))], 0));\n} else {\nvar as_value = (function (){var G__23032 = datom_val;\nif(ref_QMARK_){\nreturn cljs.core.comp.cljs$core$IFn$_invoke$arity$2((function (p1__23026_SHARP_){\nreturn cljs.core.PersistentHashMap.fromArrays([new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098)],[p1__23026_SHARP_]);\n}),G__23032);\n} else {\nreturn G__23032;\n}\n})();\nvar single_QMARK_ = (!(multi_QMARK_));\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.update.cljs$core$IFn$_invoke$arity$5(parent,new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.assoc_BANG_,attr_key__$1,(function (){var G__23033 = cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1(as_value),found);\nif(single_QMARK_){\nreturn cljs.core.first(G__23033);\n} else {\nreturn G__23033;\n}\n})()));\n\n}\n}\n}\n} else {\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,(function (){var G__23035 = parent;\nif(cljs.core.contains_QMARK_(opts,new cljs.core.Keyword(null,\"default\",\"default\",-1987822328))){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$5(G__23035,new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.assoc_BANG_,attr_key__$1,new cljs.core.Keyword(null,\"default\",\"default\",-1987822328).cljs$core$IFn$_invoke$arity$1(opts));\n} else {\nreturn G__23035;\n}\n})());\n}\n});\ndatascript.pull_api.pull_attr = (function datascript$pull_api$pull_attr(db,spec,eid,frames){\nvar vec__23036 = spec;\nvar attr_key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23036,(0),null);\nvar opts = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23036,(1),null);\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),attr_key)){\nif(cljs.core.truth_(cljs.core.not_empty(datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null))))){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(frames),cljs.core.update.cljs$core$IFn$_invoke$arity$5(cljs.core.first(frames),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.assoc_BANG_,new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),eid));\n} else {\nreturn frames;\n}\n} else {\nvar attr = new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353).cljs$core$IFn$_invoke$arity$1(opts);\nvar forward_QMARK_ = cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(attr_key,attr);\nvar results = ((forward_QMARK_)?datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid,attr], null)):datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [attr,eid], null)));\nreturn datascript.pull_api.pull_attr_datoms(db,attr_key,attr,eid,forward_QMARK_,results,opts,frames);\n}\n});\ndatascript.pull_api.filter_reverse_attrs = cljs.core.filter.cljs$core$IFn$_invoke$arity$1((function (p__23039){\nvar vec__23040 = p__23039;\nvar k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23040,(0),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23040,(1),null);\nreturn cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(k,new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353).cljs$core$IFn$_invoke$arity$1(v));\n}));\ndatascript.pull_api.expand_reverse_subpattern_frame = (function datascript$pull_api$expand_reverse_subpattern_frame(parent,eid,rattrs){\nreturn datascript.pull_api.subpattern_frame(cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(parent),new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713),rattrs,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101),false], 0)),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false,new cljs.core.Keyword(\"datascript.pull-api\",\"expand-rev\",\"datascript.pull-api/expand-rev\",2143627459));\n});\ndatascript.pull_api.expand_result = (function datascript$pull_api$expand_result(frames,kvps){\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(frames),cljs.core.update.cljs$core$IFn$_invoke$arity$4(cljs.core.first(frames),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),datascript.pull_api.into_BANG_,cljs.core.persistent_BANG_(kvps)));\n});\ndatascript.pull_api.pull_expand_reverse_frame = (function datascript$pull_api$pull_expand_reverse_frame(db,p__23043){\nvar vec__23046 = p__23043;\nvar seq__23047 = cljs.core.seq(vec__23046);\nvar first__23048 = cljs.core.first(seq__23047);\nvar seq__23047__$1 = cljs.core.next(seq__23047);\nvar frame = first__23048;\nvar frames = seq__23047__$1;\nreturn datascript.pull_api.expand_result(frames,datascript.pull_api.into_BANG_(new cljs.core.Keyword(null,\"expand-kvps\",\"expand-kvps\",44141154).cljs$core$IFn$_invoke$arity$1(frame),(function (){var or__4185__auto__ = datascript.pull_api.single_frame_result(new cljs.core.Keyword(\"datascript.pull-api\",\"expand-rev\",\"datascript.pull-api/expand-rev\",2143627459),frame);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn cljs.core.PersistentArrayMap.EMPTY;\n}\n})()));\n});\ndatascript.pull_api.pull_expand_frame = (function datascript$pull_api$pull_expand_frame(db,p__23055){\nvar vec__23058 = p__23055;\nvar seq__23059 = cljs.core.seq(vec__23058);\nvar first__23060 = cljs.core.first(seq__23059);\nvar seq__23059__$1 = cljs.core.next(seq__23059);\nvar frame = first__23060;\nvar frames = seq__23059__$1;\nvar temp__5733__auto__ = cljs.core.seq(new cljs.core.Keyword(null,\"datoms\",\"datoms\",-290874434).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto__){\nvar datoms_by_attr = temp__5733__auto__;\nvar vec__23061 = cljs.core.first(datoms_by_attr);\nvar attr = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23061,(0),null);\nvar datoms = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__23061,(1),null);\nvar opts = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(frame,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423),new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713)], null)),attr,cljs.core.PersistentArrayMap.EMPTY);\nreturn datascript.pull_api.pull_attr_datoms(db,attr,attr,new cljs.core.Keyword(null,\"eid\",\"eid\",559519930).cljs$core$IFn$_invoke$arity$1(frame),true,datoms,opts,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.update.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.Keyword(null,\"datoms\",\"datoms\",-290874434),cljs.core.rest)));\n} else {\nvar temp__5733__auto____$1 = cljs.core.not_empty(cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentArrayMap.EMPTY,datascript.pull_api.filter_reverse_attrs,cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(frame,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423),new cljs.core.Keyword(null,\"attrs\",\"attrs\",-2090668713)], null))));\nif(cljs.core.truth_(temp__5733__auto____$1)){\nvar rattrs = temp__5733__auto____$1;\nvar frame__$1 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,\"state\",\"state\",-1988618099),new cljs.core.Keyword(null,\"expand-rev\",\"expand-rev\",1249112650),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"expand-kvps\",\"expand-kvps\",44141154),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317).cljs$core$IFn$_invoke$arity$1(frame),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY)], 0));\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame__$1,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.pull_api.expand_reverse_subpattern_frame(frame__$1,new cljs.core.Keyword(null,\"eid\",\"eid\",559519930).cljs$core$IFn$_invoke$arity$1(frame__$1),rattrs)], 0));\n} else {\nreturn datascript.pull_api.expand_result(frames,new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317).cljs$core$IFn$_invoke$arity$1(frame));\n}\n}\n});\ndatascript.pull_api.pull_wildcard_expand = (function datascript$pull_api$pull_wildcard_expand(db,frame,frames,eid,pattern){\nvar datoms = cljs.core.group_by((function (d){\nreturn d.a;\n}),datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null)));\nvar map__23070 = frame;\nvar map__23070__$1 = (((((!((map__23070 == null))))?(((((map__23070.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23070.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23070):map__23070);\nvar attr = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23070__$1,new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353));\nvar recursion = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23070__$1,new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765));\nvar rec = (function (){var G__23072 = recursion;\nif((!((attr == null)))){\nreturn datascript.pull_api.push_recursion(G__23072,attr,eid);\n} else {\nreturn G__23072;\n}\n})();\nreturn datascript.pull_api.pull_expand_frame(db,cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(frames,frame,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,\"state\",\"state\",-1988618099),new cljs.core.Keyword(null,\"expand\",\"expand\",595248157),new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.transient$(new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),eid], null)),new cljs.core.Keyword(null,\"eid\",\"eid\",559519930),eid,new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423),pattern,new cljs.core.Keyword(null,\"datoms\",\"datoms\",-290874434),cljs.core.seq(datoms),new cljs.core.Keyword(null,\"recursion\",\"recursion\",-749738765),rec], null)], 0)));\n});\ndatascript.pull_api.pull_wildcard = (function datascript$pull_api$pull_wildcard(db,frame,frames){\nvar map__23073 = frame;\nvar map__23073__$1 = (((((!((map__23073 == null))))?(((((map__23073.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__23073.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__23073):map__23073);\nvar eid = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23073__$1,new cljs.core.Keyword(null,\"eid\",\"eid\",559519930));\nvar pattern = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__23073__$1,new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423));\nvar or__4185__auto__ = datascript.pull_api.pull_seen_eid(frame,frames,eid);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.pull_api.pull_wildcard_expand(db,frame,frames,eid,pattern);\n}\n});\ndatascript.pull_api.pull_pattern_frame = (function datascript$pull_api$pull_pattern_frame(db,p__23075){\nwhile(true){\nvar vec__23076 = p__23075;\nvar seq__23077 = cljs.core.seq(vec__23076);\nvar first__23078 = cljs.core.first(seq__23077);\nvar seq__23077__$1 = cljs.core.next(seq__23077);\nvar frame = first__23078;\nvar frames = seq__23077__$1;\nvar temp__5733__auto__ = cljs.core.seq(new cljs.core.Keyword(null,\"eids\",\"eids\",1546550700).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto__){\nvar eids = temp__5733__auto__;\nif(cljs.core.truth_(new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101).cljs$core$IFn$_invoke$arity$1(frame))){\nreturn datascript.pull_api.pull_wildcard(db,cljs.core.assoc.cljs$core$IFn$_invoke$arity$variadic(frame,new cljs.core.Keyword(null,\"specs\",\"specs\",1426570741),cljs.core.PersistentVector.EMPTY,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"eid\",\"eid\",559519930),cljs.core.first(eids),new cljs.core.Keyword(null,\"wildcard?\",\"wildcard?\",-686044101),false], 0)),frames);\n} else {\nvar temp__5733__auto____$1 = cljs.core.seq(new cljs.core.Keyword(null,\"specs\",\"specs\",1426570741).cljs$core$IFn$_invoke$arity$1(frame));\nif(temp__5733__auto____$1){\nvar specs = temp__5733__auto____$1;\nvar spec = cljs.core.first(specs);\nvar pattern = new cljs.core.Keyword(null,\"pattern\",\"pattern\",242135423).cljs$core$IFn$_invoke$arity$1(frame);\nvar new_frames = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.Keyword(null,\"specs\",\"specs\",1426570741),cljs.core.rest(specs)));\nreturn datascript.pull_api.pull_attr(db,spec,cljs.core.first(eids),new_frames);\n} else {\nvar G__23106 = db;\nvar G__23107 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,datascript.pull_api.reset_frame(frame,cljs.core.rest(eids),cljs.core.not_empty(cljs.core.persistent_BANG_(new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317).cljs$core$IFn$_invoke$arity$1(frame)))));\ndb = G__23106;\np__23075 = G__23107;\ncontinue;\n}\n}\n} else {\nreturn cljs.core.conj.cljs$core$IFn$_invoke$arity$2(frames,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(frame,new cljs.core.Keyword(null,\"state\",\"state\",-1988618099),new cljs.core.Keyword(null,\"done\",\"done\",-889844188)));\n}\nbreak;\n}\n});\ndatascript.pull_api.pull_pattern = (function datascript$pull_api$pull_pattern(db,frames){\nwhile(true){\nvar G__23086 = new cljs.core.Keyword(null,\"state\",\"state\",-1988618099).cljs$core$IFn$_invoke$arity$1(cljs.core.first(frames));\nvar G__23086__$1 = (((G__23086 instanceof cljs.core.Keyword))?G__23086.fqn:null);\nswitch (G__23086__$1) {\ncase \"expand\":\nvar G__23109 = db;\nvar G__23110 = datascript.pull_api.pull_expand_frame(db,frames);\ndb = G__23109;\nframes = G__23110;\ncontinue;\n\nbreak;\ncase \"expand-rev\":\nvar G__23111 = db;\nvar G__23112 = datascript.pull_api.pull_expand_reverse_frame(db,frames);\ndb = G__23111;\nframes = G__23112;\ncontinue;\n\nbreak;\ncase \"pattern\":\nvar G__23113 = db;\nvar G__23114 = datascript.pull_api.pull_pattern_frame(db,frames);\ndb = G__23113;\nframes = G__23114;\ncontinue;\n\nbreak;\ncase \"recursion\":\nvar G__23115 = db;\nvar G__23116 = datascript.pull_api.pull_recursion_frame(db,frames);\ndb = G__23115;\nframes = G__23116;\ncontinue;\n\nbreak;\ncase \"done\":\nvar vec__23091 = frames;\nvar seq__23092 = cljs.core.seq(vec__23091);\nvar first__23093 = cljs.core.first(seq__23092);\nvar seq__23092__$1 = cljs.core.next(seq__23092);\nvar f = first__23093;\nvar remaining = seq__23092__$1;\nvar result = (function (){var G__23094 = cljs.core.persistent_BANG_(new cljs.core.Keyword(null,\"results\",\"results\",-1134170113).cljs$core$IFn$_invoke$arity$1(f));\nif(cljs.core.not(new cljs.core.Keyword(null,\"multi?\",\"multi?\",-749311069).cljs$core$IFn$_invoke$arity$1(f))){\nreturn cljs.core.first(G__23094);\n} else {\nreturn G__23094;\n}\n})();\nif(cljs.core.seq(remaining)){\nvar G__23117 = db;\nvar G__23118 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(remaining),(function (){var G__23095 = cljs.core.first(remaining);\nif(cljs.core.truth_(result)){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$5(G__23095,new cljs.core.Keyword(null,\"kvps\",\"kvps\",65308317),cljs.core.assoc_BANG_,new cljs.core.Keyword(null,\"attr\",\"attr\",-604132353).cljs$core$IFn$_invoke$arity$1(f),result);\n} else {\nreturn G__23095;\n}\n})());\ndb = G__23117;\nframes = G__23118;\ncontinue;\n} else {\nreturn result;\n}\n\nbreak;\ndefault:\nthrow (new Error([\"No matching clause: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__23086__$1)].join('')));\n\n}\nbreak;\n}\n});\ndatascript.pull_api.pull_spec = (function datascript$pull_api$pull_spec(db,pattern,eids,multi_QMARK_){\nvar eids__$1 = cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (p1__23098_SHARP_){\nreturn datascript.db.entid_strict(db,p1__23098_SHARP_);\n})),eids);\nreturn datascript.pull_api.pull_pattern(db,(new cljs.core.List(null,datascript.pull_api.initial_frame(pattern,eids__$1,multi_QMARK_),null,(1),null)));\n});\ndatascript.pull_api.pull = (function datascript$pull_api$pull(db,selector,eid){\n\nreturn datascript.pull_api.pull_spec(db,datascript.pull_parser.parse_pull(selector),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [eid], null),false);\n});\ndatascript.pull_api.pull_many = (function datascript$pull_api$pull_many(db,selector,eids){\n\nreturn datascript.pull_api.pull_spec(db,datascript.pull_parser.parse_pull(selector),eids,true);\n});\n","~:ns-info",["^ ","~:rename-macros",null,"~:renames",["^ "],"~:meta",["^ ","~:file","datascript/pull_api.cljc","~:line",1,"~:column",14,"~:end-line",1,"~:end-column",33,"~:no-doc",true],"~:ns-aliases",["^ ","~$cljs.loader","~$shadow.loader"],"~:use-macros",null,"~:excludes",["~#set",[]],"~:name","~$datascript.pull-api","~:op","~:ns","~:imports",null,"~:requires",["^ ","~$datascript.db","^H","~$db","^H","~$datascript.pull-parser","^J","~$dpp","^J","~$cljs.core","^L","~$goog","^M"],"~:seen",["^A",["~:require"]],"~:uses",["^ ","~$PullSpec","^J"],"~:require-macros",["^ ","^L","^L","^H","^H","^I","^H"],"~:form",["~#list",["~$ns","^C",["^T",["^O",["^H","~:as","^I"],["^J","^V","^K","~:refer",["^Q"]]]]]],"~:flags",["^ ","^O",["^A",[]]],"~:js-deps",["^ "],"~:deps",["^M","^L","^H","^J"]],"^E","^C","~:resource-id",["~:shadow.build.classpath/resource","datascript/pull_api.cljc"],"~:compiled-at",1590237778219,"~:resource-name","datascript/pull_api.cljc","~:warnings",[],"~:source","(ns ^:no-doc datascript.pull-api\n  (:require\n    [datascript.db :as db]\n    [datascript.pull-parser :as dpp #?@(:cljs [:refer [PullSpec]])])\n    #?(:clj\n      (:import\n        [datascript.db Datom]\n        [datascript.pull_parser PullSpec])))\n\n(defn- into!\n  [transient-coll items]\n  (reduce conj! transient-coll items))\n\n(def ^:private ^:const +default-limit+ 1000)\n\n(defn- initial-frame\n  [pattern eids multi?]\n  {:state     :pattern\n   :pattern   pattern\n   :wildcard? (:wildcard? pattern)\n   :specs     (-> pattern :attrs seq)\n   :results   (transient [])\n   :kvps      (transient {})\n   :eids      eids\n   :multi?    multi?\n   :recursion {:depth {} :seen #{}}})\n\n(defn- subpattern-frame\n  [pattern eids multi? attr]\n  (assoc (initial-frame pattern eids multi?) :attr attr))\n\n(defn- reset-frame\n  [frame eids kvps]\n  (let [pattern (:pattern frame)]\n    (assoc frame\n           :eids      eids\n           :specs     (seq (:attrs pattern))\n           :wildcard? (:wildcard? pattern)\n           :kvps      (transient {})\n           :results   (cond-> (:results frame)\n                        (seq kvps) (conj! kvps)))))\n\n(defn- push-recursion\n  [rec attr eid]\n  (let [{:keys [depth seen]} rec]\n    (assoc rec\n           :depth (update depth attr (fnil inc 0))\n           :seen (conj seen eid))))\n\n(defn- seen-eid?\n  [frame eid]\n  (-> frame\n      (get-in [:recursion :seen] #{})\n      (contains? eid)))\n\n(defn- pull-seen-eid\n  [frame frames eid]\n  (when (seen-eid? frame eid)\n    (conj frames (update frame :results conj! {:db/id eid}))))\n\n(defn- single-frame-result\n  [key frame]\n  (some-> (:kvps frame) persistent! (get key)))\n\n(defn- recursion-result [frame]\n  (single-frame-result ::recursion frame))\n\n(defn- recursion-frame\n  [parent eid]\n  (let [attr (:attr parent)\n        rec  (push-recursion (:recursion parent) attr eid)]\n    (assoc (subpattern-frame (:pattern parent) [eid] false ::recursion)\n           :recursion rec)))\n\n(defn- pull-recursion-frame\n  [db [frame & frames]]\n  (if-let [eids (seq (:eids frame))]\n    (let [frame  (reset-frame frame (rest eids) (recursion-result frame))\n          eid    (first eids)]\n      (or (pull-seen-eid frame frames eid)\n          (conj frames frame (recursion-frame frame eid))))\n    (let [kvps    (recursion-result frame)\n          results (cond-> (:results frame)\n                    (seq kvps) (conj! kvps))]\n      (conj frames (assoc frame :state :done :results results)))))\n\n(defn- recurse-attr\n  [db attr multi? eids eid parent frames]\n  (let [{:keys [recursion pattern]} parent\n        depth  (-> recursion (get :depth) (get attr 0))]\n    (if (-> pattern :attrs (get attr) :recursion (= depth))\n      (conj frames parent)\n      (pull-recursion-frame\n       db\n       (conj frames parent\n             {:state :recursion :pattern pattern\n              :attr attr :multi? multi? :eids eids\n              :recursion recursion\n              :results (transient [])})))))\n\n(let [pattern (PullSpec. true {})]\n  (defn- expand-frame\n    [parent eid attr-key multi? eids]\n    (let [rec (push-recursion (:recursion parent) attr-key eid)]\n      (-> pattern\n          (subpattern-frame eids multi? attr-key)\n          (assoc :recursion rec)))))\n\n(defn- pull-attr-datoms\n  [db attr-key attr eid forward? datoms opts [parent & frames]]\n  (let [limit (get opts :limit +default-limit+)\n        attr-key (or (:as opts) attr-key)\n        found (not-empty\n               (cond->> datoms\n                 limit (into [] (take limit))))]\n    (if found\n      (let [ref?       (db/ref? db attr)\n            component? (and ref? (db/component? db attr))\n            multi?     (if forward? (db/multival? db attr) (not component?))\n            datom-val  (if forward? (fn [d] (.-v ^Datom d)) (fn [d] (.-e ^Datom d)))]\n        (cond\n          (contains? opts :subpattern)\n          (->> (subpattern-frame (:subpattern opts)\n                                 (mapv datom-val found)\n                                 multi? attr-key)\n               (conj frames parent))\n\n          (contains? opts :recursion)\n          (recurse-attr db attr-key multi?\n                        (mapv datom-val found)\n                        eid parent frames)\n\n          (and component? forward?)\n          (->> found\n               (mapv datom-val)\n               (expand-frame parent eid attr-key multi?)\n               (conj frames parent))\n          \n          :else \n          (let [as-value  (cond->> datom-val\n                            ref? (comp #(hash-map :db/id %)))\n                single?   (not multi?)]\n            (->> (cond-> (into [] (map as-value) found)\n                   single? first)\n                 (update parent :kvps assoc! attr-key)\n                 (conj frames)))))\n      (->> (cond-> parent\n             (contains? opts :default)\n             (update :kvps assoc! attr-key (:default opts)))\n           (conj frames)))))\n\n(defn- pull-attr\n  [db spec eid frames]\n  (let [[attr-key opts] spec]\n    (if (= :db/id attr-key)\n      (if (not-empty (db/-datoms db :eavt [eid]))\n        (conj (rest frames)\n              (update (first frames) :kvps assoc! :db/id eid))\n        frames)\n      (let [attr     (:attr opts)\n            forward? (= attr-key attr)\n            results  (if forward?\n                       (db/-datoms db :eavt [eid attr])\n                       (db/-datoms db :avet [attr eid]))]\n        (pull-attr-datoms db attr-key attr eid forward?\n                          results opts frames)))))\n\n(def ^:private filter-reverse-attrs\n  (filter (fn [[k v]] (not= k (:attr v)))))\n\n(defn- expand-reverse-subpattern-frame\n  [parent eid rattrs]\n  (-> (:pattern parent)\n      (assoc :attrs rattrs :wildcard? false)\n      (subpattern-frame [eid] false ::expand-rev)))\n\n(defn- expand-result\n  [frames kvps]\n  (->> kvps\n       (persistent!)\n       (update (first frames) :kvps into!)\n       (conj (rest frames))))\n\n(defn- pull-expand-reverse-frame\n  [db [frame & frames]]\n  (->> (or (single-frame-result ::expand-rev frame) {})\n       (into! (:expand-kvps frame))\n       (expand-result frames)))\n\n(defn- pull-expand-frame\n  [db [frame & frames]]\n  (if-let [datoms-by-attr (seq (:datoms frame))]\n    (let [[attr datoms] (first datoms-by-attr)\n          opts          (-> frame\n                            (get-in [:pattern :attrs])\n                            (get attr {}))]\n      (pull-attr-datoms db attr attr (:eid frame) true datoms opts\n                        (conj frames (update frame :datoms rest))))\n    (if-let [rattrs (->> (get-in frame [:pattern :attrs])\n                         (into {} filter-reverse-attrs)\n                         not-empty)]\n      (let [frame  (assoc frame\n                          :state       :expand-rev\n                          :expand-kvps (:kvps frame)\n                          :kvps        (transient {}))]\n        (->> rattrs\n             (expand-reverse-subpattern-frame frame (:eid frame))\n             (conj frames frame)))\n      (expand-result frames (:kvps frame)))))\n\n(defn- pull-wildcard-expand\n  [db frame frames eid pattern]\n  (let [datoms (group-by (fn [d] (.-a ^Datom d)) (db/-datoms db :eavt [eid]))\n        {:keys [attr recursion]} frame\n        rec (cond-> recursion\n              (some? attr) (push-recursion attr eid))]\n    (->> {:state :expand :kvps (transient {:db/id eid})\n          :eid eid :pattern pattern :datoms (seq datoms)\n          :recursion rec}\n         (conj frames frame)\n         (pull-expand-frame db))))\n\n(defn- pull-wildcard\n  [db frame frames]\n  (let [{:keys [eid pattern]} frame]\n    (or (pull-seen-eid frame frames eid)\n        (pull-wildcard-expand db frame frames eid pattern))))\n\n(defn- pull-pattern-frame\n  [db [frame & frames]]\n  (if-let [eids (seq (:eids frame))]\n    (if (:wildcard? frame)\n      (pull-wildcard db\n                     (assoc frame\n                            :specs []\n                            :eid (first eids)\n                            :wildcard? false)\n                     frames)\n      (if-let [specs (seq (:specs frame))]\n        (let [spec       (first specs)\n              pattern    (:pattern frame)\n              new-frames (conj frames (assoc frame :specs (rest specs)))]\n          (pull-attr db spec (first eids) new-frames))\n        (->> frame :kvps persistent! not-empty\n             (reset-frame frame (rest eids))\n             (conj frames)\n             (recur db))))\n    (conj frames (assoc frame :state :done))))\n\n(defn- pull-pattern\n  [db frames]\n  (case (:state (first frames))\n    :expand     (recur db (pull-expand-frame db frames))\n    :expand-rev (recur db (pull-expand-reverse-frame db frames))\n    :pattern    (recur db (pull-pattern-frame db frames))\n    :recursion  (recur db (pull-recursion-frame db frames))\n    :done       (let [[f & remaining] frames\n                      result (cond-> (persistent! (:results f))\n                               (not (:multi? f)) first)]\n                  (if (seq remaining)\n                    (->> (cond-> (first remaining)\n                           result (update :kvps assoc! (:attr f) result))\n                         (conj (rest remaining))\n                         (recur db))\n                    result))))\n\n(defn pull-spec\n  [db pattern eids multi?]\n  (let [eids (into [] (map #(db/entid-strict db %)) eids)]\n    (pull-pattern db (list (initial-frame pattern eids multi?)))))\n\n(defn pull [db selector eid]\n  {:pre [(db/db? db)]}\n  (pull-spec db (dpp/parse-pull selector) [eid] false))\n\n(defn pull-many [db selector eids]\n  {:pre [(db/db? db)]}\n  (pull-spec db (dpp/parse-pull selector) eids true))\n","~:reader-features",["^A",["~:cljs"]],"~:cljc",true,"~:source-map-compact",["^ ","mappings","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","names",["datascript.pull-api/into!","transient-coll","items","cljs.core.reduce","cljs.core/conj!","datascript.pull-api/+default-limit+","datascript.pull-api/initial-frame","pattern","eids","multi?","cljs.core/seq","cljs.core/transient","datascript.pull-api/subpattern-frame","attr","cljs.core.assoc","datascript.pull-api/reset-frame","frame","kvps","G__23009","cljs.core.conj_BANG_","datascript.pull-api/push-recursion","rec","eid","map__23010","cljs.core/PROTOCOL_SENTINEL","cljs.core.apply","cljs.core/hash-map","cljs.core.get","depth","seen","cljs.core.update","cljs.core.fnil","cljs.core/inc","cljs.core.conj","datascript.pull-api/seen-eid?","cljs.core.get_in","cljs.core/contains?","datascript.pull-api/pull-seen-eid","frames","datascript.pull-api/single-frame-result","key","G__23012","cljs.core/persistent!","datascript.pull-api/recursion-result","datascript.pull-api/recursion-frame","parent","p__23015","vec__23018","seq__23019","first__23020","cljs.core/first","cljs.core/next","datascript.pull-api/pull-recursion-frame","db","temp__5733__auto__","cljs.core/rest","or__4185__auto__","results","G__23021","datascript.pull-api/recurse-attr","map__23022","recursion","cljs.core._EQ_","datascript.pull-parser/PullSpec","datascript.pull-api/expand-frame","attr-key","p__23027","vec__23028","seq__23029","first__23030","datascript.pull-api/pull-attr-datoms","forward?","datoms","opts","limit","found","cljs.core/not-empty","G__23031","cljs.core.into","cljs.core.take","ref?","datascript.db/ref?","component?","datascript.db/component?","datascript.db/multival?","datom-val","d","cljs.core.mapv","as-value","G__23032","p1__23026#","cljs.core.comp","cljs.core/PersistentHashMap","single?","G__23033","cljs.core.map","cljs.core/assoc!","G__23035","datascript.pull-api/pull-attr","spec","vec__23036","cljs.core.nth","datascript.db/-datoms","datascript.pull-api/filter-reverse-attrs","cljs.core.filter","p__23039","vec__23040","k","v","cljs.core.not_EQ_","datascript.pull-api/expand-reverse-subpattern-frame","rattrs","datascript.pull-api/expand-result","p__23043","vec__23046","seq__23047","first__23048","datascript.pull-api/pull-expand-reverse-frame","p__23055","vec__23058","seq__23059","first__23060","datascript.pull-api/pull-expand-frame","datoms-by-attr","vec__23061","datascript.pull-api/pull-wildcard-expand","map__23070","cljs.core/group-by","G__23072","datascript.pull-api/pull-wildcard","map__23073","p__23075","vec__23076","seq__23077","first__23078","datascript.pull-api/pull-pattern-frame","specs","new-frames","datascript.pull-api/pull-pattern","G__23086","cljs.core/Keyword","js/Error","vec__23091","seq__23092","first__23093","f","remaining","result","G__23094","cljs.core/not","G__23095","datascript.pull-api/pull-spec","p1__23098#","datascript.db/entid-strict","cljs.core/List","datascript.pull-api/pull","selector","datascript.pull-parser/parse-pull","datascript.pull-api/pull-many"]],"~:used-vars",["^A",["~$cljs.core/rest","~$datascript.pull-api/pull-pattern-frame","~$datascript.pull-api/expand-frame","~$datascript.pull-api/pull-many","~$cljs.core/filter","~$cljs.core/=","~$datascript.pull-api/initial-frame","~$datascript.pull-api/pull-seen-eid","~$cljs.core/reduce","~$cljs.core/seq","~$datascript.pull-api/seen-eid?","~$datascript.pull-api/subpattern-frame","~$cljs.core/mapv","~$cljs.core/not=","~$datascript.pull-api/filter-reverse-attrs","~$datascript.pull-api/pull-expand-reverse-frame","~$datascript.pull-api/pull-wildcard","~$datascript.pull-api/into!","~$cljs.core/fnil","~$datascript.pull-api/recursion-frame","~$cljs.core/contains?","~$cljs.core/conj","~$datascript.pull-api/pull-spec","~$cljs.core/update","~$datascript.pull-api/pull-pattern","~$datascript.pull-api/pull-expand-frame","~$datascript.pull-api/expand-result","~$datascript.pull-api/+default-limit+","~$cljs.core/get-in","~$cljs.core/List","~$datascript.pull-api/single-frame-result","~$cljs.core/get","~$datascript.db/-datoms","~$cljs.core/not-empty","~$datascript.pull-api/reset-frame","~$datascript.pull-api/pull-recursion-frame","~$cljs.core/conj!","~$datascript.pull-parser/parse-pull","~$cljs.core/persistent!","~$datascript.pull-api/pull-wildcard-expand","~$datascript.pull-api/push-recursion","~$cljs.core/transient","~$cljs.core/assoc","~$datascript.pull-api/recurse-attr","~$datascript.pull-api/pull-attr","~$datascript.pull-api/expand-reverse-subpattern-frame","~$datascript.pull-api/pull-attr-datoms","~$cljs.core/first","~$cljs.core/assoc!","~$js/Error","~$cljs.core/inc","~$datascript.pull-api/recursion-result","~$datascript.pull-api/pull"]]],"~:cache-keys",["~#cmap",[["^10","datascript/db.cljc"],[1590236302000,"~:shadow.build.compiler/resolve",["^ ","~:require-id",null,"~:deps-ids",["^A",[]],"~:deps-syms",["^M","^L","~$goog.array","~$clojure.walk","~$clojure.data","~$me.tonsky.persistent-sorted-set","~$me.tonsky.persistent-sorted-set.arrays"]]],["^10","goog/dom/tagname.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","~$goog.dom.HtmlElement"]]],["^10","goog/math/math.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","~$goog.asserts"]]],["^10","goog/html/trustedtypes.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/labs/useragent/browser.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","~$goog.labs.userAgent.util","~$goog.object","~$goog.string.internal"]]],["^10","goog/html/safeurl.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","~$goog.fs.url","~$goog.html.TrustedResourceUrl","~$goog.i18n.bidi.Dir","~$goog.i18n.bidi.DirectionalString","~$goog.string.Const","~$goog.string.TypedString","^2T"]]],["^10","goog/array/array.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q"]]],["^10","goog/debug/error.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/dom/nodetype.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/string/typedstring.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/object/object.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/dom/asserts.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q"]]],"~:SHADOW-TIMESTAMP",[1585692398000,1585692398000,1579838325000],["^10","goog/math/long.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","~$goog.reflect"]]],["^10","goog/html/trustedresourceurl.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","~$goog.html.trustedtypes","^2W","^2X","^2Y","^2Z"]]],["^10","goog/string/internal.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","datascript/pull_api.cljc"],[1590236302000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L","^H","^J"]]],["^10","goog/functions/functions.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/html/safestyle.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2Q","~$goog.html.SafeUrl","^2Y","^2Z","^2T"]]],["^10","goog/dom/safe.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","~$goog.dom.asserts","~$goog.functions","~$goog.html.SafeHtml","~$goog.html.SafeScript","~$goog.html.SafeStyle","^32","^2V","~$goog.html.uncheckedconversions","^2Y","^2T"]]],["^10","clojure/walk.cljs"],[1579838325000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L"]]],["^10","goog/structs/map.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","~$goog.iter.Iterator","~$goog.iter.StopIteration"]]],["^10","goog/html/safehtml.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2Q","~$goog.dom.TagName","~$goog.dom.tags","^36","^37","~$goog.html.SafeStyleSheet","^32","^2V","^31","^2W","^2X","~$goog.labs.userAgent.browser","^2S","^2Y","^2Z","^2T"]]],["^10","goog/dom/tags.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2S"]]],["^10","me/tonsky/persistent_sorted_set/arrays.cljc"],[1589003956000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L","~$clojure.string"]]],["^10","goog/asserts/asserts.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","~$goog.debug.Error","~$goog.dom.NodeType"]]],["^10","me/tonsky/persistent_sorted_set.cljs"],[1589003956000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L","^2O"]]],["^10","goog/uri/uri.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2Q","~$goog.string","~$goog.structs","~$goog.structs.Map","~$goog.uri.utils","~$goog.uri.utils.ComponentIndex","~$goog.uri.utils.StandardQueryParam"]]],["^10","goog/i18n/bidi.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/fs/url.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/base.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",[]]],["^10","goog/structs/structs.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2S"]]],["^10","clojure/string.cljs"],[1579838325000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L","^3B","~$goog.string.StringBuffer"]]],["^10","datascript/pull_parser.cljc"],[1590236302000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L","^H"]]],["^10","goog/string/string.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","~$goog.dom.safe","^38","^2Y","^2T"]]],["^10","clojure/data.cljs"],[1579838325000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L","~$clojure.set"]]],["^10","goog/reflect/reflect.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/labs/useragent/util.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2T"]]],["^10","goog/string/stringbuffer.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","goog/iter/iter.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2Q","^34","~$goog.math"]]],["^10","goog/html/uncheckedconversions.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","^35","^36","^37","^3=","^32","^2V","^2Y","^2T"]]],["^10","goog/dom/htmlelement.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M"]]],["^10","cljs/core.cljs"],[1579838325000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","~$goog.math.Long","~$goog.math.Integer","^3B","^2S","^2K","~$goog.Uri","^3H"]]],["^10","goog/html/safescript.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","^31","^2Y","^2Z"]]],["^10","goog/html/safestylesheet.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2Q","^37","^2S","^2Y","^2Z","^2T"]]],["^10","goog/math/integer.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^30"]]],["^10","clojure/set.cljs"],[1579838325000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^L"]]],["^10","goog/uri/utils.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2K","^2Q","^3B"]]],["^10","goog/string/const.js"],[1579837703000,"^2G",["^ ","^2H",null,"^2I",["^A",[]],"^2J",["^M","^2Q","^2Z"]]]]],"~:clj-info",["^ ","jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/reader_types.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/source_map/base64_vlq.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/core.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/source_map/base64.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/edn.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/source_map.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/string.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/impl/inspect.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/instant.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/pprint.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/set.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar!/clojure/java/io.clj",1569048150000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/env.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/persistent-sorted-set/persistent-sorted-set/0.1.2/persistent-sorted-set-0.1.2.jar!/me/tonsky/persistent_sorted_set.clj",1589003956000,"jar:file:/Users/clojure/.m2/repository/persistent-sorted-set/persistent-sorted-set/0.1.2/persistent-sorted-set-0.1.2.jar!/me/tonsky/persistent_sorted_set/arrays.cljc",1589003956000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/compiler.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/util.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/tagged_literals.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/datascript/datascript/0.18.13/datascript-0.18.13.jar!/datascript/db.cljc",1590236302000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/externs.clj",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/default_data_readers.clj",1569150464000,"jar:file:/Users/clojure/.m2/repository/org/clojure/data.json/0.2.6/data.json-0.2.6.jar!/clojure/data/json.clj",1569048105000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/analyzer.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/core.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/clojurescript/1.10.597/clojurescript-1.10.597.jar!/cljs/js_deps.cljc",1579838325000,"jar:file:/Users/clojure/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar!/clojure/tools/reader/impl/errors.clj",1569150464000],"~:analyzer",["^ ","^3",null,"^4",["^ "],"^5",["^ ","^6","datascript/pull_api.cljc","^7",1,"^8",14,"^9",1,"^:",33,"^;",true],"^<",["^ ","^=","^>"],"^?",null,"^@",["^A",[]],"^B","^C","^F",null,"^G",["^ ","^H","^H","^I","^H","^J","^J","^K","^J","^L","^L","^M","^M"],"^N",["^A",["^O"]],"~:shadow/js-access-global",["^A",["Error"]],"^P",["^ ","^Q","^J"],"~:defs",["^ ","~$push-recursion",["^ ","~:protocol-inline",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",43,"^8",8,"^9",43,"^:",22,"~:private",true,"~:arglists",["^T",["~$quote",["^T",[["~$rec","~$attr","~$eid"]]]]]],"^4D",true,"^B","^28","^6","datascript/pull_api.cljc","^:",22,"~:method-params",["^T",[["^4G","^4H","^4I"]]],"~:protocol-impl",null,"~:arglists-meta",["^T",[null,null]],"^8",1,"~:variadic?",false,"^7",43,"~:ret-tag",["^A",["~$clj","~$any"]],"^9",43,"~:max-fixed-arity",3,"~:fn-var",true,"^4E",["^T",["^4F",["^T",[["^4G","^4H","^4I"]]]]]],"~$pull-expand-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",190,"^8",8,"^9",190,"^:",25,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I",["~$frame","~$&","~$frames"]]]]]]],"^4D",true,"^B","^1U","^6","datascript/pull_api.cljc","^:",25,"^4J",["^T",[["^I","~$p__23055"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",190,"^4N","^4O","^9",190,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"~$pull",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",272,"^8",7,"^9",272,"^:",11,"^4E",["^T",["^4F",["^T",[["^I","~$selector","^4I"]]]]]],"^B","^2D","^6","datascript/pull_api.cljc","^:",11,"^4J",["^T",[["^I","^4X","^4I"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",272,"^4N","^4P","^9",272,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^4X","^4I"]]]]]],"~$recursion-result",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",65,"^8",8,"^9",65,"^:",24,"^4D",true,"^4E",["^T",["^4F",["^T",[["^4T"]]]]]],"^4D",true,"^B","^2C","^6","datascript/pull_api.cljc","^:",24,"^4J",["^T",[["^4T"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",65,"^4N",["^A",["^4P","~$clj-nil"]],"^9",65,"^4Q",1,"^4R",true,"^4E",["^T",["^4F",["^T",[["^4T"]]]]]],"~$single-frame-result",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",61,"^8",8,"^9",61,"^:",27,"^4D",true,"^4E",["^T",["^4F",["^T",[["~$key","^4T"]]]]]],"^4D",true,"^B","^1Z","^6","datascript/pull_api.cljc","^:",27,"^4J",["^T",[["^50","^4T"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",61,"^4N",["^A",["^4P","^4Z"]],"^9",61,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^50","^4T"]]]]]],"~$pull-expand-reverse-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",184,"^8",8,"^9",184,"^:",33,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"^4D",true,"^B","^1K","^6","datascript/pull_api.cljc","^:",33,"^4J",["^T",[["^I","~$p__23043"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",184,"^4N","^4O","^9",184,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"~$pull-attr-datoms",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",109,"^8",8,"^9",109,"^:",24,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I","~$attr-key","^4H","^4I","~$forward?","~$datoms","~$opts",["~$parent","~$&","^4U"]]]]]]],"^4D",true,"^B","^2>","^6","datascript/pull_api.cljc","^:",24,"^4J",["^T",[["^I","^54","^4H","^4I","^55","^56","^57","~$p__23027"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",109,"^4N","^4O","^9",109,"^4Q",8,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^54","^4H","^4I","^55","^56","^57",["^58","~$&","^4U"]]]]]]],"~$pull-many",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",276,"^8",7,"^9",276,"^:",16,"^4E",["^T",["^4F",["^T",[["^I","^4X","~$eids"]]]]]],"^B","^1?","^6","datascript/pull_api.cljc","^:",16,"^4J",["^T",[["^I","^4X","^5;"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",276,"^4N","^4P","^9",276,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^4X","^5;"]]]]]],"~$pull-pattern-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",229,"^8",8,"^9",229,"^:",26,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"^4D",true,"^B","^1=","^6","datascript/pull_api.cljc","^:",26,"^4J",["^T",[["^I","~$p__23075"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",229,"^4N",["^A",[null,"^4O"]],"^9",229,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"~$pull-wildcard-expand",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",211,"^8",8,"^9",211,"^:",28,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I","^4T","^4U","^4I","~$pattern"]]]]]],"^4D",true,"^B","^27","^6","datascript/pull_api.cljc","^:",28,"^4J",["^T",[["^I","^4T","^4U","^4I","^5?"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",211,"^4N","^4O","^9",211,"^4Q",5,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^4T","^4U","^4I","^5?"]]]]]],"~$expand-reverse-subpattern-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",171,"^8",8,"^9",171,"^:",39,"^4D",true,"^4E",["^T",["^4F",["^T",[["^58","^4I","~$rattrs"]]]]]],"^4D",true,"^B","^2=","^6","datascript/pull_api.cljc","^:",39,"^4J",["^T",[["^58","^4I","^5A"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",171,"^4N",["^A",["^4O","^4P"]],"^9",171,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^58","^4I","^5A"]]]]]],"~$pull-attr",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",152,"^8",8,"^9",152,"^:",17,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I","~$spec","^4I","^4U"]]]]]],"^4D",true,"^B","^2<","^6","datascript/pull_api.cljc","^:",17,"^4J",["^T",[["^I","^5C","^4I","^4U"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",152,"^4N",["^A",[null,"^4O"]],"^9",152,"^4Q",4,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^5C","^4I","^4U"]]]]]],"~$recurse-attr",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",87,"^8",8,"^9",87,"^:",20,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I","^4H","~$multi?","^5;","^4I","^58","^4U"]]]]]],"^4D",true,"^B","^2;","^6","datascript/pull_api.cljc","^:",20,"^4J",["^T",[["^I","^4H","^5E","^5;","^4I","^58","^4U"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",87,"^4N","^4O","^9",87,"^4Q",7,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^4H","^5E","^5;","^4I","^58","^4U"]]]]]],"~$pull-wildcard",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",223,"^8",8,"^9",223,"^:",21,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I","^4T","^4U"]]]]]],"^4D",true,"^B","^1L","^6","datascript/pull_api.cljc","^:",21,"^4J",["^T",[["^I","^4T","^4U"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",223,"^4N","^4O","^9",223,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^4T","^4U"]]]]]],"~$into!",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",10,"^8",8,"^9",10,"^:",13,"^4D",true,"^4E",["^T",["^4F",["^T",[["~$transient-coll","~$items"]]]]]],"^4D",true,"^B","^1M","^6","datascript/pull_api.cljc","^:",13,"^4J",["^T",[["^5H","^5I"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",10,"^4N",["^A",[null,"^4P"]],"^9",10,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^5H","^5I"]]]]]],"~$expand-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",102,"^8",10,"^9",102,"^:",22,"^4D",true,"^4E",["^T",["^4F",["^T",[["^58","^4I","^54","^5E","^5;"]]]]]],"^4D",true,"^B","^1>","^6","datascript/pull_api.cljc","^:",22,"^4J",["^T",[["^58","^4I","^54","^5E","^5;"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",3,"^4M",false,"^7",102,"^4N",["^A",["^4O","^4P"]],"^9",102,"^4Q",5,"^4R",true,"^4E",["^T",["^4F",["^T",[["^58","^4I","^54","^5E","^5;"]]]]]],"~$pull-spec",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",267,"^8",7,"^9",267,"^:",16,"^4E",["^T",["^4F",["^T",[["^I","^5?","^5;","^5E"]]]]]],"^B","^1R","^6","datascript/pull_api.cljc","^:",16,"^4J",["^T",[["^I","^5?","^5;","^5E"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",267,"^4N","^4P","^9",267,"^4Q",4,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^5?","^5;","^5E"]]]]]],"~$pull-pattern",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",250,"^8",8,"^9",250,"^:",20,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I","^4U"]]]]]],"^4D",true,"^B","^1T","^6","datascript/pull_api.cljc","^:",20,"^4J",["^T",[["^I","^4U"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",250,"^9",250,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I","^4U"]]]]]],"~$expand-result",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",177,"^8",8,"^9",177,"^:",21,"^4D",true,"^4E",["^T",["^4F",["^T",[["^4U","~$kvps"]]]]]],"^4D",true,"^B","^1V","^6","datascript/pull_api.cljc","^:",21,"^4J",["^T",[["^4U","^5N"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",177,"^4N","^4O","^9",177,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^4U","^5N"]]]]]],"~$recursion-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",68,"^8",8,"^9",68,"^:",23,"^4D",true,"^4E",["^T",["^4F",["^T",[["^58","^4I"]]]]]],"^4D",true,"^B","^1O","^6","datascript/pull_api.cljc","^:",23,"^4J",["^T",[["^58","^4I"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",68,"^4N",["^A",["^4O","^4P"]],"^9",68,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^58","^4I"]]]]]],"~$reset-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",32,"^8",8,"^9",32,"^:",19,"^4D",true,"^4E",["^T",["^4F",["^T",[["^4T","^5;","^5N"]]]]]],"^4D",true,"^B","^22","^6","datascript/pull_api.cljc","^:",19,"^4J",["^T",[["^4T","^5;","^5N"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",32,"^4N",["^A",["^4O","^4P"]],"^9",32,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^4T","^5;","^5N"]]]]]],"~$pull-seen-eid",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",56,"^8",8,"^9",56,"^:",21,"^4D",true,"^4E",["^T",["^4F",["^T",[["^4T","^4U","^4I"]]]]]],"^4D",true,"^B","^1C","^6","datascript/pull_api.cljc","^:",21,"^4J",["^T",[["^4T","^4U","^4I"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",56,"^4N",["^A",["^4O","^4Z"]],"^9",56,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^4T","^4U","^4I"]]]]]],"~$initial-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",16,"^8",8,"^9",16,"^:",21,"^4D",true,"^4E",["^T",["^4F",["^T",[["^5?","^5;","^5E"]]]]]],"^4D",true,"^B","^1B","^6","datascript/pull_api.cljc","^:",21,"^4J",["^T",[["^5?","^5;","^5E"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",16,"^4N","~$cljs.core/IMap","^9",16,"^4Q",3,"^4R",true,"^4E",["^T",["^4F",["^T",[["^5?","^5;","^5E"]]]]]],"~$pull-recursion-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",75,"^8",8,"^9",75,"^:",28,"^4D",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"^4D",true,"^B","^23","^6","datascript/pull_api.cljc","^:",28,"^4J",["^T",[["^I","~$p__23015"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",75,"^4N","^4O","^9",75,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^I",["^4T","~$&","^4U"]]]]]]],"~$+default-limit+",["^ ","^5",["^ ","^6","datascript/pull_api.cljc","^7",14,"^8",24,"^9",14,"^:",39,"~:const",true,"^4D",true],"^4D",true,"^B","^1W","^6","datascript/pull_api.cljc","^:",39,"~:const-expr",["^ ","^D","^5W","~:val",1000,"~:env",["^ ","~:context","~:expr"],"^S",1000,"~:tag","~$number"],"^8",1,"^5W",true,"^7",14,"^9",14,"^61","^62"],"~$seen-eid?",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",50,"^8",8,"^9",50,"^:",17,"^4D",true,"^4E",["^T",["^4F",["^T",[["^4T","^4I"]]]]]],"^4D",true,"^B","^1F","^6","datascript/pull_api.cljc","^:",17,"^4J",["^T",[["^4T","^4I"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",50,"^4N","~$boolean","^9",50,"^4Q",2,"^4R",true,"^4E",["^T",["^4F",["^T",[["^4T","^4I"]]]]]],"~$subpattern-frame",["^ ","^4C",null,"^5",["^ ","^6","datascript/pull_api.cljc","^7",28,"^8",8,"^9",28,"^:",24,"^4D",true,"^4E",["^T",["^4F",["^T",[["^5?","^5;","^5E","^4H"]]]]]],"^4D",true,"^B","^1G","^6","datascript/pull_api.cljc","^:",24,"^4J",["^T",[["^5?","^5;","^5E","^4H"]]],"^4K",null,"^4L",["^T",[null,null]],"^8",1,"^4M",false,"^7",28,"^4N",["^A",["^4O","^4P"]],"^9",28,"^4Q",4,"^4R",true,"^4E",["^T",["^4F",["^T",[["^5?","^5;","^5E","^4H"]]]]]],"~$filter-reverse-attrs",["^ ","^5",["^ ","^6","datascript/pull_api.cljc","^7",168,"^8",16,"^9",168,"^:",36,"^4D",true],"^4D",true,"^B","^1J","^6","datascript/pull_api.cljc","^:",36,"^8",1,"^7",168,"^9",168,"^61","~$function"]],"^R",["^ ","^L","^L","^H","^H","^I","^H"],"~:cljs.analyzer/constants",["^ ","^N",["^A",["~:expand-kvps","~:datascript.pull-api/expand-rev","~:multi?","~:done","~:limit","~:else","~:default","~:avet","^V","~:datascript.pull-api/recursion","~:expand-rev","~:eids","~:state","~:eavt","~:recursion","^N","~:specs","~:db/id","~:attrs","~:subpattern","~:depth","~:eid","~:wildcard?","~:expand","~:kvps","~:datoms","~:pattern","~:attr","~:results"]],"~:order",["^6;","^6C","^6D","^6F","^6G","^6M","^6O","^6Q","^6S","^6K","^N","^6I","^6R","^6H","^6A","^6<","^6=","^V","^6J","^6>","^6?","^6E","^6@","^6:","^69","^6P","^6L","^6B","^6N"]],"^X",["^ ","^O",["^A",[]]],"^Y",["^ "],"^Z",["^M","^L","^H","^J"]],"^E","^C","~:ns-specs",["^ "],"~:ns-spec-vars",["^A",[]],"~:compiler-options",["^2F",[["^6W","~:static-fns"],true,["^6W","~:shadow-tweaks"],null,["^6W","~:source-map-inline"],null,["^6W","~:elide-asserts"],true,["^6W","~:optimize-constants"],null,["^6W","^13"],null,["^6W","~:external-config"],null,["^6W","~:tooling-config"],null,["^6W","~:emit-constants"],null,["^6W","~:load-tests"],false,["^6W","~:form-size-threshold"],null,["^6W","~:infer-externs"],true,["^6W","^15"],null,["~:js-options","~:js-provider"],"^O",["~:mode"],"~:release",["^6W","~:fn-invoke-direct"],null,["^6W","~:source-map"],null]]]