lakutata 0.0.1

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 (594) hide show
  1. package/.idea/codeStyles/Project.xml +18 -0
  2. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  4. package/.idea/lakutata.iml +13 -0
  5. package/.idea/modules.xml +8 -0
  6. package/.idea/vcs.xml +6 -0
  7. package/LICENSE +21 -0
  8. package/README.md +1 -0
  9. package/build/Application-78a416de.d.ts +387 -0
  10. package/build/Application-b5e19e08.d.ts +387 -0
  11. package/build/Components.cjs +55 -0
  12. package/build/Components.d.cts +9 -0
  13. package/build/Components.d.ts +9 -0
  14. package/build/Components.js +44 -0
  15. package/build/Core.cjs +148 -0
  16. package/build/Core.d.cts +33 -0
  17. package/build/Core.d.ts +33 -0
  18. package/build/Core.js +71 -0
  19. package/build/Crypto.cjs +96 -0
  20. package/build/Crypto.d.cts +19 -0
  21. package/build/Crypto.d.ts +19 -0
  22. package/build/Crypto.js +41 -0
  23. package/build/Decorators.cjs +100 -0
  24. package/build/Decorators.d.cts +23 -0
  25. package/build/Decorators.d.ts +23 -0
  26. package/build/Decorators.js +45 -0
  27. package/build/DependencyInjectionContainer-871a6c03.d.ts +340 -0
  28. package/build/DependencyInjectionContainer-f037ac36.d.ts +340 -0
  29. package/build/Exceptions.cjs +144 -0
  30. package/build/Exceptions.d.cts +28 -0
  31. package/build/Exceptions.d.ts +28 -0
  32. package/build/Exceptions.js +37 -0
  33. package/build/Hash.cjs +223 -0
  34. package/build/Hash.d.cts +535 -0
  35. package/build/Hash.d.ts +535 -0
  36. package/build/Hash.js +10 -0
  37. package/build/Time.cjs +14 -0
  38. package/build/Time.d.cts +5 -0
  39. package/build/Time.d.ts +5 -0
  40. package/build/Time.js +5 -0
  41. package/build/TimeInput-24fced42.d.ts +243 -0
  42. package/build/TimeInput-4401fc58.d.ts +243 -0
  43. package/build/Utilities.cjs +100 -0
  44. package/build/Utilities.d.cts +212 -0
  45. package/build/Utilities.d.ts +212 -0
  46. package/build/Utilities.js +7 -0
  47. package/build/Validator.cjs +24 -0
  48. package/build/Validator.d.cts +1851 -0
  49. package/build/Validator.d.ts +1851 -0
  50. package/build/Validator.js +11 -0
  51. package/build/chunk-26TQI22I.js +196 -0
  52. package/build/chunk-27OFA7C3.js +16 -0
  53. package/build/chunk-2C2UILFN.js +23 -0
  54. package/build/chunk-2CHYQHWR.cjs +16 -0
  55. package/build/chunk-2DN35UQB.cjs +10947 -0
  56. package/build/chunk-2E4TF6LU.cjs +16 -0
  57. package/build/chunk-2PLJEW2R.js +14 -0
  58. package/build/chunk-2RW3VMNS.js +45 -0
  59. package/build/chunk-2T6JU2UH.js +14 -0
  60. package/build/chunk-3CX3GCQF.js +32 -0
  61. package/build/chunk-3JIQCDQG.cjs +25 -0
  62. package/build/chunk-3KLEN3PR.js +14 -0
  63. package/build/chunk-3LZRQPJ5.js +14 -0
  64. package/build/chunk-3NHHHZFR.cjs +870 -0
  65. package/build/chunk-4332C5BW.js +30 -0
  66. package/build/chunk-46V7GHKE.cjs +25 -0
  67. package/build/chunk-4EPPSZ7L.js +14 -0
  68. package/build/chunk-4FEEQIQ4.js +23 -0
  69. package/build/chunk-4G2ZCUBN.js +5570 -0
  70. package/build/chunk-4KTVY73U.js +15 -0
  71. package/build/chunk-4MQXSUTL.cjs +14 -0
  72. package/build/chunk-4OHSPWRQ.js +34 -0
  73. package/build/chunk-4PK4TGU4.cjs +16 -0
  74. package/build/chunk-4YXUEJSO.js +23 -0
  75. package/build/chunk-5475IFR4.cjs +16 -0
  76. package/build/chunk-5B5Z4GCR.cjs +17 -0
  77. package/build/chunk-5FPTDIKI.cjs +16 -0
  78. package/build/chunk-5NK7E2HA.js +69 -0
  79. package/build/chunk-67F5WP5Z.cjs +8 -0
  80. package/build/chunk-6BJTKEXZ.cjs +25 -0
  81. package/build/chunk-6WNLPTDY.cjs +8 -0
  82. package/build/chunk-7G7FCNEG.cjs +8 -0
  83. package/build/chunk-7IVNTVYK.cjs +16 -0
  84. package/build/chunk-7MJAWOWL.js +22896 -0
  85. package/build/chunk-7MTOK62N.js +767 -0
  86. package/build/chunk-7PADGZPI.cjs +129 -0
  87. package/build/chunk-7ZUM53G6.js +14 -0
  88. package/build/chunk-A4BYNKYF.js +42 -0
  89. package/build/chunk-A7F6LCRA.cjs +16 -0
  90. package/build/chunk-AFV3VN3X.cjs +8 -0
  91. package/build/chunk-AGHMOCC3.cjs +16 -0
  92. package/build/chunk-AHUH4FWQ.cjs +29 -0
  93. package/build/chunk-AM4YMG2S.js +6 -0
  94. package/build/chunk-ANDEVIKJ.cjs +16 -0
  95. package/build/chunk-APETX7ZT.cjs +16 -0
  96. package/build/chunk-ASMC7EUP.js +6 -0
  97. package/build/chunk-BDCRHGKN.js +6 -0
  98. package/build/chunk-BDJXMO44.js +2920 -0
  99. package/build/chunk-BE7ICF5R.js +32 -0
  100. package/build/chunk-BEDKPRVX.cjs +17 -0
  101. package/build/chunk-BFE66ADZ.cjs +34 -0
  102. package/build/chunk-BKCT2HSQ.js +178 -0
  103. package/build/chunk-BMNC4W46.js +20 -0
  104. package/build/chunk-BO7Y6HNS.cjs +176 -0
  105. package/build/chunk-D4H35ART.cjs +53 -0
  106. package/build/chunk-D5DE7Z4J.js +29 -0
  107. package/build/chunk-DHSSJJMD.cjs +25 -0
  108. package/build/chunk-DIMOR6NE.cjs +8 -0
  109. package/build/chunk-DN5TSX6S.cjs +244 -0
  110. package/build/chunk-EEH5LCBP.cjs +16 -0
  111. package/build/chunk-EFYDUUXT.cjs +92 -0
  112. package/build/chunk-ENJSEFE4.js +14 -0
  113. package/build/chunk-EPYJVQHQ.js +6 -0
  114. package/build/chunk-EUVLTNDV.js +32 -0
  115. package/build/chunk-EXQVCESB.cjs +20 -0
  116. package/build/chunk-EYPPC6HP.js +18 -0
  117. package/build/chunk-F5NKGQDL.cjs +16 -0
  118. package/build/chunk-F7RNH2H2.js +266 -0
  119. package/build/chunk-FCTV4OB7.cjs +50 -0
  120. package/build/chunk-FHEXUE67.js +29 -0
  121. package/build/chunk-FJP3KNXK.js +23 -0
  122. package/build/chunk-FJQSLRIP.js +14 -0
  123. package/build/chunk-FSFWPTIC.js +6 -0
  124. package/build/chunk-FTKFMQHJ.cjs +16 -0
  125. package/build/chunk-FW26MPE4.js +69 -0
  126. package/build/chunk-FZNRGZGE.js +6372 -0
  127. package/build/chunk-G7EDOLQ7.cjs +100 -0
  128. package/build/chunk-GGY7LCMQ.cjs +73 -0
  129. package/build/chunk-GLWUJIMW.cjs +8 -0
  130. package/build/chunk-GZ5KN2PE.js +6 -0
  131. package/build/chunk-HBPRX3WA.cjs +202 -0
  132. package/build/chunk-HJAQ6WJM.cjs +288 -0
  133. package/build/chunk-HJSJA5CF.js +14 -0
  134. package/build/chunk-HKAY7FWM.js +28 -0
  135. package/build/chunk-HMKTNRQF.js +14 -0
  136. package/build/chunk-HODDA5D5.js +199 -0
  137. package/build/chunk-HPKJUFTM.js +14 -0
  138. package/build/chunk-HWCTWIVZ.cjs +30 -0
  139. package/build/chunk-HXWC4YN6.cjs +22908 -0
  140. package/build/chunk-HZJ7XFHQ.cjs +8 -0
  141. package/build/chunk-I5TGKTX6.js +18 -0
  142. package/build/chunk-I7J6V3EU.cjs +34 -0
  143. package/build/chunk-IKWXYUGY.js +14 -0
  144. package/build/chunk-IYGGR65W.cjs +16 -0
  145. package/build/chunk-J6RXNX2K.js +174 -0
  146. package/build/chunk-JAEEMFEZ.cjs +24 -0
  147. package/build/chunk-JFOMNL5I.cjs +22 -0
  148. package/build/chunk-JPV2PUHF.cjs +8 -0
  149. package/build/chunk-JR726PDZ.cjs +70 -0
  150. package/build/chunk-JTKOYDJB.js +5914 -0
  151. package/build/chunk-JU53NOVA.cjs +31 -0
  152. package/build/chunk-JVSBYHUY.js +10944 -0
  153. package/build/chunk-JYBISTRN.cjs +25 -0
  154. package/build/chunk-K2ALA7QI.js +12 -0
  155. package/build/chunk-KG6DPM4B.js +14 -0
  156. package/build/chunk-KNSBLLL2.cjs +32 -0
  157. package/build/chunk-KNTGBUSY.js +6 -0
  158. package/build/chunk-KWOHVRRL.js +6 -0
  159. package/build/chunk-L3IVYIVA.js +23 -0
  160. package/build/chunk-LBL5XNWX.js +221 -0
  161. package/build/chunk-LBOBUFWZ.js +6 -0
  162. package/build/chunk-LEJXJUBE.js +6 -0
  163. package/build/chunk-LJTCXKC4.js +242 -0
  164. package/build/chunk-MBKTJ3KM.cjs +118 -0
  165. package/build/chunk-MDE5SRLT.cjs +16 -0
  166. package/build/chunk-MEKICSEL.js +22 -0
  167. package/build/chunk-MNDBRDT2.cjs +608 -0
  168. package/build/chunk-MSWZLYS7.cjs +5916 -0
  169. package/build/chunk-MT2OB376.js +14 -0
  170. package/build/chunk-MVWB4XDJ.js +14 -0
  171. package/build/chunk-MXAAAL2S.js +53 -0
  172. package/build/chunk-N37KV2VV.cjs +199 -0
  173. package/build/chunk-NZ5IZMM5.cjs +2922 -0
  174. package/build/chunk-O2NOYN65.js +54 -0
  175. package/build/chunk-OAD22QZQ.js +6 -0
  176. package/build/chunk-OIFILR4I.js +125 -0
  177. package/build/chunk-OJGBPS2B.cjs +16 -0
  178. package/build/chunk-OMPATIMZ.cjs +71 -0
  179. package/build/chunk-P3Z7ZEGJ.cjs +18 -0
  180. package/build/chunk-P6BBXCBD.cjs +6425 -0
  181. package/build/chunk-PE4C2TIO.cjs +16 -0
  182. package/build/chunk-PF2WAZLH.cjs +52 -0
  183. package/build/chunk-PFFTGOAR.cjs +25 -0
  184. package/build/chunk-PFUZLHWJ.cjs +25 -0
  185. package/build/chunk-POE7A7NF.cjs +180 -0
  186. package/build/chunk-PQSDA5BN.js +50 -0
  187. package/build/chunk-PR5TPAGH.js +14 -0
  188. package/build/chunk-PXMWVOKK.cjs +16 -0
  189. package/build/chunk-PZ5OJC4I.cjs +16 -0
  190. package/build/chunk-Q4LNTPEI.cjs +34 -0
  191. package/build/chunk-QCA5YGYV.js +14 -0
  192. package/build/chunk-QGGML4PP.js +17 -0
  193. package/build/chunk-QHW273SN.js +32 -0
  194. package/build/chunk-QJJRQMA6.cjs +8 -0
  195. package/build/chunk-QKB76MIV.cjs +769 -0
  196. package/build/chunk-QKVPGRI5.cjs +8 -0
  197. package/build/chunk-QME47CJL.cjs +8 -0
  198. package/build/chunk-QNJ6XBYQ.js +14 -0
  199. package/build/chunk-QWYKUNU5.js +14 -0
  200. package/build/chunk-QXTBP6TW.js +116 -0
  201. package/build/chunk-RH3LAIQS.js +32 -0
  202. package/build/chunk-RMAXG5F7.js +118 -0
  203. package/build/chunk-RUHAPGDE.js +14 -0
  204. package/build/chunk-S4KA3ZGO.js +6 -0
  205. package/build/chunk-SAGMV3YX.cjs +16 -0
  206. package/build/chunk-SCWEQ5JA.cjs +34 -0
  207. package/build/chunk-SEKBDIJH.cjs +16 -0
  208. package/build/chunk-SGWWTKLW.cjs +16 -0
  209. package/build/chunk-SWCU6OID.cjs +61 -0
  210. package/build/chunk-T4C7UJEZ.js +29 -0
  211. package/build/chunk-TBWIKIS3.cjs +8 -0
  212. package/build/chunk-TS74DN3N.cjs +229 -0
  213. package/build/chunk-TXTNUC7S.cjs +16 -0
  214. package/build/chunk-UEGDBJEG.cjs +127 -0
  215. package/build/chunk-UR2ZK7MI.cjs +16 -0
  216. package/build/chunk-VAOR6JOP.js +14 -0
  217. package/build/chunk-VELZ3KJY.cjs +45 -0
  218. package/build/chunk-VHTAHAD6.cjs +34 -0
  219. package/build/chunk-VISA22LF.js +14 -0
  220. package/build/chunk-VOFRWVGM.js +23 -0
  221. package/build/chunk-VPRNM6FU.cjs +118 -0
  222. package/build/chunk-VTFNEUOF.js +14 -0
  223. package/build/chunk-VVNU27G2.js +868 -0
  224. package/build/chunk-W3TQER3B.cjs +31 -0
  225. package/build/chunk-WINISBV4.js +70 -0
  226. package/build/chunk-WSEZ7DZV.js +14 -0
  227. package/build/chunk-WW57G6RG.js +124 -0
  228. package/build/chunk-WYJCE3KY.cjs +5593 -0
  229. package/build/chunk-WZI5UPER.cjs +61 -0
  230. package/build/chunk-WZZF2IEV.js +14 -0
  231. package/build/chunk-X4AIZSIY.cjs +47 -0
  232. package/build/chunk-XO6M5AYN.js +585 -0
  233. package/build/chunk-XWP76C6E.js +25 -0
  234. package/build/chunk-Y7O5SCF6.cjs +16 -0
  235. package/build/chunk-YEBPQG7X.js +96 -0
  236. package/build/chunk-YT4CYDJ3.js +14 -0
  237. package/build/chunk-ZG3PHRVQ.cjs +20 -0
  238. package/build/chunk-ZG7QF5S2.cjs +16 -0
  239. package/build/chunk-ZJYLWSBE.js +90 -0
  240. package/build/chunk-ZYBMNLGI.js +48 -0
  241. package/build/constants/DefaultValue.cjs +14 -0
  242. package/build/constants/DefaultValue.d.cts +9 -0
  243. package/build/constants/DefaultValue.d.ts +9 -0
  244. package/build/constants/DefaultValue.js +5 -0
  245. package/build/constants/MetadataKey.cjs +114 -0
  246. package/build/constants/MetadataKey.d.cts +30 -0
  247. package/build/constants/MetadataKey.d.ts +30 -0
  248. package/build/constants/MetadataKey.js +5 -0
  249. package/build/decorators/ControllerDecorators.cjs +21 -0
  250. package/build/decorators/ControllerDecorators.d.cts +32 -0
  251. package/build/decorators/ControllerDecorators.d.ts +32 -0
  252. package/build/decorators/ControllerDecorators.js +12 -0
  253. package/build/decorators/DependencyInjectionDecorators.cjs +78 -0
  254. package/build/decorators/DependencyInjectionDecorators.d.cts +75 -0
  255. package/build/decorators/DependencyInjectionDecorators.d.ts +75 -0
  256. package/build/decorators/DependencyInjectionDecorators.js +41 -0
  257. package/build/decorators/ValidationDecorators.cjs +35 -0
  258. package/build/decorators/ValidationDecorators.d.cts +36 -0
  259. package/build/decorators/ValidationDecorators.d.ts +36 -0
  260. package/build/decorators/ValidationDecorators.js +14 -0
  261. package/build/exceptions/DependencyInjectionException.cjs +18 -0
  262. package/build/exceptions/DependencyInjectionException.d.cts +8 -0
  263. package/build/exceptions/DependencyInjectionException.d.ts +8 -0
  264. package/build/exceptions/DependencyInjectionException.js +9 -0
  265. package/build/exceptions/InvalidConfigurableValueException.cjs +18 -0
  266. package/build/exceptions/InvalidConfigurableValueException.d.cts +8 -0
  267. package/build/exceptions/InvalidConfigurableValueException.d.ts +8 -0
  268. package/build/exceptions/InvalidConfigurableValueException.js +9 -0
  269. package/build/exceptions/InvalidDTOValueException.cjs +18 -0
  270. package/build/exceptions/InvalidDTOValueException.d.cts +8 -0
  271. package/build/exceptions/InvalidDTOValueException.d.ts +8 -0
  272. package/build/exceptions/InvalidDTOValueException.js +9 -0
  273. package/build/exceptions/InvalidGlobStringException.cjs +18 -0
  274. package/build/exceptions/InvalidGlobStringException.d.cts +8 -0
  275. package/build/exceptions/InvalidGlobStringException.d.ts +8 -0
  276. package/build/exceptions/InvalidGlobStringException.js +9 -0
  277. package/build/exceptions/MethodNotFoundException.cjs +18 -0
  278. package/build/exceptions/MethodNotFoundException.d.cts +8 -0
  279. package/build/exceptions/MethodNotFoundException.d.ts +8 -0
  280. package/build/exceptions/MethodNotFoundException.js +9 -0
  281. package/build/exceptions/NotSupportHashException.cjs +18 -0
  282. package/build/exceptions/NotSupportHashException.d.cts +8 -0
  283. package/build/exceptions/NotSupportHashException.d.ts +8 -0
  284. package/build/exceptions/NotSupportHashException.js +9 -0
  285. package/build/exceptions/controller/DuplicateControllerActionPatternException.cjs +18 -0
  286. package/build/exceptions/controller/DuplicateControllerActionPatternException.d.cts +8 -0
  287. package/build/exceptions/controller/DuplicateControllerActionPatternException.d.ts +8 -0
  288. package/build/exceptions/controller/DuplicateControllerActionPatternException.js +9 -0
  289. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.cjs +18 -0
  290. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.d.cts +8 -0
  291. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.d.ts +8 -0
  292. package/build/exceptions/controller/DynamicRegisterControllerNotAllowException.js +9 -0
  293. package/build/exceptions/controller/NoMatchedControllerActionPatternException.cjs +18 -0
  294. package/build/exceptions/controller/NoMatchedControllerActionPatternException.d.cts +8 -0
  295. package/build/exceptions/controller/NoMatchedControllerActionPatternException.d.ts +8 -0
  296. package/build/exceptions/controller/NoMatchedControllerActionPatternException.js +9 -0
  297. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.cjs +18 -0
  298. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.d.cts +8 -0
  299. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.d.ts +8 -0
  300. package/build/exceptions/crypto/asymmetric/AsymmetricDecryptException.js +9 -0
  301. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.cjs +18 -0
  302. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.d.cts +8 -0
  303. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.d.ts +8 -0
  304. package/build/exceptions/crypto/asymmetric/AsymmetricEncryptException.js +9 -0
  305. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.cjs +18 -0
  306. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.d.cts +8 -0
  307. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.d.ts +8 -0
  308. package/build/exceptions/crypto/asymmetric/AsymmetricSignException.js +9 -0
  309. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.cjs +18 -0
  310. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.d.cts +8 -0
  311. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.d.ts +8 -0
  312. package/build/exceptions/crypto/asymmetric/AsymmetricVerifyException.js +9 -0
  313. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.cjs +18 -0
  314. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.d.cts +8 -0
  315. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.d.ts +8 -0
  316. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptKeyPairException.js +9 -0
  317. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.cjs +18 -0
  318. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.d.cts +8 -0
  319. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.d.ts +8 -0
  320. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPrivateKeyException.js +9 -0
  321. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.cjs +18 -0
  322. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.d.cts +8 -0
  323. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.d.ts +8 -0
  324. package/build/exceptions/crypto/asymmetric/InvalidAsymmetricEncryptPublicKeyException.js +9 -0
  325. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.cjs +18 -0
  326. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.d.cts +8 -0
  327. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.d.ts +8 -0
  328. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPrivateKeyException.js +9 -0
  329. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.cjs +18 -0
  330. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.d.cts +8 -0
  331. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.d.ts +8 -0
  332. package/build/exceptions/crypto/asymmetric/NoAsymmetricEncryptPublicKeyException.js +9 -0
  333. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.cjs +18 -0
  334. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.d.cts +8 -0
  335. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.d.ts +8 -0
  336. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherIVLengthException.js +9 -0
  337. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.cjs +18 -0
  338. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.d.cts +8 -0
  339. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.d.ts +8 -0
  340. package/build/exceptions/crypto/symmetric/InvalidSymmetricCipherKeyLengthException.js +9 -0
  341. package/build/exceptions/crypto/symmetric/NotSupportCipherException.cjs +18 -0
  342. package/build/exceptions/crypto/symmetric/NotSupportCipherException.d.cts +8 -0
  343. package/build/exceptions/crypto/symmetric/NotSupportCipherException.d.ts +8 -0
  344. package/build/exceptions/crypto/symmetric/NotSupportCipherException.js +9 -0
  345. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.cjs +18 -0
  346. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.d.cts +8 -0
  347. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.d.ts +8 -0
  348. package/build/exceptions/crypto/symmetric/SymmetricDecryptException.js +9 -0
  349. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.cjs +18 -0
  350. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.d.cts +8 -0
  351. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.d.ts +8 -0
  352. package/build/exceptions/crypto/symmetric/SymmetricEncryptException.js +9 -0
  353. package/build/exceptions/validation/InvalidMethodAcceptException.cjs +18 -0
  354. package/build/exceptions/validation/InvalidMethodAcceptException.d.cts +8 -0
  355. package/build/exceptions/validation/InvalidMethodAcceptException.d.ts +8 -0
  356. package/build/exceptions/validation/InvalidMethodAcceptException.js +9 -0
  357. package/build/exceptions/validation/InvalidMethodReturnException.cjs +18 -0
  358. package/build/exceptions/validation/InvalidMethodReturnException.d.cts +8 -0
  359. package/build/exceptions/validation/InvalidMethodReturnException.d.ts +8 -0
  360. package/build/exceptions/validation/InvalidMethodReturnException.js +9 -0
  361. package/build/exceptions/validation/InvalidValueException.cjs +18 -0
  362. package/build/exceptions/validation/InvalidValueException.d.cts +8 -0
  363. package/build/exceptions/validation/InvalidValueException.d.ts +8 -0
  364. package/build/exceptions/validation/InvalidValueException.js +9 -0
  365. package/build/index.d-e5279fea.d.ts +872 -0
  366. package/build/interfaces/IConstructor.cjs +7 -0
  367. package/build/interfaces/IConstructor.d.cts +6 -0
  368. package/build/interfaces/IConstructor.d.ts +6 -0
  369. package/build/interfaces/IConstructor.js +4 -0
  370. package/build/interfaces/ILogger.cjs +7 -0
  371. package/build/interfaces/ILogger.d.cts +22 -0
  372. package/build/interfaces/ILogger.d.ts +22 -0
  373. package/build/interfaces/ILogger.js +4 -0
  374. package/build/interfaces/IPatRun.cjs +7 -0
  375. package/build/interfaces/IPatRun.d.cts +12 -0
  376. package/build/interfaces/IPatRun.d.ts +12 -0
  377. package/build/interfaces/IPatRun.js +4 -0
  378. package/build/interfaces/ISortArrayOptions.cjs +7 -0
  379. package/build/interfaces/ISortArrayOptions.d.cts +12 -0
  380. package/build/interfaces/ISortArrayOptions.d.ts +12 -0
  381. package/build/interfaces/ISortArrayOptions.js +4 -0
  382. package/build/interfaces/ISortObjectOptions.cjs +7 -0
  383. package/build/interfaces/ISortObjectOptions.d.cts +6 -0
  384. package/build/interfaces/ISortObjectOptions.d.ts +6 -0
  385. package/build/interfaces/ISortObjectOptions.js +4 -0
  386. package/build/lib/Application.cjs +50 -0
  387. package/build/lib/Application.d.cts +20 -0
  388. package/build/lib/Application.d.ts +20 -0
  389. package/build/lib/Application.js +41 -0
  390. package/build/lib/base/BaseObject.cjs +50 -0
  391. package/build/lib/base/BaseObject.d.cts +112 -0
  392. package/build/lib/base/BaseObject.d.ts +112 -0
  393. package/build/lib/base/BaseObject.js +41 -0
  394. package/build/lib/base/Component.cjs +50 -0
  395. package/build/lib/base/Component.d.cts +116 -0
  396. package/build/lib/base/Component.d.ts +116 -0
  397. package/build/lib/base/Component.js +41 -0
  398. package/build/lib/base/Container.cjs +50 -0
  399. package/build/lib/base/Container.d.cts +20 -0
  400. package/build/lib/base/Container.d.ts +20 -0
  401. package/build/lib/base/Container.js +41 -0
  402. package/build/lib/base/Controller.cjs +50 -0
  403. package/build/lib/base/Controller.d.cts +20 -0
  404. package/build/lib/base/Controller.d.ts +20 -0
  405. package/build/lib/base/Controller.js +41 -0
  406. package/build/lib/base/DTO.cjs +23 -0
  407. package/build/lib/base/DTO.d.cts +59 -0
  408. package/build/lib/base/DTO.d.ts +59 -0
  409. package/build/lib/base/DTO.js +14 -0
  410. package/build/lib/base/Model.cjs +51 -0
  411. package/build/lib/base/Model.d.cts +30 -0
  412. package/build/lib/base/Model.d.ts +30 -0
  413. package/build/lib/base/Model.js +42 -0
  414. package/build/lib/base/Module.cjs +50 -0
  415. package/build/lib/base/Module.d.cts +20 -0
  416. package/build/lib/base/Module.d.ts +20 -0
  417. package/build/lib/base/Module.js +41 -0
  418. package/build/lib/base/abstracts/AsymmetricEncryption.cjs +27 -0
  419. package/build/lib/base/abstracts/AsymmetricEncryption.d.cts +172 -0
  420. package/build/lib/base/abstracts/AsymmetricEncryption.d.ts +172 -0
  421. package/build/lib/base/abstracts/AsymmetricEncryption.js +18 -0
  422. package/build/lib/base/abstracts/Exception.cjs +17 -0
  423. package/build/lib/base/abstracts/Exception.d.cts +23 -0
  424. package/build/lib/base/abstracts/Exception.d.ts +23 -0
  425. package/build/lib/base/abstracts/Exception.js +8 -0
  426. package/build/lib/base/abstracts/Interval.cjs +51 -0
  427. package/build/lib/base/abstracts/Interval.d.cts +76 -0
  428. package/build/lib/base/abstracts/Interval.d.ts +76 -0
  429. package/build/lib/base/abstracts/Interval.js +42 -0
  430. package/build/lib/base/abstracts/SymmetricEncryption.cjs +23 -0
  431. package/build/lib/base/abstracts/SymmetricEncryption.d.cts +149 -0
  432. package/build/lib/base/abstracts/SymmetricEncryption.d.ts +149 -0
  433. package/build/lib/base/abstracts/SymmetricEncryption.js +14 -0
  434. package/build/lib/base/async-constructor/Append.cjs +14 -0
  435. package/build/lib/base/async-constructor/Append.d.cts +5 -0
  436. package/build/lib/base/async-constructor/Append.d.ts +5 -0
  437. package/build/lib/base/async-constructor/Append.js +5 -0
  438. package/build/lib/base/async-constructor/AsyncConstructor.cjs +15 -0
  439. package/build/lib/base/async-constructor/AsyncConstructor.d.cts +7 -0
  440. package/build/lib/base/async-constructor/AsyncConstructor.d.ts +7 -0
  441. package/build/lib/base/async-constructor/AsyncConstructor.js +6 -0
  442. package/build/lib/components/Formatter.cjs +50 -0
  443. package/build/lib/components/Formatter.d.cts +203 -0
  444. package/build/lib/components/Formatter.d.ts +203 -0
  445. package/build/lib/components/Formatter.js +41 -0
  446. package/build/lib/components/Logger.cjs +50 -0
  447. package/build/lib/components/Logger.d.cts +61 -0
  448. package/build/lib/components/Logger.d.ts +61 -0
  449. package/build/lib/components/Logger.js +41 -0
  450. package/build/lib/crypto/RSA.cjs +28 -0
  451. package/build/lib/crypto/RSA.d.cts +61 -0
  452. package/build/lib/crypto/RSA.d.ts +61 -0
  453. package/build/lib/crypto/RSA.js +19 -0
  454. package/build/lib/crypto/SM2.cjs +28 -0
  455. package/build/lib/crypto/SM2.d.cts +47 -0
  456. package/build/lib/crypto/SM2.d.ts +47 -0
  457. package/build/lib/crypto/SM2.js +19 -0
  458. package/build/lib/crypto/aes/AES128.cjs +25 -0
  459. package/build/lib/crypto/aes/AES128.d.cts +14 -0
  460. package/build/lib/crypto/aes/AES128.d.ts +14 -0
  461. package/build/lib/crypto/aes/AES128.js +16 -0
  462. package/build/lib/crypto/aes/AES192.cjs +25 -0
  463. package/build/lib/crypto/aes/AES192.d.cts +14 -0
  464. package/build/lib/crypto/aes/AES192.d.ts +14 -0
  465. package/build/lib/crypto/aes/AES192.js +16 -0
  466. package/build/lib/crypto/aes/AES256.cjs +25 -0
  467. package/build/lib/crypto/aes/AES256.d.cts +14 -0
  468. package/build/lib/crypto/aes/AES256.d.ts +14 -0
  469. package/build/lib/crypto/aes/AES256.js +16 -0
  470. package/build/lib/crypto/aria/ARIA128.cjs +24 -0
  471. package/build/lib/crypto/aria/ARIA128.d.cts +13 -0
  472. package/build/lib/crypto/aria/ARIA128.d.ts +13 -0
  473. package/build/lib/crypto/aria/ARIA128.js +15 -0
  474. package/build/lib/crypto/aria/ARIA192.cjs +24 -0
  475. package/build/lib/crypto/aria/ARIA192.d.cts +13 -0
  476. package/build/lib/crypto/aria/ARIA192.d.ts +13 -0
  477. package/build/lib/crypto/aria/ARIA192.js +15 -0
  478. package/build/lib/crypto/aria/ARIA256.cjs +24 -0
  479. package/build/lib/crypto/aria/ARIA256.d.cts +13 -0
  480. package/build/lib/crypto/aria/ARIA256.d.ts +13 -0
  481. package/build/lib/crypto/aria/ARIA256.js +15 -0
  482. package/build/lib/crypto/camellia/CAMELLIA128.cjs +24 -0
  483. package/build/lib/crypto/camellia/CAMELLIA128.d.cts +13 -0
  484. package/build/lib/crypto/camellia/CAMELLIA128.d.ts +13 -0
  485. package/build/lib/crypto/camellia/CAMELLIA128.js +15 -0
  486. package/build/lib/crypto/camellia/CAMELLIA192.cjs +24 -0
  487. package/build/lib/crypto/camellia/CAMELLIA192.d.cts +13 -0
  488. package/build/lib/crypto/camellia/CAMELLIA192.d.ts +13 -0
  489. package/build/lib/crypto/camellia/CAMELLIA192.js +15 -0
  490. package/build/lib/crypto/camellia/CAMELLIA256.cjs +24 -0
  491. package/build/lib/crypto/camellia/CAMELLIA256.d.cts +13 -0
  492. package/build/lib/crypto/camellia/CAMELLIA256.d.ts +13 -0
  493. package/build/lib/crypto/camellia/CAMELLIA256.js +15 -0
  494. package/build/lib/crypto/des/DES.cjs +25 -0
  495. package/build/lib/crypto/des/DES.d.cts +14 -0
  496. package/build/lib/crypto/des/DES.d.ts +14 -0
  497. package/build/lib/crypto/des/DES.js +16 -0
  498. package/build/lib/crypto/des/TripleDES.cjs +25 -0
  499. package/build/lib/crypto/des/TripleDES.d.cts +14 -0
  500. package/build/lib/crypto/des/TripleDES.d.ts +14 -0
  501. package/build/lib/crypto/des/TripleDES.js +16 -0
  502. package/build/lib/ioc/DependencyInjectionContainer.cjs +29 -0
  503. package/build/lib/ioc/DependencyInjectionContainer.d.cts +4 -0
  504. package/build/lib/ioc/DependencyInjectionContainer.d.ts +4 -0
  505. package/build/lib/ioc/DependencyInjectionContainer.js +20 -0
  506. package/build/lib/ioc/Errors.cjs +27 -0
  507. package/build/lib/ioc/Errors.d.cts +53 -0
  508. package/build/lib/ioc/Errors.d.ts +53 -0
  509. package/build/lib/ioc/Errors.js +10 -0
  510. package/build/lib/ioc/FunctionTokenizer.cjs +18 -0
  511. package/build/lib/ioc/FunctionTokenizer.d.cts +33 -0
  512. package/build/lib/ioc/FunctionTokenizer.d.ts +33 -0
  513. package/build/lib/ioc/FunctionTokenizer.js +5 -0
  514. package/build/lib/ioc/InjectionMode.cjs +14 -0
  515. package/build/lib/ioc/InjectionMode.d.cts +12 -0
  516. package/build/lib/ioc/InjectionMode.d.ts +12 -0
  517. package/build/lib/ioc/InjectionMode.js +5 -0
  518. package/build/lib/ioc/Lifetime.cjs +14 -0
  519. package/build/lib/ioc/Lifetime.d.cts +12 -0
  520. package/build/lib/ioc/Lifetime.d.ts +12 -0
  521. package/build/lib/ioc/Lifetime.js +5 -0
  522. package/build/lib/ioc/ListModules.cjs +17 -0
  523. package/build/lib/ioc/ListModules.d.cts +4 -0
  524. package/build/lib/ioc/ListModules.d.ts +4 -0
  525. package/build/lib/ioc/ListModules.js +8 -0
  526. package/build/lib/ioc/LoadModuleNative.cjs +14 -0
  527. package/build/lib/ioc/LoadModuleNative.d.cts +9 -0
  528. package/build/lib/ioc/LoadModuleNative.d.ts +9 -0
  529. package/build/lib/ioc/LoadModuleNative.js +5 -0
  530. package/build/lib/ioc/LoadModules.cjs +26 -0
  531. package/build/lib/ioc/LoadModules.d.cts +4 -0
  532. package/build/lib/ioc/LoadModules.d.ts +4 -0
  533. package/build/lib/ioc/LoadModules.js +17 -0
  534. package/build/lib/ioc/ParamParser.cjs +15 -0
  535. package/build/lib/ioc/ParamParser.d.cts +25 -0
  536. package/build/lib/ioc/ParamParser.d.ts +25 -0
  537. package/build/lib/ioc/ParamParser.js +6 -0
  538. package/build/lib/ioc/Resolvers.cjs +49 -0
  539. package/build/lib/ioc/Resolvers.d.cts +4 -0
  540. package/build/lib/ioc/Resolvers.d.ts +4 -0
  541. package/build/lib/ioc/Resolvers.js +16 -0
  542. package/build/lib/ioc/Utils.cjs +35 -0
  543. package/build/lib/ioc/Utils.d.cts +38 -0
  544. package/build/lib/ioc/Utils.d.ts +38 -0
  545. package/build/lib/ioc/Utils.js +6 -0
  546. package/build/options/ApplicationOptions.cjs +50 -0
  547. package/build/options/ApplicationOptions.d.cts +20 -0
  548. package/build/options/ApplicationOptions.d.ts +20 -0
  549. package/build/options/ApplicationOptions.js +41 -0
  550. package/build/options/LoadComponentOptions.cjs +50 -0
  551. package/build/options/LoadComponentOptions.d.cts +22 -0
  552. package/build/options/LoadComponentOptions.d.ts +22 -0
  553. package/build/options/LoadComponentOptions.js +41 -0
  554. package/build/options/LoadEntryClassOptions.cjs +50 -0
  555. package/build/options/LoadEntryClassOptions.d.cts +16 -0
  556. package/build/options/LoadEntryClassOptions.d.ts +16 -0
  557. package/build/options/LoadEntryClassOptions.js +41 -0
  558. package/build/options/LoadEntryCommonOptions.cjs +27 -0
  559. package/build/options/LoadEntryCommonOptions.d.cts +13 -0
  560. package/build/options/LoadEntryCommonOptions.d.ts +13 -0
  561. package/build/options/LoadEntryCommonOptions.js +18 -0
  562. package/build/options/LoadModuleOptions.cjs +50 -0
  563. package/build/options/LoadModuleOptions.d.cts +20 -0
  564. package/build/options/LoadModuleOptions.d.ts +20 -0
  565. package/build/options/LoadModuleOptions.js +41 -0
  566. package/build/options/ModuleOptions.cjs +50 -0
  567. package/build/options/ModuleOptions.d.cts +20 -0
  568. package/build/options/ModuleOptions.d.ts +20 -0
  569. package/build/options/ModuleOptions.js +41 -0
  570. package/build/types/AsyncFunction.cjs +7 -0
  571. package/build/types/AsyncFunction.d.cts +3 -0
  572. package/build/types/AsyncFunction.d.ts +3 -0
  573. package/build/types/AsyncFunction.js +4 -0
  574. package/build/types/ControllerActionMapItem.cjs +7 -0
  575. package/build/types/ControllerActionMapItem.d.cts +20 -0
  576. package/build/types/ControllerActionMapItem.d.ts +20 -0
  577. package/build/types/ControllerActionMapItem.js +4 -0
  578. package/build/types/InjectionProperties.cjs +7 -0
  579. package/build/types/InjectionProperties.d.cts +3 -0
  580. package/build/types/InjectionProperties.d.ts +3 -0
  581. package/build/types/InjectionProperties.js +4 -0
  582. package/build/types/TimeInput.cjs +7 -0
  583. package/build/types/TimeInput.d.cts +5 -0
  584. package/build/types/TimeInput.d.ts +5 -0
  585. package/build/types/TimeInput.js +4 -0
  586. package/build/types/TimeObject.cjs +7 -0
  587. package/build/types/TimeObject.d.cts +11 -0
  588. package/build/types/TimeObject.d.ts +11 -0
  589. package/build/types/TimeObject.js +4 -0
  590. package/build/types/UnitOfTime.cjs +7 -0
  591. package/build/types/UnitOfTime.d.cts +14 -0
  592. package/build/types/UnitOfTime.d.ts +14 -0
  593. package/build/types/UnitOfTime.js +4 -0
  594. package/package.json +145 -0
@@ -0,0 +1,769 @@
1
+ 'use strict';
2
+
3
+ var chunkGGY7LCMQ_cjs = require('./chunk-GGY7LCMQ.cjs');
4
+
5
+ // node_modules/gex/dist/gex.js
6
+ var require_gex = chunkGGY7LCMQ_cjs.__commonJS({
7
+ "node_modules/gex/dist/gex.js"(exports, module) {
8
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.Gex = void 0;
11
+ var _Gexer = class _Gexer {
12
+ constructor(gexspec) {
13
+ this.desc = "";
14
+ this.gexmap = {};
15
+ if (null != gexspec) {
16
+ let gexstrs = Array.isArray(gexspec) ? gexspec : [gexspec];
17
+ gexstrs.forEach((str) => {
18
+ this.gexmap[str] = this.re(this.clean(str));
19
+ });
20
+ }
21
+ }
22
+ dodgy(obj) {
23
+ return null == obj || Number.isNaN(obj);
24
+ }
25
+ clean(gexexp) {
26
+ let gexstr = "" + gexexp;
27
+ return this.dodgy(gexexp) ? "" : gexstr;
28
+ }
29
+ match(str) {
30
+ str = "" + str;
31
+ let hasmatch = false;
32
+ let gexstrs = Object.keys(this.gexmap);
33
+ for (let i = 0; i < gexstrs.length && !hasmatch; i++) {
34
+ hasmatch = !!this.gexmap[gexstrs[i]].exec(str);
35
+ }
36
+ return hasmatch;
37
+ }
38
+ on(obj) {
39
+ if (null == obj) {
40
+ return null;
41
+ }
42
+ let typeof_obj = typeof obj;
43
+ if ("string" === typeof_obj || "number" === typeof_obj || "boolean" === typeof_obj || obj instanceof Date || obj instanceof RegExp) {
44
+ return this.match(obj) ? obj : null;
45
+ } else if (Array.isArray(obj)) {
46
+ let out = [];
47
+ for (let i = 0; i < obj.length; i++) {
48
+ if (!this.dodgy(obj[i]) && this.match(obj[i])) {
49
+ out.push(obj[i]);
50
+ }
51
+ }
52
+ return out;
53
+ } else {
54
+ let outobj = {};
55
+ for (let p in obj) {
56
+ if (Object.prototype.hasOwnProperty.call(obj, p)) {
57
+ if (this.match(p)) {
58
+ outobj[p] = obj[p];
59
+ }
60
+ }
61
+ }
62
+ return outobj;
63
+ }
64
+ }
65
+ esc(gexexp) {
66
+ let gexstr = this.clean(gexexp);
67
+ gexstr = gexstr.replace(/\*/g, "**");
68
+ gexstr = gexstr.replace(/\?/g, "*?");
69
+ return gexstr;
70
+ }
71
+ escregexp(restr) {
72
+ return restr ? ("" + restr).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") : "";
73
+ }
74
+ re(gs) {
75
+ if ("" === gs || gs) {
76
+ gs = this.escregexp(gs);
77
+ gs = gs.replace(/\\\*/g, "[\\s\\S]*");
78
+ gs = gs.replace(/\\\?/g, "[\\s\\S]");
79
+ gs = gs.replace(/\[\\s\\S\]\*\[\\s\\S\]\*/g, "\\*");
80
+ gs = gs.replace(/\[\\s\\S\]\*\[\\s\\S\]/g, "\\?");
81
+ gs = "^" + gs + "$";
82
+ return new RegExp(gs);
83
+ } else {
84
+ let gexstrs = Object.keys(this.gexmap);
85
+ return 1 == gexstrs.length ? this.gexmap[gexstrs[0]] : { ...this.gexmap };
86
+ }
87
+ }
88
+ toString() {
89
+ let d = this.desc;
90
+ return "" != d ? d : this.desc = "Gex[" + Object.keys(this.gexmap) + "]";
91
+ }
92
+ inspect() {
93
+ return this.toString();
94
+ }
95
+ };
96
+ chunkGGY7LCMQ_cjs.__name(_Gexer, "Gexer");
97
+ var Gexer = _Gexer;
98
+ function Gex(gexspec) {
99
+ return new Gexer(gexspec);
100
+ }
101
+ chunkGGY7LCMQ_cjs.__name(Gex, "Gex");
102
+ exports.Gex = Gex;
103
+ if ("undefined" !== typeof module) {
104
+ module.exports = Gex;
105
+ module.exports.Gex = Gex;
106
+ }
107
+ exports.default = Gex;
108
+ }
109
+ });
110
+
111
+ // node_modules/patrun/dist/lib/matchers.js
112
+ var require_matchers = chunkGGY7LCMQ_cjs.__commonJS({
113
+ "node_modules/patrun/dist/lib/matchers.js"(exports) {
114
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
115
+ var __classPrivateFieldGet = exports && exports.__classPrivateFieldGet || function(receiver, state, kind, f) {
116
+ if (kind === "a" && !f)
117
+ throw new TypeError("Private accessor was defined without a getter");
118
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
119
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
120
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
121
+ };
122
+ var _IntervalMatcher_and;
123
+ var _IntervalMatcher_or;
124
+ var _IntervalMatcher_nil;
125
+ var _IntervalMatcher_err;
126
+ var _IntervalMatcher_mgt;
127
+ var _IntervalMatcher_mgte;
128
+ var _IntervalMatcher_mlt;
129
+ var _IntervalMatcher_mlte;
130
+ var _IntervalMatcher_meq;
131
+ Object.defineProperty(exports, "__esModule", { value: true });
132
+ exports.IntervalMatcher = exports.GexMatcher = void 0;
133
+ var gex_1 = require_gex();
134
+ var _GexMatcher = class _GexMatcher {
135
+ constructor() {
136
+ }
137
+ make(key, fix) {
138
+ if ("string" === typeof fix && fix.match(/[*?]/)) {
139
+ let gex = (0, gex_1.Gex)(fix);
140
+ return {
141
+ kind: "gex",
142
+ match: (val) => null != gex.on(val),
143
+ fix,
144
+ meta: {},
145
+ same(mv) {
146
+ return null != mv && mv.kind === this.kind && mv.fix === this.fix;
147
+ }
148
+ };
149
+ } else
150
+ return void 0;
151
+ }
152
+ // TODO: pretty primitive, just looks for '*'
153
+ scan(mvs, opts) {
154
+ let has_match_any = mvs.filter((mv) => "*" === mv.fix).length > 0;
155
+ return {
156
+ complete: has_match_any,
157
+ sound: has_match_any,
158
+ gaps: [],
159
+ overs: [],
160
+ why: "no-star"
161
+ };
162
+ }
163
+ };
164
+ chunkGGY7LCMQ_cjs.__name(_GexMatcher, "GexMatcher");
165
+ var GexMatcher = _GexMatcher;
166
+ exports.GexMatcher = GexMatcher;
167
+ var IntervalRE = new RegExp([
168
+ "^/s*",
169
+ "(=*[<>/(/[]?=*)?/s*([-+0-9a-fA-FeEoOxX]+(/.([0-9a-fA-FeEoOxX]+))?)([/)/]]?)(/s*(,|&+|/|+|/./.)/s*(=*[<>]?=*)/s*([-+.0-9a-fA-FeEoOxX]+)/s*([/)/]]?))?/s*$"
170
+ // optional whitespace
171
+ ].join("").replace(/\//g, "\\"));
172
+ var _IntervalMatcher = class _IntervalMatcher {
173
+ constructor() {
174
+ this.kind = "interval";
175
+ _IntervalMatcher_and.set(this, (lhs, rhs) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function and(x) {
176
+ return lhs(x) && rhs(x);
177
+ }, "and"));
178
+ _IntervalMatcher_or.set(this, (lhs, rhs) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function or(x) {
179
+ return lhs(x) || rhs(x);
180
+ }, "or"));
181
+ _IntervalMatcher_nil.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function nil(x) {
182
+ return false;
183
+ }, "nil"));
184
+ _IntervalMatcher_err.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function err(x) {
185
+ return false;
186
+ }, "err"));
187
+ _IntervalMatcher_mgt.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function gt(x) {
188
+ return x > n;
189
+ }, "gt"));
190
+ _IntervalMatcher_mgte.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function gte(x) {
191
+ return x >= n;
192
+ }, "gte"));
193
+ _IntervalMatcher_mlt.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function lt(x) {
194
+ return x < n;
195
+ }, "lt"));
196
+ _IntervalMatcher_mlte.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function lte(x) {
197
+ return x <= n;
198
+ }, "lte"));
199
+ _IntervalMatcher_meq.set(this, (n) => /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name(function eq(x) {
200
+ return x === n;
201
+ }, "eq"));
202
+ }
203
+ make(key, fix) {
204
+ if ("string" === typeof fix && // At least one interval operator is required.
205
+ // Exact numbers must be specified as '=X'
206
+ fix.match(/[=<>.[()\]]/)) {
207
+ let m = fix.match(IntervalRE);
208
+ let meta = { jo: "and", o0: "err", n0: NaN, o1: "err", n1: NaN };
209
+ let match = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name((val) => false, "match");
210
+ if (null != m) {
211
+ let os0 = _IntervalMatcher.normop(m[1]) || _IntervalMatcher.normop(m[5]);
212
+ let os1 = _IntervalMatcher.normop(m[8]) || _IntervalMatcher.normop(m[10]);
213
+ let o0 = "=" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_meq, "f") : "<" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : ")" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : "<=" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : "]" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : ">" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") : "(" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") : ">=" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : "[" === os0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
214
+ let n0 = Number(m[2]);
215
+ let n1 = null == m[9] ? NaN : Number(m[9]);
216
+ let jos = m[7];
217
+ let jo = null == jos ? __classPrivateFieldGet(this, _IntervalMatcher_or, "f") : "&" === jos.substring(0, 1) ? __classPrivateFieldGet(this, _IntervalMatcher_and, "f") : "," === jos.substring(0, 1) ? __classPrivateFieldGet(this, _IntervalMatcher_and, "f") : __classPrivateFieldGet(this, _IntervalMatcher_or, "f");
218
+ if (".." === jos) {
219
+ jo = __classPrivateFieldGet(this, _IntervalMatcher_and, "f");
220
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_err, "f") === o0 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : o0;
221
+ os1 = "" === os1 ? "<=" : os1;
222
+ }
223
+ let o1 = null == os1 ? __classPrivateFieldGet(this, _IntervalMatcher_nil, "f") : "=" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_meq, "f") : "<" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : ")" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") : "<=" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : "]" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") : ">" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") : ">=" === os1 ? __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") : __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
224
+ if (n0 === n1) {
225
+ if ("=" === os0 && null != os1) {
226
+ n1 = NaN;
227
+ o1 = __classPrivateFieldGet(this, _IntervalMatcher_nil, "f");
228
+ if (os1.includes("<")) {
229
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f");
230
+ } else if (os1.includes(">")) {
231
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f");
232
+ } else if (os1.includes("=")) {
233
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_meq, "f");
234
+ } else {
235
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
236
+ }
237
+ } else if ("=" === os1 && null != os0) {
238
+ n1 = NaN;
239
+ o1 = __classPrivateFieldGet(this, _IntervalMatcher_nil, "f");
240
+ if (os0.includes("<")) {
241
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f");
242
+ } else if (os0.includes(">")) {
243
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f");
244
+ } else {
245
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_err, "f");
246
+ }
247
+ }
248
+ }
249
+ if (__classPrivateFieldGet(this, _IntervalMatcher_err, "f") !== o0) {
250
+ if (__classPrivateFieldGet(this, _IntervalMatcher_nil, "f") === o1) {
251
+ if (__classPrivateFieldGet(this, _IntervalMatcher_mlt, "f") === o0 || __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f") === o0) {
252
+ o1 = o0;
253
+ n1 = n0;
254
+ o0 = __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f");
255
+ n0 = Number.NEGATIVE_INFINITY;
256
+ jo = __classPrivateFieldGet(this, _IntervalMatcher_and, "f");
257
+ } else if (__classPrivateFieldGet(this, _IntervalMatcher_mgt, "f") === o0 || __classPrivateFieldGet(this, _IntervalMatcher_mgte, "f") === o0) {
258
+ o1 = __classPrivateFieldGet(this, _IntervalMatcher_mlte, "f");
259
+ n1 = Number.POSITIVE_INFINITY;
260
+ jo = __classPrivateFieldGet(this, _IntervalMatcher_and, "f");
261
+ }
262
+ }
263
+ }
264
+ if (!isNaN(n1) && n1 < n0) {
265
+ let to = o1;
266
+ let tn = n1;
267
+ n1 = n0;
268
+ n0 = tn;
269
+ if (".." !== jos) {
270
+ o1 = o0;
271
+ o0 = to;
272
+ }
273
+ }
274
+ let o0f = o0(n0);
275
+ let o1f = o1(n1);
276
+ let check = jo(o0f, o1f);
277
+ meta = { jo: check.name, o0: o0f.name, n0, o1: o1f.name, n1 };
278
+ match = /* @__PURE__ */ chunkGGY7LCMQ_cjs.__name((val) => {
279
+ let res = false;
280
+ let n = parseFloat(val);
281
+ if (!isNaN(n)) {
282
+ res = check(n);
283
+ }
284
+ return res;
285
+ }, "match");
286
+ return {
287
+ kind: "interval",
288
+ fix,
289
+ meta,
290
+ match,
291
+ same(mv) {
292
+ return null != mv && mv.kind === this.kind && mv.meta.jo === this.meta.jo && mv.meta.o0 === this.meta.o0 && mv.meta.n0 === this.meta.n0 && mv.meta.o1 === this.meta.o1 && mv.meta.n1 === this.meta.n1;
293
+ }
294
+ };
295
+ }
296
+ }
297
+ }
298
+ scan(mvs, opts) {
299
+ let scanres = {
300
+ complete: false,
301
+ sound: false,
302
+ gaps: [],
303
+ overs: [],
304
+ lower: null,
305
+ upper: null
306
+ };
307
+ let bottom = Number.NEGATIVE_INFINITY;
308
+ let top = Number.POSITIVE_INFINITY;
309
+ let half_intervals = this.half_intervals(mvs);
310
+ half_intervals.reduce((c, h) => {
311
+ let heq = "eq" === h.o;
312
+ let hlt = "lt" === h.o;
313
+ let hlte = "lte" === h.o;
314
+ let hgt = "gt" === h.o;
315
+ let hgte = "gte" === h.o;
316
+ let hn = h.n;
317
+ if (null == c.lower) {
318
+ let b = { n: bottom, o: "gte" };
319
+ c.lower = b;
320
+ c.upper = h;
321
+ if (!(bottom == hn && hgte)) {
322
+ if (hgt || hgte) {
323
+ c.gaps.push([b, { n: hn, o: hgt ? "lte" : "lt", m: 0 }]);
324
+ } else if (heq) {
325
+ c.gaps.push([b, { n: hn, o: "lte", m: 1 }]);
326
+ }
327
+ }
328
+ } else {
329
+ let ueq = "eq" === c.upper.o;
330
+ let ult = "lt" === c.upper.o;
331
+ let ulte = "lte" === c.upper.o;
332
+ "gt" === c.upper.o;
333
+ "hgte" === c.upper.o;
334
+ let un = c.upper.n;
335
+ let u = c.upper;
336
+ if (hn === un) {
337
+ if (ult && (hgte || heq) || (ulte || ueq) && hgt) ; else if (ueq || ult || ulte) {
338
+ c.gaps.push([
339
+ { n: un, o: ueq || ulte ? "gt" : "gte", m: 2, d: { u, h } },
340
+ { n: hn, o: heq || hgte ? "lt" : "lte", m: 3 }
341
+ ]);
342
+ } else ;
343
+ } else if (un < hn) {
344
+ if (hlt || hlte) ; else if (ueq || ult || ulte) {
345
+ c.gaps.push([
346
+ { n: un, o: ueq || ulte ? "gt" : "gte", m: 4 },
347
+ { n: hn, o: heq || hgte ? "lt" : "lte", m: 5 }
348
+ ]);
349
+ }
350
+ } else {
351
+ c.overs.push([
352
+ { n: hn, o: heq || hgte ? "gte" : "gt", m: 10 },
353
+ { n: un, o: ueq || ulte ? "lte" : "lt", m: 11 }
354
+ ]);
355
+ }
356
+ c.upper = h;
357
+ }
358
+ return c;
359
+ }, scanres);
360
+ let last = 0 < half_intervals.length && half_intervals[half_intervals.length - 1];
361
+ if (last && top !== last.n && last.o !== "gt" && last.o !== "gte") {
362
+ scanres.gaps.push([
363
+ { n: last.n, o: last.o === "eq" || last.o === "lte" ? "gt" : "gte", m: 6 },
364
+ { n: top, o: "lte", m: 7 }
365
+ ]);
366
+ }
367
+ scanres.complete = 0 === scanres.gaps.length;
368
+ scanres.sound = 0 === scanres.overs.length;
369
+ return scanres;
370
+ }
371
+ // NOTE: assumes n0<=n1
372
+ half_intervals(mvs) {
373
+ let half_intervals = [];
374
+ for (let mv of mvs) {
375
+ half_intervals.push([
376
+ { n: mv.meta.n0, o: mv.meta.o0 },
377
+ { n: mv.meta.n1, o: mv.meta.o1 }
378
+ ]);
379
+ }
380
+ var os = ["lt", "lte", "eq", "gte", "gt"];
381
+ var hi = half_intervals.map((hh) => [
382
+ isNaN(hh[0].n) || null == hh[0].n ? null : hh[0],
383
+ isNaN(hh[1].n) || null == hh[1].n ? null : hh[1]
384
+ ].filter((h) => null != h)).sort((a, b) => {
385
+ if (a[0].n < b[0].n) {
386
+ return -1;
387
+ } else if (b[0].n < a[0].n) {
388
+ return 1;
389
+ } else {
390
+ var a0i = os.indexOf(a[0].o);
391
+ var b0i = os.indexOf(b[0].o);
392
+ if (a0i < b0i) {
393
+ return -1;
394
+ } else if (b0i < a0i) {
395
+ return 1;
396
+ } else {
397
+ if (a[1].n < b[1].n) {
398
+ return -1;
399
+ } else if (b[1].n < a[1].n) {
400
+ return 1;
401
+ } else {
402
+ var a1i = os.indexOf(a[1].o);
403
+ var b1i = os.indexOf(b[1].o);
404
+ return a1i < b1i ? -1 : b1i < a1i ? 1 : 0;
405
+ }
406
+ }
407
+ }
408
+ }).reduce((hv, hh) => hv.concat(...hh), []);
409
+ return hi;
410
+ }
411
+ };
412
+ chunkGGY7LCMQ_cjs.__name(_IntervalMatcher, "IntervalMatcher");
413
+ var IntervalMatcher = _IntervalMatcher;
414
+ exports.IntervalMatcher = IntervalMatcher;
415
+ _IntervalMatcher_and = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_or = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_nil = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_err = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mgt = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mgte = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mlt = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_mlte = /* @__PURE__ */ new WeakMap(), _IntervalMatcher_meq = /* @__PURE__ */ new WeakMap();
416
+ IntervalMatcher.normop = (op) => null == op ? null : ((op.match(/([<>\(\)\[\]])/) || [])[1] || "") + ((op.match(/(=)/) || [])[1] || "");
417
+ }
418
+ });
419
+
420
+ // node_modules/patrun/dist/patrun.js
421
+ var require_patrun = chunkGGY7LCMQ_cjs.__commonJS({
422
+ "node_modules/patrun/dist/patrun.js"(exports, module) {
423
+ chunkGGY7LCMQ_cjs.init_cjs_shims();
424
+ Object.defineProperty(exports, "__esModule", { value: true });
425
+ exports.Gex = exports.Patrun = void 0;
426
+ var gex_1 = require_gex();
427
+ Object.defineProperty(exports, "Gex", { enumerable: true, get: function() {
428
+ return gex_1.Gex;
429
+ } });
430
+ var matchers_1 = require_matchers();
431
+ function Patrun(custom) {
432
+ custom = custom || {};
433
+ var self = {};
434
+ var top = {};
435
+ let matchers = [];
436
+ if (custom.gex) {
437
+ matchers.push(new matchers_1.GexMatcher());
438
+ }
439
+ if (custom.interval) {
440
+ matchers.push(new matchers_1.IntervalMatcher());
441
+ }
442
+ self.top = function() {
443
+ return top;
444
+ };
445
+ self.add = function(pat, data) {
446
+ pat = { ...pat };
447
+ var customizer = "function" === typeof custom ? custom.call(self, pat, data) : null;
448
+ var keys = Object.keys(pat).filter((key2) => null != pat[key2]).sort();
449
+ keys.forEach(function(key2) {
450
+ pat[key2] = String(pat[key2]);
451
+ });
452
+ var keymap = top;
453
+ var valmap;
454
+ for (var i = 0; i < keys.length; i++) {
455
+ var key = keys[i];
456
+ var fix = pat[key];
457
+ let mv = matchers.reduce((m, t) => m || t.make(key, fix), void 0);
458
+ valmap = keymap.v;
459
+ if (valmap && key == keymap.k) {
460
+ if (mv) {
461
+ var g = keymap.g = keymap.g || {};
462
+ var ga = g[key] = g[key] || [];
463
+ mv = ga.find((gmv) => gmv.same(mv)) || (ga.push(mv), mv);
464
+ keymap = mv.keymap || (mv.keymap = {});
465
+ } else {
466
+ keymap = valmap[fix] || (valmap[fix] = {});
467
+ }
468
+ } else if (!keymap.k) {
469
+ keymap.k = key;
470
+ keymap.v = {};
471
+ if (mv) {
472
+ var g = keymap.g = keymap.g || {};
473
+ var ga = g[key] = g[key] || [];
474
+ mv = ga.find((gmv) => gmv.same(mv)) || (ga.push(mv), mv);
475
+ keymap = mv.keymap || (mv.keymap = {});
476
+ } else {
477
+ keymap = keymap.v[fix] = {};
478
+ }
479
+ } else if (key < keymap.k) {
480
+ var s = keymap.s;
481
+ var g = keymap.g;
482
+ keymap.s = {
483
+ k: keymap.k,
484
+ // sk: keymap.sk,
485
+ v: keymap.v
486
+ };
487
+ if (s) {
488
+ keymap.s.s = s;
489
+ }
490
+ if (g) {
491
+ keymap.s.g = g;
492
+ }
493
+ if (keymap.g) {
494
+ keymap.g = {};
495
+ }
496
+ keymap.k = key;
497
+ keymap.v = {};
498
+ if (mv) {
499
+ var g = keymap.g = keymap.g || {};
500
+ var ga = g[key] = g[key] || [];
501
+ mv = ga.find((gmv) => gmv.same(mv)) || (ga.push(mv), mv);
502
+ keymap = mv.keymap || (mv.keymap = {});
503
+ } else {
504
+ keymap = keymap.v[fix] = {};
505
+ }
506
+ } else {
507
+ keymap = keymap.s || (keymap.s = {});
508
+ i--;
509
+ }
510
+ }
511
+ if (void 0 !== data && keymap) {
512
+ keymap.d = data;
513
+ if (customizer) {
514
+ keymap.f = "function" === typeof customizer ? customizer : customizer.find;
515
+ keymap.r = "function" === typeof customizer.remove ? customizer.remove : void 0;
516
+ }
517
+ }
518
+ return self;
519
+ };
520
+ self.findexact = function(pat) {
521
+ return self.find(pat, true);
522
+ };
523
+ self.find = function(pat, exact, collect) {
524
+ if (null == pat)
525
+ return null;
526
+ var keymap = top;
527
+ var data = void 0 === top.d ? null : top.d;
528
+ var finalfind = top.f;
529
+ var key = null;
530
+ var stars = [];
531
+ var foundkeys = {};
532
+ var patlen = Object.keys(pat).length;
533
+ var collection = [];
534
+ if (void 0 !== top.d) {
535
+ collection.push(top.d);
536
+ }
537
+ do {
538
+ key = keymap.k;
539
+ if (keymap.v) {
540
+ var val = pat[key];
541
+ var nextkeymap = keymap.v[val];
542
+ if (!nextkeymap && keymap.g && keymap.g[key]) {
543
+ var ga = keymap.g[key];
544
+ for (var gi = 0; gi < ga.length; gi++) {
545
+ if (ga[gi].match(val)) {
546
+ nextkeymap = ga[gi].keymap;
547
+ break;
548
+ }
549
+ }
550
+ }
551
+ if (nextkeymap) {
552
+ foundkeys[key] = true;
553
+ if (keymap.s) {
554
+ stars.push(keymap.s);
555
+ }
556
+ data = void 0 === nextkeymap.d ? exact ? null : data : nextkeymap.d;
557
+ if (collect && void 0 !== nextkeymap.d) {
558
+ collection.push(nextkeymap.d);
559
+ }
560
+ finalfind = nextkeymap.f;
561
+ keymap = nextkeymap;
562
+ } else {
563
+ keymap = keymap.s;
564
+ }
565
+ } else {
566
+ keymap = null;
567
+ }
568
+ if (null == keymap && 0 < stars.length && (null == data || collect && !exact)) {
569
+ keymap = stars.pop();
570
+ }
571
+ } while (keymap);
572
+ if (exact) {
573
+ if (Object.keys(foundkeys).length !== patlen) {
574
+ data = null;
575
+ }
576
+ } else {
577
+ if (null == data && void 0 !== top.d) {
578
+ data = top.d;
579
+ }
580
+ }
581
+ if (finalfind) {
582
+ data = finalfind.call(self, pat, data);
583
+ }
584
+ return collect ? collection : data;
585
+ };
586
+ self.remove = function(pat) {
587
+ var keymap = top;
588
+ var data = null;
589
+ var key;
590
+ var path = [];
591
+ do {
592
+ key = keymap.k;
593
+ if (keymap.v || keymap.g) {
594
+ if (keymap.v) {
595
+ var nextkeymap = keymap.v[pat[key]];
596
+ if (nextkeymap) {
597
+ path.push({ km: keymap, v: pat[key] });
598
+ }
599
+ }
600
+ if (null == nextkeymap && keymap.g) {
601
+ let mvs = keymap.g[key] || [];
602
+ for (let mvi = 0; mvi < mvs.length; mvi++) {
603
+ if (mvs[mvi].fix === pat[key]) {
604
+ path.push({ km: keymap, v: pat[key], mv: mvs[mvi] });
605
+ nextkeymap = mvs[mvi].keymap;
606
+ break;
607
+ }
608
+ }
609
+ }
610
+ if (nextkeymap) {
611
+ data = nextkeymap.d;
612
+ keymap = nextkeymap;
613
+ } else {
614
+ keymap = keymap.s;
615
+ }
616
+ } else {
617
+ keymap = null;
618
+ }
619
+ } while (keymap);
620
+ if (void 0 !== data) {
621
+ var part = path[path.length - 1];
622
+ if (part && part.km && part.km.v) {
623
+ var point = part.km.v[part.v] || part.mv && part.mv.keymap;
624
+ if (point && (!point.r || point.r(pat, point.d))) {
625
+ delete point.d;
626
+ }
627
+ }
628
+ }
629
+ };
630
+ self.list = function(pat, exact) {
631
+ pat = pat || {};
632
+ function descend(keymap, match, missing, acc2) {
633
+ if (keymap.v) {
634
+ var key = keymap.k;
635
+ var gexval = (0, gex_1.Gex)(pat ? null == pat[key] ? exact ? null : "*" : pat[key] : "*");
636
+ var itermatch = { ...match };
637
+ var itermissing = { ...missing };
638
+ var nextkeymap;
639
+ for (var val in keymap.v) {
640
+ if (val === pat[key] || !exact && null == pat[key] || gexval.on(val)) {
641
+ var valitermatch = { ...itermatch };
642
+ valitermatch[key] = val;
643
+ var valitermissing = { ...itermissing };
644
+ delete valitermissing[key];
645
+ nextkeymap = keymap.v[val];
646
+ if (0 === Object.keys(valitermissing).length && nextkeymap && nextkeymap.d) {
647
+ acc2.push({
648
+ match: valitermatch,
649
+ data: nextkeymap.d,
650
+ find: nextkeymap.f
651
+ });
652
+ }
653
+ if (nextkeymap && null != nextkeymap.v) {
654
+ descend(nextkeymap, { ...valitermatch }, { ...valitermissing }, acc2);
655
+ }
656
+ }
657
+ }
658
+ nextkeymap = keymap.s;
659
+ if (nextkeymap) {
660
+ descend(nextkeymap, { ...itermatch }, { ...itermissing }, acc2);
661
+ }
662
+ }
663
+ }
664
+ chunkGGY7LCMQ_cjs.__name(descend, "descend");
665
+ var acc = [];
666
+ if (top.d) {
667
+ acc.push({
668
+ match: {},
669
+ data: top.d,
670
+ find: top.f
671
+ });
672
+ }
673
+ descend(top, {}, { ...pat }, acc);
674
+ return acc;
675
+ };
676
+ self.toString = function(first, second) {
677
+ var tree = true === first ? true : !!second;
678
+ var dstr = "function" === typeof first ? first : function(d) {
679
+ return "function" === typeof d ? "<" + d.name + ">" : "<" + d + ">";
680
+ };
681
+ function indent(o2, d) {
682
+ for (var i = 0; i < d; i++) {
683
+ o2.push(" ");
684
+ }
685
+ }
686
+ chunkGGY7LCMQ_cjs.__name(indent, "indent");
687
+ var str = [];
688
+ function walk(n, o2, d, vs) {
689
+ var vsc;
690
+ if (void 0 !== n.d) {
691
+ o2.push(" " + dstr(n.d));
692
+ str.push(vs.join(", ") + " -> " + dstr(n.d));
693
+ }
694
+ if (n.k) {
695
+ o2.push("\n");
696
+ indent(o2, d);
697
+ o2.push(n.k + ":");
698
+ }
699
+ if (n.v || n.s || n.g) {
700
+ d++;
701
+ }
702
+ if (n.v) {
703
+ var pa = Object.keys(n.v).sort();
704
+ for (var pi = 0; pi < pa.length; pi++) {
705
+ var p = pa[pi];
706
+ o2.push("\n");
707
+ indent(o2, d);
708
+ o2.push(p + " ->");
709
+ vsc = vs.slice();
710
+ vsc.push(n.k + "=" + p);
711
+ walk(n.v[p], o2, d + 1, vsc);
712
+ }
713
+ }
714
+ if (n.g) {
715
+ var pa = Object.keys(n.g).sort();
716
+ for (var pi = 0; pi < pa.length; pi++) {
717
+ var mvs = n.g[pa[pi]];
718
+ for (var mvi = 0; mvi < mvs.length; mvi++) {
719
+ var mv = mvs[mvi];
720
+ o2.push("\n");
721
+ indent(o2, d);
722
+ o2.push(mv.fix + " ~>");
723
+ vsc = vs.slice();
724
+ vsc.push(n.k + "~" + mv.fix);
725
+ walk(mv.keymap, o2, d + 1, vsc);
726
+ }
727
+ }
728
+ }
729
+ if (n.s) {
730
+ o2.push("\n");
731
+ indent(o2, d);
732
+ o2.push("|");
733
+ vsc = vs.slice();
734
+ walk(n.s, o2, d + 1, vsc);
735
+ }
736
+ }
737
+ chunkGGY7LCMQ_cjs.__name(walk, "walk");
738
+ var o = [];
739
+ walk(top, o, 0, []);
740
+ return tree ? o.join("") : str.join("\n");
741
+ };
742
+ self.inspect = self.toString;
743
+ self.toJSON = function(indent) {
744
+ return JSON.stringify(top, function(_key, val) {
745
+ if ("function" === typeof val)
746
+ return "[Function]";
747
+ return val;
748
+ }, indent);
749
+ };
750
+ return self;
751
+ }
752
+ chunkGGY7LCMQ_cjs.__name(Patrun, "Patrun");
753
+ exports.Patrun = Patrun;
754
+ function make(custom) {
755
+ return new Patrun(custom);
756
+ }
757
+ chunkGGY7LCMQ_cjs.__name(make, "make");
758
+ if ("undefined" !== typeof module) {
759
+ module.exports = make;
760
+ module.exports.Patrun = Patrun;
761
+ module.exports.Gex = gex_1.Gex;
762
+ }
763
+ exports.default = make;
764
+ }
765
+ });
766
+
767
+ exports.require_patrun = require_patrun;
768
+ //# sourceMappingURL=out.js.map
769
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9nZXgvZ2V4LnRzIiwiLi4vbm9kZV9tb2R1bGVzL3BhdHJ1bi9saWIvbWF0Y2hlcnMudHMiLCIuLi9ub2RlX21vZHVsZXMvcGF0cnVuL3BhdHJ1bi50cyJdLCJuYW1lcyI6WyJrZXkiLCJhY2MiLCJvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRUEsUUFBTSxTQUFOLE1BQU0sT0FBSztNQUlULFlBQVksU0FBMEI7QUFGdEMsYUFBQSxPQUFlO0FBR2IsYUFBSyxTQUFTLENBQUE7QUFFZCxZQUFJLFFBQVEsU0FBUztBQUNuQixjQUFJLFVBQVUsTUFBTSxRQUFRLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTztBQUV6RCxrQkFBUSxRQUFRLENBQUMsUUFBTztBQUN0QixpQkFBSyxPQUFPLEdBQUcsSUFBSSxLQUFLLEdBQUcsS0FBSyxNQUFNLEdBQUcsQ0FBQztVQUM1QyxDQUFDOztNQUVMO01BRUEsTUFBTSxLQUFRO0FBQ1osZUFBTyxRQUFRLE9BQU8sT0FBTyxNQUFNLEdBQUc7TUFDeEM7TUFFQSxNQUFNLFFBQVc7QUFDZixZQUFJLFNBQVMsS0FBSztBQUNsQixlQUFPLEtBQUssTUFBTSxNQUFNLElBQUksS0FBSztNQUNuQztNQUVBLE1BQU0sS0FBUTtBQUNaLGNBQU0sS0FBSztBQUNYLFlBQUksV0FBVztBQUNmLFlBQUksVUFBVSxPQUFPLEtBQUssS0FBSyxNQUFNO0FBRXJDLGlCQUFTLElBQUksR0FBRyxJQUFJLFFBQVEsVUFBVSxDQUFDLFVBQVUsS0FBSztBQUNwRCxxQkFBVyxDQUFDLENBQUMsS0FBSyxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHOztBQUUvQyxlQUFPO01BQ1Q7TUFFQSxHQUFHLEtBQVE7QUFDVCxZQUFJLFFBQVEsS0FBSztBQUNmLGlCQUFPOztBQUdULFlBQUksYUFBYSxPQUFPO0FBQ3hCLFlBQ0UsYUFBYSxjQUNiLGFBQWEsY0FDYixjQUFjLGNBQ2QsZUFBZSxRQUNmLGVBQWUsUUFD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QUFHLEdBQUc7O1FBRTNCO0FBakVTO0FBbUVULFlBQUksSUFBUyxDQUFBO0FBQ2IsYUFBSyxLQUFLLEdBQUcsR0FBRyxDQUFBLENBQUU7QUFDbEIsZUFBTyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLElBQUk7TUFDMUM7QUFFQSxXQUFLLFVBQVUsS0FBSztBQUVwQixXQUFLLFNBQVMsU0FBVSxRQUFXO0FBQ2pDLGVBQU8sS0FBSyxVQUNWLEtBQ0EsU0FBVSxNQUFXLEtBQVE7QUFDM0IsY0FBSSxlQUFlLE9BQU87QUFBSyxtQkFBTztBQUN0QyxpQkFBTztRQUNULEdBQ0EsTUFBTTtNQUVWO0FBRUEsYUFBTztJQUNUO0FBdGRTO0FBb2VBLFlBQUEsU0FBQTtBQVpULGFBQVMsS0FBSyxRQUFXO0FBQ3ZCLGFBQU8sSUFBSyxPQUFlLE1BQU07SUFDbkM7QUFGUztBQUlULFFBQUksZ0JBQWdCLE9BQU8sUUFBUTtBQUNqQyxhQUFPLFVBQVU7QUFDakIsYUFBTyxRQUFRLFNBQVM7QUFDeEIsYUFBTyxRQUFRLE1BQU0sTUFBQTs7QUFHdkIsWUFBQSxVQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyogQ29weXJpZ2h0IChjKSAyMDExLTIwMjAgUmljaGFyZCBSb2RnZXIsIE1JVCBMaWNlbnNlICovXG5cbmNsYXNzIEdleGVyIHtcbiAgZ2V4bWFwOiB7IFtrZXk6IHN0cmluZ106IFJlZ0V4cCB9XG4gIGRlc2M6IHN0cmluZyA9ICcnXG5cbiAgY29uc3RydWN0b3IoZ2V4c3BlYzogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLmdleG1hcCA9IHt9XG5cbiAgICBpZiAobnVsbCAhPSBnZXhzcGVjKSB7XG4gICAgICBsZXQgZ2V4c3RycyA9IEFycmF5LmlzQXJyYXkoZ2V4c3BlYykgPyBnZXhzcGVjIDogW2dleHNwZWNdXG5cbiAgICAgIGdleHN0cnMuZm9yRWFjaCgoc3RyKSA9PiB7XG4gICAgICAgIHRoaXMuZ2V4bWFwW3N0cl0gPSB0aGlzLnJlKHRoaXMuY2xlYW4oc3RyKSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZG9kZ3kob2JqOiBhbnkpIHtcbiAgICByZXR1cm4gbnVsbCA9PSBvYmogfHwgTnVtYmVyLmlzTmFOKG9iailcbiAgfVxuXG4gIGNsZWFuKGdleGV4cDogYW55KSB7XG4gICAgbGV0IGdleHN0ciA9ICcnICsgZ2V4ZXhwXG4gICAgcmV0dXJuIHRoaXMuZG9kZ3koZ2V4ZXhwKSA/ICcnIDogZ2V4c3RyXG4gIH1cblxuICBtYXRjaChzdHI6IGFueSkge1xuICAgIHN0ciA9ICcnICsgc3RyXG4gICAgbGV0IGhhc21hdGNoID0gZmFsc2VcbiAgICBsZXQgZ2V4c3RycyA9IE9iamVjdC5rZXlzKHRoaXMuZ2V4bWFwKVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnZXhzdHJzLmxlbmd0aCAmJiAhaGFzbWF0Y2g7IGkrKykge1xuICAgICAgaGFzbWF0Y2ggPSAhIXRoaXMuZ2V4bWFwW2dleHN0cnNbaV1dLmV4ZWMoc3RyKVxuICAgIH1cbiAgICByZXR1cm4gaGFzbWF0Y2hcbiAgfVxuXG4gIG9uKG9iajogYW55KSB7XG4gICAgaWYgKG51bGwgPT0gb2JqKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGxldCB0eXBlb2Zfb2JqID0gdHlwZW9mIG9ialxuICAgIGlmIChcbiAgICAgICdzdHJpbmcnID09PSB0eXBlb2Zfb2JqIHx8XG4gICAgICAnbnVtYmVyJyA9PT0gdHlwZW9mX29iaiB8fFxuICAgICAgJ2Jvb2xlYW4nID09PSB0eXBlb2Zfb2JqIHx8XG4gICAgICBvYmogaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICBvYmogaW5zdGFuY2VvZiBSZWdFeHBcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLm1hdGNoKG9iaikgPyBvYmogOiBudWxsXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGxldCBvdXQgPSBbXVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCF0aGlzLmRvZGd5KG9ialtpXSkgJiYgdGhpcy5tYXRjaChvYmpbaV0pKSB7XG4gICAgICAgICAgb3V0LnB1c2gob2JqW2ldKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBvdXRvYmo6IGFueSA9IHt9XG4gICAgICBmb3IgKGxldCBwIGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5tYXRjaChwKSkge1xuICAgICAgICAgICAgb3V0b2JqW3BdID0gb2JqW3BdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0b2JqXG4gICAgfVxuICB9XG5cbiAgZXNjKGdleGV4cDogYW55KSB7XG4gICAgbGV0IGdleHN0ciA9IHRoaXMuY2xlYW4oZ2V4ZXhwKVxuICAgIGdleHN0ciA9IGdleHN0ci5yZXBsYWNlKC9cXCovZywgJyoqJylcbiAgICBnZXhzdHIgPSBnZXhzdHIucmVwbGFjZSgvXFw/L2csICcqPycpXG4gICAgcmV0dXJuIGdleHN0clxuICB9XG5cbiAgZXNjcmVnZXhwKHJlc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVzdHIgPyAoJycgKyByZXN0cikucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csICdcXFxcJCYnKSA6ICcnXG4gIH1cblxuICByZShnczogc3RyaW5nKTogUmVnRXhwIHwgYW55IHtcbiAgICBpZiAoJycgPT09IGdzIHx8IGdzKSB7XG4gICAgICBncyA9IHRoaXMuZXNjcmVnZXhwKGdzKVxuXG4gICAgICAvLyB1c2UgW1xcc1xcU10gaW5zdGVhZCBvZiAuIHRvIG1hdGNoIG5ld2xpbmVzXG4gICAgICBncyA9IGdzLnJlcGxhY2UoL1xcXFxcXCovZywgJ1tcXFxcc1xcXFxTXSonKVxuICAgICAgZ3MgPSBncy5yZXBsYWNlKC9cXFxcXFw/L2csICdbXFxcXHNcXFxcU10nKVxuXG4gICAgICAvLyBlc2NhcGVzICoqIGFuZCAqP1xuICAgICAgZ3MgPSBncy5yZXBsYWNlKC9cXFtcXFxcc1xcXFxTXFxdXFwqXFxbXFxcXHNcXFxcU1xcXVxcKi9nLCAnXFxcXConKVxuICAgICAgZ3MgPSBncy5yZXBsYWNlKC9cXFtcXFxcc1xcXFxTXFxdXFwqXFxbXFxcXHNcXFxcU1xcXS9nLCAnXFxcXD8nKVxuXG4gICAgICBncyA9ICdeJyArIGdzICsgJyQnXG5cbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKGdzKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZ2V4c3RycyA9IE9iamVjdC5rZXlzKHRoaXMuZ2V4bWFwKVxuICAgICAgcmV0dXJuIDEgPT0gZ2V4c3Rycy5sZW5ndGggPyB0aGlzLmdleG1hcFtnZXhzdHJzWzBdXSA6IHsgLi4udGhpcy5nZXhtYXAgfVxuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBkID0gdGhpcy5kZXNjXG4gICAgcmV0dXJuICcnICE9IGQgPyBkIDogKHRoaXMuZGVzYyA9ICdHZXhbJyArIE9iamVjdC5rZXlzKHRoaXMuZ2V4bWFwKSArICddJylcbiAgfVxuXG4gIGluc3BlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKVxuICB9XG59XG5cbmZ1bmN0aW9uIEdleChnZXhzcGVjOiBzdHJpbmcgfCBzdHJpbmdbXSk6IEdleGVyIHtcbiAgcmV0dXJuIG5ldyBHZXhlcihnZXhzcGVjKVxufVxuXG5pZiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBtb2R1bGUpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBHZXhcbiAgbW9kdWxlLmV4cG9ydHMuR2V4ID0gR2V4XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdleFxuXG5leHBvcnQgeyBHZXggfVxuIixudWxsLCIvKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMiBSaWNoYXJkIFJvZGdlciwgTUlUIExpY2Vuc2UgKi9cblxuLy8gVE9ETzogbWF0Y2hlcnMgc2hvdWxkIGFjY2VwdCBzdHJpbmdbXSBvZiBrZXkgbmFtZXMgLSBvbmx5IG9wZXJhdGUgb24gdGhlc2Uga2V5c1xuXG4vLyBUT0RPOiBleHBvc2Ugd2FsayBhcyBtZXRob2QgZm9yIGdlbmVyYWwgcHVycG9zZVxuXG5pbXBvcnQgeyBHZXggfSBmcm9tICdnZXgnXG5cbmltcG9ydCB7XG4gIE1hdGNoZXIsXG4gIE1hdGNoVmFsdWUsXG4gIEdleE1hdGNoZXIsXG4gIEludGVydmFsTWF0Y2hlcixcbn0gZnJvbSAnLi9saWIvbWF0Y2hlcnMnXG5cbmZ1bmN0aW9uIFBhdHJ1bihjdXN0b20/OiBhbnkpIHtcbiAgY3VzdG9tID0gY3VzdG9tIHx8IHt9XG5cbiAgdmFyIHNlbGY6IGFueSA9IHt9XG4gIHZhciB0b3A6IGFueSA9IHt9XG5cbiAgbGV0IG1hdGNoZXJzOiBNYXRjaGVyW10gPSBbXVxuXG4gIGlmIChjdXN0b20uZ2V4KSB7XG4gICAgbWF0Y2hlcnMucHVzaChuZXcgR2V4TWF0Y2hlcigpKVxuICB9XG5cbiAgaWYgKGN1c3RvbS5pbnRlcnZhbCkge1xuICAgIG1hdGNoZXJzLnB1c2gobmV3IEludGVydmFsTWF0Y2hlcigpKVxuICB9XG5cbiAgLy8gUHJvdmlkZSBpbnRlcm5hbCBzZWFyY2ggb3JkZXIgc3RydWN0dXJlXG4gIHNlbGYudG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0b3BcbiAgfVxuXG4gIHNlbGYuYWRkID0gZnVuY3Rpb24gKHBhdDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICBwYXQgPSB7IC4uLnBhdCB9XG5cbiAgICB2YXIgY3VzdG9taXplciA9XG4gICAgICAnZnVuY3Rpb24nID09PSB0eXBlb2YgY3VzdG9tID8gY3VzdG9tLmNhbGwoc2VsZiwgcGF0LCBkYXRhKSA6IG51bGxcblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocGF0KVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiBudWxsICE9IHBhdFtrZXldKVxuICAgICAgLnNvcnQoKVxuXG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHBhdFtrZXldID0gU3RyaW5nKHBhdFtrZXldKVxuICAgIH0pXG5cbiAgICB2YXIga2V5bWFwOiBhbnkgPSB0b3BcbiAgICB2YXIgdmFsbWFwOiBhbnlcblxuICAgIC8vIFBhcnRpYWwgbWF0Y2hlcyByZXR1cm4gbmV4dCB3aWRlciBtYXRjaCAtIHNlZSBwYXJ0aWFsLW1hdGNoIHRlc3QuXG4gICAgLy8gVHJhdmVyc2UgdGhlIGtleSBwYXRoIChrZXlzIGFyZSBvcmRlcmVkKSwgaW5zZXJ0IHByZXNlcnZlcyBvcmRlci5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdMJywgaSwga2V5cy5sZW5ndGgpXG5cbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldXG4gICAgICB2YXIgZml4ID0gcGF0W2tleV1cblxuICAgICAgbGV0IG12OiBNYXRjaFZhbHVlIHwgdW5kZWZpbmVkID0gbWF0Y2hlcnMucmVkdWNlKFxuICAgICAgICAobSwgdCkgPT4gbSB8fCB0Lm1ha2Uoa2V5LCBmaXgpLFxuICAgICAgICB1bmRlZmluZWRcbiAgICAgIClcblxuICAgICAgLy8gaWYgKG12KSBtdi52YWwkID0gZml4XG5cbiAgICAgIHZhbG1hcCA9IGtleW1hcC52XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdTMCcsa2V5LGZpeCxrZXltYXAsdmFsbWFwKVxuXG4gICAgICAvLyBBbiBleGlzdGluZyBrZXlcbiAgICAgIGlmICh2YWxtYXAgJiYga2V5ID09IGtleW1hcC5rKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTMS1hJylcbiAgICAgICAgLy8gYWRkX212KGtleW1hcCwga2V5LCBtdilcblxuICAgICAgICBpZiAobXYpIHtcbiAgICAgICAgICB2YXIgZyA9IChrZXltYXAuZyA9IGtleW1hcC5nIHx8IHt9KVxuICAgICAgICAgIHZhciBnYSA9IChnW2tleV0gPSBnW2tleV0gfHwgW10pXG4gICAgICAgICAgbXYgPSAoZ2EuZmluZCgoZ212OiBNYXRjaFZhbHVlKSA9PiBnbXYuc2FtZShtdikpIHx8XG4gICAgICAgICAgICAoZ2EucHVzaChtdiksIG12KSkgYXMgTWF0Y2hWYWx1ZVxuICAgICAgICAgIGtleW1hcCA9IG12LmtleW1hcCB8fCAobXYua2V5bWFwID0ge30pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5bWFwID0gdmFsbWFwW2ZpeF0gfHwgKHZhbG1hcFtmaXhdID0ge30pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRW5kIG9mIGtleSBwYXRoIHJlYWNoZWQsIHNvIHRoaXMgaXMgYSBuZXcga2V5LCBvcmRlcmVkIGxhc3RcbiAgICAgIGVsc2UgaWYgKCFrZXltYXAuaykge1xuICAgICAgICBrZXltYXAuayA9IGtleVxuICAgICAgICBrZXltYXAudiA9IHt9XG5cbiAgICAgICAgaWYgKG12KSB7XG4gICAgICAgICAgdmFyIGcgPSAoa2V5bWFwLmcgPSBrZXltYXAuZyB8fCB7fSlcbiAgICAgICAgICB2YXIgZ2EgPSAoZ1trZXldID0gZ1trZXldIHx8IFtdKVxuICAgICAgICAgIG12ID0gKGdhLmZpbmQoKGdtdjogTWF0Y2hWYWx1ZSkgPT4gZ212LnNhbWUobXYpKSB8fFxuICAgICAgICAgICAgKGdhLnB1c2gobXYpLCBtdikpIGFzIE1hdGNoVmFsdWVcbiAgICAgICAgICBrZXltYXAgPSBtdi5rZXltYXAgfHwgKG12LmtleW1hcCA9IHt9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleW1hcCA9IGtleW1hcC52W2ZpeF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEluc2VydCBrZXkgb3JkZXJzIGJlZm9yZSBuZXh0IGV4aXN0aW5nIGtleSBpbiBwYXRoLCBzbyBpbnNlcnRcbiAgICAgIGVsc2UgaWYgKGtleSA8IGtleW1hcC5rKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdTMS1jJywga2V5LCBrZXltYXAuaylcbiAgICAgICAgdmFyIHMgPSBrZXltYXAuc1xuICAgICAgICB2YXIgZyA9IGtleW1hcC5nXG5cbiAgICAgICAga2V5bWFwLnMgPSB7XG4gICAgICAgICAgazoga2V5bWFwLmssXG4gICAgICAgICAgLy8gc2s6IGtleW1hcC5zayxcbiAgICAgICAgICB2OiBrZXltYXAudixcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzKSB7XG4gICAgICAgICAga2V5bWFwLnMucyA9IHNcbiAgICAgICAgfVxuICAgICAgICBpZiAoZykge1xuICAgICAgICAgIGtleW1hcC5zLmcgPSBnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5bWFwLmcpIHtcbiAgICAgICAgICBrZXltYXAuZyA9IHt9XG4gICAgICAgIH1cblxuICAgICAgICBrZXltYXAuayA9IGtleVxuICAgICAgICBrZXltYXAudiA9IHt9XG5cbiAgICAgICAgaWYgKG12KSB7XG4gICAgICAgICAgdmFyIGcgPSAoa2V5bWFwLmcgPSBrZXltYXAuZyB8fCB7fSlcbiAgICAgICAgICB2YXIgZ2EgPSAoZ1trZXldID0gZ1trZXldIHx8IFtdKVxuICAgICAgICAgIG12ID0gKGdhLmZpbmQoKGdtdjogTWF0Y2hWYWx1ZSkgPT4gZ212LnNhbWUobXYpKSB8fFxuICAgICAgICAgICAgKGdhLnB1c2gobXYpLCBtdikpIGFzIE1hdGNoVmFsdWVcbiAgICAgICAgICBrZXltYXAgPSBtdi5rZXltYXAgfHwgKG12LmtleW1hcCA9IHt9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleW1hcCA9IGtleW1hcC52W2ZpeF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZvbGxvdyBzdGFyIHBhdGhcbiAgICAgIGVsc2Uge1xuICAgICAgICBrZXltYXAgPSBrZXltYXAucyB8fCAoa2V5bWFwLnMgPSB7fSlcblxuICAgICAgICAvLyBOT1RFOiBjdXJyZW50IGtleSBpcyBzdGlsbCBub3QgaW5zZXJ0ZWRcbiAgICAgICAgaS0tXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZvaWQgMCAhPT0gZGF0YSAmJiBrZXltYXApIHtcbiAgICAgIGtleW1hcC5kID0gZGF0YVxuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAga2V5bWFwLmYgPVxuICAgICAgICAgICdmdW5jdGlvbicgPT09IHR5cGVvZiBjdXN0b21pemVyID8gY3VzdG9taXplciA6IGN1c3RvbWl6ZXIuZmluZFxuICAgICAgICBrZXltYXAuciA9XG4gICAgICAgICAgJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGN1c3RvbWl6ZXIucmVtb3ZlID8gY3VzdG9taXplci5yZW1vdmUgOiB2b2lkIDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZlxuICB9XG5cbiAgc2VsZi5maW5kZXhhY3QgPSBmdW5jdGlvbiAocGF0OiBhbnkpIHtcbiAgICByZXR1cm4gc2VsZi5maW5kKHBhdCwgdHJ1ZSlcbiAgfVxuXG4gIHNlbGYuZmluZCA9IGZ1bmN0aW9uIChwYXQ6IGFueSwgZXhhY3Q6IGFueSwgY29sbGVjdDogYW55KSB7XG4gICAgaWYgKG51bGwgPT0gcGF0KSByZXR1cm4gbnVsbFxuXG4gICAgdmFyIGtleW1hcDogYW55ID0gdG9wXG4gICAgdmFyIGRhdGE6IGFueSA9IHZvaWQgMCA9PT0gdG9wLmQgPyBudWxsIDogdG9wLmRcbiAgICB2YXIgZmluYWxmaW5kID0gdG9wLmZcbiAgICB2YXIga2V5ID0gbnVsbFxuICAgIHZhciBzdGFycyA9IFtdXG4gICAgdmFyIGZvdW5ka2V5czogYW55ID0ge31cbiAgICB2YXIgcGF0bGVuID0gT2JqZWN0LmtleXMocGF0KS5sZW5ndGhcbiAgICB2YXIgY29sbGVjdGlvbiA9IFtdXG5cbiAgICBpZiAodm9pZCAwICE9PSB0b3AuZCkge1xuICAgICAgY29sbGVjdGlvbi5wdXNoKHRvcC5kKVxuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIGtleSA9IGtleW1hcC5rXG5cbiAgICAgIGlmIChrZXltYXAudikge1xuICAgICAgICB2YXIgdmFsID0gcGF0W2tleV1cblxuICAgICAgICAvLyBNYXRjaGluZyBvcGVyYXRpb24gaXMgZWl0aGVyIHN0cmluZyBlcXVhbGl0eSAoYnkgcHJvcCBsb29rdXApXG4gICAgICAgIC8vIG9yIGdleCBtYXRjaC5cblxuICAgICAgICB2YXIgbmV4dGtleW1hcCA9IGtleW1hcC52W3ZhbF1cblxuICAgICAgICBpZiAoIW5leHRrZXltYXAgJiYga2V5bWFwLmcgJiYga2V5bWFwLmdba2V5XSkge1xuICAgICAgICAgIHZhciBnYSA9IGtleW1hcC5nW2tleV1cbiAgICAgICAgICBmb3IgKHZhciBnaSA9IDA7IGdpIDwgZ2EubGVuZ3RoOyBnaSsrKSB7XG4gICAgICAgICAgICBpZiAoZ2FbZ2ldLm1hdGNoKHZhbCkpIHtcbiAgICAgICAgICAgICAgbmV4dGtleW1hcCA9IGdhW2dpXS5rZXltYXBcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dGtleW1hcCkge1xuICAgICAgICAgIGZvdW5ka2V5c1trZXldID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKGtleW1hcC5zKSB7XG4gICAgICAgICAgICBzdGFycy5wdXNoKGtleW1hcC5zKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGRhdGEgPSB2b2lkIDAgPT09IG5leHRrZXltYXAuZCA/IChleGFjdCA/IG51bGwgOiBkYXRhKSA6IG5leHRrZXltYXAuZFxuXG4gICAgICAgICAgaWYgKGNvbGxlY3QgJiYgdm9pZCAwICE9PSBuZXh0a2V5bWFwLmQpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChuZXh0a2V5bWFwLmQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmluYWxmaW5kID0gbmV4dGtleW1hcC5mXG4gICAgICAgICAga2V5bWFwID0gbmV4dGtleW1hcFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gbm8gbWF0Y2ggZm91bmQgZm9yIHRoaXMgdmFsdWUsIGZvbGxvdyBzdGFyIHRyYWlsXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGtleW1hcCA9IGtleW1hcC5zXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtleW1hcCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBudWxsID09IGtleW1hcCAmJlxuICAgICAgICAwIDwgc3RhcnMubGVuZ3RoICYmXG4gICAgICAgIChudWxsID09IGRhdGEgfHwgKGNvbGxlY3QgJiYgIWV4YWN0KSlcbiAgICAgICkge1xuICAgICAgICBrZXltYXAgPSBzdGFycy5wb3AoKVxuICAgICAgfVxuICAgIH0gd2hpbGUgKGtleW1hcClcblxuICAgIGlmIChleGFjdCkge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGZvdW5ka2V5cykubGVuZ3RoICE9PSBwYXRsZW4pIHtcbiAgICAgICAgZGF0YSA9IG51bGxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUncyByb290IGRhdGEsIHJldHVybiBhcyBhIGNhdGNoIGFsbFxuICAgICAgaWYgKG51bGwgPT0gZGF0YSAmJiB2b2lkIDAgIT09IHRvcC5kKSB7XG4gICAgICAgIGRhdGEgPSB0b3AuZFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaW5hbGZpbmQpIHtcbiAgICAgIGRhdGEgPSBmaW5hbGZpbmQuY2FsbChzZWxmLCBwYXQsIGRhdGEpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbGxlY3QgPyBjb2xsZWN0aW9uIDogZGF0YVxuICB9XG5cbiAgc2VsZi5yZW1vdmUgPSBmdW5jdGlvbiAocGF0OiBhbnkpIHtcbiAgICB2YXIga2V5bWFwID0gdG9wXG4gICAgdmFyIGRhdGEgPSBudWxsXG4gICAgdmFyIGtleVxuICAgIHZhciBwYXRoID0gW11cblxuICAgIGRvIHtcbiAgICAgIGtleSA9IGtleW1hcC5rXG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdrZXltYXAgdiBnJywga2V5bWFwLnYsIGtleW1hcC5nKVxuICAgICAgaWYgKGtleW1hcC52IHx8IGtleW1hcC5nKSB7XG4gICAgICAgIGlmIChrZXltYXAudikge1xuICAgICAgICAgIHZhciBuZXh0a2V5bWFwID0ga2V5bWFwLnZbcGF0W2tleV1dXG5cbiAgICAgICAgICBpZiAobmV4dGtleW1hcCkge1xuICAgICAgICAgICAgcGF0aC5wdXNoKHsga206IGtleW1hcCwgdjogcGF0W2tleV0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobnVsbCA9PSBuZXh0a2V5bWFwICYmIGtleW1hcC5nKSB7XG4gICAgICAgICAgbGV0IG12czogTWF0Y2hWYWx1ZVtdID0ga2V5bWFwLmdba2V5XSB8fCBbXVxuICAgICAgICAgIGZvciAobGV0IG12aSA9IDA7IG12aSA8IG12cy5sZW5ndGg7IG12aSsrKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBzaG91bGQgcGFyc2UhXG4gICAgICAgICAgICBpZiAobXZzW212aV0uZml4ID09PSBwYXRba2V5XSkge1xuICAgICAgICAgICAgICBwYXRoLnB1c2goeyBrbToga2V5bWFwLCB2OiBwYXRba2V5XSwgbXY6IG12c1ttdmldIH0pXG4gICAgICAgICAgICAgIG5leHRrZXltYXAgPSBtdnNbbXZpXS5rZXltYXBcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dGtleW1hcCkge1xuICAgICAgICAgIGRhdGEgPSBuZXh0a2V5bWFwLmRcbiAgICAgICAgICBrZXltYXAgPSBuZXh0a2V5bWFwXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5bWFwID0ga2V5bWFwLnNcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5bWFwID0gbnVsbFxuICAgICAgfVxuICAgIH0gd2hpbGUgKGtleW1hcClcblxuICAgIGlmICh2b2lkIDAgIT09IGRhdGEpIHtcbiAgICAgIHZhciBwYXJ0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdXG4gICAgICBpZiAocGFydCAmJiBwYXJ0LmttICYmIHBhcnQua20udikge1xuICAgICAgICB2YXIgcG9pbnQgPSBwYXJ0LmttLnZbcGFydC52XSB8fCAocGFydC5tdiAmJiBwYXJ0Lm12LmtleW1hcClcbiAgICAgICAgaWYgKHBvaW50ICYmICghcG9pbnQuciB8fCBwb2ludC5yKHBhdCwgcG9pbnQuZCkpKSB7XG4gICAgICAgICAgZGVsZXRlIHBvaW50LmRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHZhbHVlcyBjYW4gYmUgdmVyYmF0aW0sIGdsb2IsIG9yIGFycmF5IG9mIGdsb2JzXG4gIHNlbGYubGlzdCA9IGZ1bmN0aW9uIChwYXQ6IGFueSwgZXhhY3Q6IGJvb2xlYW4pIHtcbiAgICBwYXQgPSBwYXQgfHwge31cblxuICAgIGZ1bmN0aW9uIGRlc2NlbmQoa2V5bWFwOiBhbnksIG1hdGNoOiBhbnksIG1pc3Npbmc6IGFueSwgYWNjOiBhbnkpIHtcbiAgICAgIGlmIChrZXltYXAudikge1xuICAgICAgICB2YXIga2V5ID0ga2V5bWFwLmtcbiAgICAgICAgdmFyIGdleHZhbCA9IEdleChcbiAgICAgICAgICBwYXQgPyAobnVsbCA9PSBwYXRba2V5XSA/IChleGFjdCA/IG51bGwgOiAnKicpIDogcGF0W2tleV0pIDogJyonXG4gICAgICAgIClcbiAgICAgICAgdmFyIGl0ZXJtYXRjaCA9IHsgLi4ubWF0Y2ggfVxuICAgICAgICB2YXIgaXRlcm1pc3NpbmcgPSB7IC4uLm1pc3NpbmcgfVxuICAgICAgICB2YXIgbmV4dGtleW1hcFxuXG4gICAgICAgIGZvciAodmFyIHZhbCBpbiBrZXltYXAudikge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHZhbCA9PT0gcGF0W2tleV0gfHxcbiAgICAgICAgICAgICghZXhhY3QgJiYgbnVsbCA9PSBwYXRba2V5XSkgfHxcbiAgICAgICAgICAgIGdleHZhbC5vbih2YWwpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB2YXIgdmFsaXRlcm1hdGNoID0geyAuLi5pdGVybWF0Y2ggfVxuICAgICAgICAgICAgdmFsaXRlcm1hdGNoW2tleV0gPSB2YWxcblxuICAgICAgICAgICAgdmFyIHZhbGl0ZXJtaXNzaW5nID0geyAuLi5pdGVybWlzc2luZyB9XG4gICAgICAgICAgICBkZWxldGUgdmFsaXRlcm1pc3Npbmdba2V5XVxuXG4gICAgICAgICAgICBuZXh0a2V5bWFwID0ga2V5bWFwLnZbdmFsXVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIDAgPT09IE9iamVjdC5rZXlzKHZhbGl0ZXJtaXNzaW5nKS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgbmV4dGtleW1hcCAmJlxuICAgICAgICAgICAgICBuZXh0a2V5bWFwLmRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgICAgICAgbWF0Y2g6IHZhbGl0ZXJtYXRjaCxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXh0a2V5bWFwLmQsXG4gICAgICAgICAgICAgICAgZmluZDogbmV4dGtleW1hcC5mLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV4dGtleW1hcCAmJiBudWxsICE9IG5leHRrZXltYXAudikge1xuICAgICAgICAgICAgICBkZXNjZW5kKFxuICAgICAgICAgICAgICAgIG5leHRrZXltYXAsXG4gICAgICAgICAgICAgICAgeyAuLi52YWxpdGVybWF0Y2ggfSxcbiAgICAgICAgICAgICAgICB7IC4uLnZhbGl0ZXJtaXNzaW5nIH0sXG4gICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0a2V5bWFwID0ga2V5bWFwLnNcbiAgICAgICAgaWYgKG5leHRrZXltYXApIHtcbiAgICAgICAgICBkZXNjZW5kKG5leHRrZXltYXAsIHsgLi4uaXRlcm1hdGNoIH0sIHsgLi4uaXRlcm1pc3NpbmcgfSwgYWNjKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFjYyA9IFtdXG5cbiAgICBpZiAodG9wLmQpIHtcbiAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgbWF0Y2g6IHt9LFxuICAgICAgICBkYXRhOiB0b3AuZCxcbiAgICAgICAgZmluZDogdG9wLmYsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRlc2NlbmQodG9wLCB7fSwgeyAuLi5wYXQgfSwgYWNjKVxuICAgIHJldHVybiBhY2NcbiAgfVxuXG4gIHNlbGYudG9TdHJpbmcgPSBmdW5jdGlvbiAoZmlyc3Q6IGFueSwgc2Vjb25kOiBhbnkpIHtcbiAgICB2YXIgdHJlZSA9IHRydWUgPT09IGZpcnN0ID8gdHJ1ZSA6ICEhc2Vjb25kXG5cbiAgICB2YXIgZHN0ciA9XG4gICAgICAnZnVuY3Rpb24nID09PSB0eXBlb2YgZmlyc3RcbiAgICAgICAgPyBmaXJzdFxuICAgICAgICA6IGZ1bmN0aW9uIChkOiBhbnkpIHtcbiAgICAgICAgICAgIHJldHVybiAnZnVuY3Rpb24nID09PSB0eXBlb2YgZCA/ICc8JyArIGQubmFtZSArICc+JyA6ICc8JyArIGQgKyAnPidcbiAgICAgICAgICB9XG5cbiAgICBmdW5jdGlvbiBpbmRlbnQobzogYW55LCBkOiBhbnkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZDsgaSsrKSB7XG4gICAgICAgIG8ucHVzaCgnICcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHN0cjogYW55W10gPSBbXVxuXG4gICAgZnVuY3Rpb24gd2FsayhuOiBhbnksIG86IGFueSwgZDogYW55LCB2czogYW55KSB7XG4gICAgICB2YXIgdnNjXG5cbiAgICAgIGlmICh2b2lkIDAgIT09IG4uZCkge1xuICAgICAgICBvLnB1c2goJyAnICsgZHN0cihuLmQpKVxuXG4gICAgICAgIHN0ci5wdXNoKHZzLmpvaW4oJywgJykgKyAnIC0+ICcgKyBkc3RyKG4uZCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChuLmspIHtcbiAgICAgICAgby5wdXNoKCdcXG4nKVxuICAgICAgICBpbmRlbnQobywgZClcbiAgICAgICAgby5wdXNoKG4uayArICc6JylcbiAgICAgIH1cblxuICAgICAgaWYgKG4udiB8fCBuLnMgfHwgbi5nKSB7XG4gICAgICAgIGQrK1xuICAgICAgfVxuXG4gICAgICBpZiAobi52KSB7XG4gICAgICAgIC8vIGQrK1xuICAgICAgICB2YXIgcGEgPSBPYmplY3Qua2V5cyhuLnYpLnNvcnQoKVxuXG4gICAgICAgIGZvciAodmFyIHBpID0gMDsgcGkgPCBwYS5sZW5ndGg7IHBpKyspIHtcbiAgICAgICAgICB2YXIgcCA9IHBhW3BpXVxuICAgICAgICAgIG8ucHVzaCgnXFxuJylcbiAgICAgICAgICBpbmRlbnQobywgZClcbiAgICAgICAgICBvLnB1c2gocCArICcgLT4nKVxuXG4gICAgICAgICAgdnNjID0gdnMuc2xpY2UoKVxuICAgICAgICAgIHZzYy5wdXNoKG4uayArICc9JyArIHApXG5cbiAgICAgICAgICB3YWxrKG4udltwXSwgbywgZCArIDEsIHZzYylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobi5nKSB7XG4gICAgICAgIHZhciBwYSA9IE9iamVjdC5rZXlzKG4uZykuc29ydCgpXG5cbiAgICAgICAgZm9yICh2YXIgcGkgPSAwOyBwaSA8IHBhLmxlbmd0aDsgcGkrKykge1xuICAgICAgICAgIHZhciBtdnMgPSBuLmdbcGFbcGldXVxuXG4gICAgICAgICAgZm9yICh2YXIgbXZpID0gMDsgbXZpIDwgbXZzLmxlbmd0aDsgbXZpKyspIHtcbiAgICAgICAgICAgIHZhciBtdiA9IG12c1ttdmldXG5cbiAgICAgICAgICAgIG8ucHVzaCgnXFxuJylcbiAgICAgICAgICAgIGluZGVudChvLCBkKVxuICAgICAgICAgICAgby5wdXNoKG12LmZpeCArICcgfj4nKVxuXG4gICAgICAgICAgICB2c2MgPSB2cy5zbGljZSgpXG4gICAgICAgICAgICB2c2MucHVzaChuLmsgKyAnficgKyBtdi5maXgpXG5cbiAgICAgICAgICAgIHdhbGsobXYua2V5bWFwLCBvLCBkICsgMSwgdnNjKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobi5zKSB7XG4gICAgICAgIG8ucHVzaCgnXFxuJylcbiAgICAgICAgaW5kZW50KG8sIGQpXG4gICAgICAgIG8ucHVzaCgnfCcpXG5cbiAgICAgICAgdnNjID0gdnMuc2xpY2UoKVxuICAgICAgICB3YWxrKG4ucywgbywgZCArIDEsIHZzYylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbzogYW55ID0gW11cbiAgICB3YWxrKHRvcCwgbywgMCwgW10pXG4gICAgcmV0dXJuIHRyZWUgPyBvLmpvaW4oJycpIDogc3RyLmpvaW4oJ1xcbicpXG4gIH1cblxuICBzZWxmLmluc3BlY3QgPSBzZWxmLnRvU3RyaW5nXG5cbiAgc2VsZi50b0pTT04gPSBmdW5jdGlvbiAoaW5kZW50OiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB0b3AsXG4gICAgICBmdW5jdGlvbiAoX2tleTogYW55LCB2YWw6IGFueSkge1xuICAgICAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuICdbRnVuY3Rpb25dJ1xuICAgICAgICByZXR1cm4gdmFsXG4gICAgICB9LFxuICAgICAgaW5kZW50XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHNlbGZcbn1cblxuZnVuY3Rpb24gbWFrZShjdXN0b206IGFueSkge1xuICByZXR1cm4gbmV3IChQYXRydW4gYXMgYW55KShjdXN0b20pXG59XG5cbmlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIG1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IG1ha2VcbiAgbW9kdWxlLmV4cG9ydHMuUGF0cnVuID0gUGF0cnVuXG4gIG1vZHVsZS5leHBvcnRzLkdleCA9IEdleFxufVxuXG5leHBvcnQgZGVmYXVsdCBtYWtlXG5cbmV4cG9ydCB7IFBhdHJ1biwgR2V4IH1cbiJdfQ==