["^ ","~:output",["^ ","~:js","goog.provide('datascript.db');\ndatascript.db.Exception = Error;\n\ndatascript.db.IllegalArgumentException = Error;\n\ndatascript.db.UnsupportedOperationException = Error;\ndatascript.db.e0 = (0);\ndatascript.db.tx0 = (536870912);\ndatascript.db.emax = (2147483647);\ndatascript.db.txmax = (2147483647);\ndatascript.db.implicit_schema = new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"ident\",\"db/ident\",-737096),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722)], null)], null);\ndatascript.db.seqable_QMARK_ = (function datascript$db$seqable_QMARK_(x){\nreturn (((!(typeof x === 'string'))) && (((cljs.core.seqable_QMARK_(x)) || (me.tonsky.persistent_sorted_set.arrays.array_QMARK_(x)))));\n});\n/**\n * Take the &env from a macro, and tell whether we are expanding into cljs.\n */\ndatascript.db.cljs_env_QMARK_ = (function datascript$db$cljs_env_QMARK_(env){\nreturn cljs.core.boolean$(new cljs.core.Keyword(null,\"ns\",\"ns\",441598760).cljs$core$IFn$_invoke$arity$1(env));\n});\ndatascript.db.combine_hashes = (function datascript$db$combine_hashes(x,y){\nreturn cljs.core.hash_combine(x,y);\n});\n\n\n\n\n\n\n/**\n * @interface\n */\ndatascript.db.IDatom = function(){};\n\ndatascript.db.datom_tx = (function datascript$db$datom_tx(this$){\nif((((!((this$ == null)))) && ((!((this$.datascript$db$IDatom$datom_tx$arity$1 == null)))))){\nreturn this$.datascript$db$IDatom$datom_tx$arity$1(this$);\n} else {\nvar x__4487__auto__ = (((this$ == null))?null:this$);\nvar m__4488__auto__ = (datascript.db.datom_tx[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__4488__auto__.call(null,this$));\n} else {\nvar m__4485__auto__ = (datascript.db.datom_tx[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__4485__auto__.call(null,this$));\n} else {\nthrow cljs.core.missing_protocol(\"IDatom.datom-tx\",this$);\n}\n}\n}\n});\n\ndatascript.db.datom_added = (function datascript$db$datom_added(this$){\nif((((!((this$ == null)))) && ((!((this$.datascript$db$IDatom$datom_added$arity$1 == null)))))){\nreturn this$.datascript$db$IDatom$datom_added$arity$1(this$);\n} else {\nvar x__4487__auto__ = (((this$ == null))?null:this$);\nvar m__4488__auto__ = (datascript.db.datom_added[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__4488__auto__.call(null,this$));\n} else {\nvar m__4485__auto__ = (datascript.db.datom_added[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__4485__auto__.call(null,this$));\n} else {\nthrow cljs.core.missing_protocol(\"IDatom.datom-added\",this$);\n}\n}\n}\n});\n\n\n/**\n* @constructor\n * @implements {cljs.core.IIndexed}\n * @implements {datascript.db.IDatom}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IPrintWithWriter}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.ILookup}\n*/\ndatascript.db.Datom = (function (e,a,v,tx,_hash){\nthis.e = e;\nthis.a = a;\nthis.v = v;\nthis.tx = tx;\nthis._hash = _hash;\nthis.cljs$lang$protocol_mask$partition0$ = 2162164496;\nthis.cljs$lang$protocol_mask$partition1$ = 0;\n});\n(datascript.db.Datom.prototype.datascript$db$IDatom$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.Datom.prototype.datascript$db$IDatom$datom_tx$arity$1 = (function (d){\nvar self__ = this;\nvar d__$1 = this;\nif((self__.tx > (0))){\nreturn self__.tx;\n} else {\nreturn (- self__.tx);\n}\n}));\n\n(datascript.db.Datom.prototype.datascript$db$IDatom$datom_added$arity$1 = (function (d){\nvar self__ = this;\nvar d__$1 = this;\nreturn (self__.tx > (0));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$IHash$_hash$arity$1 = (function (d){\nvar self__ = this;\nvar d__$1 = this;\nif((self__._hash === (0))){\nreturn (self__._hash = (datascript.db.hash_datom.cljs$core$IFn$_invoke$arity$1 ? datascript.db.hash_datom.cljs$core$IFn$_invoke$arity$1(d__$1) : datascript.db.hash_datom.call(null,d__$1)));\n} else {\nreturn self__._hash;\n}\n}));\n\n(datascript.db.Datom.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (d,o){\nvar self__ = this;\nvar d__$1 = this;\nif((o instanceof datascript.db.Datom)){\nreturn (datascript.db.equiv_datom.cljs$core$IFn$_invoke$arity$2 ? datascript.db.equiv_datom.cljs$core$IFn$_invoke$arity$2(d__$1,o) : datascript.db.equiv_datom.call(null,d__$1,o));\n} else {\nreturn false;\n}\n}));\n\n(datascript.db.Datom.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (d){\nvar self__ = this;\nvar d__$1 = this;\nreturn (datascript.db.seq_datom.cljs$core$IFn$_invoke$arity$1 ? datascript.db.seq_datom.cljs$core$IFn$_invoke$arity$1(d__$1) : datascript.db.seq_datom.call(null,d__$1));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (d,k){\nvar self__ = this;\nvar d__$1 = this;\nreturn (datascript.db.val_at_datom.cljs$core$IFn$_invoke$arity$3 ? datascript.db.val_at_datom.cljs$core$IFn$_invoke$arity$3(d__$1,k,null) : datascript.db.val_at_datom.call(null,d__$1,k,null));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (d,k,nf){\nvar self__ = this;\nvar d__$1 = this;\nreturn (datascript.db.val_at_datom.cljs$core$IFn$_invoke$arity$3 ? datascript.db.val_at_datom.cljs$core$IFn$_invoke$arity$3(d__$1,k,nf) : datascript.db.val_at_datom.call(null,d__$1,k,nf));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (this$,i){\nvar self__ = this;\nvar this$__$1 = this;\nreturn (datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$2 ? datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$2(this$__$1,i) : datascript.db.nth_datom.call(null,this$__$1,i));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (this$,i,not_found){\nvar self__ = this;\nvar this$__$1 = this;\nreturn (datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$3 ? datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$3(this$__$1,i,not_found) : datascript.db.nth_datom.call(null,this$__$1,i,not_found));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (d,k,v__$1){\nvar self__ = this;\nvar d__$1 = this;\nreturn (datascript.db.assoc_datom.cljs$core$IFn$_invoke$arity$3 ? datascript.db.assoc_datom.cljs$core$IFn$_invoke$arity$3(d__$1,k,v__$1) : datascript.db.assoc_datom.call(null,d__$1,k,v__$1));\n}));\n\n(datascript.db.Datom.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (d,writer,opts){\nvar self__ = this;\nvar d__$1 = this;\nreturn cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,\"#datascript/Datom [\",\" \",\"]\",opts,new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [d__$1.e,d__$1.a,d__$1.v,d__$1.datascript$db$IDatom$datom_tx$arity$1(null),d__$1.datascript$db$IDatom$datom_added$arity$1(null)], null));\n}));\n\n(datascript.db.Datom.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,\"e\",\"e\",-1273166571,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),new cljs.core.Symbol(null,\"a\",\"a\",-482876059,null),new cljs.core.Symbol(null,\"v\",\"v\",1661996586,null),cljs.core.with_meta(new cljs.core.Symbol(null,\"tx\",\"tx\",2107161945,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,\"_hash\",\"_hash\",-2130838312,null),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"tag\",\"tag\",-1290361223),new cljs.core.Symbol(null,\"number\",\"number\",-1084057331,null),new cljs.core.Keyword(null,\"mutable\",\"mutable\",875778266),true], null))], null);\n}));\n\n(datascript.db.Datom.cljs$lang$type = true);\n\n(datascript.db.Datom.cljs$lang$ctorStr = \"datascript.db/Datom\");\n\n(datascript.db.Datom.cljs$lang$ctorPrWriter = (function (this__4428__auto__,writer__4429__auto__,opt__4430__auto__){\nreturn cljs.core._write(writer__4429__auto__,\"datascript.db/Datom\");\n}));\n\n/**\n * Positional factory function for datascript.db/Datom.\n */\ndatascript.db.__GT_Datom = (function datascript$db$__GT_Datom(e,a,v,tx,_hash){\nreturn (new datascript.db.Datom(e,a,v,tx,_hash));\n});\n\ngoog.exportSymbol(\"datascript.db.Datom\",datascript.db.Datom);\ndatascript.db.datom = (function datascript$db$datom(var_args){\nvar G__22173 = arguments.length;\nswitch (G__22173) {\ncase 3:\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));\n\nbreak;\ncase 4:\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));\n\nbreak;\ncase 5:\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(datascript.db.datom.cljs$core$IFn$_invoke$arity$3 = (function (e,a,v){\nreturn (new datascript.db.Datom(e,a,v,(536870912),(0)));\n}));\n\n(datascript.db.datom.cljs$core$IFn$_invoke$arity$4 = (function (e,a,v,tx){\nreturn (new datascript.db.Datom(e,a,v,tx,(0)));\n}));\n\n(datascript.db.datom.cljs$core$IFn$_invoke$arity$5 = (function (e,a,v,tx,added){\nreturn (new datascript.db.Datom(e,a,v,(cljs.core.truth_(added)?tx:(- tx)),(0)));\n}));\n\n(datascript.db.datom.cljs$lang$maxFixedArity = 5);\n\ndatascript.db.datom_QMARK_ = (function datascript$db$datom_QMARK_(x){\nreturn (x instanceof datascript.db.Datom);\n});\ndatascript.db.hash_datom = (function datascript$db$hash_datom(d){\nreturn datascript.db.combine_hashes(datascript.db.combine_hashes(cljs.core.hash(d.e),cljs.core.hash(d.a)),cljs.core.hash(d.v));\n});\ndatascript.db.equiv_datom = (function datascript$db$equiv_datom(d,o){\nreturn (((d.e === o.e)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(d.a,o.a)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(d.v,o.v)));\n});\ndatascript.db.seq_datom = (function datascript$db$seq_datom(d){\nreturn (new cljs.core.List(null,d.e,(new cljs.core.List(null,d.a,(new cljs.core.List(null,d.v,(new cljs.core.List(null,d.datascript$db$IDatom$datom_tx$arity$1(null),(new cljs.core.List(null,d.datascript$db$IDatom$datom_added$arity$1(null),null,(1),null)),(2),null)),(3),null)),(4),null)),(5),null));\n});\ndatascript.db.val_at_datom = (function datascript$db$val_at_datom(d,k,not_found){\nvar G__22177 = k;\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"v\",\"v\",21465059),G__22177)){\nreturn d.v;\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"e\",G__22177)){\nreturn d.e;\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"added\",\"added\",2057651688),G__22177)){\nreturn d.datascript$db$IDatom$datom_added$arity$1(null);\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"v\",G__22177)){\nreturn d.v;\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"e\",\"e\",1381269198),G__22177)){\nreturn d.e;\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"a\",G__22177)){\nreturn d.a;\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"tx\",\"tx\",466630418),G__22177)){\nreturn d.datascript$db$IDatom$datom_tx$arity$1(null);\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"added\",G__22177)){\nreturn d.datascript$db$IDatom$datom_added$arity$1(null);\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"tx\",G__22177)){\nreturn d.datascript$db$IDatom$datom_tx$arity$1(null);\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"a\",\"a\",-2123407586),G__22177)){\nreturn d.a;\n} else {\nreturn not_found;\n\n}\n}\n}\n}\n}\n}\n}\n}\n}\n}\n});\ndatascript.db.nth_datom = (function datascript$db$nth_datom(var_args){\nvar G__22179 = arguments.length;\nswitch (G__22179) {\ncase 2:\nreturn datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ncase 3:\nreturn datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$2 = (function (d,i){\nvar G__22180 = i;\nswitch (G__22180) {\ncase (0):\nreturn d.e;\n\nbreak;\ncase (1):\nreturn d.a;\n\nbreak;\ncase (2):\nreturn d.v;\n\nbreak;\ncase (3):\nreturn d.datascript$db$IDatom$datom_tx$arity$1(null);\n\nbreak;\ncase (4):\nreturn d.datascript$db$IDatom$datom_added$arity$1(null);\n\nbreak;\ndefault:\nthrow (new Error([\"Datom/-nth: Index out of bounds: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(i)].join('')));\n\n}\n}));\n\n(datascript.db.nth_datom.cljs$core$IFn$_invoke$arity$3 = (function (d,i,not_found){\nvar G__22181 = i;\nswitch (G__22181) {\ncase (0):\nreturn d.e;\n\nbreak;\ncase (1):\nreturn d.a;\n\nbreak;\ncase (2):\nreturn d.v;\n\nbreak;\ncase (3):\nreturn d.datascript$db$IDatom$datom_tx$arity$1(null);\n\nbreak;\ncase (4):\nreturn d.datascript$db$IDatom$datom_added$arity$1(null);\n\nbreak;\ndefault:\nreturn not_found;\n\n}\n}));\n\n(datascript.db.nth_datom.cljs$lang$maxFixedArity = 3);\n\ndatascript.db.assoc_datom = (function datascript$db$assoc_datom(d,k,v){\nvar G__22182 = k;\nvar G__22182__$1 = (((G__22182 instanceof cljs.core.Keyword))?G__22182.fqn:null);\nswitch (G__22182__$1) {\ncase \"e\":\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$5(v,d.a,d.v,d.datascript$db$IDatom$datom_tx$arity$1(null),d.datascript$db$IDatom$datom_added$arity$1(null));\n\nbreak;\ncase \"a\":\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$5(d.e,v,d.v,d.datascript$db$IDatom$datom_tx$arity$1(null),d.datascript$db$IDatom$datom_added$arity$1(null));\n\nbreak;\ncase \"v\":\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$5(d.e,d.a,v,d.datascript$db$IDatom$datom_tx$arity$1(null),d.datascript$db$IDatom$datom_added$arity$1(null));\n\nbreak;\ncase \"tx\":\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$5(d.e,d.a,d.v,v,d.datascript$db$IDatom$datom_added$arity$1(null));\n\nbreak;\ncase \"added\":\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$5(d.e,d.a,d.v,d.datascript$db$IDatom$datom_tx$arity$1(null),v);\n\nbreak;\ndefault:\nthrow (new datascript.db.IllegalArgumentException([\"invalid key for #datascript/Datom: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(k)].join('')));\n\n}\n});\ndatascript.db.datom_from_reader = (function datascript$db$datom_from_reader(vec){\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$2(datascript.db.datom,vec);\n});\ndatascript.db.cmp = (function datascript$db$cmp(o1,o2){\nif((o1 == null)){\nreturn (0);\n} else {\nif((o2 == null)){\nreturn (0);\n} else {\nreturn cljs.core.compare(o1,o2);\n}\n}\n});\ndatascript.db.cmp_datoms_eavt = (function datascript$db$cmp_datoms_eavt(d1,d2){\nvar c__21474__auto__ = (d1.e - d2.e);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = datascript.db.cmp(d1.a,d2.a);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = datascript.db.cmp(d1.v,d2.v);\nif(((0) === c__21474__auto____$2)){\nvar c__21474__auto____$3 = (d1.datascript$db$IDatom$datom_tx$arity$1(null) - d2.datascript$db$IDatom$datom_tx$arity$1(null));\nif(((0) === c__21474__auto____$3)){\nreturn (0);\n} else {\nreturn c__21474__auto____$3;\n}\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.cmp_datoms_aevt = (function datascript$db$cmp_datoms_aevt(d1,d2){\nvar c__21474__auto__ = datascript.db.cmp(d1.a,d2.a);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = (d1.e - d2.e);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = datascript.db.cmp(d1.v,d2.v);\nif(((0) === c__21474__auto____$2)){\nvar c__21474__auto____$3 = (d1.datascript$db$IDatom$datom_tx$arity$1(null) - d2.datascript$db$IDatom$datom_tx$arity$1(null));\nif(((0) === c__21474__auto____$3)){\nreturn (0);\n} else {\nreturn c__21474__auto____$3;\n}\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.cmp_datoms_avet = (function datascript$db$cmp_datoms_avet(d1,d2){\nvar c__21474__auto__ = datascript.db.cmp(d1.a,d2.a);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = datascript.db.cmp(d1.v,d2.v);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = (d1.e - d2.e);\nif(((0) === c__21474__auto____$2)){\nvar c__21474__auto____$3 = (d1.datascript$db$IDatom$datom_tx$arity$1(null) - d2.datascript$db$IDatom$datom_tx$arity$1(null));\nif(((0) === c__21474__auto____$3)){\nreturn (0);\n} else {\nreturn c__21474__auto____$3;\n}\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.cmp_attr_quick = (function datascript$db$cmp_attr_quick(a1,a2){\nif((a1 instanceof cljs.core.Keyword)){\nreturn cljs.core._compare(a1,a2);\n} else {\nreturn goog.array.defaultCompare(a1,a2);\n}\n});\ndatascript.db.cmp_datoms_eav_quick = (function datascript$db$cmp_datoms_eav_quick(d1,d2){\nvar c__21474__auto__ = (d1.e - d2.e);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = datascript.db.cmp_attr_quick(d1.a,d2.a);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = cljs.core.compare(d1.v,d2.v);\nif(((0) === c__21474__auto____$2)){\nreturn (0);\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.cmp_datoms_eavt_quick = (function datascript$db$cmp_datoms_eavt_quick(d1,d2){\nvar c__21474__auto__ = (d1.e - d2.e);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = datascript.db.cmp_attr_quick(d1.a,d2.a);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = cljs.core.compare(d1.v,d2.v);\nif(((0) === c__21474__auto____$2)){\nvar c__21474__auto____$3 = (d1.datascript$db$IDatom$datom_tx$arity$1(null) - d2.datascript$db$IDatom$datom_tx$arity$1(null));\nif(((0) === c__21474__auto____$3)){\nreturn (0);\n} else {\nreturn c__21474__auto____$3;\n}\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.cmp_datoms_aevt_quick = (function datascript$db$cmp_datoms_aevt_quick(d1,d2){\nvar c__21474__auto__ = datascript.db.cmp_attr_quick(d1.a,d2.a);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = (d1.e - d2.e);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = cljs.core.compare(d1.v,d2.v);\nif(((0) === c__21474__auto____$2)){\nvar c__21474__auto____$3 = (d1.datascript$db$IDatom$datom_tx$arity$1(null) - d2.datascript$db$IDatom$datom_tx$arity$1(null));\nif(((0) === c__21474__auto____$3)){\nreturn (0);\n} else {\nreturn c__21474__auto____$3;\n}\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.cmp_datoms_avet_quick = (function datascript$db$cmp_datoms_avet_quick(d1,d2){\nvar c__21474__auto__ = datascript.db.cmp_attr_quick(d1.a,d2.a);\nif(((0) === c__21474__auto__)){\nvar c__21474__auto____$1 = cljs.core.compare(d1.v,d2.v);\nif(((0) === c__21474__auto____$1)){\nvar c__21474__auto____$2 = (d1.e - d2.e);\nif(((0) === c__21474__auto____$2)){\nvar c__21474__auto____$3 = (d1.datascript$db$IDatom$datom_tx$arity$1(null) - d2.datascript$db$IDatom$datom_tx$arity$1(null));\nif(((0) === c__21474__auto____$3)){\nreturn (0);\n} else {\nreturn c__21474__auto____$3;\n}\n} else {\nreturn c__21474__auto____$2;\n}\n} else {\nreturn c__21474__auto____$1;\n}\n} else {\nreturn c__21474__auto__;\n}\n});\ndatascript.db.diff_sorted = (function datascript$db$diff_sorted(a,b,cmp){\nvar only_a = cljs.core.PersistentVector.EMPTY;\nvar only_b = cljs.core.PersistentVector.EMPTY;\nvar both = cljs.core.PersistentVector.EMPTY;\nvar a__$1 = a;\nvar b__$1 = b;\nwhile(true){\nif(cljs.core.empty_QMARK_(a__$1)){\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.not_empty(only_a),cljs.core.not_empty(cljs.core.into.cljs$core$IFn$_invoke$arity$2(only_b,b__$1)),cljs.core.not_empty(both)], null);\n} else {\nif(cljs.core.empty_QMARK_(b__$1)){\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.not_empty(cljs.core.into.cljs$core$IFn$_invoke$arity$2(only_a,a__$1)),cljs.core.not_empty(only_b),cljs.core.not_empty(both)], null);\n} else {\nvar first_a = cljs.core.first(a__$1);\nvar first_b = cljs.core.first(b__$1);\nvar diff = (cmp.cljs$core$IFn$_invoke$arity$2 ? cmp.cljs$core$IFn$_invoke$arity$2(first_a,first_b) : cmp.call(null,first_a,first_b));\nif((diff === (0))){\nvar G__22708 = only_a;\nvar G__22709 = only_b;\nvar G__22710 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(both,first_a);\nvar G__22711 = cljs.core.next(a__$1);\nvar G__22712 = cljs.core.next(b__$1);\nonly_a = G__22708;\nonly_b = G__22709;\nboth = G__22710;\na__$1 = G__22711;\nb__$1 = G__22712;\ncontinue;\n} else {\nif((diff < (0))){\nvar G__22713 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(only_a,first_a);\nvar G__22714 = only_b;\nvar G__22715 = both;\nvar G__22716 = cljs.core.next(a__$1);\nvar G__22717 = b__$1;\nonly_a = G__22713;\nonly_b = G__22714;\nboth = G__22715;\na__$1 = G__22716;\nb__$1 = G__22717;\ncontinue;\n} else {\nif((diff > (0))){\nvar G__22719 = only_a;\nvar G__22720 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(only_b,first_b);\nvar G__22721 = both;\nvar G__22722 = a__$1;\nvar G__22723 = cljs.core.next(b__$1);\nonly_a = G__22719;\nonly_b = G__22720;\nboth = G__22721;\na__$1 = G__22722;\nb__$1 = G__22723;\ncontinue;\n} else {\nreturn null;\n}\n}\n}\n\n}\n}\nbreak;\n}\n});\n\n/**\n * @interface\n */\ndatascript.db.ISearch = function(){};\n\ndatascript.db._search = (function datascript$db$_search(data,pattern){\nif((((!((data == null)))) && ((!((data.datascript$db$ISearch$_search$arity$2 == null)))))){\nreturn data.datascript$db$ISearch$_search$arity$2(data,pattern);\n} else {\nvar x__4487__auto__ = (((data == null))?null:data);\nvar m__4488__auto__ = (datascript.db._search[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$2(data,pattern) : m__4488__auto__.call(null,data,pattern));\n} else {\nvar m__4485__auto__ = (datascript.db._search[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$2(data,pattern) : m__4485__auto__.call(null,data,pattern));\n} else {\nthrow cljs.core.missing_protocol(\"ISearch.-search\",data);\n}\n}\n}\n});\n\n\n/**\n * @interface\n */\ndatascript.db.IIndexAccess = function(){};\n\ndatascript.db._datoms = (function datascript$db$_datoms(db,index,components){\nif((((!((db == null)))) && ((!((db.datascript$db$IIndexAccess$_datoms$arity$3 == null)))))){\nreturn db.datascript$db$IIndexAccess$_datoms$arity$3(db,index,components);\n} else {\nvar x__4487__auto__ = (((db == null))?null:db);\nvar m__4488__auto__ = (datascript.db._datoms[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$3 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$3(db,index,components) : m__4488__auto__.call(null,db,index,components));\n} else {\nvar m__4485__auto__ = (datascript.db._datoms[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$3 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$3(db,index,components) : m__4485__auto__.call(null,db,index,components));\n} else {\nthrow cljs.core.missing_protocol(\"IIndexAccess.-datoms\",db);\n}\n}\n}\n});\n\ndatascript.db._seek_datoms = (function datascript$db$_seek_datoms(db,index,components){\nif((((!((db == null)))) && ((!((db.datascript$db$IIndexAccess$_seek_datoms$arity$3 == null)))))){\nreturn db.datascript$db$IIndexAccess$_seek_datoms$arity$3(db,index,components);\n} else {\nvar x__4487__auto__ = (((db == null))?null:db);\nvar m__4488__auto__ = (datascript.db._seek_datoms[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$3 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$3(db,index,components) : m__4488__auto__.call(null,db,index,components));\n} else {\nvar m__4485__auto__ = (datascript.db._seek_datoms[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$3 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$3(db,index,components) : m__4485__auto__.call(null,db,index,components));\n} else {\nthrow cljs.core.missing_protocol(\"IIndexAccess.-seek-datoms\",db);\n}\n}\n}\n});\n\ndatascript.db._rseek_datoms = (function datascript$db$_rseek_datoms(db,index,components){\nif((((!((db == null)))) && ((!((db.datascript$db$IIndexAccess$_rseek_datoms$arity$3 == null)))))){\nreturn db.datascript$db$IIndexAccess$_rseek_datoms$arity$3(db,index,components);\n} else {\nvar x__4487__auto__ = (((db == null))?null:db);\nvar m__4488__auto__ = (datascript.db._rseek_datoms[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$3 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$3(db,index,components) : m__4488__auto__.call(null,db,index,components));\n} else {\nvar m__4485__auto__ = (datascript.db._rseek_datoms[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$3 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$3(db,index,components) : m__4485__auto__.call(null,db,index,components));\n} else {\nthrow cljs.core.missing_protocol(\"IIndexAccess.-rseek-datoms\",db);\n}\n}\n}\n});\n\ndatascript.db._index_range = (function datascript$db$_index_range(db,attr,start,end){\nif((((!((db == null)))) && ((!((db.datascript$db$IIndexAccess$_index_range$arity$4 == null)))))){\nreturn db.datascript$db$IIndexAccess$_index_range$arity$4(db,attr,start,end);\n} else {\nvar x__4487__auto__ = (((db == null))?null:db);\nvar m__4488__auto__ = (datascript.db._index_range[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$4 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$4(db,attr,start,end) : m__4488__auto__.call(null,db,attr,start,end));\n} else {\nvar m__4485__auto__ = (datascript.db._index_range[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$4 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$4(db,attr,start,end) : m__4485__auto__.call(null,db,attr,start,end));\n} else {\nthrow cljs.core.missing_protocol(\"IIndexAccess.-index-range\",db);\n}\n}\n}\n});\n\n\n/**\n * @interface\n */\ndatascript.db.IDB = function(){};\n\ndatascript.db._schema = (function datascript$db$_schema(db){\nif((((!((db == null)))) && ((!((db.datascript$db$IDB$_schema$arity$1 == null)))))){\nreturn db.datascript$db$IDB$_schema$arity$1(db);\n} else {\nvar x__4487__auto__ = (((db == null))?null:db);\nvar m__4488__auto__ = (datascript.db._schema[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$1(db) : m__4488__auto__.call(null,db));\n} else {\nvar m__4485__auto__ = (datascript.db._schema[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$1 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$1(db) : m__4485__auto__.call(null,db));\n} else {\nthrow cljs.core.missing_protocol(\"IDB.-schema\",db);\n}\n}\n}\n});\n\ndatascript.db._attrs_by = (function datascript$db$_attrs_by(db,property){\nif((((!((db == null)))) && ((!((db.datascript$db$IDB$_attrs_by$arity$2 == null)))))){\nreturn db.datascript$db$IDB$_attrs_by$arity$2(db,property);\n} else {\nvar x__4487__auto__ = (((db == null))?null:db);\nvar m__4488__auto__ = (datascript.db._attrs_by[goog.typeOf(x__4487__auto__)]);\nif((!((m__4488__auto__ == null)))){\nreturn (m__4488__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4488__auto__.cljs$core$IFn$_invoke$arity$2(db,property) : m__4488__auto__.call(null,db,property));\n} else {\nvar m__4485__auto__ = (datascript.db._attrs_by[\"_\"]);\nif((!((m__4485__auto__ == null)))){\nreturn (m__4485__auto__.cljs$core$IFn$_invoke$arity$2 ? m__4485__auto__.cljs$core$IFn$_invoke$arity$2(db,property) : m__4485__auto__.call(null,db,property));\n} else {\nthrow cljs.core.missing_protocol(\"IDB.-attrs-by\",db);\n}\n}\n}\n});\n\n\n\n\n\n\n\n\ndatascript.db.db_transient = (function datascript$db$db_transient(db){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$3(cljs.core.update.cljs$core$IFn$_invoke$arity$3(cljs.core.update.cljs$core$IFn$_invoke$arity$3(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.transient$),new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),cljs.core.transient$),new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),cljs.core.transient$);\n});\ndatascript.db.db_persistent_BANG_ = (function datascript$db$db_persistent_BANG_(db){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$3(cljs.core.update.cljs$core$IFn$_invoke$arity$3(cljs.core.update.cljs$core$IFn$_invoke$arity$3(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.persistent_BANG_),new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),cljs.core.persistent_BANG_),new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),cljs.core.persistent_BANG_);\n});\n\n/**\n* @constructor\n * @implements {cljs.core.IRecord}\n * @implements {cljs.core.IKVReduce}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.ICounted}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.ICloneable}\n * @implements {cljs.core.IPrintWithWriter}\n * @implements {cljs.core.IIterable}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.IMap}\n * @implements {cljs.core.ILookup}\n*/\ndatascript.db.DB = (function (schema,eavt,aevt,avet,max_eid,max_tx,rschema,hash,__meta,__extmap,__hash){\nthis.schema = schema;\nthis.eavt = eavt;\nthis.aevt = aevt;\nthis.avet = avet;\nthis.max_eid = max_eid;\nthis.max_tx = max_tx;\nthis.rschema = rschema;\nthis.hash = hash;\nthis.__meta = __meta;\nthis.__extmap = __extmap;\nthis.__hash = __hash;\nthis.cljs$lang$protocol_mask$partition0$ = 2230716170;\nthis.cljs$lang$protocol_mask$partition1$ = 139264;\n});\n(datascript.db.DB.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__4439__auto__,k__4440__auto__){\nvar self__ = this;\nvar this__4439__auto____$1 = this;\nreturn this__4439__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__4440__auto__,null);\n}));\n\n(datascript.db.DB.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__4441__auto__,k22212,else__4442__auto__){\nvar self__ = this;\nvar this__4441__auto____$1 = this;\nvar G__22216 = k22212;\nvar G__22216__$1 = (((G__22216 instanceof cljs.core.Keyword))?G__22216.fqn:null);\nswitch (G__22216__$1) {\ncase \"schema\":\nreturn self__.schema;\n\nbreak;\ncase \"eavt\":\nreturn self__.eavt;\n\nbreak;\ncase \"aevt\":\nreturn self__.aevt;\n\nbreak;\ncase \"avet\":\nreturn self__.avet;\n\nbreak;\ncase \"max-eid\":\nreturn self__.max_eid;\n\nbreak;\ncase \"max-tx\":\nreturn self__.max_tx;\n\nbreak;\ncase \"rschema\":\nreturn self__.rschema;\n\nbreak;\ncase \"hash\":\nreturn self__.hash;\n\nbreak;\ndefault:\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k22212,else__4442__auto__);\n\n}\n}));\n\n(datascript.db.DB.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__4458__auto__,f__4459__auto__,init__4460__auto__){\nvar self__ = this;\nvar this__4458__auto____$1 = this;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__4461__auto__,p__22217){\nvar vec__22218 = p__22217;\nvar k__4462__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22218,(0),null);\nvar v__4463__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22218,(1),null);\nreturn (f__4459__auto__.cljs$core$IFn$_invoke$arity$3 ? f__4459__auto__.cljs$core$IFn$_invoke$arity$3(ret__4461__auto__,k__4462__auto__,v__4463__auto__) : f__4459__auto__.call(null,ret__4461__auto__,k__4462__auto__,v__4463__auto__));\n}),init__4460__auto__,this__4458__auto____$1);\n}));\n\n(datascript.db.DB.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__4453__auto__,writer__4454__auto__,opts__4455__auto__){\nvar self__ = this;\nvar this__4453__auto____$1 = this;\nvar pr_pair__4456__auto__ = (function (keyval__4457__auto__){\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,cljs.core.pr_writer,\"\",\" \",\"\",opts__4455__auto__,keyval__4457__auto__);\n});\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,pr_pair__4456__auto__,\"#datascript.db.DB{\",\", \",\"}\",opts__4455__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 8, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),self__.schema],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),self__.eavt],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),self__.aevt],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),self__.avet],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),self__.max_eid],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),self__.max_tx],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),self__.rschema],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),self__.hash],null))], null),self__.__extmap));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__22211){\nvar self__ = this;\nvar G__22211__$1 = this;\nreturn (new cljs.core.RecordIter((0),G__22211__$1,8,new cljs.core.PersistentVector(null, 8, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__4437__auto__){\nvar self__ = this;\nvar this__4437__auto____$1 = this;\nreturn self__.__meta;\n}));\n\n(datascript.db.DB.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__4434__auto__){\nvar self__ = this;\nvar this__4434__auto____$1 = this;\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,self__.__extmap,self__.__hash));\n}));\n\n(datascript.db.DB.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__4443__auto__){\nvar self__ = this;\nvar this__4443__auto____$1 = this;\nreturn (8 + cljs.core.count(self__.__extmap));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__4435__auto__){\nvar self__ = this;\nvar this__4435__auto____$1 = this;\nvar h__4297__auto__ = self__.__hash;\nif((!((h__4297__auto__ == null)))){\nreturn h__4297__auto__;\n} else {\nvar h__4297__auto____$1 = (function (coll__4436__auto__){\nreturn (-1515640948 ^ cljs.core.hash_unordered_coll(coll__4436__auto__));\n})(this__4435__auto____$1);\n(self__.__hash = h__4297__auto____$1);\n\nreturn h__4297__auto____$1;\n}\n}));\n\n(datascript.db.DB.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this22213,other22214){\nvar self__ = this;\nvar this22213__$1 = this;\nreturn (((!((other22214 == null)))) && ((this22213__$1.constructor === other22214.constructor)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.schema,other22214.schema)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.eavt,other22214.eavt)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.aevt,other22214.aevt)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.avet,other22214.avet)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.max_eid,other22214.max_eid)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.max_tx,other22214.max_tx)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.rschema,other22214.rschema)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.hash,other22214.hash)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22213__$1.__extmap,other22214.__extmap)));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__4448__auto__,k__4449__auto__){\nvar self__ = this;\nvar this__4448__auto____$1 = this;\nif(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 8, [new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),null,new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),null,new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),null,new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),null,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),null,new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),null,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),null,new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),null], null), null),k__4449__auto__)){\nreturn cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__4448__auto____$1),self__.__meta),k__4449__auto__);\n} else {\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__4449__auto__)),null));\n}\n}));\n\n(datascript.db.DB.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__4446__auto__,k__4447__auto__,G__22211){\nvar self__ = this;\nvar this__4446__auto____$1 = this;\nvar pred__22227 = cljs.core.keyword_identical_QMARK_;\nvar expr__22228 = k__4447__auto__;\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),expr__22228)))){\nreturn (new datascript.db.DB(G__22211,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,G__22211,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,self__.eavt,G__22211,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,G__22211,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,G__22211,self__.max_tx,self__.rschema,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,G__22211,self__.rschema,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,G__22211,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22227.cljs$core$IFn$_invoke$arity$2 ? pred__22227.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),expr__22228) : pred__22227.call(null,new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),expr__22228)))){\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,G__22211,self__.__meta,self__.__extmap,null));\n} else {\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__4447__auto__,G__22211),null));\n}\n}\n}\n}\n}\n}\n}\n}\n}));\n\n(datascript.db.DB.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__4451__auto__){\nvar self__ = this;\nvar this__4451__auto____$1 = this;\nreturn cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 8, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),self__.schema,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),self__.eavt,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),self__.aevt,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),self__.avet,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),self__.max_eid,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),self__.max_tx,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),self__.rschema,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),self__.hash,null))], null),self__.__extmap));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__4438__auto__,G__22211){\nvar self__ = this;\nvar this__4438__auto____$1 = this;\nreturn (new datascript.db.DB(self__.schema,self__.eavt,self__.aevt,self__.avet,self__.max_eid,self__.max_tx,self__.rschema,self__.hash,G__22211,self__.__extmap,self__.__hash));\n}));\n\n(datascript.db.DB.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__4444__auto__,entry__4445__auto__){\nvar self__ = this;\nvar this__4444__auto____$1 = this;\nif(cljs.core.vector_QMARK_(entry__4445__auto__)){\nreturn this__4444__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__4445__auto__,(0)),cljs.core._nth(entry__4445__auto__,(1)));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__4444__auto____$1,entry__4445__auto__);\n}\n}));\n\n(datascript.db.DB.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 8, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"schema\",\"schema\",58529736,null),new cljs.core.Symbol(null,\"eavt\",\"eavt\",974094454,null),new cljs.core.Symbol(null,\"aevt\",\"aevt\",1055383468,null),new cljs.core.Symbol(null,\"avet\",\"avet\",-1270578737,null),new cljs.core.Symbol(null,\"max-eid\",\"max-eid\",-519567694,null),new cljs.core.Symbol(null,\"max-tx\",\"max-tx\",-1534877430,null),new cljs.core.Symbol(null,\"rschema\",\"rschema\",444397473,null),new cljs.core.Symbol(null,\"hash\",\"hash\",1626749931,null)], null);\n}));\n\n(datascript.db.DB.cljs$lang$type = true);\n\n(datascript.db.DB.cljs$lang$ctorPrSeq = (function (this__4482__auto__){\nreturn (new cljs.core.List(null,\"datascript.db/DB\",null,(1),null));\n}));\n\n(datascript.db.DB.cljs$lang$ctorPrWriter = (function (this__4482__auto__,writer__4483__auto__){\nreturn cljs.core._write(writer__4483__auto__,\"datascript.db/DB\");\n}));\n\n/**\n * Positional factory function for datascript.db/DB.\n */\ndatascript.db.__GT_DB = (function datascript$db$__GT_DB(schema,eavt,aevt,avet,max_eid,max_tx,rschema,hash){\nreturn (new datascript.db.DB(schema,eavt,aevt,avet,max_eid,max_tx,rschema,hash,null,null,null));\n});\n\n/**\n * Factory function for datascript.db/DB, taking a map of keywords to field values.\n */\ndatascript.db.map__GT_DB = (function datascript$db$map__GT_DB(G__22215){\nvar extmap__4478__auto__ = (function (){var G__22236 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__22215,new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596)], 0));\nif(cljs.core.record_QMARK_(G__22215)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__22236);\n} else {\nreturn G__22236;\n}\n})();\nreturn (new datascript.db.DB(new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054).cljs$core$IFn$_invoke$arity$1(G__22215),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596).cljs$core$IFn$_invoke$arity$1(G__22215),null,cljs.core.not_empty(extmap__4478__auto__),null));\n});\n\n\n(datascript.db.DB.prototype.clojure$data$Diff$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.clojure$data$Diff$diff_similar$arity$2 = (function (a,b){\nvar a__$1 = this;\nreturn datascript.db.diff_sorted(a__$1.eavt,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073).cljs$core$IFn$_invoke$arity$1(b),datascript.db.cmp_datoms_eav_quick);\n}));\n\n(datascript.db.DB.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (db,w,opts){\nvar db__$1 = this;\nreturn (datascript.db.pr_db.cljs$core$IFn$_invoke$arity$3 ? datascript.db.pr_db.cljs$core$IFn$_invoke$arity$3(db__$1,w,opts) : datascript.db.pr_db.call(null,db__$1,w,opts));\n}));\n\n(datascript.db.DB.prototype.cljs$core$ICounted$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$ICounted$_count$arity$1 = (function (db){\nvar db__$1 = this;\nreturn cljs.core.count(db__$1.eavt);\n}));\n\n(datascript.db.DB.prototype.cljs$core$IReversible$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (db){\nvar db__$1 = this;\nreturn cljs.core._rseq(db__$1.eavt);\n}));\n\n(datascript.db.DB.prototype.cljs$core$IHash$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$IHash$_hash$arity$1 = (function (db){\nvar db__$1 = this;\nreturn (datascript.db.hash_db.cljs$core$IFn$_invoke$arity$1 ? datascript.db.hash_db.cljs$core$IFn$_invoke$arity$1(db__$1) : datascript.db.hash_db.call(null,db__$1));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IEquiv$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (db,other){\nvar db__$1 = this;\nreturn (datascript.db.equiv_db.cljs$core$IFn$_invoke$arity$2 ? datascript.db.equiv_db.cljs$core$IFn$_invoke$arity$2(db__$1,other) : datascript.db.equiv_db.call(null,db__$1,other));\n}));\n\n(datascript.db.DB.prototype.cljs$core$IEditableCollection$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (db){\nvar db__$1 = this;\nreturn datascript.db.db_transient(db__$1);\n}));\n\n(datascript.db.DB.prototype.cljs$core$IEmptyableCollection$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (db){\nvar db__$1 = this;\nreturn cljs.core.with_meta((function (){var G__22245 = db__$1.schema;\nreturn (datascript.db.empty_db.cljs$core$IFn$_invoke$arity$1 ? datascript.db.empty_db.cljs$core$IFn$_invoke$arity$1(G__22245) : datascript.db.empty_db.call(null,G__22245));\n})(),cljs.core.meta(db__$1));\n}));\n\n(datascript.db.DB.prototype.cljs$core$ITransientCollection$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (db,key){\nvar db__$1 = this;\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2(\"datascript.DB/conj! is not supported\",cljs.core.PersistentArrayMap.EMPTY);\n}));\n\n(datascript.db.DB.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (db){\nvar db__$1 = this;\nreturn datascript.db.db_persistent_BANG_(db__$1);\n}));\n\n(datascript.db.DB.prototype.cljs$core$ISeqable$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (db){\nvar db__$1 = this;\nreturn cljs.core._seq(db__$1.eavt);\n}));\n\n(datascript.db.DB.prototype.clojure$data$EqualityPartition$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.clojure$data$EqualityPartition$equality_partition$arity$1 = (function (x){\nvar x__$1 = this;\nreturn new cljs.core.Keyword(\"datascript\",\"db\",\"datascript/db\",-1190971692);\n}));\n\n(datascript.db.DB.prototype.datascript$db$IIndexAccess$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.datascript$db$IIndexAccess$_datoms$arity$3 = (function (db,index,cs){\nvar db__$1 = this;\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(db__$1,index),(datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5 ? datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5(db__$1,index,cs,(0),(536870912)) : datascript.db.components__GT_pattern.call(null,db__$1,index,cs,(0),(536870912))),(datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5 ? datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5(db__$1,index,cs,(2147483647),(2147483647)) : datascript.db.components__GT_pattern.call(null,db__$1,index,cs,(2147483647),(2147483647))));\n}));\n\n(datascript.db.DB.prototype.datascript$db$IIndexAccess$_seek_datoms$arity$3 = (function (db,index,cs){\nvar db__$1 = this;\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(db__$1,index),(datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5 ? datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5(db__$1,index,cs,(0),(536870912)) : datascript.db.components__GT_pattern.call(null,db__$1,index,cs,(0),(536870912))),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),null,null,(2147483647)));\n}));\n\n(datascript.db.DB.prototype.datascript$db$IIndexAccess$_rseek_datoms$arity$3 = (function (db,index,cs){\nvar db__$1 = this;\nreturn me.tonsky.persistent_sorted_set.rslice.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(db__$1,index),(datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5 ? datascript.db.components__GT_pattern.cljs$core$IFn$_invoke$arity$5(db__$1,index,cs,(2147483647),(2147483647)) : datascript.db.components__GT_pattern.call(null,db__$1,index,cs,(2147483647),(2147483647))),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),null,null,(536870912)));\n}));\n\n(datascript.db.DB.prototype.datascript$db$IIndexAccess$_index_range$arity$4 = (function (db,attr,start,end){\nvar db__$1 = this;\nif(cljs.core.truth_((datascript.db.indexing_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.db.indexing_QMARK_.cljs$core$IFn$_invoke$arity$2(db__$1,attr) : datascript.db.indexing_QMARK_.call(null,db__$1,attr)))){\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Attribute \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attr], 0)),\" should be marked as :db/index true\"].join(''),cljs.core.PersistentArrayMap.EMPTY);\n}\n\nvar G__22251_22766 = attr;\nvar G__22252_22767 = (new cljs.core.List(null,new cljs.core.Symbol(null,\"-index-range\",\"-index-range\",898114142,null),(new cljs.core.List(null,new cljs.core.Symbol(null,\"db\",\"db\",-1661185010,null),(new cljs.core.List(null,attr,(new cljs.core.List(null,start,(new cljs.core.List(null,end,null,(1),null)),(2),null)),(3),null)),(4),null)),(5),null));\n(datascript.db.validate_attr.cljs$core$IFn$_invoke$arity$2 ? datascript.db.validate_attr.cljs$core$IFn$_invoke$arity$2(G__22251_22766,G__22252_22767) : datascript.db.validate_attr.call(null,G__22251_22766,G__22252_22767));\n\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(db__$1.avet,(datascript.db.resolve_datom.cljs$core$IFn$_invoke$arity$7 ? datascript.db.resolve_datom.cljs$core$IFn$_invoke$arity$7(db__$1,null,attr,start,null,(0),(536870912)) : datascript.db.resolve_datom.call(null,db__$1,null,attr,start,null,(0),(536870912))),(datascript.db.resolve_datom.cljs$core$IFn$_invoke$arity$7 ? datascript.db.resolve_datom.cljs$core$IFn$_invoke$arity$7(db__$1,null,attr,end,null,(2147483647),(2147483647)) : datascript.db.resolve_datom.call(null,db__$1,null,attr,end,null,(2147483647),(2147483647))));\n}));\n\n(datascript.db.DB.prototype.datascript$db$IDB$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.datascript$db$IDB$_schema$arity$1 = (function (db){\nvar db__$1 = this;\nreturn db__$1.schema;\n}));\n\n(datascript.db.DB.prototype.datascript$db$IDB$_attrs_by$arity$2 = (function (db,property){\nvar db__$1 = this;\nvar fexpr__22257 = db__$1.rschema;\nreturn (fexpr__22257.cljs$core$IFn$_invoke$arity$1 ? fexpr__22257.cljs$core$IFn$_invoke$arity$1(property) : fexpr__22257.call(null,property));\n}));\n\n(datascript.db.DB.prototype.datascript$db$ISearch$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.DB.prototype.datascript$db$ISearch$_search$arity$2 = (function (db,pattern){\nvar db__$1 = this;\nvar vec__22260 = pattern;\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22260,(0),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22260,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22260,(2),null);\nvar tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22260,(3),null);\nvar eavt = db__$1.eavt;\nvar aevt = db__$1.aevt;\nvar avet = db__$1.avet;\nif(cljs.core.truth_(e)){\nif(cljs.core.truth_(a)){\nif((!((v == null)))){\nif(cljs.core.truth_(tx)){\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,v,tx),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,v,tx));\n} else {\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,v,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,v,(2147483647)));\n}\n} else {\nif(cljs.core.truth_(tx)){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null));\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,null,(2147483647))));\n} else {\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,null,(2147483647)));\n}\n}\n} else {\nif((!((v == null)))){\nif(cljs.core.truth_(tx)){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,d.v)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null))));\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(2147483647))));\n} else {\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,d.v);\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(2147483647))));\n}\n} else {\nif(cljs.core.truth_(tx)){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null));\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(2147483647))));\n} else {\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,null,null,(2147483647)));\n}\n}\n}\n} else {\nif(cljs.core.truth_(a)){\nif((!((v == null)))){\nif(cljs.core.truth_(tx)){\nif(cljs.core.truth_((datascript.db.indexing_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.db.indexing_QMARK_.cljs$core$IFn$_invoke$arity$2(db__$1,a) : datascript.db.indexing_QMARK_.call(null,db__$1,a)))){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null));\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(avet,datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),a,v,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),a,v,(2147483647))));\n} else {\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,d.v)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null))));\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(aevt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),a,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),a,null,(2147483647))));\n}\n} else {\nif(cljs.core.truth_((datascript.db.indexing_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.db.indexing_QMARK_.cljs$core$IFn$_invoke$arity$2(db__$1,a) : datascript.db.indexing_QMARK_.call(null,db__$1,a)))){\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(avet,datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),a,v,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),a,v,(2147483647)));\n} else {\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,d.v);\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(aevt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),a,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),a,null,(2147483647))));\n}\n}\n} else {\nif(cljs.core.truth_(tx)){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null));\n}),me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(aevt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),a,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),a,null,(2147483647))));\n} else {\nreturn me.tonsky.persistent_sorted_set.slice.cljs$core$IFn$_invoke$arity$3(aevt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),a,null,(536870912)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((2147483647),a,null,(2147483647)));\n}\n}\n} else {\nif((!((v == null)))){\nif(cljs.core.truth_(tx)){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,d.v)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null))));\n}),eavt);\n} else {\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,d.v);\n}),eavt);\n}\n} else {\nif(cljs.core.truth_(tx)){\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(tx,d.datascript$db$IDatom$datom_tx$arity$1(null));\n}),eavt);\n} else {\nreturn eavt;\n}\n}\n}\n}\n}));\ndatascript.db.db_QMARK_ = (function datascript$db$db_QMARK_(x){\nif((((!((x == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === x.datascript$db$ISearch$))))?true:(((!x.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.ISearch,x):false)):cljs.core.native_satisfies_QMARK_(datascript.db.ISearch,x))){\nif((((!((x == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === x.datascript$db$IIndexAccess$))))?true:(((!x.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(datascript.db.IIndexAccess,x):false)):cljs.core.native_satisfies_QMARK_(datascript.db.IIndexAccess,x))){\nif((!((x == null)))){\nif(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.datascript$db$IDB$)))){\nreturn true;\n} else {\nif((!x.cljs$lang$protocol_mask$partition$)){\nreturn cljs.core.native_satisfies_QMARK_(datascript.db.IDB,x);\n} else {\nreturn false;\n}\n}\n} else {\nreturn cljs.core.native_satisfies_QMARK_(datascript.db.IDB,x);\n}\n} else {\nreturn false;\n}\n} else {\nreturn false;\n}\n});\n\n/**\n* @constructor\n * @implements {cljs.core.IRecord}\n * @implements {cljs.core.IKVReduce}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.ICounted}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.ICloneable}\n * @implements {cljs.core.IPrintWithWriter}\n * @implements {cljs.core.IIterable}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.IMap}\n * @implements {cljs.core.ILookup}\n*/\ndatascript.db.FilteredDB = (function (unfiltered_db,pred,hash,__meta,__extmap,__hash){\nthis.unfiltered_db = unfiltered_db;\nthis.pred = pred;\nthis.hash = hash;\nthis.__meta = __meta;\nthis.__extmap = __extmap;\nthis.__hash = __hash;\nthis.cljs$lang$protocol_mask$partition0$ = 2230716170;\nthis.cljs$lang$protocol_mask$partition1$ = 139264;\n});\n(datascript.db.FilteredDB.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__4439__auto__,k__4440__auto__){\nvar self__ = this;\nvar this__4439__auto____$1 = this;\nreturn this__4439__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__4440__auto__,null);\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__4441__auto__,k22279,else__4442__auto__){\nvar self__ = this;\nvar this__4441__auto____$1 = this;\nvar G__22283 = k22279;\nvar G__22283__$1 = (((G__22283 instanceof cljs.core.Keyword))?G__22283.fqn:null);\nswitch (G__22283__$1) {\ncase \"unfiltered-db\":\nreturn self__.unfiltered_db;\n\nbreak;\ncase \"pred\":\nreturn self__.pred;\n\nbreak;\ncase \"hash\":\nreturn self__.hash;\n\nbreak;\ndefault:\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k22279,else__4442__auto__);\n\n}\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__4458__auto__,f__4459__auto__,init__4460__auto__){\nvar self__ = this;\nvar this__4458__auto____$1 = this;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__4461__auto__,p__22284){\nvar vec__22285 = p__22284;\nvar k__4462__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22285,(0),null);\nvar v__4463__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22285,(1),null);\nreturn (f__4459__auto__.cljs$core$IFn$_invoke$arity$3 ? f__4459__auto__.cljs$core$IFn$_invoke$arity$3(ret__4461__auto__,k__4462__auto__,v__4463__auto__) : f__4459__auto__.call(null,ret__4461__auto__,k__4462__auto__,v__4463__auto__));\n}),init__4460__auto__,this__4458__auto____$1);\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__4453__auto__,writer__4454__auto__,opts__4455__auto__){\nvar self__ = this;\nvar this__4453__auto____$1 = this;\nvar pr_pair__4456__auto__ = (function (keyval__4457__auto__){\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,cljs.core.pr_writer,\"\",\" \",\"\",opts__4455__auto__,keyval__4457__auto__);\n});\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,pr_pair__4456__auto__,\"#datascript.db.FilteredDB{\",\", \",\"}\",opts__4455__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),self__.unfiltered_db],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),self__.pred],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),self__.hash],null))], null),self__.__extmap));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__22278){\nvar self__ = this;\nvar G__22278__$1 = this;\nreturn (new cljs.core.RecordIter((0),G__22278__$1,3,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__4437__auto__){\nvar self__ = this;\nvar this__4437__auto____$1 = this;\nreturn self__.__meta;\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__4434__auto__){\nvar self__ = this;\nvar this__4434__auto____$1 = this;\nreturn (new datascript.db.FilteredDB(self__.unfiltered_db,self__.pred,self__.hash,self__.__meta,self__.__extmap,self__.__hash));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__4443__auto__){\nvar self__ = this;\nvar this__4443__auto____$1 = this;\nreturn (3 + cljs.core.count(self__.__extmap));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__4435__auto__){\nvar self__ = this;\nvar this__4435__auto____$1 = this;\nvar h__4297__auto__ = self__.__hash;\nif((!((h__4297__auto__ == null)))){\nreturn h__4297__auto__;\n} else {\nvar h__4297__auto____$1 = (function (coll__4436__auto__){\nreturn (-351969977 ^ cljs.core.hash_unordered_coll(coll__4436__auto__));\n})(this__4435__auto____$1);\n(self__.__hash = h__4297__auto____$1);\n\nreturn h__4297__auto____$1;\n}\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this22280,other22281){\nvar self__ = this;\nvar this22280__$1 = this;\nreturn (((!((other22281 == null)))) && ((this22280__$1.constructor === other22281.constructor)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22280__$1.unfiltered_db,other22281.unfiltered_db)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22280__$1.pred,other22281.pred)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22280__$1.hash,other22281.hash)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22280__$1.__extmap,other22281.__extmap)));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__4448__auto__,k__4449__auto__){\nvar self__ = this;\nvar this__4448__auto____$1 = this;\nif(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),null,new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),null,new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),null], null), null),k__4449__auto__)){\nreturn cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__4448__auto____$1),self__.__meta),k__4449__auto__);\n} else {\nreturn (new datascript.db.FilteredDB(self__.unfiltered_db,self__.pred,self__.hash,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__4449__auto__)),null));\n}\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__4446__auto__,k__4447__auto__,G__22278){\nvar self__ = this;\nvar this__4446__auto____$1 = this;\nvar pred__22291 = cljs.core.keyword_identical_QMARK_;\nvar expr__22292 = k__4447__auto__;\nif(cljs.core.truth_((pred__22291.cljs$core$IFn$_invoke$arity$2 ? pred__22291.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),expr__22292) : pred__22291.call(null,new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),expr__22292)))){\nreturn (new datascript.db.FilteredDB(G__22278,self__.pred,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22291.cljs$core$IFn$_invoke$arity$2 ? pred__22291.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),expr__22292) : pred__22291.call(null,new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),expr__22292)))){\nreturn (new datascript.db.FilteredDB(self__.unfiltered_db,G__22278,self__.hash,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22291.cljs$core$IFn$_invoke$arity$2 ? pred__22291.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),expr__22292) : pred__22291.call(null,new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),expr__22292)))){\nreturn (new datascript.db.FilteredDB(self__.unfiltered_db,self__.pred,G__22278,self__.__meta,self__.__extmap,null));\n} else {\nreturn (new datascript.db.FilteredDB(self__.unfiltered_db,self__.pred,self__.hash,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__4447__auto__,G__22278),null));\n}\n}\n}\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__4451__auto__){\nvar self__ = this;\nvar this__4451__auto____$1 = this;\nreturn cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),self__.unfiltered_db,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),self__.pred,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),self__.hash,null))], null),self__.__extmap));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__4438__auto__,G__22278){\nvar self__ = this;\nvar this__4438__auto____$1 = this;\nreturn (new datascript.db.FilteredDB(self__.unfiltered_db,self__.pred,self__.hash,G__22278,self__.__extmap,self__.__hash));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__4444__auto__,entry__4445__auto__){\nvar self__ = this;\nvar this__4444__auto____$1 = this;\nif(cljs.core.vector_QMARK_(entry__4445__auto__)){\nreturn this__4444__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__4445__auto__,(0)),cljs.core._nth(entry__4445__auto__,(1)));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__4444__auto____$1,entry__4445__auto__);\n}\n}));\n\n(datascript.db.FilteredDB.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"unfiltered-db\",\"unfiltered-db\",276811136,null),new cljs.core.Symbol(null,\"pred\",\"pred\",-727012372,null),new cljs.core.Symbol(null,\"hash\",\"hash\",1626749931,null)], null);\n}));\n\n(datascript.db.FilteredDB.cljs$lang$type = true);\n\n(datascript.db.FilteredDB.cljs$lang$ctorPrSeq = (function (this__4482__auto__){\nreturn (new cljs.core.List(null,\"datascript.db/FilteredDB\",null,(1),null));\n}));\n\n(datascript.db.FilteredDB.cljs$lang$ctorPrWriter = (function (this__4482__auto__,writer__4483__auto__){\nreturn cljs.core._write(writer__4483__auto__,\"datascript.db/FilteredDB\");\n}));\n\n/**\n * Positional factory function for datascript.db/FilteredDB.\n */\ndatascript.db.__GT_FilteredDB = (function datascript$db$__GT_FilteredDB(unfiltered_db,pred,hash){\nreturn (new datascript.db.FilteredDB(unfiltered_db,pred,hash,null,null,null));\n});\n\n/**\n * Factory function for datascript.db/FilteredDB, taking a map of keywords to field values.\n */\ndatascript.db.map__GT_FilteredDB = (function datascript$db$map__GT_FilteredDB(G__22282){\nvar extmap__4478__auto__ = (function (){var G__22294 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__22282,new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596)], 0));\nif(cljs.core.record_QMARK_(G__22282)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__22294);\n} else {\nreturn G__22294;\n}\n})();\nreturn (new datascript.db.FilteredDB(new cljs.core.Keyword(null,\"unfiltered-db\",\"unfiltered-db\",-1363720391).cljs$core$IFn$_invoke$arity$1(G__22282),new cljs.core.Keyword(null,\"pred\",\"pred\",1927423397).cljs$core$IFn$_invoke$arity$1(G__22282),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596).cljs$core$IFn$_invoke$arity$1(G__22282),null,cljs.core.not_empty(extmap__4478__auto__),null));\n});\n\n\n(datascript.db.FilteredDB.prototype.cljs$core$ILookup$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (_,___$1){\nvar ___$2 = this;\nthrow (new Error(\"-lookup is not supported on FilteredDB\"));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (_,___$1,___$2){\nvar ___$3 = this;\nthrow (new Error(\"-lookup is not supported on FilteredDB\"));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (db,w,opts){\nvar db__$1 = this;\nreturn (datascript.db.pr_db.cljs$core$IFn$_invoke$arity$3 ? datascript.db.pr_db.cljs$core$IFn$_invoke$arity$3(db__$1,w,opts) : datascript.db.pr_db.call(null,db__$1,w,opts));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ICounted$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$ICounted$_count$arity$1 = (function (db){\nvar db__$1 = this;\nreturn cljs.core.count(datascript.db._datoms(db__$1,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IHash$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$IHash$_hash$arity$1 = (function (db){\nvar db__$1 = this;\nreturn (datascript.db.hash_fdb.cljs$core$IFn$_invoke$arity$1 ? datascript.db.hash_fdb.cljs$core$IFn$_invoke$arity$1(db__$1) : datascript.db.hash_fdb.call(null,db__$1));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IEquiv$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (db,other){\nvar db__$1 = this;\nreturn (datascript.db.equiv_db.cljs$core$IFn$_invoke$arity$2 ? datascript.db.equiv_db.cljs$core$IFn$_invoke$arity$2(db__$1,other) : datascript.db.equiv_db.call(null,db__$1,other));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IEmptyableCollection$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (_){\nvar ___$1 = this;\nthrow (new Error(\"-empty is not supported on FilteredDB\"));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IAssociative$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (_,___$1){\nvar ___$2 = this;\nthrow (new Error(\"-contains-key? is not supported on FilteredDB\"));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (_,___$1,___$2){\nvar ___$3 = this;\nthrow (new Error(\"-assoc is not supported on FilteredDB\"));\n}));\n\n(datascript.db.FilteredDB.prototype.cljs$core$ISeqable$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (db){\nvar db__$1 = this;\nreturn cljs.core.seq(datascript.db._datoms(db__$1,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY));\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$IIndexAccess$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.datascript$db$IIndexAccess$_datoms$arity$3 = (function (db,index,cs){\nvar db__$1 = this;\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2(db__$1.pred,datascript.db._datoms(db__$1.unfiltered_db,index,cs));\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$IIndexAccess$_seek_datoms$arity$3 = (function (db,index,cs){\nvar db__$1 = this;\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2(db__$1.pred,datascript.db._seek_datoms(db__$1.unfiltered_db,index,cs));\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$IIndexAccess$_rseek_datoms$arity$3 = (function (db,index,cs){\nvar db__$1 = this;\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2(db__$1.pred,datascript.db._rseek_datoms(db__$1.unfiltered_db,index,cs));\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$IIndexAccess$_index_range$arity$4 = (function (db,attr,start,end){\nvar db__$1 = this;\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2(db__$1.pred,datascript.db._index_range(db__$1.unfiltered_db,attr,start,end));\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$IDB$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.datascript$db$IDB$_schema$arity$1 = (function (db){\nvar db__$1 = this;\nreturn datascript.db._schema(db__$1.unfiltered_db);\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$IDB$_attrs_by$arity$2 = (function (db,property){\nvar db__$1 = this;\nreturn datascript.db._attrs_by(db__$1.unfiltered_db,property);\n}));\n\n(datascript.db.FilteredDB.prototype.datascript$db$ISearch$ = cljs.core.PROTOCOL_SENTINEL);\n\n(datascript.db.FilteredDB.prototype.datascript$db$ISearch$_search$arity$2 = (function (db,pattern){\nvar db__$1 = this;\nreturn cljs.core.filter.cljs$core$IFn$_invoke$arity$2(db__$1.pred,datascript.db._search(db__$1.unfiltered_db,pattern));\n}));\ndatascript.db.attr__GT_properties = (function datascript$db$attr__GT_properties(k,v){\nvar G__22299 = v;\nvar G__22299__$1 = (((G__22299 instanceof cljs.core.Keyword))?G__22299.fqn:null);\nswitch (G__22299__$1) {\ncase \"db.unique/identity\":\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722),new cljs.core.Keyword(\"db\",\"index\",\"db/index\",-1531680669)], null);\n\nbreak;\ncase \"db.unique/value\":\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db.unique\",\"value\",\"db.unique/value\",276903088),new cljs.core.Keyword(\"db\",\"index\",\"db/index\",-1531680669)], null);\n\nbreak;\ncase \"db.cardinality/many\":\nreturn new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db.cardinality\",\"many\",\"db.cardinality/many\",772806234)], null);\n\nbreak;\ncase \"db.type/ref\":\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079),new cljs.core.Keyword(\"db\",\"index\",\"db/index\",-1531680669)], null);\n\nbreak;\ndefault:\nif(v === true){\nvar G__22301 = k;\nvar G__22301__$1 = (((G__22301 instanceof cljs.core.Keyword))?G__22301.fqn:null);\nswitch (G__22301__$1) {\ncase \"db/isComponent\":\nreturn new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398)], null);\n\nbreak;\ncase \"db/index\":\nreturn new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"index\",\"db/index\",-1531680669)], null);\n\nbreak;\ndefault:\nreturn cljs.core.PersistentVector.EMPTY;\n\n}\n} else {\nreturn null;\n}\n\n}\n});\ndatascript.db.rschema = (function datascript$db$rschema(schema){\nreturn cljs.core.reduce_kv((function (m,attr,keys__GT_values){\nreturn cljs.core.reduce_kv((function (m__$1,key,value){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m__$2,prop){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m__$2,prop,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(m__$2,prop,cljs.core.PersistentHashSet.EMPTY),attr));\n}),m__$1,datascript.db.attr__GT_properties(key,value));\n}),m,keys__GT_values);\n}),cljs.core.PersistentArrayMap.EMPTY,schema);\n});\ndatascript.db.validate_schema_key = (function datascript$db$validate_schema_key(a,k,v,expected){\nif((((v == null)) || (cljs.core.contains_QMARK_(expected,v)))){\nreturn null;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad attribute specification for \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.PersistentArrayMap.createAsIfByAssoc([a,cljs.core.PersistentArrayMap.createAsIfByAssoc([k,v])])], 0)),\", expected one of \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(expected)].join(''),new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"schema\",\"validation\",\"schema/validation\",1178447161),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),a,new cljs.core.Keyword(null,\"key\",\"key\",-1516042587),k,new cljs.core.Keyword(null,\"value\",\"value\",305978217),v], null));\n}\n});\ndatascript.db.validate_schema = (function datascript$db$validate_schema(schema){\nvar seq__22302 = cljs.core.seq(schema);\nvar chunk__22303 = null;\nvar count__22304 = (0);\nvar i__22305 = (0);\nwhile(true){\nif((i__22305 < count__22304)){\nvar vec__22312 = chunk__22303.cljs$core$IIndexed$_nth$arity$2(null,i__22305);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22312,(0),null);\nvar kv = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22312,(1),null);\nvar comp_QMARK__22858 = new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398).cljs$core$IFn$_invoke$arity$2(kv,false);\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398),new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [true,null,false,null], null), null));\n\nif(cljs.core.truth_((function (){var and__4174__auto__ = comp_QMARK__22858;\nif(cljs.core.truth_(and__4174__auto__)){\nreturn cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(\"db\",\"valueType\",\"db/valueType\",1827971944).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079));\n} else {\nreturn and__4174__auto__;\n}\n})())){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad attribute specification for \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(a),\": {:db/isComponent true} should also have {:db/valueType :db.type/ref}\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"schema\",\"validation\",\"schema/validation\",1178447161),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),a,new cljs.core.Keyword(null,\"key\",\"key\",-1516042587),new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398)], null));\n} else {\n}\n\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722),null,new cljs.core.Keyword(\"db.unique\",\"value\",\"db.unique/value\",276903088),null], null), null));\n\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"valueType\",\"db/valueType\",1827971944),new cljs.core.Keyword(\"db\",\"valueType\",\"db/valueType\",1827971944).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079),null], null), null));\n\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"cardinality\",\"db/cardinality\",-104975659),new cljs.core.Keyword(\"db\",\"cardinality\",\"db/cardinality\",-104975659).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(\"db.cardinality\",\"many\",\"db.cardinality/many\",772806234),null,new cljs.core.Keyword(\"db.cardinality\",\"one\",\"db.cardinality/one\",1428352190),null], null), null));\n\n\nvar G__22862 = seq__22302;\nvar G__22863 = chunk__22303;\nvar G__22864 = count__22304;\nvar G__22865 = (i__22305 + (1));\nseq__22302 = G__22862;\nchunk__22303 = G__22863;\ncount__22304 = G__22864;\ni__22305 = G__22865;\ncontinue;\n} else {\nvar temp__5735__auto__ = cljs.core.seq(seq__22302);\nif(temp__5735__auto__){\nvar seq__22302__$1 = temp__5735__auto__;\nif(cljs.core.chunked_seq_QMARK_(seq__22302__$1)){\nvar c__4609__auto__ = cljs.core.chunk_first(seq__22302__$1);\nvar G__22866 = cljs.core.chunk_rest(seq__22302__$1);\nvar G__22867 = c__4609__auto__;\nvar G__22868 = cljs.core.count(c__4609__auto__);\nvar G__22869 = (0);\nseq__22302 = G__22866;\nchunk__22303 = G__22867;\ncount__22304 = G__22868;\ni__22305 = G__22869;\ncontinue;\n} else {\nvar vec__22315 = cljs.core.first(seq__22302__$1);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22315,(0),null);\nvar kv = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22315,(1),null);\nvar comp_QMARK__22871 = new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398).cljs$core$IFn$_invoke$arity$2(kv,false);\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398),new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [true,null,false,null], null), null));\n\nif(cljs.core.truth_((function (){var and__4174__auto__ = comp_QMARK__22871;\nif(cljs.core.truth_(and__4174__auto__)){\nreturn cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(\"db\",\"valueType\",\"db/valueType\",1827971944).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079));\n} else {\nreturn and__4174__auto__;\n}\n})())){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad attribute specification for \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(a),\": {:db/isComponent true} should also have {:db/valueType :db.type/ref}\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"schema\",\"validation\",\"schema/validation\",1178447161),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),a,new cljs.core.Keyword(null,\"key\",\"key\",-1516042587),new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398)], null));\n} else {\n}\n\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722),null,new cljs.core.Keyword(\"db.unique\",\"value\",\"db.unique/value\",276903088),null], null), null));\n\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"valueType\",\"db/valueType\",1827971944),new cljs.core.Keyword(\"db\",\"valueType\",\"db/valueType\",1827971944).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079),null], null), null));\n\ndatascript.db.validate_schema_key(a,new cljs.core.Keyword(\"db\",\"cardinality\",\"db/cardinality\",-104975659),new cljs.core.Keyword(\"db\",\"cardinality\",\"db/cardinality\",-104975659).cljs$core$IFn$_invoke$arity$1(kv),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(\"db.cardinality\",\"many\",\"db.cardinality/many\",772806234),null,new cljs.core.Keyword(\"db.cardinality\",\"one\",\"db.cardinality/one\",1428352190),null], null), null));\n\n\nvar G__22887 = cljs.core.next(seq__22302__$1);\nvar G__22888 = null;\nvar G__22889 = (0);\nvar G__22890 = (0);\nseq__22302 = G__22887;\nchunk__22303 = G__22888;\ncount__22304 = G__22889;\ni__22305 = G__22890;\ncontinue;\n}\n} else {\nreturn null;\n}\n}\nbreak;\n}\n});\ndatascript.db.empty_db = (function datascript$db$empty_db(var_args){\nvar G__22327 = arguments.length;\nswitch (G__22327) {\ncase 0:\nreturn datascript.db.empty_db.cljs$core$IFn$_invoke$arity$0();\n\nbreak;\ncase 1:\nreturn datascript.db.empty_db.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(datascript.db.empty_db.cljs$core$IFn$_invoke$arity$0 = (function (){\nreturn datascript.db.empty_db.cljs$core$IFn$_invoke$arity$1(null);\n}));\n\n(datascript.db.empty_db.cljs$core$IFn$_invoke$arity$1 = (function (schema){\n\ndatascript.db.validate_schema(schema);\n\nreturn datascript.db.map__GT_DB(new cljs.core.PersistentArrayMap(null, 8, [new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),schema,new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),datascript.db.rschema(cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"ident\",\"db/ident\",-737096),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722)], null)], null),schema], 0))),new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),me.tonsky.persistent_sorted_set.sorted_set_by.cljs$core$IFn$_invoke$arity$1(datascript.db.cmp_datoms_eavt),new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),me.tonsky.persistent_sorted_set.sorted_set_by.cljs$core$IFn$_invoke$arity$1(datascript.db.cmp_datoms_aevt),new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),me.tonsky.persistent_sorted_set.sorted_set_by.cljs$core$IFn$_invoke$arity$1(datascript.db.cmp_datoms_avet),new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),(0),new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),(536870912),new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0))], null));\n}));\n\n(datascript.db.empty_db.cljs$lang$maxFixedArity = 1);\n\ndatascript.db.init_max_eid = (function datascript$db$init_max_eid(eavt){\nvar or__4185__auto__ = new cljs.core.Keyword(null,\"e\",\"e\",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(me.tonsky.persistent_sorted_set.rslice.cljs$core$IFn$_invoke$arity$3(eavt,datascript.db.datom.cljs$core$IFn$_invoke$arity$4(((536870912) - (1)),null,null,(2147483647)),datascript.db.datom.cljs$core$IFn$_invoke$arity$4((0),null,null,(536870912)))));\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn (0);\n}\n});\ndatascript.db.init_db = (function datascript$db$init_db(var_args){\nvar G__22335 = arguments.length;\nswitch (G__22335) {\ncase 1:\nreturn datascript.db.init_db.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));\n\nbreak;\ncase 2:\nreturn datascript.db.init_db.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(datascript.db.init_db.cljs$core$IFn$_invoke$arity$1 = (function (datoms){\nreturn datascript.db.init_db.cljs$core$IFn$_invoke$arity$2(datoms,null);\n}));\n\n(datascript.db.init_db.cljs$core$IFn$_invoke$arity$2 = (function (datoms,schema){\ndatascript.db.validate_schema(schema);\n\nvar rschema = datascript.db.rschema(cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"ident\",\"db/ident\",-737096),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388),new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722)], null)], null),schema], 0)));\nvar indexed = new cljs.core.Keyword(\"db\",\"index\",\"db/index\",-1531680669).cljs$core$IFn$_invoke$arity$1(rschema);\nvar arr = (function (){var G__22336 = datoms;\nif((!(me.tonsky.persistent_sorted_set.arrays.array_QMARK_(datoms)))){\nreturn me.tonsky.persistent_sorted_set.arrays.into_array(G__22336);\n} else {\nreturn G__22336;\n}\n})();\nvar _ = me.tonsky.persistent_sorted_set.arrays.asort(arr,datascript.db.cmp_datoms_eavt_quick);\nvar eavt = me.tonsky.persistent_sorted_set.from_sorted_array(datascript.db.cmp_datoms_eavt,arr);\nvar ___$1 = me.tonsky.persistent_sorted_set.arrays.asort(arr,datascript.db.cmp_datoms_aevt_quick);\nvar aevt = me.tonsky.persistent_sorted_set.from_sorted_array(datascript.db.cmp_datoms_aevt,arr);\nvar avet_datoms = cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (d){\nreturn cljs.core.contains_QMARK_(indexed,d.a);\n}),datoms);\nvar avet_arr = cljs.core.to_array(avet_datoms);\nvar ___$2 = me.tonsky.persistent_sorted_set.arrays.asort(avet_arr,datascript.db.cmp_datoms_avet_quick);\nvar avet = me.tonsky.persistent_sorted_set.from_sorted_array(datascript.db.cmp_datoms_avet,avet_arr);\nvar max_eid = datascript.db.init_max_eid(eavt);\nvar max_tx = cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (d){\nreturn d.datascript$db$IDatom$datom_tx$arity$1(null);\n})),cljs.core.max,(536870912),eavt);\nreturn datascript.db.map__GT_DB(new cljs.core.PersistentArrayMap(null, 8, [new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791),schema,new cljs.core.Keyword(null,\"rschema\",\"rschema\",-1196134054),rschema,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),eavt,new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059),aevt,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),avet,new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),max_eid,new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339),max_tx,new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0))], null));\n}));\n\n(datascript.db.init_db.cljs$lang$maxFixedArity = 2);\n\ndatascript.db.equiv_db_index = (function datascript$db$equiv_db_index(x,y){\nvar xs = cljs.core.seq(x);\nvar ys = cljs.core.seq(y);\nwhile(true){\nif((xs == null)){\nreturn (ys == null);\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.first(xs),cljs.core.first(ys))){\nvar G__22910 = cljs.core.next(xs);\nvar G__22911 = cljs.core.next(ys);\nxs = G__22910;\nys = G__22911;\ncontinue;\n} else {\nreturn false;\n\n}\n}\nbreak;\n}\n});\ndatascript.db.hash_db = (function datascript$db$hash_db(db){\nvar h = cljs.core.deref(db.hash);\nif((h === (0))){\nreturn cljs.core.reset_BANG_(db.hash,datascript.db.combine_hashes(cljs.core.hash(db.schema),cljs.core.hash(db.eavt)));\n} else {\nreturn h;\n}\n});\ndatascript.db.hash_fdb = (function datascript$db$hash_fdb(db){\nvar h = cljs.core.deref(db.hash);\nvar datoms = (function (){var or__4185__auto__ = datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn cljs.core.PersistentHashSet.EMPTY;\n}\n})();\nif((h === (0))){\nvar datoms__$1 = (function (){var or__4185__auto__ = datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn cljs.core.PersistentHashSet.EMPTY;\n}\n})();\nreturn cljs.core.reset_BANG_(db.hash,datascript.db.combine_hashes(cljs.core.hash(datascript.db._schema(db)),cljs.core.hash_unordered_coll(datoms__$1)));\n} else {\nreturn h;\n}\n});\ndatascript.db.equiv_db = (function datascript$db$equiv_db(db,other){\nreturn (((((other instanceof datascript.db.DB)) || ((other instanceof datascript.db.FilteredDB)))) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(datascript.db._schema(db),datascript.db._schema(other))) && (datascript.db.equiv_db_index(datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY),datascript.db._datoms(other,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY))));\n});\ndatascript.db.pr_db = (function datascript$db$pr_db(db,w,opts){\ncljs.core._write(w,\"#datascript/DB {\");\n\ncljs.core._write(w,\":schema \");\n\ncljs.core.pr_writer(datascript.db._schema(db),w,opts);\n\ncljs.core._write(w,\", :datoms \");\n\ncljs.core.pr_sequential_writer(w,(function (d,w__$1,opts__$1){\nreturn cljs.core.pr_sequential_writer(w__$1,cljs.core.pr_writer,\"[\",\" \",\"]\",opts__$1,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [d.e,d.a,d.v,datascript.db.datom_tx(d)], null));\n}),\"[\",\" \",\"]\",opts,datascript.db._datoms(db,new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073),cljs.core.PersistentVector.EMPTY));\n\nreturn cljs.core._write(w,\"}\");\n});\ndatascript.db.db_from_reader = (function datascript$db$db_from_reader(p__22363){\nvar map__22364 = p__22363;\nvar map__22364__$1 = (((((!((map__22364 == null))))?(((((map__22364.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__22364.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__22364):map__22364);\nvar schema = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__22364__$1,new cljs.core.Keyword(null,\"schema\",\"schema\",-1582001791));\nvar datoms = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__22364__$1,new cljs.core.Keyword(null,\"datoms\",\"datoms\",-290874434));\nreturn datascript.db.init_db.cljs$core$IFn$_invoke$arity$2(cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__22371){\nvar vec__22372 = p__22371;\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22372,(0),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22372,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22372,(2),null);\nvar tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22372,(3),null);\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e,a,v,tx);\n}),datoms),schema);\n});\n\n\ndatascript.db.resolve_datom = (function datascript$db$resolve_datom(db,e,a,v,t,default_e,default_tx){\nif(cljs.core.truth_(a)){\nvar G__22379_22919 = a;\nvar G__22380_22920 = (new cljs.core.List(null,new cljs.core.Symbol(null,\"resolve-datom\",\"resolve-datom\",-294110827,null),(new cljs.core.List(null,new cljs.core.Symbol(null,\"db\",\"db\",-1661185010,null),(new cljs.core.List(null,e,(new cljs.core.List(null,a,(new cljs.core.List(null,v,(new cljs.core.List(null,t,null,(1),null)),(2),null)),(3),null)),(4),null)),(5),null)),(6),null));\n(datascript.db.validate_attr.cljs$core$IFn$_invoke$arity$2 ? datascript.db.validate_attr.cljs$core$IFn$_invoke$arity$2(G__22379_22919,G__22380_22920) : datascript.db.validate_attr.call(null,G__22379_22919,G__22380_22920));\n} else {\n}\n\nreturn datascript.db.datom.cljs$core$IFn$_invoke$arity$4((function (){var or__4185__auto__ = (datascript.db.entid_some.cljs$core$IFn$_invoke$arity$2 ? datascript.db.entid_some.cljs$core$IFn$_invoke$arity$2(db,e) : datascript.db.entid_some.call(null,db,e));\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn default_e;\n}\n})(),a,(cljs.core.truth_((((!((v == null))))?(datascript.db.ref_QMARK_.cljs$core$IFn$_invoke$arity$2 ? datascript.db.ref_QMARK_.cljs$core$IFn$_invoke$arity$2(db,a) : datascript.db.ref_QMARK_.call(null,db,a)):false))?(datascript.db.entid_strict.cljs$core$IFn$_invoke$arity$2 ? datascript.db.entid_strict.cljs$core$IFn$_invoke$arity$2(db,v) : datascript.db.entid_strict.call(null,db,v)):v),(function (){var or__4185__auto__ = (datascript.db.entid_some.cljs$core$IFn$_invoke$arity$2 ? datascript.db.entid_some.cljs$core$IFn$_invoke$arity$2(db,t) : datascript.db.entid_some.call(null,db,t));\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn default_tx;\n}\n})());\n});\ndatascript.db.components__GT_pattern = (function datascript$db$components__GT_pattern(db,index,p__22381,default_e,default_tx){\nvar vec__22382 = p__22381;\nvar c0 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22382,(0),null);\nvar c1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22382,(1),null);\nvar c2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22382,(2),null);\nvar c3 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22382,(3),null);\nvar G__22385 = index;\nvar G__22385__$1 = (((G__22385 instanceof cljs.core.Keyword))?G__22385.fqn:null);\nswitch (G__22385__$1) {\ncase \"eavt\":\nreturn datascript.db.resolve_datom(db,c0,c1,c2,c3,default_e,default_tx);\n\nbreak;\ncase \"aevt\":\nreturn datascript.db.resolve_datom(db,c1,c0,c2,c3,default_e,default_tx);\n\nbreak;\ncase \"avet\":\nreturn datascript.db.resolve_datom(db,c2,c0,c1,c3,default_e,default_tx);\n\nbreak;\ndefault:\nthrow (new Error([\"No matching clause: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__22385__$1)].join('')));\n\n}\n});\n\n/**\n* @constructor\n * @implements {cljs.core.IRecord}\n * @implements {cljs.core.IKVReduce}\n * @implements {cljs.core.IEquiv}\n * @implements {cljs.core.IHash}\n * @implements {cljs.core.ICollection}\n * @implements {cljs.core.ICounted}\n * @implements {cljs.core.ISeqable}\n * @implements {cljs.core.IMeta}\n * @implements {cljs.core.ICloneable}\n * @implements {cljs.core.IPrintWithWriter}\n * @implements {cljs.core.IIterable}\n * @implements {cljs.core.IWithMeta}\n * @implements {cljs.core.IAssociative}\n * @implements {cljs.core.IMap}\n * @implements {cljs.core.ILookup}\n*/\ndatascript.db.TxReport = (function (db_before,db_after,tx_data,tempids,tx_meta,__meta,__extmap,__hash){\nthis.db_before = db_before;\nthis.db_after = db_after;\nthis.tx_data = tx_data;\nthis.tempids = tempids;\nthis.tx_meta = tx_meta;\nthis.__meta = __meta;\nthis.__extmap = __extmap;\nthis.__hash = __hash;\nthis.cljs$lang$protocol_mask$partition0$ = 2230716170;\nthis.cljs$lang$protocol_mask$partition1$ = 139264;\n});\n(datascript.db.TxReport.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__4439__auto__,k__4440__auto__){\nvar self__ = this;\nvar this__4439__auto____$1 = this;\nreturn this__4439__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__4440__auto__,null);\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__4441__auto__,k22387,else__4442__auto__){\nvar self__ = this;\nvar this__4441__auto____$1 = this;\nvar G__22391 = k22387;\nvar G__22391__$1 = (((G__22391 instanceof cljs.core.Keyword))?G__22391.fqn:null);\nswitch (G__22391__$1) {\ncase \"db-before\":\nreturn self__.db_before;\n\nbreak;\ncase \"db-after\":\nreturn self__.db_after;\n\nbreak;\ncase \"tx-data\":\nreturn self__.tx_data;\n\nbreak;\ncase \"tempids\":\nreturn self__.tempids;\n\nbreak;\ncase \"tx-meta\":\nreturn self__.tx_meta;\n\nbreak;\ndefault:\nreturn cljs.core.get.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k22387,else__4442__auto__);\n\n}\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (this__4458__auto__,f__4459__auto__,init__4460__auto__){\nvar self__ = this;\nvar this__4458__auto____$1 = this;\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret__4461__auto__,p__22392){\nvar vec__22393 = p__22392;\nvar k__4462__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22393,(0),null);\nvar v__4463__auto__ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22393,(1),null);\nreturn (f__4459__auto__.cljs$core$IFn$_invoke$arity$3 ? f__4459__auto__.cljs$core$IFn$_invoke$arity$3(ret__4461__auto__,k__4462__auto__,v__4463__auto__) : f__4459__auto__.call(null,ret__4461__auto__,k__4462__auto__,v__4463__auto__));\n}),init__4460__auto__,this__4458__auto____$1);\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__4453__auto__,writer__4454__auto__,opts__4455__auto__){\nvar self__ = this;\nvar this__4453__auto____$1 = this;\nvar pr_pair__4456__auto__ = (function (keyval__4457__auto__){\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,cljs.core.pr_writer,\"\",\" \",\"\",opts__4455__auto__,keyval__4457__auto__);\n});\nreturn cljs.core.pr_sequential_writer(writer__4454__auto__,pr_pair__4456__auto__,\"#datascript.db.TxReport{\",\", \",\"}\",opts__4455__auto__,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),self__.db_before],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),self__.db_after],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),self__.tx_data],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),self__.tempids],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194),self__.tx_meta],null))], null),self__.__extmap));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__22386){\nvar self__ = this;\nvar G__22386__$1 = this;\nreturn (new cljs.core.RecordIter((0),G__22386__$1,5,new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator(self__.__extmap):cljs.core.nil_iter())));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__4437__auto__){\nvar self__ = this;\nvar this__4437__auto____$1 = this;\nreturn self__.__meta;\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__4434__auto__){\nvar self__ = this;\nvar this__4434__auto____$1 = this;\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,self__.tx_data,self__.tempids,self__.tx_meta,self__.__meta,self__.__extmap,self__.__hash));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__4443__auto__){\nvar self__ = this;\nvar this__4443__auto____$1 = this;\nreturn (5 + cljs.core.count(self__.__extmap));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__4435__auto__){\nvar self__ = this;\nvar this__4435__auto____$1 = this;\nvar h__4297__auto__ = self__.__hash;\nif((!((h__4297__auto__ == null)))){\nreturn h__4297__auto__;\n} else {\nvar h__4297__auto____$1 = (function (coll__4436__auto__){\nreturn (-2022644885 ^ cljs.core.hash_unordered_coll(coll__4436__auto__));\n})(this__4435__auto____$1);\n(self__.__hash = h__4297__auto____$1);\n\nreturn h__4297__auto____$1;\n}\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this22388,other22389){\nvar self__ = this;\nvar this22388__$1 = this;\nreturn (((!((other22389 == null)))) && ((this22388__$1.constructor === other22389.constructor)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22388__$1.db_before,other22389.db_before)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22388__$1.db_after,other22389.db_after)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22388__$1.tx_data,other22389.tx_data)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22388__$1.tempids,other22389.tempids)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22388__$1.tx_meta,other22389.tx_meta)) && (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(this22388__$1.__extmap,other22389.__extmap)));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__4448__auto__,k__4449__auto__){\nvar self__ = this;\nvar this__4448__auto____$1 = this;\nif(cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),null,new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),null,new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),null,new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),null,new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194),null], null), null),k__4449__auto__)){\nreturn cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(cljs.core._with_meta(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,this__4448__auto____$1),self__.__meta),k__4449__auto__);\n} else {\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,self__.tx_data,self__.tempids,self__.tx_meta,self__.__meta,cljs.core.not_empty(cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.__extmap,k__4449__auto__)),null));\n}\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__4446__auto__,k__4447__auto__,G__22386){\nvar self__ = this;\nvar this__4446__auto____$1 = this;\nvar pred__22404 = cljs.core.keyword_identical_QMARK_;\nvar expr__22405 = k__4447__auto__;\nif(cljs.core.truth_((pred__22404.cljs$core$IFn$_invoke$arity$2 ? pred__22404.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),expr__22405) : pred__22404.call(null,new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),expr__22405)))){\nreturn (new datascript.db.TxReport(G__22386,self__.db_after,self__.tx_data,self__.tempids,self__.tx_meta,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22404.cljs$core$IFn$_invoke$arity$2 ? pred__22404.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),expr__22405) : pred__22404.call(null,new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),expr__22405)))){\nreturn (new datascript.db.TxReport(self__.db_before,G__22386,self__.tx_data,self__.tempids,self__.tx_meta,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22404.cljs$core$IFn$_invoke$arity$2 ? pred__22404.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),expr__22405) : pred__22404.call(null,new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),expr__22405)))){\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,G__22386,self__.tempids,self__.tx_meta,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22404.cljs$core$IFn$_invoke$arity$2 ? pred__22404.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),expr__22405) : pred__22404.call(null,new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),expr__22405)))){\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,self__.tx_data,G__22386,self__.tx_meta,self__.__meta,self__.__extmap,null));\n} else {\nif(cljs.core.truth_((pred__22404.cljs$core$IFn$_invoke$arity$2 ? pred__22404.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194),expr__22405) : pred__22404.call(null,new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194),expr__22405)))){\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,self__.tx_data,self__.tempids,G__22386,self__.__meta,self__.__extmap,null));\n} else {\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,self__.tx_data,self__.tempids,self__.tx_meta,self__.__meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.__extmap,k__4447__auto__,G__22386),null));\n}\n}\n}\n}\n}\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__4451__auto__){\nvar self__ = this;\nvar this__4451__auto____$1 = this;\nreturn cljs.core.seq(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),self__.db_before,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),self__.db_after,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),self__.tx_data,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),self__.tempids,null)),(new cljs.core.MapEntry(new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194),self__.tx_meta,null))], null),self__.__extmap));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__4438__auto__,G__22386){\nvar self__ = this;\nvar this__4438__auto____$1 = this;\nreturn (new datascript.db.TxReport(self__.db_before,self__.db_after,self__.tx_data,self__.tempids,self__.tx_meta,G__22386,self__.__extmap,self__.__hash));\n}));\n\n(datascript.db.TxReport.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__4444__auto__,entry__4445__auto__){\nvar self__ = this;\nvar this__4444__auto____$1 = this;\nif(cljs.core.vector_QMARK_(entry__4445__auto__)){\nreturn this__4444__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth(entry__4445__auto__,(0)),cljs.core._nth(entry__4445__auto__,(1)));\n} else {\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,this__4444__auto____$1,entry__4445__auto__);\n}\n}));\n\n(datascript.db.TxReport.getBasis = (function (){\nreturn new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,\"db-before\",\"db-before\",1086839991,null),new cljs.core.Symbol(null,\"db-after\",\"db-after\",1068646861,null),new cljs.core.Symbol(null,\"tx-data\",\"tx-data\",-1720276008,null),new cljs.core.Symbol(null,\"tempids\",\"tempids\",-886926680,null),new cljs.core.Symbol(null,\"tx-meta\",\"tx-meta\",-1495152575,null)], null);\n}));\n\n(datascript.db.TxReport.cljs$lang$type = true);\n\n(datascript.db.TxReport.cljs$lang$ctorPrSeq = (function (this__4482__auto__){\nreturn (new cljs.core.List(null,\"datascript.db/TxReport\",null,(1),null));\n}));\n\n(datascript.db.TxReport.cljs$lang$ctorPrWriter = (function (this__4482__auto__,writer__4483__auto__){\nreturn cljs.core._write(writer__4483__auto__,\"datascript.db/TxReport\");\n}));\n\n/**\n * Positional factory function for datascript.db/TxReport.\n */\ndatascript.db.__GT_TxReport = (function datascript$db$__GT_TxReport(db_before,db_after,tx_data,tempids,tx_meta){\nreturn (new datascript.db.TxReport(db_before,db_after,tx_data,tempids,tx_meta,null,null,null));\n});\n\n/**\n * Factory function for datascript.db/TxReport, taking a map of keywords to field values.\n */\ndatascript.db.map__GT_TxReport = (function datascript$db$map__GT_TxReport(G__22390){\nvar extmap__4478__auto__ = (function (){var G__22409 = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$variadic(G__22390,new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194)], 0));\nif(cljs.core.record_QMARK_(G__22390)){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,G__22409);\n} else {\nreturn G__22409;\n}\n})();\nreturn (new datascript.db.TxReport(new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536).cljs$core$IFn$_invoke$arity$1(G__22390),new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666).cljs$core$IFn$_invoke$arity$1(G__22390),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761).cljs$core$IFn$_invoke$arity$1(G__22390),new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089).cljs$core$IFn$_invoke$arity$1(G__22390),new cljs.core.Keyword(null,\"tx-meta\",\"tx-meta\",1159283194).cljs$core$IFn$_invoke$arity$1(G__22390),null,cljs.core.not_empty(extmap__4478__auto__),null));\n});\n\ndatascript.db.is_attr_QMARK_ = (function datascript$db$is_attr_QMARK_(db,attr,property){\nreturn cljs.core.contains_QMARK_(datascript.db._attrs_by(db,property),attr);\n});\ndatascript.db.multival_QMARK_ = (function datascript$db$multival_QMARK_(db,attr){\nreturn datascript.db.is_attr_QMARK_(db,attr,new cljs.core.Keyword(\"db.cardinality\",\"many\",\"db.cardinality/many\",772806234));\n});\ndatascript.db.ref_QMARK_ = (function datascript$db$ref_QMARK_(db,attr){\nreturn datascript.db.is_attr_QMARK_(db,attr,new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079));\n});\ndatascript.db.component_QMARK_ = (function datascript$db$component_QMARK_(db,attr){\nreturn datascript.db.is_attr_QMARK_(db,attr,new cljs.core.Keyword(\"db\",\"isComponent\",\"db/isComponent\",423352398));\n});\ndatascript.db.indexing_QMARK_ = (function datascript$db$indexing_QMARK_(db,attr){\nreturn datascript.db.is_attr_QMARK_(db,attr,new cljs.core.Keyword(\"db\",\"index\",\"db/index\",-1531680669));\n});\ndatascript.db.entid = (function datascript$db$entid(db,eid){\nwhile(true){\n\nif(((typeof eid === 'number') && ((eid > (0))))){\nreturn eid;\n} else {\nif(cljs.core.sequential_QMARK_(eid)){\nvar vec__22422 = eid;\nvar attr = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22422,(0),null);\nvar value = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22422,(1),null);\nif(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(eid),(2))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Lookup ref should contain 2 elements: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"lookup-ref\",\"syntax\",\"lookup-ref/syntax\",-317304012),new cljs.core.Keyword(null,\"entity-id\",\"entity-id\",1485898093),eid], null));\n} else {\nif((!(datascript.db.is_attr_QMARK_(db,attr,new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388))))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Lookup ref attribute should be marked as :db/unique: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"lookup-ref\",\"unique\",\"lookup-ref/unique\",-960647710),new cljs.core.Keyword(null,\"entity-id\",\"entity-id\",1485898093),eid], null));\n} else {\nif((value == null)){\nreturn null;\n} else {\nreturn new cljs.core.Keyword(null,\"e\",\"e\",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),eid)));\n\n}\n}\n}\n} else {\nif(cljs.core.array_QMARK_(eid)){\nvar G__22945 = db;\nvar G__22946 = cljs.core.array_seq.cljs$core$IFn$_invoke$arity$1(eid);\ndb = G__22945;\neid = G__22946;\ncontinue;\n} else {\nif((eid instanceof cljs.core.Keyword)){\nreturn new cljs.core.Keyword(null,\"e\",\"e\",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"ident\",\"db/ident\",-737096),eid], null))));\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Expected number or lookup ref for entity id, got \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"entity-id\",\"syntax\",\"entity-id/syntax\",1921317045),new cljs.core.Keyword(null,\"entity-id\",\"entity-id\",1485898093),eid], null));\n\n}\n}\n}\n}\nbreak;\n}\n});\ndatascript.db.entid_strict = (function datascript$db$entid_strict(db,eid){\nvar or__4185__auto__ = datascript.db.entid(db,eid);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Nothing found for entity id \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"entity-id\",\"missing\",\"entity-id/missing\",1234588374),new cljs.core.Keyword(null,\"entity-id\",\"entity-id\",1485898093),eid], null));\n}\n});\ndatascript.db.entid_some = (function datascript$db$entid_some(db,eid){\nif(cljs.core.truth_(eid)){\nreturn datascript.db.entid_strict(db,eid);\n} else {\nreturn null;\n}\n});\ndatascript.db.validate_datom = (function datascript$db$validate_datom(db,datom){\nif(cljs.core.truth_((function (){var and__4174__auto__ = datom.datascript$db$IDatom$datom_added$arity$1(null);\nif(cljs.core.truth_(and__4174__auto__)){\nreturn datascript.db.is_attr_QMARK_(db,datom.a,new cljs.core.Keyword(\"db\",\"unique\",\"db/unique\",329396388));\n} else {\nreturn and__4174__auto__;\n}\n})())){\nvar temp__5739__auto__ = cljs.core.not_empty(datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [datom.a,datom.v], null)));\nif((temp__5739__auto__ == null)){\nreturn null;\n} else {\nvar found = temp__5739__auto__;\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Cannot add \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datom], 0)),\" because of unique constraint: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([found], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"unique\",\"transact/unique\",-940992320),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),datom.a,new cljs.core.Keyword(null,\"datom\",\"datom\",-371556090),datom], null));\n}\n} else {\nreturn null;\n}\n});\ndatascript.db.validate_eid = (function datascript$db$validate_eid(eid,at){\nif(typeof eid === 'number'){\nreturn null;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad entity id \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([eid], 0)),\" at \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0)),\", expected number\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"entity-id\",\"entity-id\",1485898093),eid,new cljs.core.Keyword(null,\"context\",\"context\",-830191113),at], null));\n}\n});\ndatascript.db.validate_attr = (function datascript$db$validate_attr(attr,at){\nif((((attr instanceof cljs.core.Keyword)) || (typeof attr === 'string'))){\nreturn null;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad entity attribute \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attr], 0)),\" at \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0)),\", expected keyword or string\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),attr,new cljs.core.Keyword(null,\"context\",\"context\",-830191113),at], null));\n}\n});\ndatascript.db.validate_val = (function datascript$db$validate_val(v,at){\nif((v == null)){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Cannot store nil as a value at \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([at], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"value\",\"value\",305978217),v,new cljs.core.Keyword(null,\"context\",\"context\",-830191113),at], null));\n} else {\nreturn null;\n}\n});\ndatascript.db.current_tx = (function datascript$db$current_tx(report){\nreturn (cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(report,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"db-before\",\"db-before\",-553691536),new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339)], null)) + (1));\n});\ndatascript.db.next_eid = (function datascript$db$next_eid(db){\nreturn (new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075).cljs$core$IFn$_invoke$arity$1(db) + (1));\n});\ndatascript.db.tx_id_QMARK_ = (function datascript$db$tx_id_QMARK_(e){\nreturn ((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(e,new cljs.core.Keyword(\"db\",\"current-tx\",\"db/current-tx\",1600722132))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(e,\":db/current-tx\")) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(e,\"datomic.tx\")) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(e,\"datascript.tx\")));\n});\ndatascript.db.tempid_QMARK_ = (function datascript$db$tempid_QMARK_(x){\nreturn ((((typeof x === 'number') && ((x < (0))))) || (typeof x === 'string'));\n});\ndatascript.db.new_eid_QMARK_ = (function datascript$db$new_eid_QMARK_(db,eid){\nreturn (((eid > new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075).cljs$core$IFn$_invoke$arity$1(db))) && ((eid < (536870912))));\n});\ndatascript.db.advance_max_eid = (function datascript$db$advance_max_eid(db,eid){\nvar G__22449 = db;\nif(datascript.db.new_eid_QMARK_(db,eid)){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(G__22449,new cljs.core.Keyword(null,\"max-eid\",\"max-eid\",2134868075),eid);\n} else {\nreturn G__22449;\n}\n});\ndatascript.db.allocate_eid = (function datascript$db$allocate_eid(var_args){\nvar G__22452 = arguments.length;\nswitch (G__22452) {\ncase 2:\nreturn datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));\n\nbreak;\ncase 3:\nreturn datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));\n\nbreak;\ndefault:\nthrow (new Error([\"Invalid arity: \",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));\n\n}\n});\n\n(datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$2 = (function (report,eid){\nreturn cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(report,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666)], null),datascript.db.advance_max_eid,eid);\n}));\n\n(datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3 = (function (report,e,eid){\nvar G__22453 = report;\nvar G__22453__$1 = ((datascript.db.tx_id_QMARK_(e))?cljs.core.assoc_in(G__22453,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),e], null),eid):G__22453);\nvar G__22453__$2 = ((datascript.db.tempid_QMARK_(e))?cljs.core.assoc_in(G__22453__$1,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),e], null),eid):G__22453__$1);\nvar G__22453__$3 = (((((!(datascript.db.tempid_QMARK_(e)))) && (datascript.db.new_eid_QMARK_(new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666).cljs$core$IFn$_invoke$arity$1(report),eid))))?cljs.core.assoc_in(G__22453__$2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),eid], null),eid):G__22453__$2);\nreturn cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(G__22453__$3,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666)], null),datascript.db.advance_max_eid,eid);\n\n}));\n\n(datascript.db.allocate_eid.cljs$lang$maxFixedArity = 3);\n\ndatascript.db.with_datom = (function datascript$db$with_datom(db,datom){\ndatascript.db.validate_datom(db,datom);\n\nvar indexing_QMARK_ = datascript.db.indexing_QMARK_(db,datom.a);\nif(cljs.core.truth_(datom.datascript$db$IDatom$datom_added$arity$1(null))){\nvar G__22456 = db;\nvar G__22456__$1 = cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(G__22456,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073)], null),me.tonsky.persistent_sorted_set.conj,datom,datascript.db.cmp_datoms_eavt_quick)\n;\nvar G__22456__$2 = cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(G__22456__$1,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059)], null),me.tonsky.persistent_sorted_set.conj,datom,datascript.db.cmp_datoms_aevt_quick)\n;\nvar G__22456__$3 = ((indexing_QMARK_)?cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(G__22456__$2,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032)], null),me.tonsky.persistent_sorted_set.conj,datom,datascript.db.cmp_datoms_avet_quick):G__22456__$2);\nvar G__22456__$4 = datascript.db.advance_max_eid(G__22456__$3,datom.e)\n;\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(G__22456__$4,new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0)));\n\n} else {\nvar temp__5737__auto__ = cljs.core.first(datascript.db._search(db,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [datom.e,datom.a,datom.v], null)));\nif((temp__5737__auto__ == null)){\nreturn db;\n} else {\nvar removing = temp__5737__auto__;\nvar G__22463 = db;\nvar G__22463__$1 = cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(G__22463,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"eavt\",\"eavt\",-666437073)], null),me.tonsky.persistent_sorted_set.disj,removing,datascript.db.cmp_datoms_eavt_quick)\n;\nvar G__22463__$2 = cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(G__22463__$1,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"aevt\",\"aevt\",-585148059)], null),me.tonsky.persistent_sorted_set.disj,removing,datascript.db.cmp_datoms_aevt_quick)\n;\nvar G__22463__$3 = ((indexing_QMARK_)?cljs.core.update_in.cljs$core$IFn$_invoke$arity$5(G__22463__$2,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032)], null),me.tonsky.persistent_sorted_set.disj,removing,datascript.db.cmp_datoms_avet_quick):G__22463__$2);\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(G__22463__$3,new cljs.core.Keyword(null,\"hash\",\"hash\",-13781596),cljs.core.atom.cljs$core$IFn$_invoke$arity$1((0)));\n\n}\n}\n});\ndatascript.db.transact_report = (function datascript$db$transact_report(report,datom){\nreturn cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(report,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666)], null),datascript.db.with_datom,datom),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761)], null),cljs.core.conj,datom);\n});\ndatascript.db.reverse_ref_QMARK_ = (function datascript$db$reverse_ref_QMARK_(attr){\nif((attr instanceof cljs.core.Keyword)){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"_\",cljs.core.nth.cljs$core$IFn$_invoke$arity$2(cljs.core.name(attr),(0)));\n} else {\nif(typeof attr === 'string'){\nreturn cljs.core.boolean$(cljs.core.re_matches(/(?:([^\\/]+)\\/)?_([^\\/]+)/,attr));\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad attribute type: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attr], 0)),\", expected keyword or string\"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),attr], null));\n\n}\n}\n});\ndatascript.db.reverse_ref = (function datascript$db$reverse_ref(attr){\nif((attr instanceof cljs.core.Keyword)){\nif(datascript.db.reverse_ref_QMARK_(attr)){\nreturn cljs.core.keyword.cljs$core$IFn$_invoke$arity$2(cljs.core.namespace(attr),cljs.core.subs.cljs$core$IFn$_invoke$arity$2(cljs.core.name(attr),(1)));\n} else {\nreturn cljs.core.keyword.cljs$core$IFn$_invoke$arity$2(cljs.core.namespace(attr),[\"_\",cljs.core.name(attr)].join(''));\n}\n} else {\nif(typeof attr === 'string'){\nvar vec__22471 = cljs.core.re_matches(/(?:([^\\/]+)\\/)?([^\\/]+)/,attr);\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22471,(0),null);\nvar ns = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22471,(1),null);\nvar name = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22471,(2),null);\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(\"_\",cljs.core.nth.cljs$core$IFn$_invoke$arity$2(name,(0)))){\nif(cljs.core.truth_(ns)){\nreturn [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns),\"/\",cljs.core.subs.cljs$core$IFn$_invoke$arity$2(name,(1))].join('');\n} else {\nreturn cljs.core.subs.cljs$core$IFn$_invoke$arity$2(name,(1));\n}\n} else {\nif(cljs.core.truth_(ns)){\nreturn [cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns),\"/_\",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name)].join('');\n} else {\nreturn [\"_\",cljs.core.str.cljs$core$IFn$_invoke$arity$1(name)].join('');\n}\n}\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad attribute type: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([attr], 0)),\", expected keyword or string\"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),attr], null));\n\n}\n}\n});\ndatascript.db.check_upsert_conflict = (function datascript$db$check_upsert_conflict(entity,acc){\nvar vec__22476 = acc;\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22476,(0),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22476,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22476,(2),null);\nvar _e = new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098).cljs$core$IFn$_invoke$arity$1(entity);\nif((((_e == null)) || (datascript.db.tempid_QMARK_(_e)) || ((acc == null)) || ((_e === e)))){\nreturn acc;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Conflicting upsert: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [a,v], null)], 0)),\" resolves to \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e], 0)),\", but entity already has :db/id \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([_e], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"upsert\",\"transact/upsert\",412688078),new cljs.core.Keyword(null,\"entity\",\"entity\",-450970276),entity,new cljs.core.Keyword(null,\"assertion\",\"assertion\",-1645134882),acc], null));\n}\n});\ndatascript.db.upsert_reduce_fn = (function datascript$db$upsert_reduce_fn(db,eav,a,v){\nvar e = new cljs.core.Keyword(null,\"e\",\"e\",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [a,v], null))));\nif((e == null)){\nreturn eav;\n} else {\nif((eav == null)){\nreturn new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [e,a,v], null);\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$2(eav,(0)),e)){\nreturn eav;\n} else {\nvar vec__22486 = eav;\nvar _e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22486,(0),null);\nvar _a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22486,(1),null);\nvar _v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22486,(2),null);\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Conflicting upserts: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [_a,_v], null)], 0)),\" resolves to \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([_e], 0)),\", but \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [a,v], null)], 0)),\" resolves to \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"upsert\",\"transact/upsert\",412688078),new cljs.core.Keyword(null,\"assertion\",\"assertion\",-1645134882),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [e,a,v], null),new cljs.core.Keyword(null,\"conflict\",\"conflict\",1978796605),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [_e,_a,_v], null)], null));\n\n}\n}\n}\n});\ndatascript.db.upsert_eid = (function datascript$db$upsert_eid(db,entity){\nvar temp__5739__auto__ = cljs.core.not_empty(datascript.db._attrs_by(db,new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722)));\nif((temp__5739__auto__ == null)){\nreturn null;\n} else {\nvar idents = temp__5739__auto__;\nreturn cljs.core.first(datascript.db.check_upsert_conflict(entity,cljs.core.reduce_kv((function (eav,a,v){\nif((!(cljs.core.contains_QMARK_(idents,a)))){\nreturn eav;\n} else {\nif(((datascript.db.multival_QMARK_(db,a)) && (((me.tonsky.persistent_sorted_set.arrays.array_QMARK_(v)) || (((cljs.core.coll_QMARK_(v)) && ((!(cljs.core.map_QMARK_(v)))))))))){\nreturn cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__22493_SHARP_,p2__22494_SHARP_){\nreturn datascript.db.upsert_reduce_fn(db,p1__22493_SHARP_,a,p2__22494_SHARP_);\n}),eav,v);\n} else {\nreturn datascript.db.upsert_reduce_fn(db,eav,a,v);\n\n}\n}\n}),null,entity)));\n}\n});\ndatascript.db.maybe_wrap_multival = (function datascript$db$maybe_wrap_multival(db,a,vs){\nif((!(((datascript.db.reverse_ref_QMARK_(a)) || (datascript.db.multival_QMARK_(db,a)))))){\nreturn new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [vs], null);\n} else {\nif((!(((me.tonsky.persistent_sorted_set.arrays.array_QMARK_(vs)) || (((cljs.core.coll_QMARK_(vs)) && ((!(cljs.core.map_QMARK_(vs)))))))))){\nreturn new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [vs], null);\n} else {\nif(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.count(vs),(2))) && (datascript.db.is_attr_QMARK_(db,cljs.core.first(vs),new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722))))){\nreturn new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [vs], null);\n} else {\nreturn vs;\n\n}\n}\n}\n});\ndatascript.db.explode = (function datascript$db$explode(db,entity){\nvar eid = new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098).cljs$core$IFn$_invoke$arity$1(entity);\nvar iter__4582__auto__ = (function datascript$db$explode_$_iter__22500(s__22501){\nreturn (new cljs.core.LazySeq(null,(function (){\nvar s__22501__$1 = s__22501;\nwhile(true){\nvar temp__5735__auto__ = cljs.core.seq(s__22501__$1);\nif(temp__5735__auto__){\nvar xs__6292__auto__ = temp__5735__auto__;\nvar vec__22507 = cljs.core.first(xs__6292__auto__);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22507,(0),null);\nvar vs = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22507,(1),null);\nif(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(a,new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098))){\nvar _ = datascript.db.validate_attr(a,cljs.core.PersistentArrayMap.createAsIfByAssoc([new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),eid,a,vs]));\nvar reverse_QMARK_ = datascript.db.reverse_ref_QMARK_(a);\nvar straight_a = ((reverse_QMARK_)?datascript.db.reverse_ref(a):a);\nvar ___$1 = ((((reverse_QMARK_) && ((!(datascript.db.ref_QMARK_(db,straight_a))))))?(function(){throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad attribute \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([a], 0)),\": reverse attribute name requires {:db/valueType :db.type/ref} in schema\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"attribute\",\"attribute\",-2074029119),a,new cljs.core.Keyword(null,\"context\",\"context\",-830191113),cljs.core.PersistentArrayMap.createAsIfByAssoc([new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),eid,a,vs])], null))})():null);\nvar iterys__4578__auto__ = ((function (s__22501__$1,_,reverse_QMARK_,straight_a,___$1,vec__22507,a,vs,xs__6292__auto__,temp__5735__auto__,eid){\nreturn (function datascript$db$explode_$_iter__22500_$_iter__22502(s__22503){\nreturn (new cljs.core.LazySeq(null,((function (s__22501__$1,_,reverse_QMARK_,straight_a,___$1,vec__22507,a,vs,xs__6292__auto__,temp__5735__auto__,eid){\nreturn (function (){\nvar s__22503__$1 = s__22503;\nwhile(true){\nvar temp__5735__auto____$1 = cljs.core.seq(s__22503__$1);\nif(temp__5735__auto____$1){\nvar s__22503__$2 = temp__5735__auto____$1;\nif(cljs.core.chunked_seq_QMARK_(s__22503__$2)){\nvar c__4580__auto__ = cljs.core.chunk_first(s__22503__$2);\nvar size__4581__auto__ = cljs.core.count(c__4580__auto__);\nvar b__22505 = cljs.core.chunk_buffer(size__4581__auto__);\nif((function (){var i__22504 = (0);\nwhile(true){\nif((i__22504 < size__4581__auto__)){\nvar v = cljs.core._nth(c__4580__auto__,i__22504);\ncljs.core.chunk_append(b__22505,((((datascript.db.ref_QMARK_(db,straight_a)) && (cljs.core.map_QMARK_(v))))?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(v,datascript.db.reverse_ref(a),eid):((reverse_QMARK_)?new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),v,straight_a,eid], null):new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),eid,straight_a,v], null))));\n\nvar G__22965 = (i__22504 + (1));\ni__22504 = G__22965;\ncontinue;\n} else {\nreturn true;\n}\nbreak;\n}\n})()){\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__22505),datascript$db$explode_$_iter__22500_$_iter__22502(cljs.core.chunk_rest(s__22503__$2)));\n} else {\nreturn cljs.core.chunk_cons(cljs.core.chunk(b__22505),null);\n}\n} else {\nvar v = cljs.core.first(s__22503__$2);\nreturn cljs.core.cons(((((datascript.db.ref_QMARK_(db,straight_a)) && (cljs.core.map_QMARK_(v))))?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(v,datascript.db.reverse_ref(a),eid):((reverse_QMARK_)?new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),v,straight_a,eid], null):new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),eid,straight_a,v], null))),datascript$db$explode_$_iter__22500_$_iter__22502(cljs.core.rest(s__22503__$2)));\n}\n} else {\nreturn null;\n}\nbreak;\n}\n});})(s__22501__$1,_,reverse_QMARK_,straight_a,___$1,vec__22507,a,vs,xs__6292__auto__,temp__5735__auto__,eid))\n,null,null));\n});})(s__22501__$1,_,reverse_QMARK_,straight_a,___$1,vec__22507,a,vs,xs__6292__auto__,temp__5735__auto__,eid))\n;\nvar fs__4579__auto__ = cljs.core.seq(iterys__4578__auto__(datascript.db.maybe_wrap_multival(db,a,vs)));\nif(fs__4579__auto__){\nreturn cljs.core.concat.cljs$core$IFn$_invoke$arity$2(fs__4579__auto__,datascript$db$explode_$_iter__22500(cljs.core.rest(s__22501__$1)));\n} else {\nvar G__22967 = cljs.core.rest(s__22501__$1);\ns__22501__$1 = G__22967;\ncontinue;\n}\n} else {\nvar G__22968 = cljs.core.rest(s__22501__$1);\ns__22501__$1 = G__22968;\ncontinue;\n}\n} else {\nreturn null;\n}\nbreak;\n}\n}),null,null));\n});\nreturn iter__4582__auto__(entity);\n});\ndatascript.db.transact_add = (function datascript$db$transact_add(report,p__22514){\nvar vec__22515 = p__22514;\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22515,(0),null);\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22515,(1),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22515,(2),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22515,(3),null);\nvar tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22515,(4),null);\nvar ent = vec__22515;\ndatascript.db.validate_attr(a,ent);\n\ndatascript.db.validate_val(v,ent);\n\nvar tx__$1 = (function (){var or__4185__auto__ = tx;\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.db.current_tx(report);\n}\n})();\nvar db = new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666).cljs$core$IFn$_invoke$arity$1(report);\nvar e__$1 = datascript.db.entid_strict(db,e);\nvar v__$1 = ((datascript.db.ref_QMARK_(db,a))?datascript.db.entid_strict(db,v):v);\nvar new_datom = datascript.db.datom.cljs$core$IFn$_invoke$arity$4(e__$1,a,v__$1,tx__$1);\nif(datascript.db.multival_QMARK_(db,a)){\nif(cljs.core.empty_QMARK_(datascript.db._search(db,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [e__$1,a,v__$1], null)))){\nreturn datascript.db.transact_report(report,new_datom);\n} else {\nreturn report;\n}\n} else {\nvar temp__5737__auto__ = cljs.core.first(datascript.db._search(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [e__$1,a], null)));\nif((temp__5737__auto__ == null)){\nreturn datascript.db.transact_report(report,new_datom);\n} else {\nvar old_datom = temp__5737__auto__;\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(old_datom.v,v__$1)){\nreturn report;\n} else {\nreturn datascript.db.transact_report(datascript.db.transact_report(report,datascript.db.datom.cljs$core$IFn$_invoke$arity$5(e__$1,a,old_datom.v,tx__$1,false)),new_datom);\n}\n}\n}\n});\ndatascript.db.transact_retract_datom = (function datascript$db$transact_retract_datom(report,d){\nvar tx = datascript.db.current_tx(report);\nreturn datascript.db.transact_report(report,datascript.db.datom.cljs$core$IFn$_invoke$arity$5(d.e,d.a,d.v,tx,false));\n});\ndatascript.db.retract_components = (function datascript$db$retract_components(db,datoms){\nreturn cljs.core.into.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentHashSet.EMPTY,cljs.core.comp.cljs$core$IFn$_invoke$arity$2(cljs.core.filter.cljs$core$IFn$_invoke$arity$1((function (d){\nreturn datascript.db.component_QMARK_(db,d.a);\n})),cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (d){\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db.fn\",\"retractEntity\",\"db.fn/retractEntity\",-1423535441),d.v], null);\n}))),datoms);\n});\ndatascript.db.retry_with_tempid = (function datascript$db$retry_with_tempid(initial_report,report,es,tempid,upserted_eid){\nif(cljs.core.contains_QMARK_(new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089).cljs$core$IFn$_invoke$arity$1(initial_report),tempid)){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Conflicting upsert: \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([tempid], 0)),\" resolves\",\" both to \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([upserted_eid], 0)),\" and \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(initial_report,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),tempid], null))], 0))].join(''),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"upsert\",\"transact/upsert\",412688078)], null));\n} else {\nvar tempids_SINGLEQUOTE_ = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089).cljs$core$IFn$_invoke$arity$1(report),tempid,upserted_eid);\nvar report_SINGLEQUOTE_ = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(initial_report,new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),tempids_SINGLEQUOTE_);\nreturn (datascript.db.transact_tx_data.cljs$core$IFn$_invoke$arity$2 ? datascript.db.transact_tx_data.cljs$core$IFn$_invoke$arity$2(report_SINGLEQUOTE_,es) : datascript.db.transact_tx_data.call(null,report_SINGLEQUOTE_,es));\n}\n});\ndatascript.db.builtin_fn_QMARK_ = new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 8, [new cljs.core.Keyword(\"db.fn\",\"call\",\"db.fn/call\",-151594418),null,new cljs.core.Keyword(\"db\",\"cas\",\"db/cas\",-451542322),null,new cljs.core.Keyword(\"db.fn\",\"retractEntity\",\"db.fn/retractEntity\",-1423535441),null,new cljs.core.Keyword(\"db\",\"retractEntity\",\"db/retractEntity\",-1452737935),null,new cljs.core.Keyword(\"db\",\"retract\",\"db/retract\",-1549825231),null,new cljs.core.Keyword(\"db.fn\",\"retractAttribute\",\"db.fn/retractAttribute\",937402164),null,new cljs.core.Keyword(\"db.fn\",\"cas\",\"db.fn/cas\",-379352172),null,new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),null], null), null);\ndatascript.db.transact_tx_data = (function datascript$db$transact_tx_data(initial_report,initial_es){\nif((((initial_es == null)) || (cljs.core.sequential_QMARK_(initial_es)))){\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad transaction data \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([initial_es], 0)),\", expected sequential collection\"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),initial_es], null));\n}\n\nvar report = cljs.core.update.cljs$core$IFn$_invoke$arity$3(initial_report,new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),cljs.core.transient$);\nvar es = initial_es;\nwhile(true){\nvar vec__22562 = es;\nvar seq__22563 = cljs.core.seq(vec__22562);\nvar first__22564 = cljs.core.first(seq__22563);\nvar seq__22563__$1 = cljs.core.next(seq__22563);\nvar entity = first__22564;\nvar entities = seq__22563__$1;\nvar db = new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666).cljs$core$IFn$_invoke$arity$1(report);\nvar map__22565 = report;\nvar map__22565__$1 = (((((!((map__22565 == null))))?(((((map__22565.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__22565.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__22565):map__22565);\nvar tempids = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__22565__$1,new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089));\nif(cljs.core.empty_QMARK_(es)){\nreturn cljs.core.update.cljs$core$IFn$_invoke$arity$3(cljs.core.update_in.cljs$core$IFn$_invoke$arity$3(cljs.core.assoc_in(report,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tempids\",\"tempids\",1767509089),new cljs.core.Keyword(\"db\",\"current-tx\",\"db/current-tx\",1600722132)], null),datascript.db.current_tx(report)),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),new cljs.core.Keyword(null,\"max-tx\",\"max-tx\",1119558339)], null),cljs.core.inc),new cljs.core.Keyword(null,\"db-after\",\"db-after\",-571884666),cljs.core.persistent_BANG_);\n} else {\nif((entity == null)){\nvar G__22971 = report;\nvar G__22972 = entities;\nreport = G__22971;\nes = G__22972;\ncontinue;\n} else {\nif(cljs.core.map_QMARK_(entity)){\nvar old_eid = new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098).cljs$core$IFn$_invoke$arity$1(entity);\nif(datascript.db.tx_id_QMARK_(old_eid)){\nvar id = datascript.db.current_tx(report);\nvar G__22975 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,old_eid,id);\nvar G__22976 = cljs.core.cons(cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(entity,new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),id),entities);\nreport = G__22975;\nes = G__22976;\ncontinue;\n} else {\nif(cljs.core.sequential_QMARK_(old_eid)){\nvar id = datascript.db.entid_strict(db,old_eid);\nvar G__22977 = report;\nvar G__22978 = cljs.core.cons(cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(entity,new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),id),entities);\nreport = G__22977;\nes = G__22978;\ncontinue;\n} else {\nvar upserted_eid = datascript.db.upsert_eid(db,entity);\nif((!((upserted_eid == null)))){\nif(((datascript.db.tempid_QMARK_(old_eid)) && (cljs.core.contains_QMARK_(tempids,old_eid)) && (cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(upserted_eid,cljs.core.get.cljs$core$IFn$_invoke$arity$2(tempids,old_eid))))){\nreturn datascript.db.retry_with_tempid(initial_report,report,initial_es,old_eid,upserted_eid);\n} else {\nvar G__22981 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,old_eid,upserted_eid);\nvar G__22982 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(datascript.db.explode(db,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(entity,new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),upserted_eid)),entities);\nreport = G__22981;\nes = G__22982;\ncontinue;\n}\n} else {\nif(((typeof old_eid === 'number') || ((old_eid == null)) || (typeof old_eid === 'string'))){\nvar new_eid = (((old_eid == null))?datascript.db.next_eid(db):((datascript.db.tempid_QMARK_(old_eid))?(function (){var or__4185__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(tempids,old_eid);\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nreturn datascript.db.next_eid(db);\n}\n})():old_eid\n));\nvar new_entity = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(entity,new cljs.core.Keyword(\"db\",\"id\",\"db/id\",-1388397098),new_eid);\nvar G__22983 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,old_eid,new_eid);\nvar G__22984 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(datascript.db.explode(db,new_entity),entities);\nreport = G__22983;\nes = G__22984;\ncontinue;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Expected number, string or lookup ref for :db/id, got \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([old_eid], 0))].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"entity-id\",\"syntax\",\"entity-id/syntax\",1921317045),new cljs.core.Keyword(null,\"entity\",\"entity\",-450970276),entity], null));\n\n}\n}\n}\n}\n} else {\nif(cljs.core.sequential_QMARK_(entity)){\nvar vec__22578 = entity;\nvar op = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22578,(0),null);\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22578,(1),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22578,(2),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22578,(3),null);\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db.fn\",\"call\",\"db.fn/call\",-151594418))){\nvar vec__22581 = entity;\nvar seq__22582 = cljs.core.seq(vec__22581);\nvar first__22583 = cljs.core.first(seq__22582);\nvar seq__22582__$1 = cljs.core.next(seq__22582);\nvar _ = first__22583;\nvar first__22583__$1 = cljs.core.first(seq__22582__$1);\nvar seq__22582__$2 = cljs.core.next(seq__22582__$1);\nvar f = first__22583__$1;\nvar args = seq__22582__$2;\nvar G__22986 = report;\nvar G__22987 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.apply.cljs$core$IFn$_invoke$arity$3(f,db,args),entities);\nreport = G__22986;\nes = G__22987;\ncontinue;\n} else {\nif((((op instanceof cljs.core.Keyword)) && (cljs.core.not((datascript.db.builtin_fn_QMARK_.cljs$core$IFn$_invoke$arity$1 ? datascript.db.builtin_fn_QMARK_.cljs$core$IFn$_invoke$arity$1(op) : datascript.db.builtin_fn_QMARK_.call(null,op)))))){\nvar temp__5737__auto__ = datascript.db.entid(db,op);\nif((temp__5737__auto__ == null)){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Can\\u2019t find entity for transaction fn \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([op], 0))].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"operation\",\"operation\",-1267664310),new cljs.core.Keyword(\"db.fn\",\"call\",\"db.fn/call\",-151594418),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),entity], null));\n} else {\nvar ident = temp__5737__auto__;\nvar fun = new cljs.core.Keyword(null,\"v\",\"v\",21465059).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datascript.db._search(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ident,new cljs.core.Keyword(\"db\",\"fn\",\"db/fn\",-1175261470)], null))));\nvar args = cljs.core.next(entity);\nif(cljs.core.fn_QMARK_(fun)){\nvar G__22989 = report;\nvar G__22990 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.apply.cljs$core$IFn$_invoke$arity$3(fun,db,args),entities);\nreport = G__22989;\nes = G__22990;\ncontinue;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Entity \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([op], 0)),\" expected to have :db/fn attribute with fn? value\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"operation\",\"operation\",-1267664310),new cljs.core.Keyword(\"db.fn\",\"call\",\"db.fn/call\",-151594418),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),entity], null));\n}\n}\n} else {\nif(((datascript.db.tempid_QMARK_(e)) && (cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841))))){\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Can't use tempid in '\",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([entity], 0)),\"'. Tempids are allowed in :db/add only\"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"op\",\"op\",-1882987955),entity], null));\n} else {\nif(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db.fn\",\"cas\",\"db.fn/cas\",-379352172))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db\",\"cas\",\"db/cas\",-451542322))))){\nvar vec__22589 = entity;\nvar _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22589,(0),null);\nvar e__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22589,(1),null);\nvar a__$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22589,(2),null);\nvar ov = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22589,(3),null);\nvar nv = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22589,(4),null);\nvar e__$2 = datascript.db.entid_strict(db,e__$1);\nvar ___$1 = datascript.db.validate_attr(a__$1,entity);\nvar ov__$1 = ((datascript.db.ref_QMARK_(db,a__$1))?datascript.db.entid_strict(db,ov):ov);\nvar nv__$1 = ((datascript.db.ref_QMARK_(db,a__$1))?datascript.db.entid_strict(db,nv):nv);\nvar ___$2 = datascript.db.validate_val(nv__$1,entity);\nvar datoms = cljs.core.vec(datascript.db._search(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [e__$2,a__$1], null)));\nif(datascript.db.multival_QMARK_(db,a__$1)){\nif(cljs.core.truth_(cljs.core.some(((function (report,es,vec__22589,_,e__$1,a__$1,ov,nv,e__$2,___$1,ov__$1,nv__$1,___$2,datoms,vec__22578,op,e,a,v,vec__22562,seq__22563,first__22564,seq__22563__$1,entity,entities,db,map__22565,map__22565__$1,tempids){\nreturn (function (d){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(d.v,ov__$1);\n});})(report,es,vec__22589,_,e__$1,a__$1,ov,nv,e__$2,___$1,ov__$1,nv__$1,___$2,datoms,vec__22578,op,e,a,v,vec__22562,seq__22563,first__22564,seq__22563__$1,entity,entities,db,map__22565,map__22565__$1,tempids))\n,datoms))){\nvar G__23000 = datascript.db.transact_add(report,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),e__$2,a__$1,nv__$1], null));\nvar G__23001 = entities;\nreport = G__23000;\nes = G__23001;\ncontinue;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\":db.fn/cas failed on datom [\",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e__$2], 0)),\" \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([a__$1], 0)),\" \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"v\",\"v\",21465059),datoms)], 0)),\"], expected \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([ov__$1], 0))].join(''),new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"cas\",\"transact/cas\",816687170),new cljs.core.Keyword(null,\"old\",\"old\",-1825222690),datoms,new cljs.core.Keyword(null,\"expected\",\"expected\",1583670997),ov__$1,new cljs.core.Keyword(null,\"new\",\"new\",-2085437848),nv__$1], null));\n}\n} else {\nvar v__$1 = new cljs.core.Keyword(null,\"v\",\"v\",21465059).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datoms));\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v__$1,ov__$1)){\nvar G__23006 = datascript.db.transact_add(report,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),e__$2,a__$1,nv__$1], null));\nvar G__23007 = entities;\nreport = G__23006;\nes = G__23007;\ncontinue;\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\":db.fn/cas failed on datom [\",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([e__$2], 0)),\" \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([a__$1], 0)),\" \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([v__$1], 0)),\"], expected \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([ov__$1], 0))].join(''),new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"cas\",\"transact/cas\",816687170),new cljs.core.Keyword(null,\"old\",\"old\",-1825222690),cljs.core.first(datoms),new cljs.core.Keyword(null,\"expected\",\"expected\",1583670997),ov__$1,new cljs.core.Keyword(null,\"new\",\"new\",-2085437848),nv__$1], null));\n}\n}\n} else {\nif(datascript.db.tx_id_QMARK_(e)){\nvar G__23009 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,e,datascript.db.current_tx(report));\nvar G__23010 = cljs.core.cons(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [op,datascript.db.current_tx(report),a,v], null),entities);\nreport = G__23009;\nes = G__23010;\ncontinue;\n} else {\nif(((datascript.db.ref_QMARK_(db,a)) && (datascript.db.tx_id_QMARK_(v)))){\nvar G__23011 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,v,datascript.db.current_tx(report));\nvar G__23012 = cljs.core.cons(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [op,e,a,datascript.db.current_tx(report)], null),entities);\nreport = G__23011;\nes = G__23012;\ncontinue;\n} else {\nif(((datascript.db.ref_QMARK_(db,a)) && (datascript.db.tempid_QMARK_(v)))){\nvar temp__5737__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(tempids,v);\nif((temp__5737__auto__ == null)){\nvar G__23013 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,v,datascript.db.next_eid(db));\nvar G__23014 = es;\nreport = G__23013;\nes = G__23014;\ncontinue;\n} else {\nvar vid = temp__5737__auto__;\nvar G__23016 = report;\nvar G__23017 = cljs.core.cons(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [op,e,a,vid], null),entities);\nreport = G__23016;\nes = G__23017;\ncontinue;\n}\n} else {\nif(datascript.db.tempid_QMARK_(e)){\nvar upserted_eid = ((datascript.db.is_attr_QMARK_(db,a,new cljs.core.Keyword(\"db.unique\",\"identity\",\"db.unique/identity\",1675950722)))?new cljs.core.Keyword(null,\"e\",\"e\",1381269198).cljs$core$IFn$_invoke$arity$1(cljs.core.first(datascript.db._datoms(db,new cljs.core.Keyword(null,\"avet\",\"avet\",1383857032),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [a,v], null)))):null);\nvar allocated_eid = cljs.core.get.cljs$core$IFn$_invoke$arity$2(tempids,e);\nif(cljs.core.truth_((function (){var and__4174__auto__ = upserted_eid;\nif(cljs.core.truth_(and__4174__auto__)){\nvar and__4174__auto____$1 = allocated_eid;\nif(cljs.core.truth_(and__4174__auto____$1)){\nreturn cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(upserted_eid,allocated_eid);\n} else {\nreturn and__4174__auto____$1;\n}\n} else {\nreturn and__4174__auto__;\n}\n})())){\nreturn datascript.db.retry_with_tempid(initial_report,report,initial_es,e,upserted_eid);\n} else {\nvar eid = (function (){var or__4185__auto__ = upserted_eid;\nif(cljs.core.truth_(or__4185__auto__)){\nreturn or__4185__auto__;\n} else {\nvar or__4185__auto____$1 = allocated_eid;\nif(cljs.core.truth_(or__4185__auto____$1)){\nreturn or__4185__auto____$1;\n} else {\nreturn datascript.db.next_eid(db);\n}\n}\n})();\nvar G__23020 = datascript.db.allocate_eid.cljs$core$IFn$_invoke$arity$3(report,e,eid);\nvar G__23021 = cljs.core.cons(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [op,eid,a,v], null),entities);\nreport = G__23020;\nes = G__23021;\ncontinue;\n}\n} else {\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841))){\nvar G__23023 = datascript.db.transact_add(report,entity);\nvar G__23024 = entities;\nreport = G__23023;\nes = G__23024;\ncontinue;\n} else {\nif(cljs.core.truth_(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db\",\"retract\",\"db/retract\",-1549825231)))?v:false))){\nvar temp__5737__auto__ = datascript.db.entid(db,e);\nif((temp__5737__auto__ == null)){\nvar G__23025 = report;\nvar G__23026 = entities;\nreport = G__23025;\nes = G__23026;\ncontinue;\n} else {\nvar e__$1 = temp__5737__auto__;\nvar v__$1 = ((datascript.db.ref_QMARK_(db,a))?datascript.db.entid_strict(db,v):v);\ndatascript.db.validate_attr(a,entity);\n\ndatascript.db.validate_val(v__$1,entity);\n\nvar temp__5737__auto____$1 = cljs.core.first(datascript.db._search(db,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [e__$1,a,v__$1], null)));\nif((temp__5737__auto____$1 == null)){\nvar G__23030 = report;\nvar G__23031 = entities;\nreport = G__23030;\nes = G__23031;\ncontinue;\n} else {\nvar old_datom = temp__5737__auto____$1;\nvar G__23032 = datascript.db.transact_retract_datom(report,old_datom);\nvar G__23033 = entities;\nreport = G__23032;\nes = G__23033;\ncontinue;\n}\n}\n} else {\nif(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db.fn\",\"retractAttribute\",\"db.fn/retractAttribute\",937402164))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db\",\"retract\",\"db/retract\",-1549825231))))){\nvar temp__5737__auto__ = datascript.db.entid(db,e);\nif((temp__5737__auto__ == null)){\nvar G__23034 = report;\nvar G__23035 = entities;\nreport = G__23034;\nes = G__23035;\ncontinue;\n} else {\nvar e__$1 = temp__5737__auto__;\nvar _ = datascript.db.validate_attr(a,entity);\nvar datoms = cljs.core.vec(datascript.db._search(db,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [e__$1,a], null)));\nvar G__23036 = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.db.transact_retract_datom,report,datoms);\nvar G__23037 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(datascript.db.retract_components(db,datoms),entities);\nreport = G__23036;\nes = G__23037;\ncontinue;\n}\n} else {\nif(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db.fn\",\"retractEntity\",\"db.fn/retractEntity\",-1423535441))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(op,new cljs.core.Keyword(\"db\",\"retractEntity\",\"db/retractEntity\",-1452737935))))){\nvar temp__5737__auto__ = datascript.db.entid(db,e);\nif((temp__5737__auto__ == null)){\nvar G__23042 = report;\nvar G__23043 = entities;\nreport = G__23042;\nes = G__23043;\ncontinue;\n} else {\nvar e__$1 = temp__5737__auto__;\nvar e_datoms = cljs.core.vec(datascript.db._search(db,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [e__$1], null)));\nvar v_datoms = cljs.core.vec(cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic(((function (report,es,e_datoms,e__$1,temp__5737__auto__,vec__22578,op,e,a,v,vec__22562,seq__22563,first__22564,seq__22563__$1,entity,entities,db,map__22565,map__22565__$1,tempids){\nreturn (function (a__$1){\nreturn datascript.db._search(db,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [null,a__$1,e__$1], null));\n});})(report,es,e_datoms,e__$1,temp__5737__auto__,vec__22578,op,e,a,v,vec__22562,seq__22563,first__22564,seq__22563__$1,entity,entities,db,map__22565,map__22565__$1,tempids))\n,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([datascript.db._attrs_by(db,new cljs.core.Keyword(\"db.type\",\"ref\",\"db.type/ref\",-1728373079))], 0)));\nvar G__23044 = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(datascript.db.transact_retract_datom,report,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(e_datoms,v_datoms));\nvar G__23045 = cljs.core.concat.cljs$core$IFn$_invoke$arity$2(datascript.db.retract_components(db,e_datoms),entities);\nreport = G__23044;\nes = G__23045;\ncontinue;\n}\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Unknown operation at \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([entity], 0)),\", expected :db/add, :db/retract, :db.fn/call, :db.fn/retractAttribute, :db.fn/retractEntity or an ident corresponding to an installed transaction function (e.g. {:db/ident <keyword> :db/fn <Ifn>}, usage of :db/ident requires {:db/unique :db.unique/identity} in schema)\"].join(''),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"operation\",\"operation\",-1267664310),op,new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),entity], null));\n\n}\n}\n}\n}\n}\n}\n}\n}\n}\n}\n}\n}\n} else {\nif(datascript.db.datom_QMARK_(entity)){\nvar vec__22620 = entity;\nvar e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22620,(0),null);\nvar a = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22620,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22620,(2),null);\nvar tx = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22620,(3),null);\nvar added = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__22620,(4),null);\nif(cljs.core.truth_(added)){\nvar G__23046 = datascript.db.transact_add(report,new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"add\",\"db/add\",235286841),e,a,v,tx], null));\nvar G__23047 = entities;\nreport = G__23046;\nes = G__23047;\ncontinue;\n} else {\nvar G__23048 = report;\nvar G__23049 = cljs.core.cons(new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(\"db\",\"retract\",\"db/retract\",-1549825231),e,a,v], null),entities);\nreport = G__23048;\nes = G__23049;\ncontinue;\n}\n} else {\nthrow cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2([\"Bad entity type at \",cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([entity], 0)),\", expected map or vector\"].join(''),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"error\",\"error\",-978969032),new cljs.core.Keyword(\"transact\",\"syntax\",\"transact/syntax\",-299207078),new cljs.core.Keyword(null,\"tx-data\",\"tx-data\",934159761),entity], null));\n\n}\n}\n}\n}\n}\nbreak;\n}\n});\n","~:ns-info",["^ ","~:rename-macros",null,"~:renames",["^ "],"~:meta",["^ ","~:file","datascript/db.cljc","~:line",1,"~:column",24,"~:end-line",1,"~:end-column",37,"~:lean-ns",true,"~:no-doc",true],"~:ns-aliases",["^ ","~$cljs.loader","~$shadow.loader"],"~:use-macros",["^ ","~$case-tree","~$datascript.db","~$combine-cmp","^B","~$raise","^B","~$defrecord-updatable","^B","~$cond+","^B"],"~:excludes",["~#set",["~$seqable?"]],"~:macros",["^ ","^F",["^ ","~:arglists",["~#list",[["~$&","~$clauses"]]],"^7",47,"^8",3,"^6","datascript/db.cljc","~:name","~$datascript.db/cond+","~:ns","^B","~:macro",true],"^A",["^ ","^K",["^L",[["~$qs","~$vs"]]],"^7",311,"^8",4,"^6","datascript/db.cljc","^N","~$datascript.db/case-tree","^P","^B","^Q",true],"^E",["^ ","^K",["^L",[["~$name","~$fields","~$&","~$impls"]]],"^7",126,"^8",4,"^6","datascript/db.cljc","^N","~$datascript.db/defrecord-updatable","^P","^B","^Q",true],"~$if-cljs",["^ ","^K",["^L",[["~$then","~$else"]]],"~:doc","Return then if we are generating cljs code and else for Clojure code.\n     https://groups.google.com/d/msg/clojurescript/iBY5HaQda4A/w1lAQi9_AwsJ","^7",73,"^8",4,"^6","datascript/db.cljc","^N","~$datascript.db/if-cljs","^P","^B","^Q",true],"~$some-of",["^ ","^K",["^L",[[],["~$x"],["~$x","~$&","~$more"]]],"^7",54,"^8",1,"^6","datascript/db.cljc","^N","~$datascript.db/some-of","^P","^B","^Q",true],"^D",["^ ","^K",["^L",[["~$&","~$fragments"]]],"^7",28,"^8",3,"^6","datascript/db.cljc","^N","~$datascript.db/raise","^P","^B","^Q",true],"^C",["^ ","^K",["^L",[["~$&","~$comps"]]],"^7",288,"^8",3,"^6","datascript/db.cljc","^N","~$datascript.db/combine-cmp","^P","^B","^Q",true]],"^N","^B","~:op","^P","~:imports",null,"~:requires",["^ ","~$set","~$me.tonsky.persistent-sorted-set","~$arrays","~$me.tonsky.persistent-sorted-set.arrays","~$cljs.core","^1@","~$garray","~$goog.array","~$goog","^1C","^1=","^1=","^1?","^1?","~$clojure.data","^1D","~$clojure.walk","^1E","^1B","^1B"],"~:seen",["^H",["~:require","~:require-macros"]],"~:uses",null,"^1H",["^ ","^B","^B","^1@","^1@","^1>","^1?","^1?","^1?"],"~:form",["^L",["~$ns","^B",["^L",["^1G",["^1B","~:as","^1A"],["^1E"],["^1D"],["^1=","^1L","^1<"],["^1?","^1L","^1>"]]],["^L",["^1H",["^B","~:refer",["^A","^C","^D","^E","^F"]]]],["^L",["~:refer-clojure","~:exclude",["^I"]]]]],"~:flags",["^ ","^1G",["^H",[]],"^1H",["^H",[]]],"~:js-deps",["^ "],"~:deps",["^1C","^1@","^1B","^1E","^1D","^1=","^1?"]],"^P","^B","~:resource-id",["~:shadow.build.classpath/resource","datascript/db.cljc"],"~:compiled-at",1590236737312,"~:resource-name","datascript/db.cljc","~:warnings",[],"~:source","(ns ^:no-doc ^:lean-ns datascript.db\n  (:require\n    #?(:cljs [goog.array :as garray])\n    [clojure.walk]\n    [clojure.data]\n    [me.tonsky.persistent-sorted-set :as set]\n    [me.tonsky.persistent-sorted-set.arrays :as arrays])\n  #?(:cljs (:require-macros [datascript.db :refer [case-tree combine-cmp raise defrecord-updatable cond+]]))\n  (:refer-clojure :exclude [seqable?])) \n\n;; ----------------------------------------------------------------------------\n\n#?(:cljs\n   (do\n     (def Exception js/Error)\n     (def IllegalArgumentException js/Error)\n     (def UnsupportedOperationException js/Error)))\n\n(def ^:const e0    0)\n(def ^:const tx0   0x20000000)\n(def ^:const emax  0x7FFFFFFF)\n(def ^:const txmax 0x7FFFFFFF)\n(def ^:const implicit-schema {:db/ident {:db/unique :db.unique/identity}})\n\n;; ----------------------------------------------------------------------------\n\n#?(:clj\n  (defmacro raise [& fragments]\n    (let [msgs (butlast fragments)\n          data (last fragments)]\n      `(throw (ex-info (str ~@(map (fn [m#] (if (string? m#) m# (list 'pr-str m#))) msgs)) ~data)))))\n\n(defn #?@(:clj  [^Boolean seqable?]  \n          :cljs [^boolean seqable?])\n  [x]\n  (and (not (string? x))\n  #?(:cljs (or (cljs.core/seqable? x)\n               (arrays/array? x))\n     :clj  (or (seq? x)\n               (instance? clojure.lang.Seqable x)\n               (nil? x)\n               (instance? Iterable x)\n               (arrays/array? x)\n               (instance? java.util.Map x)))))\n\n#?(:clj\n  (defmacro cond+ [& clauses]\n    (when-some [[test expr & rest] clauses]\n      (case test\n        :let `(let ~expr (cond+ ~@rest))\n        `(if ~test ~expr (cond+ ~@rest))))))\n\n#?(:clj\n(defmacro some-of\n  ([] nil)\n  ([x] x)\n  ([x & more]\n    `(let [x# ~x] (if (nil? x#) (some-of ~@more) x#)))))\n\n;; ----------------------------------------------------------------------------\n;; macros and funcs to support writing defrecords and updating\n;; (replacing) builtins, i.e., Object/hashCode, IHashEq hasheq, etc.\n;; code taken from prismatic:\n;;  https://github.com/Prismatic/schema/commit/e31c419c56555c83ef9ee834801e13ef3c112597\n;;\n\n(defn- cljs-env?\n  \"Take the &env from a macro, and tell whether we are expanding into cljs.\"\n  [env]\n  (boolean (:ns env)))\n\n#?(:clj\n   (defmacro if-cljs\n     \"Return then if we are generating cljs code and else for Clojure code.\n     https://groups.google.com/d/msg/clojurescript/iBY5HaQda4A/w1lAQi9_AwsJ\"\n     [then else]\n     (if (cljs-env? &env) then else)))\n\n(defn combine-hashes [x y]\n  #?(:clj  (clojure.lang.Util/hashCombine x y)\n     :cljs (hash-combine x y)))\n\n#?(:clj\n   (defn- get-sig [method]\n     ;; expects something like '(method-symbol [arg arg arg] ...)\n     ;; if the thing matches, returns [fully-qualified-symbol arity], otherwise nil\n     (and (sequential? method)\n          (symbol? (first method))\n          (vector? (second method))\n          (let [sym (first method)\n                ns  (or (some->> sym resolve meta :ns str) \"clojure.core\")]\n            [(symbol ns (name sym)) (-> method second count)]))))\n\n#?(:clj\n   (defn- dedupe-interfaces [deftype-form]\n     ;; get the interfaces list, remove any duplicates, similar to remove-nil-implements in potemkin\n     ;; verified w/ deftype impl in compiler:\n     ;; (deftype* tagname classname [fields] :implements [interfaces] :tag tagname methods*)\n     (let [[deftype* tagname classname fields implements interfaces & rest] deftype-form]\n       (when (or (not= deftype* 'deftype*) (not= implements :implements))\n         (throw (IllegalArgumentException. \"deftype-form mismatch\")))\n       (list* deftype* tagname classname fields implements (vec (distinct interfaces)) rest))))\n\n#?(:clj\n   (defn- make-record-updatable-clj [name fields & impls]\n     (let [impl-map (->> impls (map (juxt get-sig identity)) (filter first) (into {}))\n           body     (macroexpand-1 (list* 'defrecord name fields impls))]\n       (clojure.walk/postwalk\n        (fn [form]\n          (if (and (sequential? form) (= 'deftype* (first form)))\n            (->> form\n                 dedupe-interfaces\n                 (remove (fn [method]\n                           (when-some [impl (-> method get-sig impl-map)]\n                             (not= method impl)))))\n            form))\n        body))))\n\n#?(:clj\n   (defn- make-record-updatable-cljs [name fields & impls]\n     `(do\n        (defrecord ~name ~fields)\n        (extend-type ~name ~@impls))))\n\n#?(:clj\n   (defmacro defrecord-updatable [name fields & impls]\n     `(if-cljs\n       ~(apply make-record-updatable-cljs name fields impls)\n       ~(apply make-record-updatable-clj  name fields impls))))\n\n;; ----------------------------------------------------------------------------\n\n(declare hash-datom equiv-datom seq-datom nth-datom assoc-datom val-at-datom)\n\n(defprotocol IDatom\n  (datom-tx [this])\n  (datom-added [this]))\n\n(deftype Datom #?(:clj [^int e a v ^int tx ^:unsynchronized-mutable ^int _hash]\n                  :cljs [^number e a v ^number tx ^:mutable ^number _hash])\n  IDatom\n  (datom-tx [d] (if (pos? tx) tx (- tx)))\n  (datom-added [d] (pos? tx))\n\n  #?@(:cljs\n       [IHash\n        (-hash [d] (if (zero? _hash)\n                     (set! _hash (hash-datom d))\n                     _hash))\n        IEquiv\n        (-equiv [d o] (and (instance? Datom o) (equiv-datom d o)))\n\n        ISeqable\n        (-seq [d] (seq-datom d))\n\n        ILookup\n        (-lookup [d k] (val-at-datom d k nil))\n        (-lookup [d k nf] (val-at-datom d k nf))\n\n        IIndexed\n        (-nth [this i] (nth-datom this i))\n        (-nth [this i not-found] (nth-datom this i not-found))\n        \n        IAssociative\n        (-assoc [d k v] (assoc-datom d k v))\n\n        IPrintWithWriter\n        (-pr-writer [d writer opts]\n                    (pr-sequential-writer writer pr-writer\n                                          \"#datascript/Datom [\" \" \" \"]\"\n                                          opts [(.-e d) (.-a d) (.-v d) (datom-tx d) (datom-added d)]))]\n      :clj\n       [Object\n        (hashCode [d]\n          (if (zero? _hash)\n            (let [h (int (hash-datom d))]\n              (set! _hash h)\n              h)\n            _hash))\n        (toString [d] (pr-str d))\n\n        clojure.lang.IHashEq\n        (hasheq [d] (.hashCode d))\n\n        clojure.lang.Seqable\n        (seq [d] (seq-datom d))\n\n        clojure.lang.IPersistentCollection\n        (equiv [d o] (and (instance? Datom o) (equiv-datom d o)))\n        (empty [d] (throw (UnsupportedOperationException. \"empty is not supported on Datom\")))\n        (count [d] 5)\n        (cons [d [k v]] (assoc-datom d k v))\n        \n        clojure.lang.Indexed\n        (nth [this i]           (nth-datom this i))\n        (nth [this i not-found] (nth-datom this i not-found))\n\n        clojure.lang.ILookup\n        (valAt [d k] (val-at-datom d k nil))\n        (valAt [d k nf] (val-at-datom d k nf))\n\n        clojure.lang.Associative\n        (entryAt [d k] (some->> (val-at-datom d k nil) (clojure.lang.MapEntry k)))\n        (containsKey [e k] (#{:e :a :v :tx :added} k))\n        (assoc [d k v] (assoc-datom d k v))]\n))\n\n#?(:cljs (goog/exportSymbol \"datascript.db.Datom\" Datom))\n\n(defn ^Datom datom\n  ([e a v] (Datom. e a v tx0 0))\n  ([e a v tx] (Datom. e a v tx 0))\n  ([e a v tx added] (Datom. e a v (if added tx (- tx)) 0)))\n\n(defn datom? [x] (instance? Datom x))\n\n(defn- hash-datom [^Datom d]\n  (-> (hash (.-e d))\n      (combine-hashes (hash (.-a d)))\n      (combine-hashes (hash (.-v d)))))\n\n(defn- equiv-datom [^Datom d ^Datom o]\n  (and (== (.-e d) (.-e o))\n       (= (.-a d) (.-a o))\n       (= (.-v d) (.-v o))))\n\n(defn- seq-datom [^Datom d]\n  (list (.-e d) (.-a d) (.-v d) (datom-tx d) (datom-added d)))\n\n;; keep it fast by duplicating for both keyword and string cases\n;; instead of using sets or some other matching func\n(defn- val-at-datom [^Datom d k not-found]\n  (case k\n    :e      (.-e d) \"e\"     (.-e d)\n    :a      (.-a d) \"a\"     (.-a d)\n    :v      (.-v d) \"v\"     (.-v d)\n    :tx     (datom-tx d)\n    \"tx\"    (datom-tx d)\n    :added  (datom-added d)\n    \"added\" (datom-added d)\n    not-found))\n\n(defn- nth-datom\n  ([^Datom d ^long i]\n    (case i\n      0 (.-e d)\n      1 (.-a d)\n      2 (.-v d)\n      3 (datom-tx d)\n      4 (datom-added d)\n        #?(:clj  (throw (IndexOutOfBoundsException.))\n           :cljs (throw (js/Error. (str \"Datom/-nth: Index out of bounds: \" i))))))\n  ([^Datom d ^long i not-found]\n    (case i\n      0 (.-e d)\n      1 (.-a d)\n      2 (.-v d)\n      3 (datom-tx d)\n      4 (datom-added d)\n        not-found)))\n\n(defn- ^Datom assoc-datom [^Datom d k v]\n  (case k\n    :e     (datom v       (.-a d) (.-v d) (datom-tx d) (datom-added d))\n    :a     (datom (.-e d) v       (.-v d) (datom-tx d) (datom-added d))\n    :v     (datom (.-e d) (.-a d) v       (datom-tx d) (datom-added d))\n    :tx    (datom (.-e d) (.-a d) (.-v d) v            (datom-added d))\n    :added (datom (.-e d) (.-a d) (.-v d) (datom-tx d) v)\n    (throw (IllegalArgumentException. (str \"invalid key for #datascript/Datom: \" k)))))\n\n;; printing and reading\n;; #datomic/DB {:schema <map>, :datoms <vector of [e a v tx]>}\n\n(defn ^Datom datom-from-reader [vec]\n  (apply datom vec))\n\n#?(:clj\n   (defmethod print-method Datom [^Datom d, ^java.io.Writer w]\n     (.write w (str \"#datascript/Datom \"))\n     (binding [*out* w]\n       (pr [(.-e d) (.-a d) (.-v d) (datom-tx d) (datom-added d)]))))\n\n;; ----------------------------------------------------------------------------\n;; datom cmp macros/funcs\n;;\n\n#?(:clj\n  (defmacro combine-cmp [& comps]\n    (loop [comps (reverse comps)\n           res   (num 0)]\n      (if (not-empty comps)\n        (recur\n          (next comps)\n          `(let [c# ~(first comps)]\n             (if (== 0 c#)\n               ~res\n               c#)))\n        res))))\n\n#?(:clj\n   (defn- -case-tree [queries variants]\n     (if queries\n       (let [v1 (take (/ (count variants) 2) variants)\n             v2 (drop (/ (count variants) 2) variants)]\n         (list 'if (first queries)\n               (-case-tree (next queries) v1)\n               (-case-tree (next queries) v2)))\n       (first variants))))\n\n#?(:clj\n   (defmacro case-tree [qs vs]\n     (-case-tree qs vs)))\n\n(defn cmp [o1 o2]\n  (if (nil? o1) 0\n    (if (nil? o2) 0\n      (compare o1 o2))))\n\n;; Slower cmp-* fns allows for datom fields to be nil.\n;; Such datoms come from slice method where they are used as boundary markers.\n\n(defn cmp-datoms-eavt [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (cmp (.-a d1) (.-a d2))\n    (cmp (.-v d1) (.-v d2))\n    (#?(:clj Integer/compare :cljs -) (datom-tx d1) (datom-tx d2))))\n\n(defn cmp-datoms-aevt [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (cmp (.-a d1) (.-a d2))\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (cmp (.-v d1) (.-v d2))\n    (#?(:clj Integer/compare :cljs -) (datom-tx d1) (datom-tx d2))))\n\n(defn cmp-datoms-avet [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (cmp (.-a d1) (.-a d2))\n    (cmp (.-v d1) (.-v d2))\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (#?(:clj Integer/compare :cljs -) (datom-tx d1) (datom-tx d2))))\n\n;; fast versions without nil checks\n\n(defn- cmp-attr-quick [a1 a2]\n  ;; either both are keywords or both are strings\n  #?(:cljs\n     (if (keyword? a1)\n       (-compare a1 a2)\n       (garray/defaultCompare a1 a2))\n     :clj\n     (.compareTo ^Comparable a1 a2)))\n\n(defn cmp-datoms-eav-quick [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (cmp-attr-quick (.-a d1) (.-a d2))\n    (compare (.-v d1) (.-v d2))))\n\n(defn cmp-datoms-eavt-quick [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (cmp-attr-quick (.-a d1) (.-a d2))\n    (compare (.-v d1) (.-v d2))\n    (#?(:clj Integer/compare :cljs -) (datom-tx d1) (datom-tx d2))))\n\n(defn cmp-datoms-aevt-quick [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (cmp-attr-quick (.-a d1) (.-a d2))\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (compare (.-v d1) (.-v d2))\n    (#?(:clj Integer/compare :cljs -) (datom-tx d1) (datom-tx d2))))\n\n(defn cmp-datoms-avet-quick [^Datom d1, ^Datom d2]\n  (combine-cmp\n    (cmp-attr-quick (.-a d1) (.-a d2))\n    (compare (.-v d1) (.-v d2))\n    (#?(:clj Integer/compare :cljs -) (.-e d1) (.-e d2))\n    (#?(:clj Integer/compare :cljs -) (datom-tx d1) (datom-tx d2))))\n\n(defn- diff-sorted [a b cmp]\n  (loop [only-a []\n         only-b []\n         both   []\n         a      a\n         b      b]\n    (cond\n      (empty? a) [(not-empty only-a) (not-empty (into only-b b)) (not-empty both)]\n      (empty? b) [(not-empty (into only-a a)) (not-empty only-b) (not-empty both)]\n      :else\n      (let [first-a (first a)\n            first-b (first b)\n            diff (cmp first-a first-b)]\n        (cond\n          (== diff 0) (recur only-a                only-b                (conj both first-a) (next a) (next b))\n          (< diff 0)  (recur (conj only-a first-a) only-b                both                (next a) b)\n          (> diff 0)  (recur only-a                (conj only-b first-b) both                a        (next b)))))))\n\n;; ----------------------------------------------------------------------------\n\n;;;;;;;;;; Searching\n\n(defprotocol ISearch\n  (-search [data pattern]))\n\n(defprotocol IIndexAccess\n  (-datoms [db index components])\n  (-seek-datoms [db index components])\n  (-rseek-datoms [db index components])\n  (-index-range [db attr start end]))\n\n(defprotocol IDB\n  (-schema [db])\n  (-attrs-by [db property]))\n\n;; ----------------------------------------------------------------------------\n\n(declare hash-db hash-fdb equiv-db empty-db resolve-datom validate-attr components->pattern indexing?)\n#?(:cljs (declare pr-db))\n\n(defn db-transient [db]\n  (-> db\n    (update :eavt transient)\n    (update :aevt transient)\n    (update :avet transient)))\n\n(defn db-persistent! [db]\n  (-> db\n    (update :eavt persistent!)\n    (update :aevt persistent!)\n    (update :avet persistent!)))\n\n(defrecord-updatable DB [schema eavt aevt avet max-eid max-tx rschema hash]\n  #?@(:cljs\n      [IHash                (-hash  [db]        (hash-db db))\n       IEquiv               (-equiv [db other]  (equiv-db db other))\n       ISeqable             (-seq   [db]        (-seq  (.-eavt db)))\n       IReversible          (-rseq  [db]        (-rseq (.-eavt db)))\n       ICounted             (-count [db]        (count (.-eavt db)))\n       IEmptyableCollection (-empty [db]        (with-meta (empty-db (.-schema db)) (meta db)))\n       IPrintWithWriter     (-pr-writer [db w opts] (pr-db db w opts))\n       IEditableCollection  (-as-transient [db] (db-transient db))\n       ITransientCollection (-conj! [db key] (throw (ex-info \"datascript.DB/conj! is not supported\" {})))\n                            (-persistent! [db] (db-persistent! db))]\n\n      :clj\n      [Object               (hashCode [db]      (hash-db db))\n       clojure.lang.IHashEq (hasheq [db]        (hash-db db))\n       clojure.lang.Seqable (seq [db]           (seq eavt))\n       clojure.lang.IPersistentCollection\n                            (count [db]         (count eavt))\n                            (equiv [db other]   (equiv-db db other))\n       clojure.lang.IEditableCollection \n                            (empty [db]         (with-meta (empty-db schema) (meta db)))\n                            (asTransient [db] (db-transient db))\n       clojure.lang.ITransientCollection\n                            (conj [db key] (throw (ex-info \"datascript.DB/conj! is not supported\" {})))\n                            (persistent [db] (db-persistent! db))])\n\n  IDB\n  (-schema [db] (.-schema db))\n  (-attrs-by [db property] ((.-rschema db) property))\n\n  ISearch\n  (-search [db pattern]\n    (let [[e a v tx] pattern\n          eavt (.-eavt db)\n          aevt (.-aevt db)\n          avet (.-avet db)]\n      (case-tree [e a (some? v) tx]\n        [(set/slice eavt (datom e a v tx) (datom e a v tx))                   ;; e a v tx\n         (set/slice eavt (datom e a v tx0) (datom e a v txmax))               ;; e a v _\n         (->> (set/slice eavt (datom e a nil tx0) (datom e a nil txmax))      ;; e a _ tx\n              (filter (fn [^Datom d] (= tx (datom-tx d)))))\n         (set/slice eavt (datom e a nil tx0) (datom e a nil txmax))           ;; e a _ _\n         (->> (set/slice eavt (datom e nil nil tx0) (datom e nil nil txmax))  ;; e _ v tx\n              (filter (fn [^Datom d] (and (= v (.-v d))\n                                          (= tx (datom-tx d))))))\n         (->> (set/slice eavt (datom e nil nil tx0) (datom e nil nil txmax))  ;; e _ v _\n              (filter (fn [^Datom d] (= v (.-v d)))))\n         (->> (set/slice eavt (datom e nil nil tx0) (datom e nil nil txmax))  ;; e _ _ tx\n              (filter (fn [^Datom d] (= tx (datom-tx d)))))\n         (set/slice eavt (datom e nil nil tx0) (datom e nil nil txmax))       ;; e _ _ _\n         (if (indexing? db a)                                                   ;; _ a v tx\n           (->> (set/slice avet (datom e0 a v tx0) (datom emax a v txmax))      \n                (filter (fn [^Datom d] (= tx (datom-tx d)))))\n           (->> (set/slice aevt (datom e0 a nil tx0) (datom emax a nil txmax))\n                (filter (fn [^Datom d] (and (= v (.-v d))\n                                            (= tx (datom-tx d)))))))\n         (if (indexing? db a)                                                   ;; _ a v _\n           (set/slice avet (datom e0 a v tx0) (datom emax a v txmax))\n           (->> (set/slice aevt (datom e0 a nil tx0) (datom emax a nil txmax))\n                (filter (fn [^Datom d] (= v (.-v d))))))\n         (->> (set/slice aevt (datom e0 a nil tx0) (datom emax a nil txmax))  ;; _ a _ tx\n              (filter (fn [^Datom d] (= tx (datom-tx d)))))\n         (set/slice aevt (datom e0 a nil tx0) (datom emax a nil txmax))       ;; _ a _ _\n         (filter (fn [^Datom d] (and (= v (.-v d))\n                                     (= tx (datom-tx d)))) eavt)                ;; _ _ v tx\n         (filter (fn [^Datom d] (= v (.-v d))) eavt)                            ;; _ _ v _\n         (filter (fn [^Datom d] (= tx (datom-tx d))) eavt)                      ;; _ _ _ tx\n         eavt])))                                                               ;; _ _ _ _\n\n  IIndexAccess\n  (-datoms [db index cs]\n    (set/slice (get db index) (components->pattern db index cs e0 tx0) (components->pattern db index cs emax txmax)))\n\n  (-seek-datoms [db index cs]\n    (set/slice (get db index) (components->pattern db index cs e0 tx0) (datom emax nil nil txmax)))\n\n  (-rseek-datoms [db index cs]\n    (set/rslice (get db index) (components->pattern db index cs emax txmax) (datom e0 nil nil tx0)))\n\n  (-index-range [db attr start end]\n    (when-not (indexing? db attr)\n      (raise \"Attribute \" attr \" should be marked as :db/index true\" {}))\n    (validate-attr attr (list '-index-range 'db attr start end))\n    (set/slice (.-avet db)\n      (resolve-datom db nil attr start nil e0 tx0)\n      (resolve-datom db nil attr end nil emax txmax)))\n                \n  clojure.data/EqualityPartition\n  (equality-partition [x] :datascript/db)\n\n  clojure.data/Diff\n  (diff-similar [a b]\n    (diff-sorted (:eavt a) (:eavt b) cmp-datoms-eav-quick)))\n\n(defn db? [x]\n  (and (satisfies? ISearch x)\n       (satisfies? IIndexAccess x)\n       (satisfies? IDB x)))\n\n;; ----------------------------------------------------------------------------\n(defrecord-updatable FilteredDB [unfiltered-db pred hash]\n  #?@(:cljs\n      [IHash                (-hash  [db]        (hash-fdb db))\n       IEquiv               (-equiv [db other]  (equiv-db db other))\n       ISeqable             (-seq   [db]        (seq (-datoms db :eavt [])))\n       ICounted             (-count [db]        (count (-datoms db :eavt [])))\n       IPrintWithWriter     (-pr-writer [db w opts] (pr-db db w opts))\n\n       IEmptyableCollection (-empty [_]         (throw (js/Error. \"-empty is not supported on FilteredDB\")))\n\n       ILookup              (-lookup ([_ _]     (throw (js/Error. \"-lookup is not supported on FilteredDB\")))\n                                     ([_ _ _]   (throw (js/Error. \"-lookup is not supported on FilteredDB\"))))\n\n\n       IAssociative         (-contains-key? [_ _] (throw (js/Error. \"-contains-key? is not supported on FilteredDB\")))\n                            (-assoc [_ _ _]       (throw (js/Error. \"-assoc is not supported on FilteredDB\")))]\n\n      :clj\n      [Object               (hashCode [db]      (hash-fdb db))\n\n       clojure.lang.IHashEq (hasheq [db]        (hash-fdb db))\n\n       clojure.lang.IPersistentCollection\n                            (count [db]         (count (-datoms db :eavt [])))\n                            (equiv [db o]       (equiv-db db o))\n                            (cons [db [k v]]    (throw (UnsupportedOperationException. \"cons is not supported on FilteredDB\")))\n                            (empty [db]         (throw (UnsupportedOperationException. \"empty is not supported on FilteredDB\")))\n\n       clojure.lang.Seqable (seq [db]           (seq (-datoms db :eavt [])))\n\n       clojure.lang.ILookup (valAt [db k]       (throw (UnsupportedOperationException. \"valAt/2 is not supported on FilteredDB\")))\n                            (valAt [db k nf]    (throw (UnsupportedOperationException. \"valAt/3 is not supported on FilteredDB\")))\n       clojure.lang.IKeywordLookup (getLookupThunk [db k]\n                                                (throw (UnsupportedOperationException. \"getLookupThunk is not supported on FilteredDB\")))\n\n       clojure.lang.Associative\n                            (containsKey [e k]  (throw (UnsupportedOperationException. \"containsKey is not supported on FilteredDB\")))\n                            (entryAt [db k]     (throw (UnsupportedOperationException. \"entryAt is not supported on FilteredDB\")))\n                            (assoc [db k v]     (throw (UnsupportedOperationException. \"assoc is not supported on FilteredDB\")))])\n\n  IDB\n  (-schema [db] (-schema (.-unfiltered-db db)))\n  (-attrs-by [db property] (-attrs-by (.-unfiltered-db db) property))\n\n  ISearch\n  (-search [db pattern]\n           (filter (.-pred db) (-search (.-unfiltered-db db) pattern)))\n\n  IIndexAccess\n  (-datoms [db index cs]\n           (filter (.-pred db) (-datoms (.-unfiltered-db db) index cs)))\n\n  (-seek-datoms [db index cs]\n                (filter (.-pred db) (-seek-datoms (.-unfiltered-db db) index cs)))\n\n  (-rseek-datoms [db index cs]\n                (filter (.-pred db) (-rseek-datoms (.-unfiltered-db db) index cs)))\n\n  (-index-range [db attr start end]\n                (filter (.-pred db) (-index-range (.-unfiltered-db db) attr start end))))\n\n;; ----------------------------------------------------------------------------\n\n(defn attr->properties [k v]\n  (case v\n    :db.unique/identity  [:db/unique :db.unique/identity :db/index]\n    :db.unique/value     [:db/unique :db.unique/value :db/index]\n    :db.cardinality/many [:db.cardinality/many]\n    :db.type/ref         [:db.type/ref :db/index]\n    (when (true? v)\n      (case k\n        :db/isComponent [:db/isComponent]\n        :db/index       [:db/index]\n        []))))\n\n(defn- rschema [schema]\n  (reduce-kv\n    (fn [m attr keys->values]\n      (reduce-kv\n        (fn [m key value]\n          (reduce\n            (fn [m prop]\n              (assoc m prop (conj (get m prop #{}) attr)))\n            m (attr->properties key value)))\n        m keys->values))\n    {} schema))\n\n(defn- validate-schema-key [a k v expected]\n  (when-not (or (nil? v)\n                (contains? expected v))\n    (throw (ex-info (str \"Bad attribute specification for \" (pr-str {a {k v}}) \", expected one of \" expected)\n                    {:error :schema/validation\n                     :attribute a\n                     :key k\n                     :value v}))))\n\n(defn- validate-schema [schema]\n  (doseq [[a kv] schema]\n    (let [comp? (:db/isComponent kv false)]\n      (validate-schema-key a :db/isComponent (:db/isComponent kv) #{true false})\n      (when (and comp? (not= (:db/valueType kv) :db.type/ref))\n        (throw (ex-info (str \"Bad attribute specification for \" a \": {:db/isComponent true} should also have {:db/valueType :db.type/ref}\")\n                        {:error     :schema/validation\n                         :attribute a\n                         :key       :db/isComponent}))))\n    (validate-schema-key a :db/unique (:db/unique kv) #{:db.unique/value :db.unique/identity})\n    (validate-schema-key a :db/valueType (:db/valueType kv) #{:db.type/ref})\n    (validate-schema-key a :db/cardinality (:db/cardinality kv) #{:db.cardinality/one :db.cardinality/many})))\n\n(defn ^DB empty-db\n  ([] (empty-db nil))\n  ([schema]\n    {:pre [(or (nil? schema) (map? schema))]}\n    (validate-schema schema)\n    (map->DB\n      {:schema  schema\n       :rschema (rschema (merge implicit-schema schema))\n       :eavt    (set/sorted-set-by cmp-datoms-eavt)\n       :aevt    (set/sorted-set-by cmp-datoms-aevt)\n       :avet    (set/sorted-set-by cmp-datoms-avet)\n       :max-eid e0\n       :max-tx  tx0\n       :hash    (atom 0)})))\n\n(defn- init-max-eid [eavt]\n  (or (-> (set/rslice eavt (datom (dec tx0) nil nil txmax) (datom e0 nil nil tx0))\n        (first)\n        (:e))\n    e0))\n\n(defn ^DB init-db\n  ([datoms] (init-db datoms nil))\n  ([datoms schema]\n    (validate-schema schema)\n    (let [rschema     (rschema (merge implicit-schema schema))\n          indexed     (:db/index rschema)\n          arr         (cond-> datoms\n                        (not (arrays/array? datoms)) (arrays/into-array))\n          _           (arrays/asort arr cmp-datoms-eavt-quick)\n          eavt        (set/from-sorted-array cmp-datoms-eavt arr)\n          _           (arrays/asort arr cmp-datoms-aevt-quick)\n          aevt        (set/from-sorted-array cmp-datoms-aevt arr)\n          avet-datoms (filter (fn [^Datom d] (contains? indexed (.-a d))) datoms)\n          avet-arr    (to-array avet-datoms)\n          _           (arrays/asort avet-arr cmp-datoms-avet-quick)\n          avet        (set/from-sorted-array cmp-datoms-avet avet-arr)\n          max-eid     (init-max-eid eavt)\n          max-tx      (transduce (map (fn [^Datom d] (datom-tx d))) max tx0 eavt)]\n      (map->DB {\n        :schema  schema\n        :rschema rschema\n        :eavt    eavt\n        :aevt    aevt\n        :avet    avet\n        :max-eid max-eid\n        :max-tx  max-tx\n        :hash    (atom 0)}))))\n\n(defn- equiv-db-index [x y]\n  (loop [xs (seq x)\n         ys (seq y)]\n    (cond\n      (nil? xs) (nil? ys)\n      (= (first xs) (first ys)) (recur (next xs) (next ys))\n      :else false)))\n\n(defn- hash-db [^DB db]\n  (let [h @(.-hash db)]\n    (if (zero? h)\n      (reset! (.-hash db) (combine-hashes (hash (.-schema db))\n                                          (hash (.-eavt db))))\n      h)))\n\n(defn- hash-fdb [^FilteredDB db]\n  (let [h @(.-hash db)\n        datoms (or (-datoms db :eavt []) #{})]\n    (if (zero? h)\n      (let [datoms (or (-datoms db :eavt []) #{})]\n        (reset! (.-hash db) (combine-hashes (hash (-schema db))\n                                            (hash-unordered-coll datoms))))\n      h)))\n\n(defn- equiv-db [db other]\n  (and (or (instance? DB other) (instance? FilteredDB other))\n       (= (-schema db) (-schema other))\n       (equiv-db-index (-datoms db :eavt []) (-datoms other :eavt []))))\n\n#?(:cljs\n   (defn pr-db [db w opts]\n     (-write w \"#datascript/DB {\")\n     (-write w \":schema \")\n     (pr-writer (-schema db) w opts)\n     (-write w \", :datoms \")\n     (pr-sequential-writer w\n                           (fn [d w opts]\n                             (pr-sequential-writer w pr-writer \"[\" \" \" \"]\" opts [(.-e d) (.-a d) (.-v d) (datom-tx d)]))\n                           \"[\" \" \" \"]\" opts (-datoms db :eavt []))\n     (-write w \"}\")))\n\n#?(:clj\n   (do\n     (defn pr-db [db, ^java.io.Writer w]\n       (.write w (str \"#datascript/DB {\"))\n       (.write w \":schema \")\n       (binding [*out* w]\n         (pr (-schema db))\n         (.write w \", :datoms [\")\n         (apply pr (map (fn [^Datom d] [(.-e d) (.-a d) (.-v d) (datom-tx d)]) (-datoms db :eavt []))))\n       (.write w \"]}\"))\n\n     (defmethod print-method DB [db w] (pr-db db w))\n     (defmethod print-method FilteredDB [db w] (pr-db db w))     \n))\n\n(defn db-from-reader [{:keys [schema datoms]}]\n  (init-db (map (fn [[e a v tx]] (datom e a v tx)) datoms) schema))\n\n;; ----------------------------------------------------------------------------\n\n(declare entid-strict entid-some ref?)\n\n(defn- resolve-datom [db e a v t default-e default-tx]\n  (when a (validate-attr a (list 'resolve-datom 'db e a v t)))\n  (datom\n    (or (entid-some db e) default-e)  ;; e\n    a                                 ;; a\n    (if (and (some? v) (ref? db a))   ;; v\n      (entid-strict db v)\n      v)\n    (or (entid-some db t) default-tx))) ;; t\n\n(defn- components->pattern [db index [c0 c1 c2 c3] default-e default-tx]\n  (case index\n    :eavt (resolve-datom db c0 c1 c2 c3 default-e default-tx)\n    :aevt (resolve-datom db c1 c0 c2 c3 default-e default-tx)\n    :avet (resolve-datom db c2 c0 c1 c3 default-e default-tx)))\n\n;; ----------------------------------------------------------------------------\n\n(defrecord TxReport [db-before db-after tx-data tempids tx-meta])\n\n(defn #?@(:clj  [^Boolean is-attr?]\n          :cljs [^boolean is-attr?]) [db attr property]\n  (contains? (-attrs-by db property) attr))\n\n(defn #?@(:clj  [^Boolean multival?]\n          :cljs [^boolean multival?]) [db attr]\n  (is-attr? db attr :db.cardinality/many))\n\n(defn #?@(:clj  [^Boolean ref?]\n          :cljs [^boolean ref?]) [db attr]\n  (is-attr? db attr :db.type/ref))\n\n(defn #?@(:clj  [^Boolean component?]\n          :cljs [^boolean component?]) [db attr]\n  (is-attr? db attr :db/isComponent))\n\n(defn #?@(:clj  [^Boolean indexing?]\n          :cljs [^boolean indexing?]) [db attr]\n  (is-attr? db attr :db/index))\n\n(defn entid [db eid]\n  {:pre [(db? db)]}\n  (cond\n    (and (number? eid) (pos? eid))\n    eid\n    \n    (sequential? eid)\n    (let [[attr value] eid]\n      (cond\n        (not= (count eid) 2)\n          (raise \"Lookup ref should contain 2 elements: \" eid\n            {:error :lookup-ref/syntax, :entity-id eid})\n        (not (is-attr? db attr :db/unique))\n          (raise \"Lookup ref attribute should be marked as :db/unique: \" eid\n            {:error :lookup-ref/unique, :entity-id eid})\n        (nil? value)\n          nil\n        :else\n          (-> (-datoms db :avet eid) first :e)))\n    \n    #?@(:cljs [(array? eid) (recur db (array-seq eid))])\n    \n    (keyword? eid)\n    (-> (-datoms db :avet [:db/ident eid]) first :e)\n\n    :else\n    (raise \"Expected number or lookup ref for entity id, got \" eid\n      {:error :entity-id/syntax, :entity-id eid})))\n\n(defn entid-strict [db eid]\n  (or (entid db eid)\n      (raise \"Nothing found for entity id \" eid\n             {:error :entity-id/missing\n              :entity-id eid})))\n\n(defn entid-some [db eid]\n  (when eid\n    (entid-strict db eid)))\n\n;;;;;;;;;; Transacting\n\n(defn validate-datom [db ^Datom datom]\n  (when (and (datom-added datom)\n             (is-attr? db (.-a datom) :db/unique))\n    (when-some [found (not-empty (-datoms db :avet [(.-a datom) (.-v datom)]))]\n      (raise \"Cannot add \" datom \" because of unique constraint: \" found\n             {:error :transact/unique\n              :attribute (.-a datom)\n              :datom datom}))))\n\n(defn- validate-eid [eid at]\n  (when-not (number? eid)\n    (raise \"Bad entity id \" eid \" at \" at \", expected number\"\n           {:error :transact/syntax, :entity-id eid, :context at})))\n\n(defn- validate-attr [attr at]\n  (when-not (or (keyword? attr) (string? attr))\n    (raise \"Bad entity attribute \" attr \" at \" at \", expected keyword or string\"\n           {:error :transact/syntax, :attribute attr, :context at})))\n\n(defn- validate-val [v at]\n  (when (nil? v)\n    (raise \"Cannot store nil as a value at \" at\n           {:error :transact/syntax, :value v, :context at})))\n\n(defn- current-tx [report]\n  (inc (get-in report [:db-before :max-tx])))\n\n(defn- next-eid [db]\n  (inc (:max-eid db)))\n\n(defn- #?@(:clj  [^Boolean tx-id?]\n           :cljs [^boolean tx-id?])\n  [e]\n  (or (= e :db/current-tx)\n      (= e \":db/current-tx\") ;; for datascript.js interop\n      (= e \"datomic.tx\")\n      (= e \"datascript.tx\")))\n\n(defn- #?@(:clj  [^Boolean tempid?]\n           :cljs [^boolean tempid?])\n  [x]\n  (or (and (number? x) (neg? x)) (string? x)))\n\n(defn- new-eid? [db eid]\n  (and (> eid (:max-eid db))\n       (< eid tx0))) ;; tx0 is max eid\n\n(defn- advance-max-eid [db eid]\n  (cond-> db\n    (new-eid? db eid)\n      (assoc :max-eid eid)))\n\n(defn- allocate-eid\n  ([report eid]\n    (update-in report [:db-after] advance-max-eid eid))\n  ([report e eid]\n    (cond-> report\n      (tx-id? e)\n        (assoc-in [:tempids e] eid)\n      (tempid? e)\n        (assoc-in [:tempids e] eid)\n      (and (not (tempid? e)) \n           (new-eid? (:db-after report) eid))\n        (assoc-in [:tempids eid] eid)\n      true\n        (update-in [:db-after] advance-max-eid eid))))\n\n;; In context of `with-datom` we can use faster comparators which\n;; do not check for nil (~10-15% performance gain in `transact`)\n\n(defn- with-datom [db ^Datom datom]\n  (validate-datom db datom)\n  (let [indexing? (indexing? db (.-a datom))]\n    (if (datom-added datom)\n      (cond-> db\n        true      (update-in [:eavt] set/conj datom cmp-datoms-eavt-quick)\n        true      (update-in [:aevt] set/conj datom cmp-datoms-aevt-quick)\n        indexing? (update-in [:avet] set/conj datom cmp-datoms-avet-quick)\n        true      (advance-max-eid (.-e datom))\n        true      (assoc :hash (atom 0)))\n      (if-some [removing (first (-search db [(.-e datom) (.-a datom) (.-v datom)]))]\n        (cond-> db\n          true      (update-in [:eavt] set/disj removing cmp-datoms-eavt-quick)\n          true      (update-in [:aevt] set/disj removing cmp-datoms-aevt-quick)\n          indexing? (update-in [:avet] set/disj removing cmp-datoms-avet-quick)\n          true      (assoc :hash (atom 0)))\n        db))))\n\n(defn- transact-report [report datom]\n  (-> report\n      (update-in [:db-after] with-datom datom)\n      (update-in [:tx-data] conj datom)))\n\n(defn #?@(:clj  [^Boolean reverse-ref?]\n          :cljs [^boolean reverse-ref?]) [attr]\n  (cond\n    (keyword? attr)\n    (= \\_ (nth (name attr) 0))\n    \n    (string? attr)\n    (boolean (re-matches #\"(?:([^/]+)/)?_([^/]+)\" attr))\n   \n    :else\n    (raise \"Bad attribute type: \" attr \", expected keyword or string\"\n           {:error :transact/syntax, :attribute attr})))\n\n(defn reverse-ref [attr]\n  (cond\n    (keyword? attr)\n    (if (reverse-ref? attr)\n      (keyword (namespace attr) (subs (name attr) 1))\n      (keyword (namespace attr) (str \"_\" (name attr))))\n\n   (string? attr)\n   (let [[_ ns name] (re-matches #\"(?:([^/]+)/)?([^/]+)\" attr)]\n     (if (= \\_ (nth name 0))\n       (if ns (str ns \"/\" (subs name 1)) (subs name 1))\n       (if ns (str ns \"/_\" name) (str \"_\" name))))\n   \n   :else\n    (raise \"Bad attribute type: \" attr \", expected keyword or string\"\n           {:error :transact/syntax, :attribute attr})))\n\n\n(defn- check-upsert-conflict [entity acc]\n  (let [[e a v] acc\n        _e (:db/id entity)]\n    (if (or (nil? _e)\n            (tempid? _e)\n            (nil? acc)\n            (== _e e))\n      acc\n      (raise \"Conflicting upsert: \" [a v] \" resolves to \" e\n             \", but entity already has :db/id \" _e\n             { :error :transact/upsert\n               :entity entity\n               :assertion acc }))))\n\n(defn- upsert-reduce-fn [db eav a v]\n  (let [e (:e (first (-datoms db :avet [a v])))]\n    (cond\n      (nil? e) ;; value not yet in db\n      eav\n\n      (nil? eav) ;; first upsert\n      [e a v]\n\n      (= (get eav 0) e) ;; second+ upsert, but does not conflict\n      eav\n\n      :else\n      (let [[_e _a _v] eav]\n        (raise \"Conflicting upserts: \" [_a _v] \" resolves to \" _e\n               \", but \" [a v] \" resolves to \" e\n               { :error     :transact/upsert\n                 :assertion [e a v]\n                 :conflict  [_e _a _v] })))))\n\n(defn- upsert-eid [db entity]\n  (when-some [idents (not-empty (-attrs-by db :db.unique/identity))]\n    (->>\n      (reduce-kv\n        (fn [eav a v] ;; eav = [e a v]\n          (cond\n            (not (contains? idents a))\n            eav\n\n            (and\n              (multival? db a)\n              (or\n                (arrays/array? v)\n                (and (coll? v) (not (map? v)))))\n            (reduce #(upsert-reduce-fn db %1 a %2) eav v)\n\n            :else\n            (upsert-reduce-fn db eav a v)))\n        nil\n        entity)\n     (check-upsert-conflict entity)\n     first))) ;; getting eid from eav\n\n\n;; multivals/reverse can be specified as coll or as a single value, trying to guess\n(defn- maybe-wrap-multival [db a vs]\n  (cond\n    ;; not a multival context\n    (not (or (reverse-ref? a)\n             (multival? db a)))\n    [vs]\n\n    ;; not a collection at all, so definitely a single value\n    (not (or (arrays/array? vs)\n             (and (coll? vs) (not (map? vs)))))\n    [vs]\n    \n    ;; probably lookup ref\n    (and (= (count vs) 2)\n         (is-attr? db (first vs) :db.unique/identity))\n    [vs]\n    \n    :else vs))\n\n\n(defn- explode [db entity]\n  (let [eid (:db/id entity)]\n    (for [[a vs] entity\n          :when  (not= a :db/id)\n          :let   [_          (validate-attr a {:db/id eid, a vs})\n                  reverse?   (reverse-ref? a)\n                  straight-a (if reverse? (reverse-ref a) a)\n                  _          (when (and reverse? (not (ref? db straight-a)))\n                               (raise \"Bad attribute \" a \": reverse attribute name requires {:db/valueType :db.type/ref} in schema\"\n                                      {:error :transact/syntax, :attribute a, :context {:db/id eid, a vs}}))]\n          v      (maybe-wrap-multival db a vs)]\n      (if (and (ref? db straight-a) (map? v)) ;; another entity specified as nested map\n        (assoc v (reverse-ref a) eid)\n        (if reverse?\n          [:db/add v   straight-a eid]\n          [:db/add eid straight-a v])))))\n\n(defn- transact-add [report [_ e a v tx :as ent]]\n  (validate-attr a ent)\n  (validate-val  v ent)\n  (let [tx        (or tx (current-tx report))\n        db        (:db-after report)\n        e         (entid-strict db e)\n        v         (if (ref? db a) (entid-strict db v) v)\n        new-datom (datom e a v tx)]\n    (if (multival? db a)\n      (if (empty? (-search db [e a v]))\n        (transact-report report new-datom)\n        report)\n      (if-some [^Datom old-datom (first (-search db [e a]))]\n        (if (= (.-v old-datom) v)\n          report\n          (-> report\n            (transact-report (datom e a (.-v old-datom) tx false))\n            (transact-report new-datom)))\n        (transact-report report new-datom)))))\n\n(defn- transact-retract-datom [report ^Datom d]\n  (let [tx (current-tx report)]\n    (transact-report report (datom (.-e d) (.-a d) (.-v d) tx false))))\n\n(defn- retract-components [db datoms]\n  (into #{} (comp\n              (filter (fn [^Datom d] (component? db (.-a d))))\n              (map (fn [^Datom d] [:db.fn/retractEntity (.-v d)]))) datoms))\n\n(declare transact-tx-data)\n\n(defn- retry-with-tempid [initial-report report es tempid upserted-eid]\n  (if (contains? (:tempids initial-report) tempid)\n    (raise \"Conflicting upsert: \" tempid \" resolves\"\n           \" both to \" upserted-eid \" and \" (get-in initial-report [:tempids tempid])\n      { :error :transact/upsert })\n    ;; try to re-run from the beginning\n    ;; but remembering that `tempid` will resolve to `upserted-eid`\n    (let [tempids' (-> (:tempids report)\n                     (assoc tempid upserted-eid))\n          report'  (assoc initial-report :tempids tempids')]\n      (transact-tx-data report' es))))\n\n(def builtin-fn?\n  #{:db.fn/call\n    :db.fn/cas\n    :db/cas\n    :db/add\n    :db/retract\n    :db.fn/retractAttribute\n    :db.fn/retractEntity\n    :db/retractEntity})\n\n(defn transact-tx-data [initial-report initial-es]\n  (when-not (or (nil? initial-es)\n                (sequential? initial-es))\n    (raise \"Bad transaction data \" initial-es \", expected sequential collection\"\n           {:error :transact/syntax, :tx-data initial-es}))\n  (loop [report (-> initial-report\n                  (update :db-after transient))\n         es     initial-es]\n    (let [[entity & entities] es\n          db                  (:db-after report)\n          {:keys [tempids]}   report]\n      (cond\n        (empty? es)\n        (-> report\n            (assoc-in  [:tempids :db/current-tx] (current-tx report))\n            (update-in [:db-after :max-tx] inc)\n            (update :db-after persistent!))\n\n        (nil? entity)\n        (recur report entities)\n\n        (map? entity)\n        (let [old-eid (:db/id entity)]\n          (cond+\n            ;; :db/current-tx / \"datomic.tx\" => tx\n            (tx-id? old-eid)\n            (let [id (current-tx report)]\n              (recur (allocate-eid report old-eid id)\n                     (cons (assoc entity :db/id id) entities)))\n           \n            ;; lookup-ref => resolved | error\n            (sequential? old-eid)\n            (let [id (entid-strict db old-eid)]\n              (recur report\n                     (cons (assoc entity :db/id id) entities)))\n           \n            ;; upserted => explode | error\n            :let [upserted-eid (upsert-eid db entity)]\n\n            (some? upserted-eid)\n            (if (and (tempid? old-eid)\n                     (contains? tempids old-eid)\n                     (not= upserted-eid (get tempids old-eid)))\n              (retry-with-tempid initial-report report initial-es old-eid upserted-eid)\n              (recur (allocate-eid report old-eid upserted-eid)\n                     (concat (explode db (assoc entity :db/id upserted-eid)) entities)))\n           \n            ;; resolved | allocated-tempid | tempid | nil => explode\n            (or (number? old-eid)\n                (nil?    old-eid)\n                (string? old-eid))\n            (let [new-eid (cond\n                            (nil? old-eid)    (next-eid db)\n                            (tempid? old-eid) (or (get tempids old-eid)\n                                                  (next-eid db))\n                            :else             old-eid)\n                  new-entity (assoc entity :db/id new-eid)]                \n              (recur (allocate-eid report old-eid new-eid)\n                     (concat (explode db new-entity) entities)))\n           \n            ;; trash => error\n            :else\n            (raise \"Expected number, string or lookup ref for :db/id, got \" old-eid\n              { :error :entity-id/syntax, :entity entity })))\n\n        (sequential? entity)\n        (let [[op e a v] entity]\n          (cond\n            (= op :db.fn/call)\n            (let [[_ f & args] entity]\n              (recur report (concat (apply f db args) entities)))\n            \n            (and (keyword? op)\n                 (not (builtin-fn? op)))\n            (if-some [ident (entid db op)]\n              (let [fun  (-> (-search db [ident :db/fn]) first :v)\n                    args (next entity)]\n                (if (fn? fun)\n                  (recur report (concat (apply fun db args) entities))\n                  (raise \"Entity \" op \" expected to have :db/fn attribute with fn? value\"\n                         {:error :transact/syntax, :operation :db.fn/call, :tx-data entity})))\n              (raise \"Can’t find entity for transaction fn \" op\n                     {:error :transact/syntax, :operation :db.fn/call, :tx-data entity}))\n            \n            (and (tempid? e) (not= op :db/add))\n            (raise \"Can't use tempid in '\" entity \"'. Tempids are allowed in :db/add only\"\n              { :error :transact/syntax, :op entity })\n\n            (or (= op :db.fn/cas)\n                (= op :db/cas))\n            (let [[_ e a ov nv] entity\n                  e (entid-strict db e)\n                  _ (validate-attr a entity)\n                  ov (if (ref? db a) (entid-strict db ov) ov)\n                  nv (if (ref? db a) (entid-strict db nv) nv)\n                  _ (validate-val nv entity)\n                  datoms (vec (-search db [e a]))]\n              (if (multival? db a)\n                (if (some (fn [^Datom d] (= (.-v d) ov)) datoms)\n                  (recur (transact-add report [:db/add e a nv]) entities)\n                  (raise \":db.fn/cas failed on datom [\" e \" \" a \" \" (map :v datoms) \"], expected \" ov\n                         {:error :transact/cas, :old datoms, :expected ov, :new nv}))\n                (let [v (:v (first datoms))]\n                  (if (= v ov)\n                    (recur (transact-add report [:db/add e a nv]) entities)\n                    (raise \":db.fn/cas failed on datom [\" e \" \" a \" \" v \"], expected \" ov\n                           {:error :transact/cas, :old (first datoms), :expected ov, :new nv })))))\n\n            (tx-id? e)\n            (recur (allocate-eid report e (current-tx report)) (cons [op (current-tx report) a v] entities))\n\n            (and (ref? db a) (tx-id? v))\n            (recur (allocate-eid report v (current-tx report)) (cons [op e a (current-tx report)] entities))\n\n            (and (ref? db a) (tempid? v))\n            (if-some [vid (get tempids v)]\n              (recur report (cons [op e a vid] entities))\n              (recur (allocate-eid report v (next-eid db)) es))\n\n            (tempid? e)\n            (let [upserted-eid  (when (is-attr? db a :db.unique/identity)\n                                  (:e (first (-datoms db :avet [a v]))))\n                  allocated-eid (get tempids e)]\n              (if (and upserted-eid allocated-eid (not= upserted-eid allocated-eid))\n                (retry-with-tempid initial-report report initial-es e upserted-eid)\n                (let [eid (or upserted-eid allocated-eid (next-eid db))]\n                  (recur (allocate-eid report e eid) (cons [op eid a v] entities)))))\n\n            (= op :db/add)\n            (recur (transact-add report entity) entities)\n\n            (and (= op :db/retract) v)\n            (if-some [e (entid db e)]\n              (let [v (if (ref? db a) (entid-strict db v) v)]\n                (validate-attr a entity)\n                (validate-val v entity)\n                (if-some [old-datom (first (-search db [e a v]))]\n                  (recur (transact-retract-datom report old-datom) entities)\n                  (recur report entities)))\n              (recur report entities))\n\n            (or (= op :db.fn/retractAttribute)\n                (= op :db/retract))\n            (if-some [e (entid db e)]\n              (let [_      (validate-attr a entity)\n                    datoms (vec (-search db [e a]))]\n                (recur (reduce transact-retract-datom report datoms)\n                       (concat (retract-components db datoms) entities)))\n              (recur report entities))\n\n            (or (= op :db.fn/retractEntity)\n                (= op :db/retractEntity))\n            (if-some [e (entid db e)]\n              (let [e-datoms (vec (-search db [e]))\n                    v-datoms (vec (mapcat (fn [a] (-search db [nil a e])) (-attrs-by db :db.type/ref)))]\n                (recur (reduce transact-retract-datom report (concat e-datoms v-datoms))\n                       (concat (retract-components db e-datoms) entities)))\n              (recur report entities))\n\n           :else\n           (raise \"Unknown operation at \" entity \", expected :db/add, :db/retract, :db.fn/call, :db.fn/retractAttribute, :db.fn/retractEntity or an ident corresponding to an installed transaction function (e.g. {:db/ident <keyword> :db/fn <Ifn>}, usage of :db/ident requires {:db/unique :db.unique/identity} in schema)\" {:error :transact/syntax, :operation op, :tx-data entity})))\n       \n       (datom? entity)\n       (let [[e a v tx added] entity]\n         (if added\n           (recur (transact-add report [:db/add e a v tx]) entities)\n           (recur report (cons [:db/retract e a v] entities))))\n\n       :else\n       (raise \"Bad entity type at \" entity \", expected map or vector\"\n              {:error :transact/syntax, :tx-data entity})))))\n","~:reader-features",["^H",["~:cljs"]],"~:cljc",true,"~:source-map-compact",["^ ","mappings","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","names",["datascript.db/Exception","js/Error","datascript.db/IllegalArgumentException","datascript.db/UnsupportedOperationException","datascript.db/e0","datascript.db/tx0","datascript.db/emax","datascript.db/txmax","datascript.db/implicit-schema","datascript.db/seqable?","x","cljs.core/seqable?","me.tonsky.persistent-sorted-set.arrays/array?","datascript.db/cljs-env?","env","cljs.core/boolean","datascript.db/combine-hashes","y","cljs.core/hash-combine","x__4487__auto__","m__4488__auto__","datascript.db/datom-tx","goog/typeOf","m__4485__auto__","cljs.core/missing-protocol","datascript.db/datom-added","datascript.db/IDatom","this","cljs.core/PROTOCOL_SENTINEL","this__4428__auto__","writer__4429__auto__","opt__4430__auto__","cljs.core/-write","datascript.db/Datom","datascript.db/->Datom","e","a","v","tx","_hash","d","datascript.db/hash-datom","o","datascript.db/equiv-datom","datascript.db/seq-datom","k","datascript.db/val-at-datom","nf","i","datascript.db/nth-datom","not-found","datascript.db/assoc-datom","writer","opts","cljs.core/pr-sequential-writer","cljs.core/pr-writer","goog/exportSymbol","var_args","G__22173","datascript.db/datom","added","datascript.db/datom?","cljs.core/hash","cljs.core._EQ_","cljs.core/List","G__22177","G__22179","G__22180","G__22181","G__22182","cljs.core/Keyword","datascript.db.datom","datascript.db/datom-from-reader","vec","cljs.core.apply","datascript.db/cmp","o1","o2","cljs.core/compare","datascript.db/cmp-datoms-eavt","d1","d2","c__21474__auto__","datascript.db/cmp-datoms-aevt","datascript.db/cmp-datoms-avet","datascript.db/cmp-attr-quick","a1","a2","cljs.core/-compare","goog.array/defaultCompare","datascript.db/cmp-datoms-eav-quick","datascript.db/cmp-datoms-eavt-quick","datascript.db/cmp-datoms-aevt-quick","datascript.db/cmp-datoms-avet-quick","datascript.db/diff-sorted","b","cmp","only-a","only-b","both","cljs.core/empty?","cljs.core/not-empty","cljs.core.into","first-a","cljs.core/first","first-b","diff","cljs.core.conj","cljs.core/next","datascript.db/-search","datascript.db/ISearch","data","pattern","datascript.db/-datoms","datascript.db/-seek-datoms","datascript.db/-rseek-datoms","datascript.db/-index-range","datascript.db/IIndexAccess","db","index","components","attr","start","end","datascript.db/-schema","datascript.db/-attrs-by","datascript.db/IDB","property","datascript.db/db-transient","cljs.core.update","cljs.core/transient","datascript.db/db-persistent!","cljs.core/persistent!","this__4439__auto__","k__4440__auto__","this__4441__auto__","k22212","else__4442__auto__","G__22216","schema","eavt","aevt","avet","max-eid","max-tx","rschema","hash","cljs.core.get","__extmap","this__4458__auto__","f__4459__auto__","init__4460__auto__","cljs.core.reduce","ret__4461__auto__","p__22217","vec__22218","k__4462__auto__","cljs.core.nth","v__4463__auto__","this__4453__auto__","writer__4454__auto__","opts__4455__auto__","pr-pair__4456__auto__","keyval__4457__auto__","cljs.core.concat","cljs.core/PersistentVector","G__22211","cljs.core/RecordIter","cljs.core/-iterator","cljs.core/nil-iter","this__4437__auto__","__meta","this__4434__auto__","__hash","this__4443__auto__","cljs.core/count","this__4435__auto__","h__4297__auto__","coll__4436__auto__","cljs.core/hash-unordered-coll","this22213","other22214","this__4448__auto__","k__4449__auto__","cljs.core/contains?","cljs.core.dissoc","cljs.core/-with-meta","this__4446__auto__","k__4447__auto__","pred__22227","cljs.core/keyword-identical?","expr__22228","cljs.core.assoc","this__4451__auto__","cljs.core/seq","cljs.core/MapEntry","this__4438__auto__","this__4444__auto__","entry__4445__auto__","cljs.core/vector?","cljs.core/-nth","cljs.core/-conj","datascript.db/DB","this__4482__auto__","writer__4483__auto__","G__22215","extmap__4478__auto__","G__22236","cljs.core/record?","datascript.db/->DB","datascript.db/map->DB","datascript.db/hash-db","other","datascript.db/equiv-db","cljs.core/-seq","cljs.core/-rseq","cljs.core/with-meta","G__22245","datascript.db/empty-db","cljs.core/meta","w","datascript.db/pr-db","key","cljs.core.ex_info","fexpr__22257","vec__22260","me.tonsky.persistent_sorted_set.slice","cljs.core.filter","datascript.db/indexing?","cs","datascript.db/components->pattern","me.tonsky.persistent_sorted_set.rslice","cljs.core.pr_str","G__22251","G__22252","datascript.db/validate-attr","datascript.db/resolve-datom","datascript.db/db?","cljs.core/native-satisfies?","k22279","G__22283","unfiltered-db","pred","p__22284","vec__22285","G__22278","this22280","other22281","pred__22291","expr__22292","datascript.db/FilteredDB","G__22282","G__22294","datascript.db/->FilteredDB","datascript.db/map->FilteredDB","datascript.db/hash-fdb","_","datascript.db/attr->properties","G__22299","G__22301","datascript.db/rschema","cljs.core/reduce-kv","m","keys->values","value","prop","datascript.db/validate-schema-key","expected","datascript.db/validate-schema","seq__22302","chunk__22303","count__22304","i__22305","vec__22312","temp__5735__auto__","cljs.core/chunked-seq?","c__4609__auto__","cljs.core/chunk-first","cljs.core/chunk-rest","vec__22315","kv","comp?","and__4174__auto__","cljs.core.not_EQ_","G__22327","datascript.db.empty_db","cljs.core.merge","me.tonsky.persistent_sorted_set.sorted_set_by","cljs.core.atom","datascript.db/init-max-eid","or__4185__auto__","G__22335","datascript.db/init-db","datoms","datascript.db.init_db","indexed","arr","G__22336","me.tonsky.persistent-sorted-set.arrays/into-array","me.tonsky.persistent-sorted-set.arrays/asort","me.tonsky.persistent-sorted-set/from-sorted-array","avet-datoms","avet-arr","cljs.core/to-array","cljs.core.transduce","cljs.core.map","cljs.core/max","datascript.db/equiv-db-index","xs","ys","cljs.core/deref","h","cljs.core/reset!","p__22363","map__22364","cljs.core/hash-map","datascript.db/db-from-reader","p__22371","vec__22372","t","default-e","default-tx","G__22379","G__22380","datascript.db/entid-some","datascript.db/ref?","datascript.db/entid-strict","p__22381","vec__22382","c0","c1","c2","c3","G__22385","k22387","G__22391","db-before","db-after","tx-data","tempids","tx-meta","p__22392","vec__22393","G__22386","this22388","other22389","pred__22404","expr__22405","datascript.db/TxReport","G__22390","G__22409","datascript.db/->TxReport","datascript.db/map->TxReport","datascript.db/is-attr?","datascript.db/multival?","datascript.db/component?","datascript.db/entid","eid","cljs.core/sequential?","vec__22422","cljs.core/array?","cljs.core.array_seq","datascript.db/validate-datom","datom","temp__5739__auto__","found","datascript.db/validate-eid","at","datascript.db/validate-val","datascript.db/current-tx","report","cljs.core.get_in","datascript.db/next-eid","datascript.db/tx-id?","datascript.db/tempid?","datascript.db/new-eid?","datascript.db/advance-max-eid","G__22449","G__22452","datascript.db/allocate-eid","cljs.core.update_in","G__22453","cljs.core/assoc-in","datascript.db/with-datom","indexing?","G__22456","me.tonsky.persistent-sorted-set/conj","temp__5737__auto__","removing","G__22463","me.tonsky.persistent-sorted-set/disj","datascript.db/transact-report","cljs.core/conj","datascript.db/reverse-ref?","cljs.core/name","cljs.core/re-matches","datascript.db/reverse-ref","cljs.core.keyword","cljs.core/namespace","cljs.core.subs","vec__22471","ns","name","datascript.db/check-upsert-conflict","entity","acc","vec__22476","_e","datascript.db/upsert-reduce-fn","eav","vec__22486","_a","_v","datascript.db/upsert-eid","idents","cljs.core/coll?","cljs.core/map?","p1__22493#","p2__22494#","datascript.db/maybe-wrap-multival","vs","datascript.db/explode","iter__4582__auto__","s__22501","cljs.core/LazySeq","xs__6292__auto__","vec__22507","iterys__4578__auto__","s__22503","c__4580__auto__","size__4581__auto__","b__22505","cljs.core/chunk-buffer","i__22504","cljs.core/chunk-append","cljs.core/chunk-cons","cljs.core/chunk","iter__22502","cljs.core/cons","cljs.core/rest","fs__4579__auto__","iter__22500","reverse?","straight-a","p__22514","vec__22515","datascript.db/transact-add","ent","new-datom","old-datom","datascript.db/transact-retract-datom","datascript.db/retract-components","cljs.core.comp","datascript.db/retry-with-tempid","initial-report","es","tempid","upserted-eid","tempids'","report'","datascript.db/transact-tx-data","datascript.db/builtin-fn?","initial-es","vec__22562","seq__22563","first__22564","map__22565","entities","cljs.core/inc","old-eid","id","datascript.db.allocate_eid","new-eid","new-entity","vec__22578","op","vec__22581","seq__22582","first__22583","f","args","cljs.core/not","ident","fun","cljs.core/fn?","vec__22589","ov","nv","cljs.core/vec","cljs.core/some","vid","allocated-eid","e-datoms","v-datoms","cljs.core.mapcat","vec__22620"]],"~:used-vars",["^H",["~$cljs.core/array?","~$datascript.db/allocate-eid","~$cljs.core/PROTOCOL_SENTINEL","~$datascript.db/IllegalArgumentException","~$cljs.core/comp","~$cljs.core/keyword","~$cljs.core/sequential?","~$datascript.db/nth-datom","~$datascript.db/resolve-datom","~$datascript.db/current-tx","~$datascript.db/pr-db","~$datascript.db/Exception","~$datascript.db/empty-db","~$datascript.db/upsert-reduce-fn","~$cljs.core/pr-sequential-writer","~$datascript.db/component?","~$cljs.core/vector?","~$datascript.db/assoc-datom","~$cljs.core/filter","~$cljs.core/=","~$datascript.db/txmax","~$datascript.db/map->TxReport","~$datascript.db/db?","~$datascript.db/-schema","~$cljs.core/-assoc","~$cljs.core/re-matches","~$datascript.db/check-upsert-conflict","~$cljs.core/-write","~$datascript.db/retract-components","~$datascript.db/-search","~$datascript.db/IDatom","~$datascript.db/equiv-db-index","~$cljs.core/pr-writer","~$cljs.core/-iterator","~$cljs.core/hash","~$datascript.db/combine-hashes","~$datascript.db/tx0","~$cljs.core/count","~$datascript.db/cmp","~$cljs.core/reduce","~$cljs.core/seq","~$cljs.core/apply","~$datascript.db/maybe-wrap-multival","~$cljs.core/Keyword","~$datascript.db/->TxReport","~$datascript.db/map->DB","~$cljs.core/-rseq","~$me.tonsky.persistent-sorted-set/rslice","~$datascript.db/ref?","~$datascript.db/cmp-datoms-aevt","~$cljs.core/not=","~$datascript.db/explode","~$cljs.core/MapEntry","~$cljs.core/dissoc","~$datascript.db/cmp-datoms-avet-quick","~$datascript.db/implicit-schema","~$cljs.core/chunk-rest","~$cljs.core/atom","~$cljs.core/-with-meta","~$datascript.db/IDB","~$cljs.core/concat","~$datascript.db/db-transient","~$cljs.core/pr-str","~$datascript.db/validate-eid","~$datascript.db/validate-schema","~$datascript.db/new-eid?","~$datascript.db/builtin-fn?","~$goog/exportSymbol","~$datascript.db/equiv-db","~$datascript.db/reverse-ref?","~$datascript.db/upsert-eid","~$datascript.db/->FilteredDB","~$cljs.core/native-satisfies?","~$datascript.db/init-db","~$cljs.core/empty?","~$cljs.core/contains?","~$cljs.core/into","~$cljs.core/map?","~$cljs.core/reset!","~$cljs.core/array-seq","~$datascript.db/datom?","~$cljs.core/conj","~$datascript.db/attr->properties","~$datascript.db/tempid?","~$cljs.core/-compare","~$datascript.db/components->pattern","~$cljs.core/-conj","~$cljs.core/update","~$datascript.db/validate-datom","~$datascript.db/datom-from-reader","~$cljs.core/with-meta","~$cljs.core/namespace","~$cljs.core/map","~$datascript.db/equiv-datom","~$cljs.core/fn?","~$datascript.db/multival?","~$cljs.core/PersistentVector","~$datascript.db/FilteredDB","~$datascript.db/validate-attr","~$datascript.db/e0","~$cljs.core/get-in","~$cljs.core/List","~$datascript.db/transact-report","~$datascript.db/cmp-datoms-eav-quick","~$datascript.db/val-at-datom","~$datascript.db/datom-tx","~$cljs.core/get","~$me.tonsky.persistent-sorted-set.arrays/array?","~$datascript.db/reverse-ref","~$datascript.db/Datom","~$datascript.db/entid-strict","~$cljs.core/-nth","~$datascript.db/-attrs-by","~$datascript.db/-datoms","~$cljs.core/not-empty","~$datascript.db/advance-max-eid","~$datascript.db/->Datom","~$datascript.db/next-eid","~$datascript.db/cmp-datoms-eavt-quick","~$datascript.db/map->FilteredDB","~$datascript.db/transact-retract-datom","~$datascript.db/ISearch","~$cljs.core/missing-protocol","~$datascript.db/datom","~$datascript.db/entid","~$datascript.db/cmp-datoms-avet","~$cljs.core/persistent!","~$goog.array/defaultCompare","~$cljs.core/-lookup","~$datascript.db/-index-range","~$cljs.core/nth","~$cljs.core/ex-info","~$cljs.core/meta","~$datascript.db/IIndexAccess","~$datascript.db/seqable?","~$datascript.db/hash-db","~$datascript.db/seq-datom","~$cljs.core/hash-combine","~$datascript.db/db-from-reader","~$cljs.core/nil-iter","~$datascript.db/tx-id?","~$datascript.db/db-persistent!","~$me.tonsky.persistent-sorted-set/sorted-set-by","~$cljs.core/next","~$datascript.db/diff-sorted","~$cljs.core/RecordIter","~$cljs.core/transient","~$datascript.db/init-max-eid","~$datascript.db/hash-datom","~$cljs.core/not","~$cljs.core/compare","~$datascript.db/is-attr?","~$datascript.db/retry-with-tempid","~$datascript.db/validate-schema-key","~$datascript.db/validate-val","~$datascript.db/hash-fdb","~$cljs.core/cons","~$me.tonsky.persistent-sorted-set/slice","~$cljs.core/assoc","~$datascript.db/emax","~$datascript.db/indexing?","~$cljs.core/assoc-in","~$cljs.core/-seq","~$cljs.core/seqable?","~$datascript.db/DB","~$datascript.db/rschema","~$cljs.core/coll?","~$datascript.db/cljs-env?","~$cljs.core/reduce-kv","~$cljs.core/hash-unordered-coll","~$datascript.db/cmp-datoms-aevt-quick","~$datascript.db/transact-add","~$cljs.core/first","~$datascript.db/cmp-attr-quick","~$datascript.db/-rseek-datoms","~$datascript.db/transact-tx-data","~$datascript.db/-seek-datoms","~$datascript.db/datom-added","~$datascript.db/with-datom","~$cljs.core/name","~$cljs.core/subs","~$cljs.core/merge","~$cljs.core/update-in","~$datascript.db/cmp-datoms-eavt","~$datascript.db/TxReport","~$js/Error","~$datascript.db/entid-some","~$cljs.core/boolean","~$datascript.db/->DB","~$cljs.core/inc","~$cljs.core/some","~$cljs.core/chunked-seq?","~$datascript.db/UnsupportedOperationException"]]],"~:cache-keys",["~#cmap",[["^1T","datascript/db.cljc"],[1590236302000,"~:shadow.build.compiler/resolve",["^ ","~:require-id",null,"~:deps-ids",["^H",[]],"~:deps-syms",["^1C","^1@","^1B","^1E","^1D","^1=","^1?"]]],["^1T","goog/dom/tagname.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","~$goog.dom.HtmlElement"]]],["^1T","goog/math/math.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","~$goog.asserts"]]],["^1T","goog/html/trustedtypes.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/labs/useragent/browser.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","~$goog.labs.userAgent.util","~$goog.object","~$goog.string.internal"]]],["^1T","goog/html/safeurl.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","~$goog.fs.url","~$goog.html.TrustedResourceUrl","~$goog.i18n.bidi.Dir","~$goog.i18n.bidi.DirectionalString","~$goog.string.Const","~$goog.string.TypedString","^6O"]]],["^1T","goog/array/array.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L"]]],["^1T","goog/debug/error.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/dom/nodetype.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/string/typedstring.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/object/object.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/dom/asserts.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L"]]],"~:SHADOW-TIMESTAMP",[1585692398000,1585692398000,1579838325000],["^1T","goog/math/long.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","~$goog.reflect"]]],["^1T","goog/html/trustedresourceurl.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","~$goog.html.trustedtypes","^6R","^6S","^6T","^6U"]]],["^1T","goog/string/internal.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/functions/functions.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/html/safestyle.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6L","~$goog.html.SafeUrl","^6T","^6U","^6O"]]],["^1T","goog/dom/safe.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","~$goog.dom.asserts","~$goog.functions","~$goog.html.SafeHtml","~$goog.html.SafeScript","~$goog.html.SafeStyle","^6Y","^6Q","~$goog.html.uncheckedconversions","^6T","^6O"]]],["^1T","clojure/walk.cljs"],[1579838325000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1@"]]],["^1T","goog/structs/map.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","~$goog.iter.Iterator","~$goog.iter.StopIteration"]]],["^1T","goog/html/safehtml.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6L","~$goog.dom.TagName","~$goog.dom.tags","^71","^72","~$goog.html.SafeStyleSheet","^6Y","^6Q","^6X","^6R","^6S","~$goog.labs.userAgent.browser","^6N","^6T","^6U","^6O"]]],["^1T","goog/dom/tags.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6N"]]],["^1T","me/tonsky/persistent_sorted_set/arrays.cljc"],[1589003956000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1@","~$clojure.string"]]],["^1T","goog/asserts/asserts.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","~$goog.debug.Error","~$goog.dom.NodeType"]]],["^1T","me/tonsky/persistent_sorted_set.cljs"],[1589003956000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1@","^1?"]]],["^1T","goog/uri/uri.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6L","~$goog.string","~$goog.structs","~$goog.structs.Map","~$goog.uri.utils","~$goog.uri.utils.ComponentIndex","~$goog.uri.utils.StandardQueryParam"]]],["^1T","goog/i18n/bidi.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/fs/url.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/base.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",[]]],["^1T","goog/structs/structs.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6N"]]],["^1T","clojure/string.cljs"],[1579838325000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1@","^7=","~$goog.string.StringBuffer"]]],["^1T","goog/string/string.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","~$goog.dom.safe","^73","^6T","^6O"]]],["^1T","clojure/data.cljs"],[1579838325000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1@","~$clojure.set"]]],["^1T","goog/reflect/reflect.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/labs/useragent/util.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6O"]]],["^1T","goog/string/stringbuffer.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","goog/iter/iter.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6L","^6[","~$goog.math"]]],["^1T","goog/html/uncheckedconversions.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","^70","^71","^72","^78","^6Y","^6Q","^6T","^6O"]]],["^1T","goog/dom/htmlelement.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C"]]],["^1T","cljs/core.cljs"],[1579838325000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","~$goog.math.Long","~$goog.math.Integer","^7=","^6N","^1B","~$goog.Uri","^7C"]]],["^1T","goog/html/safescript.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","^6X","^6T","^6U"]]],["^1T","goog/html/safestylesheet.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6L","^72","^6N","^6T","^6U","^6O"]]],["^1T","goog/math/integer.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6W"]]],["^1T","clojure/set.cljs"],[1579838325000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1@"]]],["^1T","goog/uri/utils.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^1B","^6L","^7="]]],["^1T","goog/string/const.js"],[1579837703000,"^6G",["^ ","^6H",null,"^6I",["^H",[]],"^6J",["^1C","^6L","^6U"]]]]],"~: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/db.cljc","^7",1,"^8",24,"^9",1,"^:",37,"^;",true,"^<",true],"^=",["^ ","^>","^?"],"~:shadow/protocol-prefixes",["^H",["datascript$db$IIndexAccess$","datascript$db$IDatom$","datascript$db$IDB$","datascript$db$ISearch$"]],"^@",["^ ","^A","^B","^C","^B","^D","^B","^E","^B","^F","^B"],"^G",["^H",["^I"]],"^J",["^ ","^F",["^ ","^K",["^L",[["~$&","^M"]]],"^7",47,"^8",3,"^6","datascript/db.cljc","^N","^O","^P","^B","^Q",true],"^A",["^ ","^K",["^L",[["^R","^S"]]],"^7",311,"^8",4,"^6","datascript/db.cljc","^N","^T","^P","^B","^Q",true],"^E",["^ ","^K",["^L",[["^U","^V","~$&","^W"]]],"^7",126,"^8",4,"^6","datascript/db.cljc","^N","^X","^P","^B","^Q",true],"^Y",["^ ","^K",["^L",[["^Z","^["]]],"^10","Return then if we are generating cljs code and else for Clojure code.\n     https://groups.google.com/d/msg/clojurescript/iBY5HaQda4A/w1lAQi9_AwsJ","^7",73,"^8",4,"^6","datascript/db.cljc","^N","^11","^P","^B","^Q",true],"^12",["^ ","^K",["^L",[[],["~$x"],["~$x","~$&","^13"]]],"^7",54,"^8",1,"^6","datascript/db.cljc","^N","^14","^P","^B","^Q",true],"^D",["^ ","^K",["^L",[["~$&","^15"]]],"^7",28,"^8",3,"^6","datascript/db.cljc","^N","^16","^P","^B","^Q",true],"^C",["^ ","^K",["^L",[["~$&","^17"]]],"^7",288,"^8",3,"^6","datascript/db.cljc","^N","^18","^P","^B","^Q",true]],"^N","^B","^1:",null,"^1;",["^ ","^1<","^1=","^1>","^1?","^1@","^1@","^1A","^1B","^1C","^1C","^1=","^1=","^1?","^1?","^1D","^1D","^1E","^1E","^1B","^1B"],"^1F",["^H",["^1G","^1H"]],"~:shadow/js-access-global",["^H",["Error"]],"^1I",null,"~:defs",["^ ","~$explode",["^ ","~:protocol-inline",null,"^5",["^ ","^6","datascript/db.cljc","^7",1039,"^8",8,"^9",1039,"^:",15,"~:private",true,"^K",["^L",["~$quote",["^L",[["~$db","~$entity"]]]]]],"^8@",true,"^N","^3;","^6","datascript/db.cljc","^:",15,"~:method-params",["^L",[["^8B","^8C"]]],"~:protocol-impl",null,"~:arglists-meta",["^L",[null,null]],"^8",1,"~:variadic?",false,"^7",1039,"~:ret-tag","~$cljs.core/LazySeq","^9",1039,"~:max-fixed-arity",2,"~:fn-var",true,"^K",["^L",["^8A",["^L",[["^8B","^8C"]]]]]],"~$cmp-datoms-aevt-quick",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",367,"^8",7,"^9",367,"^:",28,"^K",["^L",["^8A",["^L",[["~$d1","~$d2"]]]]]],"^N","^5Z","^6","datascript/db.cljc","^:",28,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",367,"^8H",["^H",["~$any","~$number"]],"^9",367,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$tempid?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",875,"^8",28,"^9",875,"^:",35,"~:tag","~$boolean","^8@",true,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"^8@",true,"^N","^3[","^6","datascript/db.cljc","^:",35,"^8D",["^L",[["~$x"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",874,"^8H","^8S","^9",875,"^8J",1,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"~$validate-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",836,"^8",7,"^9",836,"^:",21,"^K",["^L",["^8A",["^L",[["^8B","~$datom"]]]]]],"^N","^44","^6","datascript/db.cljc","^:",21,"^8D",["^L",[["^8B","^8U"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",836,"^8H","~$clj-nil","^9",836,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^8U"]]]]]],"~$rschema",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",609,"^8",8,"^9",609,"^:",15,"^8@",true,"^K",["^L",["^8A",["^L",[["~$schema"]]]]]],"^8@",true,"^N","^5U","^6","datascript/db.cljc","^:",15,"^8D",["^L",[["^8X"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",609,"^8H",["^H",[null,"^8O"]],"^9",609,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8X"]]]]]],"~$hash-fdb",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",707,"^8",8,"^9",707,"^:",16,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"^8@",true,"^N","^5K","^6","datascript/db.cljc","^:",16,"^8D",["^L",[["^8B"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",707,"^8H",["^H",[null,"^8O"]],"^9",707,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"~$validate-schema-key",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",621,"^8",8,"^9",621,"^:",27,"^8@",true,"^K",["^L",["^8A",["^L",[["~$a","~$k","~$v","~$expected"]]]]]],"^8@",true,"^N","^5I","^6","datascript/db.cljc","^:",27,"^8D",["^L",[["~$a","~$k","~$v","^8["]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",621,"^8H","^8V","^9",621,"^8J",4,"^8K",true,"^K",["^L",["^8A",["^L",[["~$a","~$k","~$v","^8["]]]]]],"~$builtin-fn?",["^ ","^N","^3J","^6","datascript/db.cljc","^7",1099,"^8",1,"^9",1099,"^:",17,"^5",["^ ","^6","datascript/db.cljc","^7",1099,"^8",6,"^9",1099,"^:",17],"^8R","~$cljs.core/ISet"],"~$cljs-env?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",67,"^8",8,"^9",67,"^:",17,"^8@",true,"^K",["^L",["^8A",["^L",[["~$env"]]]]],"^10","Take the &env from a macro, and tell whether we are expanding into cljs."],"^8@",true,"^N","^5W","^6","datascript/db.cljc","^:",17,"^8D",["^L",[["^93"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",67,"^8H","^8S","^9",67,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^93"]]]]],"^10","Take the &env from a macro, and tell whether we are expanding into cljs."],"~$indexing?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",792,"^8",27,"^9",792,"^:",36,"^8R","^8S","^K",["^L",["^8A",["^L",[["^8B","~$attr"]]]]]],"^N","^5P","^6","datascript/db.cljc","^:",36,"^8D",["^L",[["^8B","^95"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",791,"^8H","^8S","^9",792,"^8J",2,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]],"~$emax",["^ ","^5",["^ ","^6","datascript/db.cljc","^7",21,"^8",14,"^9",21,"^:",18,"~:const",true],"^N","^5O","^6","datascript/db.cljc","^:",18,"~:const-expr",["^ ","^19","^97","~:val",2147483647,"~:env",["^ ","~:context","~:expr"],"^1J",2147483647,"^8R","^8P"],"^8",1,"^97",true,"^7",21,"^9",21,"^8R","^8P"],"~$init-max-eid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",658,"^8",8,"^9",658,"^:",20,"^8@",true,"^K",["^L",["^8A",["^L",[["~$eavt"]]]]]],"^8@",true,"^N","^5C","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["^9>"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",658,"^8H",["^H",["^8O","^8P"]],"^9",658,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^9>"]]]]]],"~$->FilteredDB",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^:",32,"^8",22,"~:internal-ctor",true,"~:factory","~:positional","^7",534,"^9",534,"^K",["^L",["^8A",["^L",[["~$unfiltered-db","~$pred","~$hash"]]]]],"^10","Positional factory function for datascript.db/FilteredDB."],"^N","^3O","^6","datascript/db.cljc","^:",32,"^8D",["^L",[["^9C","^9D","^9E"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^9@",true,"^8G",false,"^9A","^9B","^7",534,"^8H","^4=","^9",534,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["^9C","^9D","^9E"]]]]],"^10","Positional factory function for datascript.db/FilteredDB."],"~$hash-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",217,"^8",8,"^9",217,"^:",18,"^8@",true,"^K",["^L",["^8A",["^L",[["~$d"]]]]]],"^8@",true,"^N","^5D","^6","datascript/db.cljc","^:",18,"^8D",["^L",[["~$d"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",217,"^8H","^8P","^9",217,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["~$d"]]]]]],"~$is-attr?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",776,"^8",27,"^9",776,"^:",35,"^8R","^8S","^K",["^L",["^8A",["^L",[["^8B","^95","~$property"]]]]]],"^N","^5G","^6","datascript/db.cljc","^:",35,"^8D",["^L",[["^8B","^95","^9H"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",775,"^8H","^8S","^9",776,"^8J",3,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^95","^9H"]]]]]],"~$-attrs-by",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",414,"^8",4,"^9",414,"^:",13,"~:protocol","^3C","^10",null,"^K",["^L",["^8A",["^L",[["^8B","^9H"]]]]]],"^9J","^3C","^N","^4L","^6","datascript/db.cljc","^:",13,"^8D",["^L",[["^8B","^9H"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",412,"^8H","^8O","^9",414,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^9H"]]]]],"^10",null],"~$datom-added",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",137,"^8",4,"^9",137,"^:",15,"^9J","^2R","^10",null,"^K",["^L",["^8A",["^L",[["~$this"]]]]]],"^9J","^2R","^N","^65","^6","datascript/db.cljc","^:",15,"^8D",["^L",[["^9L"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",135,"^8H","^8O","^9",137,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^9L"]]]]],"^10",null],"~$-datoms",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",407,"^8",4,"^9",407,"^:",11,"^9J","^55","^10",null,"^K",["^L",["^8A",["^L",[["^8B","~$index","~$components"]]]]]],"^9J","^55","^N","^4M","^6","datascript/db.cljc","^:",11,"^8D",["^L",[["^8B","^9N","^9O"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",406,"^8H","^8O","^9",407,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^9N","^9O"]]]]],"^10",null],"~$-rseek-datoms",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",409,"^8",4,"^9",409,"^:",17,"^9J","^55","^10",null,"^K",["^L",["^8A",["^L",[["^8B","^9N","^9O"]]]]]],"^9J","^55","^N","^62","^6","datascript/db.cljc","^:",17,"^8D",["^L",[["^8B","^9N","^9O"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",406,"^8H","^8O","^9",409,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^9N","^9O"]]]]],"^10",null],"~$init-db",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",664,"^8",11,"^9",664,"^:",18,"^8R","~$DB","^K",["^L",["^8A",["^L",[["~$datoms"],["^9S","^8X"]]]]],"~:top-fn",["^ ","^8G",false,"~:fixed-arity",2,"^8J",2,"^8D",["^L",[["^9S"],["^9S","^8X"]]],"^K",["^L",[["^9S"],["^9S","^8X"]]],"^8F",["^L",[null,null]]]],"^N","^3Q","^6","datascript/db.cljc","^:",18,"^9T",["^ ","^8G",false,"^9U",2,"^8J",2,"^8D",["^L",[["^9S"],["^9S","^8X"]]],"^K",["^L",[["^9S"],["^9S","^8X"]]],"^8F",["^L",[null,null]]],"^8D",["^L",[["^9S"],["^9S","^8X"]]],"^8E",null,"^9U",2,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"~:methods",[["^ ","^9U",1,"^8G",false,"^8R","^9R"],["^ ","^9U",2,"^8G",false,"^8R","^5T"]],"^7",664,"^8H","^9R","^9",664,"^8J",2,"^8R","^9R","^8K",true,"^K",["^L",[["^9S"],["^9S","^8X"]]]],"~$val-at-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",232,"^8",8,"^9",232,"^:",20,"^8@",true,"^K",["^L",["^8A",["^L",[["~$d","~$k","~$not-found"]]]]]],"^8@",true,"^N","^4D","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["~$d","~$k","^9X"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",232,"^8H",["^H",[null,"^8O"]],"^9",232,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["~$d","~$k","^9X"]]]]]],"~$equiv-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",222,"^8",8,"^9",222,"^:",19,"^8@",true,"^K",["^L",["^8A",["^L",[["~$d","~$o"]]]]]],"^8@",true,"^N","^49","^6","datascript/db.cljc","^:",19,"^8D",["^L",[["~$d","~$o"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",222,"^8H","^8S","^9",222,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["~$d","~$o"]]]]]],"~$multival?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",780,"^8",27,"^9",780,"^:",36,"^8R","^8S","^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]],"^N","^4;","^6","datascript/db.cljc","^:",36,"^8D",["^L",[["^8B","^95"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",779,"^8H","^8S","^9",780,"^8J",2,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]],"~$transact-add",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",1056,"^8",8,"^9",1056,"^:",20,"^8@",true,"^K",["^L",["^8A",["^L",[["~$report",["~$_","~$e","~$a","~$v","~$tx","^1L","~$ent"]]]]]]],"^8@",true,"^N","^5[","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["^:0","~$p__22514"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",1056,"^8H",["^H",[null,"~$clj","^8O"]],"^9",1056,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^:0",["~$_","~$e","~$a","~$v","^:1","^1L","^:2"]]]]]]],"~$transact-report",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",924,"^8",8,"^9",924,"^:",23,"^8@",true,"^K",["^L",["^8A",["^L",[["^:0","^8U"]]]]]],"^8@",true,"^N","^4B","^6","datascript/db.cljc","^:",23,"^8D",["^L",[["^:0","^8U"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",924,"^8H",["^H",["^:4","^8O"]],"^9",924,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^:0","^8U"]]]]]],"~$transact-tx-data",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",1109,"^8",7,"^9",1109,"^:",23,"^K",["^L",["^8A",["^L",[["~$initial-report","~$initial-es"]]]]]],"^N","^63","^6","datascript/db.cljc","^:",23,"^8D",["^L",[["^:7","^:8"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",1109,"^8H",["^H",["^:4","^8O"]],"^9",1109,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^:7","^:8"]]]]]],"~$pr-db",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",722,"^8",10,"^9",722,"^:",15,"^K",["^L",["^8A",["^L",[["^8B","~$w","~$opts"]]]]]],"^N","^2>","^6","datascript/db.cljc","^:",15,"^8D",["^L",[["^8B","~$w","^::"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",4,"^8G",false,"^7",722,"^8H","^8O","^9",722,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","~$w","^::"]]]]]],"~$diff-sorted",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",381,"^8",8,"^9",381,"^:",19,"^8@",true,"^K",["^L",["^8A",["^L",[["~$a","~$b","~$cmp"]]]]]],"^8@",true,"^N","^5@","^6","datascript/db.cljc","^:",19,"^8D",["^L",[["~$a","~$b","^:<"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",381,"^8H",["^H",["~$cljs.core/IVector","^8V"]],"^9",381,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["~$a","~$b","^:<"]]]]]],"~$datom-tx",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",136,"^8",4,"^9",136,"^:",12,"^9J","^2R","^10",null,"^K",["^L",["^8A",["^L",[["^9L"]]]]]],"^9J","^2R","^N","^4E","^6","datascript/db.cljc","^:",12,"^8D",["^L",[["^9L"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",135,"^8H","^8O","^9",136,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^9L"]]]]],"^10",null],"~$nth-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",243,"^8",8,"^9",243,"^:",17,"^8@",true,"^K",["^L",["^8A",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]]]],"^9T",["^ ","^8G",false,"^9U",3,"^8J",3,"^8D",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]],"^K",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]],"^8F",["^L",[null,null]]]],"^8@",true,"^N","^2;","^6","datascript/db.cljc","^:",17,"^9T",["^ ","^8G",false,"^9U",3,"^8J",3,"^8D",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]],"^K",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]],"^8F",["^L",[null,null]]],"^8D",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]],"^8E",null,"^9U",3,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^9V",[["^ ","^9U",2,"^8G",false],["^ ","^9U",3,"^8G",false]],"^7",243,"^9",243,"^8J",3,"^8K",true,"^K",["^L",[["~$d","~$i"],["~$d","~$i","^9X"]]]],"~$IllegalArgumentException",["^ ","^N","^27","^6","datascript/db.cljc","^7",16,"^8",6,"^9",16,"^:",35,"^5",["^ ","^6","datascript/db.cljc","^7",16,"^8",11,"^9",16,"^:",35],"^8R","~$js"],"~$cmp-datoms-avet",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",336,"^8",7,"^9",336,"^:",22,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"^N","^4Y","^6","datascript/db.cljc","^:",22,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",336,"^8H","^8P","^9",336,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$next-eid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",863,"^8",8,"^9",863,"^:",16,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"^8@",true,"^N","^4Q","^6","datascript/db.cljc","^:",16,"^8D",["^L",[["^8B"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",863,"^8H","^8P","^9",863,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"~$Datom",["^ ","~:num-fields",5,"~:protocols",["^H",["~$cljs.core/IIndexed","^2R","~$cljs.core/IEquiv","~$cljs.core/IHash","~$cljs.core/ISeqable","~$cljs.core/IPrintWithWriter","~$cljs.core/IAssociative","~$cljs.core/ILookup"]],"^N","^4I","^6","datascript/db.cljc","^:",15,"~:type",true,"^8",10,"^7",139,"~:record",false,"^9",139,"^8R","~$function","~:skip-protocol-flag",["^H",["^:G","^:H","^:I","^:J","^:K","^:L","^:M"]]],"~$db?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",528,"^8",7,"^9",528,"^:",10,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"^N","^2J","^6","datascript/db.cljc","^:",10,"^8D",["^L",[["~$x"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",528,"^8H","^8S","^9",528,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"~$check-upsert-conflict",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",960,"^8",8,"^9",960,"^:",29,"^8@",true,"^K",["^L",["^8A",["^L",[["^8C","~$acc"]]]]]],"^8@",true,"^N","^2N","^6","datascript/db.cljc","^:",29,"^8D",["^L",[["^8C","^:T"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",960,"^9",960,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8C","^:T"]]]]]],"~$IDatom",["^ ","^5",["^ ","~:protocol-symbol",true,"^6","datascript/db.cljc","^:",20,"^8",14,"^7",135,"~:protocol-info",["^ ","^9V",["^ ","^:>",[["^9L"]],"^9K",[["^9L"]]]],"^9",135,"~:sigs",["^ ","~:datom-tx",["^ ","^N","^:>","^K",["^L",[["^9L"]]],"^10",null],"~:datom-added",["^ ","^N","^9K","^K",["^L",[["^9L"]]],"^10",null]],"~:jsdoc",["^L",["@interface"]]],"^:V",true,"^N","^2R","^6","datascript/db.cljc","^:",20,"^8",1,"^7",135,"^:W",["^ ","^9V",["^ ","^:>",[["^9L"]],"^9K",[["^9L"]]]],"~:info",null,"^9",135,"^8R","^8O","^:X",["^ ","^:Y",["^ ","^N","^:>","^K",["^L",[["^9L"]]],"^10",null],"^:Z",["^ ","^N","^9K","^K",["^L",[["^9L"]]],"^10",null]],"~:impls",["^H",["^4I"]],"^:[",["^L",["@interface"]]],"~$-search",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",404,"^8",4,"^9",404,"^:",11,"^9J","^4U","^10",null,"^K",["^L",["^8A",["^L",[["~$data","~$pattern"]]]]]],"^9J","^4U","^N","^2Q","^6","datascript/db.cljc","^:",11,"^8D",["^L",[["^;3","^;4"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",403,"^8H","^8O","^9",404,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^;3","^;4"]]]]],"^10",null],"~$equiv-db-index",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",692,"^8",8,"^9",692,"^:",22,"^8@",true,"^K",["^L",["^8A",["^L",[["~$x","~$y"]]]]]],"^8@",true,"^N","^2S","^6","datascript/db.cljc","^:",22,"^8D",["^L",[["~$x","~$y"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",692,"^8H","^8S","^9",692,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["~$x","~$y"]]]]]],"~$combine-hashes",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",79,"^8",7,"^9",79,"^:",21,"^K",["^L",["^8A",["^L",[["~$x","~$y"]]]]]],"^N","^2W","^6","datascript/db.cljc","^:",21,"^8D",["^L",[["~$x","~$y"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",79,"^8H","^8P","^9",79,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["~$x","~$y"]]]]]],"^8U",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",210,"^8",14,"^9",210,"^:",19,"^8R","^:D","^K",["^L",["^8A",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","~$added"]]]]],"^9T",["^ ","^8G",false,"^9U",5,"^8J",5,"^8D",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","^;7"]]],"^K",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","^;7"]]],"^8F",["^L",[null,null,null]]]],"^N","^4W","^6","datascript/db.cljc","^:",19,"^9T",["^ ","^8G",false,"^9U",5,"^8J",5,"^8D",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","^;7"]]],"^K",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","^;7"]]],"^8F",["^L",[null,null,null]]],"^8D",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","^;7"]]],"^8E",null,"^9U",5,"^8F",["^L",[null,null,null]],"^8",1,"^8G",false,"^9V",[["^ ","^9U",3,"^8G",false,"^8R","^4I"],["^ ","^9U",4,"^8G",false,"^8R","^4I"],["^ ","^9U",5,"^8G",false,"^8R","^4I"]],"^7",210,"^8H","^:D","^9",210,"^8J",5,"^8R","^:D","^8K",true,"^K",["^L",[["~$e","~$a","~$v"],["~$e","~$a","~$v","^:1"],["~$e","~$a","~$v","^:1","^;7"]]]],"^9R",["^ ","^:E",8,"^:F",["^H",["~$cljs.core/IRecord","~$cljs.core/IKVReduce","^:H","^:I","~$cljs.core/ICollection","~$cljs.core/ICounted","^:J","~$cljs.core/IMeta","~$cljs.core/ICloneable","^:K","~$cljs.core/IIterable","~$cljs.core/IWithMeta","^:L","~$cljs.core/IMap","^:M"]],"^N","^5T","^6","datascript/db.cljc","^:",24,"^:N",true,"^8",22,"^9@",true,"^7",433,"^:O",true,"^9",433,"^8R","^:P","^:Q",["^H",["^;8","^;9","^:H","^:I","^;:","^;;","^:J","^;<","^;=","^:K","^;>","^;?","^:L","^;@","^:M"]]],"~$map->TxReport",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^:",20,"^8",12,"^9@",true,"^9A","~:map","^7",773,"^9",773,"^K",["^L",["^8A",["^L",[["~$G__22390"]]]]],"^10","Factory function for datascript.db/TxReport, taking a map of keywords to field values."],"^N","^2I","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["^;C"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^9@",true,"^8G",false,"^9A","^;B","^7",773,"^8H","^6<","^9",773,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^;C"]]]]],"^10","Factory function for datascript.db/TxReport, taking a map of keywords to field values."],"^:<",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",314,"^8",7,"^9",314,"^:",10,"^K",["^L",["^8A",["^L",[["~$o1","~$o2"]]]]]],"^N","^2Z","^6","datascript/db.cljc","^:",10,"^8D",["^L",[["^;D","^;E"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",314,"^8H","^8P","^9",314,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^;D","^;E"]]]]]],"~$maybe-wrap-multival",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",1019,"^8",8,"^9",1019,"^:",27,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","~$a","^S"]]]]]],"^8@",true,"^N","^32","^6","datascript/db.cljc","^:",27,"^8D",["^L",[["^8B","~$a","^S"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",1019,"^8H",["^H",[null,"^:="]],"^9",1019,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","~$a","^S"]]]]]],"~$retract-components",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",1080,"^8",8,"^9",1080,"^:",26,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","^9S"]]]]]],"^8@",true,"^N","^2P","^6","datascript/db.cljc","^:",26,"^8D",["^L",[["^8B","^9S"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",1080,"^8H",["^H",["^:4","^8O"]],"^9",1080,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^9S"]]]]]],"~$retry-with-tempid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",1087,"^8",8,"^9",1087,"^:",25,"^8@",true,"^K",["^L",["^8A",["^L",[["^:7","^:0","~$es","~$tempid","~$upserted-eid"]]]]]],"^8@",true,"^N","^5H","^6","datascript/db.cljc","^:",25,"^8D",["^L",[["^:7","^:0","^;I","^;J","^;K"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",1087,"^8H","^8O","^9",1087,"^8J",5,"^8K",true,"^K",["^L",["^8A",["^L",[["^:7","^:0","^;I","^;J","^;K"]]]]]],"~$hash-db",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",700,"^8",8,"^9",700,"^:",15,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"^8@",true,"^N","^57","^6","datascript/db.cljc","^:",15,"^8D",["^L",[["^8B"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",700,"^8H",["^H",[null,"^8O"]],"^9",700,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"~$tx0",["^ ","^5",["^ ","^6","datascript/db.cljc","^7",20,"^8",14,"^9",20,"^:",17,"^97",true],"^N","^2X","^6","datascript/db.cljc","^:",17,"^98",["^ ","^19","^97","^99",536870912,"^9:",["^ ","^9;","^9<"],"^1J",536870912,"^8R","^8P"],"^8",1,"^97",true,"^7",20,"^9",20,"^8R","^8P"],"~$tx-id?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",867,"^8",28,"^9",867,"^:",34,"^8R","^8S","^8@",true,"^K",["^L",["^8A",["^L",[["~$e"]]]]]],"^8@",true,"^N","^5<","^6","datascript/db.cljc","^:",34,"^8D",["^L",[["~$e"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",866,"^8H","^8S","^9",867,"^8J",1,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["~$e"]]]]]],"~$db-persistent!",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",427,"^8",7,"^9",427,"^:",21,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"^N","^5=","^6","datascript/db.cljc","^:",21,"^8D",["^L",[["^8B"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",427,"^8H",["^H",["^:4","^8O"]],"^9",427,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"~$reverse-ref?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",930,"^8",27,"^9",930,"^:",39,"^8R","^8S","^K",["^L",["^8A",["^L",[["^95"]]]]]],"^N","^3M","^6","datascript/db.cljc","^:",39,"^8D",["^L",[["^95"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",929,"^8H","^8S","^9",930,"^8J",1,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["^95"]]]]]],"~$implicit-schema",["^ ","^5",["^ ","^6","datascript/db.cljc","^7",23,"^8",14,"^9",23,"^:",29,"^97",true],"^N","^3?","^6","datascript/db.cljc","^:",29,"^98",["^ ","^19","^;B","^9:",["^ ","^9;","^9<"],"^1J",["^ ","~:db/ident",["^ ","~:db/unique","~:db.unique/identity"]],"~:keys",[["^ ","^19","^97","^99","^;R","^9:",["^ ","^9;","^9<"],"^1J","^;R","^8R","^33"]],"~:vals",[["^ ","^19","^;B","^9:",["^ ","^9;","^9<"],"^1J",["^ ","^;S","^;T"],"^;U",[["^ ","^19","^97","^99","^;S","^9:",["^ ","^9;","^9<"],"^1J","^;S","^8R","^33"]],"^;V",[["^ ","^19","^97","^99","^;T","^9:",["^ ","^9;","^9<"],"^1J","^;T","^8R","^33"]],"~:children",["^;U","^;V"],"^8R","^;@"]],"^;W",["^;U","^;V"],"^8R","^;@"],"^8",1,"^97",true,"^7",23,"^9",23,"^8R","^;@"],"~$upsert-eid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",994,"^8",8,"^9",994,"^:",18,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","^8C"]]]]]],"^8@",true,"^N","^3N","^6","datascript/db.cljc","^:",18,"^8D",["^L",[["^8B","^8C"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",994,"^8H",["^H",["^8O","^8V"]],"^9",994,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^8C"]]]]]],"~$UnsupportedOperationException",["^ ","^N","^6D","^6","datascript/db.cljc","^7",17,"^8",6,"^9",17,"^:",40,"^5",["^ ","^6","datascript/db.cljc","^7",17,"^8",11,"^9",17,"^:",40],"^8R","^:A"],"~$validate-val",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",855,"^8",8,"^9",855,"^:",20,"^8@",true,"^K",["^L",["^8A",["^L",[["~$v","~$at"]]]]]],"^8@",true,"^N","^5J","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["~$v","^;["]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",855,"^8H","^8V","^9",855,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["~$v","^;["]]]]]],"~$->TxReport",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^:",20,"^8",12,"^9@",true,"^9A","^9B","^7",773,"^9",773,"^K",["^L",["^8A",["^L",[["~$db-before","~$db-after","~$tx-data","~$tempids","~$tx-meta"]]]]],"^10","Positional factory function for datascript.db/TxReport."],"^N","^34","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["^<1","^<2","^<3","^<4","^<5"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^9@",true,"^8G",false,"^9A","^9B","^7",773,"^8H","^6<","^9",773,"^8J",5,"^8K",true,"^K",["^L",["^8A",["^L",[["^<1","^<2","^<3","^<4","^<5"]]]]],"^10","Positional factory function for datascript.db/TxReport."],"~$map->DB",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^:",24,"^8",22,"^9@",true,"^9A","^;B","^7",433,"^9",433,"^K",["^L",["^8A",["^L",[["~$G__22215"]]]]],"^10","Factory function for datascript.db/DB, taking a map of keywords to field values."],"^N","^35","^6","datascript/db.cljc","^:",24,"^8D",["^L",[["^<7"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^9@",true,"^8G",false,"^9A","^;B","^7",433,"^8H","^5T","^9",433,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^<7"]]]]],"^10","Factory function for datascript.db/DB, taking a map of keywords to field values."],"~$cmp-datoms-eavt",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",322,"^8",7,"^9",322,"^:",22,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"^N","^6;","^6","datascript/db.cljc","^:",22,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",322,"^8H","^8P","^9",322,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$cmp-datoms-aevt",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",329,"^8",7,"^9",329,"^:",22,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"^N","^39","^6","datascript/db.cljc","^:",22,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",329,"^8H","^8P","^9",329,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$entid-some",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",830,"^8",7,"^9",830,"^:",17,"^K",["^L",["^8A",["^L",[["^8B","~$eid"]]]]]],"^N","^6>","^6","datascript/db.cljc","^:",17,"^8D",["^L",[["^8B","^<;"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",830,"^8H",["^H",["^8O","^8V"]],"^9",830,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"~$-seek-datoms",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",408,"^8",4,"^9",408,"^:",16,"^9J","^55","^10",null,"^K",["^L",["^8A",["^L",[["^8B","^9N","^9O"]]]]]],"^9J","^55","^N","^64","^6","datascript/db.cljc","^:",16,"^8D",["^L",[["^8B","^9N","^9O"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",406,"^8H","^8O","^9",408,"^8J",3,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^9N","^9O"]]]]],"^10",null],"~$cmp-datoms-avet-quick",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",374,"^8",7,"^9",374,"^:",28,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"^N","^3>","^6","datascript/db.cljc","^:",28,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",374,"^8H",["^H",["^8O","^8P"]],"^9",374,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$validate-eid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",845,"^8",8,"^9",845,"^:",20,"^8@",true,"^K",["^L",["^8A",["^L",[["^<;","^;["]]]]]],"^8@",true,"^N","^3G","^6","datascript/db.cljc","^:",20,"^8D",["^L",[["^<;","^;["]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",845,"^8H","^8V","^9",845,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^<;","^;["]]]]]],"~$with-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",906,"^8",8,"^9",906,"^:",18,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","^8U"]]]]]],"^8@",true,"^N","^66","^6","datascript/db.cljc","^:",18,"^8D",["^L",[["^8B","^8U"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",906,"^8H",["^H",[null,"^:4","^8O"]],"^9",906,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^8U"]]]]]],"~$empty-db",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",643,"^8",11,"^9",643,"^:",19,"^8R","^9R","^K",["^L",["^8A",["^L",[[],["^8X"]]]]],"^9T",["^ ","^8G",false,"^9U",1,"^8J",1,"^8D",["^L",[[],["^8X"]]],"^K",["^L",[[],["^8X"]]],"^8F",["^L",[null,null]]]],"^N","^2@","^6","datascript/db.cljc","^:",19,"^9T",["^ ","^8G",false,"^9U",1,"^8J",1,"^8D",["^L",[[],["^8X"]]],"^K",["^L",[[],["^8X"]]],"^8F",["^L",[null,null]]],"^8D",["^L",[[],["^8X"]]],"^8E",null,"^9U",1,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^9V",[["^ ","^9U",0,"^8G",false,"^8R","^9R"],["^ ","^9U",1,"^8G",false,"^8R","^5T"]],"^7",643,"^8H","^9R","^9",643,"^8J",1,"^8R","^9R","^8K",true,"^K",["^L",[[],["^8X"]]]],"~$datom?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",215,"^8",7,"^9",215,"^:",13,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"^N","^3X","^6","datascript/db.cljc","^:",13,"^8D",["^L",[["~$x"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",215,"^8H","^8S","^9",215,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"~$attr->properties",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",597,"^8",7,"^9",597,"^:",23,"^K",["^L",["^8A",["^L",[["~$k","~$v"]]]]]],"^N","^3Z","^6","datascript/db.cljc","^:",23,"^8D",["^L",[["~$k","~$v"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",597,"^9",597,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["~$k","~$v"]]]]]],"~$resolve-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",755,"^8",8,"^9",755,"^:",21,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","~$e","~$a","~$v","~$t","~$default-e","~$default-tx"]]]]]],"^8@",true,"^N","^2<","^6","datascript/db.cljc","^:",21,"^8D",["^L",[["^8B","~$e","~$a","~$v","~$t","^<D","^<E"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",755,"^8H","^4I","^9",755,"^8J",7,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","~$e","~$a","~$v","~$t","^<D","^<E"]]]]]],"~$cmp-attr-quick",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",345,"^8",8,"^9",345,"^:",22,"^8@",true,"^K",["^L",["^8A",["^L",[["~$a1","~$a2"]]]]]],"^8@",true,"^N","^61","^6","datascript/db.cljc","^:",22,"^8D",["^L",[["^<G","^<H"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",345,"^8H",["^H",["^8O","^8P"]],"^9",345,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^<G","^<H"]]]]]],"~$current-tx",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",860,"^8",8,"^9",860,"^:",18,"^8@",true,"^K",["^L",["^8A",["^L",[["^:0"]]]]]],"^8@",true,"^N","^2=","^6","datascript/db.cljc","^:",18,"^8D",["^L",[["^:0"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",860,"^8H","^8P","^9",860,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^:0"]]]]]],"~$allocate-eid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",888,"^8",8,"^9",888,"^:",20,"^8@",true,"^K",["^L",["^8A",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]]]],"^9T",["^ ","^8G",false,"^9U",3,"^8J",3,"^8D",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]],"^K",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]],"^8F",["^L",[null,null]]]],"^8@",true,"^N","^25","^6","datascript/db.cljc","^:",20,"^9T",["^ ","^8G",false,"^9U",3,"^8J",3,"^8D",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]],"^K",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]],"^8F",["^L",[null,null]]],"^8D",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]],"^8E",null,"^9U",3,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^9V",[["^ ","^9U",2,"^8G",false,"^8R",["^H",["^:4","^8O"]]],["^ ","^9U",3,"^8G",false,"^8R",["^H",["^:4","^8O"]]]],"^7",888,"^9",888,"^8J",3,"^8K",true,"^K",["^L",[["^:0","^<;"],["^:0","~$e","^<;"]]]],"~$TxReport",["^ ","^:E",5,"^:F",["^H",["^;8","^;9","^:H","^:I","^;:","^;;","^:J","^;<","^;=","^:K","^;>","^;?","^:L","^;@","^:M"]],"^N","^6<","^6","datascript/db.cljc","^:",20,"^:N",true,"^8",12,"^9@",true,"^7",773,"^:O",true,"^9",773,"^8R","^:P","^:Q",["^H",["^;8","^;9","^:H","^:I","^;:","^;;","^:J","^;<","^;=","^:K","^;>","^;?","^:L","^;@","^:M"]]],"~$components->pattern",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",765,"^8",8,"^9",765,"^:",27,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","^9N",["~$c0","~$c1","~$c2","~$c3"],"^<D","^<E"]]]]]],"^8@",true,"^N","^41","^6","datascript/db.cljc","^:",27,"^8D",["^L",[["^8B","^9N","~$p__22381","^<D","^<E"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",765,"^9",765,"^8J",5,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^9N",["^<M","^<N","^<O","^<P"],"^<D","^<E"]]]]]],"~$->DB",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^:",24,"^8",22,"^9@",true,"^9A","^9B","^7",433,"^9",433,"^K",["^L",["^8A",["^L",[["^8X","^9>","~$aevt","~$avet","~$max-eid","~$max-tx","^8W","^9E"]]]]],"^10","Positional factory function for datascript.db/DB."],"^N","^6@","^6","datascript/db.cljc","^:",24,"^8D",["^L",[["^8X","^9>","^<S","^<T","^<U","^<V","^8W","^9E"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^9@",true,"^8G",false,"^9A","^9B","^7",433,"^8H","^5T","^9",433,"^8J",8,"^8K",true,"^K",["^L",["^8A",["^L",[["^8X","^9>","^<S","^<T","^<U","^<V","^8W","^9E"]]]]],"^10","Positional factory function for datascript.db/DB."],"~$datom-from-reader",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",274,"^8",14,"^9",274,"^:",31,"^8R","^:D","^K",["^L",["^8A",["^L",[["~$vec"]]]]]],"^N","^45","^6","datascript/db.cljc","^:",31,"^8D",["^L",[["^<X"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",274,"^8H","^:D","^9",274,"^8J",1,"^8R","^:D","^8K",true,"^K",["^L",["^8A",["^L",[["^<X"]]]]]],"~$cmp-datoms-eavt-quick",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",360,"^8",7,"^9",360,"^:",28,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"^N","^4R","^6","datascript/db.cljc","^:",28,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",360,"^8H",["^H",["^8O","^8P"]],"^9",360,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$reverse-ref",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",942,"^8",7,"^9",942,"^:",18,"^K",["^L",["^8A",["^L",[["^95"]]]]]],"^N","^4H","^6","datascript/db.cljc","^:",18,"^8D",["^L",[["^95"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",942,"^8H",["^H",["^33","~$string"]],"^9",942,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^95"]]]]]],"~$entid-strict",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",824,"^8",7,"^9",824,"^:",19,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"^N","^4J","^6","datascript/db.cljc","^:",19,"^8D",["^L",[["^8B","^<;"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",824,"^8H","^8O","^9",824,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"~$advance-max-eid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",883,"^8",8,"^9",883,"^:",23,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"^8@",true,"^N","^4O","^6","datascript/db.cljc","^:",23,"^8D",["^L",[["^8B","^<;"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",883,"^8H",["^H",[null,"^:4","^8O"]],"^9",883,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"~$->Datom",["^ ","^8?",null,"^5",["^ ","^:F",["^H",["^:G","^2R","^:H","^:I","^:J","^:K","^:L","^:M"]],"^6","datascript/db.cljc","^:",15,"^8",10,"^9A","^9B","^7",139,"^9",139,"^K",["^L",["^8A",["^L",[["~$e","~$a","~$v","^:1","~$_hash"]]]]],"^:Q",["^H",["^:G","^:H","^:I","^:J","^:K","^:L","^:M"]],"^10","Positional factory function for datascript.db/Datom."],"^:F",["^H",["^:G","^2R","^:H","^:I","^:J","^:K","^:L","^:M"]],"^N","^4P","^6","datascript/db.cljc","^:",15,"^8D",["^L",[["~$e","~$a","~$v","^:1","^=3"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^9A","^9B","^7",139,"^8H","^4I","^9",139,"^8J",5,"^8K",true,"^K",["^L",["^8A",["^L",[["~$e","~$a","~$v","^:1","^=3"]]]]],"^:Q",["^H",["^:G","^:H","^:I","^:J","^:K","^:L","^:M"]],"^10","Positional factory function for datascript.db/Datom."],"~$Exception",["^ ","^N","^2?","^6","datascript/db.cljc","^7",15,"^8",6,"^9",15,"^:",20,"^5",["^ ","^6","datascript/db.cljc","^7",15,"^8",11,"^9",15,"^:",20],"^8R","^:A"],"~$upsert-reduce-fn",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",974,"^8",8,"^9",974,"^:",24,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","~$eav","~$a","~$v"]]]]]],"^8@",true,"^N","^2A","^6","datascript/db.cljc","^:",24,"^8D",["^L",[["^8B","^=6","~$a","~$v"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",974,"^8H",["^H",[null,"^:="]],"^9",974,"^8J",4,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^=6","~$a","~$v"]]]]]],"~$FilteredDB",["^ ","^:E",3,"^:F",["^H",["^;8","^;9","^:H","^:I","^;:","^;;","^:J","^;<","^;=","^:K","^;>","^;?","^:L","^;@","^:M"]],"^N","^4=","^6","datascript/db.cljc","^:",32,"^:N",true,"^8",22,"^9@",true,"^7",534,"^:O",true,"^9",534,"^8R","^:P","^:Q",["^H",["^;8","^;9","^:H","^:I","^;:","^;;","^:J","^;<","^;=","^:K","^;>","^;?","^:L","^;@","^:M"]]],"~$validate-attr",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",850,"^8",8,"^9",850,"^:",21,"^8@",true,"^K",["^L",["^8A",["^L",[["^95","^;["]]]]]],"^8@",true,"^N","^4>","^6","datascript/db.cljc","^:",21,"^8D",["^L",[["^95","^;["]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",850,"^8H","^8V","^9",850,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^95","^;["]]]]]],"~$e0",["^ ","^5",["^ ","^6","datascript/db.cljc","^7",19,"^8",14,"^9",19,"^:",16,"^97",true],"^N","^4?","^6","datascript/db.cljc","^:",16,"^98",["^ ","^19","^97","^99",0,"^9:",["^ ","^9;","^9<"],"^1J",0,"^8R","^8P"],"^8",1,"^97",true,"^7",19,"^9",19,"^8R","^8P"],"~$cmp-datoms-eav-quick",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",354,"^8",7,"^9",354,"^:",27,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"^N","^4C","^6","datascript/db.cljc","^:",27,"^8D",["^L",[["^8M","^8N"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",354,"^8H",["^H",["^8O","^8P"]],"^9",354,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8M","^8N"]]]]]],"~$txmax",["^ ","^5",["^ ","^6","datascript/db.cljc","^7",22,"^8",14,"^9",22,"^:",19,"^97",true],"^N","^2H","^6","datascript/db.cljc","^:",19,"^98",["^ ","^19","^97","^99",2147483647,"^9:",["^ ","^9;","^9<"],"^1J",2147483647,"^8R","^8P"],"^8",1,"^97",true,"^7",22,"^9",22,"^8R","^8P"],"~$validate-schema",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",630,"^8",8,"^9",630,"^:",23,"^8@",true,"^K",["^L",["^8A",["^L",[["^8X"]]]]]],"^8@",true,"^N","^3H","^6","datascript/db.cljc","^:",23,"^8D",["^L",[["^8X"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",630,"^8H","^8V","^9",630,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8X"]]]]]],"~$new-eid?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",879,"^8",8,"^9",879,"^:",16,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"^8@",true,"^N","^3I","^6","datascript/db.cljc","^:",16,"^8D",["^L",[["^8B","^<;"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",879,"^8H","^8S","^9",879,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"~$-schema",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",413,"^8",4,"^9",413,"^:",11,"^9J","^3C","^10",null,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"^9J","^3C","^N","^2K","^6","datascript/db.cljc","^:",11,"^8D",["^L",[["^8B"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",412,"^8H","^8O","^9",413,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]],"^10",null],"~$equiv-db",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",716,"^8",8,"^9",716,"^:",16,"^8@",true,"^K",["^L",["^8A",["^L",[["^8B","~$other"]]]]]],"^8@",true,"^N","^3L","^6","datascript/db.cljc","^:",16,"^8D",["^L",[["^8B","^=@"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",716,"^8H","^8S","^9",716,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^=@"]]]]]],"~$IIndexAccess",["^ ","^5",["^ ","^:V",true,"^6","datascript/db.cljc","^:",26,"^8",14,"^7",406,"^:W",["^ ","^9V",["^ ","^9M",[["^8B","^9N","^9O"]],"^<<",[["^8B","^9N","^9O"]],"^9P",[["^8B","^9N","^9O"]],"~$-index-range",[["^8B","^95","~$start","~$end"]]]],"^9",406,"^:X",["^ ","~:-datoms",["^ ","^N","^9M","^K",["^L",[["^8B","^9N","^9O"]]],"^10",null],"~:-seek-datoms",["^ ","^N","^<<","^K",["^L",[["^8B","^9N","^9O"]]],"^10",null],"~:-rseek-datoms",["^ ","^N","^9P","^K",["^L",[["^8B","^9N","^9O"]]],"^10",null],"~:-index-range",["^ ","^N","^=B","^K",["^L",[["^8B","^95","^=C","^=D"]]],"^10",null]],"^:[",["^L",["@interface"]]],"^:V",true,"^N","^55","^6","datascript/db.cljc","^:",26,"^8",1,"^7",406,"^:W",["^ ","^9V",["^ ","^9M",[["^8B","^9N","^9O"]],"^<<",[["^8B","^9N","^9O"]],"^9P",[["^8B","^9N","^9O"]],"^=B",[["^8B","^95","^=C","^=D"]]]],"^;0",null,"^9",406,"^8R","^8O","^:X",["^ ","^=E",["^ ","^N","^9M","^K",["^L",[["^8B","^9N","^9O"]]],"^10",null],"^=F",["^ ","^N","^<<","^K",["^L",[["^8B","^9N","^9O"]]],"^10",null],"^=G",["^ ","^N","^9P","^K",["^L",[["^8B","^9N","^9O"]]],"^10",null],"^=H",["^ ","^N","^=B","^K",["^L",[["^8B","^95","^=C","^=D"]]],"^10",null]],"^;1",["^H",["^4=","^5T"]],"^:[",["^L",["@interface"]]],"~$component?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",788,"^8",27,"^9",788,"^:",37,"^8R","^8S","^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]],"^N","^2C","^6","datascript/db.cljc","^:",37,"^8D",["^L",[["^8B","^95"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",787,"^8H","^8S","^9",788,"^8J",2,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]],"~$IDB",["^ ","^5",["^ ","^:V",true,"^6","datascript/db.cljc","^:",17,"^8",14,"^7",412,"^:W",["^ ","^9V",["^ ","^=>",[["^8B"]],"^9I",[["^8B","^9H"]]]],"^9",412,"^:X",["^ ","~:-schema",["^ ","^N","^=>","^K",["^L",[["^8B"]]],"^10",null],"~:-attrs-by",["^ ","^N","^9I","^K",["^L",[["^8B","^9H"]]],"^10",null]],"^:[",["^L",["@interface"]]],"^:V",true,"^N","^3C","^6","datascript/db.cljc","^:",17,"^8",1,"^7",412,"^:W",["^ ","^9V",["^ ","^=>",[["^8B"]],"^9I",[["^8B","^9H"]]]],"^;0",null,"^9",412,"^8R","^8O","^:X",["^ ","^=K",["^ ","^N","^=>","^K",["^L",[["^8B"]]],"^10",null],"^=L",["^ ","^N","^9I","^K",["^L",[["^8B","^9H"]]],"^10",null]],"^;1",["^H",["^4=","^5T"]],"^:[",["^L",["@interface"]]],"~$db-from-reader",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",748,"^8",7,"^9",748,"^:",21,"^K",["^L",["^8A",["^L",[[["^ ","^;U",["^8X","^9S"]]]]]]]],"^N","^5:","^6","datascript/db.cljc","^:",21,"^8D",["^L",[["~$p__22363"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",748,"^8H","^5T","^9",748,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[[["^ ","^;U",["^8X","^9S"]]]]]]]],"~$assoc-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",262,"^8",15,"^9",262,"^:",26,"^8R","^:D","^8@",true,"^K",["^L",["^8A",["^L",[["~$d","~$k","~$v"]]]]]],"^8@",true,"^N","^2E","^6","datascript/db.cljc","^:",26,"^8D",["^L",[["~$d","~$k","~$v"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",262,"^8H","^:D","^9",262,"^8J",3,"^8R","^:D","^8K",true,"^K",["^L",["^8A",["^L",[["~$d","~$k","~$v"]]]]]],"~$db-transient",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",421,"^8",7,"^9",421,"^:",19,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"^N","^3E","^6","datascript/db.cljc","^:",19,"^8D",["^L",[["^8B"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",421,"^8H",["^H",["^:4","^8O"]],"^9",421,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B"]]]]]],"~$map->FilteredDB",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^:",32,"^8",22,"^9@",true,"^9A","^;B","^7",534,"^9",534,"^K",["^L",["^8A",["^L",[["~$G__22282"]]]]],"^10","Factory function for datascript.db/FilteredDB, taking a map of keywords to field values."],"^N","^4S","^6","datascript/db.cljc","^:",32,"^8D",["^L",[["^=R"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^9@",true,"^8G",false,"^9A","^;B","^7",534,"^8H","^4=","^9",534,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["^=R"]]]]],"^10","Factory function for datascript.db/FilteredDB, taking a map of keywords to field values."],"~$entid",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",795,"^8",7,"^9",795,"^:",12,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"^N","^4X","^6","datascript/db.cljc","^:",12,"^8D",["^L",[["^8B","^<;"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",795,"^8H",["^H",[null,"^8O","^8V"]],"^9",795,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^<;"]]]]]],"^=B",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",410,"^8",4,"^9",410,"^:",16,"^9J","^55","^10",null,"^K",["^L",["^8A",["^L",[["^8B","^95","^=C","^=D"]]]]]],"^9J","^55","^N","^51","^6","datascript/db.cljc","^:",16,"^8D",["^L",[["^8B","^95","^=C","^=D"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",406,"^8H","^8O","^9",410,"^8J",4,"^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^95","^=C","^=D"]]]]],"^10",null],"^I",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",34,"^8",27,"^9",34,"^:",35,"^8R","^8S","^K",["^L",["^8A",["^L",[["~$x"]]]]]],"^N","^56","^6","datascript/db.cljc","^:",35,"^8D",["^L",[["~$x"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",33,"^8H","^8S","^9",34,"^8J",1,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["~$x"]]]]]],"~$seq-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",227,"^8",8,"^9",227,"^:",17,"^8@",true,"^K",["^L",["^8A",["^L",[["~$d"]]]]]],"^8@",true,"^N","^58","^6","datascript/db.cljc","^:",17,"^8D",["^L",[["~$d"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",227,"^8H","^4A","^9",227,"^8J",1,"^8K",true,"^K",["^L",["^8A",["^L",[["~$d"]]]]]],"~$transact-retract-datom",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",1076,"^8",8,"^9",1076,"^:",30,"^8@",true,"^K",["^L",["^8A",["^L",[["^:0","~$d"]]]]]],"^8@",true,"^N","^4T","^6","datascript/db.cljc","^:",30,"^8D",["^L",[["^:0","~$d"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",1076,"^8H",["^H",["^:4","^8O"]],"^9",1076,"^8J",2,"^8K",true,"^K",["^L",["^8A",["^L",[["^:0","~$d"]]]]]],"~$ISearch",["^ ","^5",["^ ","^:V",true,"^6","datascript/db.cljc","^:",21,"^8",14,"^7",403,"^:W",["^ ","^9V",["^ ","^;2",[["^;3","^;4"]]]],"^9",403,"^:X",["^ ","~:-search",["^ ","^N","^;2","^K",["^L",[["^;3","^;4"]]],"^10",null]],"^:[",["^L",["@interface"]]],"^:V",true,"^N","^4U","^6","datascript/db.cljc","^:",21,"^8",1,"^7",403,"^:W",["^ ","^9V",["^ ","^;2",[["^;3","^;4"]]]],"^;0",null,"^9",403,"^8R","^8O","^:X",["^ ","^=W",["^ ","^N","^;2","^K",["^L",[["^;3","^;4"]]],"^10",null]],"^;1",["^H",["^4=","^5T"]],"^:[",["^L",["@interface"]]],"~$ref?",["^ ","^8?",null,"^5",["^ ","^6","datascript/db.cljc","^7",784,"^8",27,"^9",784,"^:",31,"^8R","^8S","^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]],"^N","^38","^6","datascript/db.cljc","^:",31,"^8D",["^L",[["^8B","^95"]]],"^8E",null,"^8F",["^L",[null,null]],"^8",1,"^8G",false,"^7",783,"^8H","^8S","^9",784,"^8J",2,"^8R","^8S","^8K",true,"^K",["^L",["^8A",["^L",[["^8B","^95"]]]]]]],"^1H",["^ ","^B","^B","^1@","^1@","^1>","^1?","^1?","^1?"],"~:cljs.analyzer/constants",["^ ","^1F",["^H",["~:transact/unique","^9C","^<5","~:tempids","~:schema","^8W","~:attribute","~:transact/cas","~:lookup-ref/unique","^;T","~:db/fn","~:db/index","~:max-tx","~:v","^;S","~:hash","~:aevt","~$a","~:pred","~:key","~:datom","~:else","~:db-after","~:added","~:new","^<4","^P","~:db/valueType","~:avet","^8X","~:db.type/ref","~:value","^<V","~$v","~:operation","~:max-eid","^9E","^<S","^9D","^8P","~:entity-id","^<2","^19","^8B","~:db/isComponent","~:db.fn/call","~:db/cas","~:transact/upsert","~:e","^<T","~:eavt","~:db.fn/retractEntity","~:db.unique/value","~:db-before","~:tx-data","~:db/retractEntity","~:db/retract","^<U","~:tx","~:db/current-tx","~:datascript/db","~:db.fn/retractAttribute","~:lookup-ref/syntax","~:db.fn/cas","~:entity-id/syntax","~$e","^<C","~:db/cardinality","~:expected","^9>","~:db/id","~:entity-id/missing","^<1","^9;","^;R","^=3","~:error","^<3","~:schema/validation","~:db/add","^:1","^8R","~:unfiltered-db","~:mutable","~:rschema","~:tx-meta","~:db.cardinality/many","~:transact/syntax","~:entity","~:conflict","~:db.cardinality/one","^=B","~:a","~:datoms","~:assertion","~:old"]],"~:order",["^;R","^;S","^;T","^P","~$e","^8R","^8P","~$a","~$v","^:1","^=3","^?5","~:v","^>>","~:e","^>R","~:a","^><","^>K","^>8","^>A","^>0","^>E","^>6","^?6","^>7","^8X","^9>","^<S","^<T","^<U","^<V","^8W","^9E","^>T","^=B","^8B","^?4","^>9","^9C","^9D","^>5","^>M","^?8","^>B","^>G","^?1","^>1","^>:","^>C","^?2","^>@","^>Y","^?<","^?=","^<C","^>N","^>=","^>O","^=[","^?7","^<1","^<2","^<3","^<4","^<5","^>F","^>V","^>3","^>X","^?0","^>;","^=Z","^9;","^?9","^>S","^>[","^?:","^?>","^>J","^?;","^?3","^>L","^>H","^>I","^>P","^>Q","^>U","^>W","^>D","^>4","^19","^??","^>Z","^>?","^>2"]],"^1P",["^ ","^1G",["^H",[]],"^1H",["^H",[]]],"^1Q",["^ "],"^1R",["^1C","^1@","^1B","^1E","^1D","^1=","^1?"]],"^P","^B","~:ns-specs",["^ "],"~:ns-spec-vars",["^H",[]],"~:compiler-options",["^6F",[["^?C","~:static-fns"],true,["^?C","~:shadow-tweaks"],null,["^?C","~:source-map-inline"],null,["^?C","~:elide-asserts"],true,["^?C","~:optimize-constants"],null,["^?C","^1W"],null,["^?C","~:external-config"],null,["^?C","~:tooling-config"],null,["^?C","~:emit-constants"],null,["^?C","~:load-tests"],false,["^?C","~:form-size-threshold"],null,["^?C","~:infer-externs"],true,["^?C","^1Y"],null,["~:js-options","~:js-provider"],"^1G",["~:mode"],"~:release",["^?C","~:fn-invoke-direct"],null,["^?C","~:source-map"],null]]]