graview 0.1.66 → 0.1.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/preview/{chunk.OJY7VJ7D.js → chunk.2BMZPALF.js} +1 -1
  2. package/dist/preview/{chunk.OTV5XTBB.js → chunk.2KCDLCB2.js} +1 -1
  3. package/dist/preview/{chunk.WVLEGCRI.js → chunk.2ME4DVBI.js} +1 -1
  4. package/dist/preview/chunk.2TUEBU7X.js +8 -0
  5. package/dist/preview/{chunk.QHMHUL6B.js → chunk.2U6HB4XU.js} +1 -1
  6. package/dist/preview/{chunk.ZQR2SN65.js → chunk.32JE2WS7.js} +1 -1
  7. package/dist/preview/{chunk.OEIWIZCP.js → chunk.3DEWQDP7.js} +1 -1
  8. package/dist/preview/{chunk.2VR7YEJ6.js → chunk.3JMQKANL.js} +1 -1
  9. package/dist/preview/chunk.3VEZ5MOC.js +25 -0
  10. package/dist/preview/chunk.3WPCS6KP.js +1 -0
  11. package/dist/preview/{chunk.FXT5CN32.js → chunk.42C3FIKK.js} +1 -1
  12. package/dist/preview/{chunk.QQAZQDRW.js → chunk.42KHFGN6.js} +1 -1
  13. package/dist/preview/{chunk.ANS2IEEV.js → chunk.4DXPPM6T.js} +1 -1
  14. package/dist/preview/chunk.4GVKKBQL.js +1 -0
  15. package/dist/preview/{chunk.5CXIEYHY.js → chunk.4TT3ZHSJ.js} +2 -2
  16. package/dist/preview/{chunk.OMT4QUZY.js → chunk.4YAO3A5Q.js} +4 -4
  17. package/dist/preview/{chunk.M2JCFNHJ.js → chunk.5JKUT2OM.js} +1 -1
  18. package/dist/preview/chunk.5L4ADKTW.js +1 -0
  19. package/dist/preview/{chunk.YNEHJWJV.js → chunk.64LCHHZB.js} +1 -1
  20. package/dist/preview/{chunk.6HY6ZGEE.js → chunk.6AANHELP.js} +1 -1
  21. package/dist/preview/{chunk.6TLXFMX2.js → chunk.6DMCEBSO.js} +1 -1
  22. package/dist/preview/{chunk.IWYMKGZZ.js → chunk.6IR5LBJU.js} +1 -1
  23. package/dist/preview/{chunk.YIPXZUTT.js → chunk.6WB2TYK7.js} +1 -1
  24. package/dist/preview/chunk.6ZENHSTQ.js +1 -0
  25. package/dist/preview/{chunk.7ZKBYXUM.js → chunk.7K2V5FUB.js} +1 -1
  26. package/dist/preview/chunk.7OL6H4LF.js +1 -0
  27. package/dist/preview/{chunk.FBILPNGH.js → chunk.7TDML5YU.js} +1 -1
  28. package/dist/preview/{chunk.45JP6VGJ.js → chunk.7WPVLEX2.js} +2 -2
  29. package/dist/preview/{chunk.W4YDPHCQ.js → chunk.7ZTGB4O7.js} +1 -1
  30. package/dist/preview/{chunk.4FDVINRJ.js → chunk.ACNOP2IU.js} +1 -1
  31. package/dist/preview/{chunk.AK7NGFEX.js → chunk.AENP662H.js} +1 -1
  32. package/dist/preview/{chunk.MWGZKZD6.js → chunk.AQ2PI6MR.js} +1 -1
  33. package/dist/preview/chunk.ARS4HJD2.js +1 -0
  34. package/dist/preview/{chunk.FDZE5LTJ.js → chunk.AWV57UBJ.js} +2 -2
  35. package/dist/preview/{chunk.C2C3AXGI.js → chunk.AYZL3LCR.js} +3 -3
  36. package/dist/preview/{chunk.FIFUMX5X.js → chunk.BHJRT57H.js} +1 -1
  37. package/dist/preview/{chunk.IAEHUSQQ.js → chunk.BPNW5KCP.js} +1 -1
  38. package/dist/preview/{chunk.HOCD7KIR.js → chunk.BQAFFEOA.js} +1 -1
  39. package/dist/preview/chunk.C2QKA6XY.js +1 -0
  40. package/dist/preview/{chunk.NJRLJEJY.js → chunk.CE3NKAF7.js} +1 -1
  41. package/dist/preview/{chunk.5LJVOLKR.js → chunk.CFE3MHWZ.js} +1 -1
  42. package/dist/preview/{chunk.DQFHIJFN.js → chunk.CGBOPPNL.js} +1 -1
  43. package/dist/preview/{chunk.V7W5AQKL.js → chunk.CNN32262.js} +1 -1
  44. package/dist/preview/{chunk.6EHHMWPP.js → chunk.DCLF4WWZ.js} +1 -1
  45. package/dist/preview/{chunk.OO2OP76C.js → chunk.DGDW54KE.js} +1 -1
  46. package/dist/preview/{chunk.XMQG2PSM.js → chunk.DLSS56EU.js} +1 -1
  47. package/dist/preview/{chunk.WSO7JOW5.js → chunk.DMZRFXH7.js} +1 -1
  48. package/dist/preview/{chunk.DEHIR4EG.js → chunk.DPHH5ZVL.js} +1 -1
  49. package/dist/preview/{chunk.XOE4KNP2.js → chunk.DZ6UDZOB.js} +2 -2
  50. package/dist/preview/{chunk.WAB3L3ZI.js → chunk.E423JCOS.js} +1 -1
  51. package/dist/preview/{chunk.CTASTRQN.js → chunk.EB7PZJEO.js} +1 -1
  52. package/dist/preview/{chunk.QPF4KSAW.js → chunk.ECNGVD25.js} +1 -1
  53. package/dist/preview/{chunk.JXNVNFV4.js → chunk.EGSOHTZZ.js} +1 -1
  54. package/dist/preview/{chunk.CEVGND3Y.js → chunk.EGVM24ND.js} +3 -3
  55. package/dist/preview/{chunk.6LXIEM6B.js → chunk.ENLIIZF2.js} +1 -1
  56. package/dist/preview/{chunk.GME63ZHI.js → chunk.EP5JS7ZH.js} +1 -1
  57. package/dist/preview/{chunk.QGIM2WAY.js → chunk.F5GNNVSQ.js} +1 -1
  58. package/dist/preview/chunk.FHQ25SWY.js +1 -0
  59. package/dist/preview/{chunk.OOSIKCOS.js → chunk.FSW535EA.js} +1 -1
  60. package/dist/preview/{chunk.ZD7T234N.js → chunk.FZELUSK5.js} +1 -1
  61. package/dist/preview/{chunk.LINSO5PN.js → chunk.G2BDEWJC.js} +1 -1
  62. package/dist/preview/chunk.GF3ZCX46.js +2 -0
  63. package/dist/preview/{chunk.J7W2OFHY.js → chunk.GJTEV6CK.js} +1 -1
  64. package/dist/preview/{chunk.VKZIEZ5C.js → chunk.GKTQ5CZA.js} +2 -2
  65. package/dist/preview/{chunk.GEFXU4VO.js → chunk.GONZB3J3.js} +1 -1
  66. package/dist/preview/{chunk.VGHO3VCB.js → chunk.GRBWXTST.js} +1 -1
  67. package/dist/preview/{chunk.YXEO3Y65.js → chunk.GRTBEA7O.js} +1 -1
  68. package/dist/preview/chunk.H3IGXHZR.js +93 -0
  69. package/dist/preview/{chunk.QFHWG4LN.js → chunk.H3W5C3XQ.js} +1 -1
  70. package/dist/preview/{chunk.TGEL6EUA.js → chunk.H4VNIAHN.js} +1 -1
  71. package/dist/preview/{chunk.IGK7EZCX.js → chunk.HH4D3JEI.js} +1 -1
  72. package/dist/preview/{chunk.F4VB6Q2W.js → chunk.HWFJQ42Y.js} +1 -1
  73. package/dist/preview/{chunk.OWFS2YDQ.js → chunk.HXTKBISQ.js} +1 -1
  74. package/dist/preview/{chunk.ZR2TP3BF.js → chunk.I34BWUB4.js} +1 -1
  75. package/dist/preview/{chunk.EXYCN4WI.js → chunk.I63462I3.js} +1 -1
  76. package/dist/preview/{chunk.7VADSNPZ.js → chunk.IKKKHHRN.js} +1 -1
  77. package/dist/preview/{chunk.FK722SHI.js → chunk.IPGLITWA.js} +1 -1
  78. package/dist/preview/{chunk.BXBEGMPO.js → chunk.IT5DVKXY.js} +2 -2
  79. package/dist/preview/{chunk.LLIURXFP.js → chunk.IXMIU4D4.js} +1 -1
  80. package/dist/preview/{chunk.INHS3KTK.js → chunk.JCETQQ7J.js} +1 -1
  81. package/dist/preview/{chunk.PPSYUOH7.js → chunk.JGRSUTPJ.js} +1 -1
  82. package/dist/preview/{chunk.4U4D7WOI.js → chunk.JLDJZET2.js} +1 -1
  83. package/dist/preview/{chunk.Z7Y3R3YR.js → chunk.JULD4XFB.js} +1 -1
  84. package/dist/preview/{chunk.PAGEGBUD.js → chunk.JV432T4Q.js} +1 -1
  85. package/dist/preview/{chunk.4FCFNAA4.js → chunk.KAM73WVF.js} +1 -1
  86. package/dist/preview/{chunk.6P6NGZ6D.js → chunk.KUCBNMIY.js} +1 -1
  87. package/dist/preview/{chunk.I2737CPF.js → chunk.L7XKYGV7.js} +1 -1
  88. package/dist/preview/{chunk.7VP6Y6D2.js → chunk.LFFJB6D3.js} +1 -1
  89. package/dist/preview/{chunk.BFAFCVL4.js → chunk.LMTG5NPG.js} +1 -1
  90. package/dist/preview/{chunk.QOS5T46W.js → chunk.LOKGUALC.js} +1 -1
  91. package/dist/preview/chunk.LZ6MSQ5O.js +1 -0
  92. package/dist/preview/chunk.MBTEOF4R.js +1 -0
  93. package/dist/preview/{chunk.PFQBCHQA.js → chunk.MIOLBZBS.js} +1 -1
  94. package/dist/preview/{chunk.PDDIQ6PK.js → chunk.MK5RPEB2.js} +1 -1
  95. package/dist/preview/{chunk.FV72U33M.js → chunk.MKL4THIV.js} +1 -1
  96. package/dist/preview/{chunk.2MHNPBHC.js → chunk.MPWLDQOG.js} +1 -1
  97. package/dist/preview/chunk.MSUZAJ2K.js +4 -0
  98. package/dist/preview/{chunk.EMFOMSMI.js → chunk.N5Z34V7U.js} +1 -1
  99. package/dist/preview/chunk.N64RVSH3.js +1 -0
  100. package/dist/preview/{chunk.5B5SRTUK.js → chunk.ND3DEDWB.js} +1 -1
  101. package/dist/preview/{chunk.3L4JMM3P.js → chunk.NFTPJAMJ.js} +1 -1
  102. package/dist/preview/{chunk.J2MM6BUW.js → chunk.NRCWMYLH.js} +1 -1
  103. package/dist/preview/{chunk.OPTYYIGC.js → chunk.O2VXTYUJ.js} +1 -1
  104. package/dist/preview/{chunk.4AC2QM7T.js → chunk.O32F6LGK.js} +1 -1
  105. package/dist/preview/{chunk.W53YNBSM.js → chunk.O5FTWXA2.js} +1 -1
  106. package/dist/preview/{chunk.U6TEW6YD.js → chunk.ODYJEDIW.js} +1 -1
  107. package/dist/preview/{chunk.E7EWNWAN.js → chunk.OQ4ZO3YY.js} +1 -1
  108. package/dist/preview/chunk.PI4RFOBU.js +1 -0
  109. package/dist/preview/{chunk.BMENTGDC.js → chunk.PIMAG4WT.js} +2 -2
  110. package/dist/preview/{chunk.DTCAUPLC.js → chunk.PLIV3IQK.js} +1 -1
  111. package/dist/preview/{chunk.4JULYKGD.js → chunk.PPCDPYYU.js} +1 -1
  112. package/dist/preview/{chunk.BGAC3B7X.js → chunk.PZQ5P6WK.js} +1 -1
  113. package/dist/preview/chunk.Q42R2KW4.js +1 -0
  114. package/dist/preview/{chunk.2KFZHUAC.js → chunk.Q4VFLLUT.js} +1 -1
  115. package/dist/preview/{chunk.ONYBW45K.js → chunk.Q6H5HESF.js} +1 -1
  116. package/dist/preview/chunk.QM54TGU6.js +3 -0
  117. package/dist/preview/{chunk.6MQ5NT7S.js → chunk.QOQ26NXM.js} +1 -1
  118. package/dist/preview/{chunk.FFOD5B4B.js → chunk.QUETLFBJ.js} +1 -1
  119. package/dist/preview/{chunk.DSYP43NN.js → chunk.QWLK3GKG.js} +1 -1
  120. package/dist/preview/{chunk.RWIN3POV.js → chunk.QYPU444Y.js} +1 -1
  121. package/dist/preview/{chunk.ES63XSIM.js → chunk.QZP3ARLH.js} +1 -1
  122. package/dist/preview/{chunk.CVPMSPCH.js → chunk.R3GE37OI.js} +1 -1
  123. package/dist/preview/chunk.R66ZVMWB.js +1 -0
  124. package/dist/preview/chunk.RD2FSSLV.js +1 -0
  125. package/dist/preview/{chunk.72ZCLEQC.js → chunk.RQG672MJ.js} +1 -1
  126. package/dist/preview/chunk.RYA7A4NA.js +1 -0
  127. package/dist/preview/{chunk.BUVTUAB5.js → chunk.SADR3MQI.js} +1 -1
  128. package/dist/preview/{chunk.EQ4OODGO.js → chunk.SS6KL5NT.js} +1 -1
  129. package/dist/preview/chunk.SUG6LIOX.js +1 -0
  130. package/dist/preview/{chunk.WSDJPXJD.js → chunk.TFJA4QV4.js} +1 -1
  131. package/dist/preview/{chunk.3PBTN7RO.js → chunk.TOUSIUJF.js} +1 -1
  132. package/dist/preview/{chunk.CU2WCYMK.js → chunk.TR4YFVZN.js} +1 -1
  133. package/dist/preview/{chunk.GNEOSHQ6.js → chunk.TRNJKHIA.js} +1 -1
  134. package/dist/preview/{chunk.72XP2ARZ.js → chunk.TVWK3SGD.js} +1 -1
  135. package/dist/preview/chunk.U7PAFLUM.js +1 -0
  136. package/dist/preview/{chunk.QU52E5RG.js → chunk.UAMPR4MD.js} +1 -1
  137. package/dist/preview/{chunk.KBPJ7X7W.js → chunk.UD7VLXPM.js} +1 -1
  138. package/dist/preview/{chunk.M6ZN2KUO.js → chunk.UFURYU4R.js} +1 -1
  139. package/dist/preview/{chunk.6FQW6FNL.js → chunk.UODTUBQ7.js} +1 -1
  140. package/dist/preview/{chunk.KHRS2SKB.js → chunk.VBHV4TLG.js} +1 -1
  141. package/dist/preview/{chunk.KSIEO5W7.js → chunk.VES4XMZX.js} +1 -1
  142. package/dist/preview/chunk.VLXLBGMY.js +90 -0
  143. package/dist/preview/{chunk.QWNSHISU.js → chunk.VTDOWXCP.js} +1 -1
  144. package/dist/preview/{chunk.5FNFRVTL.js → chunk.VV5JAM5W.js} +1 -1
  145. package/dist/preview/{chunk.DZFM6GSY.js → chunk.VW632VNJ.js} +1 -1
  146. package/dist/preview/{chunk.LSN2IPAI.js → chunk.WC5WE34A.js} +1 -1
  147. package/dist/preview/chunk.WN7SAAH6.js +1 -0
  148. package/dist/preview/{chunk.B6JRTW3A.js → chunk.WV45KLXC.js} +1 -1
  149. package/dist/preview/{chunk.TXHYGFIZ.js → chunk.XDZDNZ7B.js} +1 -1
  150. package/dist/preview/{chunk.7BIPZTJB.js → chunk.XFH6GHBQ.js} +1 -1
  151. package/dist/preview/{chunk.HSSIMVVM.js → chunk.XRE7SHLD.js} +1 -1
  152. package/dist/preview/{chunk.LETAQTLJ.js → chunk.XXCHO2A5.js} +1 -1
  153. package/dist/preview/{chunk.KACSYPEV.js → chunk.Y7OGJOPA.js} +1 -1
  154. package/dist/preview/{chunk.LGRVEHXT.js → chunk.YBQ5GVAX.js} +2 -2
  155. package/dist/preview/{chunk.PSQYDCVM.js → chunk.YL2RBZFE.js} +1 -1
  156. package/dist/preview/{chunk.BZ7QWHAE.js → chunk.YM6SWEUI.js} +1 -1
  157. package/dist/preview/{chunk.CBXS23YH.js → chunk.Z2X7BFCB.js} +2 -2
  158. package/dist/preview/{chunk.U3ED7W2U.js → chunk.Z67LBSQO.js} +1 -1
  159. package/dist/preview/chunk.ZKXIZBCN.js +1 -0
  160. package/dist/preview/{chunk.E3UL4MCD.js → chunk.ZLEBOR5T.js} +1 -1
  161. package/dist/preview/{chunk.5BX66FBP.js → chunk.ZLNUZ6LR.js} +1 -1
  162. package/dist/preview/chunk.ZMADWPJO.js +1 -0
  163. package/dist/preview/chunk.ZO6VMEPP.js +1 -0
  164. package/dist/preview/chunk.ZUG7U7AT.js +1 -0
  165. package/dist/preview/index.html +56 -56
  166. package/dist/preview/page.js +2 -2
  167. package/package.json +6 -6
  168. package/dist/preview/chunk.4WGYUYWU.js +0 -2
  169. package/dist/preview/chunk.5EMIWORS.js +0 -1
  170. package/dist/preview/chunk.6EVMXBNB.js +0 -1
  171. package/dist/preview/chunk.BCQWAFGD.js +0 -1
  172. package/dist/preview/chunk.BOCVLC7X.js +0 -1
  173. package/dist/preview/chunk.DPJNGFEZ.js +0 -4
  174. package/dist/preview/chunk.E4VRRWFP.js +0 -1
  175. package/dist/preview/chunk.EUAO4QNV.js +0 -1
  176. package/dist/preview/chunk.F7672TKJ.js +0 -1
  177. package/dist/preview/chunk.FA42HCPW.js +0 -1
  178. package/dist/preview/chunk.FBJAQPZ6.js +0 -1
  179. package/dist/preview/chunk.GAFMWOME.js +0 -1
  180. package/dist/preview/chunk.I4Z7HVRT.js +0 -1
  181. package/dist/preview/chunk.JMXXA4YG.js +0 -1
  182. package/dist/preview/chunk.JMYUQNXN.js +0 -6
  183. package/dist/preview/chunk.K6DFXDPZ.js +0 -1
  184. package/dist/preview/chunk.KF27ME27.js +0 -1
  185. package/dist/preview/chunk.L25DCT5S.js +0 -1
  186. package/dist/preview/chunk.MODLZJD4.js +0 -25
  187. package/dist/preview/chunk.OJGHDWI6.js +0 -1
  188. package/dist/preview/chunk.SSF47GUY.js +0 -1
  189. package/dist/preview/chunk.T6DPWW2K.js +0 -3
  190. package/dist/preview/chunk.TA36WBHK.js +0 -1
  191. package/dist/preview/chunk.TTGKX7LT.js +0 -1
  192. package/dist/preview/chunk.U3HERHAI.js +0 -88
  193. package/dist/preview/chunk.V5I4GZEY.js +0 -1
  194. package/dist/preview/chunk.VT2YGDK2.js +0 -1
  195. package/dist/preview/chunk.XK65Y2KX.js +0 -1
  196. package/dist/preview/chunk.Z274CL7J.js +0 -1
  197. package/dist/preview/chunk.ZBVYD4OX.js +0 -90
@@ -1,4 +1,4 @@
1
- import{a as Tr,b as ce,c as He,d as Je,f as Re,g as jr,h as Ye,i as Un,j as Ui}from"./chunk.FQLNBIQ5.js";var zt="en-US",Hn=/^\d{4}-\d{2}-\d{2}$/,Fr=/^\d{4}(?:-(?:0[1-9]|1[0-2]))?$/,Lr=/^\d{4}(?:-(?:0[1-9]|1[0-2])(?:-\d{2})?)?$/;function hl(n){if(Hn.test(n))return{from:n,to:n};if(!Fr.test(n))return;if(n.length===4)return{from:`${n}-01-01`,to:`${n}-12-31`};let e=new Date(Date.UTC(+n.slice(0,4),+n.slice(5,7),0)).getUTCDate();return{from:`${n}-01`,to:`${n}-${String(e).padStart(2,"0")}`}}var It=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,ag=n=>!Number.isNaN(Date.parse(n)),te=(n,e=Date.now())=>{let t=Tt(n);return t?Cr(e,t).day:new Date(e).toISOString().slice(0,10)},Tt=n=>wn(n)??vn,Wn,bn,qn,vn;function gl(n){Wn=kn(n.reader),bn=kn(n.app),qn=wn(n.readerTimeZone),vn=wn(n.appTimeZone)}function ml(n,e){let t=[Wn,bn,qn,vn];n.reader!==void 0&&(Wn=kn(n.reader)),n.app!==void 0&&(bn=kn(n.app)),n.readerTimeZone!==void 0&&(qn=wn(n.readerTimeZone)),n.appTimeZone!==void 0&&(vn=wn(n.appTimeZone));try{return e()}finally{[Wn,bn,qn,vn]=t}}var Wi=n=>Wn??kn(n)??bn??zt,dg=n=>kn(n)??bn??zt,jt=n=>qn??wn(n)??vn,yl=n=>jt(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",bl=/^\s*([+\-−]|\d)/;var Dr=new Map;function wn(n){if(n&&!Dr.has(n)){let e=!1;try{new Intl.DateTimeFormat(zt,{timeZone:n}),e=!bl.test(n)}catch{}Dr.set(n,e)}return n&&Dr.get(n)?n:void 0}var Xe=new Map;function kn(n){if(n&&!Xe.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Xe.set(n,e)}return n&&Xe.get(n)?n:void 0}function Ie(n,e,t,r){let o=`${t=Wi(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Xe.get(o);return i||Xe.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Qe="UTC",Dt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Te(n,e){return Fr.test(n)?n.length===4?n:Yi(n,{},e):Hn.test(n)?Ie(Dt(n),{year:"numeric",month:"short",day:"numeric",timeZone:Qe},e):n}function Cr(n,e){let t=`wall@${e??""}`,r=Xe.get(t);r||Xe.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function qi(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=Cr(i,t);return vl(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var vl=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),Hi=n=>/[Z+-][\d:]*$/.test(n.slice(16));function Ji(n,e,t,r,o=!1){if(!It.test(n))return n;let i=Hi(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?jt(r):Qe;return Ie(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var Zr=(n,e,t)=>Ji(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),wl=(n,e,t)=>Ji(n,{},e,t);function kl(n,e){if(Hn.test(n))return n;if(!It.test(n))return;if(!Hi(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:Cr(t,jt(e)).day}function $e(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?Ie(n,t,e,!0):String(n)}function xl(n,e={},t){return Hn.test(n)?Ie(Dt(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Qe},t):n}function Sl(n,e){return Hn.test(n)?Ie(Dt(n),{month:"short",day:"numeric",timeZone:Qe},e):n}function Yi(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return Ie(Dt(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Qe},t)}var Rl=(n,e="short",t)=>Ie(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Qe},t),$l=(n,e)=>Ie(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Qe},e),Al=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function Gr(n,e){return n.includes("-")?n.replace(Al,t=>Te(t,e)):n}var en=n=>n.charAt(0).toUpperCase()+n.slice(1),Vr=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),Xi=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"",Qi=n=>/^\S*\p{Ll}\p{Lu}|\s\p{Lu}\p{Ll}/u.test(n)?n:Vr(n);function B(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return en(e.replace(/\b[a-z]+\b/g,t=>es.has(t)?t.toUpperCase():t.endsWith("s")&&es.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var es=new Set("id url uri api ip ioc cve cvss cwe cpe sku vat iban isbn pdf csv json html css sla kpi roi faq ssn ein vin gps sms crm erp seo utm ui ux ai dns ssl tls http https sql uuid mfa sso cto ceo cfo coo rsvp eta".split(" "));function nn(n){if(!ns(n))return B(n);let e=n.replace(/[_\s]+/g," ").trim();return en(e)}var ns=n=>/[A-Z]/.test(n)&&!/^[a-z][a-zA-Z0-9]*$/.test(n);function fg(n){return ns(n)?nn(n):Vr(B(n))}function Ol(n,e){return{...e,kind:n,edges:e.edges??{}}}function Kr(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??te()):!r.retired.includes(o)}function K(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function _l(n){return n.title??B(n.name)}function Pl(n,e,t){let r=n.tryDefinition(e);return`${$e(t)} ${t===1?X(r,e):le(n,e).toLowerCase()}`}function le(n,e){return n.tryDefinition(e)?.plural??`${B(e).toLowerCase()}s`}function El(n,e){return en(le(n,e))}function Ml(n,e){let t=le(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function ts(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":B(e))}var Ft=(n,e)=>Qi(ts(n,e)),Nl=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,zl=/^(hour|honest|hono[ur]r?|heir)/;function rs(n){let e=B(n).toLowerCase();return zl.test(e)?"an":Nl.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function xn(n){return`${rs(n)} ${B(n).toLowerCase()}`}function X(n,e){return n?.noun??B(e).toLowerCase()}function Wr(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function qr(n,e="|"){return n.map(t=>Qr(t)).join(e)}function is(n,e){return typeof e=="bigint"?e.toString():e}var Ur=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function ss(n){return new Ur(n)}function as(n){return n==null}function Hr(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function ds(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var os=Symbol("evaluating");function cs(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==os)return r===void 0&&(r=os,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function Ct(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function ls(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function Jr(n){return ls(n._zod.def)??n._zod.def.shape}function us(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return Ct(this,e,r),r},enumerable:!0,configurable:!0})}function fs(n,e,t){e in n?Ct(n,e,t):n[e]=t}function Il(n,e,t,r){let o=Jr(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?us(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):fs(n,i,r?r(s.value,i):s.value))}}function Tl(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?us(n,t,()=>e[t]):fs(n,t,r.value))}}function ps(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Yr="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function Lt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Xr(n){if(Lt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(Lt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var hs=new Set(["string","number","symbol"]);function Yn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Sn(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function D(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Qr(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function gs(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var ms={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ys(n,e){if(!Xr(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=Jr(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sn(n,ps(n._zod.def,{shape:jl(n,e)}))}function jl(n,e){let t={};return Il(t,n,Reflect.ownKeys(Jr(n))),Tl(t,e),t}function Ae(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function bs(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function De(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function Jn(n){return typeof n=="string"?n:n?.message}function eo(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function Oe(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:Jn(n.inst?._zod.def?.error?.(n))??Jn(i?.(n))??Jn(e?.error?.(n))??Jn(t.customError?.(n))??Jn(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var Dl=/[\uD800-\uDBFF]/;function no(n){let e=n.length;if(!Dl.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function to(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function vs(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function Xn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function ws(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):Fl(n,t,r.value)}}function tn(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function ro(n,e,t){return tn(n,e,t,!1)}function Fl(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:tn(this,e,t.bind(this))},set(r){tn(this,e,r)}})}function Ll(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var Br,je=!1,Cl={configurable:!0,get(){je=!0}};function Q(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&Br!==n._zod){Br=void 0;return}Br=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,Cl);let o=je;je=!1;try{let i=t(this);return je?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),je=je||o,i}catch(i){throw delete this[e],je=je||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function ks(n,e,t,r){let o=Ll(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var xs;var oo={value:void 0,enumerable:!1},Ss="captureStackTrace"in Error?Error:null;function Zl(n){let e=Ss;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Ss=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function E(n,e,t,r){let o={};function i(c){this.def=c,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(c,p){if(c._zod){if(c._zod.traits.has(n))return}else{oo.value=new i(p);try{Object.defineProperty(c,"_zod",oo)}finally{oo.value=void 0}}if(c._zod.traits.add(n),e(c,p),a){let h=Object.getPrototypeOf(c),b=c._zod.constr.prototype,m=h;for(;m&&m!==b;)m=Object.getPrototypeOf(m);let w=m??h;a.has(w)||(a.add(w),ws(w,s))}let g=f.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in c||(c[h]=g[h].bind(c)))}let u=r?.Parent??Object;class l extends u{}Object.defineProperty(l,"name",{value:n});function f(c){let p=r?.Parent?Zl(l):this;d(p,c);let g=p._zod.deferred;if(g){for(let b of g)b();p._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(p),p}return Object.defineProperty(f,"init",{value:d}),Object.defineProperty(f,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var Pe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(xs=globalThis).__zod_globalConfig??(xs.__zod_globalConfig={});var Rn=globalThis.__zod_globalConfig;function oe(n){return n&&Object.assign(Rn,n),Rn}function Gl(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,is,2)),n.message}function Vl(n){this._zod.message=n}var Kl={get:Gl,set:Vl,enumerable:!0,configurable:!0},so={value:void 0,enumerable:!1},Rs=new WeakSet([Object.prototype,Error.prototype]),$s=(n,e)=>{n.name="$ZodError",so.value=e,Object.defineProperty(n,"issues",so),so.value=void 0,Object.defineProperty(n,"message",Kl);let t=Object.getPrototypeOf(n);Rs.has(t)||(Rs.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},wg=E("$ZodError",$s),Qn=E("$ZodError",$s,void 0,{Parent:Error});var Ul=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new Pe;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>Oe(u,s,oe())));throw Yr(d,i?.callee??e),d}return a.value};return e},ao=Ul(Qn),Wl=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>Oe(u,s,oe())));throw Yr(d,i?.callee??e),d}return a.value};return e},co=Wl(Qn),ql=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new Pe;return i.issues.length?As(n,i.issues,o):{success:!0,data:i.value}},lo=ql(Qn);function As(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>Oe(o,t,oe()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var Hl=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?As(n,i.issues,o):{success:!0,data:i.value}},uo=Hl(Qn);var Os=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var _s=/^https?$/;var Ps=/^[\s\S]{0,}$/;var fo=/^-?\d+(?:\.\d+)?$/,Es=/^(?:true|false)$/i,Ms=/^null$/i;var ie=E("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Ns=n=>{let e=n.value;return!as(e)&&e.length!==void 0},Zt={number:"number",bigint:"bigint",object:"date"},zs=E("$ZodCheckLessThan",(n,e)=>{ie.init(n,e);let t=Zt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Zt[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),Is=E("$ZodCheckGreaterThan",(n,e)=>{ie.init(n,e);let t=Zt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Zt[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),Ts=E("$ZodCheckMultipleOf",(n,e)=>{ie.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):ds(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),js=E("$ZodCheckNumberFormat",(n,e)=>{ie.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=ms[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var Ds=E("$ZodCheckMaxLength",(n,e)=>{var t;ie.init(n,e),(t=n._zod.def).when??(t.when=Ns),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?no(o):i)<=e.maximum)return;let a=to(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),Fs=E("$ZodCheckMinLength",(n,e)=>{var t;ie.init(n,e),(t=n._zod.def).when??(t.when=Ns),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?no(o):i)>=e.minimum)return;let a=to(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var ho=E("$ZodCheckStringFormat",(n,e)=>{var t,r;ie.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),Ls=E("$ZodCheckRegex",(n,e)=>{ho.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var Zs={major:4,minor:6,patch:5};var U=E("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=Zs;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,u)=>{if(a.memo)return a;let l=Ae(a),f;for(let c of d){if(c._zod.def.when){if(bs(a)||!c._zod.def.when(a))continue}else if(l)continue;let p=a.issues.length,g=c._zod.check(a);if(g instanceof Promise&&u?.async===!1)throw new Pe;if(f||g instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await g,a.issues.length!==p&&(eo(a.issues,p,n),l||(l=Ae(a,p)))});else{if(a.issues.length===p)continue;eo(a.issues,p,n),l||(l=Ae(a,p))}}return f?f.then(()=>a):a},s=(a,d,u)=>{if(Ae(a))return a.aborted=!0,a;let l=i(d,o,u);if(l instanceof Promise){if(u.async===!1)throw new Pe;return l.then(f=>n._zod.parse(f,u))}return n._zod.parse(l,u)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let l=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return l instanceof Promise?l.then(f=>s(f,a,d)):s(l,a,d)}let u=n._zod.parse(a,d);if(u instanceof Promise){if(d.async===!1)throw new Pe;return u.then(l=>i(l,o,d))}return i(u,o,d)}}},{get"~standard"(){return ro(this,"~standard",Yl(this))},set"~standard"(n){tn(this,"~standard",n)}}),Ws=(n,e)=>n.issues.length?{issues:n.issues.map(t=>Oe(t,e,oe()))}:{value:n.value};async function Jl(n,e){let t={async:!0};return Ws(await n._zod.run({value:e,issues:[]},t),t)}function Yl(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return Ws(r,t)}catch{}return Jl(n,e)},vendor:"zod",version:1}}var go=E("$ZodString",(n,e)=>{U.init(n,e),n._zod.pattern=e.pattern??Ps,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),Kt=E("$ZodStringFormat",(n,e)=>{ho.init(n,e),go.init(n,e)});var qs=E("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Os),Kt.init(n,e)}),Hs=1,Gt=2;function Xl(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function Ql(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?Xl(n)||Gt:eu(n,e)}function eu(n,e){if(!e.normalize&&e.protocol?.source===_s.source&&!/^https?:\/\//i.test(n))return Hs;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??Gt}return new URL(n)}catch{return Gt}}var nu=/[\t\n\r]/g;function Gs(n){return n.replace(nu,"")}function tu(n,e){return e.lastIndex=0,e.test(n.hostname)}function ru(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var Js=E("$ZodURL",(n,e)=>{Kt.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=Ql(r,e);if(o===Hs){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===Gt){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=Gs(r);return}e.hostname&&!tu(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!ru(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:Gs(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var mo=E("$ZodNumber",(n,e)=>{U.init(n,e),n._zod.pattern=fo,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),Ys=E("$ZodNumberFormat",(n,e)=>{js.init(n,e),mo.init(n,e)}),Xs=E("$ZodBoolean",(n,e)=>{U.init(n,e),n._zod.pattern=Es,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var Qs=E("$ZodNull",(n,e)=>{U.init(n,e),n._zod.pattern=Ms,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var ea=E("$ZodUnknown",(n,e)=>{U.init(n,e),n._zod.parse=t=>t}),na=E("$ZodNever",(n,e)=>{U.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function Vs(n,e,t){n.issues.length&&e.issues.push(...De(t,n.issues)),e.value[t]=n.value}var ta=E("$ZodArray",(n,e)=>{U.init(n,e);let t=Rn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let u=i[d],l=e.element._zod.run({value:u,issues:[]},o);if(l instanceof Promise)s.push(l.then(f=>Vs(f,r,d)));else if(Vs(l,r,d),a&&l.issues.length!==0&&Ae(l))break}return s.length?Promise.all(s).then(()=>r):r}});function Vt(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...De(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var ou=[];function iu(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:ou,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=gs(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function su(n,e,t,r,o,i,s){let a=[],d=o.keySet,u=o.catchall._zod,l=u.def.type,f=u.optin,c=u.optout,p=0;for(let g in e){if(s&&t.issues.length!==p){if(Ae(t,p))break;p=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){l==="never"&&a.push(g);continue}if(l==="never"){a.push(g);continue}let h=u.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(b=>Vt(b,t,g,e,f,c))):Vt(h,t,g,e,f,c)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var ra=E("$ZodObject",(n,e)=>{U.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let u=()=>{let l={...r};return Object.defineProperty(e,"shape",{value:l}),u.raw=l,l};u.raw=r,Object.defineProperty(e,"shape",{get:u})}let o=ss(()=>iu(e));Q(n,"propValues",u=>{let l=u.def.shape,f={};for(let c in l){let p=l[c]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,c)||Ct(f,c,new Set);for(let g of p.values)f[c].add(g);p.optin!==void 0&&f[c].add(void 0)}}return f});let i=Lt,s=e.catchall,a,d=Rn.memoizer;d?.attach(n),n._zod.parse=(u,l)=>{a??(a=o.value);let f=u.value;if(!i(f))return u.issues.push({expected:"object",code:"invalid_type",input:f,inst:n}),u;u.value=d?d.alloc(n,u,{},l):{};let c=[],p=a.shape,g=l?.abortEarly,h=u.issues.length;for(let b of a.allKeys){if(g&&u.issues.length!==h){if(Ae(u,h))break;h=u.issues.length}if(b==="__proto__")continue;let m=p[b],w=m._zod.optin,$=m._zod.optout,k=m._zod.run({value:f[b],issues:[]},l);k instanceof Promise?c.push(k.then(O=>Vt(O,u,b,f,w,$))):Vt(k,u,b,f,w,$)}return s?su(c,f,u,l,o.value,n,g===!0):c.length?Promise.all(c).then(()=>u):u}});function Ks(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!Ae(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>Oe(s,r,oe())))}),e)}var oa=E("$ZodUnion",(n,e)=>{U.init(n,e),Q(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Q(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Q(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),Q(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>Hr(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>Ks(a,r,n,o)):Ks(s,r,n,o)}});var ia=E("$ZodRecord",(n,e)=>{U.init(n,e);let t=Rn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Xr(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){if(d.add(typeof l=="number"?l.toString():l),l==="__proto__")continue;let f=e.keyType._zod.run({value:l,issues:[]},o);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(f.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:f.issues.map(g=>Oe(g,o,oe())),input:l,path:[l],inst:n});continue}let c=f.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[l],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...De(l,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...De(l,p.issues)),r.value[c]=p.value)}let u;for(let l in i)if(!d.has(l))if(e.mode==="loose"){if(l==="__proto__")continue;r.value[l]=i[l]}else u=u??[],u.push(l);u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:u,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let u of Reflect.ownKeys(i)){if(u==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,u))continue;let l=e.keyType._zod.run({value:u,issues:[]},o);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof u=="string"&&fo.test(u)&&l.issues.length){let g=e.keyType._zod.run({value:Number(u),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(l=g)}if(l.issues.length){e.mode==="loose"?r.value[u]=i[u]:a?(d=d??[],d.push(u)):r.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(g=>Oe(g,o,oe())),input:u,path:[u],inst:n});continue}let c=l.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[u],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...De(u,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...De(u,p.issues)),r.value[c]=p.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var sa=E("$ZodEnum",(n,e)=>{U.init(n,e);let t=Wr(e.entries),r=new Set(t);n._zod.values=r,Q(n,"pattern",o=>{let i=Wr(o.def.entries).filter(s=>hs.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>Yn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),aa=E("$ZodLiteral",(n,e)=>{U.init(n,e);let t=new Set(e.values);n._zod.values=t,Q(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?Yn(i):i?Yn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function Bs(n,e){return n.value=e.issues.length?void 0:e.value,n}var da=E("$ZodOptional",(n,e)=>{U.init(n,e),Q(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",Q(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),Q(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${Hr(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>Bs(t,i)):Bs(t,o)}return e.innerType._zod.run(t,r)}});var ca=E("$ZodLazy",(n,e)=>{U.init(n,e),cs(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),Q(n,"pattern",t=>t.innerType?._zod?.pattern),Q(n,"propValues",t=>t.innerType?._zod?.propValues),Q(n,"optin",t=>t.innerType?._zod?.optin??void 0),Q(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),la=E("$ZodCustom",(n,e)=>{ie.init(n,e),U.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>Us(i,t,r,n));Us(o,t,r,n)}});function Us(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(Xn(o))}}var au=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=vs(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${Qr(i.values[0])}`:`Invalid option: expected one of ${qr(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${qr(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function ua(){return{localeError:au()}}var fa;var yo=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function pa(){return new yo}(fa=globalThis).__zod_globalRegistry??(fa.__zod_globalRegistry=pa());var $n=globalThis.__zod_globalRegistry;function ha(n){return n.checks&&(n.checks=[...n.checks]),n}function ga(n,e){return new n(ha({type:"string",...D(e)}))}function ma(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...D(e)})}function ya(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...D(e)})}function ba(n,e){return new n(ha({type:"number",checks:[],...D(e)}))}function va(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...D(e)})}function wa(n,e){return new n({type:"boolean",...D(e)})}function ka(n,e){return new n({type:"null",...D(e)})}function xa(n){return new n({type:"unknown"})}function Sa(n,e){return new n({type:"never",...D(e)})}function Ra(n,e){return new zs({check:"less_than",...D(e),value:n,inclusive:!0})}function $a(n,e){return new Is({check:"greater_than",...D(e),value:n,inclusive:!0})}function uu(n,e){return new Ts({check:"multiple_of",...D(e),value:n})}function bo(n,e){return new Ds({check:"max_length",...D(e),maximum:n})}function et(n,e){return new Fs({check:"min_length",...D(e),minimum:n})}function nt(n,e){return new Ls({check:"string_format",format:"regex",...D(e),pattern:n})}function Aa(n,e,t){return new n({type:"custom",check:"custom",fn:e,...D(t)})}function Oa(n,e){let t=fu(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(Xn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(Xn(i))}},n(r.value,r)),e);return t}function fu(n,e){let t=new ie({check:"custom",...D(e)});return t._zod.check=n,t}function _a(n){let e=new ie({check:"describe"});return e._zod.onattach=[t=>{let r=$n.get(t)??{};$n.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var ee=E("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");U.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){tn(this,"with",n)},parse(n,e){return ao(this,n,e,{callee:this.parse})},parseAsync(n,e){return co(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return lo(this,n,e)},safeParseAsync(n,e){return uo(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return Sn(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),Ea=E("ZodMiniString",(n,e)=>{go.init(n,e),ee.init(n,e)});function F(n){return ga(Ea,n)}var Ma=E("ZodMiniStringFormat",(n,e)=>{Kt.init(n,e),Ea.init(n,e)}),gu=E("ZodMiniEmail",(n,e)=>{qs.init(n,e),Ma.init(n,e)});function xb(n){return ma(gu,n)}var mu=E("ZodMiniURL",(n,e)=>{Js.init(n,e),Ma.init(n,e)});function Sb(n){return ya(mu,n)}var Na=E("ZodMiniNumber",(n,e)=>{mo.init(n,e),ee.init(n,e)});function rn(n){return ba(Na,n)}var yu=E("ZodMiniNumberFormat",(n,e)=>{Ys.init(n,e),Na.init(n,e)});function Rb(n){return va(yu,n)}var bu=E("ZodMiniBoolean",(n,e)=>{Xs.init(n,e),ee.init(n,e)});function $b(n){return wa(bu,n)}var vu=E("ZodMiniNull",(n,e)=>{Qs.init(n,e),ee.init(n,e)});function za(n){return ka(vu,n)}var wu=E("ZodMiniUnknown",(n,e)=>{ea.init(n,e),ee.init(n,e)});function tt(){return xa(wu)}var ku=E("ZodMiniNever",(n,e)=>{na.init(n,e),ee.init(n,e)});function xu(n){return Sa(ku,n)}var Su=E("ZodMiniArray",(n,e)=>{ta.init(n,e),ee.init(n,e)});function Ia(n,e){return new Su({type:"array",element:n,...D(e)})}var vo=E("ZodMiniObject",(n,e)=>{ra.init(n,e),ee.init(n,e),ks(n,"shape",t=>t._zod.def.shape,!1)});function se(n,e){let t={type:"object",shape:n??{},...D(e)};return new vo(t)}function An(n,e){return new vo({type:"object",shape:n,catchall:xu(),...D(e)})}function Ab(n,e){return new vo({type:"object",shape:n,catchall:tt(),...D(e)})}function Ta(n,e){return ys(n,e)}var Ru=E("ZodMiniUnion",(n,e)=>{oa.init(n,e),ee.init(n,e)});function ja(n,e){return new Ru({type:"union",options:n,...D(e)})}var Pa=E("ZodMiniRecord",(n,e)=>{ia.init(n,e),ee.init(n,e)});function Ob(n,e,t){return!e||!e._zod?new Pa({type:"record",keyType:F(),valueType:n,...D(e)}):new Pa({type:"record",keyType:n,valueType:e,...D(t)})}var $u=E("ZodMiniEnum",(n,e)=>{sa.init(n,e),ee.init(n,e),n.options=[...n._zod.values]});function Da(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new $u({type:"enum",entries:t,...D(e)})}var Au=E("ZodMiniLiteral",(n,e)=>{aa.init(n,e),ee.init(n,e)});function rt(n,e){return new Au({type:"literal",values:Array.isArray(n)?n:[n],...D(e)})}var Ou=E("ZodMiniOptional",(n,e)=>{da.init(n,e),ee.init(n,e)});function W(n){return new Ou({type:"optional",innerType:n})}var _u=E("ZodMiniLazy",(n,e)=>{ca.init(n,e),ee.init(n,e)});function _b(n){return new _u({type:"lazy",getter:n})}var Pu=E("ZodMiniCustom",(n,e)=>{la.init(n,e),ee.init(n,e)});function Bt(n,e={}){return Aa(Pu,n,e)}function Pb(n,e){return Oa(n,e)}var Eb=_a;oe().localeError||oe(ua());var L=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Eu=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=$n.get(n)?.description;return typeof e=="string"?e:void 0};var Mu=(n,e)=>n?.src?.(e)??e,Ut=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),wo=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function ko(n){let e=n??{};return Ut(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&wo(e.bytes,0)&&wo(e.width)&&wo(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||Ut(e.poster))&&(e.captions===void 0||Ut(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||Fa(e.at)!==void 0)}function Fa(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var La=n=>n.type.startsWith("image/"),Ca=n=>n.type.startsWith("video/");function Nu(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var zu=(n,e)=>e==="image"?La(n):e==="video"?Ca(n):!0,Iu=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,ot=n=>(Array.isArray(n)?n:[n]).filter(ko),Za=Symbol.for("@graview/core:file"),Tu=(n,e)=>(Object.defineProperty(L(n),Za,{value:e,enumerable:!0}),n);function Ga(n){let e=L(n);return e?.[Za]??(e?.innerType?Ga(e.innerType):void 0)}var ju=()=>({href:F(),name:F(),type:F(),bytes:rn(),width:W(rn()),height:W(rn()),caption:W(F()),poster:W(F()),duration:W(rn()),captions:W(F()),at:W(F())});function Mv(n){return Tu(se(ju()).check(Bt(e=>ko(e)&&zu(e,n),Iu(n))),n)}var Wt=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,qt=n=>typeof n=="string"&&n.length<501&&Wt.test(n);var Va=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Du=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function Ka(n){if(typeof n!="string"||!n.startsWith("@")||!Du.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return qt(o)?{address:o,kind:r}:void 0}var Fu=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,Lu=n=>`${n.kind}:${n.id}`;function Ba(n,e){if(typeof n!="string"||!Fu.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function Cu(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=Ba(r,e);return o?[o]:[]})}var Ua=Symbol.for("@graview/core:linked"),Tv=(n,e)=>(Object.defineProperty(Va(n),Ua,{value:e,enumerable:!0}),n);function it(n){let e=Va(n);return e?e[Ua]??it(e.innerType):void 0}function Zu(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=it(o);i&&t.set(r,i)}return t}function Gu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(Ka);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var Vu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function jv(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!Vu(e)))}function Dv(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=Gu(r);o&&e.set(t,o)}return e}var xo=new WeakMap;function Ku(n,e){e?xo.set(n,e):xo.delete(n)}var Wa=n=>xo.get(n);var Ht=["sun","mon","tue","wed","thu","fri","sat"],Bu=["day","week","month","year"],_n=n=>`${n}Repeat`,at=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,Ja=/^\d{4}-\d{2}-\d{2}$/,Ya=Symbol.for("@graview/core:repeat");function Jt(n){let e=L(n);return!!e&&(e[Ya]===1||Jt(e.innerType))}var Uu=n=>(Object.defineProperty(L(n),Ya,{value:1,enumerable:!0}),n),So=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,qa=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&Ja.test(t)),Wu=["every","interval","on","until","count","except","continues"],Xa=n=>Pn(n)&&Object.keys(n).every(e=>Wu.includes(e))&&So(n.interval,1,99)&&So(n.count,1,1e3)&&qa(n.until===void 0?void 0:[n.until],1)&&qa(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?Ht.includes(e):n.every==="month"&&e!==0&&So(e,-1,31))),Cv=()=>Uu(tt().check(Bt(n=>n===null||Xa(n),"how a date repeats, or null"))),st=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),Qa=n=>new Date(n).toISOString().slice(0,10),Ro=(n,e)=>Qa(st(n)+e*864e5),Ha=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return Qa(Date.UTC(n,e,t<0||t>r?r:t))},Pn=n=>typeof n=="object"&&n!==null&&Bu.includes(n.every);function On(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!Ja.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,u=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],l=t.limit??1e3,f=new Set(e.except??[]),c=+r.slice(0,4),p=+r.slice(5,7)-1,g=+r.slice(8,10),h=Ro(r,-new Date(st(r)).getUTCDay()),b=(e.on?.length?e.on:[a==="week"?Ht[new Date(st(r)).getUTCDay()]:g]).map(O=>typeof O=="string"?Ht.indexOf(O):O),m=a==="day"?1:a==="week"?7:0,w=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-p),$=e.count?0:Math.max(0,Math.floor((m?(st(d)-st(m===7?h:r))/864e5/m:a==="month"?w:w/12)/s)-1),k=0;for(let O=0;O<5e4&&i.length<l;O++,$++){let A=$*s,y=a==="day"?[Ro(r,A)]:a==="week"?b.map(v=>Ro(h,A*7+v)):a==="month"?b.map(v=>Ha(c,p+A,v)):[Ha(c+A,p,g)];for(let v of[...new Set(y)].sort())if(!(v<r)&&(u&&v>u||e.count&&k>=e.count||(k++,v>=d&&!f.has(v)&&i.push(v+o),i.length>=l)))return i}return i}function ed(n,e,t){if(!Pn(e)||typeof n!="string")return n;let r=On(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?On(n,e):[];return o[o.length-1]??n}function qu(n,e,t){let r=n[e],o=n[_n(e)];return typeof r=="string"&&Pn(o)?ed(r,o,t):r}var Yt=["human","visitor","agent","rule","system"],Hu=new Set(Yt);function $o(n){return Hu.has(n?.kind)?n.kind:"system"}function dt(n,e){if(n.onBehalfOf){let{onBehalfOf:s,...a}=n;return`${dt(a,e)}, for ${dt(s,e)}`}let t=$o(n);if(n.id===void 0)return n.name??(t==="agent"?"an agent":t==="visitor"?"a visitor":t);let r=e.graph.getNode(n.id);if(r)return K(e.schema.tryDefinition(r.kind),r);let o=e.seats?.find(s=>s.principal.id===n.id);if(o)return o.label;let i=e.people?.find(s=>s.id===n.id&&(s.kind===void 0||s.kind===n.kind));return i?i.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",visitor:"a visitor",agent:"an agent",rule:"a rule",system:"the system"}[t]:n.id}var me="$archived",ye=n=>n?.[me]===!0,Uv=(n,e=!1)=>e==="all"||ye(n)===e,Ao=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,ct="$leftAlone",Xt=new Set([me,ct]);var En="0.1.66";var pe=class extends Error{constructor(t,r){super(r?`${t}
1
+ import{a as Tr,b as ce,c as He,d as Je,f as Re,g as jr,h as Ye,i as Un,j as Ui}from"./chunk.FQLNBIQ5.js";var zt="en-US",Hn=/^\d{4}-\d{2}-\d{2}$/,Fr=/^\d{4}(?:-(?:0[1-9]|1[0-2]))?$/,Lr=/^\d{4}(?:-(?:0[1-9]|1[0-2])(?:-\d{2})?)?$/;function hl(n){if(Hn.test(n))return{from:n,to:n};if(!Fr.test(n))return;if(n.length===4)return{from:`${n}-01-01`,to:`${n}-12-31`};let e=new Date(Date.UTC(+n.slice(0,4),+n.slice(5,7),0)).getUTCDate();return{from:`${n}-01`,to:`${n}-${String(e).padStart(2,"0")}`}}var It=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,ag=n=>!Number.isNaN(Date.parse(n)),te=(n,e=Date.now())=>{let t=Tt(n);return t?Cr(e,t).day:new Date(e).toISOString().slice(0,10)},Tt=n=>wn(n)??vn,Wn,bn,qn,vn;function gl(n){Wn=kn(n.reader),bn=kn(n.app),qn=wn(n.readerTimeZone),vn=wn(n.appTimeZone)}function ml(n,e){let t=[Wn,bn,qn,vn];n.reader!==void 0&&(Wn=kn(n.reader)),n.app!==void 0&&(bn=kn(n.app)),n.readerTimeZone!==void 0&&(qn=wn(n.readerTimeZone)),n.appTimeZone!==void 0&&(vn=wn(n.appTimeZone));try{return e()}finally{[Wn,bn,qn,vn]=t}}var Wi=n=>Wn??kn(n)??bn??zt,dg=n=>kn(n)??bn??zt,jt=n=>qn??wn(n)??vn,yl=n=>jt(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",bl=/^\s*([+\-−]|\d)/;var Dr=new Map;function wn(n){if(n&&!Dr.has(n)){let e=!1;try{new Intl.DateTimeFormat(zt,{timeZone:n}),e=!bl.test(n)}catch{}Dr.set(n,e)}return n&&Dr.get(n)?n:void 0}var Xe=new Map;function kn(n){if(n&&!Xe.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Xe.set(n,e)}return n&&Xe.get(n)?n:void 0}function Ie(n,e,t,r){let o=`${t=Wi(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Xe.get(o);return i||Xe.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Qe="UTC",Dt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Te(n,e){return Fr.test(n)?n.length===4?n:Yi(n,{},e):Hn.test(n)?Ie(Dt(n),{year:"numeric",month:"short",day:"numeric",timeZone:Qe},e):n}function Cr(n,e){let t=`wall@${e??""}`,r=Xe.get(t);r||Xe.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function qi(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=Cr(i,t);return vl(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var vl=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),Hi=n=>/[Z+-][\d:]*$/.test(n.slice(16));function Ji(n,e,t,r,o=!1){if(!It.test(n))return n;let i=Hi(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?jt(r):Qe;return Ie(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var Zr=(n,e,t)=>Ji(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),wl=(n,e,t)=>Ji(n,{},e,t);function kl(n,e){if(Hn.test(n))return n;if(!It.test(n))return;if(!Hi(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:Cr(t,jt(e)).day}function $e(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?Ie(n,t,e,!0):String(n)}function xl(n,e={},t){return Hn.test(n)?Ie(Dt(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Qe},t):n}function Sl(n,e){return Hn.test(n)?Ie(Dt(n),{month:"short",day:"numeric",timeZone:Qe},e):n}function Yi(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return Ie(Dt(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Qe},t)}var Rl=(n,e="short",t)=>Ie(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Qe},t),$l=(n,e)=>Ie(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Qe},e),Al=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function Gr(n,e){return n.includes("-")?n.replace(Al,t=>Te(t,e)):n}var en=n=>n.charAt(0).toUpperCase()+n.slice(1),Vr=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),Xi=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"",Qi=n=>/^\S*\p{Ll}\p{Lu}|\s\p{Lu}\p{Ll}/u.test(n)?n:Vr(n);function B(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return en(e.replace(/\b[a-z]+\b/g,t=>es.has(t)?t.toUpperCase():t.endsWith("s")&&es.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var es=new Set("id url uri api ip ioc cve cvss cwe cpe sku vat iban isbn pdf csv json html css sla kpi roi faq ssn ein vin gps sms crm erp seo utm ui ux ai dns ssl tls http https sql uuid mfa sso cto ceo cfo coo rsvp eta".split(" "));function nn(n){if(!ns(n))return B(n);let e=n.replace(/[_\s]+/g," ").trim();return en(e)}var ns=n=>/[A-Z]/.test(n)&&!/^[a-z][a-zA-Z0-9]*$/.test(n);function fg(n){return ns(n)?nn(n):Vr(B(n))}function Ol(n,e){return{...e,kind:n,edges:e.edges??{}}}function Kr(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??te()):!r.retired.includes(o)}function K(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function _l(n){return n.title??B(n.name)}function Pl(n,e,t){let r=n.tryDefinition(e);return`${$e(t)} ${t===1?X(r,e):le(n,e).toLowerCase()}`}function le(n,e){return n.tryDefinition(e)?.plural??`${B(e).toLowerCase()}s`}function El(n,e){return en(le(n,e))}function Ml(n,e){let t=le(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function ts(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":B(e))}var Ft=(n,e)=>Qi(ts(n,e)),Nl=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,zl=/^(hour|honest|hono[ur]r?|heir)/;function rs(n){let e=B(n).toLowerCase();return zl.test(e)?"an":Nl.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function xn(n){return`${rs(n)} ${B(n).toLowerCase()}`}function X(n,e){return n?.noun??B(e).toLowerCase()}function Wr(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function qr(n,e="|"){return n.map(t=>Qr(t)).join(e)}function is(n,e){return typeof e=="bigint"?e.toString():e}var Ur=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function ss(n){return new Ur(n)}function as(n){return n==null}function Hr(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function ds(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var os=Symbol("evaluating");function cs(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==os)return r===void 0&&(r=os,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function Ct(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function ls(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function Jr(n){return ls(n._zod.def)??n._zod.def.shape}function us(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return Ct(this,e,r),r},enumerable:!0,configurable:!0})}function fs(n,e,t){e in n?Ct(n,e,t):n[e]=t}function Il(n,e,t,r){let o=Jr(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?us(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):fs(n,i,r?r(s.value,i):s.value))}}function Tl(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?us(n,t,()=>e[t]):fs(n,t,r.value))}}function ps(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Yr="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function Lt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Xr(n){if(Lt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(Lt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var hs=new Set(["string","number","symbol"]);function Yn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Sn(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function D(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Qr(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function gs(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var ms={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ys(n,e){if(!Xr(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=Jr(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sn(n,ps(n._zod.def,{shape:jl(n,e)}))}function jl(n,e){let t={};return Il(t,n,Reflect.ownKeys(Jr(n))),Tl(t,e),t}function Ae(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function bs(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function De(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function Jn(n){return typeof n=="string"?n:n?.message}function eo(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function Oe(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:Jn(n.inst?._zod.def?.error?.(n))??Jn(i?.(n))??Jn(e?.error?.(n))??Jn(t.customError?.(n))??Jn(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var Dl=/[\uD800-\uDBFF]/;function no(n){let e=n.length;if(!Dl.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function to(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function vs(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function Xn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function ws(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):Fl(n,t,r.value)}}function tn(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function ro(n,e,t){return tn(n,e,t,!1)}function Fl(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:tn(this,e,t.bind(this))},set(r){tn(this,e,r)}})}function Ll(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var Br,je=!1,Cl={configurable:!0,get(){je=!0}};function Q(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&Br!==n._zod){Br=void 0;return}Br=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,Cl);let o=je;je=!1;try{let i=t(this);return je?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),je=je||o,i}catch(i){throw delete this[e],je=je||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function ks(n,e,t,r){let o=Ll(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var xs;var oo={value:void 0,enumerable:!1},Ss="captureStackTrace"in Error?Error:null;function Zl(n){let e=Ss;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Ss=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function E(n,e,t,r){let o={};function i(c){this.def=c,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(c,p){if(c._zod){if(c._zod.traits.has(n))return}else{oo.value=new i(p);try{Object.defineProperty(c,"_zod",oo)}finally{oo.value=void 0}}if(c._zod.traits.add(n),e(c,p),a){let h=Object.getPrototypeOf(c),b=c._zod.constr.prototype,m=h;for(;m&&m!==b;)m=Object.getPrototypeOf(m);let w=m??h;a.has(w)||(a.add(w),ws(w,s))}let g=f.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in c||(c[h]=g[h].bind(c)))}let u=r?.Parent??Object;class l extends u{}Object.defineProperty(l,"name",{value:n});function f(c){let p=r?.Parent?Zl(l):this;d(p,c);let g=p._zod.deferred;if(g){for(let b of g)b();p._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(p),p}return Object.defineProperty(f,"init",{value:d}),Object.defineProperty(f,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var Pe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(xs=globalThis).__zod_globalConfig??(xs.__zod_globalConfig={});var Rn=globalThis.__zod_globalConfig;function oe(n){return n&&Object.assign(Rn,n),Rn}function Gl(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,is,2)),n.message}function Vl(n){this._zod.message=n}var Kl={get:Gl,set:Vl,enumerable:!0,configurable:!0},so={value:void 0,enumerable:!1},Rs=new WeakSet([Object.prototype,Error.prototype]),$s=(n,e)=>{n.name="$ZodError",so.value=e,Object.defineProperty(n,"issues",so),so.value=void 0,Object.defineProperty(n,"message",Kl);let t=Object.getPrototypeOf(n);Rs.has(t)||(Rs.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},wg=E("$ZodError",$s),Qn=E("$ZodError",$s,void 0,{Parent:Error});var Ul=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new Pe;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>Oe(u,s,oe())));throw Yr(d,i?.callee??e),d}return a.value};return e},ao=Ul(Qn),Wl=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>Oe(u,s,oe())));throw Yr(d,i?.callee??e),d}return a.value};return e},co=Wl(Qn),ql=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new Pe;return i.issues.length?As(n,i.issues,o):{success:!0,data:i.value}},lo=ql(Qn);function As(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>Oe(o,t,oe()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var Hl=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?As(n,i.issues,o):{success:!0,data:i.value}},uo=Hl(Qn);var Os=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var _s=/^https?$/;var Ps=/^[\s\S]{0,}$/;var fo=/^-?\d+(?:\.\d+)?$/,Es=/^(?:true|false)$/i,Ms=/^null$/i;var ie=E("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Ns=n=>{let e=n.value;return!as(e)&&e.length!==void 0},Zt={number:"number",bigint:"bigint",object:"date"},zs=E("$ZodCheckLessThan",(n,e)=>{ie.init(n,e);let t=Zt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:Zt[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),Is=E("$ZodCheckGreaterThan",(n,e)=>{ie.init(n,e);let t=Zt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:Zt[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),Ts=E("$ZodCheckMultipleOf",(n,e)=>{ie.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):ds(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),js=E("$ZodCheckNumberFormat",(n,e)=>{ie.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=ms[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var Ds=E("$ZodCheckMaxLength",(n,e)=>{var t;ie.init(n,e),(t=n._zod.def).when??(t.when=Ns),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?no(o):i)<=e.maximum)return;let a=to(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),Fs=E("$ZodCheckMinLength",(n,e)=>{var t;ie.init(n,e),(t=n._zod.def).when??(t.when=Ns),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?no(o):i)>=e.minimum)return;let a=to(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var ho=E("$ZodCheckStringFormat",(n,e)=>{var t,r;ie.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),Ls=E("$ZodCheckRegex",(n,e)=>{ho.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var Zs={major:4,minor:6,patch:5};var U=E("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=Zs;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,u)=>{if(a.memo)return a;let l=Ae(a),f;for(let c of d){if(c._zod.def.when){if(bs(a)||!c._zod.def.when(a))continue}else if(l)continue;let p=a.issues.length,g=c._zod.check(a);if(g instanceof Promise&&u?.async===!1)throw new Pe;if(f||g instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await g,a.issues.length!==p&&(eo(a.issues,p,n),l||(l=Ae(a,p)))});else{if(a.issues.length===p)continue;eo(a.issues,p,n),l||(l=Ae(a,p))}}return f?f.then(()=>a):a},s=(a,d,u)=>{if(Ae(a))return a.aborted=!0,a;let l=i(d,o,u);if(l instanceof Promise){if(u.async===!1)throw new Pe;return l.then(f=>n._zod.parse(f,u))}return n._zod.parse(l,u)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let l=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return l instanceof Promise?l.then(f=>s(f,a,d)):s(l,a,d)}let u=n._zod.parse(a,d);if(u instanceof Promise){if(d.async===!1)throw new Pe;return u.then(l=>i(l,o,d))}return i(u,o,d)}}},{get"~standard"(){return ro(this,"~standard",Yl(this))},set"~standard"(n){tn(this,"~standard",n)}}),Ws=(n,e)=>n.issues.length?{issues:n.issues.map(t=>Oe(t,e,oe()))}:{value:n.value};async function Jl(n,e){let t={async:!0};return Ws(await n._zod.run({value:e,issues:[]},t),t)}function Yl(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return Ws(r,t)}catch{}return Jl(n,e)},vendor:"zod",version:1}}var go=E("$ZodString",(n,e)=>{U.init(n,e),n._zod.pattern=e.pattern??Ps,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),Kt=E("$ZodStringFormat",(n,e)=>{ho.init(n,e),go.init(n,e)});var qs=E("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Os),Kt.init(n,e)}),Hs=1,Gt=2;function Xl(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function Ql(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?Xl(n)||Gt:eu(n,e)}function eu(n,e){if(!e.normalize&&e.protocol?.source===_s.source&&!/^https?:\/\//i.test(n))return Hs;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??Gt}return new URL(n)}catch{return Gt}}var nu=/[\t\n\r]/g;function Gs(n){return n.replace(nu,"")}function tu(n,e){return e.lastIndex=0,e.test(n.hostname)}function ru(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var Js=E("$ZodURL",(n,e)=>{Kt.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=Ql(r,e);if(o===Hs){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===Gt){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=Gs(r);return}e.hostname&&!tu(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!ru(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:Gs(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var mo=E("$ZodNumber",(n,e)=>{U.init(n,e),n._zod.pattern=fo,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),Ys=E("$ZodNumberFormat",(n,e)=>{js.init(n,e),mo.init(n,e)}),Xs=E("$ZodBoolean",(n,e)=>{U.init(n,e),n._zod.pattern=Es,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var Qs=E("$ZodNull",(n,e)=>{U.init(n,e),n._zod.pattern=Ms,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var ea=E("$ZodUnknown",(n,e)=>{U.init(n,e),n._zod.parse=t=>t}),na=E("$ZodNever",(n,e)=>{U.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function Vs(n,e,t){n.issues.length&&e.issues.push(...De(t,n.issues)),e.value[t]=n.value}var ta=E("$ZodArray",(n,e)=>{U.init(n,e);let t=Rn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let u=i[d],l=e.element._zod.run({value:u,issues:[]},o);if(l instanceof Promise)s.push(l.then(f=>Vs(f,r,d)));else if(Vs(l,r,d),a&&l.issues.length!==0&&Ae(l))break}return s.length?Promise.all(s).then(()=>r):r}});function Vt(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...De(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var ou=[];function iu(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:ou,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=gs(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function su(n,e,t,r,o,i,s){let a=[],d=o.keySet,u=o.catchall._zod,l=u.def.type,f=u.optin,c=u.optout,p=0;for(let g in e){if(s&&t.issues.length!==p){if(Ae(t,p))break;p=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){l==="never"&&a.push(g);continue}if(l==="never"){a.push(g);continue}let h=u.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(b=>Vt(b,t,g,e,f,c))):Vt(h,t,g,e,f,c)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var ra=E("$ZodObject",(n,e)=>{U.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let u=()=>{let l={...r};return Object.defineProperty(e,"shape",{value:l}),u.raw=l,l};u.raw=r,Object.defineProperty(e,"shape",{get:u})}let o=ss(()=>iu(e));Q(n,"propValues",u=>{let l=u.def.shape,f={};for(let c in l){let p=l[c]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,c)||Ct(f,c,new Set);for(let g of p.values)f[c].add(g);p.optin!==void 0&&f[c].add(void 0)}}return f});let i=Lt,s=e.catchall,a,d=Rn.memoizer;d?.attach(n),n._zod.parse=(u,l)=>{a??(a=o.value);let f=u.value;if(!i(f))return u.issues.push({expected:"object",code:"invalid_type",input:f,inst:n}),u;u.value=d?d.alloc(n,u,{},l):{};let c=[],p=a.shape,g=l?.abortEarly,h=u.issues.length;for(let b of a.allKeys){if(g&&u.issues.length!==h){if(Ae(u,h))break;h=u.issues.length}if(b==="__proto__")continue;let m=p[b],w=m._zod.optin,$=m._zod.optout,k=m._zod.run({value:f[b],issues:[]},l);k instanceof Promise?c.push(k.then(O=>Vt(O,u,b,f,w,$))):Vt(k,u,b,f,w,$)}return s?su(c,f,u,l,o.value,n,g===!0):c.length?Promise.all(c).then(()=>u):u}});function Ks(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!Ae(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>Oe(s,r,oe())))}),e)}var oa=E("$ZodUnion",(n,e)=>{U.init(n,e),Q(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Q(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Q(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),Q(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>Hr(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>Ks(a,r,n,o)):Ks(s,r,n,o)}});var ia=E("$ZodRecord",(n,e)=>{U.init(n,e);let t=Rn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Xr(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){if(d.add(typeof l=="number"?l.toString():l),l==="__proto__")continue;let f=e.keyType._zod.run({value:l,issues:[]},o);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(f.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:f.issues.map(g=>Oe(g,o,oe())),input:l,path:[l],inst:n});continue}let c=f.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[l],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...De(l,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...De(l,p.issues)),r.value[c]=p.value)}let u;for(let l in i)if(!d.has(l))if(e.mode==="loose"){if(l==="__proto__")continue;r.value[l]=i[l]}else u=u??[],u.push(l);u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:u,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let u of Reflect.ownKeys(i)){if(u==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,u))continue;let l=e.keyType._zod.run({value:u,issues:[]},o);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof u=="string"&&fo.test(u)&&l.issues.length){let g=e.keyType._zod.run({value:Number(u),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(l=g)}if(l.issues.length){e.mode==="loose"?r.value[u]=i[u]:a?(d=d??[],d.push(u)):r.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(g=>Oe(g,o,oe())),input:u,path:[u],inst:n});continue}let c=l.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[u],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...De(u,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...De(u,p.issues)),r.value[c]=p.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var sa=E("$ZodEnum",(n,e)=>{U.init(n,e);let t=Wr(e.entries),r=new Set(t);n._zod.values=r,Q(n,"pattern",o=>{let i=Wr(o.def.entries).filter(s=>hs.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>Yn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),aa=E("$ZodLiteral",(n,e)=>{U.init(n,e);let t=new Set(e.values);n._zod.values=t,Q(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?Yn(i):i?Yn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function Bs(n,e){return n.value=e.issues.length?void 0:e.value,n}var da=E("$ZodOptional",(n,e)=>{U.init(n,e),Q(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",Q(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),Q(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${Hr(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>Bs(t,i)):Bs(t,o)}return e.innerType._zod.run(t,r)}});var ca=E("$ZodLazy",(n,e)=>{U.init(n,e),cs(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),Q(n,"pattern",t=>t.innerType?._zod?.pattern),Q(n,"propValues",t=>t.innerType?._zod?.propValues),Q(n,"optin",t=>t.innerType?._zod?.optin??void 0),Q(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),la=E("$ZodCustom",(n,e)=>{ie.init(n,e),U.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>Us(i,t,r,n));Us(o,t,r,n)}});function Us(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(Xn(o))}}var au=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=vs(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${Qr(i.values[0])}`:`Invalid option: expected one of ${qr(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${qr(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function ua(){return{localeError:au()}}var fa;var yo=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function pa(){return new yo}(fa=globalThis).__zod_globalRegistry??(fa.__zod_globalRegistry=pa());var $n=globalThis.__zod_globalRegistry;function ha(n){return n.checks&&(n.checks=[...n.checks]),n}function ga(n,e){return new n(ha({type:"string",...D(e)}))}function ma(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...D(e)})}function ya(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...D(e)})}function ba(n,e){return new n(ha({type:"number",checks:[],...D(e)}))}function va(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...D(e)})}function wa(n,e){return new n({type:"boolean",...D(e)})}function ka(n,e){return new n({type:"null",...D(e)})}function xa(n){return new n({type:"unknown"})}function Sa(n,e){return new n({type:"never",...D(e)})}function Ra(n,e){return new zs({check:"less_than",...D(e),value:n,inclusive:!0})}function $a(n,e){return new Is({check:"greater_than",...D(e),value:n,inclusive:!0})}function uu(n,e){return new Ts({check:"multiple_of",...D(e),value:n})}function bo(n,e){return new Ds({check:"max_length",...D(e),maximum:n})}function et(n,e){return new Fs({check:"min_length",...D(e),minimum:n})}function nt(n,e){return new Ls({check:"string_format",format:"regex",...D(e),pattern:n})}function Aa(n,e,t){return new n({type:"custom",check:"custom",fn:e,...D(t)})}function Oa(n,e){let t=fu(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(Xn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(Xn(i))}},n(r.value,r)),e);return t}function fu(n,e){let t=new ie({check:"custom",...D(e)});return t._zod.check=n,t}function _a(n){let e=new ie({check:"describe"});return e._zod.onattach=[t=>{let r=$n.get(t)??{};$n.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var ee=E("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");U.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){tn(this,"with",n)},parse(n,e){return ao(this,n,e,{callee:this.parse})},parseAsync(n,e){return co(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return lo(this,n,e)},safeParseAsync(n,e){return uo(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return Sn(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),Ea=E("ZodMiniString",(n,e)=>{go.init(n,e),ee.init(n,e)});function F(n){return ga(Ea,n)}var Ma=E("ZodMiniStringFormat",(n,e)=>{Kt.init(n,e),Ea.init(n,e)}),gu=E("ZodMiniEmail",(n,e)=>{qs.init(n,e),Ma.init(n,e)});function xb(n){return ma(gu,n)}var mu=E("ZodMiniURL",(n,e)=>{Js.init(n,e),Ma.init(n,e)});function Sb(n){return ya(mu,n)}var Na=E("ZodMiniNumber",(n,e)=>{mo.init(n,e),ee.init(n,e)});function rn(n){return ba(Na,n)}var yu=E("ZodMiniNumberFormat",(n,e)=>{Ys.init(n,e),Na.init(n,e)});function Rb(n){return va(yu,n)}var bu=E("ZodMiniBoolean",(n,e)=>{Xs.init(n,e),ee.init(n,e)});function $b(n){return wa(bu,n)}var vu=E("ZodMiniNull",(n,e)=>{Qs.init(n,e),ee.init(n,e)});function za(n){return ka(vu,n)}var wu=E("ZodMiniUnknown",(n,e)=>{ea.init(n,e),ee.init(n,e)});function tt(){return xa(wu)}var ku=E("ZodMiniNever",(n,e)=>{na.init(n,e),ee.init(n,e)});function xu(n){return Sa(ku,n)}var Su=E("ZodMiniArray",(n,e)=>{ta.init(n,e),ee.init(n,e)});function Ia(n,e){return new Su({type:"array",element:n,...D(e)})}var vo=E("ZodMiniObject",(n,e)=>{ra.init(n,e),ee.init(n,e),ks(n,"shape",t=>t._zod.def.shape,!1)});function se(n,e){let t={type:"object",shape:n??{},...D(e)};return new vo(t)}function An(n,e){return new vo({type:"object",shape:n,catchall:xu(),...D(e)})}function Ab(n,e){return new vo({type:"object",shape:n,catchall:tt(),...D(e)})}function Ta(n,e){return ys(n,e)}var Ru=E("ZodMiniUnion",(n,e)=>{oa.init(n,e),ee.init(n,e)});function ja(n,e){return new Ru({type:"union",options:n,...D(e)})}var Pa=E("ZodMiniRecord",(n,e)=>{ia.init(n,e),ee.init(n,e)});function Ob(n,e,t){return!e||!e._zod?new Pa({type:"record",keyType:F(),valueType:n,...D(e)}):new Pa({type:"record",keyType:n,valueType:e,...D(t)})}var $u=E("ZodMiniEnum",(n,e)=>{sa.init(n,e),ee.init(n,e),n.options=[...n._zod.values]});function Da(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new $u({type:"enum",entries:t,...D(e)})}var Au=E("ZodMiniLiteral",(n,e)=>{aa.init(n,e),ee.init(n,e)});function rt(n,e){return new Au({type:"literal",values:Array.isArray(n)?n:[n],...D(e)})}var Ou=E("ZodMiniOptional",(n,e)=>{da.init(n,e),ee.init(n,e)});function W(n){return new Ou({type:"optional",innerType:n})}var _u=E("ZodMiniLazy",(n,e)=>{ca.init(n,e),ee.init(n,e)});function _b(n){return new _u({type:"lazy",getter:n})}var Pu=E("ZodMiniCustom",(n,e)=>{la.init(n,e),ee.init(n,e)});function Bt(n,e={}){return Aa(Pu,n,e)}function Pb(n,e){return Oa(n,e)}var Eb=_a;oe().localeError||oe(ua());var L=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Eu=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=$n.get(n)?.description;return typeof e=="string"?e:void 0};var Mu=(n,e)=>n?.src?.(e)??e,Ut=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),wo=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function ko(n){let e=n??{};return Ut(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&wo(e.bytes,0)&&wo(e.width)&&wo(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||Ut(e.poster))&&(e.captions===void 0||Ut(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||Fa(e.at)!==void 0)}function Fa(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var La=n=>n.type.startsWith("image/"),Ca=n=>n.type.startsWith("video/");function Nu(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var zu=(n,e)=>e==="image"?La(n):e==="video"?Ca(n):!0,Iu=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,ot=n=>(Array.isArray(n)?n:[n]).filter(ko),Za=Symbol.for("@graview/core:file"),Tu=(n,e)=>(Object.defineProperty(L(n),Za,{value:e,enumerable:!0}),n);function Ga(n){let e=L(n);return e?.[Za]??(e?.innerType?Ga(e.innerType):void 0)}var ju=()=>({href:F(),name:F(),type:F(),bytes:rn(),width:W(rn()),height:W(rn()),caption:W(F()),poster:W(F()),duration:W(rn()),captions:W(F()),at:W(F())});function Mv(n){return Tu(se(ju()).check(Bt(e=>ko(e)&&zu(e,n),Iu(n))),n)}var Wt=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,qt=n=>typeof n=="string"&&n.length<501&&Wt.test(n);var Va=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Du=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function Ka(n){if(typeof n!="string"||!n.startsWith("@")||!Du.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return qt(o)?{address:o,kind:r}:void 0}var Fu=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,Lu=n=>`${n.kind}:${n.id}`;function Ba(n,e){if(typeof n!="string"||!Fu.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function Cu(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=Ba(r,e);return o?[o]:[]})}var Ua=Symbol.for("@graview/core:linked"),Tv=(n,e)=>(Object.defineProperty(Va(n),Ua,{value:e,enumerable:!0}),n);function it(n){let e=Va(n);return e?e[Ua]??it(e.innerType):void 0}function Zu(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=it(o);i&&t.set(r,i)}return t}function Gu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(Ka);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var Vu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function jv(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!Vu(e)))}function Dv(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=Gu(r);o&&e.set(t,o)}return e}var xo=new WeakMap;function Ku(n,e){e?xo.set(n,e):xo.delete(n)}var Wa=n=>xo.get(n);var Ht=["sun","mon","tue","wed","thu","fri","sat"],Bu=["day","week","month","year"],_n=n=>`${n}Repeat`,at=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,Ja=/^\d{4}-\d{2}-\d{2}$/,Ya=Symbol.for("@graview/core:repeat");function Jt(n){let e=L(n);return!!e&&(e[Ya]===1||Jt(e.innerType))}var Uu=n=>(Object.defineProperty(L(n),Ya,{value:1,enumerable:!0}),n),So=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,qa=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&Ja.test(t)),Wu=["every","interval","on","until","count","except","continues"],Xa=n=>Pn(n)&&Object.keys(n).every(e=>Wu.includes(e))&&So(n.interval,1,99)&&So(n.count,1,1e3)&&qa(n.until===void 0?void 0:[n.until],1)&&qa(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?Ht.includes(e):n.every==="month"&&e!==0&&So(e,-1,31))),Cv=()=>Uu(tt().check(Bt(n=>n===null||Xa(n),"how a date repeats, or null"))),st=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),Qa=n=>new Date(n).toISOString().slice(0,10),Ro=(n,e)=>Qa(st(n)+e*864e5),Ha=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return Qa(Date.UTC(n,e,t<0||t>r?r:t))},Pn=n=>typeof n=="object"&&n!==null&&Bu.includes(n.every);function On(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!Ja.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,u=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],l=t.limit??1e3,f=new Set(e.except??[]),c=+r.slice(0,4),p=+r.slice(5,7)-1,g=+r.slice(8,10),h=Ro(r,-new Date(st(r)).getUTCDay()),b=(e.on?.length?e.on:[a==="week"?Ht[new Date(st(r)).getUTCDay()]:g]).map(O=>typeof O=="string"?Ht.indexOf(O):O),m=a==="day"?1:a==="week"?7:0,w=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-p),$=e.count?0:Math.max(0,Math.floor((m?(st(d)-st(m===7?h:r))/864e5/m:a==="month"?w:w/12)/s)-1),k=0;for(let O=0;O<5e4&&i.length<l;O++,$++){let A=$*s,y=a==="day"?[Ro(r,A)]:a==="week"?b.map(v=>Ro(h,A*7+v)):a==="month"?b.map(v=>Ha(c,p+A,v)):[Ha(c+A,p,g)];for(let v of[...new Set(y)].sort())if(!(v<r)&&(u&&v>u||e.count&&k>=e.count||(k++,v>=d&&!f.has(v)&&i.push(v+o),i.length>=l)))return i}return i}function ed(n,e,t){if(!Pn(e)||typeof n!="string")return n;let r=On(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?On(n,e):[];return o[o.length-1]??n}function qu(n,e,t){let r=n[e],o=n[_n(e)];return typeof r=="string"&&Pn(o)?ed(r,o,t):r}var Yt=["human","visitor","agent","rule","system"],Hu=new Set(Yt);function $o(n){return Hu.has(n?.kind)?n.kind:"system"}function dt(n,e){if(n.onBehalfOf){let{onBehalfOf:s,...a}=n;return`${dt(a,e)}, for ${dt(s,e)}`}let t=$o(n);if(n.id===void 0)return n.name??(t==="agent"?"an agent":t==="visitor"?"a visitor":t);let r=e.graph.getNode(n.id);if(r)return K(e.schema.tryDefinition(r.kind),r);let o=e.seats?.find(s=>s.principal.id===n.id);if(o)return o.label;let i=e.people?.find(s=>s.id===n.id&&(s.kind===void 0||s.kind===n.kind));return i?i.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",visitor:"a visitor",agent:"an agent",rule:"a rule",system:"the system"}[t]:n.id}var me="$archived",ye=n=>n?.[me]===!0,Uv=(n,e=!1)=>e==="all"||ye(n)===e,Ao=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,ct="$leftAlone",Xt=new Set([me,ct]);var En="0.1.68";var pe=class extends Error{constructor(t,r){super(r?`${t}
2
2
  \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function Ju(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new pe(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,u]of Object.entries(a.edges)){if(u.to!=="*"){for(let f of u.to)if(!r.has(f))throw new pe(`Edge "${d}" on "${a.kind}" points at undeclared kind "${f}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let l=o.get(d);l?l.from.push(a.kind):o.set(d,{from:[a.kind],decl:u})}let i=new Map;for(let[a,{from:d,decl:u}]of o){let l=d.map(f=>r.get(f).edges[a].to);i.set(a,{kind:a,from:d,to:l.includes("*")?"*":[...new Set(l.flat())],cardinality:u.cardinality??"many",...u.description===void 0?{}:{description:u.description}})}let s=new Map;for(let a of t)s.set(a.kind,Ta(a.fields,{id:F().check(et(1)),kind:rt(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new pe(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,u){let l=r.get(d)?.edges[a];return l?l.to==="*"||l.to.includes(u):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new pe("Node is missing a `kind`");let u=s.get(d);if(!u)throw new pe(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let l={},f={};for(let[p,g]of Object.entries(a))Xt.has(p)?g===!0&&(f[p]=!0):l[p]=g;let c=u.parse(l);return Object.keys(f).length>0?{...c,...f}:c},__node:void 0}}var fe={snapshot:2,op:3},on=class extends Error{constructor(t,r,o,i,s){super(s!==void 0?`This ${t} holds a ${s} that @graview ${En} does not know: upgrade the framework to read it.`:`This ${t} is in a newer format (${r}${i?`, written by @graview ${i}`:""}) than @graview ${En} reads (${o}). `+(t==="snapshot"?"Refold it from the log, or upgrade the framework.":"Upgrade the framework to read it."));this.what=t;this.found=r;this.supported=o;this.writtenBy=i;this.unknown=s;this.name="NewerFormatError"}},Oo=["add-node","remove-node","patch-node","add-edge","remove-edge","splice-text"],Yu=new Set(Oo);function _o(n){throw new on("op",fe.op+1,fe.op,void 0,`primitive "${n?.op}"`)}var Po=new Set;function Eo(n){for(let e in n){let t=n[e]?.$type;if(t!==void 0&&!Po.has(t))throw new on("op",fe.op+1,fe.op,void 0,`value type "${t}" in "${e}"`)}}function Mo(n){for(let e of n.primitives)Yu.has(e?.op)||_o(e)}function I(n){return`${n.kind}\0${n.from}\0${n.to}`}var lt={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function nd(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function Xu(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function Fe(n,e){let t=new Map(n.nodes.map(c=>[c.id,c])),r=new Map(e.nodes.map(c=>[c.id,c])),o=e.nodes.filter(c=>!t.has(c.id)),i=n.nodes.filter(c=>!r.has(c.id)),s=[];for(let c of n.nodes){let p=r.get(c.id);if(!p||p===c)continue;let g=Xu(c,p);g.length>0&&s.push({before:c,after:p,fields:g})}let a=new Map(n.edges.map(c=>[I(c),c])),d=new Map(e.edges.map(c=>[I(c),c])),u=e.edges.filter(c=>!a.has(I(c))),l=n.edges.filter(c=>!d.has(I(c))),f=new Set;for(let c of o)f.add(c.id);for(let c of i)f.add(c.id);for(let c of s)f.add(c.after.id);for(let c of[...u,...l])f.add(c.from),f.add(c.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:u,removedEdges:l,touched:[...f].sort()}}function Le(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"||i.op==="splice-text"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return lt;let o=i=>({nodes:i.nodes.filter(s=>r.has(s.id)),edges:i.edges.filter(s=>r.has(s.from)||r.has(s.to))});return Fe(o(n),o(e))}var Qt={idLength:200,dataLength:4096,sameKindPerPair:1};function td({id:n,data:e}){if(n!==void 0&&!(typeof n=="string"&&n.length<=Qt.idLength&&/^[^\s\p{Cc}]+$/u.test(n)))return`A link's id is 1\u2013${Qt.idLength} characters with no space`;if(e!==void 0&&!(e&&typeof e=="object"&&!Array.isArray(e)&&JSON.stringify(e).length<=Qt.dataLength))return`A link's data is a JSON object of at most ${Qt.dataLength} characters`}function Qu(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?B(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var N=class extends Error{constructor(t,r){super(r?`${t}
3
3
  ${r}`:t);this.hint=r;this.name="GraphError"}},q=class extends N{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function er(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof pe)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}var No="n\0",zo="e\0",H=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;linkIds=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;counts=new Map;archived=new Set;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.restore(e);let r=Fe(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(e){return this.reach([...this.nodes.values()],e,this.held)}count(e,t){return t||this.archived.size?this.nodesOfKind(e,t).length:this.counts.get(e)??0}allEdges(e){return this.reach([...this.edges.values()],e,t=>this.archived.has(t.from)||this.archived.has(t.to))}nodesOfKind(e,t){return this.allNodes(t).filter(r=>r.kind===e)}edgesOfKind(e,t){return this.allEdges(t).filter(r=>r.kind===e)}out(e,t,r){return this.reach(this.resolve(this.outIndex.get(e),t,"to"),r,this.held)}in(e,t,r){return this.reach(this.resolve(this.inIndex.get(e),t,"from"),r,this.held)}neighbors(e,t){let r=new Map;for(let o of[...this.out(e,void 0,t),...this.in(e,void 0,t)])r.set(o.id,o);return[...r.values()]}isArchived(e){return this.archived.has(e)}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}linkById(e){return this.edges.get(this.linkIds.get(e))}snapshot(){return{nodes:[...this.nodes.values()],edges:[...this.edges.values()]}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=Le(r,this.snapshot(),e);return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){let t=new Map([...this.lapsed,...this.ranks]);for(let o of[this.nodes,this.edges,this.linkIds,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])o.clear();this.reordered=!1;for(let o of e.nodes)this.insertNode(o,!0);for(let o of e.edges)this.insertEdge(o,!0);let r=[...this.ranks.keys()];if(r.every((o,i)=>t.get(o)>(o[0]===r[i-1]?.[0]?t.get(r[i-1]):0))){for(let[o,i]of t)(this.ranks.has(o)?this.ranks:this.lapsed).set(o,i);for(;this.lapsed.size>4096;)this.lapsed.delete(this.lapsed.keys().next().value)}}tally(e,t){this.counts.set(e,(this.counts.get(e)??0)+t)}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(No));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(zo));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":Eo(e.node),this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new q(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.archived.delete(o),this.nodes.delete(o),this.lapse(No+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new q(e.id,`Cannot patch missing node "${e.id}"`);Eo(e.after);let i={...o};for(let[a,d]of Object.entries(e.after))He(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),this.archived[ye(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"splice-text":{let o=this.nodes.get(e.id);if(!o)throw new q(e.id,`Cannot splice the text of missing node "${e.id}"`);let i=o[e.field],s;try{typeof i=="string"&&e.field!=="id"&&e.field!=="kind"&&(s=Tr(i,e))}catch{}if(s===void 0)throw new N(`Cannot splice ${e.id}.${e.field}: it does not hold ${JSON.stringify(e.removed)} at ${e.at}`,"A corrupt op: the text it was made against is not the text the log folds to.");let a={...o,[e.field]:s};this.nodes.set(e.id,t?a:this.checkPatch(o,a,[e.field]));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{let o=e.edge.id===void 0?e.edge:this.linkById(e.edge.id);if(!o||!this.edges.has(I(o)))throw new q(e.edge.id??I(e.edge),`Cannot remove missing edge ${e.edge.id??I(e.edge)}`);this.deleteEdge(o);return}default:_o(e)}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind"||Xt.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let u=d.safeParse(t[a]);u.success&&(u.data===void 0?delete t[a]:t[a]=u.data)}let i=er(this.schema,t);if(i===void 0)return t;let s=er(this.schema,e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}refusal(e,t){if(t instanceof pe)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?K(i,e):r;return new N(`${s} does not match what ${o} declares`,Qu(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new N(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),ye(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(No+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new q(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind),d=a?[o.kind,...a.from].filter((u,l,f)=>a.from.includes(u)&&f.indexOf(u)===l):[];throw new N(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${d.map(u=>`${u} -> ${[this.schema.tryDefinition(u).edges[e.kind].to].flat().join("|")}`).join("; ")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=I(e);if(!t&&(e.id!==void 0||e.data!==void 0)){let a=this.edges.get(s),d=td(e)??(a&&e.id!==void 0&&a.id!==e.id?`A second "${e.kind}" link between two records is not allowed yet`:(this.linkIds.get(e.id)??s)!==s?`Link id "${e.id}" is already taken`:void 0);if(d)throw new N(d)}this.edges.has(s)||(this.edges.set(s,e),e.id!==void 0&&this.linkIds.set(e.id,s),this.place(zo+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=I(e),r=this.edges.get(t)?.id;r!==void 0&&this.linkIds.delete(r),this.edges.delete(t),this.lapse(zo+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(r)}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}held=e=>this.archived.has(e.id);reach(e,t,r){let o=t?.archived??!1;return o==="all"||!o&&!this.archived.size?e:e.filter(i=>r(i)===o)}};var nr=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function ef(n,e){return{...e,name:n}}var tr=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function rd(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof tr,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function Mn(n,e,t={}){let r=t.context??{},o=t.today===void 0?{}:{today:t.today},i=t.onUnregistered??"skip",s=new Set(e.map(c=>c.name)),a=[];for(let c of e)c.scope==="graph"&&a.push(...rd(c,()=>c.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(c=>c.scope!=="graph"),u=new Map;for(let c of d){let p=c.scope.kind,g=u.get(p);g?g.push(c):u.set(p,[c])}for(let c of n.allNodes()){let p=n.schema.tryDefinition(c.kind),g=p?.requiresInvariant?.(c)??null;if(t.subjectFilter&&!t.subjectFilter(c,r))continue;if(g!==null&&!s.has(g)){if(i==="throw")throw new nr(g,c.id);continue}let h=!Kr(p,c,t.today);for(let b of u.get(c.kind)??[]){if(h&&b.judgesPast!==!0)continue;let m=b.scope.match;m&&!m(c)||a.push(...rd(b,()=>b.evaluate({graph:n,subject:c,context:r,...o}),c.id))}}let l=new Set,f=a.filter(c=>{let p=`${c.message}|${[...c.nodeIds].sort().join(",")}`;return l.has(p)?!1:(l.add(p),!0)}).map(c=>{let p=Gr(c.message);return p===c.message?c:{...c,message:p}});return Io?Io(n,e,f,t.today):f}var Io;function gw(n){Io=n}function nf(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function tf(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var ut=(n,e)=>n==="*"||n.includes(e);function z(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var Z=n=>n.kind==="system"&&n.onBehalfOf===void 0,be=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function od(n){return Xi(n.map(e=>xn(B(e).toLowerCase())),"or")}function ve(n,e,t,r,o,i,s={},a,d,u){if(!n)return{ok:!0};if(Z(e))return{ok:!0};if(e=z(e),o!==void 0){if(ve(n,e,t,r,void 0,i).ok)return{ok:!0};let p=!1;if(o.some(m=>ve(n,e,m,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!u&&n.grants.some(m=>m.roles!=="*"&&be(m,e)&&o.some(w=>ut(m.mutations,w))))return{ok:!0};p=!0}let g=p?[t]:[t,...o],h=[...new Set(g.flatMap(m=>To(n,m,r)))].sort(),b=(p?"only on what you made; ":"")+(h.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${od(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:id(n,g,r,b,s)}}}let l=!1;for(let p of n.grants){if(!be(p,e)||!ut(p.mutations,t)||p.kinds!==void 0&&p.kinds!=="*"&&(r===void 0||!p.kinds.includes(r))||p.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let g=p.ownEnd?a?.()??[]:[e.id];if(!g.length||g.some(h=>h!==e.id)){l=!0;continue}return{ok:!0}}let f=To(n,t,r),c=l?"only on your own end of the link":f.length===0?"no role can":`${od(f)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:f,message:id(n,[t],r,c,s)}}}function id(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>sd(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${xn(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function sd(n,e,t){return[...new Set(ad(n,e,t).flatMap(r=>r.describe||[]))]}var ad=(n,e,t)=>n.grants.filter(r=>ut(r.mutations,e)&&(t===void 0||ut(r.kinds??"*",t)));function To(n,e,t){let r=ad(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function jo(n,e,t){return n?t.filter(r=>{let o=z(e).id;return Do(r).some(i=>ve(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var Do=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];function Fo(n,e,t,r){if(!n||Z(e))return!1;let o=z(e);return n.grants.some(i=>i.propose!==void 0&&be(i,o)&&ut(i.propose,t)&&(i.kinds===void 0||i.kinds==="*"||r!==void 0&&i.kinds.includes(r)))}var rr="type-text",ae={};var de=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var or="publish",Lo=n=>n?.mode==="on-publish",Co=(n,e,t)=>Lo(n)&&!Z(e)&&(t==="published"||!(z(e).roles??[]).some(r=>n.working.includes(r))),Y=globalThis[Symbol.for("@graview/core:publishing")]??={};Y.input=()=>se({through:W(rn())});var ft=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"||e.op==="splice-text"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):e.op==="splice-text"?[e.field]:Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=I(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=I(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,dd(t,e.before));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,jr(t,e,!0));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,dd(t,e.after));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,jr(t,e));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function dd(n,e){let t={...n};for(let[r,o]of Object.entries(e))He(o)?delete t[r]:t[r]=o;return t}var rf=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"||n.op==="splice-text"?n.id:void 0;function Zo(n,e,t,r){let o=l=>{let f=e.node(l);return f?t.served(f,e.writerOf(l))!==void 0:t.sees?.(l)??!1},i=rf(n);if(i===void 0){let l=n.edge,f=t.edgeClean(l)&&o(l.from)&&o(l.to);return e.apply(n),{primitives:f?[n]:[],faithful:!0}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),u=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!u)return{primitives:[],faithful:!1};if(!a&&u){let l=e.incident(i).filter(c=>t.edgeClean(c)&&o(c.from===i?c.to:c.from)).map(c=>({op:"add-edge",edge:c})),f=n.op==="add-node"&&u===n.node&&l.length===0;return{primitives:f?[n]:[{op:"add-node",node:u},...l],faithful:f}}if(a&&!u){let l=n.op==="remove-node"&&a===s;return{primitives:l?[n]:[{op:"remove-node",node:a}],faithful:l}}if(n.op==="patch-node"){let l=(c,p)=>g=>g in c==(p!==void 0&&g in p);if(Object.keys(n.after).every(c=>l(a,s)(c)&&l(u,d)(c)))return{primitives:[n],faithful:!0};let f=c=>Object.fromEntries(Object.keys(n.after).map(p=>[p,p in c?c[p]:ce]));return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}if(n.op==="splice-text"){let l=n.field;if(a[l]===s[l]&&u[l]===d[l])return{primitives:[n],faithful:!0};let f=c=>({[l]:l in c?c[l]:ce});return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:u}],faithful:!1}}function cd(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(c=>r[c.seq-o]?.id===c.id),s=new ft(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(c=>{let p=z(c.author).id,g=c.primitives.map(h=>Zo(h,s,t,()=>p));return{op:c,primitives:g.flatMap(h=>h.primitives),faithful:g.every(h=>h.faithful)}});let a=new Set(n.map(c=>c.seq)),d=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let c of a)c<d&&(d=c),c>u&&(u=c);d-=o,u-=o;let l=of(r,d,e.present,t),f=l?new ft(e.present,e,l.unversioned):s;for(let c=r.length-1;c>=d;c--){let p=r[c].primitives;for(let g=p.length-1;g>=0;g--)f.undo(p[g])}return sf(n,r,d,u,a,f,l?.judge??t,e)}function of(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,u=(f,c)=>{s.has(f)||a.has(f)||(o(f)?i(c)?(a.add(f),d.delete(f)):d.add(f):(s.add(f),d.delete(f)))};for(let f=e;f<n.length;f++)for(let c of n[f].primitives)c.op==="add-node"||c.op==="remove-node"?u(c.node.id,c.node):c.op==="patch-node"?(u(c.id,c.before),u(c.id,c.after)):c.op==="splice-text"&&(u(c.id,{}),s.has(c.id)||(a.add(c.id),d.delete(c.id)));for(let f of d){let c=t.getNode(f);c&&i(c)&&(d.delete(f),a.add(f))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(f,c)=>d.has(f.id)?f:s.has(f.id)?void 0:r.served(f,c)}}}function sf(n,e,t,r,o,i,s,a){let d=new Map;for(let u=t;u<=r;u++){let l=e[u];if(i.begin(l.seq),!o.has(l.seq)){for(let p of l.primitives)i.apply(p);continue}let f=(p,g)=>a.writers?.writerAt(p,g,l.seq+1),c=l.primitives.map(p=>Zo(p,i,s,f));d.set(l.seq,{op:l,primitives:c.flatMap(p=>p.primitives),faithful:c.every(p=>p.faithful)})}return n.map(u=>d.get(u.seq))}function _w(n,e,t,r){let o=new ft(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>Zo(i,o,t,()=>r).primitives)}var ud="A change you cannot see",fd={kind:"system",id:"withheld",name:"Someone"};function Nn(n){return n.withheld===!0}var pt=Re,pd=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&C(r,e));function hd(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!pd(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function C(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(C(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||C(n[t],e)))return!0;return!1}function gd(n,e){let t=r=>!e(r);return n.primitives.some(r=>pt(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&C(n.mutation.args,e)}function af(n,e){if(pt(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return pd(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!C(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!C(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=ce;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!C(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return C(n.edge,e.sees)?void 0:n;case"splice-text":return C(n.removed,e.sees)||C(n.inserted,e.sees)?void 0:n}}function Go(n,e,t){let r=hd(e),o=i=>r.shows(i)&&md(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:fd,intent:ud,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=af(i,r);return s?[s]:[]}),reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function zn(n,e){let t=hd(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.redact)return r.redact(n);if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!C(i,r.sees),sees:r.sees,names:i=>C(i,r.sees)};return cd(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?ld(i,r,s):void 0)??Go(i,r,s))}return n.map(o=>(!o.withheld&&!gd(o,r.shows)?ld(o,r):void 0)??Go(o,r))}function ld(n,e,t){let r=n.inverse??n.primitives;if(t&&t.length<n.primitives.length){if(!t.length)return;r=r.filter(h=>pt(h).every(e.shows));let{inverse:p,...g}=n;n={...g,primitives:t}}let o=p=>e.sees(p)&&md(e,p),i=n.reads.filter(o),s=new Set(n.primitives.flatMap(pt)),a=n.writes.filter(p=>o(p)||e.sees(p)&&s.has(p)),d=i.length===n.reads.length&&a.length===n.writes.length?n:{...n,reads:i,writes:a},u=e.actor!==void 0&&z(n.author).id===e.actor;if(!u&&n.described?.some(p=>!e.sees(p)))return;if(!C(n,e.sees))return d;let l=new Set,f=p=>{if(typeof p=="string")l.add(p);else if(Array.isArray(p))for(let g of p)f(g);else if(p!==null&&typeof p=="object")for(let[g,h]of Object.entries(p))l.add(g),f(h)};t&&f(t);let c=p=>e.sees(p)||l.has(p);if(!C(r,c))return u&&n.mutation&&f(n.mutation.args),C({...d,primitives:[],inverse:[]},u?c:e.sees)?void 0:d}function md(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var sn=class extends N{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function ht(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(h=>t.has(h.batch)&&!r.has(h.id)),i=[...n.epochs()].reverse().find(h=>h.horizon);if(i){let h=new Set(n.all().map(m=>m.batch)),b=e.filter(m=>!h.has(m));if(b.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${b.map(m=>`batch ${m}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(Nn))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Nn)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(h=>h.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};if(o.some(h=>h.sentOut!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:o.every(h=>h.sentOut===void 0||h.sentOut.refused)?"Nothing to take back: nothing went out.":"Nothing to take back: an invitation already went out. Change the guests here, and the next pass sends that."};let s=i&&o.some(h=>h.publishedThrough!==void 0)?Y.undo?.(n,o,i):void 0;if(s)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:s};let a=new Set;for(let h of o)for(let b of h.writes)a.add(b);let d=Math.min(...o.map(h=>h.seq)),u=n.epochs().find(h=>h.change!==void 0&&h.seq>d);if(u){let h=o.find(b=>b.seq<u.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${h.intent}": ${h.intent===u.change?"it changed the declaration":`it was done before the declaration changed (${u.change})`}, and undo does not reach back across that change.`}}let l=new Map(n.all().map(h=>[h.id,h.seq])),f=o.flatMap(h=>h.primitives),c=[];for(let h of n.all()){if(h.seq<=d||t.has(h.batch)||r.has(h.id)||h.undoes!==void 0&&(l.get(h.undoes)??-1)>d)continue;let b=ae.aside?.(f,h);if(b===!0)continue;let m=[...new Set([...h.reads.filter(w=>a.has(w)),...b??[]])];m.length>0&&c.push({op:h,overlap:m})}if(c.length===0)return{ok:!0,ops:o};let p=c.filter(h=>!Nn(h.op)).map(h=>`"${h.op.intent}" (op ${h.op.id}, read ${h.overlap.join(", ")})`).join("; ");if(c.some(h=>Nn(h.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${p?`a later operation depends on it: ${p}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let g=[...new Set(c.map(h=>h.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:g,message:`Cannot undo on its own \u2014 a later operation depends on it: ${p}. Include ${g.map(h=>`batch ${h}`).join(", ")} to undo them together.`}}function yd(n,e){return e?Vo(e,n).flatMap(t=>[...t.primitives]):[...n].sort((t,r)=>r.seq-t.seq).flatMap(t=>Ye(t))}function Vo(n,e){return ae.undone?ae.undone(n,e):[...e].sort((t,r)=>r.seq-t.seq).map(t=>({op:t,primitives:Ye(t)}))}var an=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function df(n){let e=n instanceof Error?n.message:String(n);if(n instanceof an){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof q?{reason:"missing",sentence:e}:n instanceof de?{reason:n.reason,sentence:n.sentence}:n instanceof sn?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var we=class extends N{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};var cf=["edit","remove","archive","unarchive","merge","leave-alone","allow-tidying"];var qw=n=>cf.map(e=>`${e}-${n}`);function Hw(n){let e=/^(edit|remove|archive|unarchive|merge|leave-alone|allow-tidying|skip|detach|split)-(.+)$/.exec(n);return e?{act:e[1],kind:e[2]}:void 0}var Ko=["connect","disconnect"],vd=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),Bo=(n,e,t)=>`${n}-${e}-${vd(t)}`;function Jw(n,e){let t=/^(connect|disconnect)-(.+)$/.exec(n);if(t){for(let[r,o]of e)if(t[2].startsWith(`${r}-`)){for(let i of o)if(t[2]===`${r}-${vd(i)}`)return{act:t[1],kind:r,relation:i}}}}var Yw=n=>[...n].flatMap(([e,t])=>[...t].flatMap(r=>Ko.map(o=>Bo(o,e,r)))),bd=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function wd(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${bd(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${bd(e.from)}${t}`}}function kd(n,e,t,r){if(t.cardinality!=="one"||t.to==="*"||t.to.length!==1||t.to[0]!==n)return;let o=t.description?.trim().replace(/\.$/,"");return o&&/^the\s+\S/i.test(o)&&!/[.;:!?,()]/.test(o)&&o.split(/\s+/).length<=8?{to:o.replace(/^the\s+/i,"")}:{also:r(e)}}var gt="vote-suggestion",xd="Sign in to vote on this suggestion.";function mt(n){return n?n.shared===!0||n.kind==="visitor"?!0:mt(n.onBehalfOf):!1}function ir(n){if(!n)return;if(n.shared!==!0&&n.kind!=="visitor")return ir(n.onBehalfOf);let e=n.visitorKey??(n.shared===!0?void 0:n.id);return e||void 0}function Sd(){return{name:gt,title:"Vote on a suggestion",input:se({suggestion:F(),vote:ja([rt("for"),rt("against"),za()])}),apply(){}}}var sr=globalThis[Symbol.for("@graview/core:voting")]??={};function ar(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var $d=n=>n?.[ct]===!0,lf=(n,e)=>$d(("graph"in n?n.graph:n).getNode(e));function Rd(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var dr=globalThis[Symbol.for("@graview/core:declines")]??={};function Ad(n,e,t,r,o={}){let i=o.declaration!==!1,s=(a,d)=>`${r} may not ${a}: ${d}.`;for(let a of t){let d="edge"in a?a.edge:void 0,u=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(l=>e.getNode(l)??("node"in a?a.node:void 0));for(let l of u){if(!l)continue;if($d(l))return s(`change \u201C${K(n.tryDefinition(l.kind),l)}\u201D`,"a person said to leave it alone");if(!i)continue;let f=Rd(n,l.kind);if(f==="never")return s(`change ${le(n,l.kind)} on its own`,"the app says they are never tidied");if(d&&f==="no-links")return s(`link or unlink ${le(n,l.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&u[0]&&Rd(n,u[0].kind,d.kind)==="never")return s(`${a.op==="add-edge"?"make":"break"} a \u201C${d.kind}\u201D link on its own`,"the app says that relation is never tidied")}}function uf(n,e){if(!e||n.length===0)return null;let t=e.roles,r=o=>t?o.wouldNeed.some(i=>t.includes(i)):o.wouldNeed.length>0;return n.every(({refusal:o})=>r(o))?e:null}function ff(n,e){let t=o=>o?._zod?.def,r={};for(let o of new Set(e)){let i=n.tryDefinition(o),s=i?.fields?.shape??{};for(let[a,d]of Object.entries(s)){let u=t(d);for(let f=0;f<6&&u?.innerType!==void 0&&u.type!=="enum";f++)u=t(u.innerType);if(u?.type==="array"&&(u=t(u.element)),u?.type!=="enum"||!u.entries)continue;let l=i?.display?.format?.[a];(r[o]??={})[a]=Object.fromEntries(Object.values(u.entries).map(f=>[String(f),l?l(f):nn(String(f))]))}}return r}var cr={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},pf={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},hf={under:0,raised:1,over:2},Uo=n=>`--graview-layer-${n}`,gf=n=>`var(${Uo(n)}, ${cr[n]})`;function mf(){return Object.keys(cr).map(n=>` ${Uo(n)}: ${cr[n]};`).join(`
4
4
  `)}function yf(n){let e=n.onBehalfOf??n;return{kind:e.kind,...e.id!==void 0?{id:e.id}:{},...e.name!==void 0?{name:e.name}:{},...e.roles!==void 0?{roles:e.roles}:{}}}function Od(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function _d(n){return{...n,id:n.id??Od(),at:n.at??new Date().toISOString()}}function bf(n=[]){let e=[...n],t=new Set,r=()=>{for(let o of t)o()};return{list:o=>o===void 0?e:e.filter(i=>i.who.id===o),add(o){let i=_d(o);return e=[...e.filter(s=>s.id!==i.id),i],r(),i},remove(o){let i=e.length;e=e.filter(a=>a.id!==o);let s=e.length<i;return s&&r(),s},onChange(o){return t.add(o),()=>t.delete(o)}}}var vf=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,In=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?vf(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);Mo(e),this.ops.push(Un(e))}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}horizonEpoch(){for(let e=this.marks.length-1;e>=0;e--)if(this.marks[e].horizon)return this.marks[e]}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return yt(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return Wo(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=H.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start)))wf(i,a);return i}toJSON(){return[...this.ops]}};function wf(n,e){if(e.undoes!==void 0){n.applyPrimitives(e.primitives,{restoring:!0});return}try{n.applyPrimitives(e.primitives)}catch{n.applyPrimitives(e.primitives,{restoring:!0})}}function yt(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function kf(n){let e=[...new Set(n.map(t=>t.intent))];return e.length<=3?e.join("; "):`${e.slice(0,2).join("; ")}; and ${e.length-2} more`}function Wo(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??kf(i),at:s.at,...s.lineage?{lineage:s.lineage}:{},ops:i,undone:i.every(a=>e.has(a.id))}})}var qo=(n,e)=>`${n}\0${e}`,Pd=new WeakMap;function xf(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(qo(o,s),[{seq:n-1,by:a}]);return{base:n,end:n,read:[],fields:t,written:[],seqOf:new Map,writers:{writerAt:(o,i,s)=>{let a=t.get(qo(o,i));if(!a)return;let d=0,u=a.length;for(;d<u;){let l=d+u>>1;a[l].seq<s?d=l+1:u=l}return d===0?void 0:a[d-1].by}}}}function Sf(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!He(n.after[e]))];if(n.op==="splice-text")return[n.id,[n.field]]}function Rf(n,e){let t=n.end,r=z(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=Sf(s);if(!a)continue;let[d,u]=a;for(let l of u){let f=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,l,o):void 0,c=qo(d,l),p=n.fields.get(c);p||n.fields.set(c,p=[]),p.push({seq:t,by:f}),i.push(c)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function $f(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function bt(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Pd.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&$f(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Pd.set(n,o=xf(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)Rf(o,e[i-r]);return o.writers}function Ed(n,e,t,r){let o=bt(n),i={};for(let s of t)for(let a in s){if(!Object.hasOwn(s,a)||a==="id"||a==="kind"||!r(s[a]))continue;let d=o.writerAt(s.id,a,e);d!==void 0&&((i[s.id]??={})[a]=d)}return i}var dn={served:new WeakSet},vt=n=>n.fields!==void 0||(n.hide?.length??0)>0,Md=(n,e,t)=>(n??[]).some(r=>r.kinds.includes(e)&&(r.hide?.includes(t)===!0||r.fields!==void 0&&!r.fields.includes(t))),Nd=(n,e,t,r)=>Object.entries(t).some(([o,i])=>typeof i=="string"&&i.trim()!==""&&n.includes(i.trim())&&r(e,o)),Ce=n=>dn.on===!0||dn.served.has(n);var Ho=new WeakMap;function Af(n,e){let t=new Map(Object.entries(e?.removed??{})),r=new Map(Object.entries(e?.creators??{})),o=n===0||e?.removed!==void 0;return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:i=>t.get(i),creatorOf:i=>r.get(i),knowsAll:o}}}function Of(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=z(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function _f(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function he(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Ho.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&_f(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Ho.set(n,o=Af(r,r>0?Pf(n,r):void 0));for(let i=o.end;i<t;i++)Of(o,e[i-r]);return o.records}function Pf(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function zd(n,e,t){he(n);let r=Ho.get(n),o=[new Set,new Set];for(let a=r.entries.length-1;a>=0&&r.entries[a].seq>=e;a--)o[+r.entries[a].creator].add(r.entries[a].id);let i={},s={};for(let[a,d]of r.creators)o[1].has(a)||(i[a]=d);for(let[a,d]of r.kinds)!o[0].has(a)&&!t(a)&&(s[a]=d);return r.records.knowsAll?{creators:i,removed:s}:{creators:i}}function Tn(n,e,t,r,o,i=dn.on===!0){if(!n?.sees?.length||Z(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!vt(a)));return s.length===0?!1:(e=z(e),s.some(a=>{if(!be(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let u=l=>l.id===d;return a.via?r.out(t.id,a.via).some(u)||r.in(t.id,a.via).some(u):t.id===d||r.out(t.id).some(u)||r.in(t.id).some(u)||o?.creatorOf(t.id)===d}))}var Td=Symbol.for("@graview/core:node-ref"),Id=n=>typeof n=="object"&&n!==null?n[Td]:void 0;function Ze(n="*"){return Ef(F().check(et(1)),n)}function Ef(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,Td,{value:t,enumerable:!0,configurable:!0})};return r(n),r(L(n)),n}function wt(n){if(typeof n!="object"||n===null)return;let e=Id(n);if(e)return e;let t=L(n),r=Id(t);if(r)return r;let o=t?.innerType;return o?wt(o):void 0}function kt(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=wt(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}var Yo=new Set;function lr(n,e){return Z(e)?Yo:n.modules?.disabledKinds??Yo}function cn(n,e){return Z(e)?!1:(n.policy?.sees?.length??0)>0||lr(n,e).size>0}function Ld(n,e){if(!cn(n,e))return()=>!0;let t=n.modules?.disabledKinds??Yo,r=n.policy?.sees??[],o=z(e),i=Ce(n),s=l=>!t.has(l)&&(r.length===0||r.some(f=>f.kinds.includes(l)&&be(f,o)&&!f.own&&!f.via&&(i||!vt(f)))),a=n.schema.kinds.every(s),d=l=>s(l)&&Mf(n.schema,l).every(f=>f.every(c=>c==="*"?a:s(c))),u=a&&n.schema.kinds.every(d);return l=>u||l!==void 0&&d(l)}function xt(n,e){return t=>{let r=lr(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=he(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&Tn(n.policy,e,i,n.graph,o,Ce(n));let s=o.kindOf(t)??Cd(n,o,t);return s===void 0?!0:!r.has(s)&&Tn(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,Ce(n))}}function Mf(n,e){let t=n?.tryDefinition?.(e)?.fields?.shape??{};return Object.values(t).flatMap(r=>{let o=wt(r);return o&&r.safeParse?.(void 0).success===!1?[o]:[]})}var Nf={out:()=>[],in:()=>[]};function Cd(n,e,t){if(e.knowsAll||dn.served.has(n))return;let r=t.indexOf(":");if(r<=0)return;let o=t.slice(0,r);return n.schema?.tryDefinition(o)?o:void 0}function zf(n,e,t=new Map,r){let o=lr(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=he(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,u=n.graph.getNode(s);if(u)d=!o.has(u.kind)&&Tn(n.policy,e,u,n.graph,i,Ce(n));else{let l=i.kindOf(s)??Cd(n,i,s);if(l===void 0)return r?.add(s),!0;d=!o.has(l)&&Tn(n.policy,e,{id:s,kind:l},Nf,i,Ce(n))}return t.set(s,d),d}}function If(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function ur(n,e){return Zd(n,e).lens}var Xo=()=>({judged:new Map,shown:new Map});function Zd(n,e){let t=If(n.schema),r=Z(e)?void 0:z(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(l,f,c,p,g)=>{let h=(v,R)=>{if(!l(v.id))return;let S;for(let M in v)if(!(!Object.hasOwn(v,M)||M==="id"||M==="kind"||!C(v[M],l))&&!(r!==void 0&&R(M)===r)){if(!t(v.kind,M))return;(S??=[]).push(M)}if(!S)return v;let x=S.join("\0"),_=i.get(v);if(_?.without===x)return _.node;let P=Object.fromEntries(Object.entries(v).filter(([M])=>!S.includes(M)));return i.set(v,{without:x,node:P}),P},b=v=>{let R=c();return h(v,S=>f().writerAt(v.id,S,R))},m=new WeakMap,w=g?v=>{let R=m.get(v);return R||m.set(v,R={node:b(v)}),R.node}:b,$=v=>{if(!l(v))return!1;let R=s.getNode(v);return R===void 0||w(R)!==void 0},k=g?.shown??new Map,O=g?v=>{let R=k.get(v);return R===void 0&&k.set(v,R=$(v)),R}:$,A=s.outEdges&&s.inEdges?{present:{getNode:v=>s.getNode(v),outEdges:v=>s.outEdges(v),inEdges:v=>s.inEdges(v)},log:n.log,get writers(){return f()}}:void 0,y={sees:l,shows:O,served:w,servedWith:h,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...A?{timeline:A}:{},hides:()=>cn(n,e),pin:g?()=>y:()=>d(Xo())};return dn.lens?.(y,n,e)??y};function d(l){let f,c=o(),p=he(n.log);return a(zf(n,e,l.judged,l.unnamed),()=>f??=bt(n.log),()=>c,g=>s.getNode(g)?.kind??p.kindOf(g),l)}return{lens:a(xt(n,e),()=>bt(n.log),o,l=>s.getNode(l)?.kind??he(n.log).kindOf(l)),pinWith:d}}var jd=new WeakMap,Dd=new WeakMap,Tf=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"||r.op==="splice-text"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function Gd(n,e){if(!cn(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...lr(n,e)].sort().join("\0"),s=Vd(e),a=jd.get(n.log);a||jd.set(n.log,a=new Map);let d=a.get(s),{pinWith:u}=Zd(n,e),l=Dd.get(n.log);l||Dd.set(n.log,l=new Set);let f=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&f){if(d.length===r)return d.ops;let g=t.slice(d.length-o),h=u(Xo()),b=!0,m=Tf(g);for(let w of m){let $=d.judgments.judged.get(w),k=d.judgments.shown.get(w);if($!==void 0&&h.sees(w)!==$||k!==void 0&&h.shows(w)!==k){b=!1;break}}if(b){for(let w of m)if(l.has(w)){b=!1;break}}if(b){let w=[...d.ops,...zn(g,u(d.judgments))],$={horizon:o,off:i,length:r,last:t.at(-1),ops:w,judgments:d.judgments};return a.set(s,$),w}}let c={...Xo(),unnamed:l},p=zn(t,u(c));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:p,judgments:c}),p}function jf(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!C(t,n.sees)}function Qo(n,e){return{all:()=>n,undoneIds:()=>yt(n),epochs:e}}var Fd=new WeakMap;function Vd(n){let e=Z(n)?n:z(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?`for:${n.id??""}`:""}`}var Kd=(n,e)=>`${Vd(n)}@${e}`,Jo=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},Df=Symbol.for("@graview/core:seat");function ke(n,e,t={}){if(Co(n.publishing,e,t.as)){if(Y.served)return Y.served(n,e);throw new Error("Load @graview/core/publishing to serve a reader of an app that publishes.")}return Ud(n,e)}var Ff=()=>Y.served!==void 0;function Bd(n){let e=Fd.get(n);return e||Fd.set(n,e=new Map),e}function Ud(n,e){if(!cn(n,e))return n;let t=Kd(e,"head"),r=Bd(n),o=r.get(t);if(o)return o;let i=n.graph,s=ur(n,e),a=k=>{let O=S=>S===void 0?void 0:k.served(S),A=S=>O(S)!==void 0,y=S=>A(i.getNode(S));return{served:O,seenNode:A,seenId:y,seenEdge:S=>y(S.from)&&y(S.to)&&!C(S,k.sees),servedAll:S=>S.flatMap(x=>O(x)??[])}},{served:d,seenId:u}=a(s),l=()=>a(s.pin?.()??s),f=(k,O)=>{let A=bt(n.log),y=s.pin?.()??s,v=k.nodes.flatMap(S=>y.servedWith(S,x=>A.writerAt(S.id,x,O))??[]),R=new Set(v.map(S=>S.id));return{nodes:v,edges:k.edges.filter(S=>R.has(S.from)&&R.has(S.to)&&!C(S,y.sees))}},c=k=>{let{removed:O,writers:A,published:y,declines:v,...R}=k,S=f(k.base,k.seq);if(!k.creators)return{...R,base:S};let x=new Set(S.nodes.map(P=>P.id)),_=Object.fromEntries(Object.entries(k.creators).filter(([P,M])=>x.has(P)&&!C(M,s.sees)));return{...R,base:S,creators:_}},p=k=>k&&c(k),g=()=>Gd(n,e),h=()=>Qo(g(),()=>n.log.epochs()),b=new Proxy(i,{get(k,O){switch(O){case"getNode":return A=>d(k.getNode(A));case"has":return u;case"allNodes":case"nodesOfKind":return(...A)=>l().servedAll(k[O](...A));case"count":return(...A)=>l().servedAll(k.nodesOfKind(...A)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...A)=>k[O](...A).filter(l().seenEdge);case"out":case"in":case"neighbors":return(A,...y)=>{let v=l();return v.seenId(A)?v.servedAll(k[O](A,...y)):[]};case"snapshot":return()=>{let A=k.snapshot(),y=l();return{...A,nodes:y.servedAll(A.nodes),edges:A.edges.filter(y.seenEdge)}};case"size":{let A=l();return{nodes:A.servedAll(k.allNodes({archived:"all"})).length,edges:k.allEdges({archived:"all"}).filter(A.seenEdge).length}}default:return Jo(k,O)}}}),m=()=>{let k=g();return Wo(k,yt(k))},w=new Proxy(n.log,{get(k,O){switch(O){case"all":case"toJSON":return()=>[...g()];case"epochs":return()=>k.epochs().map(c);case"lastEpoch":return()=>p(k.lastEpoch());case"horizonEpoch":return()=>p(k.horizonEpoch());case"live":return()=>{let A=g(),y=yt(A);return A.filter(v=>!y.has(v.id))};case"get":return A=>g().find(y=>y.id===A);case"opsInBatch":return A=>g().filter(y=>y.batch===A);case"batches":return m;default:return Jo(k,O)}}}),$=new Proxy(n,{get(k,O){switch(O){case Df:return{store:k,principal:e};case"graph":return b;case"log":return w;case"snapshot":return b.snapshot;case"batches":return m;case"canUndo":return A=>ht(h(),typeof A=="string"?[A]:A);case"violations":return A=>k.violations(A,b).filter(y=>jf(s,v=>i.has(v),y));case"findings":return()=>k.findings().filter(A=>(A.id.includes("->")?A.id.split("->").map((v,R)=>R===0?v.slice(v.indexOf(":")+1):v):[A.id]).every(v=>!i.has(v)||u(v))&&!C(A,s.sees));case"wouldChange":return A=>k.wouldChange(A,e);case"preview":return(A,y,v)=>k.preview(A,y,{author:e,...v});case"seenBy":return(A,y)=>ke(k,A,y);case"seenFor":return e;case"servedSeq":return k.servedSeq;case"checkpoint":return A=>p(k.checkpoint(A));default:return Jo(k,O)}}});return r.set(t,$),$}Y.kit={seatView:Ud,viewsOf:Bd,viewKey:Kd,diff:Fe,reads:Co};var ei=new Set;function ni(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:ei,disabledMutations:ei,disabledInvariants:ei,administered:Wd(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let u of d.kinds??[])o.add(u);for(let u of d.mutations??[])i.add(u);for(let u of d.invariants??[])s.add(u)}for(let a of t){let d=n[a];for(let u of d?.kinds??[])o.delete(u);for(let u of d?.mutations??[])i.delete(u);for(let u of d?.invariants??[])s.delete(u)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:Wd(n,t)}}function Wd(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}var qd=new WeakMap;function ri(n){let e=qd.get(n);if(e)return e;let t=new Map,r=new Map;for(let o of n.definitions){let i=o.derives;i&&(r.set(o.kind,i),t.set(i.from,[...t.get(i.from)??[],[o.kind,i]]))}return qd.set(n,e={bySource:t,byKind:r}),e}var jn=n=>ri(n).byKind.size>0;function Hd(n,e,t){let r={archived:"all"};return(e.sourceEnd==="to"?n.out(t,e.via,r):n.in(t,e.via,r)).filter(o=>o.kind===e.from)}function Lf(n,e,t,r){let o={archived:"all"};return(t.sourceEnd==="to"?n.in(r,t.via,o):n.out(r,t.via,o)).filter(i=>i.kind===e)}var Jd=(n,e)=>JSON.stringify(n??null)===JSON.stringify(e??null);function ti(n,e){let t={},r={};for(let[o,i]of Object.entries(e)){let s=n[o];Jd(s,i)||(t[o]=s,r[o]=i)}return Object.keys(r).length>0?{op:"patch-node",id:n.id,before:t,after:r}:void 0}function fr(n,e,t,r={}){let{bySource:o,byKind:i}=ri(n);if(i.size===0)return[];let s=[],a=h=>{h&&(e.applyPrimitives([h]),s.push(h))},d=h=>e.getNode(h)?.kind,u=new Map,l=(h,b=!1)=>u.set(h,(u.get(h)??!1)||b),f=new Set(t.flatMap(h=>h.op==="remove-node"?[h.node.id]:[])),c=new Map,p=new Map;for(let h of t)if(h.op==="patch-node"&&i.has(d(h.id)??"")&&p.set(h.id,new Set([...p.get(h.id)??[],...Object.keys(h.after)])),h.op==="add-node"&&o.has(h.node.kind))l(h.node.id);else if(h.op==="patch-node"){let b=d(h.id);b&&o.has(b)&&(l(h.id,me in h.after),c.set(h.id,new Set([...c.get(h.id)??[],...Object.keys(h.after)])))}else if(h.op==="add-edge"){let b=e.getNode(h.edge.from),m=e.getNode(h.edge.to);for(let[w,$]of[[b,m],[m,b]]){let k=$?i.get($.kind):void 0;w&&k&&k.via===h.edge.kind&&k.from===w.kind&&l(w.id)}}else if(h.op==="remove-edge"&&(f.has(h.edge.from)||f.has(h.edge.to))){let b=f.has(h.edge.from)?h.edge.from:h.edge.to,m=e.getNode(b===h.edge.from?h.edge.to:h.edge.from),w=m?i.get(m.kind):void 0,$=t.find(k=>k.op==="remove-node"&&k.node.id===b)?.node.kind;m&&w&&w.via===h.edge.kind&&w.from===$&&!ye(m)&&a(ti(m,{[me]:!0}))}for(let h of t){if(h.op!=="patch-node")continue;let b=e.getNode(h.id),m=b?i.get(b.kind):void 0;if(!b||!m)continue;let w=Object.keys(h.after).filter(y=>Object.hasOwn(m.back,y));if(w.length===0)continue;let $=Hd(e,m,b.id);if($.length!==1)continue;let k=$[0],O={};for(let y of w){let v=m.back[y];if(c.get(k.id)?.has(v))continue;let R=b[y];n.tryDefinition(k.kind)?.fixed?.[v]===void 0&&(r.mayWriteBack&&!r.mayWriteBack(k,v,R)||(O[v]=R))}let A=ti(k,O);A&&(a(A),l(k.id))}let g=new Set;for(let[h,b]of u){if(g.has(h))continue;g.add(h);let m=e.getNode(h);if(m)for(let[w,$]of o.get(m.kind)??[])for(let k of Lf(e,w,$,m.id)){let O={...$.values(e,m,k)};if(!c.has(m.id))for(let y of p.get(k.id)??[])delete O[y];b&&(O[me]=ye(m)?!0:void 0);let A=ti(k,O);A&&(a(A),o.has(w)&&u.set(k.id,b))}}return s}function Yd(n,e,t){let{byKind:r}=ri(n);if(r.size===0)return[];let o=[];for(let i of t){let s=r.get(i.kind);if(!s)continue;let a=Hd(e,s,i.id);if(a.length===1)for(let[d,u]of Object.entries(s.values(e,a[0],i))){let l=i[d];Jd(l,u)||o.push({id:i.id,source:a[0].id,field:d,holds:l,follows:u})}}return o}function Xd(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var St=class{constructor(e){this.graph=e;for(let t of e.allNodes({archived:"all"}))this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=Xd(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=oi(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let u=[...a.ids.get(a.sorted[d])??[]];s.push(...u),a.sorted[d]===r&&i.push(...u)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=K(this.graph.schema.tryDefinition(e.kind),e),r=Xd(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(oi(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=oi(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function oi(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function Cf(n,e){return e.includes("*")?"record":e.map(t=>X(n.tryDefinition(t),t)).join(" or ")}function Qd(n,e,t,r){let o=Cf(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}function ii(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":ii(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${ii(e[r])}`).join(",")}}`}var ec=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function Zf(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(ec),t=n.edges.map(r=>({key:I(r),value:{kind:r.kind,from:r.from,to:r.to,id:r.id,data:r.data}})).sort(ec);return ii({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function Dn(n){return`sha256:${tc(Zf(n))}`}function nc(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=Dn(t),a=H.from(n,i,{validate:o});for(let[h,b]of e.entries())try{a.applyPrimitives(b.primitives)}catch(m){let w=e[h-1];return{ok:!1,expected:Dn(a.snapshot()),actual:s,...w?{divergedAfter:w.id}:{},reason:`The log does not fold: op "${b.id}" (${b.intent}) could not be applied. ${m instanceof Error?m.message:String(m)}`}}let d=Dn(a.snapshot());if(d===s)return{ok:!0,hash:s};let u=h=>{let b=H.from(n,i,{validate:o});for(let m=0;m<=h;m++)b.applyPrimitives(e[m].primitives);return Dn(b.snapshot())},l=h=>{try{let b=H.from(n,t,{validate:o});for(let m=e.length-1;m>h;m--)b.applyPrimitives(Ye(e[m]));return Dn(b.snapshot())}catch{return}},f=h=>{let b=l(h);return b!==void 0&&b!==u(h)},c=-1,p=e.length-1;for(;c<p;){let h=Math.floor((c+p)/2);f(h)?p=h:c=h+1}let g=p>=0?e[p]:void 0;return{ok:!1,expected:d,actual:s,...g?{divergedAfter:g.id}:{},reason:g?`The graph and the fold of its log part after op "${g.id}" (${g.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var Gf=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Vf=new TextEncoder,Kf=new Uint32Array(64),Bf=new Uint32Array(8),pr=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function tc(n){let e=Vf.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=Bf;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=Kf;for(let d=0;d<r.length;d+=64){for(let m=0;m<16;m++)s[m]=o.getUint32(d+m*4);for(let m=16;m<64;m++){let w=s[m-15],$=s[m-2],k=(w>>>7|w<<25)^(w>>>18|w<<14)^w>>>3,O=($>>>17|$<<15)^($>>>19|$<<13)^$>>>10;s[m]=s[m-16]+k+s[m-7]+O>>>0}let u=i[0],l=i[1],f=i[2],c=i[3],p=i[4],g=i[5],h=i[6],b=i[7];for(let m=0;m<64;m++){let w=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),$=p&g^~p&h,k=b+w+$+Gf[m]+s[m]>>>0,O=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),A=u&l^u&f^l&f,y=O+A>>>0;b=h,h=g,g=p,p=c+k>>>0,c=f,f=l,l=u,u=k+y>>>0}i[0]=i[0]+u>>>0,i[1]=i[1]+l>>>0,i[2]=i[2]+f>>>0,i[3]=i[3]+c>>>0,i[4]=i[4]+p>>>0,i[5]=i[5]+g>>>0,i[6]=i[6]+h>>>0,i[7]=i[7]+b>>>0}let a="";for(let d=0;d<8;d++){let u=i[d];a+=pr[u>>>24]+pr[u>>>16&255]+pr[u>>>8&255]+pr[u&255]}return a}var Rt=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.inner.getNode(e)}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(e){return this.markAll(this.inner.allNodes(e))}allEdges(e){return this.markEdges(this.inner.allEdges(e))}nodesOfKind(e,t){return this.markAll(this.inner.nodesOfKind(e,t))}edgesOfKind(e,t){return this.markEdges(this.inner.edgesOfKind(e,t))}out(e,t,r){return this.seen.add(e),this.markAll(this.inner.out(e,t,r))}in(e,t,r){return this.seen.add(e),this.markAll(this.inner.in(e,t,r))}neighbors(e,t){return this.seen.add(e),this.markAll(this.inner.neighbors(e,t))}};function Uf(n,e){return{...e,name:n}}function si(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function sc(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return si(n)?[...r,"id"]:r}var rc=(n,e,t={})=>{let r=n.filter(s=>t[s]?.length),o=n.filter(s=>!t[s]?.length);return`${[...o.length>0?[`does not take ${o.map(s=>`"${s}"`).join(", ")}`]:[],...r.map(s=>`${s} is set by ${t[s].join(" or ")}`)].join("; ")}; it takes ${e.length>0?e.map(s=>`"${s}"`).join(", "):"nothing"}`};function Wf(n){let e=n?._zod?.def;for(let t=0;e?.innerType&&t<8;t++)e=e.innerType._zod?.def;return e}var qf=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/;function ac(n,e){let t=n?.shape;if(!t||typeof e!="object"||e===null||Array.isArray(e))return e;let r;for(let[o,i]of Object.entries(e)){if(typeof i!="string"||!qf.test(i)||Wf(t[o])?.type!=="number")continue;let s=Number(i);Number.isFinite(s)&&(r??={...e},r[o]=s)}return r??e}var dc=n=>typeof n=="string"&&n.length<=200&&/^[^\s\p{Cc}]+$/u.test(n);function Hf(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(!dc(e))throw new N("An id is 1\u2013200 characters with no space",`Got ${JSON.stringify(e)}.`);return e}}function Jf(n){let{id:e,...t}=n;return t}function oc(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function ai(n){let e=2166136261;for(let t=0;t<n.length;t++)e=Math.imul(e^n.charCodeAt(t),16777619);return(e>>>0).toString(36).padStart(7,"0")}function Yf(n,e){if(e.limited&&e.me===void 0)return ic(n,e.held);let t=e.limited?`${n}.${ai(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?ic(t,e.held):r}function ic(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function Fn(n,e,t,r={}){let o=si(e)?Hf(t):void 0,i=ac(e.input,o===void 0?t:Jf(t)),s=sc(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let y=Object.keys(i).filter(v=>!s.includes(v)&&i[v]!==void 0);if(y.length>0)throw new we(e.name,[{path:[],message:rc(y,s,e.writtenBy)}])}let a=e.clearable&&typeof i=="object"&&i!==null&&!Array.isArray(i)?e.clearable.filter(y=>i[y]===null):[],d=e.input.safeParse(a.length>0?Object.fromEntries(Object.entries(i).filter(([y])=>!a.includes(y))):i);if(d.success)for(let y of a)d.data[y]=null;if(!d.success){let y=Object.keys(e.input.shape??{});throw new we(e.name,d.error.issues.map(v=>v.code==="unrecognized_keys"&&y.length>0?{...v,message:rc(v.keys,y,e.writtenBy)}:v))}let u=d.data,l=new Rt(r.seen??n),f=[],c=new Set,p=r.me===void 0?void 0:`.${ai(r.me)}`,g=y=>!r.seesInFull||r.seesInFull()||p!==void 0&&new RegExp(`\\${p}(-[0-9a-z]+)?$`).test(y),h=y=>l.has(y)||n.has(y)||c.has(y)||r.everHeld?.(y)===!0,b,m=y=>{let v=new Set([...n.outEdges(y),...n.inEdges(y)]);for(let R of v)l.getNode(R.from),l.getNode(R.to),f.push({op:"remove-edge",edge:R});return v},w={graph:l,schema:n.schema,me:r.me,emit(y){f.push(y)},addNode(y){f.push({op:"add-node",node:y})},removeNode(y){let v=l.getNode(y)&&n.getNode(y);if(!v)throw new q(y,`Cannot remove missing node "${y}"`);m(y),f.push({op:"remove-node",node:v})},patchNode(y,v){let R=l.getNode(y)&&n.getNode(y);if(!R)throw new q(y,`Cannot patch missing node "${y}"`);let S={},x={};for(let[_,P]of Object.entries(v)){let M=R[_];JSON.stringify(M)===JSON.stringify(P)&&!r.keepUnchanged?.(P,_,R)||(S[_]=M,x[_]=P)}Object.keys(x).length!==0&&f.push({op:"patch-node",id:y,before:S,after:x})},archiveNode:y=>w.patchNode(y,{[me]:!0}),unarchiveNode:y=>w.patchNode(y,{[me]:void 0}),mergeNode(y,v){let R=l.getNode(v)&&n.getNode(v);if(!R)throw new q(v,`Cannot merge into missing node "${v}"`);if(y===v||ye(R))throw new N(y===v?"Cannot merge a record into itself":"Cannot merge into an archived record");let S=new Set([...n.outEdges(v),...n.inEdges(v)].map(I));for(let x of m(y)){let _={...x,from:x.from===y?v:x.from,to:x.to===y?v:x.to};_.from!==_.to&&!S.has(I(_))&&(S.add(I(_)),f.push({op:"add-edge",edge:_}))}w.archiveNode(y),b=v},addEdge(y){f.push({op:"add-edge",edge:y})},removeEdge(y){f.push({op:"remove-edge",edge:y.id!==void 0&&n.linkById(y.id)||y})},setSingleSource(y,v,R){n.inEdges(v,y).some(S=>S.from===R)||f.push({op:"add-edge",edge:{kind:y,from:R,to:v}});for(let S of n.inEdges(v,y))l.getNode(S.from),S.from!==R&&f.push({op:"remove-edge",edge:S})},freshId(y,v,R){if(o!==void 0&&!c.has(o)){if(v&&!o.startsWith(`${v}:`)){let ne=o.includes(":")?o.slice(o.indexOf(":")+1):o;throw new N(`Id "${o}" does not say its kind: ask for "${v}:${ne||o}"`,`Every ${v} id starts "${v}:", the ones "${e.name}" mints and the ones a caller asks for alike, so a later call names it as it names the rest.`)}if(!g(o))throw new N(`"${e.name}" makes its own id here`,`Leave id out${p?`, or end it "${p}"`:""}.`);if(h(o))throw new N(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has or had one. Pick another, or leave id out and let the act mint one.`);return c.add(o),o}let S=r.hint;if(o===void 0&&!c.size&&dc(S)&&(!v||S.startsWith(`${v}:`))&&g(S)&&!h(S))return c.add(S),S;v&&r.keeps&&[u,R??{}].some(ne=>Nd(y,v,ne,r.keeps))&&(y=v);let x=v?`${v}:${oc(y)}`:oc(y),_=r.seesInFull!==void 0&&!r.seesInFull(v),M=Yf(x,{seen:ne=>(r.seen?r.seen.has(ne):n.has(ne))||c.has(ne)||!_&&r.everHeld?.(ne)===!0,held:h,limited:_,me:r.me});return c.add(M),M}};if(e.apply(w,u),o!==void 0&&!c.has(o))throw new N(`"${e.name}" did not make a record with id "${o}": it names what it makes itself`);let $=r.check?.(f,e),k=new Set(f.flatMap(Re)),O=new Rt(r.seen??n),A=e.describe?.(u,O)??`${e.name}(${Object.entries(u).map(([y,v])=>`${y}=${JSON.stringify(v)}`).join(", ")})`;return{primitives:f,reads:[...new Set([...l.reads(),...O.reads()])],...e.describe?{described:[...O.reads(),...$??[]]}:{},writes:[...k],intent:A,...b!==void 0?{mergedInto:b}:{},...c.size>0?{firstMinted:c.values().next().value}:{}}}function di(n,e,t,r,o,i){if(typeof r!="string"||typeof o!="string")return n.allowedOn===void 0;if(n.allowedOn)return n.allowedOn(t,r);let s=n.subject?.arg??"id",a=n.input.shape??{},d=t.getNode(r)?.[o],u={[s]:r,...o!==s&&o in a&&d!==void 0&&d!==null?{[o]:d}:{}},l=n.input.safeParse?.(u),f=l?.success?l.data:u,c=()=>{},p={graph:t,schema:e,me:i,addNode:c,removeNode:c,patchNode:c,archiveNode:c,unarchiveNode:c,mergeNode:c,addEdge:c,removeEdge:c,setSingleSource:c,freshId:(g,h)=>`${h?`${h}:`:""}${g}`,emit:c};try{n.apply(p,f)}catch(g){let h=g;return!(h?.name==="ActRefusal"&&h.reason!=="invalid")}return!0}var $t=n=>n.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").replace(/-+/g,"-").toLowerCase();function hr(n,e){let t=$t(n),r=[...e];if(r.includes(n))return n;let o=r.filter(i=>$t(i)===t);return o.length===1?o[0]:void 0}function Xf(n,e){let t=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=n.length;r+=1){let o=[r];for(let i=1;i<=e.length;i+=1)o[i]=Math.min(t[i]+1,o[i-1]+1,t[i-1]+(n[r-1]===e[i-1]?0:1));t=o}return t[e.length]}function ci(n,e){let t=[...e],r=hr(n,t);if(r)return r;let o=$t(n);if(o==="")return;let i,s=!1;for(let a of t){let d=Xf(o,$t(a));d>Math.max(2,Math.floor(Math.max(o.length,a.length)/3))||(!i||d<i.far?(i={act:a,far:d},s=!1):d===i.far&&(s=!0))}return i&&!s?i.act:void 0}var cc=Symbol.for("@graview/core:amount"),Jk=(n,e)=>(Object.defineProperty(L(n),cc,{value:e,enumerable:!0}),n);function li(n,e=!0){let t=L(n);return t?.[cc]??(e&&t?.innerType?li(t.innerType):void 0)}function lc(n,e={},t){let r=t===0?Math.round(n):Math.round(n*100)/100,o=Number.isInteger(r),i={maximumFractionDigits:o?0:2,minimumFractionDigits:o?0:2};try{return $e(r,e.locale,e.currency?{style:"currency",currency:e.currency,...i}:i)}catch{return $e(r,e.locale,i)}}function uc(n,{format:e,unit:t,currency:r,locale:o,places:i}){let s=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&s?lc(n,{...o?{locale:o}:{},...(s?t:r)?{currency:s?t:r}:{}},i):e==="percent"?$e(n,o,{style:"percent",maximumFractionDigits:0}):$e(n,o)+(t?` ${t}`:"")}var Qf=Symbol.for("@graview/core:typed-field");function ui(n){let e=L(n);return e?e[Qf]??ui(e.innerType):void 0}var ep=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function np(n){for(let e of n.matchAll(/[.!?](?=\s|$)/g)){let t=n.slice(0,e.index+1),r=/\S+$/.exec(t)?.[0]??"";if(!(e[0]==="."&&ep.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function fc(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=np(t);return r&&r.length<=e?r:t.length<=e?t:`${(t.slice(0,e+1).replace(/\s+\S*$/,"")||t.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function fi(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=Jt(e[t])?at(t):void 0;return r&&e[r]?[r]:[]})}var tp=[["skip","Skip this one","Leave one day out of the series; the rest stay as they are.","Skip {} on "],["detach","Change just this one","Make one day of the series a record of its own, to change apart from the rest.","Change {} only on "],["split","Change from here","End the series the day before, and start it again from that day with what changes.","Change {} from "]];function pc(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=fi(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=At(n,e).get(s),u=new Set(o.keptInStep??[]),l=g=>(d?.get(g)?.length??0)>0&&!u.has(g),f=Ge(o).filter(g=>!l(g)),c=Object.fromEntries(Ge(o).filter(l).map(g=>[g,d.get(g)])),p=g=>K(o,g);for(let[g,h,b,m]of tp){let w=`${g}-${s}`;t.has(w)||r.push({name:w,derived:{kind:s,act:g},title:h,description:b,subject:{kinds:[s],arg:"id"},writes:i.map(_n),...g==="skip"?{}:{creates:[s],...Object.keys(c).length>0?{writtenBy:c}:{}},input:An({id:Ze([s]),on:F().check(nt(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:W(Da(i))}:{},...g==="skip"?{}:Object.fromEntries(f.map($=>[$,W(a[$])]))}),describe:($,k)=>m.replace("{}",p(k.getNode(String($.id))??{id:$.id}))+Te(String($.on)),apply($,k){let O=$.graph.getNode(String(k.id)),A=String(k.field??i[0]),y=O?.[A],v=O?.[_n(A)],R=String(k.on);if(typeof y!="string"||!Pn(v))throw new de(`${p(O??{id:k.id})} does not repeat`,"refused");let S=On(y,v,{from:R,to:R})[0];if(!S)throw new de(`${p(O)} does not fall on ${Te(R)}`,"refused");let x=String(O.id),_=Object.fromEntries(f.filter(V=>k[V]!==void 0).map(V=>[V,k[V]])),P=_n(A),M=V=>{let mn=Object.fromEntries(Object.entries({...O,...V,..._}).filter(([ze,qe])=>qe!=null&&ze!=="id")),G=$.freshId(p(mn),s,mn);$.addNode({...mn,id:G,kind:s});for(let ze of Object.keys(o.edges??{}))for(let qe of $.graph.out(x,ze))$.addEdge({kind:ze,from:G,to:qe.id})};if(g!=="split"){$.patchNode(x,{[P]:{...v,except:[...new Set([...v.except??[],R])].sort()}}),g==="detach"&&M({[A]:S,[P]:null});return}if(Object.keys(_).length===0)throw new de(`Nothing to change: give ${p(O)} from ${Te(R)} something new`,"invalid");if(R<=y.slice(0,10))return $.patchNode(x,_);let ne=new Date(Date.parse(`${R}T00:00:00Z`)-864e5).toISOString().slice(0,10),Kn=v.count?On(y,{...v,except:[]},{to:ne}).length:0,{count:Ne,except:gn,...Bn}=v,re=V=>gn?.some(V)?{except:gn.filter(V)}:{};$.patchNode(x,{[P]:{...Bn,until:ne,...re(V=>V<R),...Ne?{count:Kn}:{}}}),M({[A]:S,[P]:{...Bn,...re(V=>V>=R),...Ne?{count:Ne-Kn}:{},continues:x}})}})}}return r}function hc(n,e,t,r){if(n==="detach")return!0;if(n!=="split"||typeof e.on!="string")return!1;let o=t?.[String(e.field??r[0])];return typeof o!="string"||e.on>o.slice(0,10)}function gc(n,e){let t=new Set(e.map(a=>a.name)),r=e.filter(a=>!a.derived&&!a.creates?.length),o=(a,d,u,l)=>r.some(f=>{if(!(f[a]??[]).includes(u))return!1;let c=f.subject?.kinds;return c===void 0||c==="*"||c.includes(d)||l.to==="*"||c.some(p=>l.to.includes(p))}),i=[],s=(a,d)=>{let u=a.getNode(String(d));return u?K(n.tryDefinition(u.kind),u):String(d)};for(let a of n.definitions){let d=a.kind,u=Object.entries(a.edges??{}),l=f=>f.to==="*"?"record":f.to.map(c=>X(n.tryDefinition(c),c)).join(" or ");for(let[f,c]of u){let p=l(c),g=c.cardinality==="one",h=u.some(([k,O])=>k!==f&&l(O)===p),b=k=>B(k).toLowerCase(),m=kd(d,f,c,b),w={to:m&&"to"in m?m.to:p,from:X(a,d),one:g,also:m&&"also"in m?m.also:h&&!m?b(f):void 0},$=w.from;for(let k of Ko){let O=Bo(k,d,f);if(t.has(O)||c.acts==="none"||(k==="connect"?o("connects",d,f,c):o("severs",d,f,c)||c.appendOnly))continue;let{title:A,fromTheOtherEnd:y}=wd(k,w),v=c.description?`: ${c.description.replace(/\.$/,"")}`:"";i.push({name:O,derived:{kind:d,act:k,relation:f},title:A,fromTheOtherEnd:y,description:k==="connect"?`Link this ${$} to ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${v}.${g?" It has one, so this replaces the one it has.":""}`:`Take away the link between this ${$} and ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${v}. Undo puts it back.`,subject:{kinds:[d],arg:"id"},...k==="connect"?{connects:[f]}:{severs:[f],destructive:!0},idempotent:!0,input:An({id:Ze([d]),to:Ze(c.to==="*"?"*":c.to)}),describe:(R,S)=>k==="disconnect"?`Unlink ${s(S,R.id)} from ${s(S,R.to)}`:g?`Set the ${p} of ${s(S,R.id)} to ${s(S,R.to)}`:`Link ${s(S,R.id)} to ${s(S,R.to)}`,apply(R,S){let x=String(S.id),_=String(S.to);for(let M of[x,_])if(!R.graph.getNode(M))throw new de(`there is no record "${M}"`,"invalid");let P=R.graph.out(x,f).some(M=>M.id===_);if(k==="disconnect"){if(!P)throw new de(`${s(R.graph,x)} is not linked to ${s(R.graph,_)}`,"invalid");R.removeEdge({kind:f,from:x,to:_});return}if(g)for(let M of R.graph.out(x,f))M.id!==_&&R.removeEdge({kind:f,from:x,to:M.id});P||R.addEdge({kind:f,from:x,to:_})}})}}}return i}function rp(n){let e=new Set(n.declared),t=[...new Set([...(n.paged??[]).filter(o=>e.has(o)),...n.declared])],r=(n.naming??[]).filter(o=>e.has(o));return[...new Set([...r,...t.filter(n.must),...t])]}var pi=n=>`\xA7${n}\xA7`;function op(n,e){if(n.label)try{let r={id:pi(e.length),kind:n.kind};e.forEach((s,a)=>r[s]=pi(a));let o=String(n.label(r)),i=e.map((s,a)=>[s,o.indexOf(pi(a))]).filter(([,s])=>s>=0);if(i.length>0)return i.sort((s,a)=>s[1]-a[1]).map(([s])=>s)}catch{}let t=["name","title","label"].find(r=>e.includes(r));return t?[t]:[]}var mc=new WeakMap;function gr(n){let e=mc.get(n);if(e)return e;let t=n.fields.shape??{},r=Object.keys(t),o=n.display?.page,i=rp({declared:r,paged:[...o?.fields??[],...(o?.groups??[]).flatMap(s=>s.fields)],must:s=>t[s]?.safeParse?.(void 0).success===!1&&!Object.hasOwn(n.defaults??{},s),naming:op(n,r)});return mc.set(n,i),i}function ip(n,e){let t=e.subject?.kinds,r=e.creates?.[0]??e.derived?.kind??(t!==void 0&&t!=="*"&&t.length===1?t[0]:void 0);return r===void 0?void 0:n.tryDefinition(r)}function sp(n,e){let t=Object.keys(e.input?.shape??{}),r=n?ip(n,e):void 0;if(!r)return t;let o=gr(r),i=d=>d!==e.subject?.arg&&o.includes(d),s=t.filter(i).sort((d,u)=>o.indexOf(d)-o.indexOf(u)),a=0;return t.map(d=>i(d)?s[a++]:d)}function hi(n,e,t=r=>r.name){let r=o=>{let i=e.indexOf(t(o));return i<0?e.length:i};return[...n].sort((o,i)=>r(o)-r(i))}function Ge(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function gi(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function mi(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(kt(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function At(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of gi(n,o)){let s=n.tryDefinition(i);if(s)for(let a of mi(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function bc(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=At(n,e).get(t);return Ge(r).filter(i=>!o?.has(i))}var mr=n=>`edit-${n}`;function yr(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),gi(n,i).includes(t)&&mi(i,r).length>0&&o.add(i.name));return[...o]}function vc(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=mr(i);if(t.has(s))continue;let a=new Set((o.keptInStep??[]).filter(h=>Ge(o).includes(h))),d=bc(n,e,i),u=hi(Ge(o).filter(h=>d.includes(h)||a.has(h)),gr(o),h=>h);if(u.length===0)continue;let l=At(n,e).get(i),f=Object.fromEntries(Ge(o).flatMap(h=>!u.includes(h)&&l?.get(h)?.length?[[h,l.get(h)]]:[])),c=o.fields.shape,p=X(o,i),g=u.map(h=>Ft(o,h));r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${p}`,description:`Change what was set when this ${p} was made: ${g.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:u,...Object.keys(f).length>0?{writtenBy:f}:{},...u.some(h=>yc(c[h]))?{clearable:u.filter(h=>yc(c[h]))}:{},input:An({id:Ze([i]),...Object.fromEntries(u.map(h=>[h,W(cp(c[h]))]))}),describe:(h,b)=>ap(o,c,u,h,b),apply(h,b){let m={};for(let w of u){let $=b[w];$===null?m[w]=void 0:$!==void 0&&(m[w]=$)}if(Object.keys(m).length===0)throw new de(`Nothing to change \u2014 give at least one of ${g.join(", ")} a value.`,"invalid");h.patchNode(b.id,m)}})}return r}function ap(n,e,t,r,o){let i=o.getNode(r.id),s=i?K(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,u)=>{let l=r[d],f=at(d),c=f!==void 0&&f in e;return`the ${Ft(n,c?f:d)}${u===0?` of ${s}`:""} to ${c?l?`repeat ${dp(l)}`:"stop repeating":wc(n,e[d],d,l)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var dp=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function wc(n,e,t,r){if(r===null||r===""||Array.isArray(r)&&r.length===0)return"nothing";let o=n.display?.format?.[t];try{if(o)return String(o(r))}catch{}if(ot(r).length>0)return ot(r).map(i=>i.name).join(", ");if(it(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>wc(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=li(e);return i?uc(r,i):ui(e)==="duration"?`${r>=60?`${Math.floor(r/60)} h `:""}${r%60||r<60?`${r%60} min`:""}`.trim():String(r)}if(typeof r!="string")return"a new value";if(Lr.test(r))return Te(r);if(It.test(r))return Zr(r);for(let i=L(e);i;i=L(i.innerType))if(i.type==="enum")return nn(r);return`\u201C${fc(r,60)}\u201D`}function yc(n){return n._zod?.def?.type==="optional"}function cp(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}function br(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function vr(n,e,t){if(!t.derived)return;let r=t.derived.act;return r==="edit"||r==="skip"||r==="detach"||r==="split"||r==="connect"||r==="disconnect"?yr(n,e,t.derived.kind):br(e,t.derived.kind)}function lp(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=X(o,i),a=(u,l)=>{let f=u.getNode(String(l));return f?K(o,f):String(l)},d=Ze([i]);for(let[u,l,f,c]of[["remove","Remove",`Remove the ${s}`,`Take this ${s} out of the graph, with every tie it has. Undo puts it back.`],["archive","Archive",`Archive the ${s}`,`Set this ${s} aside, with its ties and history kept.`],["unarchive","Bring back","Bring it back",`Bring this archived ${s} back.`],["merge","Merge",`Merge into another ${s}`,`The other takes this ${s}'s ties, and this one is archived.`],["leave-alone","Leave alone","Leave this one alone",`Nothing automated changes this ${s}: tidying passes it by until you allow it again.`],["allow-tidying","Allow tidying of","Allow tidying again",`Let tidying change this ${s} again.`]]){let p=`${u}-${i}`,g=u==="leave-alone"||u==="allow-tidying";t.has(p)||!g&&u!=="remove"&&o.archives===!1||g&&o.tidying==="never"||r.push({name:p,derived:{kind:i,act:u},title:f,description:c,subject:{kinds:[i],arg:"id"},...u==="remove"?{destructive:!0}:{},idempotent:!0,input:se(u==="merge"?{id:d,into:d}:{id:d}),describe:(h,b)=>{let m=u==="remove"&&b.getNode(String(h.id)),w=m?new Set(Object.values(m).flatMap(O=>ot(O).map(A=>A.href))).size:0,$=u==="merge"&&a(b,h.id)===a(b,h.into),k=O=>$?`${a(b,O)} (${String(O)})`:a(b,O);return`${l} ${k(h.id)}${u==="merge"?` into ${k(h.into)}`:""}${w?` and its ${w} file${w>1?"s":""}`:""}`},apply:g?(h,b)=>h.patchNode(String(b.id),{[ct]:u==="leave-alone"?!0:void 0}):(h,b)=>h[`${u}Node`](b.id,b.into)})}}return r}function yi(n,e){return[...vc(n,e),...lp(n,e),...pc(n,e),...gc(n,e)]}var up=n=>({$made:n}),wr=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,fp=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),bi=n=>Object.values(n.args??{}).some(e=>wr(e)||Array.isArray(e)&&e.some(wr)),kc=(n,e,t)=>({...n,args:fp(n,r=>{if(!wr(r))return r;let o=r.$made<t?e[r.$made]:void 0;if(o===void 0)throw new Error(`\u201C${n.name}\u201D names the record call ${r.$made+1} makes, and no call before it made that record.`);return o})});var pp=500,hp=120,gp=50,mp=200,yp=500,bp=200,xc=4e3,vp=["model","suggestion","interaction","actor","run","proposedBy"],vi=n=>typeof n=="string"&&n.length>0&&n.length<=hp,wp=n=>typeof n=="string"&&n.length<=240&&n.lastIndexOf("#")>0&&n.lastIndexOf("#")<n.length-1,kp=n=>{let e=JSON.stringify(n);return e===void 0?void 0:JSON.parse(e)};function ln(n){if(n===void 0)return;let e=n&&typeof n=="object"&&!Array.isArray(n)?n:{},t=typeof e.basis=="string"?e.basis.trim():"",r={basis:t},o=t!==""&&t.length<=pp;for(let i of Object.keys(e)){let s=e[i];i==="basis"||s===void 0||(i==="model"&&typeof s=="string"&&(s=s.trim()),i==="confidence"?o&&=typeof s=="number"&&s>=0&&s<=1:vp.includes(i)?o&&=vi(s):i==="evidence"?o&&=Array.isArray(s)&&s.length<=gp&&s.every(vi):i==="read"?o&&=Array.isArray(s)&&s.length<=mp&&s.every(wp):i==="items"?o&&=Array.isArray(s)&&s.length>0&&s.length<=yp&&s.every(a=>Number.isInteger(a)&&a>=0):i==="voters"?o&&=Array.isArray(s)&&s.length<=bp&&s.every(vi):o&&=i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(s=kp(s))!==void 0,o&&(r[i]=s))}if(!o)throw new N("A lineage is { basis: 1 to 500 characters, confidence?: 0 to 1, model?, suggestion?, interaction?, actor?, run?, proposedBy?: 1 to 120 characters, evidence?: up to 50 ids, read?: up to 200 <id>#<field>, voters?: up to 200 ids, items?: up to 500 places }");if(JSON.stringify(r).length>xc)throw new N(`A lineage is at most ${xc} characters written out.`);return r}var Ln="keep-link";function Sc(n){let e=(t,r)=>{let o=t.getNode(r);return o?K(n.tryDefinition(o.kind),o):r};return{name:Ln,title:"Keep this link",input:se({kind:F(),from:F(),to:F()}),describe:(t,r)=>`Keep the link from ${e(r,t.from)} to ${e(r,t.to)}`,apply(t,r){let{kind:o,from:i,to:s}=r;if(!t.graph.getNode(i)||!t.graph.getNode(s)){let d=I({kind:o,from:i,to:s});throw new q(d,`Cannot remove missing edge ${d}`)}let a=t.graph.edgesOfKind(o,{archived:"all"}).find(d=>d.from===i&&d.to===s)??{kind:o,from:i,to:s};t.removeEdge(a),t.addEdge(a)}}}var wi=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==Ln&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var Ot="propose-changes",ki=500;function Rc(){return{name:Ot,title:"Propose changes",input:se({calls:Ia(se({name:F(),args:tt()})),intent:W(F())}),apply(){}}}var $c=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget","derived-out-of-step"];function Ac(n,e){let t=er(n,e);return t&&[...t.fields].filter(Boolean)}function xp(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function Cn(n,e){try{return K(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var Sp=n=>`${n.kind}:${n.from}->${n.to}`,kr=(n,e)=>n<e?-1:n>e?1:0;function Oc(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let c of e.nodes)i.has(c.id)||i.set(c.id,c);let s=c=>e.edges.filter(p=>p.from===c||p.to===c),a=c=>({action:"drop",primitives:[...s(c.id).filter(p=>i.has(p.from)&&i.has(p.to)).map(p=>({op:"remove-edge",edge:p})),{op:"remove-node",node:c}]}),d=new Set;for(let c of[...i.values()].sort((p,g)=>kr(p.id,g.id))){if(!r.tryDefinition(c.kind)){d.add(c.id),o.push({code:"kind-unknown",id:c.id,message:`${Cn(r,c)} is a kind of record this app no longer has`,repair:a(c)});continue}let p=Ac(r,c);if(p===void 0)continue;let g=Cn(r,c),h=new Map,b=p.length>0;for(let m of p){if(m==="id"||m==="kind"){b=!1;continue}let w=xp(r,c.kind,m),$=w?w.safeParse(void 0):{success:!0,data:void 0},k=r.tryDefinition(c.kind)?.defaults;!$.success&&w&&k&&Object.hasOwn(k,m)&&($=w.safeParse(k[m])),$.success?$.data===void 0?h.set(m,{action:"clear",value:ce}):h.set(m,{action:"coerce",value:$.data}):b=!1}if(b){let m={...c};for(let[w,$]of h)$.value===ce?delete m[w]:m[w]=$.value;Ac(r,m)!==void 0&&(b=!1)}if(p.length===0){o.push({code:"node-shape",id:c.id,message:`${g} does not fit what ${c.kind} declares`,repair:a(c)});continue}for(let m of p){let w=h.get(m),$=b&&w?{action:w.action,primitives:[{op:"patch-node",id:c.id,before:{[m]:c[m]===void 0?ce:c[m]},after:{[m]:w.value}}]}:a(c);o.push({code:"node-shape",id:c.id,detail:m,message:`${g}: ${B(m)} does not fit what ${c.kind} declares`,repair:$})}}let u=new Set,l=[];for(let c of[...e.edges].sort((p,g)=>kr(I(p),I(g)))){if(u.has(I(c)))continue;u.add(I(c));let p=Sp(c),g=i.get(c.from),h=i.get(c.to);if(!g||!h){o.push({code:"edge-dangling",id:p,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}});continue}l.push(c),!(d.has(g.id)||d.has(h.id))&&(r.edgeAllowed(c.kind,g.kind,h.kind)||o.push({code:"edge-disallowed",id:p,message:`${Cn(r,g)} \u2192 ${Cn(r,h)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}}))}let f=n.invariants??[];if(f.length>0){let c=H.from(r,{nodes:[...i.values()],edges:l},{validate:!1}),p=new Set,g;try{g=Mn(c,f,t.invariantOptions??{})}catch{g=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let h of g){let b=h.status==="could-not-judge"?"rule-error":h.status==="over-budget"?"rule-budget":void 0;if(!b)continue;let m=h.subjectId??h.invariant,w=`${b}|${m}|${h.invariant}`;p.has(w)||(p.add(w),o.push({code:b,id:m,detail:h.invariant,message:h.message}))}}if(jn(r)){let c=H.from(r,{nodes:[...i.values()].filter(p=>!d.has(p.id)),edges:l},{validate:!1});for(let p of Yd(r,c,i.values())){let g=i.get(p.id),h=i.get(p.source);o.push({code:"derived-out-of-step",id:p.id,detail:p.field,message:`${Cn(r,g)}: ${B(p.field)} says ${JSON.stringify(p.holds??null)}, and it follows ${Cn(r,h)}, which works it out as ${JSON.stringify(p.follows??null)}`,repair:{action:"coerce",primitives:[{op:"patch-node",id:p.id,before:{[p.field]:p.holds===void 0?ce:p.holds},after:{[p.field]:p.follows===void 0?ce:p.follows}}]}})}}return o.sort((c,p)=>$c.indexOf(c.code)-$c.indexOf(p.code)||kr(c.id,p.id)||kr(c.detail??"",p.detail??""))}var _t=()=>globalThis.__graviewWatch;function _c(n){_t()?.store?.(n)}function xr(n){n!==void 0&&_t()?.learn?.({ids:[n],words:[]})}function Pc(n,e){_t()?.refused?.({...n,...e===void 0?{}:{author:e}})}function xi(n,e){let t=_t();if(!t?.refusedInput)return;let r=n.issues.map(o=>`${o.path.map(String).join(".")}: ${o.message}`).join("; ");t.refusedInput({mutation:n.mutation,message:r,...e===void 0?{}:{author:e}})}function Rp(n,e){n instanceof we&&xi(n,e)}function $p(n,e,t){_t()?.seat?.(n,e,t)}function Ri(n,e){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let t=new Date(n).getTime();if(Number.isNaN(t))throw new Error(`Not a day: ${String(n)}`);return te(e,t)}var Si=15*6e4;function Ec(n=Date.now(),e){let t=new Date(n).getTime(),r=Tt(e),o=te(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=qi(i.toISOString().slice(0,10),0,r);for(;te(r,s)===o;)s+=Si;for(;te(r,s-Si)!==o;)s-=Si;return s-t}function Ap(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},Ec(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}function $i(n){let e=(n?.published?.length??0)>0;return{framework:En,formats:{...fe,snapshot:e?2:1}}}var Sr=class extends N{constructor(e){super(`This is the app as it stood${e.at?` at ${e.at}`:" at the start"}: the past is read, never changed`),this.name="PastError"}},Ai="preview",T=(n,e)=>e===void 0?{}:{[n]:e},Ve={kind:"human"},Mc={kind:"system"},Ic={kind:"system",id:"modules",name:"Modules"},Nc=n=>n.mutation===null&&n.undoes===void 0;function Oi(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var Op=new Set(["remove","archive","unarchive","merge"]),_p={has:()=>!0},Tc=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function jc(n,e,t){let r=Tc(n),o=f=>Oi(f,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(f=>!i.has(o(f))),d=e.filter(f=>!s.has(o(f)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let u=f=>f.subjectId&&Oi(f,_p),l=d.map(u);return{introduces:a.filter(f=>{let c=u(f)?l.indexOf(u(f)):-1;return c<0||(l[c]=null,!1)}),resolves:d.filter((f,c)=>l[c]!==null)}}var Zn=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},Rr=class extends N{constructor(t,r){let o=ci(t,r);super(`Unknown mutation "${t}"${o?` \u2014 did you mean "${o}"?`:""}`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError",this.nearest=o}nearest},zc=n=>new Map(n.map(e=>[e.id,e.batch]));function Pp(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var _i=class n{schema;graph;log;mutations=new Map;keeper;typer;voter;proposer;invariants;invariantOptions;policy;publishing;tidying;votes;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;proposing=!1;ticked;timeZone;past;pastEvery;listeners=new Set;constructor(e){this.pastEvery=Math.max(1,e.pastEvery??64),this.past=e.past,this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.timeZone=e.timeZone,this.timeZone&&(this.ticked={day:te(this.timeZone),on:te(this.timeZone)}),this.policy=e.policy,this.publishing=e.publishing,this.tidying=e.tidying,this.votes=e.votes,this.by=e.principal??Ve,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=Pp();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.past?[]:e.mutations??[]){if(this.mutations.has(i.name))throw new N(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:yi(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(Ln)&&(this.keeper=Sc(e.schema),this.mutations.set(Ln,this.keeper)),!e.past&&!this.mutations.has(gt)&&(this.voter=Sd(),this.mutations.set(gt,this.voter)),!e.past&&!this.mutations.has(Ot)&&(this.proposer=Rc(),this.mutations.set(Ot,this.proposer));let r=T("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=In.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?H.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=In.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=H.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),_c(this))}stillNow(){if(this.past)throw new Sr(this.past)}countPastTheLog(){this.countPast(this.log.all())}countPast(e){let t=r=>{let o=/(\d+)$/.exec(r);return o?Number(o[1]):0};for(let r of e)this.counter=Math.max(this.counter,t(r.batch)),this.opCount=Math.max(this.opCount,t(r.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get servedSeq(){return this.log.length}get publishedSeq(){return Y.seq?.(this)}get publisher(){return Y.act?.(this,this.mutations)}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}o??=this.log.horizonEpoch()?.enabledModules;let s=r&&o===r.said?r.projection:ni(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){this.stillNow();let r=this.modules.enabled,o=ni(this.declaredModules,e).enabled,i=[...r].filter(l=>!o.has(l)),s=[...o].filter(l=>!r.has(l));if(i.length===0&&s.length===0)return;let a=l=>l.map(f=>{let c=this.declaredModules?.[f]?.kinds??[];return c.length>0?c.map(p=>le(this.schema,p)).join(", "):f}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),u={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:Ic,intent:en(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...T("via",t.via),enabledModules:[...o].sort()};return this.log.append(u),this.notify(lt,[u]),u}mutation(e){let t=this.mutations.get(this.spelled(e))??(e===or?this.publisher:void 0);if(!t)throw new Rr(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new N(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}spelled(e){return e===rr&&!this.typer&&ae.typeText&&!this.past&&!this.mutations.has(e)&&this.mutations.set(e,this.typer=ae.typeText(this)),this.mutations.has(e)?e:hr(e,this.mutations.keys())??e}spelledCall(e){let t=this.spelled(e.name);return t===e.name?e:{...e,name:t}}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values(),...this.publisher?[this.publisher]:[]].filter(e=>e!==this.keeper&&e!==this.typer&&e!==this.voter&&e!==this.proposer&&!this.mutationDisabled(e))}viaOf(e,t,r){if(e!==void 0&&e===this.keeper){let o=wi(this.mutations.values(),t?.args.kind);if(o.length>0)return o;let i=[...this.mutations.values()];return[...new Set(i.filter(s=>s.derived?.relation===t?.args.kind).flatMap(s=>vr(this.schema,i,s)??[]))]}if(e!==void 0&&e===this.typer){let o=r===void 0||Z(r)?this.graph:ke(this,r).graph,i=s=>!this.mutationDisabled(s)&&di(s,this.schema,o,t?.args.node,t?.args.field,r&&z(r).id);return ae.via(this.schema,[...this.mutations.values()],this.subjectKindOf(t,r),t?.args.field,i)}if(e?.derived)return vr(this.schema,[...this.mutations.values()],e)}moved(e,t){return jc(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}writesBack(e){if(this.policy)return(t,r,o)=>{try{return this.permits({name:`edit-${t.kind}`,args:{id:t.id,[r]:o}},e).ok}catch{return!1}}}permits(e,t=Ve){if(e=this.spelledCall(e),this.past)return{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:"Nothing changes while you look back."}};let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);if(r)return{ok:!1,refusal:r};let o=this.mutations.get(e.name)??(e.name===or?this.publisher:void 0);if(o&&o===this.publisher)return Y.verdict(this,t);if(o&&o===this.voter)return mt(t)&&(this.votes?.advisory!=="visitors"||ir(t)===void 0)?{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:xd}}:{ok:!0};if(o&&o===this.proposer)return this.permitsProposal(e,t);let i=o!==void 0&&o===this.keeper&&wi(this.mutations.values(),e.args.kind).length===0,s=i?e.args.from:o?.subject&&e.args[o.subject.arg],a=this.subjectKindOf(e,t),d=ve(this.policy,t,e.name,a,this.viaOf(o,e,t),typeof s=="string"?s:void 0,this.words,()=>{let u=z(t).id,l=this.namedIn(e,!1);try{for(let f of Fn(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in f&&f.edge.from!==u&&f.edge.to!==u&&l.push(f.edge.to)}catch{}return l},o!==void 0&&(o.derived!==void 0||o===this.typer||i)?()=>this.madeBy(o,e,s):void 0,o?.derived!==void 0&&Op.has(o.derived.act));if(d.ok&&o?.writesLinked&&typeof s=="string"){let u=this.refusesLinked(o,s,t);if(u)return u}return!d.ok||!o?.derived||!this.repeatMakes(o,e,s,t)?d:ve(this.policy,t,e.name,a,br([...this.mutations.values()],o.derived.kind),typeof s=="string"?s:void 0,this.words)}mayPropose(e,t=Ve){if(!this.policy||this.past||mt(t))return!1;e=this.spelledCall(e);let r=this.mutations.get(e.name);return!r||r===this.proposer||r===this.voter||this.refusesAgent(e,t)||this.namesTurnedOff(e,t)?!1:!this.permits(e,t).ok&&Fo(this.policy,t,e.name,this.subjectKindOf(e,t))}proposal(e,t,r,o){let{calls:i,intent:s}=e.args;if(i.length===0||i.length>ki||i.some(p=>!p.args||typeof p.args!="object"||Array.isArray(p.args)))throw new N(`A proposal holds 1 to ${ki} changes, each an act's name and its arguments.`);let a=z(r).id??r.session;if(a===void 0)throw new N("A proposal is somebody's: sign in to propose a change.");let d=ln({basis:(s??`Proposed by ${r.name??a}`).slice(0,500),proposedBy:a.slice(0,120)}),u=this.rehearsal();u.proposing=!0;let l=u.applying(i,{author:r,lineage:d,...T("via",o)});if(l.ops.length===0)return;let f=[...new Set(l.ops.flatMap(p=>p.described??[]))],c=l.ops.filter(p=>p.mutation!==null&&p.author===r);return{id:this.nextId(),seq:this.log.length,batch:t,author:r,intent:l.ops.map(p=>p.intent).join("; "),...T("batchIntent",s),mutation:null,primitives:[],reads:[],writes:[],...f.length>0?{described:f}:{},at:this.now(),...T("via",o),lineage:d,suggests:i,...T("suggestsSaid",i.length>1&&c.length===i.length?c.map(p=>p.intent):void 0)}}permitsProposal(e,t){let r=i=>({ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:i}});if(mt(t))return r("Sign in to propose a change.");let o=Array.isArray(e.args.calls)?e.args.calls:[];for(let i of o){if(typeof i?.name!="string")continue;let s=this.permits(i,t);if(!(s.ok||this.mayPropose(i,t)))return r(`Not permitted to propose this: ${s.refusal.message.replace(/^Not permitted: /,"")}`)}return{ok:!0}}refusesLinked(e,t,r){let o=Z(r)?this.graph:ke(this,r).graph,i=o.getNode(t);if(!i)return;let s=[...this.mutations.values()];for(let a of Object.keys(e.writesLinked??{})){let u=this.schema.tryDefinition(i.kind)?.edges?.[a]!==void 0?o.out(i.id,a):o.in(i.id,a);for(let l of u){let f=mr(l.kind),c=this.mutations.get(f),p=c?this.permits({name:f,args:{[c.subject?.arg??"id"]:l.id}},r):ve(this.policy,r,f,l.kind,yr(this.schema,s,l.kind),l.id,this.words);if(p.ok)continue;let g=this.words.act?.(e.name)??e.name,h=(this.labels??=new St(this.graph)).labelOf(l.id)??l.id,b=this.words.noun?.(l.kind)??l.kind;return{ok:!1,refusal:{mutation:e.name,kind:i.kind,wouldNeed:p.refusal.wouldNeed,message:`Not permitted: \u201C${g}\u201D would change \u201C${h}\u201D, ${/^[aeiou]/i.test(b)?"an":"a"} ${b} that is not yours to change. ${p.refusal.message}`}}}}}repeatMakes(e,t,r,o){let i=e.derived.act;if(i!=="detach"&&i!=="split")return!1;let s=this.schema.tryDefinition(e.derived.kind);if(!s)return!1;let a=typeof r=="string"?(Z(o)?this.graph:ke(this,o).graph).getNode(r):void 0;return hc(i,t.args,a,fi(s))}madeBy(e,t,r){let o=he(this.log),i=o.creatorOf(r),s=t.args.into;if(!(e.derived?.act==="merge"&&typeof s=="string"&&o.creatorOf(s)!==i))return i}namedIn(e,t=!0){let r=this.mutations.get(e.name);if(!r)return[];let o=r.subject?.arg;return[...t&&o?[e.args[o]]:[],...kt(r.input).flatMap(s=>s.name===o?[]:[e.args[s.name]])].flat().filter(s=>typeof s=="string")}refuse(e,t,r=!this.rehearsing){throw r&&Pc(e,t),new an(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>X(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=Mc){let r=this.modules.disabledKinds;if(r.size===0||!Z(t))return;let o=this.mutations.get(e.name);if(!(!o||!this.namedIn(e).some(i=>r.has(this.graph.getNode(i)?.kind))))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}sighted(e){let t={me:e&&z(e).id,everHeld:o=>he(this.log).kindOf(o)!==void 0,keeps:(o,i)=>Md(this.policy?.sees,o,i)};if(e===void 0||!cn(this,e))return t;let r=xt(this,e);return{...t,seen:ke(this,e).graph,keepUnchanged:o=>C(o,r),seesInFull:Ld(this,e)}}collaborative(e,t){return ae.collaborative?.(this.schema,this.graph.getNode(e)?.kind,t)??!1}asSplices(e,t){return ae.asSplices?ae.asSplices(this,e,t):e}missingFor(e,t=Ve){e=this.spelledCall(e);let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=ke(this,t).graph;for(let s of o)if(!i.has(s))return new q(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Ve){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&Do(i).some(s=>ve(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e,t){return ke(this,e,t)}sees(e,t){return this.graph.has(t)&&xt(this,e)(t)}labels;resolveRef(e,t,r=Ve){let o=(this.policy?.sees?.length??0)>0,i=c=>!o||this.sees(r,c),s=this.graph.getNode(t);if(this.labels??=new St(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=c=>{let p=c.filter(g=>!this.graph.isArchived(g));return p.length?p:c},u=d(a.exact.filter(i)),l=u.length>0,f=(l?u:d(a.prefix.filter(i))).map(c=>({id:c,kind:this.graph.getNode(c).kind,label:this.labels.labelOf(c)??c})).sort((c,p)=>c.label<p.label?-1:c.label>p.label?1:c.id<p.id?-1:1);return f.length===1?{ok:!0,id:f[0].id,label:f[0].label,by:l?"label":"prefix"}:Qd(this.schema,e,t,f)}kindsKeptFrom(e=Ve){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!Z(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=Ce(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&be(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!vt(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=Ve){let t=this.allMutations(),r=jo(this.policy,e,t.filter(s=>!s.derived&&s!==this.publisher)),o=this.publisher&&Y.verdict(this,e).ok?[this.publisher]:[],i=t.filter(s=>s.derived!==void 0&&ve(this.policy,e,s.name,s.derived.kind,this.viaOf(s),z(e).id).ok);return[...r,...o,...i]}subjectKindOf(e,t=Mc){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!Z(t)&&!ke(this,t).graph.has(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===te(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?te(this.timeZone):void 0)}pinned(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}judging(e){let t=this.today(),r=Wa(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e,s=i??o,a=this.timeZone&&t!==void 0&&e===void 0&&!(s&&"today"in s)?{...s,today:t}:i;return{...this.invariantOptions,...a===void 0?{}:{context:a},...t===void 0?{}:{today:t}}}tick(e=new Date){let t=this.pinned();if(t!==void 0)return{day:t,was:t,appeared:[],cleared:[]};let r=Ri(e,this.timeZone),o=te(this.timeZone);this.ticked&&(this.ticked={day:this.ticked.day,on:o});let i=this.today(),s=this.violations();this.ticked={day:r,on:o};let a=this.moved(s,this.violations());if(r!==i&&!this.rehearsing&&this.quiet===0)for(let d of this.listeners)d(lt,[]);return{day:r,...i===void 0?{}:{was:i},appeared:a.introduces,cleared:a.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e(lt,[])}violations(e,t=this.graph){return Mn(t,this.allInvariants(),this.judging(e)).map(r=>this.asking(r))}required=new Map;asking(e){if(!e.repairs.some(o=>o.missing===void 0))return e;let t=!1,r=e.repairs.map(o=>{if(o.missing!==void 0)return o;let i=this.requiredOf(o.mutation).filter(s=>o.args?.[s]===void 0);return i.length===0?o:(t=!0,{...o,missing:i})});return t?{...e,repairs:r}:e}requiredOf(e){let t=this.required.get(e);if(t)return t;let r=this.mutations.get(e)?.input?.shape??{},o=Object.entries(r).filter(([,i])=>typeof i?.safeParse=="function"&&!i.safeParse(void 0).success).map(([i])=>i);return this.required.set(e,o),o}wouldChange(e,t){try{return Fn(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){e=this.spelledCall(e);let o=this.mutation(e.name),i=Fn(this.graph,o,e.args,this.sighted(r.author)),s=this.asSplices(i.primitives),a=[];if(jn(this.schema)){let d=H.from(this.schema,this.graph.snapshot());d.applyPrimitives(s),a=fr(this.schema,d,s,{mayWriteBack:this.writesBack(r.author??this.by)})}return this.previewPrimitives([...s,...a],{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;Object.assign(e,{graph:H.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:In.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Ai}:${++t}`,mintBatch:()=>Ai,rehearsing:!0});let r=this.typer&&ae.typeText(e);return Object.assign(e,{typer:r,mutations:r?new Map(this.mutations).set(rr,r):new Map(this.mutations)}),e}wouldKeep(e,t,r){try{return this.rehearsal().applying(e,{author:t,lineage:r}),!0}catch{return!1}}previewPrimitives(e,t){let r=this.violations(t.context),o=H.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=Mn(o,this.allInvariants(),this.judging(t.context));return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){let o=e.map(x=>this.spelledCall(x));this.stillNow();let i=t.batch??this.mintBatch("batch"),s=t.author??this.by,a=ln(t.lineage),d=[],u=[],l=new Set,f=new Set,c=[],p=this.violations(r),g=this.graph.snapshot(),h=this.log.length,b=(x,_=s)=>{let P=this.voter!==void 0&&this.mutations.get(x.name)===this.voter,M=this.policy||this.publisher&&x.name===or||P||this.mutations.get(x.name)===this.proposer?this.permits(x,_):void 0;M&&!M.ok&&!(this.proposing&&this.mayPropose(x,_))&&this.refuse(M.refusal,_.id)},m=(x,_=s)=>{let P=this.refusesAgent(x,_)??this.namesTurnedOff(x,_);P&&this.refuse(P,_.id)},w=o.map(bi);o.forEach((x,_)=>w[_]||b(x)),o.forEach((x,_)=>w[_]||m(x));let $=o.map(x=>({sent:x,as:s,lineage:a,decided:!1}));ar(s)&&this.refuseDeclined(o,s),this.rehearsing||xr(s.id);let O=[],A=[],y=new Map,v=x=>typeof x=="string"?y.get(x)??x:Array.isArray(x)?x.map(v):x;try{for(let x=0;x<$.length;x++){let{sent:_,as:P,lineage:M,decided:ne}=$[x],Kn=x<w.length?w[x]:bi(_),{mintedHint:Ne,...gn}=_,Bn=y.size?{...gn,args:Object.fromEntries(Object.entries(gn.args).map(([j,Se])=>[j,v(Se)]))}:gn,re=Kn?kc(Bn,O,x):Bn;(Kn||ne)&&(b(re,P),m(re,P));let V=this.mutation(re.name);if(V===this.publisher){let j=Y.op(this,{id:this.nextId(),at:this.now()},re,i,P,t);d.push(j),c.push(j.intent);continue}if(V===this.voter){if(!sr.op)throw new N("Load @graview/core/tidying to vote on a suggestion.");let j=sr.op(this,{id:this.nextId(),at:this.now()},re,i,P,t);this.log.append(j),d.push(j),c.push(j.intent);let Se=sr.accepting?.(this,j);if(Se&&this.wouldKeep(Se.calls,Se.author,Se.lineage))for(let pl of Se.calls)$.push({sent:pl,as:Se.author,lineage:ln(Se.lineage),decided:!0});continue}if(V===this.proposer){let j=this.proposal(re,i,P,t.via);if(!j)continue;this.log.append(j),d.push(j),c.push(j.intent);continue}let mn=this.missingFor(re,P);if(mn)throw mn;let G;try{G=Fn(this.graph,V,re.args,{...this.sighted(P),hint:Ne})}catch(j){throw j instanceof we&&!this.rehearsing&&xi(j,P.id),j}if(Ne!==void 0&&G.firstMinted!==void 0&&G.firstMinted!==Ne&&y.set(Ne,G.firstMinted),ar(P)){let j=Ad(this.schema,this.graph,G.primitives,this.authorName(P),{declaration:!this.suggesting&&!ne});j&&this.refuse({mutation:re.name,message:j,wouldNeed:[]},P.id)}if(G.primitives.length===0)continue;A[x]=G.firstMinted;let ze=this.asSplices(G.primitives,t.base).map(Je);this.graph.applyPrimitives(ze);let qe=jn(this.schema)?fr(this.schema,this.graph,ze,{mayWriteBack:this.writesBack(P)}).map(Je):[];O[x]=G.primitives.find(j=>j.op==="add-node")?.node.id;let yn={id:this.nextId(),seq:this.log.length,batch:i,author:P,intent:V.describe!==void 0?G.intent:t.intent??G.intent,...T("batchIntent",t.intent),mutation:re,primitives:[...ze,...qe],reads:G.reads,writes:qe.length>0?[...new Set([...G.writes,...qe.flatMap(Re)])]:G.writes,...V.describe!==void 0&&G.described&&G.described.length>0?{described:G.described}:{},...T("mergedInto",G.mergedInto),at:this.now(),...T("via",t.via),...T("lineage",M)};this.log.append(yn),d.push(yn),u.push(...yn.primitives);for(let j of yn.reads)l.add(j);for(let j of yn.writes)f.add(j);c.push(yn.intent)}}catch(x){throw this.putBack(g,h),x}let R=Le(g,this.graph.snapshot(),u);this.admitted(t,d,u,R,g,h);let S=this.violations(r);return this.notify(R,d),{batch:i,ops:d,...A.length>0?{minted:A}:{},diff:R,primitives:u,reads:[...l],writes:[...f],intent:t.intent??c.join("; "),...this.moved(p,S),violationsAfter:S}}receive(e,t={}){this.stillNow();let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(u){throw this.graph.load(i),new Zn(d,u)}let a=this.log.length;for(let[d,u]of o.entries()){let l=Un({...u,seq:a+d});this.log.append(l),s.push(l)}return this.countPast(s),this.notify(Le(i,this.graph.snapshot(),o.flatMap(d=>d.primitives)),s),s}append(e,t={}){if(this.stillNow(),e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let u=a.primitives.map(Je),l={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...T("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:u,reads:a.reads??[],writes:a.writes??[...new Set(u.flatMap(Re))],at:a.at??this.now(),...T("undoes",a.undoes),...T("via",a.via),...T("lineage",ln(a.lineage)),...T("described",a.described),...T("sentOut",a.sentOut)};if(r.has(l.id))throw new N(`Op "${l.id}" (${l.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(l.id),l}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new Zn(a,d)}for(let a of i)this.log.append(a);this.countPast(i);for(let a of i)xr(a.author.id);return this.notify(Le(s,this.graph.snapshot(),i.flatMap(a=>a.primitives)),i),i}applyPrimitives(e,t={}){this.stillNow();let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=ln(t.lineage),u=this.asSplices(e,t.base).map(Je);this.graph.applyPrimitives(u);let l=u;try{jn(this.schema)&&(l=[...u,...fr(this.schema,this.graph,u,{mayWriteBack:this.writesBack(o)}).map(Je)])}catch(g){throw this.putBack(s,this.log.length),g}let f=[];if(l.length>0){let g={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:l,reads:[],writes:[...new Set(l.flatMap(Re))],at:this.now(),...T("via",t.via),...T("lineage",d)};this.log.append(g),f.push(g),xr(o.id)}let c=this.violations(),p=Le(s,this.graph.snapshot(),l);return this.notify(p,f),{batch:r,ops:f,diff:p,primitives:l,reads:[],writes:f[0]?.writes??[],intent:a,...this.moved(i,c),violationsAfter:c}}findings(){return Oc({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return ht(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=yd(r.ops,this.log.all()),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(Nc),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){this.stillNow();let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!Z(o);if(i){let b=ht(Qo(zn(this.log.all(),ur(this,o)),()=>this.log.epochs()),r);if(!b.ok)throw new sn(b)}let s=this.canUndo(r);if(!s.ok)throw new sn(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo"),d=ln(t.lineage),u=this.undoRefusal(s.ops,o);u&&this.refuse(u,o.id,!0);let l=this.graph.snapshot(),f=this.violations(),c=[],p=this.log.length;for(let{op:b,primitives:m}of Vo(this.log.all(),s.ops)){let w={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${b.intent}`,...T("batchIntent",t.intent),mutation:null,primitives:m,reads:b.reads,writes:b.writes,at:this.now(),undoes:b.id,...T("via",t.via),...T("lineage",d),...T("undoneLineage",b.lineage)};this.graph.applyPrimitives(w.primitives,{restoring:Nc(b)}),this.log.append(w),c.push(w)}let g=Le(l,this.graph.snapshot(),c.flatMap(b=>[...b.primitives]));this.admitted(t,c,c.flatMap(b=>[...b.primitives]),g,l,p);let h=this.violations();return this.notify(g,c),{batch:a,ops:c,diff:g,primitives:c.flatMap(b=>[...b.primitives]),reads:[...new Set(c.flatMap(b=>[...b.reads]))],writes:[...new Set(c.flatMap(b=>[...b.writes]))],intent:t.intent??c.map(b=>b.intent).join("; "),...this.moved(f,h),violationsAfter:h}}mayUndo(e,t=this.by){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=this.undoRefusal(r.ops,t);return o?{ok:!1,refusal:o}:{ok:!0}}undoRefusal(e,t){if(this.policy||this.publisher)for(let r of e){let o=this.rootOf(r),i=z(o.author).id;if(o.vote!==void 0){if(o.vote.advisory&&!Z(t)&&ir(t)!==o.vote.voter&&!(this.policy&&this.grantsEveryAct(t)))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": only whoever voted takes their vote back.`};if(this.policy&&!Z(t)&&i!==z(t).id&&!this.grantsEveryAct(t))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": only whoever voted takes their vote back.`};continue}if(!o.mutation){if(o.primitives.length===0)continue;if(this.policy&&!Z(t)&&i!==z(t).id&&!this.grantsEveryAct(t))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": no act made it, so only whoever did may take it back.`};continue}let s=d=>JSON.stringify(d).includes(JSON.stringify(i)),a=i!==void 0&&i!==z(t).id&&!Z(t)&&!s(o.mutation.args)&&s(o.primitives)?{ok:!1,refusal:{mutation:o.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(o.mutation,t);if(!a.ok)return{...a.refusal,message:`Not permitted to undo "${r.intent}": ${a.refusal.message}`}}}rootOf(e){let t=e;for(let r=t.undoes===void 0?void 0:this.log.get(t.undoes);r!==void 0;r=t.undoes===void 0?void 0:this.log.get(t.undoes))t=r;return t}grantsEveryAct(e){let t=z(e);return(this.policy?.grants??[]).some(r=>be(r,t)&&r.mutations==="*"&&(r.kinds===void 0||r.kinds==="*")&&!r.self&&!r.ownEnd)}authorName(e){return dt(e,{graph:this.graph,schema:this.schema})}actMeanings(){return{act:e=>this.mutations.get(this.spelled(e)),has:e=>this.graph.has(e)}}refuseDeclined(e,t){let r=dr.declined?.(this.log.all(),e,this.actMeanings(),this.log.horizonEpoch()?.declines);r&&this.refuse({mutation:e[0].name,message:`${this.authorName(t)} may not make this again: a person declined it on ${r.at.slice(0,10)}.`,wouldNeed:[]},t.id)}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&nd(e)))for(let r of this.listeners)r(e,t)}rebase(e){this.stillNow();let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(h=>t.has(h.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(h=>!t.has(h.batch));if(a)throw new N(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new N(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let u=this.graph.snapshot(),l=[],f=[],c=[];this.quiet++;try{for(let w of[...i].reverse())this.graph.applyPrimitives(Ye(w),{restoring:!0,inPlace:!0});this.log.truncate(s);let h=new Set(this.log.all().map(w=>w.id));for(let w of e.confirmed){if(h.has(w.id))continue;try{this.graph.applyPrimitives(w.primitives,{restoring:w.undoes!==void 0})}catch(k){throw new Zn(w,k)}let $=Un({...w,seq:this.log.length});this.log.append($),h.add(w.id),l.push($)}this.countPast(l);let b=ae.carried?.(i,l,e.pending),m=zc(i);for(let w of e.pending){let $=i.filter(k=>k.batch===w);if($.length!==0)try{f.push(...this.replay(w,$,b?.get(w),m))}catch(k){c.push({batch:w,error:k})}}}catch(h){this.log.truncate(s);for(let b of i)this.log.append(b);throw this.graph.load(u),h}finally{this.quiet--}let p=Fe(u,this.graph.snapshot()),g=[...l,...f];return this.notify(p,g),{diff:p,confirmed:l,pending:f,refused:c}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(p=>!t.has(p)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(p=>p.id)),d=new Map(r.map(p=>[p,o.filter(g=>g.batch===p)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,T("horizon",e.horizon));else{let p=e.horizon??0;this.log.replace([],e.epochs??[{seq:p,base:e.snapshot}],{horizon:p})}let u=[],l=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let p of r){let g=d.get(p)??[];if(g.length!==0)try{u.push(...this.replay(p,g,void 0,zc(o)))}catch(h){l.push({batch:p,error:h})}}}catch(p){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,p}finally{this.quiet--}let f=this.log.all().filter(p=>!a.has(p.id)&&!u.includes(p)),c=Fe(i,this.graph.snapshot());return this.notify(c,[...f,...u]),{diff:c,adopted:f,pending:u,refused:l}}replay(e,t,r,o=new Map){let i=t[0],s={author:i.author,batch:e,...T("intent",i.batchIntent),...T("via",i.via),...T("lineage",i.lineage)};if(i.undoes!==void 0){let a=t.map(u=>this.log.get(u.undoes??"")?.batch??o.get(u.undoes??"")),d=t.find((u,l)=>a[l]===void 0||!this.log.all().some(f=>f.batch===a[l]));if(d)throw new N(`What "${d.intent}" took back is no longer in the log`);return this.undoing([...new Set(a)],s).ops}return r?this.applying(r,s).ops:t.every(a=>a.mutation!==null)?this.applying(t.map(a=>a.mutation),s).ops:this.append(t.map(({seq:a,...d})=>d))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return nc(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let l=this.log.length-(e.keepOps??1e3),c=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,p=t.find(h=>Date.parse(h.at)>c),g=p?p.seq:this.log.length;r=Math.min(l,g)}let o=Lo(this.publishing)&&this.publishedSeq===void 0?[0]:[],i=[...e.pins??[],...o].filter(l=>Number.isInteger(l));i.length>0&&(r=Math.min(r,...i));let s=e.format??fe.snapshot;if(!Number.isInteger(s)||s<1||s>fe.snapshot)throw new RangeError(`Cannot write a checkpoint in snapshot format ${String(s)}: this build writes formats 1 to ${fe.snapshot}.`);let a=l=>{let f=Math.min(Math.max(l,this.log.horizon),this.log.length);for(;f>this.log.horizon&&f<this.log.length&&t[f-this.log.horizon].batch===t[f-1-this.log.horizon].batch;)f--;return f};if(r=a(r),r<=this.log.horizon)return;let d=this.verify();if(!d.ok)throw new N(`Cannot compact a store that does not verify: ${d.reason}`);let u=this.checkpointWithPublished(r);for(;$i(u).formats.snapshot>s;){if(r=a(Math.min(...u.published.map(l=>l.seq))),r<=this.log.horizon)return;u=this.checkpointWithPublished(r)}return u}checkpointWithPublished(e){let t=this.log.horizonEpoch()?.published??[],r=(Y.behind?.(this,e)??[]).flatMap(o=>o>=this.log.horizon?[this.epochAt(o)]:t.filter(i=>i.seq===o));return{...this.epochAt(e),...r.length>0&&{published:r}}}epochAt(e){let t=this.log.all(),{creators:r,removed:o,writers:i,published:s,declines:a,...d}=this.log.checkpointAt(this.schema,e,{validate:this.validate}),u=new Set(d.base.nodes.map(m=>m.id)),{creators:l,removed:f}=zd(this.log,e,m=>u.has(m)),c=he(this.log),p=Ed(this.log,e,d.base.nodes,m=>C(m,w=>!u.has(w)&&c.kindOf(w)===void 0)),g=m=>m&&Object.keys(m).length>0,h=this.log.horizonEpoch()?.declines,b=dr.kept?dr.kept(t,this.actMeanings(),h):h;return{...d,...g(l)&&{creators:l},...f&&{removed:f},...g(p)&&{writers:p},...g(b)&&{declines:b},...T("enabledModules",t.slice(0,e-this.log.horizon).reverse().find(m=>m.enabledModules)?.enabledModules??this.log.horizonEpoch()?.enabledModules),...T("publishedThrough",Y.seq?.(this,e))}}compact(e){return this.stillNow(),this.log.compact(e)}};var Ep=n=>`lens:${n}`,Mp={hidden:[],removed:[],may:{views:!1,lenses:!1}};function Np(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var Dc=["full","summary","glyph"],Pt="view:",Ei=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),zp=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>Ei(r,e))),Ip=n=>n.filter(e=>!e.hidden);function Ee(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function Et(n,e){return`/${Ee(n.tryDefinition(e)?.plural??`${e}s`)}`}function Tp(n,e,t){return`${Et(n,e)}/${encodeURIComponent(t)}`}function jp(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function Fc(n,e){return e.some(t=>t.as===n.as&&!Ei(n,t))}function Dp(n,e,t){return Fc(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var un=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function Pi(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function Fp(n){let e=new Map,t=[],r=[],o,i=[],s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a,d){return a!==void 0&&i.push({view:a,...d?.name!==void 0?{name:d.name}:{}}),s},homeView:()=>i.at(-1)?.view,homes:()=>i,register(a,d,u,l){let f={...l?.over?.[1]?{over:l.over}:{},...l?.hidden?{hidden:!0}:{},...l?.name?{name:l.name}:{},...l?.declared?{declared:!0}:{}},c={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:u,...l?.title?{title:l.title}:{},...l?.across?{across:l.across}:{},...l?.beside?{beside:!0}:{},...f};if(r.push(c),!l?.beside&&!f.hidden&&e.set(un(a,d),c),l?.title){let p=Ee(l.title);e.set(un(a,d,p),c),d.cardinality==="many"&&!t.some(g=>g.kind===a&&g.as===p)&&t.push({kind:a,title:l.title,as:p,...l.across?{across:l.across}:{},...f,...l.lens?{lens:l.lens}:{},...l.reads?.length?{reads:l.reads}:{}})}return s},places:()=>t,forget(a,d){for(let l of Dc)e.delete(un(a,{cardinality:"many",fidelity:l},d));let u=t.findIndex(l=>l.kind===a&&l.as===d);return u>=0&&t.splice(u,1),s},lookup(a,d){return e.get(un(a,d))?.view},resolve(a,d,u){if(u)for(let l of Pi(d.fidelity)){let f=e.get(un(a,{cardinality:d.cardinality,fidelity:l},u));if(f)return f}for(let l of Pi(d.fidelity)){let f=e.get(un(a,{cardinality:d.cardinality,fidelity:l}));if(f)return f}if(d.cardinality==="one")for(let l of Pi(d.fidelity)){let f=e.get(un(a,{cardinality:"many",fidelity:l}));if(f)return f}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var Lp=["day","week","month","year","decade"];function Lc(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=Ao(n.archived);if(t&&(e.archived=t),n.sort){let[r,o]=n.sort.split(":");r&&(e.sort={by:r,direction:o==="desc"?"desc":"asc"})}if(n.filter){let r=[];for(let o of n.filter.split(",")){let i=o.indexOf(":");i<=0||r.push({key:o.slice(0,i),value:o.slice(i+1)})}r.length>0&&(e.filter=r)}if(n.group){let[r,o]=n.group.split(":");r&&(e.group={by:r,...Lp.includes(o)?{bucket:o}:{}})}return e}function Mi(n){if(typeof n=="string"&&n.length>0)return{by:n,direction:"asc"};if(typeof n!="object"||n===null)return;let{by:e,direction:t}=n;if(!(typeof e!="string"||e.length===0))return{by:e,direction:t==="desc"?"desc":"asc"}}function $r(n,e,t){let r=Mi(n);if(!r)return'an order is a field, like "released", or { "by": "released", "direction": "asc" | "desc" }';let o=typeof n=="object"&&n!==null?n.direction:void 0;if(o!==void 0&&o!=="asc"&&o!=="desc")return`an order runs "asc" or "desc", not "${String(o)}"`;if(r.by!=="label"&&!e.includes(r.by))return`${t} has no field "${r.by}" to order by (it has ${e.length>0?e.map(i=>`"${i}"`).join(", "):"none"}, and "label", its name)`}function Cp(n,e,t){let r=Mi(e);if(!r)return n;let o=r.direction==="desc"?-1:1;return n.map((i,s)=>({item:i,at:s,value:t(i,r.by)})).sort((i,s)=>{let a=(i.value===void 0||i.value===null||i.value===""?1:0)-(s.value===void 0||s.value===null||s.value===""?1:0);if(a!==0)return a;if(i.value===s.value||i.value===void 0||i.value===null)return i.at-s.at;let d=typeof i.value=="number"&&typeof s.value=="number"?i.value-s.value:String(i.value).localeCompare(String(s.value),void 0,{numeric:!0});return d===0?i.at-s.at:d*o}).map(i=>i.item)}var Mt={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging","search","filters"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort","search","filters"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:["sort","search","filters","move","collapsed","cap","hidden"]}},Zp=["start","end"],Gp=20,Gc=Object.keys(Mt),Vp=(n,e,t,r=Mt[n].options)=>({message:`The ${n} lens takes no option "${e}", so "${t}" ignores it.`,fix:r.length?`Use one of: ${r.join(", ")}.`:`The ${n} lens takes no options; drop it.`}),Vc=n=>Object.hasOwn(Mt,n);function Ni(n,e,t){let r=n[e],o=Array.isArray(r)?r.filter(i=>typeof i=="string"&&t(i)):[];o.length>0?n[e]=o:delete n[e]}var Gn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function Kp(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=L(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=L(o.innerType);return o?.type==="number"}var Cc=(n,e="start",t="end")=>`A timeline lays out spans by number \u2014 minutes of a day, 0 to 1440 \u2014 across columns: "bindings": { "${n}": { "start": "<a number field>", "end": "<a number field>", "column": "<a choice field, like a weekday>" } }, or "options": { "columns": ["mon", "tue", \u2026] }. For spans of dates, draw a calendar: "lens": "calendar", "bindings": { "${n}": { "start": "${e}", "end": "${t}" } }, "options": { "range": "month" }.`;function Zc(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=L(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=L(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Bp(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let u of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(u);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,u)=>{let l=`lenses.${u}`,f=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,c=(y,v)=>{t.push({index:u,name:d.name,...f?{title:f}:{},why:y}),v&&r.push({severity:"warning",...v})};if(!Vc(d.name)){f?c(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${l}.name`,message:`"${f}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${Gc.join(", ")} \u2014 or register the view yourself and drop the title.`}):c("it is a lens this app wrote, drawn by the app's own views");return}if(!f)return c("it has no title, so it is bindings the checker holds and no place");let p=Mt[d.name],g=Gn(d.options)?d.options:{};if(d.options!==void 0&&!Gn(d.options))return c("its options are not an object",{code:"lens-options-not-an-object",path:`${l}.options`,message:`"${f}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let y of Object.keys(g))p.options.includes(y)||r.push({severity:"warning",code:"lens-option-unknown",path:`${l}.options.${y}`,...Vp(d.name,y,f,p.options)});let h={};for(let y of p.options)g[y]!==void 0&&(h[y]=g[y]);d.arrangedBy&&(h.arrangedBy=Lc(d.arrangedBy));let b=Gn(d.bindings)?d.bindings:{},m=[],w,$=(y,v,R)=>c(v,{code:"lens-cannot-draw",path:y,message:`"${f}" cannot draw: ${v}.`,fix:R});if(p.binds==="fields"){let y=Object.keys(b).filter(R=>Gn(b[R])),v=y.filter(R=>!o.has(R));if(y.length===0)return $(`${l}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${p.requiredRoles.map(R=>`"${R}": "<field>"`).join(", ")} } }.`);if(v.length>0)return;if(h.bindings=b,m=y,d.name==="timeline"){for(let S of y){let x=b[S];for(let _ of Zp){let P=x[_];if(!(typeof P!="string"||!s(S).includes(P))&&!Kp(n.schema,S,P))return $(`${l}.bindings.${S}.${_}`,`its ${_} "${P}" is not a number, and a timeline's axis is`,Cc(S,String(x.start??"start"),String(x.end??"end")))}}let R=g.columns;if(Array.isArray(R))h.columns=R.map(S=>typeof S=="string"?{id:S,label:S}:S);else{let S=y.flatMap(_=>{let P=b[_],M=typeof P.column=="string"?P.column:typeof P.columns=="string"?P.columns:void 0;return M?Zc(n.schema,_,M):[]}),x=[...new Set(S)];if(x.length===0)return $(`${l}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",Cc(y[0]));h.columns=x.map(_=>({id:_,label:_.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let S=y.map(x=>$r(h.sort,s(x),x)).find(Boolean);S&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.sort`,message:`"${f}" cannot order its cards: ${S}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}let R=new Set;for(let S of y){let x=b[S].column;if(typeof x!="string"||!s(S).includes(x))return;let _=Zc(n.schema,S,x);if(_.length===0)return $(`${l}.bindings.${S}.column`,`its column field "${x}" is not a choice`,`Bind "column" to a choice field of ${S}, like a status.`);for(let P of _)R.add(P)}typeof h.move!="boolean"&&delete h.move,Number.isInteger(h.cap)&&h.cap>=1&&h.cap<=500||delete h.cap;for(let S of["collapsed","hidden"])Ni(h,S,x=>R.has(x))}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return $(`${l}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&h.horizon!==void 0){let R=h.horizon,S=P=>P===void 0||Number.isInteger(P)&&P>=1&&P<=9999,x=typeof R=="number"?{years:R,title:"Years"}:R;Gn(x)&&Number.isInteger(x.years)&&x.years>=1&&x.years<=200&&typeof x.title=="string"&&x.title.trim().length>0&&S(x.from)&&S(x.to)&&Object.keys(x).every(P=>["years","title","from","to"].includes(P))&&!(typeof x.from=="number"&&typeof x.to=="number"&&x.to<x.from)?h.horizon=x:(delete h.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${l}.options.horizon`,message:`"${f}" has a horizon that is not a span of years, so it offers no span of years.`,fix:'Write { "years": 30, "title": "The career" } \u2014 "from" and "to" (years, like 1962 and 2023) only to pin its ends, which otherwise reach the first and last of its records.'}))}if(d.name==="calendar"&&h.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(h.range))return $(`${l}.options.range`,`its range "${String(h.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(p.binds==="entities"){let y=S=>{let x=b[S];if(Gn(x)){if(typeof x.kind=="string")return x.kind;if(typeof x.edge=="string")return x.edge;if(Array.isArray(x.path))return{path:x.path};if(typeof x.field=="string")return x.field}};for(let S of p.requiredRoles)if(y(S)===void 0)return;let v=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",R=y(v);if(!o.has(R))return;if(d.name==="coverage"){let S=y("columns");if(!o.has(S))return;let x=y("link");if(typeof x=="string"&&!i.has(x))return;Object.assign(h,{rows:R,columns:S,link:x}),S!==R&&(w=S);for(let[_,P]of[["sort",R],["columnSort",S]]){if(h[_]===void 0)continue;let M=$r(h[_],s(P),P);M&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.${_}`,message:`"${f}" cannot order its ${_==="sort"?"rows":"columns"}: ${M}.`,fix:`Write { "by": "<a field of ${P}>", "direction": "asc" }, or drop it.`}),delete h[_])}}else if(d.name==="board"){Object.assign(h,{slots:R,x:y("x"),y:y("y"),fill:y("fill")});for(let S of["x","y"])if(!s(R).includes(h[S]))return}else{Object.assign(h,{regions:R,outline:y("outline")});for(let S of["markers","at","within","nests","regionKind","markerKind"]){let x=y(S);typeof x=="string"&&(h[S]=x)}}m=[R]}else if(d.name==="blocks"){if(!d.on)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(h.blocks)||h.blocks.length===0)return $(`${l}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let y=["user","person","member"].find(v=>o.has(v));if(!d.on&&!y)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');m=y?[y]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return $(`${l}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(m=[d.on],d.name==="coverage"){let y=[h.rows,h.columns].find(v=>v!==d.on);w=typeof y=="string"?y:void 0}}let k=typeof h.rows=="string"?h.rows:m[0];if(k!==void 0){let y=["label",...s(k)],v=new Set(["is",...y,...Object.keys(n.schema.tryDefinition(k)?.edges??{})]);Ni(h,"search",R=>y.includes(R)),Ni(h,"filters",R=>v.has(R.split(".")[0]))}let O=Ee(f);if(O.length===0)return $(`${l}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let y of m){let v=`${y}|${O}`;if(a.has(v))return c(`another lens on ${y} is already called "${f}"`,{code:"lens-title-taken",path:`${l}.title`,message:`"${f}" is the title of lenses.${a.get(v)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let y of m)a.set(`${y}|${O}`,u);let A=d.create;A!==void 0&&typeof A!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${l}.create`,message:`"${f}" says create ${JSON.stringify(A)}, which is neither true nor false, so its page keeps the forms that begin its kind.`,fix:'Say "create": false to leave them off, or drop it.'}),e.push({index:u,lens:d.name,title:f,as:O,kinds:m,...w?{across:w}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...A===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var Up=6;function Wp(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to==="*"?r:a.to).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function qp(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(Ee));return{kinds:new Set(e.kinds.filter(o=>r.has(Ee(o))||r.has(Et(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(Ee(o.title))||o.name!==void 0&&n.primary.includes(Pt+o.name)).map(o=>`${o.kind}|${o.as}`))}}var Hp="home",Kc="overview",Jp=`/places/${Kc}`;function Yp(n){let e=n?.scene?.trim();return e||"Scene"}function Xp(n){let e=n?.pages?.trim();return e||"Pages"}function Qp(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function Bc(n){return n.startsWith(Pt)&&n.slice(Pt.length).trim()||void 0}function eh(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=Bc(i),a=s===void 0?void 0:t.find(d=>d.name===s&&n.includes(d.kind));a?r.some(d=>d.view===a)||r.push({kind:a.kind,view:a}):s===void 0&&n.includes(i)&&!o.has(i)&&(o.add(i),r.push({kind:i}))}for(let i of n)o.has(i)||r.push({kind:i});return r}function nh(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=Ee(r),i=t.find(d=>d.title===r||Pt+d.name===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>Et(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function zi(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function th(n,e={}){let t=typeof n=="string"?n:n.address,r=zi(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function rh(n,e){let t=zi(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var Ar=2500,oh=Ar*4;function ih(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function Ii(n,e,t=Ar){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}var d0=new Set(Yt);function sh(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function ah(n,e,t,r=Ar,o){let i=new Map;for(let[s,a]of n)Ii(a,t,r)&&i.set(s,a);for(let s of e){if(!Ii(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function dh(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)&&JSON.stringify(n.caret)===JSON.stringify(e.caret)}var Uc=Symbol.for("@graview/core:app-link"),ch=n=>(Object.defineProperty(L(n),Uc,{value:1,enumerable:!0}),n);function Wc(n){let e=L(n);return!!e&&(e[Uc]===1||Wc(e.innerType))}var f0=()=>ch(F().check(bo(500),nt(Wt,"another app's address")));var Or=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function lh(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=Or(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(u=>uh(u)?u:null,()=>null).then(u=>(r.get(a)===d&&(o.set(a,u),t(s)),u)),r.set(a,d)),d};return{read(s){let a=Or(s,e);if(o.has(a)){let d=o.get(a);return d===null?{unread:!0}:"denied"in d?{denied:!0}:{record:d}}return i(s),{unread:!0}},ask:i,answered:s=>o.get(Or(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=Or(s,e);r.delete(a),o.delete(a)}}}function uh(n){if(n===null)return!0;if(typeof n!="object"||n===void 0)return!1;if(n.denied===!0)return!0;let e=n;return typeof e.label=="string"&&typeof e.id=="string"&&typeof e.kind=="string"&&typeof e.fields=="object"&&e.fields!==null}var fh=1;var _r=(n,e)=>`${n}\0${e}`;function ji(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):n.op==="splice-text"?[[n.id,n.field]]:[]}var Ti=class n{revs=new Map;floor;constructor(e=0){this.floor=Math.max(0,Math.floor(e))-1}static of(e,t={}){let r=new n(t.horizon);return r.note(e),r}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of ji(r)){let s=_r(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(_r(e,t))??this.floor}baseFor(e,t=new Set,r){let o=new Set,i=new Map;for(let s of e)for(let a of s.primitives)if(a.op==="add-node"&&o.add(a.node.id),!(a.op!=="patch-node"||o.has(a.id)||t.has(a.id)))for(let d of Object.keys(a.after)){let u=_r(a.id,d);t.has(u)||i.has(u)||r?.(a.id,d)||i.set(u,{node:a.id,field:d,rev:this.of(a.id,d)})}return[...i.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)>t.rev)}};function ph(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of ji(r))e.add(_r(o,i))}return e}var b0=Symbol.for("@graview/core:collaborative"),v0=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0;var hh=/^#([0-9a-f]{3,8})$/i,gh=/(rgba?|hsla?)\(([^)]+)\)/gi;function mh(n){let e=hh.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function yh(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,u,l,f]=r;return d===void 0||u===void 0||l===void 0?null:{r:d,g:u,b:l,a:f??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...qc(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function fn(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function Me(n,e,t){return{...qc(n,e,t),a:1}}function qc(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],u=t-r/2;return{r:Math.round((s+u)*255),g:Math.round((a+u)*255),b:Math.round((d+u)*255)}}function J(n){let e=[];for(let t of n.matchAll(gh)){let r=yh(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=mh(t[0]);r&&e.push(r)}return e}function Ke(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function Di(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function Fi(n){return .2126*Di(n.r)+.7152*Di(n.g)+.0722*Di(n.b)}function ge(n,e){let[t,r]=[Fi(n),Fi(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}function Pr(n){return ge({r:255,g:255,b:255,a:1},n)>ge({r:0,g:0,b:0,a:1},n)}var Er=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,Hc={r:0,g:0,b:0,a:1},Mr={r:255,g:255,b:255,a:1};function Nr(n){let e=J(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=fn(e);for(let s of["dark","light"]){let a=n.base[s],d=J(a.ground)[0]??(s==="dark"?Hc:Mr),u=Ke(J(a.panel)[0]??Mr,d),l=kh(i,[u,d],s,4.5);l?Math.abs(l.l-i.l)>wh&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(l.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let f=l??i,c=Me(f.h,f.s,f.l),p=n.accentInk?.[s]??(ge(Mr,c)>=ge(Hc,c)?"#ffffff":"#000000"),g=ge(J(p)[0]??Mr,c);g+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${g.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:Er(c,1),accentDim:Er(c,s==="dark"?.35:.22),accentInk:p,glow:Er(c,s==="dark"?.28:.1),edgeBright:Er(c,Li(c,u,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=J(t[s].warn)[0];h&&vh(fn(h).h,f.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function Li(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(ge(Ke({...n,a:i},e),e)>=r)return i}return 1}function vh(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var wh=.3;function kh(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(u=>ge(Me(n.h,n.s,d),u)>=r))return{...n,l:d}}return null}function xh(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var pn=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),Ci="Montserrat",Zi=Object.freeze({display:550,body:450,label:600}),Gi=Object.freeze({display:600,body:400,label:600}),Sh="-0.025em",Rh=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var Jc={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:pn.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},Yc={ground:pn.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:pn.ink,inkMuted:pn.muted,inkFaint:"#626b7d",accent:pn.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},Be={dark:Jc,light:Yc};var Ue=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),hn=Object.freeze({body:`"${Ci}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function $h(n){let e=n?.shape?.radius??Ue.radius,t=n?.shape?.density??Ue.density;return Object.freeze({radius:e,radiusSmall:Math.max(Ue.radiusSmallFloor,Math.round(e*Ue.radiusSmall)),pad:Math.round(Ue.pad*t),padSmall:Math.round(Ue.padSmall*t),gap:Math.round(Ue.gap*t)})}function Ah(n){let e=n?.typography?.body??hn.body,t=n?.typography?.display??e,o=e===hn.body&&t===hn.body?Zi:Gi,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??hn.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var _0=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});var Oh=64*1024;function Qc(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var el="http://www.w3.org/2000/svg",_h=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",el],Ph=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),Eh=new Set(["title","desc"]),Nt="it embeds a page or media",Mh={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:Nt,embed:Nt,object:Nt,audio:Nt,video:Nt,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},Nh={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function zh(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=Nh[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Ih(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function Th(n,e,t){let r=zh(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===el?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return _h.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return Ih(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var Xc=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function nl(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let p=o.indexOf("-->",4);if(p<0)return"it has a comment that never ends";let g=o.slice(4,p);if(/^-?>/.test(g)||g.includes("--")||g.includes("<!")||g.endsWith("-"))return"it has a comment the page and the picture read differently";r+=p+3;continue}if(/^<!DOCTYPE/i.test(o)){let p=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!p||e.length>0||t)return"it declares XML entities";r+=p[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],u=Mh[d.toLowerCase()];if(u)return u;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!Ph.has(d))return`it has a <${d}> element, which a picture does not need`;let l=e[e.length-1];if(l&&Eh.has(l))return`it has an element inside a <${l}>, which the page reads as HTML`;let f=a[0].length;for(let p=Xc.exec(o.slice(f));p;p=Xc.exec(o.slice(f))){let g=Th(d,p[1],p[2]??p[3]??"");if(g)return g;f+=p[0].length}let c=/^\s*(\/?)>/.exec(o.slice(f));if(!c)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(f,f+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;c[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=f+c[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function tl(n){if(n){if(!Qc(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return nl(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var zr;function jh(){if(zr===void 0)try{zr=new RegExp("^\\p{RGI_Emoji}$","v")}catch{zr=null}return zr}function Dh(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function Vi(n){if(typeof n!="string"||n.trim()==="")return"it is empty; give one emoji, like \u{1F3E1}";let e=[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].map(o=>o.segment),t=e.filter(Dh).length;if(t===0)return"it is not an emoji; give one emoji, like \u{1F3E1}";if(e.length>1)return t===e.length?`it is ${e.length} emoji, and a mark is one`:"it has other characters beside the emoji; give the emoji alone";let r=jh();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function Ki(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function rl(n){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text x="50" y="50" dy=".35em" font-size="88" text-anchor="middle">${n}</text></svg>`}function Fh(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=Ki(e);return t!==void 0&&Vi(t)===null?`data:image/svg+xml,${encodeURIComponent(rl(t))}`:void 0}return tl(e)}function Lh(n){let e=n?.logo;return typeof e=="string"?e===""?void 0:{light:e}:e&&typeof e.light=="string"&&e.light!==""?e:void 0}function Ch(n,e){if(e==="dark")return"dark";let t=n?.schemes?.light?.ground,r=t?J(t)[0]:void 0;return r&&Pr(r)?"dark":"light"}function Zh(n){if(n?.logo)return;let e=Ki(n?.favicon);return e!==void 0&&Vi(e)===null?e:void 0}var ol="/graview/assets/";function Gh(n,e){return n&&e!==void 0&&e.startsWith(ol)?n(e):e}var il={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":hn.mono},Vh=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],sl=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var Kh=n=>new Set(n.map(e=>e.toLowerCase()));function Bh(n){return Kh([...Vh,...sl]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function Uh(n){return il[n]??n}function z0(n){if(/url\(|@import|[;{}<>\\]|\/\*|[\u0000-\u001f\u007f]/i.test(n))return"it is not a list of font names; a document names a face, never where one comes from";for(let e of n.split(",")){let t=e.trim();if(!(/^"[^"']*"$/.test(t)||/^'[^"']*'$/.test(t))&&/["']/.test(t))return`${t} is not quoted in one pair; write a face as Georgia or "Times New Roman"`}return null}var al={r:255,g:255,b:255,a:1},Wh={r:0,g:0,b:0,a:1},Vn=n=>`#${[n.r,n.g,n.b].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,We=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,Bi=(n,e,t)=>({r:n.r+(e.r-n.r)*t,g:n.g+(e.g-n.g)*t,b:n.b+(e.b-n.b)*t,a:1});function qh(n){return typeof n=="string"?{light:n}:{...n.light?{light:n.light}:{},...n.dark?{dark:n.dark}:{}}}function Hh(n){let e=J(n)[0];if(!e)return;let{h:t,s:r}=fn(e);return Vn(Me(t,Math.min(r,.45),.08))}function cl(n,e){let t=J(n.edgeBright)[0];return We(t,Li({...t,a:1},e,t.a,3))}function Jh(n,e,t){let{h:r,s:o}=fn(t),i=Bi(t,al,.8);return{...n,ground:e,groundDeep:Vn(Bi(t,Wh,.04)),panel:Vn(i),panelMuted:Vn(Bi(t,al,.55)),edge:We(Me(r,Math.min(o,.5),.14),.14),edgeBright:cl(n,i),bar:We(i,.96),float:Vn(i)}}function dl(n,e,t){let{h:r,s:o,l:i}=fn(t),s=a=>Me(r,o,Math.min(1,i+a));return{...n,ground:e,groundDeep:Vn(Me(r,o,i*.6)),panel:We(s(.07),.96),panelMuted:We(s(.035),.94),edge:We(Me(r,Math.min(o,.45),.75),.18),edgeBright:cl(n,Ke({...s(.07),a:.96},t)),bar:We(t,.96),float:We(s(.05),.98)}}function ll(n){if(n===void 0)return Be;let e=qh(n),t=e.dark??(e.light?Hh(e.light):void 0),r=e.light?J(e.light)[0]:void 0,o=t?J(t)[0]:void 0;return{light:r?Pr(r)?dl(Be.dark,e.light,r):Jh(Be.light,e.light,r):Be.light,dark:o?dl(Be.dark,t,o):Be.dark}}var Yh=[["ink","ink",["ground","panel","panelMuted","panelWarning","float","bar"],4.5],["inkMuted","muted ink",["ground","panel","panelMuted","float","bar"],4.5],["inkFaint","faint ink",["panel","panelMuted","float"],4.5],["accent","the accent",["ground","panel","float"],4.5],["warn","the warning color",["panel","panelWarning","float"],4.5],["good","the good status",["ground","panel"],4.5],["bad","the bad status",["ground","panel"],4.5],["edgeBright","the lit edge",["panel"],3]],Xh={panel:"a card",panelMuted:"a receded card",panelWarning:"a flagged card",float:"a floating sheet",bar:"the bar"};function F0(n,e){for(let t of["light","dark"]){let r={...n[t],...t==="light"&&e?{accent:e}:{}},o=J(r.ground)[0];for(let[i,s,a,d]of Yh)for(let u of a){let l=u==="ground"?[o]:J(String(r[u])).map(f=>Ke(f,o));for(let f of l){let c=Ke(J(String(r[i]))[0],f),p=ge(c,f);if(p<d)return{scheme:t,what:s,text:c,ground:o,...u==="ground"?{}:{card:f,surface:Xh[u]},ratio:p,requires:d}}}}return null}function G0(n,e){let t=ll(e),r=Nr({accent:n,base:t});return r.ok||!r.missing.every(o=>o.startsWith("warn"))?r:Nr({accent:n,base:t,warn:{light:t.light.bad,dark:t.dark.bad}})}function Qh(n,e,t){if(t.rows===0)return;let r=le(n,e.rows).toLowerCase(),o=le(n,e.columns).toLowerCase(),i=e.rows===e.columns,s=i?`link ${r} to each other`:`link ${r} to ${o}`;if(t.columns===0)return`No ${o} yet: ${s}.`;if(t.cells>0||typeof e.link=="object"&&e.link!==null)return;let a=X(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${xn(X(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}var xe={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function eg(n){return n?{connectors:{all:{...xe.connectors.all,...n.connectors?.all??{}},byEdge:{...xe.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...xe.captions,...n.captions??{}},grid:{...xe.grid,...n.grid??{}},lattice:{...xe.lattice,...n.lattice??{}},tags:{...xe.tags,...n.tags??{}},emphasis:{...xe.emphasis,...n.emphasis??{}},marks:{...xe.marks,...n.marks??{}}}:xe}function ng(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function tg(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`