@logixjs/sandbox 0.0.1 → 0.0.2

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 (248) hide show
  1. package/LICENSE +201 -0
  2. package/package.json +3 -1
  3. package/public/sandbox/chunks/chunk-2AUQRESB.js +1114 -0
  4. package/public/sandbox/chunks/chunk-2F72LQKW.js +194 -0
  5. package/public/sandbox/chunks/chunk-2PYDGDD3.js +4071 -0
  6. package/public/sandbox/chunks/chunk-2UGKSXDZ.js +16 -0
  7. package/public/sandbox/chunks/chunk-2XVE7F26.js +153 -0
  8. package/public/sandbox/chunks/chunk-3A7TFNZN.js +219 -0
  9. package/public/sandbox/chunks/chunk-3BHC6JAV.js +1070 -0
  10. package/public/sandbox/chunks/chunk-3U4CAKCX.js +61 -0
  11. package/public/sandbox/chunks/chunk-3VU3JLZO.js +272 -0
  12. package/public/sandbox/chunks/chunk-4CPONKWY.js +1170 -0
  13. package/public/sandbox/chunks/chunk-4GMUQTWH.js +850 -0
  14. package/public/sandbox/chunks/chunk-4KIYG5E4.js +749 -0
  15. package/public/sandbox/chunks/chunk-4MY35XR3.js +175 -0
  16. package/public/sandbox/chunks/chunk-5DNHJMHA.js +69 -0
  17. package/public/sandbox/chunks/chunk-5EC4S7X6.js +42 -0
  18. package/public/sandbox/chunks/chunk-5FB7QFSH.js +227 -0
  19. package/public/sandbox/chunks/chunk-5GEYCJW2.js +206 -0
  20. package/public/sandbox/chunks/chunk-5PT7Q5SS.js +373 -0
  21. package/public/sandbox/chunks/chunk-5WN5IGKA.js +166 -0
  22. package/public/sandbox/chunks/chunk-5XOBKSOT.js +213 -0
  23. package/public/sandbox/chunks/chunk-67RVISUC.js +313 -0
  24. package/public/sandbox/chunks/chunk-6ELJEKZS.js +12 -0
  25. package/public/sandbox/chunks/chunk-6FKWRVP4.js +85 -0
  26. package/public/sandbox/chunks/chunk-6JRP52YT.js +34 -0
  27. package/public/sandbox/chunks/chunk-6JYAC3G6.js +42 -0
  28. package/public/sandbox/chunks/chunk-6TUOP63Q.js +86 -0
  29. package/public/sandbox/chunks/{chunk-A6JFUNQQ.js → chunk-74C5VW7Z.js} +2 -2
  30. package/public/sandbox/chunks/chunk-75DQFC5M.js +16 -0
  31. package/public/sandbox/chunks/{chunk-UCFEP3BH.js → chunk-7GPAF2UK.js} +1 -1
  32. package/public/sandbox/chunks/chunk-7KQFTS2Y.js +135 -0
  33. package/public/sandbox/chunks/chunk-7POKWYE3.js +112 -0
  34. package/public/sandbox/chunks/chunk-7VUEF5F3.js +395 -0
  35. package/public/sandbox/chunks/chunk-7W5APZS2.js +77 -0
  36. package/public/sandbox/chunks/chunk-A6OFCXDQ.js +397 -0
  37. package/public/sandbox/chunks/chunk-A7HLOSO6.js +216 -0
  38. package/public/sandbox/chunks/chunk-AGF4RRCB.js +408 -0
  39. package/public/sandbox/chunks/chunk-ASJSJAAL.js +122 -0
  40. package/public/sandbox/chunks/chunk-ASVMK364.js +283 -0
  41. package/public/sandbox/chunks/chunk-AUDTI2BQ.js +895 -0
  42. package/public/sandbox/chunks/chunk-B2SZTA3M.js +16 -0
  43. package/public/sandbox/chunks/chunk-B6YS2UMV.js +372 -0
  44. package/public/sandbox/chunks/chunk-BCEO3MGD.js +244 -0
  45. package/public/sandbox/chunks/chunk-BCOO65D4.js +373 -0
  46. package/public/sandbox/chunks/chunk-BJOWSSEL.js +38 -0
  47. package/public/sandbox/chunks/chunk-BS2WBFW4.js +373 -0
  48. package/public/sandbox/chunks/chunk-BUVHG3NJ.js +439 -0
  49. package/public/sandbox/chunks/chunk-BVE33AN6.js +42 -0
  50. package/public/sandbox/chunks/chunk-BWTGJZVP.js +19 -0
  51. package/public/sandbox/chunks/chunk-BXD7GZC3.js +1025 -0
  52. package/public/sandbox/chunks/chunk-BZH4EUUD.js +164 -0
  53. package/public/sandbox/chunks/{chunk-HFV5GJPK.js → chunk-C2MYMMO4.js} +3 -3
  54. package/public/sandbox/chunks/chunk-CRE4NJJ6.js +271 -0
  55. package/public/sandbox/chunks/chunk-CVZPRIDB.js +706 -0
  56. package/public/sandbox/chunks/chunk-CWOXD5NG.js +991 -0
  57. package/public/sandbox/chunks/chunk-D6DOC3BJ.js +373 -0
  58. package/public/sandbox/chunks/chunk-DEPSGFSY.js +1698 -0
  59. package/public/sandbox/chunks/chunk-DM7C5NP5.js +819 -0
  60. package/public/sandbox/chunks/chunk-DN33LMOF.js +1112 -0
  61. package/public/sandbox/chunks/{chunk-S46P7MC6.js → chunk-DT7YIIWE.js} +2 -2
  62. package/public/sandbox/chunks/chunk-DVB5WRCI.js +260 -0
  63. package/public/sandbox/chunks/{chunk-TOHCFMQS.js → chunk-E3EVW7NR.js} +11 -18
  64. package/public/sandbox/chunks/chunk-E5BV567Q.js +417 -0
  65. package/public/sandbox/chunks/chunk-E7BIWMQQ.js +203 -0
  66. package/public/sandbox/chunks/chunk-EAKGPSOQ.js +83 -0
  67. package/public/sandbox/chunks/chunk-EGUYL2ER.js +75 -0
  68. package/public/sandbox/chunks/chunk-EP5GQYZ5.js +85 -0
  69. package/public/sandbox/chunks/chunk-ET6CJEHC.js +221 -0
  70. package/public/sandbox/chunks/chunk-EU67YZHZ.js +1070 -0
  71. package/public/sandbox/chunks/{chunk-PTSJJANP.js → chunk-EYNDQLSB.js} +1 -1
  72. package/public/sandbox/chunks/{chunk-CEGSWZ5S.js → chunk-EZTMVCJF.js} +1 -1
  73. package/public/sandbox/chunks/chunk-F5CLVIS6.js +907 -0
  74. package/public/sandbox/chunks/chunk-F743SKYD.js +85 -0
  75. package/public/sandbox/chunks/chunk-FEGFZ5OX.js +86 -0
  76. package/public/sandbox/chunks/chunk-FG5B7ZX3.js +373 -0
  77. package/public/sandbox/chunks/chunk-FKZPYMDG.js +373 -0
  78. package/public/sandbox/chunks/chunk-FNLXHWIU.js +220 -0
  79. package/public/sandbox/chunks/chunk-FQRUTYAD.js +1991 -0
  80. package/public/sandbox/chunks/{chunk-VLYP4WUS.js → chunk-FY5A73NK.js} +5 -5
  81. package/public/sandbox/chunks/chunk-G7FAOG3O.js +221 -0
  82. package/public/sandbox/chunks/chunk-GFXHUC7Y.js +73 -0
  83. package/public/sandbox/chunks/chunk-GIPXUIZQ.js +534 -0
  84. package/public/sandbox/chunks/chunk-GP37MEGJ.js +52 -0
  85. package/public/sandbox/chunks/chunk-GXL5QCMF.js +4511 -0
  86. package/public/sandbox/chunks/chunk-GZ2NSE6A.js +177 -0
  87. package/public/sandbox/chunks/chunk-GZATW4YD.js +69 -0
  88. package/public/sandbox/chunks/chunk-H4EBXROQ.js +166 -0
  89. package/public/sandbox/chunks/chunk-HETCPK6Z.js +153 -0
  90. package/public/sandbox/chunks/chunk-HGUFQ2QC.js +4431 -0
  91. package/public/sandbox/chunks/chunk-HGV3VNH3.js +255 -0
  92. package/public/sandbox/chunks/chunk-HIJ67QWR.js +5397 -0
  93. package/public/sandbox/chunks/chunk-IDHERBKW.js +1114 -0
  94. package/public/sandbox/chunks/chunk-IDTK4FIY.js +102 -0
  95. package/public/sandbox/chunks/chunk-ILFVY7H5.js +164 -0
  96. package/public/sandbox/chunks/chunk-ISGSRYGO.js +57 -0
  97. package/public/sandbox/chunks/chunk-J45VPU24.js +408 -0
  98. package/public/sandbox/chunks/chunk-JAUIM3O5.js +42 -0
  99. package/public/sandbox/chunks/chunk-JB7OQEM6.js +373 -0
  100. package/public/sandbox/chunks/chunk-JCKW6NHD.js +15 -0
  101. package/public/sandbox/chunks/chunk-JMA7GY7Z.js +221 -0
  102. package/public/sandbox/chunks/chunk-JY46J6IL.js +836 -0
  103. package/public/sandbox/chunks/{chunk-X72PZOFA.js → chunk-K2MQ66O7.js} +1 -1
  104. package/public/sandbox/chunks/chunk-KA7PZA6F.js +464 -0
  105. package/public/sandbox/chunks/chunk-KDEQTUID.js +102 -0
  106. package/public/sandbox/chunks/chunk-KDJR27JV.js +1696 -0
  107. package/public/sandbox/chunks/chunk-KFE3JO6N.js +77 -0
  108. package/public/sandbox/chunks/chunk-KLDSYWT5.js +536 -0
  109. package/public/sandbox/chunks/chunk-KQWWFYBF.js +203 -0
  110. package/public/sandbox/chunks/chunk-KTFZSXOW.js +6473 -0
  111. package/public/sandbox/chunks/chunk-KXVIC55U.js +108 -0
  112. package/public/sandbox/chunks/{chunk-HNEDTEGQ.js → chunk-L4PNO2H6.js} +1 -1
  113. package/public/sandbox/chunks/{chunk-WE4STGO2.js → chunk-L4ZNW5DI.js} +2 -2
  114. package/public/sandbox/chunks/chunk-LBUINGZ4.js +836 -0
  115. package/public/sandbox/chunks/chunk-LIYPPU6I.js +112 -0
  116. package/public/sandbox/chunks/chunk-LJHTOJXW.js +221 -0
  117. package/public/sandbox/chunks/{chunk-BWSNPKO5.js → chunk-LQL23SWJ.js} +2 -2
  118. package/public/sandbox/chunks/chunk-LTFCYZQ6.js +46 -0
  119. package/public/sandbox/chunks/chunk-LTWLVCKQ.js +166 -0
  120. package/public/sandbox/chunks/chunk-LWI7BXFN.js +395 -0
  121. package/public/sandbox/chunks/chunk-LYBBX6WM.js +225 -0
  122. package/public/sandbox/chunks/chunk-MXE7HIBM.js +474 -0
  123. package/public/sandbox/chunks/chunk-MYBDYNK4.js +6004 -0
  124. package/public/sandbox/chunks/chunk-NC2MIWZX.js +732 -0
  125. package/public/sandbox/chunks/chunk-NE447XAF.js +597 -0
  126. package/public/sandbox/chunks/chunk-NEAYV5C2.js +255 -0
  127. package/public/sandbox/chunks/chunk-NMGFJZ4I.js +26 -0
  128. package/public/sandbox/chunks/chunk-NWCJJZNQ.js +71 -0
  129. package/public/sandbox/chunks/chunk-O57OZBDR.js +214 -0
  130. package/public/sandbox/chunks/chunk-OJJT664Q.js +731 -0
  131. package/public/sandbox/chunks/chunk-OKTBUTCH.js +1175 -0
  132. package/public/sandbox/chunks/chunk-OQ4SYV5D.js +534 -0
  133. package/public/sandbox/chunks/chunk-OTVVIHJD.js +219 -0
  134. package/public/sandbox/chunks/chunk-OWTMSCF7.js +1052 -0
  135. package/public/sandbox/chunks/chunk-P5ZQNFC3.js +122 -0
  136. package/public/sandbox/chunks/chunk-PBPT2U2N.js +1698 -0
  137. package/public/sandbox/chunks/chunk-PHBJLCP3.js +836 -0
  138. package/public/sandbox/chunks/chunk-PHV4HYHB.js +397 -0
  139. package/public/sandbox/chunks/chunk-PIXQ6SOX.js +4071 -0
  140. package/public/sandbox/chunks/chunk-PKJL6YLK.js +73 -0
  141. package/public/sandbox/chunks/chunk-PKPOITIU.js +221 -0
  142. package/public/sandbox/chunks/{chunk-NQW73ACJ.js → chunk-PMXBOYQI.js} +1 -1
  143. package/public/sandbox/chunks/chunk-PQLZD7NR.js +836 -0
  144. package/public/sandbox/chunks/chunk-QEESVOZU.js +16 -0
  145. package/public/sandbox/chunks/chunk-QGIM3FQK.js +159 -0
  146. package/public/sandbox/chunks/chunk-QL5JNEDO.js +69 -0
  147. package/public/sandbox/chunks/chunk-QQOZ3RMH.js +867 -0
  148. package/public/sandbox/chunks/chunk-QUMEVT2F.js +194 -0
  149. package/public/sandbox/chunks/chunk-QVZBXYVY.js +102 -0
  150. package/public/sandbox/chunks/chunk-R5HQS6RB.js +135 -0
  151. package/public/sandbox/chunks/chunk-R75Q2CTT.js +900 -0
  152. package/public/sandbox/chunks/chunk-RBB6SHW2.js +253 -0
  153. package/public/sandbox/chunks/chunk-RDHNRWQP.js +383 -0
  154. package/public/sandbox/chunks/chunk-RIWOEI3T.js +1101 -0
  155. package/public/sandbox/chunks/chunk-RS5FFPUV.js +103 -0
  156. package/public/sandbox/chunks/chunk-RYSSJBGX.js +203 -0
  157. package/public/sandbox/chunks/chunk-S3KBAE5Z.js +1114 -0
  158. package/public/sandbox/chunks/chunk-S6ZZHV6G.js +244 -0
  159. package/public/sandbox/chunks/chunk-SFXJ24HY.js +499 -0
  160. package/public/sandbox/chunks/chunk-SH7TP5CJ.js +1109 -0
  161. package/public/sandbox/chunks/chunk-SI5OKFFY.js +317 -0
  162. package/public/sandbox/chunks/chunk-SIXNQNIR.js +86 -0
  163. package/public/sandbox/chunks/chunk-ST353BOX.js +42 -0
  164. package/public/sandbox/chunks/chunk-SYEHKMLP.js +1140 -0
  165. package/public/sandbox/chunks/chunk-SZ4KQUJU.js +69 -0
  166. package/public/sandbox/chunks/{chunk-5SOP6EKV.js → chunk-SZI65PSP.js} +5 -10
  167. package/public/sandbox/chunks/chunk-T7RLTSMX.js +78 -0
  168. package/public/sandbox/chunks/chunk-TJ2RLUTW.js +57 -0
  169. package/public/sandbox/chunks/chunk-TJB73XPN.js +4071 -0
  170. package/public/sandbox/chunks/chunk-TXJCYO56.js +4046 -0
  171. package/public/sandbox/chunks/chunk-U5J3LCYI.js +731 -0
  172. package/public/sandbox/chunks/chunk-UABFN3NH.js +208 -0
  173. package/public/sandbox/chunks/chunk-UBMUY7WO.js +13 -0
  174. package/public/sandbox/chunks/chunk-UC27CE32.js +69 -0
  175. package/public/sandbox/chunks/chunk-UJGVDFZN.js +147 -0
  176. package/public/sandbox/chunks/chunk-UNVLTK4N.js +122 -0
  177. package/public/sandbox/chunks/chunk-UQKQ6V3V.js +208 -0
  178. package/public/sandbox/chunks/chunk-UZZBHWIO.js +703 -0
  179. package/public/sandbox/chunks/chunk-VKZIJERL.js +1114 -0
  180. package/public/sandbox/chunks/chunk-VQQEAGID.js +372 -0
  181. package/public/sandbox/chunks/{chunk-3LX3KIQQ.js → chunk-W365QUZ5.js} +3 -5
  182. package/public/sandbox/chunks/chunk-WJY2LSWG.js +1052 -0
  183. package/public/sandbox/chunks/chunk-WNOBN3DX.js +391 -0
  184. package/public/sandbox/chunks/chunk-X2Z5VYG3.js +245 -0
  185. package/public/sandbox/chunks/chunk-X74KU74D.js +959 -0
  186. package/public/sandbox/chunks/chunk-XE7ULSGQ.js +46 -0
  187. package/public/sandbox/chunks/chunk-XRXUJZ3X.js +431 -0
  188. package/public/sandbox/chunks/chunk-XWHIN7CC.js +85 -0
  189. package/public/sandbox/chunks/chunk-Y2TVGGVL.js +527 -0
  190. package/public/sandbox/chunks/chunk-YMVMZA3U.js +1395 -0
  191. package/public/sandbox/chunks/chunk-YOBLFWDV.js +431 -0
  192. package/public/sandbox/chunks/chunk-YR2RFEZA.js +11 -0
  193. package/public/sandbox/chunks/chunk-YTD6A35P.js +836 -0
  194. package/public/sandbox/chunks/chunk-Z5L7EZXS.js +81 -0
  195. package/public/sandbox/chunks/chunk-Z65I5ET2.js +108 -0
  196. package/public/sandbox/chunks/chunk-Z6LV34RO.js +390 -0
  197. package/public/sandbox/chunks/chunk-ZAKUP6QG.js +1634 -0
  198. package/public/sandbox/chunks/chunk-ZHNYE2YH.js +731 -0
  199. package/public/sandbox/chunks/chunk-ZHQX3B3Y.js +867 -0
  200. package/public/sandbox/chunks/chunk-ZIXDFRHJ.js +731 -0
  201. package/public/sandbox/chunks/chunk-ZPZ2MZ4D.js +528 -0
  202. package/public/sandbox/chunks/chunk-ZQD6NZXB.js +373 -0
  203. package/public/sandbox/chunks/chunk-ZVVBP7ON.js +16 -0
  204. package/public/sandbox/chunks/chunk-ZWE3P6X2.js +11 -0
  205. package/public/sandbox/logix-core/Bound.js +14 -14
  206. package/public/sandbox/logix-core/Debug.js +12 -10
  207. package/public/sandbox/logix-core/EffectOp.js +3 -4
  208. package/public/sandbox/logix-core/Env.js +5 -2
  209. package/public/sandbox/logix-core/ExternalStore.js +239 -0
  210. package/public/sandbox/logix-core/Flow.js +7 -8
  211. package/public/sandbox/logix-core/Kernel.js +7 -4
  212. package/public/sandbox/logix-core/Link.js +33 -25
  213. package/public/sandbox/logix-core/Middleware.js +13 -11
  214. package/public/sandbox/logix-core/Module.js +93 -30
  215. package/public/sandbox/logix-core/ModuleTag.js +28 -25
  216. package/public/sandbox/logix-core/Observability.js +21 -19
  217. package/public/sandbox/logix-core/Process.js +27 -22
  218. package/public/sandbox/logix-core/ReadQuery.js +7 -11
  219. package/public/sandbox/logix-core/Reflection.js +173 -53
  220. package/public/sandbox/logix-core/Resource.js +6 -3
  221. package/public/sandbox/logix-core/Root.js +7 -3
  222. package/public/sandbox/logix-core/Runtime.js +54 -40
  223. package/public/sandbox/logix-core/ScopeRegistry.js +6 -3
  224. package/public/sandbox/logix-core/StateTrait.js +17 -14
  225. package/public/sandbox/logix-core/TraitLifecycle.js +8 -8
  226. package/public/sandbox/logix-core/Workflow.js +332 -0
  227. package/public/sandbox/logix-core.js +11133 -6622
  228. package/public/sandbox/logix-core.manifest.json +4 -2
  229. package/public/sandbox/worker.js +3 -3
  230. package/public/sandbox/chunks/chunk-4LRLOTMA.js +0 -1698
  231. package/public/sandbox/chunks/chunk-CDLXJHXY.js +0 -120
  232. package/public/sandbox/chunks/chunk-CZRI7MHA.js +0 -46
  233. package/public/sandbox/chunks/chunk-EJDFUZ4B.js +0 -408
  234. package/public/sandbox/chunks/chunk-IP63FME6.js +0 -282
  235. package/public/sandbox/chunks/chunk-JIXTOQXJ.js +0 -1103
  236. package/public/sandbox/chunks/chunk-MPUSOFJ3.js +0 -1928
  237. package/public/sandbox/chunks/chunk-ON2LY6HJ.js +0 -135
  238. package/public/sandbox/chunks/chunk-POIBXAH5.js +0 -995
  239. package/public/sandbox/chunks/chunk-PQ652ULI.js +0 -6359
  240. package/public/sandbox/chunks/chunk-RJQ4PG2F.js +0 -77
  241. package/public/sandbox/chunks/chunk-S4EXG3OS.js +0 -533
  242. package/public/sandbox/chunks/chunk-SUXDGXVE.js +0 -390
  243. package/public/sandbox/chunks/chunk-TOQ6SJ6O.js +0 -244
  244. package/public/sandbox/chunks/chunk-UKYAF3NL.js +0 -1036
  245. package/public/sandbox/chunks/chunk-UMVN3AWO.js +0 -395
  246. package/public/sandbox/chunks/chunk-WFV5PPWJ.js +0 -194
  247. package/public/sandbox/chunks/chunk-YF6IO732.js +0 -206
  248. package/public/sandbox/chunks/chunk-ZUBABAAO.js +0 -86
@@ -13,7 +13,7 @@ var stableStringify = (value) => {
13
13
  }
14
14
  if (t === "object") {
15
15
  const record = value;
16
- const keys = Object.keys(record).sort((a, b) => a.localeCompare(b));
16
+ const keys = Object.keys(record).sort();
17
17
  return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(",")}}`;
18
18
  }
19
19
  return "null";
@@ -31,4 +31,4 @@ export {
31
31
  stableStringify,
32
32
  fnv1a32
33
33
  };
34
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvZGlnZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIGludGVybmFsL2RpZ2VzdFx1RkYxQVxuICogLSBNaW5pbWFsIFwic3RhYmxlIGRpZ2VzdFwiIHV0aWxpdGllcyBmb3IgUnVudGltZSAvIFN0YXRpYyBJUiAvIFRyYWl0cywgZXRjLlxuICogLSBHb2FsOiBzdGFibGUgb3V0cHV0IGFjcm9zcyBydW5zL3Byb2Nlc3NlcyB3aGlsZSBzdGF5aW5nIGxpZ2h0d2VpZ2h0IChubyBleHRyYSBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIE5vdGU6IHN0YWJsZVN0cmluZ2lmeSBkb2VzIG5vdCBhaW0gZm9yIGZ1bGwgSlNPTiBlcXVpdmFsZW5jZTsgaXQgb25seSBjb3ZlcnMgdGhlIHN1YnNldCBuZWVkZWQgYnkgdGhpcyByZXBvOlxuICogLSBTdGFibGUga2V5IG9yZGVyaW5nIChvYmplY3QgZmllbGRzIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSkuXG4gKiAtIE5vbi1maW5pdGUgbnVtYmVycyAoTmFOL1x1MDBCMUluZmluaXR5KSBkZWdyYWRlIHRvIG51bGwuXG4gKiAtIE90aGVyIG5vbi1yZXByZXNlbnRhYmxlIHZhbHVlcyAodW5kZWZpbmVkL2Z1bmN0aW9uL3N5bWJvbCwgZXRjLikgZGVncmFkZSB0byBudWxsLlxuICogLSB1bmRlZmluZWQgaW5zaWRlIG9iamVjdHMgaXMgbm90IG9taXR0ZWQ7IGl0IGlzIGVuY29kZWQgYXMgbnVsbCAoZGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5KS5cbiAqL1xuXG5leHBvcnQgY29uc3Qgc3RhYmxlU3RyaW5naWZ5ID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJ251bGwnXG4gIGNvbnN0IHQgPSB0eXBlb2YgdmFsdWVcbiAgaWYgKHQgPT09ICdzdHJpbmcnKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gIGlmICh0ID09PSAnbnVtYmVyJykgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJ251bGwnXG4gIGlmICh0ID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSdcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYFske3ZhbHVlLm1hcChzdGFibGVTdHJpbmdpZnkpLmpvaW4oJywnKX1dYFxuICB9XG5cbiAgaWYgKHQgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgcmVjb3JkID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVjb3JkKS5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgcmV0dXJuIGB7JHtrZXlzLm1hcCgoaykgPT4gYCR7SlNPTi5zdHJpbmdpZnkoayl9OiR7c3RhYmxlU3RyaW5naWZ5KHJlY29yZFtrXSl9YCkuam9pbignLCcpfX1gXG4gIH1cblxuICByZXR1cm4gJ251bGwnXG59XG5cbi8qKlxuICogZm52MWEzMlx1RkYxQVxuICogLSAzMi1iaXQgRk5WLTFhIGhhc2ggKGZvciBzaG9ydCBkaWdlc3RzKTsgb3V0cHV0cyBmaXhlZCA4LWNoYXIgaGV4LlxuICovXG5leHBvcnQgY29uc3QgZm52MWEzMiA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IGhhc2ggPSAweDgxMWM5ZGM1XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBoYXNoIF49IGlucHV0LmNoYXJDb2RlQXQoaSlcbiAgICBoYXNoID0gKGhhc2ggKiAweDAxMDAwMTkzKSA+Pj4gMFxuICB9XG4gIHJldHVybiBoYXNoLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCAnMCcpXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBWU8sSUFBTSxrQkFBa0IsQ0FBQyxVQUEyQjtBQUN6RCxNQUFJLFVBQVUsS0FBTSxRQUFPO0FBQzNCLFFBQU0sSUFBSSxPQUFPO0FBQ2pCLE1BQUksTUFBTSxTQUFVLFFBQU8sS0FBSyxVQUFVLEtBQUs7QUFDL0MsTUFBSSxNQUFNLFNBQVUsUUFBTyxPQUFPLFNBQVMsS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJO0FBQ3BFLE1BQUksTUFBTSxVQUFXLFFBQU8sUUFBUSxTQUFTO0FBRTdDLE1BQUksTUFBTSxRQUFRLEtBQUssR0FBRztBQUN4QixXQUFPLElBQUksTUFBTSxJQUFJLGVBQWUsRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLEVBQ2pEO0FBRUEsTUFBSSxNQUFNLFVBQVU7QUFDbEIsVUFBTSxTQUFTO0FBQ2YsVUFBTSxPQUFPLE9BQU8sS0FBSyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2xFLFdBQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLEVBQzVGO0FBRUEsU0FBTztBQUNUO0FBTU8sSUFBTSxVQUFVLENBQUMsVUFBMEI7QUFDaEQsTUFBSSxPQUFPO0FBQ1gsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztBQUNyQyxZQUFRLE1BQU0sV0FBVyxDQUFDO0FBQzFCLFdBQVEsT0FBTyxhQUFnQjtBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxLQUFLLFNBQVMsRUFBRSxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQzFDOyIsCiAgIm5hbWVzIjogW10KfQo=
34
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvZGlnZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIGludGVybmFsL2RpZ2VzdFx1RkYxQVxuICogLSBNaW5pbWFsIFwic3RhYmxlIGRpZ2VzdFwiIHV0aWxpdGllcyBmb3IgUnVudGltZSAvIFN0YXRpYyBJUiAvIFRyYWl0cywgZXRjLlxuICogLSBHb2FsOiBzdGFibGUgb3V0cHV0IGFjcm9zcyBydW5zL3Byb2Nlc3NlcyB3aGlsZSBzdGF5aW5nIGxpZ2h0d2VpZ2h0IChubyBleHRyYSBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIE5vdGU6IHN0YWJsZVN0cmluZ2lmeSBkb2VzIG5vdCBhaW0gZm9yIGZ1bGwgSlNPTiBlcXVpdmFsZW5jZTsgaXQgb25seSBjb3ZlcnMgdGhlIHN1YnNldCBuZWVkZWQgYnkgdGhpcyByZXBvOlxuICogLSBTdGFibGUga2V5IG9yZGVyaW5nIChvYmplY3QgZmllbGRzIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSkuXG4gKiAtIE5vbi1maW5pdGUgbnVtYmVycyAoTmFOL1x1MDBCMUluZmluaXR5KSBkZWdyYWRlIHRvIG51bGwuXG4gKiAtIE90aGVyIG5vbi1yZXByZXNlbnRhYmxlIHZhbHVlcyAodW5kZWZpbmVkL2Z1bmN0aW9uL3N5bWJvbCwgZXRjLikgZGVncmFkZSB0byBudWxsLlxuICogLSB1bmRlZmluZWQgaW5zaWRlIG9iamVjdHMgaXMgbm90IG9taXR0ZWQ7IGl0IGlzIGVuY29kZWQgYXMgbnVsbCAoZGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5KS5cbiAqL1xuXG5leHBvcnQgY29uc3Qgc3RhYmxlU3RyaW5naWZ5ID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJ251bGwnXG4gIGNvbnN0IHQgPSB0eXBlb2YgdmFsdWVcbiAgaWYgKHQgPT09ICdzdHJpbmcnKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gIGlmICh0ID09PSAnbnVtYmVyJykgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJ251bGwnXG4gIGlmICh0ID09PSAnYm9vbGVhbicpIHJldHVybiB2YWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSdcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYFske3ZhbHVlLm1hcChzdGFibGVTdHJpbmdpZnkpLmpvaW4oJywnKX1dYFxuICB9XG5cbiAgaWYgKHQgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgcmVjb3JkID0gdmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVjb3JkKS5zb3J0KClcbiAgICByZXR1cm4gYHske2tleXMubWFwKChrKSA9PiBgJHtKU09OLnN0cmluZ2lmeShrKX06JHtzdGFibGVTdHJpbmdpZnkocmVjb3JkW2tdKX1gKS5qb2luKCcsJyl9fWBcbiAgfVxuXG4gIHJldHVybiAnbnVsbCdcbn1cblxuLyoqXG4gKiBmbnYxYTMyXHVGRjFBXG4gKiAtIDMyLWJpdCBGTlYtMWEgaGFzaCAoZm9yIHNob3J0IGRpZ2VzdHMpOyBvdXRwdXRzIGZpeGVkIDgtY2hhciBoZXguXG4gKi9cbmV4cG9ydCBjb25zdCBmbnYxYTMyID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgaGFzaCA9IDB4ODExYzlkYzVcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGhhc2ggXj0gaW5wdXQuY2hhckNvZGVBdChpKVxuICAgIGhhc2ggPSAoaGFzaCAqIDB4MDEwMDAxOTMpID4+PiAwXG4gIH1cbiAgcmV0dXJuIGhhc2gudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsICcwJylcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7QUFZTyxJQUFNLGtCQUFrQixDQUFDLFVBQTJCO0FBQ3pELE1BQUksVUFBVSxLQUFNLFFBQU87QUFDM0IsUUFBTSxJQUFJLE9BQU87QUFDakIsTUFBSSxNQUFNLFNBQVUsUUFBTyxLQUFLLFVBQVUsS0FBSztBQUMvQyxNQUFJLE1BQU0sU0FBVSxRQUFPLE9BQU8sU0FBUyxLQUFLLElBQUksT0FBTyxLQUFLLElBQUk7QUFDcEUsTUFBSSxNQUFNLFVBQVcsUUFBTyxRQUFRLFNBQVM7QUFFN0MsTUFBSSxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ3hCLFdBQU8sSUFBSSxNQUFNLElBQUksZUFBZSxFQUFFLEtBQUssR0FBRyxDQUFDO0FBQUEsRUFDakQ7QUFFQSxNQUFJLE1BQU0sVUFBVTtBQUNsQixVQUFNLFNBQVM7QUFDZixVQUFNLE9BQU8sT0FBTyxLQUFLLE1BQU0sRUFBRSxLQUFLO0FBQ3RDLFdBQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLEVBQzVGO0FBRUEsU0FBTztBQUNUO0FBTU8sSUFBTSxVQUFVLENBQUMsVUFBMEI7QUFDaEQsTUFBSSxPQUFPO0FBQ1gsV0FBUyxJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztBQUNyQyxZQUFRLE1BQU0sV0FBVyxDQUFDO0FBQzFCLFdBQVEsT0FBTyxhQUFnQjtBQUFBLEVBQ2pDO0FBQ0EsU0FBTyxLQUFLLFNBQVMsRUFBRSxFQUFFLFNBQVMsR0FBRyxHQUFHO0FBQzFDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,260 @@
1
+ // @logixjs/core subpath bundles for @logixjs/sandbox
2
+
3
+ import {
4
+ Link
5
+ } from "./chunk-5GEYCJW2.js";
6
+ import {
7
+ attachMeta,
8
+ getDefinition,
9
+ getMeta
10
+ } from "./chunk-KDJR27JV.js";
11
+ import {
12
+ currentConvergeStaticIrCollectors
13
+ } from "./chunk-2LZ43SWS.js";
14
+ import {
15
+ DeclarativeLinkRuntimeTag
16
+ } from "./chunk-YMVMZA3U.js";
17
+ import {
18
+ compile
19
+ } from "./chunk-BWTGJZVP.js";
20
+ import {
21
+ currentDiagnosticsLevel,
22
+ record
23
+ } from "./chunk-SH7TP5CJ.js";
24
+ import {
25
+ fnv1a32,
26
+ stableStringify
27
+ } from "./chunk-DT7YIIWE.js";
28
+
29
+ // ../logix-core/src/Process.ts
30
+ import { Effect, FiberRef } from "../effect.js";
31
+
32
+ // ../logix-core/src/internal/runtime/core/DeclarativeLinkIR.ts
33
+ var getDeclarativeLinkIrDigest = (ir) => `dlink_ir_v1:${fnv1a32(stableStringify(ir))}`;
34
+ var exportDeclarativeLinkIr = (args) => ({
35
+ staticIrDigest: getDeclarativeLinkIrDigest(args.ir),
36
+ moduleId: `link:${args.linkId}`,
37
+ instanceId: "runtime",
38
+ kind: "declarativeLinkIr",
39
+ ir: args.ir
40
+ });
41
+
42
+ // ../logix-core/src/Process.ts
43
+ var DEFAULT_TRIGGERS = [{ kind: "platformEvent", platformEvent: "runtime:boot" }];
44
+ var normalizeDefinition = (input) => {
45
+ const base = typeof input === "string" ? { processId: input } : input;
46
+ const processId = base.processId;
47
+ if (typeof processId !== "string" || processId.length === 0) {
48
+ throw new Error("[Process.make] processId must be a non-empty string");
49
+ }
50
+ const triggers = Array.isArray(base.triggers) && base.triggers.length > 0 ? base.triggers : DEFAULT_TRIGGERS;
51
+ const concurrency = base.concurrency ?? { mode: "latest" };
52
+ const errorPolicy = base.errorPolicy ?? { mode: "failStop" };
53
+ const diagnosticsLevel = base.diagnosticsLevel ?? "off";
54
+ return {
55
+ processId,
56
+ name: base.name,
57
+ description: base.description,
58
+ requires: base.requires,
59
+ triggers,
60
+ concurrency,
61
+ errorPolicy,
62
+ diagnosticsLevel
63
+ };
64
+ };
65
+ var make = (definition, effect) => attachMeta(effect, {
66
+ definition: normalizeDefinition(definition),
67
+ kind: "process"
68
+ });
69
+ var getDefinition2 = (effect) => getDefinition(effect);
70
+ var getMeta2 = (effect) => getMeta(effect);
71
+ var attachMeta2 = (effect, meta) => attachMeta(effect, meta);
72
+ var isModuleLike = (value) => Boolean(value) && typeof value === "object" && (value._kind === "ModuleDef" || value._kind === "Module") && "tag" in value;
73
+ var unwrapModuleTag = (module) => {
74
+ if (isModuleLike(module)) {
75
+ return module.tag;
76
+ }
77
+ return module;
78
+ };
79
+ function link(config, logic) {
80
+ const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
81
+ const modulesRecord = /* @__PURE__ */ Object.create(null);
82
+ const requires = /* @__PURE__ */ new Set();
83
+ for (const module of config.modules) {
84
+ const tag = unwrapModuleTag(module);
85
+ requires.add(String(tag.id));
86
+ modulesRecord[tag.id] = tag;
87
+ }
88
+ const effect = Link(
89
+ modulesRecord,
90
+ logic
91
+ );
92
+ const wrapped = Effect.gen(function* () {
93
+ const level = yield* FiberRef.get(currentDiagnosticsLevel);
94
+ if (level !== "off") {
95
+ yield* record({
96
+ type: "diagnostic",
97
+ moduleId: `link:${linkId}`,
98
+ code: "process_link::blackbox_best_effort",
99
+ severity: "info",
100
+ message: "[Process.link] Blackbox link is best-effort and is NOT stabilized within the same tick. Strong consistency applies only to declarative IR.",
101
+ hint: "If you need same-tick strong consistency, migrate to Process.linkDeclarative(...) (073).",
102
+ kind: "blackbox_link_boundary"
103
+ });
104
+ }
105
+ return yield* effect;
106
+ });
107
+ const definition = {
108
+ processId: linkId,
109
+ requires: Array.from(requires),
110
+ triggers: [...DEFAULT_TRIGGERS, { kind: "platformEvent", platformEvent: `link:${linkId}` }],
111
+ concurrency: { mode: "latest" },
112
+ errorPolicy: { mode: "failStop" },
113
+ diagnosticsLevel: "off"
114
+ };
115
+ return attachMeta(wrapped, {
116
+ definition,
117
+ kind: "link"
118
+ });
119
+ }
120
+ function linkDeclarative(config, build) {
121
+ const linkId = config.id ?? [...config.modules].map((m) => m.id).sort().join("~");
122
+ const modulesRecord = /* @__PURE__ */ Object.create(null);
123
+ const requires = /* @__PURE__ */ new Set();
124
+ for (const module of config.modules) {
125
+ const tag = unwrapModuleTag(module);
126
+ requires.add(String(tag.id));
127
+ modulesRecord[tag.id] = tag;
128
+ }
129
+ const handles = /* @__PURE__ */ Object.create(null);
130
+ for (const id of Object.keys(modulesRecord)) {
131
+ const tag = modulesRecord[id];
132
+ handles[id] = {
133
+ read: (selector) => {
134
+ const compiled = compile(selector);
135
+ const staticIr = compiled.staticIr;
136
+ const ok = staticIr.lane === "static" && staticIr.readsDigest != null && staticIr.fallbackReason == null;
137
+ if (!ok) {
138
+ throw new Error(
139
+ `[Process.linkDeclarative] ReadQuery must be static with readsDigest (moduleId=${id}, selectorId=${staticIr.selectorId}, lane=${staticIr.lane}, fallbackReason=${staticIr.fallbackReason}). Fix: use ReadQuery.make(...) or annotate selector.fieldPaths.`
140
+ );
141
+ }
142
+ return { _tag: "readNode", moduleId: id, tag, readQuery: compiled };
143
+ },
144
+ dispatch: (actionTag) => {
145
+ if (typeof actionTag !== "string" || actionTag.length === 0) {
146
+ throw new Error("[Process.linkDeclarative] actionTag must be a non-empty string");
147
+ }
148
+ return { _tag: "dispatchNode", moduleId: id, tag, actionTag };
149
+ }
150
+ };
151
+ }
152
+ const edges = build(handles);
153
+ if (!Array.isArray(edges)) {
154
+ throw new Error("[Process.linkDeclarative] build(...) must return an array of edges");
155
+ }
156
+ const normalized = edges.filter((e) => Boolean(e && e.from && e.to)).map((e) => {
157
+ if (e.from._tag !== "readNode" || e.to._tag !== "dispatchNode") {
158
+ throw new Error("[Process.linkDeclarative] Invalid edge spec returned from build(...)");
159
+ }
160
+ return e;
161
+ }).slice().sort((a, b) => {
162
+ const ak = `${a.from.moduleId}:${a.from.readQuery.staticIr.selectorId}->${a.to.moduleId}:${a.to.actionTag}`;
163
+ const bk = `${b.from.moduleId}:${b.from.readQuery.staticIr.selectorId}->${b.to.moduleId}:${b.to.actionTag}`;
164
+ return ak < bk ? -1 : ak > bk ? 1 : 0;
165
+ });
166
+ const program = Effect.gen(function* () {
167
+ const runtime = yield* DeclarativeLinkRuntimeTag;
168
+ const collectors = yield* FiberRef.get(currentConvergeStaticIrCollectors);
169
+ const runtimeByTag = /* @__PURE__ */ new Map();
170
+ const resolveRuntime = (tag) => Effect.suspend(() => {
171
+ const cached = runtimeByTag.get(tag);
172
+ if (cached) return Effect.succeed(cached);
173
+ return tag.pipe(
174
+ Effect.tap(
175
+ (rt) => Effect.sync(() => {
176
+ runtimeByTag.set(tag, rt);
177
+ })
178
+ )
179
+ );
180
+ });
181
+ const nodes = [];
182
+ const irEdges = [];
183
+ const readNodes = [];
184
+ const dispatchNodes = [];
185
+ for (let i = 0; i < normalized.length; i += 1) {
186
+ const edge = normalized[i];
187
+ const fromRuntime = yield* resolveRuntime(edge.from.tag);
188
+ const toRuntime = yield* resolveRuntime(edge.to.tag);
189
+ const fromKey = `${fromRuntime.moduleId}::${fromRuntime.instanceId}`;
190
+ const readNodeId = `r${i}`;
191
+ const dispatchNodeId = `d${i}`;
192
+ nodes.push({
193
+ id: readNodeId,
194
+ kind: "readQuery",
195
+ moduleId: fromRuntime.moduleId,
196
+ instanceKey: fromRuntime.instanceId,
197
+ readQuery: edge.from.readQuery.staticIr
198
+ });
199
+ nodes.push({
200
+ id: dispatchNodeId,
201
+ kind: "dispatch",
202
+ moduleId: toRuntime.moduleId,
203
+ instanceKey: toRuntime.instanceId,
204
+ actionTag: edge.to.actionTag
205
+ });
206
+ irEdges.push({ from: readNodeId, to: dispatchNodeId });
207
+ readNodes.push({ nodeId: readNodeId, moduleInstanceKey: fromKey, readQuery: edge.from.readQuery });
208
+ dispatchNodes.push({
209
+ nodeId: dispatchNodeId,
210
+ dispatch: (payload) => toRuntime.dispatch({ _tag: edge.to.actionTag, payload }).pipe(Effect.asVoid)
211
+ });
212
+ }
213
+ const ir = {
214
+ version: 1,
215
+ nodes,
216
+ edges: irEdges
217
+ };
218
+ const registration = {
219
+ linkId,
220
+ ir,
221
+ readNodes,
222
+ dispatchNodes
223
+ };
224
+ const unregister = runtime.registerDeclarativeLink(registration);
225
+ if (collectors.length > 0) {
226
+ const exported = exportDeclarativeLinkIr({ linkId, ir });
227
+ for (const collector of collectors) {
228
+ collector.register(exported);
229
+ }
230
+ }
231
+ yield* Effect.addFinalizer(
232
+ () => Effect.sync(() => {
233
+ unregister();
234
+ })
235
+ );
236
+ yield* Effect.never;
237
+ });
238
+ const definition = {
239
+ processId: `dlink:${linkId}`,
240
+ requires: Array.from(requires),
241
+ triggers: DEFAULT_TRIGGERS,
242
+ concurrency: { mode: "latest" },
243
+ errorPolicy: { mode: "failStop" },
244
+ diagnosticsLevel: "off"
245
+ };
246
+ return attachMeta(program, {
247
+ definition,
248
+ kind: "declarativeLink"
249
+ });
250
+ }
251
+
252
+ export {
253
+ make,
254
+ getDefinition2 as getDefinition,
255
+ getMeta2 as getMeta,
256
+ attachMeta2 as attachMeta,
257
+ link,
258
+ linkDeclarative
259
+ };
260
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvUHJvY2Vzcy50cyIsICIuLi8uLi8uLi8uLi9sb2dpeC1jb3JlL3NyYy9pbnRlcm5hbC9ydW50aW1lL2NvcmUvRGVjbGFyYXRpdmVMaW5rSVIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEVmZmVjdCwgRmliZXJSZWYgfSBmcm9tICdlZmZlY3QnXG5pbXBvcnQgKiBhcyBNb2R1bGVGYWN0b3J5IGZyb20gJy4vaW50ZXJuYWwvcnVudGltZS9Nb2R1bGVGYWN0b3J5LmpzJ1xuaW1wb3J0ICogYXMgRGVidWcgZnJvbSAnLi9pbnRlcm5hbC9ydW50aW1lL2NvcmUvRGVidWdTaW5rLmpzJ1xuaW1wb3J0IHsgY3VycmVudENvbnZlcmdlU3RhdGljSXJDb2xsZWN0b3JzIH0gZnJvbSAnLi9pbnRlcm5hbC9ydW50aW1lL2NvcmUvQ29udmVyZ2VTdGF0aWNJckNvbGxlY3Rvci5qcydcbmltcG9ydCB7IGV4cG9ydERlY2xhcmF0aXZlTGlua0lyLCB0eXBlIERlY2xhcmF0aXZlTGlua0lSIH0gZnJvbSAnLi9pbnRlcm5hbC9ydW50aW1lL2NvcmUvRGVjbGFyYXRpdmVMaW5rSVIuanMnXG5pbXBvcnQgeyBEZWNsYXJhdGl2ZUxpbmtSdW50aW1lVGFnIH0gZnJvbSAnLi9pbnRlcm5hbC9ydW50aW1lL2NvcmUvZW52LmpzJ1xuaW1wb3J0IHR5cGUgKiBhcyBQcm90b2NvbCBmcm9tICcuL2ludGVybmFsL3J1bnRpbWUvY29yZS9wcm9jZXNzL3Byb3RvY29sLmpzJ1xuaW1wb3J0ICogYXMgTWV0YSBmcm9tICcuL2ludGVybmFsL3J1bnRpbWUvY29yZS9wcm9jZXNzL21ldGEuanMnXG5pbXBvcnQgdHlwZSB7IEFueU1vZHVsZVNoYXBlLCBNb2R1bGVIYW5kbGUsIE1vZHVsZUxpa2UsIE1vZHVsZVRhZyB9IGZyb20gJy4vaW50ZXJuYWwvbW9kdWxlLmpzJ1xuaW1wb3J0ICogYXMgUmVhZFF1ZXJ5IGZyb20gJy4vUmVhZFF1ZXJ5LmpzJ1xuXG5leHBvcnQgdHlwZSBEaWFnbm9zdGljc0xldmVsID0gUHJvdG9jb2wuRGlhZ25vc3RpY3NMZXZlbFxuZXhwb3J0IHR5cGUgUHJvY2Vzc1Njb3BlID0gUHJvdG9jb2wuUHJvY2Vzc1Njb3BlXG5leHBvcnQgdHlwZSBQcm9jZXNzSWRlbnRpdHkgPSBQcm90b2NvbC5Qcm9jZXNzSWRlbnRpdHlcbmV4cG9ydCB0eXBlIFByb2Nlc3NJbnN0YW5jZUlkZW50aXR5ID0gUHJvdG9jb2wuUHJvY2Vzc0luc3RhbmNlSWRlbnRpdHlcbmV4cG9ydCB0eXBlIFByb2Nlc3NUcmlnZ2VyU3BlYyA9IFByb3RvY29sLlByb2Nlc3NUcmlnZ2VyU3BlY1xuZXhwb3J0IHR5cGUgUHJvY2Vzc1RyaWdnZXIgPSBQcm90b2NvbC5Qcm9jZXNzVHJpZ2dlclxuZXhwb3J0IHR5cGUgUHJvY2Vzc0NvbmN1cnJlbmN5UG9saWN5ID0gUHJvdG9jb2wuUHJvY2Vzc0NvbmN1cnJlbmN5UG9saWN5XG5leHBvcnQgdHlwZSBQcm9jZXNzRXJyb3JQb2xpY3kgPSBQcm90b2NvbC5Qcm9jZXNzRXJyb3JQb2xpY3lcbmV4cG9ydCB0eXBlIFByb2Nlc3NEZWZpbml0aW9uID0gUHJvdG9jb2wuUHJvY2Vzc0RlZmluaXRpb25cbmV4cG9ydCB0eXBlIFByb2Nlc3NJbnN0YWxsYXRpb24gPSBQcm90b2NvbC5Qcm9jZXNzSW5zdGFsbGF0aW9uXG5leHBvcnQgdHlwZSBTZXJpYWxpemFibGVFcnJvclN1bW1hcnkgPSBQcm90b2NvbC5TZXJpYWxpemFibGVFcnJvclN1bW1hcnlcbmV4cG9ydCB0eXBlIFByb2Nlc3NJbnN0YW5jZVN0YXR1cyA9IFByb3RvY29sLlByb2Nlc3NJbnN0YW5jZVN0YXR1c1xuZXhwb3J0IHR5cGUgUHJvY2Vzc0V2ZW50ID0gUHJvdG9jb2wuUHJvY2Vzc0V2ZW50XG5leHBvcnQgdHlwZSBQcm9jZXNzQ29udHJvbFJlcXVlc3QgPSBQcm90b2NvbC5Qcm9jZXNzQ29udHJvbFJlcXVlc3RcbmV4cG9ydCB0eXBlIFByb2Nlc3NQbGF0Zm9ybUV2ZW50ID0gUHJvdG9jb2wuUHJvY2Vzc1BsYXRmb3JtRXZlbnRcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc0VmZmVjdDxFID0gbmV2ZXIsIFIgPSBuZXZlcj4gPSBNZXRhLlByb2Nlc3NFZmZlY3Q8RSwgUj5cblxuZXhwb3J0IHR5cGUgUHJvY2Vzc01ha2VEZWZpbml0aW9uID1cbiAgfCBzdHJpbmdcbiAgfCB7XG4gICAgICByZWFkb25seSBwcm9jZXNzSWQ6IHN0cmluZ1xuICAgICAgcmVhZG9ubHkgbmFtZT86IHN0cmluZ1xuICAgICAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIHJlYWRvbmx5IHJlcXVpcmVzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gICAgICByZWFkb25seSB0cmlnZ2Vycz86IFJlYWRvbmx5QXJyYXk8UHJvY2Vzc1RyaWdnZXJTcGVjPlxuICAgICAgcmVhZG9ubHkgY29uY3VycmVuY3k/OiBQcm9jZXNzQ29uY3VycmVuY3lQb2xpY3lcbiAgICAgIHJlYWRvbmx5IGVycm9yUG9saWN5PzogUHJvY2Vzc0Vycm9yUG9saWN5XG4gICAgICByZWFkb25seSBkaWFnbm9zdGljc0xldmVsPzogRGlhZ25vc3RpY3NMZXZlbFxuICAgIH1cblxuY29uc3QgREVGQVVMVF9UUklHR0VSUzogUmVhZG9ubHlBcnJheTxQcm9jZXNzVHJpZ2dlclNwZWM+ID0gW3sga2luZDogJ3BsYXRmb3JtRXZlbnQnLCBwbGF0Zm9ybUV2ZW50OiAncnVudGltZTpib290JyB9XVxuXG5jb25zdCBub3JtYWxpemVEZWZpbml0aW9uID0gKGlucHV0OiBQcm9jZXNzTWFrZURlZmluaXRpb24pOiBQcm9jZXNzRGVmaW5pdGlvbiA9PiB7XG4gIGNvbnN0IGJhc2UgPSB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnID8gKHsgcHJvY2Vzc0lkOiBpbnB1dCB9IHNhdGlzZmllcyB7IHJlYWRvbmx5IHByb2Nlc3NJZDogc3RyaW5nIH0pIDogaW5wdXRcblxuICBjb25zdCBwcm9jZXNzSWQgPSBiYXNlLnByb2Nlc3NJZFxuICBpZiAodHlwZW9mIHByb2Nlc3NJZCAhPT0gJ3N0cmluZycgfHwgcHJvY2Vzc0lkLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignW1Byb2Nlc3MubWFrZV0gcHJvY2Vzc0lkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJylcbiAgfVxuXG4gIGNvbnN0IHRyaWdnZXJzID0gQXJyYXkuaXNBcnJheShiYXNlLnRyaWdnZXJzKSAmJiBiYXNlLnRyaWdnZXJzLmxlbmd0aCA+IDAgPyBiYXNlLnRyaWdnZXJzIDogREVGQVVMVF9UUklHR0VSU1xuXG4gIGNvbnN0IGNvbmN1cnJlbmN5ID0gYmFzZS5jb25jdXJyZW5jeSA/PyAoeyBtb2RlOiAnbGF0ZXN0JyB9IHNhdGlzZmllcyBQcm9jZXNzQ29uY3VycmVuY3lQb2xpY3kpXG4gIGNvbnN0IGVycm9yUG9saWN5ID0gYmFzZS5lcnJvclBvbGljeSA/PyAoeyBtb2RlOiAnZmFpbFN0b3AnIH0gc2F0aXNmaWVzIFByb2Nlc3NFcnJvclBvbGljeSlcbiAgY29uc3QgZGlhZ25vc3RpY3NMZXZlbCA9IGJhc2UuZGlhZ25vc3RpY3NMZXZlbCA/PyAnb2ZmJ1xuXG4gIHJldHVybiB7XG4gICAgcHJvY2Vzc0lkLFxuICAgIG5hbWU6IGJhc2UubmFtZSxcbiAgICBkZXNjcmlwdGlvbjogYmFzZS5kZXNjcmlwdGlvbixcbiAgICByZXF1aXJlczogYmFzZS5yZXF1aXJlcyxcbiAgICB0cmlnZ2VycyxcbiAgICBjb25jdXJyZW5jeSxcbiAgICBlcnJvclBvbGljeSxcbiAgICBkaWFnbm9zdGljc0xldmVsLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBtYWtlID0gPEUsIFI+KGRlZmluaXRpb246IFByb2Nlc3NNYWtlRGVmaW5pdGlvbiwgZWZmZWN0OiBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIFI+KTogUHJvY2Vzc0VmZmVjdDxFLCBSPiA9PlxuICBNZXRhLmF0dGFjaE1ldGEoZWZmZWN0LCB7XG4gICAgZGVmaW5pdGlvbjogbm9ybWFsaXplRGVmaW5pdGlvbihkZWZpbml0aW9uKSxcbiAgICBraW5kOiAncHJvY2VzcycsXG4gIH0pXG5cbmV4cG9ydCBjb25zdCBnZXREZWZpbml0aW9uID0gKGVmZmVjdDogRWZmZWN0LkVmZmVjdDx2b2lkLCBhbnksIGFueT4pOiBQcm9jZXNzRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCA9PlxuICBNZXRhLmdldERlZmluaXRpb24oZWZmZWN0KVxuXG5leHBvcnQgY29uc3QgZ2V0TWV0YSA9IChlZmZlY3Q6IEVmZmVjdC5FZmZlY3Q8dm9pZCwgYW55LCBhbnk+KTogTWV0YS5Qcm9jZXNzTWV0YSB8IHVuZGVmaW5lZCA9PiBNZXRhLmdldE1ldGEoZWZmZWN0KVxuXG5leHBvcnQgY29uc3QgYXR0YWNoTWV0YSA9IDxFLCBSPihlZmZlY3Q6IEVmZmVjdC5FZmZlY3Q8dm9pZCwgRSwgUj4sIG1ldGE6IE1ldGEuUHJvY2Vzc01ldGEpOiBQcm9jZXNzRWZmZWN0PEUsIFI+ID0+XG4gIE1ldGEuYXR0YWNoTWV0YShlZmZlY3QsIG1ldGEpXG5cbnR5cGUgTGlua01vZHVsZVRva2VuPElkIGV4dGVuZHMgc3RyaW5nLCBTaCBleHRlbmRzIEFueU1vZHVsZVNoYXBlPiA9IE1vZHVsZVRhZzxJZCwgU2g+IHwgTW9kdWxlTGlrZTxJZCwgU2gsIG9iamVjdD5cblxudHlwZSBMaW5rTW9kdWxlSWRPZjxNPiA9IE0gZXh0ZW5kcyB7IHJlYWRvbmx5IGlkOiBpbmZlciBJZCB9ID8gSWQgOiBuZXZlclxudHlwZSBMaW5rTW9kdWxlU2hhcGVPZjxNPiA9XG4gIE0gZXh0ZW5kcyBNb2R1bGVMaWtlPHN0cmluZywgaW5mZXIgU2gsIG9iamVjdD4gPyBTaCA6IE0gZXh0ZW5kcyBNb2R1bGVUYWc8c3RyaW5nLCBpbmZlciBTaD4gPyBTaCA6IG5ldmVyXG50eXBlIExpbmtNb2R1bGVUYWdPZjxNPiA9XG4gIE0gZXh0ZW5kcyBNb2R1bGVMaWtlPHN0cmluZywgaW5mZXIgU2gsIG9iamVjdD5cbiAgICA/IE1vZHVsZVRhZzxzdHJpbmcsIFNoPlxuICAgIDogTSBleHRlbmRzIE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPlxuICAgICAgPyBNXG4gICAgICA6IG5ldmVyXG5cbmNvbnN0IGlzTW9kdWxlTGlrZSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIE1vZHVsZUxpa2U8c3RyaW5nLCBBbnlNb2R1bGVTaGFwZSwgb2JqZWN0PiA9PlxuICBCb29sZWFuKHZhbHVlKSAmJlxuICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICgodmFsdWUgYXMgeyByZWFkb25seSBfa2luZD86IHVua25vd24gfSkuX2tpbmQgPT09ICdNb2R1bGVEZWYnIHx8XG4gICAgKHZhbHVlIGFzIHsgcmVhZG9ubHkgX2tpbmQ/OiB1bmtub3duIH0pLl9raW5kID09PSAnTW9kdWxlJykgJiZcbiAgJ3RhZycgaW4gKHZhbHVlIGFzIG9iamVjdClcblxuY29uc3QgdW53cmFwTW9kdWxlVGFnID0gPElkIGV4dGVuZHMgc3RyaW5nLCBTaCBleHRlbmRzIEFueU1vZHVsZVNoYXBlPihcbiAgbW9kdWxlOiBMaW5rTW9kdWxlVG9rZW48SWQsIFNoPixcbik6IE1vZHVsZVRhZzxJZCwgU2g+ID0+IHtcbiAgaWYgKGlzTW9kdWxlTGlrZShtb2R1bGUpKSB7XG4gICAgcmV0dXJuIG1vZHVsZS50YWdcbiAgfVxuICByZXR1cm4gbW9kdWxlIGFzIE1vZHVsZVRhZzxJZCwgU2g+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0NvbmZpZzxNcyBleHRlbmRzIHJlYWRvbmx5IExpbmtNb2R1bGVUb2tlbjxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPltdPiB7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nXG4gIHJlYWRvbmx5IG1vZHVsZXM6IE1zXG59XG5cbmV4cG9ydCB0eXBlIExpbmtIYW5kbGVzPE1zIGV4dGVuZHMgcmVhZG9ubHkgTGlua01vZHVsZVRva2VuPHN0cmluZywgQW55TW9kdWxlU2hhcGU+W10+ID0ge1xuICBbTSBpbiBNc1tudW1iZXJdIGFzIExpbmtNb2R1bGVJZE9mPE0+XTogTW9kdWxlSGFuZGxlPExpbmtNb2R1bGVTaGFwZU9mPE0+PlxufVxuXG50eXBlIE1vZHVsZXNSZWNvcmQ8TXMgZXh0ZW5kcyByZWFkb25seSBMaW5rTW9kdWxlVG9rZW48c3RyaW5nLCBBbnlNb2R1bGVTaGFwZT5bXT4gPSB7XG4gIFtNIGluIE1zW251bWJlcl0gYXMgTGlua01vZHVsZUlkT2Y8TT5dOiBMaW5rTW9kdWxlVGFnT2Y8TT5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbms8TXMgZXh0ZW5kcyByZWFkb25seSBMaW5rTW9kdWxlVG9rZW48c3RyaW5nLCBBbnlNb2R1bGVTaGFwZT5bXSwgRSA9IG5ldmVyLCBSID0gbmV2ZXI+KFxuICBjb25maWc6IExpbmtDb25maWc8TXM+LFxuICBsb2dpYzogKCQ6IExpbmtIYW5kbGVzPE1zPikgPT4gRWZmZWN0LkVmZmVjdDx2b2lkLCBFLCBSPixcbik6IFByb2Nlc3NFZmZlY3Q8RSwgUj4ge1xuICBjb25zdCBsaW5rSWQgPVxuICAgIGNvbmZpZy5pZCA/P1xuICAgIFsuLi5jb25maWcubW9kdWxlc11cbiAgICAgIC5tYXAoKG0pID0+IG0uaWQpXG4gICAgICAuc29ydCgpXG4gICAgICAuam9pbignficpXG5cbiAgY29uc3QgbW9kdWxlc1JlY29yZCA9IE9iamVjdC5jcmVhdGUobnVsbCkgYXMgTW9kdWxlc1JlY29yZDxNcz5cbiAgY29uc3QgcmVxdWlyZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGZvciAoY29uc3QgbW9kdWxlIG9mIGNvbmZpZy5tb2R1bGVzKSB7XG4gICAgY29uc3QgdGFnID0gdW53cmFwTW9kdWxlVGFnKG1vZHVsZSlcbiAgICByZXF1aXJlcy5hZGQoU3RyaW5nKHRhZy5pZCkpXG4gICAgOyhtb2R1bGVzUmVjb3JkIGFzIFJlY29yZDxzdHJpbmcsIE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPj4pW3RhZy5pZF0gPSB0YWcgYXMgdW5rbm93biBhcyBNb2R1bGVUYWc8XG4gICAgICBzdHJpbmcsXG4gICAgICBBbnlNb2R1bGVTaGFwZVxuICAgID5cbiAgfVxuXG4gIGNvbnN0IGVmZmVjdCA9IE1vZHVsZUZhY3RvcnkuTGluayhcbiAgICBtb2R1bGVzUmVjb3JkIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgTW9kdWxlVGFnPHN0cmluZywgQW55TW9kdWxlU2hhcGU+PixcbiAgICBsb2dpYyBhcyB1bmtub3duIGFzICgkOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVIYW5kbGU8QW55TW9kdWxlU2hhcGU+PikgPT4gRWZmZWN0LkVmZmVjdDx2b2lkLCBFLCBSPixcbiAgKVxuXG4gIGNvbnN0IHdyYXBwZWQgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgY29uc3QgbGV2ZWwgPSB5aWVsZCogRmliZXJSZWYuZ2V0KERlYnVnLmN1cnJlbnREaWFnbm9zdGljc0xldmVsKVxuICAgIGlmIChsZXZlbCAhPT0gJ29mZicpIHtcbiAgICAgIHlpZWxkKiBEZWJ1Zy5yZWNvcmQoe1xuICAgICAgICB0eXBlOiAnZGlhZ25vc3RpYycsXG4gICAgICAgIG1vZHVsZUlkOiBgbGluazoke2xpbmtJZH1gLFxuICAgICAgICBjb2RlOiAncHJvY2Vzc19saW5rOjpibGFja2JveF9iZXN0X2VmZm9ydCcsXG4gICAgICAgIHNldmVyaXR5OiAnaW5mbycsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ1tQcm9jZXNzLmxpbmtdIEJsYWNrYm94IGxpbmsgaXMgYmVzdC1lZmZvcnQgYW5kIGlzIE5PVCBzdGFiaWxpemVkIHdpdGhpbiB0aGUgc2FtZSB0aWNrLiBTdHJvbmcgY29uc2lzdGVuY3kgYXBwbGllcyBvbmx5IHRvIGRlY2xhcmF0aXZlIElSLicsXG4gICAgICAgIGhpbnQ6ICdJZiB5b3UgbmVlZCBzYW1lLXRpY2sgc3Ryb25nIGNvbnNpc3RlbmN5LCBtaWdyYXRlIHRvIFByb2Nlc3MubGlua0RlY2xhcmF0aXZlKC4uLikgKDA3MykuJyxcbiAgICAgICAga2luZDogJ2JsYWNrYm94X2xpbmtfYm91bmRhcnknLFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHlpZWxkKiBlZmZlY3RcbiAgfSkgYXMgdW5rbm93biBhcyBFZmZlY3QuRWZmZWN0PHZvaWQsIEUsIFI+XG5cbiAgY29uc3QgZGVmaW5pdGlvbjogUHJvY2Vzc0RlZmluaXRpb24gPSB7XG4gICAgcHJvY2Vzc0lkOiBsaW5rSWQsXG4gICAgcmVxdWlyZXM6IEFycmF5LmZyb20ocmVxdWlyZXMpLFxuICAgIHRyaWdnZXJzOiBbLi4uREVGQVVMVF9UUklHR0VSUywgeyBraW5kOiAncGxhdGZvcm1FdmVudCcsIHBsYXRmb3JtRXZlbnQ6IGBsaW5rOiR7bGlua0lkfWAgfV0sXG4gICAgY29uY3VycmVuY3k6IHsgbW9kZTogJ2xhdGVzdCcgfSxcbiAgICBlcnJvclBvbGljeTogeyBtb2RlOiAnZmFpbFN0b3AnIH0sXG4gICAgZGlhZ25vc3RpY3NMZXZlbDogJ29mZicsXG4gIH1cblxuICByZXR1cm4gTWV0YS5hdHRhY2hNZXRhKHdyYXBwZWQsIHtcbiAgICBkZWZpbml0aW9uLFxuICAgIGtpbmQ6ICdsaW5rJyxcbiAgfSkgYXMgUHJvY2Vzc0VmZmVjdDxFLCBSPlxufVxuXG50eXBlIERlY2xhcmF0aXZlUmVhZE5vZGUgPSB7XG4gIHJlYWRvbmx5IF90YWc6ICdyZWFkTm9kZSdcbiAgcmVhZG9ubHkgbW9kdWxlSWQ6IHN0cmluZ1xuICByZWFkb25seSB0YWc6IE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPlxuICByZWFkb25seSByZWFkUXVlcnk6IFJlYWRRdWVyeS5SZWFkUXVlcnlDb21waWxlZDxhbnksIGFueT5cbn1cblxudHlwZSBEZWNsYXJhdGl2ZURpc3BhdGNoTm9kZSA9IHtcbiAgcmVhZG9ubHkgX3RhZzogJ2Rpc3BhdGNoTm9kZSdcbiAgcmVhZG9ubHkgbW9kdWxlSWQ6IHN0cmluZ1xuICByZWFkb25seSB0YWc6IE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPlxuICByZWFkb25seSBhY3Rpb25UYWc6IHN0cmluZ1xufVxuXG50eXBlIERlY2xhcmF0aXZlTGlua0VkZ2VTcGVjID0ge1xuICByZWFkb25seSBmcm9tOiBEZWNsYXJhdGl2ZVJlYWROb2RlXG4gIHJlYWRvbmx5IHRvOiBEZWNsYXJhdGl2ZURpc3BhdGNoTm9kZVxufVxuXG50eXBlIERlY2xhcmF0aXZlTGlua0hhbmRsZXM8TXMgZXh0ZW5kcyByZWFkb25seSBMaW5rTW9kdWxlVG9rZW48c3RyaW5nLCBBbnlNb2R1bGVTaGFwZT5bXT4gPSB7XG4gIFtNIGluIE1zW251bWJlcl0gYXMgTGlua01vZHVsZUlkT2Y8TT5dOiB7XG4gICAgcmVhZG9ubHkgcmVhZDogPFMsIFY+KHNlbGVjdG9yOiBSZWFkUXVlcnkuUmVhZFF1ZXJ5SW5wdXQ8UywgVj4pID0+IERlY2xhcmF0aXZlUmVhZE5vZGVcbiAgICByZWFkb25seSBkaXNwYXRjaDogKGFjdGlvblRhZzogc3RyaW5nKSA9PiBEZWNsYXJhdGl2ZURpc3BhdGNoTm9kZVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rRGVjbGFyYXRpdmU8TXMgZXh0ZW5kcyByZWFkb25seSBMaW5rTW9kdWxlVG9rZW48c3RyaW5nLCBBbnlNb2R1bGVTaGFwZT5bXT4oXG4gIGNvbmZpZzogTGlua0NvbmZpZzxNcz4sXG4gIGJ1aWxkOiAoJDogRGVjbGFyYXRpdmVMaW5rSGFuZGxlczxNcz4pID0+IFJlYWRvbmx5QXJyYXk8RGVjbGFyYXRpdmVMaW5rRWRnZVNwZWM+LFxuKTogUHJvY2Vzc0VmZmVjdDxuZXZlciwgbmV2ZXI+IHtcbiAgY29uc3QgbGlua0lkID1cbiAgICBjb25maWcuaWQgPz9cbiAgICBbLi4uY29uZmlnLm1vZHVsZXNdXG4gICAgICAubWFwKChtKSA9PiBtLmlkKVxuICAgICAgLnNvcnQoKVxuICAgICAgLmpvaW4oJ34nKVxuXG4gIGNvbnN0IG1vZHVsZXNSZWNvcmQgPSBPYmplY3QuY3JlYXRlKG51bGwpIGFzIE1vZHVsZXNSZWNvcmQ8TXM+XG4gIGNvbnN0IHJlcXVpcmVzID0gbmV3IFNldDxzdHJpbmc+KClcblxuICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBjb25maWcubW9kdWxlcykge1xuICAgIGNvbnN0IHRhZyA9IHVud3JhcE1vZHVsZVRhZyhtb2R1bGUpXG4gICAgcmVxdWlyZXMuYWRkKFN0cmluZyh0YWcuaWQpKVxuICAgIDsobW9kdWxlc1JlY29yZCBhcyBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVUYWc8c3RyaW5nLCBBbnlNb2R1bGVTaGFwZT4+KVt0YWcuaWRdID0gdGFnIGFzIHVua25vd24gYXMgTW9kdWxlVGFnPFxuICAgICAgc3RyaW5nLFxuICAgICAgQW55TW9kdWxlU2hhcGVcbiAgICA+XG4gIH1cblxuICBjb25zdCBoYW5kbGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKSBhcyBEZWNsYXJhdGl2ZUxpbmtIYW5kbGVzPE1zPlxuICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKG1vZHVsZXNSZWNvcmQpIGFzIEFycmF5PGtleW9mIE1vZHVsZXNSZWNvcmQ8TXM+ICYgc3RyaW5nPikge1xuICAgIGNvbnN0IHRhZyA9IChtb2R1bGVzUmVjb3JkIGFzIGFueSlbaWRdIGFzIE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPlxuICAgIDsoaGFuZGxlcyBhcyBhbnkpW2lkXSA9IHtcbiAgICAgIHJlYWQ6IChzZWxlY3RvcjogUmVhZFF1ZXJ5LlJlYWRRdWVyeUlucHV0PGFueSwgYW55PikgPT4ge1xuICAgICAgICBjb25zdCBjb21waWxlZCA9IFJlYWRRdWVyeS5jb21waWxlKHNlbGVjdG9yKVxuICAgICAgICBjb25zdCBzdGF0aWNJciA9IGNvbXBpbGVkLnN0YXRpY0lyXG4gICAgICAgIGNvbnN0IG9rID0gc3RhdGljSXIubGFuZSA9PT0gJ3N0YXRpYycgJiYgc3RhdGljSXIucmVhZHNEaWdlc3QgIT0gbnVsbCAmJiBzdGF0aWNJci5mYWxsYmFja1JlYXNvbiA9PSBudWxsXG4gICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgW1Byb2Nlc3MubGlua0RlY2xhcmF0aXZlXSBSZWFkUXVlcnkgbXVzdCBiZSBzdGF0aWMgd2l0aCByZWFkc0RpZ2VzdCAobW9kdWxlSWQ9JHtpZH0sIHNlbGVjdG9ySWQ9JHtzdGF0aWNJci5zZWxlY3RvcklkfSwgbGFuZT0ke3N0YXRpY0lyLmxhbmV9LCBmYWxsYmFja1JlYXNvbj0ke3N0YXRpY0lyLmZhbGxiYWNrUmVhc29ufSkuIGAgK1xuICAgICAgICAgICAgICAnRml4OiB1c2UgUmVhZFF1ZXJ5Lm1ha2UoLi4uKSBvciBhbm5vdGF0ZSBzZWxlY3Rvci5maWVsZFBhdGhzLicsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IF90YWc6ICdyZWFkTm9kZScsIG1vZHVsZUlkOiBpZCwgdGFnLCByZWFkUXVlcnk6IGNvbXBpbGVkIH0gYXMgRGVjbGFyYXRpdmVSZWFkTm9kZVxuICAgICAgfSxcbiAgICAgIGRpc3BhdGNoOiAoYWN0aW9uVGFnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb25UYWcgIT09ICdzdHJpbmcnIHx8IGFjdGlvblRhZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tQcm9jZXNzLmxpbmtEZWNsYXJhdGl2ZV0gYWN0aW9uVGFnIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBfdGFnOiAnZGlzcGF0Y2hOb2RlJywgbW9kdWxlSWQ6IGlkLCB0YWcsIGFjdGlvblRhZyB9IGFzIERlY2xhcmF0aXZlRGlzcGF0Y2hOb2RlXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGVkZ2VzID0gYnVpbGQoaGFuZGxlcylcbiAgaWYgKCFBcnJheS5pc0FycmF5KGVkZ2VzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignW1Byb2Nlc3MubGlua0RlY2xhcmF0aXZlXSBidWlsZCguLi4pIG11c3QgcmV0dXJuIGFuIGFycmF5IG9mIGVkZ2VzJylcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBlZGdlc1xuICAgIC5maWx0ZXIoKGUpOiBlIGlzIERlY2xhcmF0aXZlTGlua0VkZ2VTcGVjID0+IEJvb2xlYW4oZSAmJiBlLmZyb20gJiYgZS50bykpXG4gICAgLm1hcCgoZSkgPT4ge1xuICAgICAgaWYgKGUuZnJvbS5fdGFnICE9PSAncmVhZE5vZGUnIHx8IGUudG8uX3RhZyAhPT0gJ2Rpc3BhdGNoTm9kZScpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbUHJvY2Vzcy5saW5rRGVjbGFyYXRpdmVdIEludmFsaWQgZWRnZSBzcGVjIHJldHVybmVkIGZyb20gYnVpbGQoLi4uKScpXG4gICAgICB9XG4gICAgICByZXR1cm4gZVxuICAgIH0pXG4gICAgLnNsaWNlKClcbiAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYWsgPSBgJHthLmZyb20ubW9kdWxlSWR9OiR7YS5mcm9tLnJlYWRRdWVyeS5zdGF0aWNJci5zZWxlY3RvcklkfS0+JHthLnRvLm1vZHVsZUlkfToke2EudG8uYWN0aW9uVGFnfWBcbiAgICAgIGNvbnN0IGJrID0gYCR7Yi5mcm9tLm1vZHVsZUlkfToke2IuZnJvbS5yZWFkUXVlcnkuc3RhdGljSXIuc2VsZWN0b3JJZH0tPiR7Yi50by5tb2R1bGVJZH06JHtiLnRvLmFjdGlvblRhZ31gXG4gICAgICByZXR1cm4gYWsgPCBiayA/IC0xIDogYWsgPiBiayA/IDEgOiAwXG4gICAgfSlcblxuICBjb25zdCBwcm9ncmFtOiBFZmZlY3QuRWZmZWN0PHZvaWQsIG5ldmVyLCBhbnk+ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogRGVjbGFyYXRpdmVMaW5rUnVudGltZVRhZ1xuICAgIGNvbnN0IGNvbGxlY3RvcnMgPSB5aWVsZCogRmliZXJSZWYuZ2V0KGN1cnJlbnRDb252ZXJnZVN0YXRpY0lyQ29sbGVjdG9ycylcblxuICAgIGNvbnN0IHJ1bnRpbWVCeVRhZyA9IG5ldyBNYXA8TW9kdWxlVGFnPHN0cmluZywgQW55TW9kdWxlU2hhcGU+LCBhbnk+KClcbiAgICBjb25zdCByZXNvbHZlUnVudGltZSA9ICh0YWc6IE1vZHVsZVRhZzxzdHJpbmcsIEFueU1vZHVsZVNoYXBlPik6IEVmZmVjdC5FZmZlY3Q8YW55PiA9PlxuICAgICAgRWZmZWN0LnN1c3BlbmQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjYWNoZWQgPSBydW50aW1lQnlUYWcuZ2V0KHRhZylcbiAgICAgICAgaWYgKGNhY2hlZCkgcmV0dXJuIEVmZmVjdC5zdWNjZWVkKGNhY2hlZClcbiAgICAgICAgcmV0dXJuICh0YWcgYXMgYW55KS5waXBlKFxuICAgICAgICAgIEVmZmVjdC50YXAoKHJ0OiBhbnkpID0+XG4gICAgICAgICAgICBFZmZlY3Quc3luYygoKSA9PiB7XG4gICAgICAgICAgICAgIHJ1bnRpbWVCeVRhZy5zZXQodGFnLCBydClcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0pXG5cbiAgICBjb25zdCBub2RlczogQXJyYXk8YW55PiA9IFtdXG4gICAgY29uc3QgaXJFZGdlczogQXJyYXk8YW55PiA9IFtdXG4gICAgY29uc3QgcmVhZE5vZGVzOiBBcnJheTxhbnk+ID0gW11cbiAgICBjb25zdCBkaXNwYXRjaE5vZGVzOiBBcnJheTxhbnk+ID0gW11cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9ybWFsaXplZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgZWRnZSA9IG5vcm1hbGl6ZWRbaV1cbiAgICAgIGNvbnN0IGZyb21SdW50aW1lID0geWllbGQqIHJlc29sdmVSdW50aW1lKGVkZ2UuZnJvbS50YWcpXG4gICAgICBjb25zdCB0b1J1bnRpbWUgPSB5aWVsZCogcmVzb2x2ZVJ1bnRpbWUoZWRnZS50by50YWcpXG5cbiAgICAgIGNvbnN0IGZyb21LZXkgPSBgJHtmcm9tUnVudGltZS5tb2R1bGVJZH06OiR7ZnJvbVJ1bnRpbWUuaW5zdGFuY2VJZH1gXG4gICAgICBjb25zdCByZWFkTm9kZUlkID0gYHIke2l9YFxuICAgICAgY29uc3QgZGlzcGF0Y2hOb2RlSWQgPSBgZCR7aX1gXG5cbiAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICBpZDogcmVhZE5vZGVJZCxcbiAgICAgICAga2luZDogJ3JlYWRRdWVyeScsXG4gICAgICAgIG1vZHVsZUlkOiBmcm9tUnVudGltZS5tb2R1bGVJZCxcbiAgICAgICAgaW5zdGFuY2VLZXk6IGZyb21SdW50aW1lLmluc3RhbmNlSWQsXG4gICAgICAgIHJlYWRRdWVyeTogZWRnZS5mcm9tLnJlYWRRdWVyeS5zdGF0aWNJcixcbiAgICAgIH0pXG4gICAgICBub2Rlcy5wdXNoKHtcbiAgICAgICAgaWQ6IGRpc3BhdGNoTm9kZUlkLFxuICAgICAgICBraW5kOiAnZGlzcGF0Y2gnLFxuICAgICAgICBtb2R1bGVJZDogdG9SdW50aW1lLm1vZHVsZUlkLFxuICAgICAgICBpbnN0YW5jZUtleTogdG9SdW50aW1lLmluc3RhbmNlSWQsXG4gICAgICAgIGFjdGlvblRhZzogZWRnZS50by5hY3Rpb25UYWcsXG4gICAgICB9KVxuXG4gICAgICBpckVkZ2VzLnB1c2goeyBmcm9tOiByZWFkTm9kZUlkLCB0bzogZGlzcGF0Y2hOb2RlSWQgfSlcblxuICAgICAgcmVhZE5vZGVzLnB1c2goeyBub2RlSWQ6IHJlYWROb2RlSWQsIG1vZHVsZUluc3RhbmNlS2V5OiBmcm9tS2V5LCByZWFkUXVlcnk6IGVkZ2UuZnJvbS5yZWFkUXVlcnkgfSlcbiAgICAgIGRpc3BhdGNoTm9kZXMucHVzaCh7XG4gICAgICAgIG5vZGVJZDogZGlzcGF0Y2hOb2RlSWQsXG4gICAgICAgIGRpc3BhdGNoOiAocGF5bG9hZDogdW5rbm93bikgPT5cbiAgICAgICAgICAodG9SdW50aW1lLmRpc3BhdGNoKHsgX3RhZzogZWRnZS50by5hY3Rpb25UYWcsIHBheWxvYWQgfSBhcyBhbnkpIGFzIGFueSkucGlwZShFZmZlY3QuYXNWb2lkKSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgaXI6IERlY2xhcmF0aXZlTGlua0lSID0ge1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIG5vZGVzLFxuICAgICAgZWRnZXM6IGlyRWRnZXMsXG4gICAgfVxuXG4gICAgY29uc3QgcmVnaXN0cmF0aW9uID0ge1xuICAgICAgbGlua0lkLFxuICAgICAgaXIsXG4gICAgICByZWFkTm9kZXMsXG4gICAgICBkaXNwYXRjaE5vZGVzLFxuICAgIH0gYXMgY29uc3RcblxuICAgIGNvbnN0IHVucmVnaXN0ZXIgPSBydW50aW1lLnJlZ2lzdGVyRGVjbGFyYXRpdmVMaW5rKHJlZ2lzdHJhdGlvbiBhcyBhbnkpXG5cbiAgICBpZiAoY29sbGVjdG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleHBvcnRlZCA9IGV4cG9ydERlY2xhcmF0aXZlTGlua0lyKHsgbGlua0lkLCBpciB9KVxuICAgICAgZm9yIChjb25zdCBjb2xsZWN0b3Igb2YgY29sbGVjdG9ycykge1xuICAgICAgICBjb2xsZWN0b3IucmVnaXN0ZXIoZXhwb3J0ZWQgYXMgYW55KVxuICAgICAgfVxuICAgIH1cblxuICAgIHlpZWxkKiBFZmZlY3QuYWRkRmluYWxpemVyKCgpID0+XG4gICAgICBFZmZlY3Quc3luYygoKSA9PiB7XG4gICAgICAgIHVucmVnaXN0ZXIoKVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgeWllbGQqIEVmZmVjdC5uZXZlclxuICB9KVxuXG4gIGNvbnN0IGRlZmluaXRpb246IFByb2Nlc3NEZWZpbml0aW9uID0ge1xuICAgIHByb2Nlc3NJZDogYGRsaW5rOiR7bGlua0lkfWAsXG4gICAgcmVxdWlyZXM6IEFycmF5LmZyb20ocmVxdWlyZXMpLFxuICAgIHRyaWdnZXJzOiBERUZBVUxUX1RSSUdHRVJTLFxuICAgIGNvbmN1cnJlbmN5OiB7IG1vZGU6ICdsYXRlc3QnIH0sXG4gICAgZXJyb3JQb2xpY3k6IHsgbW9kZTogJ2ZhaWxTdG9wJyB9LFxuICAgIGRpYWdub3N0aWNzTGV2ZWw6ICdvZmYnLFxuICB9XG5cbiAgcmV0dXJuIE1ldGEuYXR0YWNoTWV0YShwcm9ncmFtLCB7XG4gICAgZGVmaW5pdGlvbixcbiAgICBraW5kOiAnZGVjbGFyYXRpdmVMaW5rJyxcbiAgfSkgYXMgUHJvY2Vzc0VmZmVjdDxuZXZlciwgbmV2ZXI+XG59XG4iLCAiaW1wb3J0IHsgZm52MWEzMiwgc3RhYmxlU3RyaW5naWZ5IH0gZnJvbSAnLi4vLi4vZGlnZXN0LmpzJ1xuaW1wb3J0IHR5cGUgeyBSZWFkUXVlcnlTdGF0aWNJciB9IGZyb20gJy4vUmVhZFF1ZXJ5LmpzJ1xuXG5leHBvcnQgdHlwZSBEZWNsYXJhdGl2ZUxpbmtOb2RlSWQgPSBzdHJpbmdcblxuZXhwb3J0IHR5cGUgRGVjbGFyYXRpdmVMaW5rTm9kZSA9XG4gIHwge1xuICAgICAgcmVhZG9ubHkgaWQ6IERlY2xhcmF0aXZlTGlua05vZGVJZFxuICAgICAgcmVhZG9ubHkga2luZDogJ3JlYWRRdWVyeSdcbiAgICAgIHJlYWRvbmx5IG1vZHVsZUlkOiBzdHJpbmdcbiAgICAgIHJlYWRvbmx5IGluc3RhbmNlS2V5Pzogc3RyaW5nXG4gICAgICAvKiogTVVTVCByZXVzZSBgUmVhZFF1ZXJ5U3RhdGljSXJgIChubyBwYXJhbGxlbCBzZWxlY3Rvci1saWtlIElSKS4gKi9cbiAgICAgIHJlYWRvbmx5IHJlYWRRdWVyeTogUmVhZFF1ZXJ5U3RhdGljSXJcbiAgICB9XG4gIHwge1xuICAgICAgcmVhZG9ubHkgaWQ6IERlY2xhcmF0aXZlTGlua05vZGVJZFxuICAgICAgcmVhZG9ubHkga2luZDogJ2Rpc3BhdGNoJ1xuICAgICAgcmVhZG9ubHkgbW9kdWxlSWQ6IHN0cmluZ1xuICAgICAgcmVhZG9ubHkgaW5zdGFuY2VLZXk/OiBzdHJpbmdcbiAgICAgIHJlYWRvbmx5IGFjdGlvblRhZzogc3RyaW5nXG4gICAgfVxuXG5leHBvcnQgdHlwZSBEZWNsYXJhdGl2ZUxpbmtFZGdlID0ge1xuICByZWFkb25seSBmcm9tOiBEZWNsYXJhdGl2ZUxpbmtOb2RlSWRcbiAgcmVhZG9ubHkgdG86IERlY2xhcmF0aXZlTGlua05vZGVJZFxufVxuXG4vKipcbiAqIERlY2xhcmF0aXZlTGlua0lSICh2MSk6XG4gKiAtIEpTT04gc2VyaWFsaXphYmxlLCBJUi1yZWNvZ25pemFibGUgY3Jvc3MtbW9kdWxlIGRlcGVuZGVuY3kgZ3JhcGguXG4gKiAtIFJlYWQgc2lkZTogc3RhdGljIFJlYWRRdWVyeSBvbmx5IChtdXN0IGluY2x1ZGUgcmVhZHNEaWdlc3QsIG5vIGZhbGxiYWNrUmVhc29uKS5cbiAqIC0gV3JpdGUgc2lkZTogZGlzcGF0Y2ggb25seSAobm8gZGlyZWN0IHN0YXRlIHdyaXRlcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjbGFyYXRpdmVMaW5rSVIge1xuICByZWFkb25seSB2ZXJzaW9uOiAxXG4gIHJlYWRvbmx5IG5vZGVzOiBSZWFkb25seUFycmF5PERlY2xhcmF0aXZlTGlua05vZGU+XG4gIHJlYWRvbmx5IGVkZ2VzOiBSZWFkb25seUFycmF5PERlY2xhcmF0aXZlTGlua0VkZ2U+XG59XG5cbmV4cG9ydCBjb25zdCBnZXREZWNsYXJhdGl2ZUxpbmtJckRpZ2VzdCA9IChpcjogRGVjbGFyYXRpdmVMaW5rSVIpOiBzdHJpbmcgPT5cbiAgYGRsaW5rX2lyX3YxOiR7Zm52MWEzMihzdGFibGVTdHJpbmdpZnkoaXIpKX1gXG5cbi8qKlxuICogRXhwb3J0IGVudmVsb3BlIGNvbXBhdGlibGUgd2l0aCB0aGUgQ29udmVyZ2VTdGF0aWNJckNvbGxlY3RvciBidXM6XG4gKiAtIEV2aWRlbmNlQ29sbGVjdG9yIGluZGV4ZXMgYnkgYHN0YXRpY0lyRGlnZXN0YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNsYXJhdGl2ZUxpbmtJckV4cG9ydCB7XG4gIHJlYWRvbmx5IHN0YXRpY0lyRGlnZXN0OiBzdHJpbmdcbiAgcmVhZG9ubHkgbW9kdWxlSWQ6IHN0cmluZ1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmdcbiAgcmVhZG9ubHkga2luZDogJ2RlY2xhcmF0aXZlTGlua0lyJ1xuICByZWFkb25seSBpcjogRGVjbGFyYXRpdmVMaW5rSVJcbn1cblxuZXhwb3J0IGNvbnN0IGV4cG9ydERlY2xhcmF0aXZlTGlua0lyID0gKGFyZ3M6IHsgcmVhZG9ubHkgbGlua0lkOiBzdHJpbmc7IHJlYWRvbmx5IGlyOiBEZWNsYXJhdGl2ZUxpbmtJUiB9KTogRGVjbGFyYXRpdmVMaW5rSXJFeHBvcnQgPT4gKHtcbiAgc3RhdGljSXJEaWdlc3Q6IGdldERlY2xhcmF0aXZlTGlua0lyRGlnZXN0KGFyZ3MuaXIpLFxuICBtb2R1bGVJZDogYGxpbms6JHthcmdzLmxpbmtJZH1gLFxuICBpbnN0YW5jZUlkOiAncnVudGltZScsXG4gIGtpbmQ6ICdkZWNsYXJhdGl2ZUxpbmtJcicsXG4gIGlyOiBhcmdzLmlyLFxufSlcblxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLFFBQVEsZ0JBQWdCOzs7QUN1QzFCLElBQU0sNkJBQTZCLENBQUMsT0FDekMsZUFBZSxRQUFRLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQWN0QyxJQUFNLDBCQUEwQixDQUFDLFVBQWdHO0FBQUEsRUFDdEksZ0JBQWdCLDJCQUEyQixLQUFLLEVBQUU7QUFBQSxFQUNsRCxVQUFVLFFBQVEsS0FBSyxNQUFNO0FBQUEsRUFDN0IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sSUFBSSxLQUFLO0FBQ1g7OztBRGxCQSxJQUFNLG1CQUFzRCxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsZUFBZSxlQUFlLENBQUM7QUFFckgsSUFBTSxzQkFBc0IsQ0FBQyxVQUFvRDtBQUMvRSxRQUFNLE9BQU8sT0FBTyxVQUFVLFdBQVksRUFBRSxXQUFXLE1BQU0sSUFBOEM7QUFFM0csUUFBTSxZQUFZLEtBQUs7QUFDdkIsTUFBSSxPQUFPLGNBQWMsWUFBWSxVQUFVLFdBQVcsR0FBRztBQUMzRCxVQUFNLElBQUksTUFBTSxxREFB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