velocious 1.0.145 → 1.0.147

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 (291) hide show
  1. package/build/src/application.d.ts +8 -8
  2. package/build/src/application.d.ts.map +1 -1
  3. package/build/src/application.js +9 -9
  4. package/build/src/cli/base-command.d.ts +5 -5
  5. package/build/src/cli/base-command.d.ts.map +1 -1
  6. package/build/src/cli/base-command.js +6 -6
  7. package/build/src/cli/browser-cli.d.ts +2 -2
  8. package/build/src/cli/browser-cli.js +3 -3
  9. package/build/src/cli/commands/db/create.d.ts +3 -3
  10. package/build/src/cli/commands/db/create.js +4 -4
  11. package/build/src/cli/index.d.ts +1 -1
  12. package/build/src/cli/index.d.ts.map +1 -1
  13. package/build/src/cli/index.js +2 -2
  14. package/build/src/configuration-resolver.d.ts +1 -1
  15. package/build/src/configuration-resolver.js +2 -2
  16. package/build/src/configuration-types.d.ts +2 -0
  17. package/build/src/configuration-types.d.ts.map +1 -1
  18. package/build/src/configuration-types.js +2 -1
  19. package/build/src/configuration.d.ts +34 -34
  20. package/build/src/configuration.d.ts.map +1 -1
  21. package/build/src/configuration.js +35 -35
  22. package/build/src/controller.d.ts +13 -13
  23. package/build/src/controller.d.ts.map +1 -1
  24. package/build/src/controller.js +14 -14
  25. package/build/src/database/drivers/base-column.d.ts +13 -13
  26. package/build/src/database/drivers/base-column.js +14 -14
  27. package/build/src/database/drivers/base-columns-index.d.ts +8 -8
  28. package/build/src/database/drivers/base-columns-index.js +9 -9
  29. package/build/src/database/drivers/base-foreign-key.d.ts +9 -9
  30. package/build/src/database/drivers/base-foreign-key.js +10 -10
  31. package/build/src/database/drivers/base-table.d.ts +11 -11
  32. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  33. package/build/src/database/drivers/base-table.js +13 -12
  34. package/build/src/database/drivers/base.d.ts +78 -62
  35. package/build/src/database/drivers/base.d.ts.map +1 -1
  36. package/build/src/database/drivers/base.js +132 -63
  37. package/build/src/database/drivers/mssql/index.d.ts +5 -5
  38. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  39. package/build/src/database/drivers/mssql/index.js +26 -25
  40. package/build/src/database/drivers/mssql/options.js +6 -6
  41. package/build/src/database/drivers/mssql/structure-sql.d.ts +2 -2
  42. package/build/src/database/drivers/mssql/structure-sql.js +3 -3
  43. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  44. package/build/src/database/drivers/mssql/table.js +3 -2
  45. package/build/src/database/drivers/mysql/index.d.ts +5 -5
  46. package/build/src/database/drivers/mysql/index.js +27 -27
  47. package/build/src/database/drivers/mysql/options.js +2 -2
  48. package/build/src/database/drivers/mysql/query.d.ts +2 -1
  49. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  50. package/build/src/database/drivers/mysql/query.js +2 -1
  51. package/build/src/database/drivers/mysql/structure-sql.d.ts +3 -3
  52. package/build/src/database/drivers/mysql/structure-sql.js +4 -4
  53. package/build/src/database/drivers/pgsql/index.d.ts +1 -1
  54. package/build/src/database/drivers/pgsql/index.js +14 -14
  55. package/build/src/database/drivers/pgsql/options.d.ts +1 -1
  56. package/build/src/database/drivers/pgsql/options.js +2 -2
  57. package/build/src/database/drivers/pgsql/structure-sql.d.ts +2 -2
  58. package/build/src/database/drivers/pgsql/structure-sql.js +3 -3
  59. package/build/src/database/drivers/sqlite/base.d.ts +4 -4
  60. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  61. package/build/src/database/drivers/sqlite/base.js +24 -21
  62. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +1 -1
  63. package/build/src/database/drivers/sqlite/connection-sql-js.js +2 -2
  64. package/build/src/database/drivers/sqlite/index.js +2 -2
  65. package/build/src/database/drivers/sqlite/index.web.d.ts +1 -1
  66. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  67. package/build/src/database/drivers/sqlite/index.web.js +3 -3
  68. package/build/src/database/drivers/sqlite/options.d.ts +1 -1
  69. package/build/src/database/drivers/sqlite/options.js +2 -2
  70. package/build/src/database/drivers/sqlite/query.d.ts +1 -1
  71. package/build/src/database/drivers/sqlite/query.js +2 -2
  72. package/build/src/database/drivers/sqlite/query.web.d.ts +1 -1
  73. package/build/src/database/drivers/sqlite/query.web.js +2 -2
  74. package/build/src/database/drivers/sqlite/sql/alter-table.js +2 -2
  75. package/build/src/database/drivers/sqlite/structure-sql.d.ts +1 -1
  76. package/build/src/database/drivers/sqlite/structure-sql.js +2 -2
  77. package/build/src/database/drivers/sqlite/table.d.ts +4 -1
  78. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  79. package/build/src/database/drivers/sqlite/table.js +6 -3
  80. package/build/src/database/drivers/structure-sql/utils.d.ts +2 -2
  81. package/build/src/database/drivers/structure-sql/utils.js +3 -3
  82. package/build/src/database/handler.d.ts +1 -1
  83. package/build/src/database/handler.js +2 -2
  84. package/build/src/database/initializer-from-require-context.d.ts +1 -1
  85. package/build/src/database/initializer-from-require-context.js +2 -2
  86. package/build/src/database/migration/index.d.ts +17 -17
  87. package/build/src/database/migration/index.d.ts.map +1 -1
  88. package/build/src/database/migration/index.js +19 -19
  89. package/build/src/database/migrator/files-finder.d.ts +1 -1
  90. package/build/src/database/migrator/files-finder.js +2 -2
  91. package/build/src/database/migrator.d.ts +10 -10
  92. package/build/src/database/migrator.d.ts.map +1 -1
  93. package/build/src/database/migrator.js +11 -11
  94. package/build/src/database/pool/async-tracked-multi-connection.d.ts +4 -4
  95. package/build/src/database/pool/async-tracked-multi-connection.js +9 -9
  96. package/build/src/database/pool/base-methods-forward.d.ts +1 -1
  97. package/build/src/database/pool/base-methods-forward.js +2 -2
  98. package/build/src/database/pool/base.d.ts +11 -11
  99. package/build/src/database/pool/base.js +12 -12
  100. package/build/src/database/pool/single-multi-use.js +4 -4
  101. package/build/src/database/query/alter-table-base.js +2 -2
  102. package/build/src/database/query/base.d.ts +2 -2
  103. package/build/src/database/query/base.js +3 -3
  104. package/build/src/database/query/create-database-base.d.ts +1 -1
  105. package/build/src/database/query/create-database-base.js +2 -2
  106. package/build/src/database/query/create-index-base.js +2 -2
  107. package/build/src/database/query/create-table-base.d.ts +1 -1
  108. package/build/src/database/query/create-table-base.js +2 -2
  109. package/build/src/database/query/drop-table-base.js +2 -2
  110. package/build/src/database/query/from-base.d.ts +3 -3
  111. package/build/src/database/query/from-base.js +4 -4
  112. package/build/src/database/query/index.d.ts +18 -18
  113. package/build/src/database/query/index.d.ts.map +1 -1
  114. package/build/src/database/query/index.js +19 -19
  115. package/build/src/database/query/insert-base.d.ts +2 -1
  116. package/build/src/database/query/insert-base.d.ts.map +1 -1
  117. package/build/src/database/query/insert-base.js +3 -2
  118. package/build/src/database/query/join-base.d.ts +2 -2
  119. package/build/src/database/query/join-base.js +3 -3
  120. package/build/src/database/query/join-object.d.ts +1 -1
  121. package/build/src/database/query/join-object.js +2 -2
  122. package/build/src/database/query/model-class-query.d.ts +14 -14
  123. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  124. package/build/src/database/query/model-class-query.js +15 -15
  125. package/build/src/database/query/order-base.d.ts +2 -2
  126. package/build/src/database/query/order-base.js +3 -3
  127. package/build/src/database/query/select-base.d.ts +2 -2
  128. package/build/src/database/query/select-base.js +3 -3
  129. package/build/src/database/query/update-base.d.ts +1 -1
  130. package/build/src/database/query/update-base.js +2 -2
  131. package/build/src/database/query/where-base.d.ts +3 -3
  132. package/build/src/database/query/where-base.js +4 -4
  133. package/build/src/database/query/where-hash.d.ts +1 -0
  134. package/build/src/database/query/where-hash.d.ts.map +1 -1
  135. package/build/src/database/query/where-hash.js +5 -1
  136. package/build/src/database/query-parser/from-parser.d.ts +1 -1
  137. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  138. package/build/src/database/query-parser/from-parser.js +2 -2
  139. package/build/src/database/query-parser/group-parser.d.ts +1 -1
  140. package/build/src/database/query-parser/group-parser.js +2 -2
  141. package/build/src/database/query-parser/options.d.ts +6 -6
  142. package/build/src/database/query-parser/options.js +7 -7
  143. package/build/src/database/record/index.d.ts +99 -87
  144. package/build/src/database/record/index.d.ts.map +1 -1
  145. package/build/src/database/record/index.js +121 -91
  146. package/build/src/database/record/instance-relationships/base.d.ts +7 -7
  147. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  148. package/build/src/database/record/instance-relationships/base.js +8 -8
  149. package/build/src/database/record/instance-relationships/belongs-to.d.ts +1 -1
  150. package/build/src/database/record/instance-relationships/belongs-to.js +2 -2
  151. package/build/src/database/record/instance-relationships/has-many.d.ts +7 -7
  152. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  153. package/build/src/database/record/instance-relationships/has-many.js +9 -9
  154. package/build/src/database/record/instance-relationships/has-one.d.ts +1 -1
  155. package/build/src/database/record/instance-relationships/has-one.js +2 -2
  156. package/build/src/database/record/relationships/base.d.ts +3 -3
  157. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  158. package/build/src/database/record/relationships/base.js +4 -4
  159. package/build/src/database/record/relationships/belongs-to.js +3 -3
  160. package/build/src/database/record/relationships/has-many.js +3 -3
  161. package/build/src/database/record/relationships/has-one.js +3 -3
  162. package/build/src/database/record/validators/base.d.ts +1 -1
  163. package/build/src/database/record/validators/base.js +2 -2
  164. package/build/src/database/record/validators/uniqueness.js +2 -2
  165. package/build/src/database/table-data/index.d.ts +19 -19
  166. package/build/src/database/table-data/index.js +20 -20
  167. package/build/src/database/table-data/table-column.d.ts +23 -23
  168. package/build/src/database/table-data/table-column.js +24 -24
  169. package/build/src/database/table-data/table-foreign-key.d.ts +7 -7
  170. package/build/src/database/table-data/table-foreign-key.js +8 -8
  171. package/build/src/database/table-data/table-index.d.ts +3 -3
  172. package/build/src/database/table-data/table-index.js +4 -4
  173. package/build/src/database/use-database.d.ts +1 -1
  174. package/build/src/database/use-database.js +2 -2
  175. package/build/src/environment-handlers/base.d.ts +24 -24
  176. package/build/src/environment-handlers/base.js +25 -25
  177. package/build/src/environment-handlers/browser.d.ts +4 -4
  178. package/build/src/environment-handlers/browser.js +9 -9
  179. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +1 -1
  180. package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +2 -2
  181. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +2 -2
  182. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +3 -3
  183. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +1 -1
  184. package/build/src/environment-handlers/node/cli/commands/generate/migration.js +2 -2
  185. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +1 -1
  186. package/build/src/environment-handlers/node/cli/commands/generate/model.js +2 -2
  187. package/build/src/environment-handlers/node/cli/commands/init.d.ts +1 -1
  188. package/build/src/environment-handlers/node/cli/commands/init.js +2 -2
  189. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +2 -2
  190. package/build/src/environment-handlers/node/cli/commands/routes.js +3 -3
  191. package/build/src/environment-handlers/node.d.ts +9 -9
  192. package/build/src/environment-handlers/node.js +21 -21
  193. package/build/src/error-logger.d.ts +1 -0
  194. package/build/src/error-logger.d.ts.map +1 -1
  195. package/build/src/error-logger.js +3 -2
  196. package/build/src/http-client/index.d.ts +1 -1
  197. package/build/src/http-client/index.js +2 -2
  198. package/build/src/http-client/request.d.ts +6 -0
  199. package/build/src/http-client/request.d.ts.map +1 -1
  200. package/build/src/http-client/request.js +7 -1
  201. package/build/src/http-client/response.d.ts +2 -2
  202. package/build/src/http-client/response.js +3 -3
  203. package/build/src/http-client/websocket-client.d.ts +7 -7
  204. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  205. package/build/src/http-client/websocket-client.js +8 -8
  206. package/build/src/http-server/client/index.d.ts +5 -5
  207. package/build/src/http-server/client/index.d.ts.map +1 -1
  208. package/build/src/http-server/client/index.js +6 -6
  209. package/build/src/http-server/client/params-to-object.d.ts +3 -3
  210. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  211. package/build/src/http-server/client/params-to-object.js +4 -4
  212. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +2 -2
  213. package/build/src/http-server/client/request-buffer/form-data-part.js +3 -3
  214. package/build/src/http-server/client/request-buffer/index.d.ts +10 -10
  215. package/build/src/http-server/client/request-buffer/index.js +11 -11
  216. package/build/src/http-server/client/request-parser.d.ts +14 -14
  217. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  218. package/build/src/http-server/client/request-parser.js +15 -15
  219. package/build/src/http-server/client/request.d.ts +2 -2
  220. package/build/src/http-server/client/request.js +3 -3
  221. package/build/src/http-server/client/response.d.ts +8 -8
  222. package/build/src/http-server/client/response.js +9 -9
  223. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +2 -2
  224. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +2 -2
  225. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +1 -1
  226. package/build/src/http-server/client/uploaded-file/uploaded-file.js +2 -2
  227. package/build/src/http-server/client/websocket-session.d.ts +10 -10
  228. package/build/src/http-server/client/websocket-session.js +11 -11
  229. package/build/src/http-server/index.d.ts +12 -12
  230. package/build/src/http-server/index.d.ts.map +1 -1
  231. package/build/src/http-server/index.js +13 -13
  232. package/build/src/http-server/server-client.d.ts +6 -6
  233. package/build/src/http-server/server-client.d.ts.map +1 -1
  234. package/build/src/http-server/server-client.js +7 -7
  235. package/build/src/http-server/websocket-events-host.d.ts +2 -2
  236. package/build/src/http-server/websocket-events-host.js +3 -3
  237. package/build/src/http-server/websocket-events.d.ts +1 -1
  238. package/build/src/http-server/websocket-events.js +2 -2
  239. package/build/src/http-server/worker-handler/index.d.ts +4 -4
  240. package/build/src/http-server/worker-handler/index.js +5 -5
  241. package/build/src/http-server/worker-handler/worker-thread.d.ts +2 -2
  242. package/build/src/http-server/worker-handler/worker-thread.js +3 -3
  243. package/build/src/initializer.d.ts +3 -3
  244. package/build/src/initializer.js +4 -4
  245. package/build/src/logger.d.ts +9 -9
  246. package/build/src/logger.js +17 -17
  247. package/build/src/routes/app-routes.d.ts +1 -1
  248. package/build/src/routes/app-routes.js +2 -2
  249. package/build/src/routes/base-route.d.ts +6 -6
  250. package/build/src/routes/base-route.d.ts.map +1 -1
  251. package/build/src/routes/base-route.js +7 -7
  252. package/build/src/routes/basic-route.d.ts +1 -1
  253. package/build/src/routes/basic-route.js +5 -5
  254. package/build/src/routes/get-route.js +2 -2
  255. package/build/src/routes/index.d.ts +1 -1
  256. package/build/src/routes/index.js +2 -2
  257. package/build/src/routes/namespace-route.js +2 -2
  258. package/build/src/routes/post-route.js +2 -2
  259. package/build/src/routes/resolver.d.ts +4 -4
  260. package/build/src/routes/resolver.d.ts.map +1 -1
  261. package/build/src/routes/resolver.js +9 -6
  262. package/build/src/routes/resource-route.js +2 -2
  263. package/build/src/testing/format-value.d.ts +2 -2
  264. package/build/src/testing/format-value.js +5 -5
  265. package/build/src/testing/request-client.d.ts +6 -6
  266. package/build/src/testing/request-client.d.ts.map +1 -1
  267. package/build/src/testing/request-client.js +7 -7
  268. package/build/src/testing/test-files-finder.d.ts +8 -7
  269. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  270. package/build/src/testing/test-files-finder.js +8 -7
  271. package/build/src/testing/test-runner.d.ts +14 -14
  272. package/build/src/testing/test-runner.js +15 -15
  273. package/build/src/testing/test.d.ts +26 -26
  274. package/build/src/testing/test.js +27 -27
  275. package/build/src/utils/backtrace-cleaner.d.ts +2 -2
  276. package/build/src/utils/backtrace-cleaner.js +3 -3
  277. package/build/src/utils/ensure-error.d.ts +1 -1
  278. package/build/src/utils/ensure-error.js +2 -2
  279. package/build/src/utils/file-exists.d.ts +1 -1
  280. package/build/src/utils/file-exists.js +2 -2
  281. package/build/src/utils/nest-callbacks.d.ts +1 -1
  282. package/build/src/utils/nest-callbacks.js +2 -2
  283. package/build/src/utils/rest-args-error.d.ts +1 -1
  284. package/build/src/utils/rest-args-error.js +2 -2
  285. package/build/src/utils/singularize-model-name.d.ts +1 -1
  286. package/build/src/utils/singularize-model-name.js +2 -2
  287. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +1 -1
  288. package/build/src/utils/with-tracked-stack-async-hooks.js +2 -2
  289. package/build/src/utils/with-tracked-stack.d.ts +1 -1
  290. package/build/src/utils/with-tracked-stack.js +2 -2
  291. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/routes/resolver.js"],"names":[],"mappings":"AASA;IAIE;;;;;OAKG;IACH,kDAJG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACoB,OAAO,EAAhE,OAAO,kCAAkC,EAAE,OAAO;QACQ,QAAQ,EAAlE,OAAO,mCAAmC,EAAE,OAAO;KAC7D,EAUA;IAlBD,iCAAiC;IACjC,QADW,MAAM,GAAG,SAAS,CACvB;IAaJ,qDAAkC;IAClC,YAA8B;IAC9B,4DAAsB;IACtB,8DAAwB;IAG1B,yBAwDC;IAED;;;;OAIG;IACH,2BAJW,OAAO,iBAAiB,EAAE,OAAO,QACjC,MAAM,GACJ;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,SAAS,CAsB1C;IAED;;;;;OAKG;IACH,6CAJG;QAAqB,MAAM,EAAnB,MAAM;QAC0C,eAAe,EAA/D,cAAc,kBAAkB,EAAE,OAAO;KACjD,GAAU,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,uBAHW,IAAI,GACF,MAAM,CAkBlB;IAED;;;OAGG;IACH,iCAHW,GAAG,GACD,GAAG,CA2Bf;CACF;uBArLoB,cAAc"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/routes/resolver.js"],"names":[],"mappings":"AASA;IAIE;;;;;OAKG;IACH,kDAJG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACoB,OAAO,EAAhE,OAAO,kCAAkC,EAAE,OAAO;QACQ,QAAQ,EAAlE,OAAO,mCAAmC,EAAE,OAAO;KAC7D,EAUA;IAlBD,iCAAiC;IACjC,QADW,MAAM,GAAG,SAAS,CACvB;IAaJ,qDAAkC;IAClC,YAA8B;IAC9B,4DAAsB;IACtB,8DAAwB;IAG1B,yBAwDC;IAED;;;;OAIG;IACH,2BAJW,OAAO,iBAAiB,EAAE,OAAO,QACjC,MAAM,GACJ;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,GAAG,SAAS,CAsB1C;IAED;;;;;OAKG;IACH,6CAJG;QAAqB,MAAM,EAAnB,MAAM;QAC0C,eAAe,EAA/D,cAAc,kBAAkB,EAAE,OAAO;KACjD,GAAU,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;OAGG;IACH,uBAHW,IAAI,GACF,MAAM,CAqBlB;IAED;;;OAGG;IACH,iCAHW,GAAG,GACD,GAAG,CA2Bf;CACF;uBAxLoB,cAAc"}
@@ -79,7 +79,7 @@ export default class VelociousRoutesResolver {
79
79
  /**
80
80
  * @param {import("./base-route.js").default} route
81
81
  * @param {string} path
82
- * @returns {{restPath: string} | undefined}
82
+ * @returns {{restPath: string} | undefined} - Result.
83
83
  */
84
84
  matchPathWithRoutes(route, path) {
85
85
  const pathWithoutSlash = path.replace(/^\//, "").split("?")[0];
@@ -102,7 +102,7 @@ export default class VelociousRoutesResolver {
102
102
  * @param {object} args
103
103
  * @param {string} args.action
104
104
  * @param {typeof import("../controller.js").default} args.controllerClass
105
- * @returns {Promise<void>}
105
+ * @returns {Promise<void>} - Result.
106
106
  */
107
107
  async _logActionStart({ action, controllerClass }) {
108
108
  const request = this.request;
@@ -117,10 +117,13 @@ export default class VelociousRoutesResolver {
117
117
  }
118
118
  /**
119
119
  * @param {Date} date
120
- * @returns {string}
120
+ * @returns {string} - Result.
121
121
  */
122
122
  _formatTimestamp(date) {
123
- /** @param {number} num */
123
+ /**
124
+ * @param {number} num
125
+ * @returns {string} - Result.
126
+ */
124
127
  const pad = (num) => String(num).padStart(2, "0");
125
128
  const year = date.getFullYear();
126
129
  const month = pad(date.getMonth() + 1);
@@ -137,7 +140,7 @@ export default class VelociousRoutesResolver {
137
140
  }
138
141
  /**
139
142
  * @param {any} value
140
- * @returns {any}
143
+ * @returns {any} - Result.
141
144
  */
142
145
  _sanitizeParamsForLogging(value) {
143
146
  if (value instanceof UploadedFile) {
@@ -161,4 +164,4 @@ export default class VelociousRoutesResolver {
161
164
  return value;
162
165
  }
163
166
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL3Jlc29sdmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxLQUFLLENBQUE7QUFDakMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxZQUFZLE1BQU0sc0RBQXNELENBQUE7QUFFL0UsTUFBTSxDQUFDLE9BQU8sT0FBTyx1QkFBdUI7SUFDMUMsaUNBQWlDO0lBQ2pDLE1BQU0sQ0FBQTtJQUVOOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRW5ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksY0FBYyxDQUFBO1FBQ2xCLElBQUksWUFBWSxHQUFHLElBQUksQ0FB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O0lBQ3RILENBQUM7SUFFRDs7O09BR0c7SUFDSCx5QkFBeUIsQ0FBQyxLQUFLO1FBQzdCLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRSxDQUFDO1lBQ2xDLE9BQU87Z0JBQ0wsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSTtnQkFDakMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFO2FBQ25CLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsRSxDQUFDO1FBRUQsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsa0NBQWtDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUVqQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUMxRCxDQUFDO1lBRUQsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtkaXJuYW1lfSBmcm9tIFwicGF0aFwiXG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gXCJ1cmxcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCBVcGxvYWRlZEZpbGUgZnJvbSBcIi4uL2h0dHAtc2VydmVyL2NsaWVudC91cGxvYWRlZC1maWxlL3VwbG9hZGVkLWZpbGUuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNSb3V0ZXNSZXNvbHZlciB7XG4gIC8qKiBAdHlwZSB7TG9nZ2VyIHwgdW5kZWZpbmVkfSAqL1xuICBsb2dnZXJcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXNwb25zZS5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlc3BvbnNlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgcmVxdWVzdCwgcmVzcG9uc2V9KSB7XG4gICAgaWYgKCFjb25maWd1cmF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25maWd1cmF0aW9uIGdpdmVuXCIpXG4gICAgaWYgKCFyZXF1ZXN0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZXF1ZXN0IGdpdmVuXCIpXG4gICAgaWYgKCFyZXNwb25zZSkgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVzcG9uc2UgZ2l2ZW5cIilcblxuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnBhcmFtcyA9IHJlcXVlc3QucGFyYW1zKClcbiAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlXG4gIH1cblxuICBhc3luYyByZXNvbHZlKCkge1xuICAgIGxldCBjb250cm9sbGVyUGF0aFxuICAgIGxldCBjdXJyZW50Um91dGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucm91dGVzLnJvb3RSb3V0ZVxuICAgIGNvbnN0IHJhd1BhdGggPSB0aGlzLnJlcXVlc3QucGF0aCgpXG4gICAgY29uc3QgY3VycmVudFBhdGggPSByYXdQYXRoLnNwbGl0KFwiP1wiKVswXVxuICAgIGxldCB2aWV3UGF0aFxuXG4gICAgY29uc3QgbWF0Y2hSZXN1bHQgPSB0aGlzLm1hdGNoUGF0aFdpdGhSb3V0ZXMoY3VycmVudFJvdXRlLCBjdXJyZW50UGF0aClcbiAgICBsZXQgYWN0aW9uID0gdGhpcy5wYXJhbXMuYWN0aW9uID8gaW5mbGVjdGlvbi5jYW1lbGl6ZSh0aGlzLnBhcmFtcy5hY3Rpb24ucmVwbGFjZUFsbChcIi1cIiwgXCJfXCIpLCB0cnVlKSA6IHVuZGVmaW5lZFxuICAgIGxldCBjb250cm9sbGVyID0gdGhpcy5wYXJhbXMuY29udHJvbGxlclxuXG4gICAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgICAgY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKVxuICAgICAgY29uc3QgX19kaXJuYW1lID0gZGlybmFtZShfX2ZpbGVuYW1lKVxuICAgICAgY29uc3QgcmVxdWVzdGVkUGF0aCA9IGN1cnJlbnRQYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKSB8fCBcIl9yb290XCJcbiAgICAgIGNvbnN0IGF0dGVtcHRlZENvbnRyb2xsZXJQYXRoID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvcm91dGVzLyR7cmVxdWVzdGVkUGF0aH0vY29udHJvbGxlci5qc2BcblxuICAgICAgYXdhaXQgKHRoaXMubG9nZ2VyIHx8IG5ldyBMb2dnZXIoXCJSb3V0ZXNSZXNvbHZlclwiLCB7Y29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9ufSkpLndhcm4oYE5vIHJvdXRlIG1hdGNoZWQgZm9yICR7cmF3UGF0aH0uIFRyaWVkIGNvbnRyb2xsZXIgYXQgJHthdHRlbXB0ZWRDb250cm9sbGVyUGF0aH1gKVxuXG4gICAgICBjb250cm9sbGVyID0gXCJlcnJvcnNcIlxuICAgICAgY29udHJvbGxlclBhdGggPSBcIi4vYnVpbHQtaW4vZXJyb3JzL2NvbnRyb2xsZXIuanNcIlxuICAgICAgYWN0aW9uID0gXCJub3RGb3VuZFwiXG4gICAgICB2aWV3UGF0aCA9IGF3YWl0IGZzLnJlYWxwYXRoKGAke19fZGlybmFtZX0vYnVpbHQtaW4vZXJyb3JzYClcbiAgICB9IGVsc2UgaWYgKGFjdGlvbikge1xuICAgICAgaWYgKCFjb250cm9sbGVyKSBjb250cm9sbGVyID0gXCJfcm9vdFwiXG5cbiAgICAgIGNvbnRyb2xsZXJQYXRoID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvcm91dGVzLyR7Y29udHJvbGxlcn0vY29udHJvbGxlci5qc2BcbiAgICAgIHZpZXdQYXRoID0gYCR7dGhpcy5jb25maWd1cmF0aW9uLmdldERpcmVjdG9yeSgpfS9zcmMvcm91dGVzLyR7Y29udHJvbGxlcn1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWF0Y2hlZCB0aGUgcm91dGUgYnV0IGRpZG4ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCBpdDogJHtyYXdQYXRofSAoYWN0aW9uOiAke2FjdGlvbn0sIGNvbnRyb2xsZXI6ICR7Y29udHJvbGxlcn0sIHBhcmFtczogJHtKU09OLnN0cmluZ2lmeSh0aGlzLnBhcmFtcyl9KWApXG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlckNsYXNzSW1wb3J0ID0gYXdhaXQgaW1wb3J0KGNvbnRyb2xsZXJQYXRoKVxuICAgIGNvbnN0IGNvbnRyb2xsZXJDbGFzcyA9IGNvbnRyb2xsZXJDbGFzc0ltcG9ydC5kZWZhdWx0XG4gICAgY29uc3QgY29udHJvbGxlckluc3RhbmNlID0gbmV3IGNvbnRyb2xsZXJDbGFzcyh7XG4gICAgICBhY3Rpb24sXG4gICAgICBjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb24sXG4gICAgICBjb250cm9sbGVyLFxuICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcyxcbiAgICAgIHJlcXVlc3Q6IHRoaXMucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlOiB0aGlzLnJlc3BvbnNlLFxuICAgICAgdmlld1BhdGhcbiAgICB9KVxuXG4gICAgaWYgKCEoYWN0aW9uIGluIGNvbnRyb2xsZXJJbnN0YW5jZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBhY3Rpb24gb24gY29udHJvbGxlcjogJHtjb250cm9sbGVyfSMke2FjdGlvbn1gKVxuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyIHx8PSBuZXcgTG9nZ2VyKGNvbnRyb2xsZXJDbGFzcy5uYW1lLCB7Y29uZmlndXJhdGlvbjogdGhpcy5jb25maWd1cmF0aW9ufSlcblxuICAgIGF3YWl0IHRoaXMuX2xvZ0FjdGlvblN0YXJ0KHthY3Rpb24sIGNvbnRyb2xsZXJDbGFzc30pXG5cbiAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyYXRpb24uZW5zdXJlQ29ubmVjdGlvbnMoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgY29udHJvbGxlckluc3RhbmNlLl9ydW5CZWZvcmVDYWxsYmFja3MoKVxuICAgICAgYXdhaXQgY29udHJvbGxlckluc3RhbmNlW2FjdGlvbl0oKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2Jhc2Utcm91dGUuanNcIikuZGVmYXVsdH0gcm91dGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAgICogQHJldHVybnMge3tyZXN0UGF0aDogc3RyaW5nfSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIG1hdGNoUGF0aFdpdGhSb3V0ZXMocm91dGUsIHBhdGgpIHtcbiAgICBjb25zdCBwYXRoV2l0aG91dFNsYXNoID0gcGF0aC5yZXBsYWNlKC9eXFwvLywgXCJcIikuc3BsaXQoXCI/XCIpWzBdXG5cbiAgICBmb3IgKGNvbnN0IHN1YlJvdXRlIG9mIHJvdXRlLnJvdXRlcykge1xuICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSBzdWJSb3V0ZS5tYXRjaFdpdGhQYXRoKHtcbiAgICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcyxcbiAgICAgICAgcGF0aDogcGF0aFdpdGhvdXRTbGFzaCxcbiAgICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0XG4gICAgICB9KVxuXG4gICAgICBpZiAoIW1hdGNoUmVzdWx0KSBjb250aW51ZVxuXG4gICAgICBjb25zdCB7cmVzdFBhdGh9ID0gbWF0Y2hSZXN1bHRcblxuICAgICAgaWYgKHJlc3RQYXRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoUGF0aFdpdGhSb3V0ZXMoc3ViUm91dGUsIHJlc3RQYXRoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hSZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdH0gYXJncy5jb250cm9sbGVyQ2xhc3NcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBfbG9nQWN0aW9uU3RhcnQoe2FjdGlvbiwgY29udHJvbGxlckNsYXNzfSkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnJlcXVlc3RcbiAgICBjb25zdCB0aW1lc3RhbXAgPSB0aGlzLl9mb3JtYXRUaW1lc3RhbXAobmV3IERhdGUoKSlcbiAgICBjb25zdCByZW1vdGVBZGRyZXNzID0gcmVxdWVzdC5yZW1vdGVBZGRyZXNzPy4oKSB8fCByZXF1ZXN0LmhlYWRlcihcIngtZm9yd2FyZGVkLWZvclwiKSB8fCBcInVua25vd25cIlxuICAgIGNvbnN0IGxvZ2dlZFBhcmFtcyA9IHRoaXMuX3Nhbml0aXplUGFyYW1zRm9yTG9nZ2luZyh0aGlzLnBhcmFtcylcblxuICAgIGRlbGV0ZSBsb2dnZWRQYXJhbXMuYWN0aW9uXG4gICAgZGVsZXRlIGxvZ2dlZFBhcmFtcy5jb250cm9sbGVyXG5cbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5pbmZvKCgpID0+IGBTdGFydGVkICR7cmVxdWVzdC5odHRwTWV0aG9kKCl9IFwiJHtyZXF1ZXN0LnBhdGgoKX1cIiBmb3IgJHtyZW1vdGVBZGRyZXNzfSBhdCAke3RpbWVzdGFtcH1gKVxuICAgIGF3YWl0IHRoaXMubG9nZ2VyLmluZm8oKCkgPT4gYFByb2Nlc3NpbmcgYnkgJHtjb250cm9sbGVyQ2xhc3MubmFtZX0jJHthY3Rpb259YClcbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5pbmZvKCgpID0+IFtgICBQYXJhbWV0ZXJzOmAsIGxvZ2dlZFBhcmFtc10pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtEYXRlfSBkYXRlXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBfZm9ybWF0VGltZXN0YW1wKGRhdGUpIHtcbiAgICAvKiogQHBhcmFtIHtudW1iZXJ9IG51bSAqL1xuICAgIGNvbnN0IHBhZCA9IChudW0pID0+IFN0cmluZyhudW0pLnBhZFN0YXJ0KDIsIFwiMFwiKVxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgICBjb25zdCBtb250aCA9IHBhZChkYXRlLmdldE1vbnRoKCkgKyAxKVxuICAgIGNvbnN0IGRheSA9IHBhZChkYXRlLmdldERhdGUoKSlcbiAgICBjb25zdCBob3VycyA9IHBhZChkYXRlLmdldEhvdXJzKCkpXG4gICAgY29uc3QgbWludXRlcyA9IHBhZChkYXRlLmdldE1pbnV0ZXMoKSlcbiAgICBjb25zdCBzZWNvbmRzID0gcGFkKGRhdGUuZ2V0U2Vjb25kcygpKVxuICAgIGNvbnN0IG9mZnNldE1pbnV0ZXMgPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KClcbiAgICBjb25zdCBvZmZzZXRTaWduID0gb2Zmc2V0TWludXRlcyA+IDAgPyBcIi1cIiA6IFwiK1wiXG4gICAgY29uc3Qgb2Zmc2V0VG90YWxNaW51dGVzID0gTWF0aC5hYnMob2Zmc2V0TWludXRlcylcbiAgICBjb25zdCBvZmZzZXRIb3VycyA9IHBhZChNYXRoLmZsb29yKG9mZnNldFRvdGFsTWludXRlcyAvIDYwKSlcbiAgICBjb25zdCBvZmZzZXRSZW1haW5pbmdNaW51dGVzID0gcGFkKG9mZnNldFRvdGFsTWludXRlcyAlIDYwKVxuXG4gICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fSAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc30gJHtvZmZzZXRTaWdufSR7b2Zmc2V0SG91cnN9JHtvZmZzZXRSZW1haW5pbmdNaW51dGVzfWBcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAgICogQHJldHVybnMge2FueX1cbiAgICovXG4gIF9zYW5pdGl6ZVBhcmFtc0ZvckxvZ2dpbmcodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNsYXNzTmFtZTogdmFsdWUuY29uc3RydWN0b3IubmFtZSxcbiAgICAgICAgZmlsZW5hbWU6IHZhbHVlLmZpbGVuYW1lKCksXG4gICAgICAgIHNpemU6IHZhbHVlLnNpemUoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSkgPT4gdGhpcy5fc2FuaXRpemVQYXJhbXNGb3JMb2dnaW5nKGl0ZW0pKVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi9cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuX3Nhbml0aXplUGFyYW1zRm9yTG9nZ2luZyh2YWx1ZVtrZXldKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbn1cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL3Jlc29sdmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxLQUFLLENBQUE7QUFDakMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxZQUFZLE1BQU0sc0RBQXNELENBQUE7QUFFL0UsTUFBTSxDQUFDLE9BQU8sT0FBTyx1QkFBdUI7SUFDMUMsaUNBQWlDO0lBQ2pDLE1BQU0sQ0FBQTtJQUVOOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRW5ELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksY0FBYyxDQUFBO1FBQ2xCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ25DLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekMsSUFBSSxRQUFRLENBQUE7UUFFWixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQ3ZFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUNoSCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQTtRQUV2QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDakQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3JDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQTtZQUMvRCxNQUFNLHVCQUF1QixHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsZUFBZSxhQUFhLGdCQUFnQixDQUFBO1lBRWhILE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixPQUFPLHlCQUF5Qix1QkFBdUIsRUFBRSxDQUFDLENBQUE7WUFFaEwsVUFBVSxHQUFHLFFBQVEsQ0FBQTtZQUNyQixjQUFjLEdBQUcsaUNBQWlDLENBQUE7WUFDbEQsTUFBTSxHQUFHLFVBQVUsQ0FBQTtZQUNuQixRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxrQkFBa0IsQ0FBQyxDQUFBO1FBQzlELENBQUM7YUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVO2dCQUFFLFVBQVUsR0FBRyxPQUFPLENBQUE7WUFFckMsY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsZUFBZSxVQUFVLGdCQUFnQixDQUFBO1lBQzlGLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLGVBQWUsVUFBVSxFQUFFLENBQUE7UUFDNUUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsVUFBVSxhQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1SyxDQUFDO1FBRUQsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUMxRCxNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUE7UUFDckQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBQztZQUM3QyxNQUFNO1lBQ04sYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFVBQVU7WUFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRO1NBQ1QsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxVQUFVLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUMxRSxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUMsQ0FBQyxDQUFBO1FBRXJGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFBO1FBRXJELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwRCxNQUFNLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUE7WUFDOUMsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUM3QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUU5RCxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLENBQUE7WUFFRixJQUFJLENBQUMsV0FBVztnQkFBRSxTQUFRO1lBRTFCLE1BQU0sRUFBQyxRQUFRLEVBQUMsR0FBRyxXQUFXLENBQUE7WUFFOUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDckQsQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFBO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUMsTUFBTSxFQUFFLGVBQWUsRUFBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUE7UUFDbkQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFNBQVMsQ0FBQTtRQUNqRyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRWhFLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQTtRQUMxQixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUE7UUFFOUIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsYUFBYSxPQUFPLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDeEgsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsZUFBZSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQy9FLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsSUFBSTtRQUNuQjs7O1dBR0c7UUFDSCxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQy9CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDdEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQy9CLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNsQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDdEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQzlDLE1BQU0sVUFBVSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBQ2hELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNsRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzVELE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBRTNELE9BQU8sR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxVQUFVLEdBQUcsV0FBVyxHQUFHLHNCQUFzQixFQUFFLENBQUE7SUFDdEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QixDQUFDLEtBQUs7UUFDN0IsSUFBSSxLQUFLLFlBQVksWUFBWSxFQUFFLENBQUM7WUFDbEMsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJO2dCQUNqQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7YUFDbkIsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLENBQUM7UUFFRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxrQ0FBa0M7WUFDbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBRWpCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQzFELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQTtRQUNmLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge2Rpcm5hbWV9IGZyb20gXCJwYXRoXCJcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSBcInVybFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi9sb2dnZXIuanNcIlxuaW1wb3J0IFVwbG9hZGVkRmlsZSBmcm9tIFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3VwbG9hZGVkLWZpbGUvdXBsb2FkZWQtZmlsZS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c1JvdXRlc1Jlc29sdmVyIHtcbiAgLyoqIEB0eXBlIHtMb2dnZXIgfCB1bmRlZmluZWR9ICovXG4gIGxvZ2dlclxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3JlcXVlc3QuanNcIikuZGVmYXVsdH0gYXJncy5yZXF1ZXN0XG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3Jlc3BvbnNlLmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVzcG9uc2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb25maWd1cmF0aW9uLCByZXF1ZXN0LCByZXNwb25zZX0pIHtcbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbmZpZ3VyYXRpb24gZ2l2ZW5cIilcbiAgICBpZiAoIXJlcXVlc3QpIHRocm93IG5ldyBFcnJvcihcIk5vIHJlcXVlc3QgZ2l2ZW5cIilcbiAgICBpZiAoIXJlc3BvbnNlKSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZXNwb25zZSBnaXZlblwiKVxuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvblxuICAgIHRoaXMucGFyYW1zID0gcmVxdWVzdC5wYXJhbXMoKVxuICAgIHRoaXMucmVxdWVzdCA9IHJlcXVlc3RcbiAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2VcbiAgfVxuXG4gIGFzeW5jIHJlc29sdmUoKSB7XG4gICAgbGV0IGNvbnRyb2xsZXJQYXRoXG4gICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuY29uZmlndXJhdGlvbi5yb3V0ZXMucm9vdFJvdXRlXG4gICAgY29uc3QgcmF3UGF0aCA9IHRoaXMucmVxdWVzdC5wYXRoKClcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IHJhd1BhdGguc3BsaXQoXCI/XCIpWzBdXG4gICAgbGV0IHZpZXdQYXRoXG5cbiAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRoaXMubWF0Y2hQYXRoV2l0aFJvdXRlcyhjdXJyZW50Um91dGUsIGN1cnJlbnRQYXRoKVxuICAgIGxldCBhY3Rpb24gPSB0aGlzLnBhcmFtcy5hY3Rpb24gPyBpbmZsZWN0aW9uLmNhbWVsaXplKHRoaXMucGFyYW1zLmFjdGlvbi5yZXBsYWNlQWxsKFwiLVwiLCBcIl9cIiksIHRydWUpIDogdW5kZWZpbmVkXG4gICAgbGV0IGNvbnRyb2xsZXIgPSB0aGlzLnBhcmFtcy5jb250cm9sbGVyXG5cbiAgICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgICBjb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG4gICAgICBjb25zdCBfX2Rpcm5hbWUgPSBkaXJuYW1lKF9fZmlsZW5hbWUpXG4gICAgICBjb25zdCByZXF1ZXN0ZWRQYXRoID0gY3VycmVudFBhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpIHx8IFwiX3Jvb3RcIlxuICAgICAgY29uc3QgYXR0ZW1wdGVkQ29udHJvbGxlclBhdGggPSBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KCl9L3NyYy9yb3V0ZXMvJHtyZXF1ZXN0ZWRQYXRofS9jb250cm9sbGVyLmpzYFxuXG4gICAgICBhd2FpdCAodGhpcy5sb2dnZXIgfHwgbmV3IExvZ2dlcihcIlJvdXRlc1Jlc29sdmVyXCIsIHtjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb259KSkud2FybihgTm8gcm91dGUgbWF0Y2hlZCBmb3IgJHtyYXdQYXRofS4gVHJpZWQgY29udHJvbGxlciBhdCAke2F0dGVtcHRlZENvbnRyb2xsZXJQYXRofWApXG5cbiAgICAgIGNvbnRyb2xsZXIgPSBcImVycm9yc1wiXG4gICAgICBjb250cm9sbGVyUGF0aCA9IFwiLi9idWlsdC1pbi9lcnJvcnMvY29udHJvbGxlci5qc1wiXG4gICAgICBhY3Rpb24gPSBcIm5vdEZvdW5kXCJcbiAgICAgIHZpZXdQYXRoID0gYXdhaXQgZnMucmVhbHBhdGgoYCR7X19kaXJuYW1lfS9idWlsdC1pbi9lcnJvcnNgKVxuICAgIH0gZWxzZSBpZiAoYWN0aW9uKSB7XG4gICAgICBpZiAoIWNvbnRyb2xsZXIpIGNvbnRyb2xsZXIgPSBcIl9yb290XCJcblxuICAgICAgY29udHJvbGxlclBhdGggPSBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KCl9L3NyYy9yb3V0ZXMvJHtjb250cm9sbGVyfS9jb250cm9sbGVyLmpzYFxuICAgICAgdmlld1BhdGggPSBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KCl9L3NyYy9yb3V0ZXMvJHtjb250cm9sbGVyfWBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaGVkIHRoZSByb3V0ZSBidXQgZGlkbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIGl0OiAke3Jhd1BhdGh9IChhY3Rpb246ICR7YWN0aW9ufSwgY29udHJvbGxlcjogJHtjb250cm9sbGVyfSwgcGFyYW1zOiAke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyYW1zKX0pYClcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyQ2xhc3NJbXBvcnQgPSBhd2FpdCBpbXBvcnQoY29udHJvbGxlclBhdGgpXG4gICAgY29uc3QgY29udHJvbGxlckNsYXNzID0gY29udHJvbGxlckNsYXNzSW1wb3J0LmRlZmF1bHRcbiAgICBjb25zdCBjb250cm9sbGVySW5zdGFuY2UgPSBuZXcgY29udHJvbGxlckNsYXNzKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJhdGlvbixcbiAgICAgIGNvbnRyb2xsZXIsXG4gICAgICBwYXJhbXM6IHRoaXMucGFyYW1zLFxuICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2U6IHRoaXMucmVzcG9uc2UsXG4gICAgICB2aWV3UGF0aFxuICAgIH0pXG5cbiAgICBpZiAoIShhY3Rpb24gaW4gY29udHJvbGxlckluc3RhbmNlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGFjdGlvbiBvbiBjb250cm9sbGVyOiAke2NvbnRyb2xsZXJ9IyR7YWN0aW9ufWApXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIgfHw9IG5ldyBMb2dnZXIoY29udHJvbGxlckNsYXNzLm5hbWUsIHtjb25maWd1cmF0aW9uOiB0aGlzLmNvbmZpZ3VyYXRpb259KVxuXG4gICAgYXdhaXQgdGhpcy5fbG9nQWN0aW9uU3RhcnQoe2FjdGlvbiwgY29udHJvbGxlckNsYXNzfSlcblxuICAgIGF3YWl0IHRoaXMuY29uZmlndXJhdGlvbi5lbnN1cmVDb25uZWN0aW9ucyhhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBjb250cm9sbGVySW5zdGFuY2UuX3J1bkJlZm9yZUNhbGxiYWNrcygpXG4gICAgICBhd2FpdCBjb250cm9sbGVySW5zdGFuY2VbYWN0aW9uXSgpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYmFzZS1yb3V0ZS5qc1wiKS5kZWZhdWx0fSByb3V0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJlc3VsdC5cbiAgICovXG4gIG1hdGNoUGF0aFdpdGhSb3V0ZXMocm91dGUsIHBhdGgpIHtcbiAgICBjb25zdCBwYXRoV2l0aG91dFNsYXNoID0gcGF0aC5yZXBsYWNlKC9eXFwvLywgXCJcIikuc3BsaXQoXCI/XCIpWzBdXG5cbiAgICBmb3IgKGNvbnN0IHN1YlJvdXRlIG9mIHJvdXRlLnJvdXRlcykge1xuICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSBzdWJSb3V0ZS5tYXRjaFdpdGhQYXRoKHtcbiAgICAgICAgcGFyYW1zOiB0aGlzLnBhcmFtcyxcbiAgICAgICAgcGF0aDogcGF0aFdpdGhvdXRTbGFzaCxcbiAgICAgICAgcmVxdWVzdDogdGhpcy5yZXF1ZXN0XG4gICAgICB9KVxuXG4gICAgICBpZiAoIW1hdGNoUmVzdWx0KSBjb250aW51ZVxuXG4gICAgICBjb25zdCB7cmVzdFBhdGh9ID0gbWF0Y2hSZXN1bHRcblxuICAgICAgaWYgKHJlc3RQYXRoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoUGF0aFdpdGhSb3V0ZXMoc3ViUm91dGUsIHJlc3RQYXRoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWF0Y2hSZXN1bHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2NvbnRyb2xsZXIuanNcIikuZGVmYXVsdH0gYXJncy5jb250cm9sbGVyQ2xhc3NcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgX2xvZ0FjdGlvblN0YXJ0KHthY3Rpb24sIGNvbnRyb2xsZXJDbGFzc30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5yZXF1ZXN0XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5fZm9ybWF0VGltZXN0YW1wKG5ldyBEYXRlKCkpXG4gICAgY29uc3QgcmVtb3RlQWRkcmVzcyA9IHJlcXVlc3QucmVtb3RlQWRkcmVzcz8uKCkgfHwgcmVxdWVzdC5oZWFkZXIoXCJ4LWZvcndhcmRlZC1mb3JcIikgfHwgXCJ1bmtub3duXCJcbiAgICBjb25zdCBsb2dnZWRQYXJhbXMgPSB0aGlzLl9zYW5pdGl6ZVBhcmFtc0ZvckxvZ2dpbmcodGhpcy5wYXJhbXMpXG5cbiAgICBkZWxldGUgbG9nZ2VkUGFyYW1zLmFjdGlvblxuICAgIGRlbGV0ZSBsb2dnZWRQYXJhbXMuY29udHJvbGxlclxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuaW5mbygoKSA9PiBgU3RhcnRlZCAke3JlcXVlc3QuaHR0cE1ldGhvZCgpfSBcIiR7cmVxdWVzdC5wYXRoKCl9XCIgZm9yICR7cmVtb3RlQWRkcmVzc30gYXQgJHt0aW1lc3RhbXB9YClcbiAgICBhd2FpdCB0aGlzLmxvZ2dlci5pbmZvKCgpID0+IGBQcm9jZXNzaW5nIGJ5ICR7Y29udHJvbGxlckNsYXNzLm5hbWV9IyR7YWN0aW9ufWApXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuaW5mbygoKSA9PiBbYCAgUGFyYW1ldGVyczpgLCBsb2dnZWRQYXJhbXNdKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RGF0ZX0gZGF0ZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlc3VsdC5cbiAgICovXG4gIF9mb3JtYXRUaW1lc3RhbXAoZGF0ZSkge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlc3VsdC5cbiAgICAgKi9cbiAgICBjb25zdCBwYWQgPSAobnVtKSA9PiBTdHJpbmcobnVtKS5wYWRTdGFydCgyLCBcIjBcIilcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgY29uc3QgbW9udGggPSBwYWQoZGF0ZS5nZXRNb250aCgpICsgMSlcbiAgICBjb25zdCBkYXkgPSBwYWQoZGF0ZS5nZXREYXRlKCkpXG4gICAgY29uc3QgaG91cnMgPSBwYWQoZGF0ZS5nZXRIb3VycygpKVxuICAgIGNvbnN0IG1pbnV0ZXMgPSBwYWQoZGF0ZS5nZXRNaW51dGVzKCkpXG4gICAgY29uc3Qgc2Vjb25kcyA9IHBhZChkYXRlLmdldFNlY29uZHMoKSlcbiAgICBjb25zdCBvZmZzZXRNaW51dGVzID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpXG4gICAgY29uc3Qgb2Zmc2V0U2lnbiA9IG9mZnNldE1pbnV0ZXMgPiAwID8gXCItXCIgOiBcIitcIlxuICAgIGNvbnN0IG9mZnNldFRvdGFsTWludXRlcyA9IE1hdGguYWJzKG9mZnNldE1pbnV0ZXMpXG4gICAgY29uc3Qgb2Zmc2V0SG91cnMgPSBwYWQoTWF0aC5mbG9vcihvZmZzZXRUb3RhbE1pbnV0ZXMgLyA2MCkpXG4gICAgY29uc3Qgb2Zmc2V0UmVtYWluaW5nTWludXRlcyA9IHBhZChvZmZzZXRUb3RhbE1pbnV0ZXMgJSA2MClcblxuICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9ICR7b2Zmc2V0U2lnbn0ke29mZnNldEhvdXJzfSR7b2Zmc2V0UmVtYWluaW5nTWludXRlc31gXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEByZXR1cm5zIHthbnl9IC0gUmVzdWx0LlxuICAgKi9cbiAgX3Nhbml0aXplUGFyYW1zRm9yTG9nZ2luZyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xhc3NOYW1lOiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lLFxuICAgICAgICBmaWxlbmFtZTogdmFsdWUuZmlsZW5hbWUoKSxcbiAgICAgICAgc2l6ZTogdmFsdWUuc2l6ZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubWFwKChpdGVtKSA9PiB0aGlzLl9zYW5pdGl6ZVBhcmFtc0ZvckxvZ2dpbmcoaXRlbSkpXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICAgICAgY29uc3QgcmVzdWx0ID0ge31cblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5fc2FuaXRpemVQYXJhbXNGb3JMb2dnaW5nKHZhbHVlW2tleV0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuIl19
@@ -61,7 +61,7 @@ class VelociousRouteResourceRoute extends BasicRoute {
61
61
  * @param {Record<string, any>} args.params
62
62
  * @param {string} args.path
63
63
  * @param {import("../http-server/client/request.js").default} args.request
64
- * @returns {{restPath: string} | undefined}
64
+ * @returns {{restPath: string} | undefined} - Result.
65
65
  */
66
66
  matchWithPath({ params, path, request }) {
67
67
  const match = path.match(this.regExp);
@@ -126,4 +126,4 @@ class VelociousRouteResourceRoute extends BasicRoute {
126
126
  }
127
127
  BaseRoute.registerRouteResourceType(VelociousRouteResourceRoute);
128
128
  export default VelociousRouteResourceRoute;
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL3Jlc291cmNlLXJvdXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBQ3ZELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFFckUsTUFBTSwyQkFBNEIsU0FBUSxVQUFVO0lBQ2xEOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsS0FBSyxFQUFFLENBQUE7UUFDUCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDcEIsTUFBTSxFQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBQyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFFdkMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxL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QUNuQixDQUFDOzZCQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDOzRCQUMxQyxNQUFNLEdBQUcsUUFBUSxDQUFBOzRCQUNqQixZQUFZLEdBQUcsRUFBRSxDQUFBO3dCQUNuQixDQUFDOzZCQUFNLENBQUM7NEJBQ04sTUFBTSxHQUFHLE1BQU0sQ0FBQTs0QkFDZixZQUFZLEdBQUcsRUFBRSxDQUFBO3dCQUNuQixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1lBQ3hCLENBQUM7WUFFRCxPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLENBQUMseUJBQXlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtBQUVoRSxlQUFlLDJCQUEyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlUm91dGUgZnJvbSBcIi4vYmFzZS1yb3V0ZS5qc1wiXG5pbXBvcnQgQmFzaWNSb3V0ZSBmcm9tIFwiLi9iYXNpYy1yb3V0ZS5qc1wiXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IHNpbmd1bGFyaXplTW9kZWxOYW1lIGZyb20gXCIuLi91dGlscy9zaW5ndWxhcml6ZS1tb2RlbC1uYW1lLmpzXCJcblxuY2xhc3MgVmVsb2Npb3VzUm91dGVSZXNvdXJjZVJvdXRlIGV4dGVuZHMgQmFzaWNSb3V0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bmFtZSwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgc3VwZXIoKVxuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMucmVnRXhwID0gbmV3IFJlZ0V4cChgXigke2VzY2FwZVN0cmluZ1JlZ2V4cChuYW1lKX0pKC4qKSRgKVxuICAgIC8qKiBAdHlwZSB7U2V0PHN0cmluZz59ICovXG4gICAgdGhpcy5jb2xsZWN0aW9uUm91dGVOYW1lcyA9IG5ldyBTZXQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7e29uPzogXCJtZW1iZXJcIiB8IFwiY29sbGVjdGlvblwifX0gW29wdGlvbnNdXG4gICAqL1xuICBnZXQobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qge29uLCAuLi5yZXN0QXJnc30gPSBvcHRpb25zIHx8IHt9XG5cbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgaWYgKG9uICYmIG9uICE9PSBcIm1lbWJlclwiICYmIG9uICE9PSBcImNvbGxlY3Rpb25cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duICdvbicgdmFsdWU6ICR7b259YClcbiAgICB9XG5cbiAgICBpZiAob24gPT09IFwiY29sbGVjdGlvblwiKSB7XG4gICAgICB0aGlzLmNvbGxlY3Rpb25Sb3V0ZU5hbWVzLmFkZChuYW1lKVxuICAgIH1cblxuICAgIHN1cGVyLmdldChuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7e29uPzogXCJtZW1iZXJcIiB8IFwiY29sbGVjdGlvblwifX0gW29wdGlvbnNdXG4gICAqL1xuICBwb3N0KG5hbWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHtvbiwgLi4ucmVzdEFyZ3N9ID0gb3B0aW9ucyB8fCB7fVxuXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGlmIChvbiAmJiBvbiAhPT0gXCJtZW1iZXJcIiAmJiBvbiAhPT0gXCJjb2xsZWN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biAnb24nIHZhbHVlOiAke29ufWApXG4gICAgfVxuXG4gICAgaWYgKG9uID09PSBcImNvbGxlY3Rpb25cIikge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uUm91dGVOYW1lcy5hZGQobmFtZSlcbiAgICB9XG5cbiAgICBzdXBlci5wb3N0KG5hbWUpXG4gIH1cblxuICBnZXRIdW1hblBhdGhzKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7bWV0aG9kOiBcIkdFVFwiLCBhY3Rpb246IFwiaW5kZXhcIiwgcGF0aDogdGhpcy5uYW1lfSxcbiAgICAgIHttZXRob2Q6IFwiUE9TVFwiLCBhY3Rpb246IFwiY3JlYXRlXCIsIHBhdGg6IHRoaXMubmFtZX0sXG4gICAgICB7bWV0aG9kOiBcIkdFVFwiLCBhY3Rpb246IFwic2hvd1wiLCBwYXRoOiBgJHt0aGlzLm5hbWV9L1xcJHtpZH1gfSxcbiAgICAgIHttZXRob2Q6IFwiREVMRVRFXCIsIGFjdGlvbjogXCJkZXN0cm95XCIsIHBhdGg6IGAke3RoaXMubmFtZX0vXFwke2lkfWB9XG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gYXJncy5wYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdFxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgbWF0Y2hXaXRoUGF0aCh7cGFyYW1zLCBwYXRoLCByZXF1ZXN0fSkge1xuICAgIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCh0aGlzLnJlZ0V4cClcblxuICAgIGlmIChtYXRjaCkge1xuICAgICAgY29uc3QgW19iZWdpbm5pZ1NsYXNoLCBfbWF0Y2hlZE5hbWUsIHJlc3RQYXRoXSA9IG1hdGNoIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblxuICAgICAgbGV0IGFjdGlvblxuICAgICAgY29uc3QgY29udHJvbGxlck5hbWUgPSBwYXJhbXMuY29udHJvbGxlciA/IGAke3BhcmFtcy5jb250cm9sbGVyfS8ke3RoaXMubmFtZX1gIDogdGhpcy5uYW1lXG4gICAgICBjb25zdCBub3JtYWxpemVkUmVzdFBhdGggPSByZXN0UGF0aC5yZXBsYWNlKC9eXFwvLywgXCJcIilcbiAgICAgIGxldCBuZXh0UmVzdFBhdGggPSBub3JtYWxpemVkUmVzdFBhdGhcblxuICAgICAgcGFyYW1zLmNvbnRyb2xsZXIgPSBjb250cm9sbGVyTmFtZVxuXG4gICAgICBpZiAobm9ybWFsaXplZFJlc3RQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gXCJERUxFVEVcIikge1xuICAgICAgICAgIGFjdGlvbiA9IFwiZGVsZXRlXCJcbiAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSBcIlBPU1RcIikge1xuICAgICAgICAgIGFjdGlvbiA9IFwiY3JlYXRlXCJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY3Rpb24gPSBcImluZGV4XCJcbiAgICAgICAgfVxuICAgICAgICBuZXh0UmVzdFBhdGggPSBcIlwiXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBbY29sbGVjdGlvbkNhbmRpZGF0ZV0gPSBub3JtYWxpemVkUmVzdFBhdGguc3BsaXQoXCIvXCIpXG5cbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvblJvdXRlTmFtZXMuaGFzKGNvbGxlY3Rpb25DYW5kaWRhdGUpKSB7XG4gICAgICAgICAgbmV4dFJlc3RQYXRoID0gbm9ybWFsaXplZFJlc3RQYXRoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaWRNYXRjaCA9IG5vcm1hbGl6ZWRSZXN0UGF0aC5tYXRjaCgvXihbXi8/XSspKD86XFw/W14vXSopPyg/OlxcLyguKikpPyQvKVxuXG4gICAgICAgICAgaWYgKGlkTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmd1bGFyTmFtZSA9IHNpbmd1bGFyaXplTW9kZWxOYW1lKHRoaXMubmFtZSlcbiAgICAgICAgICAgIGNvbnN0IHNpbmd1bGFyQXR0cmlidXRlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKHNpbmd1bGFyTmFtZSksIHRydWUpXG4gICAgICAgICAgICBjb25zdCBpZFZhck5hbWUgPSBgJHtzaW5ndWxhckF0dHJpYnV0ZU5hbWV9SWRgXG4gICAgICAgICAgICBjb25zdCByZWNvcmRJZCA9IGlkTWF0Y2hbMV1cbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1BhdGggPSBpZE1hdGNoWzJdXG5cbiAgICAgICAgICAgIHBhcmFtc1tpZFZhck5hbWVdID0gcmVjb3JkSWRcbiAgICAgICAgICAgIHBhcmFtcy5pZCA9IHJlY29yZElkXG5cbiAgICAgICAgICAgIGlmIChyZW1haW5pbmdQYXRoICYmIHJlbWFpbmluZ1BhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBuZXh0UmVzdFBhdGggPSByZW1haW5pbmdQYXRoXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09IFwiREVMRVRFXCIpIHtcbiAgICAgICAgICAgICAgYWN0aW9uID0gXCJkZWxldGVcIlxuICAgICAgICAgICAgICBuZXh0UmVzdFBhdGggPSBcIlwiXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09IFwiUE9TVFwiKSB7XG4gICAgICAgICAgICAgIGFjdGlvbiA9IFwiY3JlYXRlXCJcbiAgICAgICAgICAgICAgbmV4dFJlc3RQYXRoID0gXCJcIlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYWN0aW9uID0gXCJzaG93XCJcbiAgICAgICAgICAgICAgbmV4dFJlc3RQYXRoID0gXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIHBhcmFtcy5hY3Rpb24gPSBhY3Rpb25cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtyZXN0UGF0aDogbmV4dFJlc3RQYXRofVxuICAgIH1cbiAgfVxufVxuXG5CYXNlUm91dGUucmVnaXN0ZXJSb3V0ZVJlc291cmNlVHlwZShWZWxvY2lvdXNSb3V0ZVJlc291cmNlUm91dGUpXG5cbmV4cG9ydCBkZWZhdWx0IFZlbG9jaW91c1JvdXRlUmVzb3VyY2VSb3V0ZVxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2Utcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL3Jlc291cmNlLXJvdXRlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBQ3ZELE9BQU8sb0JBQW9CLE1BQU0sb0NBQW9DLENBQUE7QUFFckUsTUFBTSwyQkFBNEIsU0FBUSxVQUFVO0lBQ2xEOzs7T0FHRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0IsS0FBSyxFQUFFLENBQUE7UUFDUCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDcEIsTUFBTSxFQUFDLEVBQUUsRUFBRSxHQUFHLFFBQVEsRUFBQyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFFdkMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxL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QUNuQixDQUFDOzZCQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLE1BQU0sRUFBRSxDQUFDOzRCQUMxQyxNQUFNLEdBQUcsUUFBUSxDQUFBOzRCQUNqQixZQUFZLEdBQUcsRUFBRSxDQUFBO3dCQUNuQixDQUFDOzZCQUFNLENBQUM7NEJBQ04sTUFBTSxHQUFHLE1BQU0sQ0FBQTs0QkFDZixZQUFZLEdBQUcsRUFBRSxDQUFBO3dCQUNuQixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1lBQ3hCLENBQUM7WUFFRCxPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLENBQUMseUJBQXlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtBQUVoRSxlQUFlLDJCQUEyQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlUm91dGUgZnJvbSBcIi4vYmFzZS1yb3V0ZS5qc1wiXG5pbXBvcnQgQmFzaWNSb3V0ZSBmcm9tIFwiLi9iYXNpYy1yb3V0ZS5qc1wiXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IHNpbmd1bGFyaXplTW9kZWxOYW1lIGZyb20gXCIuLi91dGlscy9zaW5ndWxhcml6ZS1tb2RlbC1uYW1lLmpzXCJcblxuY2xhc3MgVmVsb2Npb3VzUm91dGVSZXNvdXJjZVJvdXRlIGV4dGVuZHMgQmFzaWNSb3V0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5uYW1lXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bmFtZSwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgc3VwZXIoKVxuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMucmVnRXhwID0gbmV3IFJlZ0V4cChgXigke2VzY2FwZVN0cmluZ1JlZ2V4cChuYW1lKX0pKC4qKSRgKVxuICAgIC8qKiBAdHlwZSB7U2V0PHN0cmluZz59ICovXG4gICAgdGhpcy5jb2xsZWN0aW9uUm91dGVOYW1lcyA9IG5ldyBTZXQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7e29uPzogXCJtZW1iZXJcIiB8IFwiY29sbGVjdGlvblwifX0gW29wdGlvbnNdXG4gICAqL1xuICBnZXQobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qge29uLCAuLi5yZXN0QXJnc30gPSBvcHRpb25zIHx8IHt9XG5cbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgaWYgKG9uICYmIG9uICE9PSBcIm1lbWJlclwiICYmIG9uICE9PSBcImNvbGxlY3Rpb25cIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duICdvbicgdmFsdWU6ICR7b259YClcbiAgICB9XG5cbiAgICBpZiAob24gPT09IFwiY29sbGVjdGlvblwiKSB7XG4gICAgICB0aGlzLmNvbGxlY3Rpb25Sb3V0ZU5hbWVzLmFkZChuYW1lKVxuICAgIH1cblxuICAgIHN1cGVyLmdldChuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7e29uPzogXCJtZW1iZXJcIiB8IFwiY29sbGVjdGlvblwifX0gW29wdGlvbnNdXG4gICAqL1xuICBwb3N0KG5hbWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHtvbiwgLi4ucmVzdEFyZ3N9ID0gb3B0aW9ucyB8fCB7fVxuXG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGlmIChvbiAmJiBvbiAhPT0gXCJtZW1iZXJcIiAmJiBvbiAhPT0gXCJjb2xsZWN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biAnb24nIHZhbHVlOiAke29ufWApXG4gICAgfVxuXG4gICAgaWYgKG9uID09PSBcImNvbGxlY3Rpb25cIikge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uUm91dGVOYW1lcy5hZGQobmFtZSlcbiAgICB9XG5cbiAgICBzdXBlci5wb3N0KG5hbWUpXG4gIH1cblxuICBnZXRIdW1hblBhdGhzKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7bWV0aG9kOiBcIkdFVFwiLCBhY3Rpb246IFwiaW5kZXhcIiwgcGF0aDogdGhpcy5uYW1lfSxcbiAgICAgIHttZXRob2Q6IFwiUE9TVFwiLCBhY3Rpb246IFwiY3JlYXRlXCIsIHBhdGg6IHRoaXMubmFtZX0sXG4gICAgICB7bWV0aG9kOiBcIkdFVFwiLCBhY3Rpb246IFwic2hvd1wiLCBwYXRoOiBgJHt0aGlzLm5hbWV9L1xcJHtpZH1gfSxcbiAgICAgIHttZXRob2Q6IFwiREVMRVRFXCIsIGFjdGlvbjogXCJkZXN0cm95XCIsIHBhdGg6IGAke3RoaXMubmFtZX0vXFwke2lkfWB9XG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gYXJncy5wYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVxdWVzdFxuICAgKiBAcmV0dXJucyB7e3Jlc3RQYXRoOiBzdHJpbmd9IHwgdW5kZWZpbmVkfSAtIFJlc3VsdC5cbiAgICovXG4gIG1hdGNoV2l0aFBhdGgoe3BhcmFtcywgcGF0aCwgcmVxdWVzdH0pIHtcbiAgICBjb25zdCBtYXRjaCA9IHBhdGgubWF0Y2godGhpcy5yZWdFeHApXG5cbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNvbnN0IFtfYmVnaW5uaWdTbGFzaCwgX21hdGNoZWROYW1lLCByZXN0UGF0aF0gPSBtYXRjaCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cbiAgICAgIGxldCBhY3Rpb25cbiAgICAgIGNvbnN0IGNvbnRyb2xsZXJOYW1lID0gcGFyYW1zLmNvbnRyb2xsZXIgPyBgJHtwYXJhbXMuY29udHJvbGxlcn0vJHt0aGlzLm5hbWV9YCA6IHRoaXMubmFtZVxuICAgICAgY29uc3Qgbm9ybWFsaXplZFJlc3RQYXRoID0gcmVzdFBhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpXG4gICAgICBsZXQgbmV4dFJlc3RQYXRoID0gbm9ybWFsaXplZFJlc3RQYXRoXG5cbiAgICAgIHBhcmFtcy5jb250cm9sbGVyID0gY29udHJvbGxlck5hbWVcblxuICAgICAgaWYgKG5vcm1hbGl6ZWRSZXN0UGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09IFwiREVMRVRFXCIpIHtcbiAgICAgICAgICBhY3Rpb24gPSBcImRlbGV0ZVwiXG4gICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gXCJQT1NUXCIpIHtcbiAgICAgICAgICBhY3Rpb24gPSBcImNyZWF0ZVwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWN0aW9uID0gXCJpbmRleFwiXG4gICAgICAgIH1cbiAgICAgICAgbmV4dFJlc3RQYXRoID0gXCJcIlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgW2NvbGxlY3Rpb25DYW5kaWRhdGVdID0gbm9ybWFsaXplZFJlc3RQYXRoLnNwbGl0KFwiL1wiKVxuXG4gICAgICAgIGlmICh0aGlzLmNvbGxlY3Rpb25Sb3V0ZU5hbWVzLmhhcyhjb2xsZWN0aW9uQ2FuZGlkYXRlKSkge1xuICAgICAgICAgIG5leHRSZXN0UGF0aCA9IG5vcm1hbGl6ZWRSZXN0UGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGlkTWF0Y2ggPSBub3JtYWxpemVkUmVzdFBhdGgubWF0Y2goL14oW14vP10rKSg/OlxcP1teL10qKT8oPzpcXC8oLiopKT8kLylcblxuICAgICAgICAgIGlmIChpZE1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBzaW5ndWxhck5hbWUgPSBzaW5ndWxhcml6ZU1vZGVsTmFtZSh0aGlzLm5hbWUpXG4gICAgICAgICAgICBjb25zdCBzaW5ndWxhckF0dHJpYnV0ZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShzaW5ndWxhck5hbWUpLCB0cnVlKVxuICAgICAgICAgICAgY29uc3QgaWRWYXJOYW1lID0gYCR7c2luZ3VsYXJBdHRyaWJ1dGVOYW1lfUlkYFxuICAgICAgICAgICAgY29uc3QgcmVjb3JkSWQgPSBpZE1hdGNoWzFdXG4gICAgICAgICAgICBjb25zdCByZW1haW5pbmdQYXRoID0gaWRNYXRjaFsyXVxuXG4gICAgICAgICAgICBwYXJhbXNbaWRWYXJOYW1lXSA9IHJlY29yZElkXG4gICAgICAgICAgICBwYXJhbXMuaWQgPSByZWNvcmRJZFxuXG4gICAgICAgICAgICBpZiAocmVtYWluaW5nUGF0aCAmJiByZW1haW5pbmdQYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgbmV4dFJlc3RQYXRoID0gcmVtYWluaW5nUGF0aFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSBcIkRFTEVURVwiKSB7XG4gICAgICAgICAgICAgIGFjdGlvbiA9IFwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgbmV4dFJlc3RQYXRoID0gXCJcIlxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSBcIlBPU1RcIikge1xuICAgICAgICAgICAgICBhY3Rpb24gPSBcImNyZWF0ZVwiXG4gICAgICAgICAgICAgIG5leHRSZXN0UGF0aCA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFjdGlvbiA9IFwic2hvd1wiXG4gICAgICAgICAgICAgIG5leHRSZXN0UGF0aCA9IFwiXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBwYXJhbXMuYWN0aW9uID0gYWN0aW9uXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7cmVzdFBhdGg6IG5leHRSZXN0UGF0aH1cbiAgICB9XG4gIH1cbn1cblxuQmFzZVJvdXRlLnJlZ2lzdGVyUm91dGVSZXNvdXJjZVR5cGUoVmVsb2Npb3VzUm91dGVSZXNvdXJjZVJvdXRlKVxuXG5leHBvcnQgZGVmYXVsdCBWZWxvY2lvdXNSb3V0ZVJlc291cmNlUm91dGVcbiJdfQ==
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * @param {any} value
3
- * @returns {string}
3
+ * @returns {string} - Result.
4
4
  */
5
5
  export function formatValue(value: any): string;
6
6
  /**
7
7
  * Minified stringify with circular and depth protection.
8
8
  * @param {any} value
9
- * @returns {string}
9
+ * @returns {string} - Result.
10
10
  */
11
11
  export function minifiedStringify(value: any): string;
12
12
  //# sourceMappingURL=format-value.d.ts.map
@@ -2,7 +2,7 @@
2
2
  const MAX_STRINGIFY_DEPTH = 5;
3
3
  /**
4
4
  * @param {any} value
5
- * @returns {boolean}
5
+ * @returns {boolean} - Result.
6
6
  */
7
7
  function isPlainObject(value) {
8
8
  if (!value || typeof value != "object")
@@ -13,14 +13,14 @@ function isPlainObject(value) {
13
13
  /**
14
14
  * Minified stringify with circular and depth protection.
15
15
  * @param {any} value
16
- * @returns {string}
16
+ * @returns {string} - Result.
17
17
  */
18
18
  function minifiedStringify(value) {
19
19
  const seen = new WeakSet();
20
20
  /**
21
21
  * @param {any} current
22
22
  * @param {number} depth
23
- * @returns {any}
23
+ * @returns {any} - Result.
24
24
  */
25
25
  function serialize(current, depth) {
26
26
  if (depth > MAX_STRINGIFY_DEPTH)
@@ -52,7 +52,7 @@ function minifiedStringify(value) {
52
52
  }
53
53
  /**
54
54
  * @param {any} value
55
- * @returns {string}
55
+ * @returns {string} - Result.
56
56
  */
57
57
  function formatValue(value) {
58
58
  if (value === undefined)
@@ -78,4 +78,4 @@ function formatValue(value) {
78
78
  return String(value);
79
79
  }
80
80
  export { formatValue, minifiedStringify };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvZm9ybWF0LXZhbHVlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtBQUU3Qjs7O0dBR0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxLQUFLO0lBQzFCLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRXBELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFOUMsT0FBTyxTQUFTLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFBO0FBQzdELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxLQUFLO0lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFFMUI7Ozs7T0FJRztJQUNILFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLO1FBQy9CLElBQUksS0FBSyxHQUFHLG1CQUFtQjtZQUFFLE9BQU8sWUFBWSxDQUFBO1FBQ3BELElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLElBQUksUUFBUTtZQUFFLE9BQU8sT0FBTyxDQUFBO1FBRTFELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLFlBQVksQ0FBQTtRQUUxQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUQsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFFakIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsV0FBVyxDQUFDLEtBQUs7SUFDeEIsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBQzNDLElBQUksS0FBSyxLQUFLLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQTtJQUNqQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMxQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNHLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3JELElBQUksT0FBTyxLQUFLLElBQUksVUFBVTtRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUE7SUFFL0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pELE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFBO1FBRS9DLElBQUksZUFBZTtZQUFFLE9BQU8sZUFBZSxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN0QixDQUFDO0FBRUQsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmNvbnN0IE1BWF9TVFJJTkdJRllfREVQVEggPSA1XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG5cbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBwcm90b3R5cGUgPT09IG51bGxcbn1cblxuLyoqXG4gKiBNaW5pZmllZCBzdHJpbmdpZnkgd2l0aCBjaXJjdWxhciBhbmQgZGVwdGggcHJvdGVjdGlvbi5cbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gbWluaWZpZWRTdHJpbmdpZnkodmFsdWUpIHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KClcblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IGN1cnJlbnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoXG4gICAqIEByZXR1cm5zIHthbnl9XG4gICAqL1xuICBmdW5jdGlvbiBzZXJpYWxpemUoY3VycmVudCwgZGVwdGgpIHtcbiAgICBpZiAoZGVwdGggPiBNQVhfU1RSSU5HSUZZX0RFUFRIKSByZXR1cm4gXCJbTWF4RGVwdGhdXCJcbiAgICBpZiAoIWN1cnJlbnQgfHwgdHlwZW9mIGN1cnJlbnQgIT0gXCJvYmplY3RcIikgcmV0dXJuIGN1cnJlbnRcblxuICAgIGlmIChzZWVuLmhhcyhjdXJyZW50KSkgcmV0dXJuIFwiW0NpcmN1bGFyXVwiXG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoY3VycmVudCkgJiYgIUFycmF5LmlzQXJyYXkoY3VycmVudCkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50LmNvbnN0cnVjdG9yPy5uYW1lIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjdXJyZW50KVxuICAgIH1cblxuICAgIHNlZW4uYWRkKGN1cnJlbnQpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnQubWFwKHZhbHVlID0+IHNlcmlhbGl6ZSh2YWx1ZSwgZGVwdGggKyAxKSlcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgY29uc3Qgb3V0cHV0ID0ge31cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGN1cnJlbnQpKSB7XG4gICAgICBvdXRwdXRba2V5XSA9IHNlcmlhbGl6ZShjdXJyZW50W2tleV0sIGRlcHRoICsgMSlcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzZXJpYWxpemUodmFsdWUsIDApKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwidW5kZWZpbmVkXCJcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gXCJudWxsXCJcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiKSByZXR1cm4gdmFsdWVcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgdmFsdWUgPT0gXCJiaWdpbnRcIikgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcInN5bWJvbFwiKSByZXR1cm4gdmFsdWUudG9TdHJpbmcoKVxuICBpZiAodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHZhbHVlLm5hbWUgfHwgXCJmdW5jdGlvblwiXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIG1pbmlmaWVkU3RyaW5naWZ5KHZhbHVlKVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3JOYW1lID0gdmFsdWUuY29uc3RydWN0b3I/Lm5hbWVcblxuICAgIGlmIChjb25zdHJ1Y3Rvck5hbWUpIHJldHVybiBjb25zdHJ1Y3Rvck5hbWVcbiAgfVxuXG4gIHJldHVybiBTdHJpbmcodmFsdWUpXG59XG5cbmV4cG9ydCB7Zm9ybWF0VmFsdWUsIG1pbmlmaWVkU3RyaW5naWZ5fVxuIl19
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXZhbHVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvZm9ybWF0LXZhbHVlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtBQUU3Qjs7O0dBR0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxLQUFLO0lBQzFCLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRXBELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFOUMsT0FBTyxTQUFTLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFBO0FBQzdELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxLQUFLO0lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFFMUI7Ozs7T0FJRztJQUNILFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLO1FBQy9CLElBQUksS0FBSyxHQUFHLG1CQUFtQjtZQUFFLE9BQU8sWUFBWSxDQUFBO1FBQ3BELElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLElBQUksUUFBUTtZQUFFLE9BQU8sT0FBTyxDQUFBO1FBRTFELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLFlBQVksQ0FBQTtRQUUxQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzdFLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWpCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUQsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFFakIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsV0FBVyxDQUFDLEtBQUs7SUFDeEIsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBQzNDLElBQUksS0FBSyxLQUFLLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQTtJQUNqQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMxQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxPQUFPLEtBQUssSUFBSSxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNHLElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3JELElBQUksT0FBTyxLQUFLLElBQUksVUFBVTtRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUE7SUFFL0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pELE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFBO1FBRS9DLElBQUksZUFBZTtZQUFFLE9BQU8sZUFBZSxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUN0QixDQUFDO0FBRUQsT0FBTyxFQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmNvbnN0IE1BWF9TVFJJTkdJRllfREVQVEggPSA1XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT0gXCJvYmplY3RcIikgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuXG4gIHJldHVybiBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgfHwgcHJvdG90eXBlID09PSBudWxsXG59XG5cbi8qKlxuICogTWluaWZpZWQgc3RyaW5naWZ5IHdpdGggY2lyY3VsYXIgYW5kIGRlcHRoIHByb3RlY3Rpb24uXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gUmVzdWx0LlxuICovXG5mdW5jdGlvbiBtaW5pZmllZFN0cmluZ2lmeSh2YWx1ZSkge1xuICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gY3VycmVudFxuICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGhcbiAgICogQHJldHVybnMge2FueX0gLSBSZXN1bHQuXG4gICAqL1xuICBmdW5jdGlvbiBzZXJpYWxpemUoY3VycmVudCwgZGVwdGgpIHtcbiAgICBpZiAoZGVwdGggPiBNQVhfU1RSSU5HSUZZX0RFUFRIKSByZXR1cm4gXCJbTWF4RGVwdGhdXCJcbiAgICBpZiAoIWN1cnJlbnQgfHwgdHlwZW9mIGN1cnJlbnQgIT0gXCJvYmplY3RcIikgcmV0dXJuIGN1cnJlbnRcblxuICAgIGlmIChzZWVuLmhhcyhjdXJyZW50KSkgcmV0dXJuIFwiW0NpcmN1bGFyXVwiXG5cbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoY3VycmVudCkgJiYgIUFycmF5LmlzQXJyYXkoY3VycmVudCkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50LmNvbnN0cnVjdG9yPy5uYW1lIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjdXJyZW50KVxuICAgIH1cblxuICAgIHNlZW4uYWRkKGN1cnJlbnQpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnQubWFwKHZhbHVlID0+IHNlcmlhbGl6ZSh2YWx1ZSwgZGVwdGggKyAxKSlcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gICAgY29uc3Qgb3V0cHV0ID0ge31cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGN1cnJlbnQpKSB7XG4gICAgICBvdXRwdXRba2V5XSA9IHNlcmlhbGl6ZShjdXJyZW50W2tleV0sIGRlcHRoICsgMSlcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzZXJpYWxpemUodmFsdWUsIDApKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0VmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBcInVuZGVmaW5lZFwiXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIFwibnVsbFwiXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgdmFsdWUgPT0gXCJib29sZWFuXCIgfHwgdHlwZW9mIHZhbHVlID09IFwiYmlnaW50XCIpIHJldHVybiBTdHJpbmcodmFsdWUpXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJzeW1ib2xcIikgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKClcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiB2YWx1ZS5uYW1lIHx8IFwiZnVuY3Rpb25cIlxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBtaW5pZmllZFN0cmluZ2lmeSh2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yPy5uYW1lXG5cbiAgICBpZiAoY29uc3RydWN0b3JOYW1lKSByZXR1cm4gY29uc3RydWN0b3JOYW1lXG4gIH1cblxuICByZXR1cm4gU3RyaW5nKHZhbHVlKVxufVxuXG5leHBvcnQge2Zvcm1hdFZhbHVlLCBtaW5pZmllZFN0cmluZ2lmeX1cbiJdfQ==
@@ -3,13 +3,13 @@ export default class RequestClient {
3
3
  port: number;
4
4
  /**
5
5
  * @param {string} path
6
- * @returns {Promise<Response>}
6
+ * @returns {Promise<Response>} - Result.
7
7
  */
8
8
  get(path: string): Promise<Response>;
9
9
  /**
10
10
  * @param {string} path
11
11
  * @param {object} data
12
- * @returns {Promise<Response>}
12
+ * @returns {Promise<Response>} - Result.
13
13
  */
14
14
  post(path: string, data: object): Promise<Response>;
15
15
  }
@@ -20,15 +20,15 @@ declare class Response {
20
20
  constructor(fetchResponse: globalThis.Response);
21
21
  fetchResponse: globalThis.Response;
22
22
  /**
23
- * @returns {Promise<void>}
23
+ * @returns {Promise<void>} - Result.
24
24
  */
25
25
  parse(): Promise<void>;
26
26
  _body: string;
27
- /** @returns {string} */
27
+ /** @returns {string} - Result. */
28
28
  body(): string;
29
- /** @returns {string | null} */
29
+ /** @returns {string | null} - Result. */
30
30
  contentType(): string | null;
31
- /** @returns {number} */
31
+ /** @returns {number} - Result. */
32
32
  statusCode(): number;
33
33
  }
34
34
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"request-client.d.ts","sourceRoot":"","sources":["../../../src/testing/request-client.js"],"names":[],"mappings":"AAmCA;IACE,aAAkB;IAClB,aAAY;IAEZ;;;OAGG;IACH,UAHW,MAAM,GACJ,OAAO,CAAC,QAAQ,CAAC,CAS7B;IAED;;;;OAIG;IACH,WAJW,MAAM,QACN,MAAM,GACJ,OAAO,CAAC,QAAQ,CAAC,CAoB7B;CACF;AA1ED;IACE;;OAEG;IACH,2BAFW,UAAU,CAAC,QAAQ,EAI7B;IADC,mCAAkC;IAGpC;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAMzB;IAHC,cAA4C;IAK9C,wBAAwB;IACxB,QADc,MAAM,CAKnB;IAED,+BAA+B;IAC/B,eADc,MAAM,GAAG,IAAI,CAG1B;IAED,wBAAwB;IACxB,cADc,MAAM,CAC6B;CAClD"}
1
+ {"version":3,"file":"request-client.d.ts","sourceRoot":"","sources":["../../../src/testing/request-client.js"],"names":[],"mappings":"AAmCA;IACE,aAAkB;IAClB,aAAY;IAEZ;;;OAGG;IACH,UAHW,MAAM,GACJ,OAAO,CAAC,QAAQ,CAAC,CAS7B;IAED;;;;OAIG;IACH,WAJW,MAAM,QACN,MAAM,GACJ,OAAO,CAAC,QAAQ,CAAC,CAoB7B;CACF;AA1ED;IACE;;OAEG;IACH,2BAFW,UAAU,CAAC,QAAQ,EAI7B;IADC,mCAAkC;IAGpC;;OAEG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAMzB;IAHC,cAA4C;IAK9C,mCAAmC;IACnC,QADc,MAAM,CAKnB;IAED,0CAA0C;IAC1C,eADc,MAAM,GAAG,IAAI,CAG1B;IAED,mCAAmC;IACnC,cADc,MAAM,CAC6B;CAClD"}
@@ -7,24 +7,24 @@ class Response {
7
7
  this.fetchResponse = fetchResponse;
8
8
  }
9
9
  /**
10
- * @returns {Promise<void>}
10
+ * @returns {Promise<void>} - Result.
11
11
  */
12
12
  async parse() {
13
13
  this._body = await this.fetchResponse.text();
14
14
  if (this.statusCode() != 200)
15
15
  throw new Error(`Request failed with code ${this.statusCode()} and body: ${this.body()}`);
16
16
  }
17
- /** @returns {string} */
17
+ /** @returns {string} - Result. */
18
18
  body() {
19
19
  if (!this._body)
20
20
  throw new Error("Response body not parsed yet. Call parse() first.");
21
21
  return this._body;
22
22
  }
23
- /** @returns {string | null} */
23
+ /** @returns {string | null} - Result. */
24
24
  contentType() {
25
25
  return this.fetchResponse.headers.get("content-type");
26
26
  }
27
- /** @returns {number} */
27
+ /** @returns {number} - Result. */
28
28
  statusCode() { return this.fetchResponse.status; }
29
29
  }
30
30
  export default class RequestClient {
@@ -32,7 +32,7 @@ export default class RequestClient {
32
32
  port = 31006;
33
33
  /**
34
34
  * @param {string} path
35
- * @returns {Promise<Response>}
35
+ * @returns {Promise<Response>} - Result.
36
36
  */
37
37
  async get(path) {
38
38
  const fetchResponse = await fetch(`http://${this.host}:${this.port}${path}`);
@@ -43,7 +43,7 @@ export default class RequestClient {
43
43
  /**
44
44
  * @param {string} path
45
45
  * @param {object} data
46
- * @returns {Promise<Response>}
46
+ * @returns {Promise<Response>} - Result.
47
47
  */
48
48
  async post(path, data) {
49
49
  const fetchResponse = await fetch(`http://${this.host}:${this.port}${path}`, {
@@ -59,4 +59,4 @@ export default class RequestClient {
59
59
  return response;
60
60
  }
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9yZXF1ZXN0LWNsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxRQUFRO0lBQ1o7O09BRUc7SUFDSCxZQUFZLGFBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUU1QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxHQUFHO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDekgsQ0FBQztJQUVELHdCQUF3QjtJQUN4QixJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFBO1FBRXJGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBRUQsK0JBQStCO0lBQy9CLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQztDQUNsRDtBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUNoQyxJQUFJLEdBQUcsV0FBVyxDQUFBO0lBQ2xCLElBQUksR0FBRyxLQUFLLENBQUE7SUFFWjs7O09BR0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDWixNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzVFLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTVDLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRXRCLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSTtRQUNuQixNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FDL0IsVUFBVSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQ3pDO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDbEMsQ0FDRixDQUFBO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFNUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7UUFFdEIsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Z2xvYmFsVGhpcy5SZXNwb25zZX0gZmV0Y2hSZXNwb25zZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmV0Y2hSZXNwb25zZSkge1xuICAgIHRoaXMuZmV0Y2hSZXNwb25zZSA9IGZldGNoUmVzcG9uc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHBhcnNlKCkge1xuICAgIHRoaXMuX2JvZHkgPSBhd2FpdCB0aGlzLmZldGNoUmVzcG9uc2UudGV4dCgpXG5cbiAgICBpZiAodGhpcy5zdGF0dXNDb2RlKCkgIT0gMjAwKSB0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3QgZmFpbGVkIHdpdGggY29kZSAke3RoaXMuc3RhdHVzQ29kZSgpfSBhbmQgYm9keTogJHt0aGlzLmJvZHkoKX1gKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIGJvZHkoKSB7XG4gICAgaWYgKCF0aGlzLl9ib2R5KSB0aHJvdyBuZXcgRXJyb3IoXCJSZXNwb25zZSBib2R5IG5vdCBwYXJzZWQgeWV0LiBDYWxsIHBhcnNlKCkgZmlyc3QuXCIpXG5cbiAgICByZXR1cm4gdGhpcy5fYm9keVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAqL1xuICBjb250ZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaFJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge251bWJlcn0gKi9cbiAgc3RhdHVzQ29kZSgpIHsgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZS5zdGF0dXMgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXF1ZXN0Q2xpZW50IHtcbiAgaG9zdCA9IFwibG9jYWxob3N0XCJcbiAgcG9ydCA9IDMxMDA2XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3BvbnNlPn1cbiAgICovXG4gIGFzeW5jIGdldChwYXRoKSB7XG4gICAgY29uc3QgZmV0Y2hSZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwOi8vJHt0aGlzLmhvc3R9OiR7dGhpcy5wb3J0fSR7cGF0aH1gKVxuICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKGZldGNoUmVzcG9uc2UpXG5cbiAgICBhd2FpdCByZXNwb25zZS5wYXJzZSgpXG5cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXNwb25zZT59XG4gICAqL1xuICBhc3luYyBwb3N0KHBhdGgsIGRhdGEpIHtcbiAgICBjb25zdCBmZXRjaFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICBgaHR0cDovLyR7dGhpcy5ob3N0fToke3RoaXMucG9ydH0ke3BhdGh9YCxcbiAgICAgIHtcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoNTAwMClcbiAgICAgIH1cbiAgICApXG5cbiAgICBjb25zdCByZXNwb25zZSA9IG5ldyBSZXNwb25zZShmZXRjaFJlc3BvbnNlKVxuXG4gICAgYXdhaXQgcmVzcG9uc2UucGFyc2UoKVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cbn1cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9yZXF1ZXN0LWNsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxRQUFRO0lBQ1o7O09BRUc7SUFDSCxZQUFZLGFBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUU1QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxHQUFHO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDekgsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFBO1FBRXJGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQztDQUNsRDtBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUNoQyxJQUFJLEdBQUcsV0FBVyxDQUFBO0lBQ2xCLElBQUksR0FBRyxLQUFLLENBQUE7SUFFWjs7O09BR0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUk7UUFDWixNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzVFLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRTVDLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBRXRCLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSTtRQUNuQixNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FDL0IsVUFBVSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQ3pDO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDbEMsQ0FDRixDQUFBO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFNUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUE7UUFFdEIsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Z2xvYmFsVGhpcy5SZXNwb25zZX0gZmV0Y2hSZXNwb25zZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmV0Y2hSZXNwb25zZSkge1xuICAgIHRoaXMuZmV0Y2hSZXNwb25zZSA9IGZldGNoUmVzcG9uc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBwYXJzZSgpIHtcbiAgICB0aGlzLl9ib2R5ID0gYXdhaXQgdGhpcy5mZXRjaFJlc3BvbnNlLnRleHQoKVxuXG4gICAgaWYgKHRoaXMuc3RhdHVzQ29kZSgpICE9IDIwMCkgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0IGZhaWxlZCB3aXRoIGNvZGUgJHt0aGlzLnN0YXR1c0NvZGUoKX0gYW5kIGJvZHk6ICR7dGhpcy5ib2R5KCl9YClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJlc3VsdC4gICovXG4gIGJvZHkoKSB7XG4gICAgaWYgKCF0aGlzLl9ib2R5KSB0aHJvdyBuZXcgRXJyb3IoXCJSZXNwb25zZSBib2R5IG5vdCBwYXJzZWQgeWV0LiBDYWxsIHBhcnNlKCkgZmlyc3QuXCIpXG5cbiAgICByZXR1cm4gdGhpcy5fYm9keVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAtIFJlc3VsdC4gICovXG4gIGNvbnRlbnRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmZldGNoUmVzcG9uc2UuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7bnVtYmVyfSAtIFJlc3VsdC4gICovXG4gIHN0YXR1c0NvZGUoKSB7IHJldHVybiB0aGlzLmZldGNoUmVzcG9uc2Uuc3RhdHVzIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVxdWVzdENsaWVudCB7XG4gIGhvc3QgPSBcImxvY2FsaG9zdFwiXG4gIHBvcnQgPSAzMTAwNlxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZXNwb25zZT59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgZ2V0KHBhdGgpIHtcbiAgICBjb25zdCBmZXRjaFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnBvcnR9JHtwYXRofWApXG4gICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoZmV0Y2hSZXNwb25zZSlcblxuICAgIGF3YWl0IHJlc3BvbnNlLnBhcnNlKClcblxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3BvbnNlPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBwb3N0KHBhdGgsIGRhdGEpIHtcbiAgICBjb25zdCBmZXRjaFJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICBgaHR0cDovLyR7dGhpcy5ob3N0fToke3RoaXMucG9ydH0ke3BhdGh9YCxcbiAgICAgIHtcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoNTAwMClcbiAgICAgIH1cbiAgICApXG5cbiAgICBjb25zdCByZXNwb25zZSA9IG5ldyBSZXNwb25zZShmZXRjaFJlc3BvbnNlKVxuXG4gICAgYXdhaXQgcmVzcG9uc2UucGFyc2UoKVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cbn1cbiJdfQ==
@@ -27,36 +27,37 @@ export default class TestFilesFinder {
27
27
  /** @type {string[]} */
28
28
  fileArgs: string[];
29
29
  /**
30
- * @returns {Promise<string[]>}
30
+ * @returns {Promise<string[]>} - Result.
31
31
  */
32
32
  findTestFiles(): Promise<string[]>;
33
33
  /**
34
- * @returns {number}
34
+ * @returns {number} - Result.
35
35
  */
36
36
  findingPromisesLength(): number;
37
37
  waitForFindingPromises(): Promise<void>;
38
38
  /**
39
- * @returns {Promise<void>}
39
+ * @returns {Promise<void>} - Result.
40
40
  */
41
41
  waitForFindingPromisesIteration(): Promise<void>;
42
42
  /**
43
43
  * @param {function() : Promise<void>} callback
44
+ * @returns {Promise<void>} - Result.
44
45
  */
45
- withFindingCount(callback: () => Promise<void>): Promise<any>;
46
+ withFindingCount(callback: () => Promise<void>): Promise<void>;
46
47
  /**
47
48
  * @param {string} dir
48
- * @returns {Promise<void>}
49
+ * @returns {Promise<void>} - Result.
49
50
  */
50
51
  findTestFilesInDir(dir: string): Promise<void>;
51
52
  /**
52
53
  * @param {string} file
53
54
  * @param {string} localPath
54
- * @returns {boolean}
55
+ * @returns {boolean} - Result.
55
56
  */
56
57
  isFileMatchingRequirements(file: string, localPath: string): boolean;
57
58
  /**
58
59
  * @param {string} file
59
- * @returns {boolean}
60
+ * @returns {boolean} - Result.
60
61
  */
61
62
  looksLikeTestFile(file: string): boolean;
62
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"test-files-finder.d.ts","sourceRoot":"","sources":["../../../src/testing/test-files-finder.js"],"names":[],"mappings":"AASA;IACE,+BAA+C;IAE/C;;;;;OAKG;IACH,kEAJG;QAAqB,SAAS,EAAtB,MAAM;QACU,WAAW,GAA3B,MAAM,EAAE;QACO,WAAW,EAA1B,MAAM,EAAE;KAClB,EA0CA;IAtCC,kBAA0B;IAC1B,eAA8B;IAG5B,sBAA8B;IAShC,qBAAqB;IACrB,sBAA8B;IAE9B,uBAAuB;IACvB,YADW,MAAM,EAAE,CACC;IAEpB,4CAA4C;IAC5C,iBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CACf;IAEzB,uBAAuB;IACvB,UADW,MAAM,EAAE,CACuD;IAE1E,uBAAuB;IACvB,eADW,MAAM,EAAE,CACI;IAEvB,uBAAuB;IACvB,UADW,MAAM,EAAE,CACD;IAWpB;;OAEG;IACH,iBAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CAc7B;IAED;;OAEG;IACH,yBAFa,MAAM,CAEwD;IAE3E,wCAIC;IAED;;OAEG;IACH,mCAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;OAEG;IACH,2BAFW,MAAa,OAAO,CAAC,IAAI,CAAC,gBAgBpC;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED;;;;OAIG;IACH,iCAJW,MAAM,aACN,MAAM,GACJ,OAAO,CA2BnB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAInB;CACF;uBAzLoB,cAAc"}
1
+ {"version":3,"file":"test-files-finder.d.ts","sourceRoot":"","sources":["../../../src/testing/test-files-finder.js"],"names":[],"mappings":"AASA;IACE,+BAA+C;IAE/C;;;;;OAKG;IACH,kEAJG;QAAqB,SAAS,EAAtB,MAAM;QACU,WAAW,GAA3B,MAAM,EAAE;QACO,WAAW,EAA1B,MAAM,EAAE;KAClB,EA0CA;IAtCC,kBAA0B;IAC1B,eAA8B;IAG5B,sBAA8B;IAShC,qBAAqB;IACrB,sBAA8B;IAE9B,uBAAuB;IACvB,YADW,MAAM,EAAE,CACC;IAEpB,4CAA4C;IAC5C,iBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CACf;IAEzB,uBAAuB;IACvB,UADW,MAAM,EAAE,CACuD;IAE1E,uBAAuB;IACvB,eADW,MAAM,EAAE,CACI;IAEvB,uBAAuB;IACvB,UADW,MAAM,EAAE,CACD;IAWpB;;OAEG;IACH,iBAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CAc7B;IAED;;OAEG;IACH,yBAFa,MAAM,CAEwD;IAE3E,wCAIC;IAED;;OAEG;IACH,mCAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;OAGG;IACH,2BAHW,MAAa,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED;;;;OAIG;IACH,iCAJW,MAAM,aACN,MAAM,GACJ,OAAO,CA2BnB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAInB;CACF;uBA1LoB,cAAc"}
@@ -48,7 +48,7 @@ export default class TestFilesFinder {
48
48
  }
49
49
  }
50
50
  /**
51
- * @returns {Promise<string[]>}
51
+ * @returns {Promise<string[]>} - Result.
52
52
  */
53
53
  async findTestFiles() {
54
54
  await this.withFindingCount(async () => {
@@ -62,7 +62,7 @@ export default class TestFilesFinder {
62
62
  return this.foundFiles;
63
63
  }
64
64
  /**
65
- * @returns {number}
65
+ * @returns {number} - Result.
66
66
  */
67
67
  findingPromisesLength() { return Object.keys(this.findingPromises).length; }
68
68
  async waitForFindingPromises() {
@@ -71,7 +71,7 @@ export default class TestFilesFinder {
71
71
  }
72
72
  }
73
73
  /**
74
- * @returns {Promise<void>}
74
+ * @returns {Promise<void>} - Result.
75
75
  */
76
76
  async waitForFindingPromisesIteration() {
77
77
  const unfinishedPromises = [];
@@ -83,6 +83,7 @@ export default class TestFilesFinder {
83
83
  }
84
84
  /**
85
85
  * @param {function() : Promise<void>} callback
86
+ * @returns {Promise<void>} - Result.
86
87
  */
87
88
  withFindingCount(callback) {
88
89
  return new Promise((resolve) => {
@@ -98,7 +99,7 @@ export default class TestFilesFinder {
98
99
  }
99
100
  /**
100
101
  * @param {string} dir
101
- * @returns {Promise<void>}
102
+ * @returns {Promise<void>} - Result.
102
103
  */
103
104
  async findTestFilesInDir(dir) {
104
105
  await this.withFindingCount(async () => {
@@ -124,7 +125,7 @@ export default class TestFilesFinder {
124
125
  /**
125
126
  * @param {string} file
126
127
  * @param {string} localPath
127
- * @returns {boolean}
128
+ * @returns {boolean} - Result.
128
129
  */
129
130
  isFileMatchingRequirements(file, localPath) {
130
131
  if (this.directoryArgs.length > 0) {
@@ -151,10 +152,10 @@ export default class TestFilesFinder {
151
152
  }
152
153
  /**
153
154
  * @param {string} file
154
- * @returns {boolean}
155
+ * @returns {boolean} - Result.
155
156
  */
156
157
  looksLikeTestFile(file) {
157
158
  return Boolean(file.match(/-(spec|test)\.(m|)js$/));
158
159
  }
159
160
  }
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlcy1maW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy90ZXN0LWZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTVCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFBO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUE7QUFFdkQsaUhBQWlIO0FBQ2pILE1BQU0sQ0FBQyxPQUFPLE9BQU8sZUFBZTtJQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBRS9DOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQzVELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTlCLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNqQixHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVk7Z0JBQzdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsUUFBUTtnQkFDekIsR0FBRyxJQUFJLENBQUMsU0FBUyxPQUFPO2FBQ3pCLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUE7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFFOUIsdUJBQXVCO1FBQ3ZCLElB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b3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5cbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gXCIuLi91dGlscy9maWxlLWV4aXN0cy5qc1wiXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSBcIi4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuLy8gSW5jcmVkaWJseSBjb21wbGV4IGNsYXNzIHRvIGZpbmQgZmlsZXMgaW4gbXVsdGlwbGUgc2ltdWx0YW5pb3VzIHJ1bm5pbmcgcHJvbWlzZXMgdG8gZG8gaXQgYXMgZmFzdCBhcyBwb3NzaWJsZS5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RGaWxlc0ZpbmRlciB7XG4gIHN0YXRpYyBJR05PUkVEX05BTUVTID0gW1wiLmdpdFwiLCBcIm5vZGVfbW9kdWxlc1wiXVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5kaXJlY3RvcnlcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3MuZGlyZWN0b3JpZXNdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MucHJvY2Vzc0FyZ3NcbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkaXJlY3RvcnksIGRpcmVjdG9yaWVzLCBwcm9jZXNzQXJncywgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIHRoaXMuZGlyZWN0b3J5ID0gZGlyZWN0b3J5XG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG5cbiAgICBpZiAoZGlyZWN0b3JpZXMpIHtcbiAgICAgIHRoaXMuZGlyZWN0b3JpZXMgPSBkaXJlY3Rvcmllc1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpcmVjdG9yaWVzID0gW1xuICAgICAgICBgJHt0aGlzLmRpcmVjdG9yeX0vX190ZXN0c19fYCxcbiAgICAgICAgYCR7dGhpcy5kaXJlY3Rvcnl9L3Rlc3RzYCxcbiAgICAgICAgYCR7dGhpcy5kaXJlY3Rvcnl9L3NwZWNgXG4gICAgICBdXG4gICAgfVxuXG4gICAgdGhpcy5maW5kaW5nQ291bnQgPSAwXG4gICAgdGhpcy5wcm9jZXNzQXJncyA9IHByb2Nlc3NBcmdzXG5cbiAgICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICAgIHRoaXMuZm91bmRGaWxlcyA9IFtdXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxudW1iZXIsIFByb21pc2U8dm9pZD4+fSAqL1xuICAgIHRoaXMuZmluZGluZ1Byb21pc2VzID0ge31cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy50ZXN0QXJncyA9IHRoaXMucHJvY2Vzc0FyZ3MuZmlsdGVyKChwcm9jZXNzQXJnLCBpbmRleCkgPT4gaW5kZXggIT0gMClcblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5kaXJlY3RvcnlBcmdzID0gW11cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5maWxlQXJncyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHRlc3RBcmcgb2YgdGhpcy50ZXN0QXJncykge1xuICAgICAgaWYgKHRlc3RBcmcuZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0b3J5QXJncy5wdXNoKHRlc3RBcmcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbGVBcmdzLnB1c2godGVzdEFyZylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fVxuICAgKi9cbiAgYXN5bmMgZmluZFRlc3RGaWxlcygpIHtcbiAgICBhd2FpdCB0aGlzLndpdGhGaW5kaW5nQ291bnQoYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBkaXJlY3Rvcnkgb2YgdGhpcy5kaXJlY3Rvcmllcykge1xuICAgICAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhkaXJlY3RvcnkpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5maW5kVGVzdEZpbGVzSW5EaXIoZGlyZWN0b3J5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMud2FpdEZvckZpbmRpbmdQcm9taXNlcygpXG5cbiAgICByZXR1cm4gdGhpcy5mb3VuZEZpbGVzXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGZpbmRpbmdQcm9taXNlc0xlbmd0aCgpIHsgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmluZGluZ1Byb21pc2VzKS5sZW5ndGggfVxuXG4gIGFzeW5jIHdhaXRGb3JGaW5kaW5nUHJvbWlzZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuZmluZGluZ1Byb21pc2VzTGVuZ3RoKCkgPiAwKSB7XG4gICAgICBhd2FpdCB0aGlzLndhaXRGb3JGaW5kaW5nUHJvbWlzZXNJdGVyYXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHdhaXRGb3JGaW5kaW5nUHJvbWlzZXNJdGVyYXRpb24oKSB7XG4gICAgY29uc3QgdW5maW5pc2hlZFByb21pc2VzID0gW11cblxuICAgIGZvciAoY29uc3QgZmluZGluZ1Byb21pc2VJZCBpbiB0aGlzLmZpbmRpbmdQcm9taXNlcykge1xuICAgICAgY29uc3QgZmluZGluZ1Byb21pc2UgPSB0aGlzLmZpbmRpbmdQcm9taXNlc1tmaW5kaW5nUHJvbWlzZUlkXVxuXG4gICAgICB1bmZpbmlzaGVkUHJvbWlzZXMucHVzaChmaW5kaW5nUHJvbWlzZSlcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh1bmZpbmlzaGVkUHJvbWlzZXMpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbigpIDogUHJvbWlzZTx2b2lkPn0gY2FsbGJhY2tcbiAgICovXG4gIHdpdGhGaW5kaW5nQ291bnQoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGZpbmRpbmdQcm9taXNlID0gY2FsbGJhY2soKVxuICAgICAgY29uc3QgZmluZGluZ0NvdW50ID0gdGhpcy5maW5kaW5nQ291bnRcblxuICAgICAgdGhpcy5maW5kaW5nQ291bnQgKz0gMVxuICAgICAgdGhpcy5maW5kaW5nUHJvbWlzZXNbZmluZGluZ0NvdW50XSA9IGZpbmRpbmdQcm9taXNlXG5cbiAgICAgIGZpbmRpbmdQcm9taXNlLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5maW5kaW5nUHJvbWlzZXNbZmluZGluZ0NvdW50XVxuXG4gICAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBmaW5kVGVzdEZpbGVzSW5EaXIoZGlyKSB7XG4gICAgYXdhaXQgdGhpcy53aXRoRmluZGluZ0NvdW50KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihkaXIpXG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoVGVzdEZpbGVzRmluZGVyLklHTk9SRURfTkFNRVMuaW5jbHVkZXMoZmlsZSkpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBgJHtkaXJ9LyR7ZmlsZX1gXG4gICAgICAgIGNvbnN0IGxvY2FsUGF0aCA9IGZ1bGxQYXRoLnJlcGxhY2UoYCR7dGhpcy5kaXJlY3Rvcnl9L2AsIFwiXCIpXG4gICAgICAgIGNvbnN0IGlzRGlyID0gKGF3YWl0IGZzLnN0YXQoZnVsbFBhdGgpKS5pc0RpcmVjdG9yeSgpXG5cbiAgICAgICAgaWYgKGlzRGlyKSB7XG4gICAgICAgICAgdGhpcy5maW5kVGVzdEZpbGVzSW5EaXIoZnVsbFBhdGgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNGaWxlTWF0Y2hpbmdSZXF1aXJlbWVudHMoZmlsZSwgbG9jYWxQYXRoKSkge1xuICAgICAgICAgICAgdGhpcy5mb3VuZEZpbGVzLnB1c2goZnVsbFBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxQYXRoXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNGaWxlTWF0Y2hpbmdSZXF1aXJlbWVudHMoZmlsZSwgbG9jYWxQYXRoKSB7XG4gICAgaWYgKHRoaXMuZGlyZWN0b3J5QXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGRpcmVjdG9yeUFyZyBvZiB0aGlzLmRpcmVjdG9yeUFyZ3MpIHtcbiAgICAgICAgaWYgKGxvY2FsUGF0aC5zdGFydHNXaXRoKGRpcmVjdG9yeUFyZykgJiYgdGhpcy5sb29rc0xpa2VUZXN0RmlsZShmaWxlKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRm91bmQgdGVzdCBmaWxlIGJlY2F1c2UgbWF0Y2hpbmcgZGlyIGFuZCBsb29rcyBsaWtlIHRoaXMgZmlsZTpcIiwgZmlsZSlcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsZUFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWxlQXJnIG9mIHRoaXMuZmlsZUFyZ3MpIHtcbiAgICAgICAgaWYgKGZpbGVBcmcgPT0gbG9jYWxQYXRoKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJGb3VuZCB0ZXN0IGZpbGUgYmVjYXVzZSBtYXRjaGluZyBmaWxlIGFyZzpcIiwgZmlsZSlcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsZUFyZ3MubGVuZ3RoID09IDAgJiYgdGhpcy5kaXJlY3RvcnlBcmdzLmxlbmd0aCA9PSAwICYmIHRoaXMubG9va3NMaWtlVGVzdEZpbGUoZmlsZSkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRm91bmQgdGVzdCBmaWxlIGJlY2F1c2UgbG9va3MgbGlrZSB0aGlzIGZpbGU6XCIsIGZpbGUpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgbG9va3NMaWtlVGVzdEZpbGUoZmlsZSkge1xuICAgIHJldHVybiBCb29sZWFuKGZpbGUubWF0Y2goLy0oc3BlY3x0ZXN0KVxcLihtfClqcyQvKSlcbiAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlcy1maW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy90ZXN0LWZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTVCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFBO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUE7QUFFdkQsaUhBQWlIO0FBQ2pILE1BQU0sQ0FBQyxPQUFPLE9BQU8sZUFBZTtJQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0lBRS9DOzs7OztPQUtHO0lBQ0gsWUFBWSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQzVELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTlCLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNqQixHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVk7Z0JBQzdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsUUFBUTtnQkFDekIsR0FBRyxJQUFJLENBQUMsU0FBUyxPQUFPO2FBQ3pCLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUE7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFFOUIsdUJBQXVCO1FBQ3ZCLElB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c291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuXG5pbXBvcnQgZmlsZUV4aXN0cyBmcm9tIFwiLi4vdXRpbHMvZmlsZS1leGlzdHMuanNcIlxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi9sb2dnZXIuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbi8vIEluY3JlZGlibHkgY29tcGxleCBjbGFzcyB0byBmaW5kIGZpbGVzIGluIG11bHRpcGxlIHNpbXVsdGFuaW91cyBydW5uaW5nIHByb21pc2VzIHRvIGRvIGl0IGFzIGZhc3QgYXMgcG9zc2libGUuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0RmlsZXNGaW5kZXIge1xuICBzdGF0aWMgSUdOT1JFRF9OQU1FUyA9IFtcIi5naXRcIiwgXCJub2RlX21vZHVsZXNcIl1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuZGlyZWN0b3J5XG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzLmRpcmVjdG9yaWVzXVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLnByb2Nlc3NBcmdzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZGlyZWN0b3J5LCBkaXJlY3RvcmllcywgcHJvY2Vzc0FyZ3MsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICB0aGlzLmRpcmVjdG9yeSA9IGRpcmVjdG9yeVxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuXG4gICAgaWYgKGRpcmVjdG9yaWVzKSB7XG4gICAgICB0aGlzLmRpcmVjdG9yaWVzID0gZGlyZWN0b3JpZXNcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXJlY3RvcmllcyA9IFtcbiAgICAgICAgYCR7dGhpcy5kaXJlY3Rvcnl9L19fdGVzdHNfX2AsXG4gICAgICAgIGAke3RoaXMuZGlyZWN0b3J5fS90ZXN0c2AsXG4gICAgICAgIGAke3RoaXMuZGlyZWN0b3J5fS9zcGVjYFxuICAgICAgXVxuICAgIH1cblxuICAgIHRoaXMuZmluZGluZ0NvdW50ID0gMFxuICAgIHRoaXMucHJvY2Vzc0FyZ3MgPSBwcm9jZXNzQXJnc1xuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgICB0aGlzLmZvdW5kRmlsZXMgPSBbXVxuXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8bnVtYmVyLCBQcm9taXNlPHZvaWQ+Pn0gKi9cbiAgICB0aGlzLmZpbmRpbmdQcm9taXNlcyA9IHt9XG5cbiAgICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICAgIHRoaXMudGVzdEFyZ3MgPSB0aGlzLnByb2Nlc3NBcmdzLmZpbHRlcigocHJvY2Vzc0FyZywgaW5kZXgpID0+IGluZGV4ICE9IDApXG5cbiAgICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICAgIHRoaXMuZGlyZWN0b3J5QXJncyA9IFtdXG5cbiAgICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICAgIHRoaXMuZmlsZUFyZ3MgPSBbXVxuXG4gICAgZm9yIChjb25zdCB0ZXN0QXJnIG9mIHRoaXMudGVzdEFyZ3MpIHtcbiAgICAgIGlmICh0ZXN0QXJnLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICB0aGlzLmRpcmVjdG9yeUFyZ3MucHVzaCh0ZXN0QXJnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWxlQXJncy5wdXNoKHRlc3RBcmcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyBmaW5kVGVzdEZpbGVzKCkge1xuICAgIGF3YWl0IHRoaXMud2l0aEZpbmRpbmdDb3VudChhc3luYyAoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGRpcmVjdG9yeSBvZiB0aGlzLmRpcmVjdG9yaWVzKSB7XG4gICAgICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGRpcmVjdG9yeSkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmZpbmRUZXN0RmlsZXNJbkRpcihkaXJlY3RvcnkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yRmluZGluZ1Byb21pc2VzKClcblxuICAgIHJldHVybiB0aGlzLmZvdW5kRmlsZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAtIFJlc3VsdC5cbiAgICovXG4gIGZpbmRpbmdQcm9taXNlc0xlbmd0aCgpIHsgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmluZGluZ1Byb21pc2VzKS5sZW5ndGggfVxuXG4gIGFzeW5jIHdhaXRGb3JGaW5kaW5nUHJvbWlzZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuZmluZGluZ1Byb21pc2VzTGVuZ3RoKCkgPiAwKSB7XG4gICAgICBhd2FpdCB0aGlzLndhaXRGb3JGaW5kaW5nUHJvbWlzZXNJdGVyYXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXN1bHQuXG4gICAqL1xuICBhc3luYyB3YWl0Rm9yRmluZGluZ1Byb21pc2VzSXRlcmF0aW9uKCkge1xuICAgIGNvbnN0IHVuZmluaXNoZWRQcm9taXNlcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGZpbmRpbmdQcm9taXNlSWQgaW4gdGhpcy5maW5kaW5nUHJvbWlzZXMpIHtcbiAgICAgIGNvbnN0IGZpbmRpbmdQcm9taXNlID0gdGhpcy5maW5kaW5nUHJvbWlzZXNbZmluZGluZ1Byb21pc2VJZF1cblxuICAgICAgdW5maW5pc2hlZFByb21pc2VzLnB1c2goZmluZGluZ1Byb21pc2UpXG4gICAgfVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodW5maW5pc2hlZFByb21pc2VzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IFByb21pc2U8dm9pZD59IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc3VsdC5cbiAgICovXG4gIHdpdGhGaW5kaW5nQ291bnQoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IGZpbmRpbmdQcm9taXNlID0gY2FsbGJhY2soKVxuICAgICAgY29uc3QgZmluZGluZ0NvdW50ID0gdGhpcy5maW5kaW5nQ291bnRcblxuICAgICAgdGhpcy5maW5kaW5nQ291bnQgKz0gMVxuICAgICAgdGhpcy5maW5kaW5nUHJvbWlzZXNbZmluZGluZ0NvdW50XSA9IGZpbmRpbmdQcm9taXNlXG5cbiAgICAgIGZpbmRpbmdQcm9taXNlLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5maW5kaW5nUHJvbWlzZXNbZmluZGluZ0NvdW50XVxuXG4gICAgICAgIHJlc29sdmUodW5kZWZpbmVkKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzdWx0LlxuICAgKi9cbiAgYXN5bmMgZmluZFRlc3RGaWxlc0luRGlyKGRpcikge1xuICAgIGF3YWl0IHRoaXMud2l0aEZpbmRpbmdDb3VudChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyKVxuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgaWYgKFRlc3RGaWxlc0ZpbmRlci5JR05PUkVEX05BTUVTLmluY2x1ZGVzKGZpbGUpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gYCR7ZGlyfS8ke2ZpbGV9YFxuICAgICAgICBjb25zdCBsb2NhbFBhdGggPSBmdWxsUGF0aC5yZXBsYWNlKGAke3RoaXMuZGlyZWN0b3J5fS9gLCBcIlwiKVxuICAgICAgICBjb25zdCBpc0RpciA9IChhd2FpdCBmcy5zdGF0KGZ1bGxQYXRoKSkuaXNEaXJlY3RvcnkoKVxuXG4gICAgICAgIGlmIChpc0Rpcikge1xuICAgICAgICAgIHRoaXMuZmluZFRlc3RGaWxlc0luRGlyKGZ1bGxQYXRoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmlzRmlsZU1hdGNoaW5nUmVxdWlyZW1lbnRzKGZpbGUsIGxvY2FsUGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm91bmRGaWxlcy5wdXNoKGZ1bGxQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsUGF0aFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXN1bHQuXG4gICAqL1xuICBpc0ZpbGVNYXRjaGluZ1JlcXVpcmVtZW50cyhmaWxlLCBsb2NhbFBhdGgpIHtcbiAgICBpZiAodGhpcy5kaXJlY3RvcnlBcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZGlyZWN0b3J5QXJnIG9mIHRoaXMuZGlyZWN0b3J5QXJncykge1xuICAgICAgICBpZiAobG9jYWxQYXRoLnN0YXJ0c1dpdGgoZGlyZWN0b3J5QXJnKSAmJiB0aGlzLmxvb2tzTGlrZVRlc3RGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJGb3VuZCB0ZXN0IGZpbGUgYmVjYXVzZSBtYXRjaGluZyBkaXIgYW5kIGxvb2tzIGxpa2UgdGhpcyBmaWxlOlwiLCBmaWxlKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWxlQXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbGVBcmcgb2YgdGhpcy5maWxlQXJncykge1xuICAgICAgICBpZiAoZmlsZUFyZyA9PSBsb2NhbFBhdGgpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkZvdW5kIHRlc3QgZmlsZSBiZWNhdXNlIG1hdGNoaW5nIGZpbGUgYXJnOlwiLCBmaWxlKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWxlQXJncy5sZW5ndGggPT0gMCAmJiB0aGlzLmRpcmVjdG9yeUFyZ3MubGVuZ3RoID09IDAgJiYgdGhpcy5sb29rc0xpa2VUZXN0RmlsZShmaWxlKSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJGb3VuZCB0ZXN0IGZpbGUgYmVjYXVzZSBsb29rcyBsaWtlIHRoaXMgZmlsZTpcIiwgZmlsZSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gUmVzdWx0LlxuICAgKi9cbiAgbG9va3NMaWtlVGVzdEZpbGUoZmlsZSkge1xuICAgIHJldHVybiBCb29sZWFuKGZpbGUubWF0Y2goLy0oc3BlY3x0ZXN0KVxcLihtfClqcyQvKSlcbiAgfVxufVxuIl19