obsidian-integration-testing 9.2.2 → 10.0.0

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 (253) hide show
  1. package/README.md +45 -45
  2. package/dist/lib/cjs/appium-dependencies.cjs +5 -5
  3. package/dist/lib/cjs/appium-dependencies.d.cts +4 -2
  4. package/dist/lib/cjs/appium-session-config.cjs +1 -1
  5. package/dist/lib/cjs/asar-fallback-detection.cjs +4 -4
  6. package/dist/lib/cjs/asar-fallback-detection.d.cts +15 -7
  7. package/dist/lib/cjs/avd-list.cjs +1 -1
  8. package/dist/lib/cjs/avd-list.d.cts +6 -2
  9. package/dist/lib/cjs/cli.cjs +4 -4
  10. package/dist/lib/cjs/compatibility-options.cjs +13 -13
  11. package/dist/lib/cjs/compatibility-options.d.cts +24 -12
  12. package/dist/lib/cjs/connect-to-cdp.cjs +4 -4
  13. package/dist/lib/cjs/connect-to-cdp.d.cts +6 -6
  14. package/dist/lib/cjs/context-id.cjs +5 -5
  15. package/dist/lib/cjs/context-id.d.cts +1 -1
  16. package/dist/lib/cjs/context-provider.cjs +5 -5
  17. package/dist/lib/cjs/context-provider.d.cts +4 -4
  18. package/dist/lib/cjs/demo-vault-populate.cjs +5 -5
  19. package/dist/lib/cjs/demo-vault-populate.d.cts +4 -4
  20. package/dist/lib/cjs/demo-vault-tree.cjs +4 -4
  21. package/dist/lib/cjs/demo-vault-tree.d.cts +3 -3
  22. package/dist/lib/cjs/device-readiness.cjs +3 -3
  23. package/dist/lib/cjs/device-readiness.d.cts +7 -3
  24. package/dist/lib/cjs/ecmascript-version.cjs +1 -1
  25. package/dist/lib/cjs/electron-compatibility.cjs +4 -4
  26. package/dist/lib/cjs/electron-compatibility.d.cts +33 -17
  27. package/dist/lib/cjs/emulator-arguments.cjs +36 -0
  28. package/dist/lib/{esm/emulator-args.d.mts → cjs/emulator-arguments.d.cts} +6 -4
  29. package/dist/lib/cjs/enable-plugin.cjs +29 -29
  30. package/dist/lib/cjs/enable-plugin.d.cts +6 -6
  31. package/dist/lib/cjs/eval-in-obsidian.cjs +9 -9
  32. package/dist/lib/cjs/eval-in-obsidian.d.cts +23 -23
  33. package/dist/lib/cjs/exec.cjs +49 -53
  34. package/dist/lib/cjs/exec.d.cts +9 -9
  35. package/dist/lib/cjs/function-expression.cjs +8 -8
  36. package/dist/lib/cjs/function-expression.d.cts +4 -4
  37. package/dist/lib/cjs/generate-function-call.cjs +6 -6
  38. package/dist/lib/cjs/generate-function-call.d.cts +15 -9
  39. package/dist/lib/cjs/global-setup-core.cjs +43 -43
  40. package/dist/lib/cjs/global-setup-core.d.cts +19 -9
  41. package/dist/lib/cjs/incompatible-installer-version-error.cjs +10 -4
  42. package/dist/lib/cjs/incompatible-installer-version-error.d.cts +18 -6
  43. package/dist/lib/cjs/index.cjs +10 -10
  44. package/dist/lib/cjs/index.d.cts +8 -8
  45. package/dist/lib/cjs/installer-asset.cjs +4 -4
  46. package/dist/lib/cjs/installer-asset.d.cts +21 -7
  47. package/dist/lib/cjs/installer-compatibility.cjs +4 -4
  48. package/dist/lib/cjs/installer-compatibility.d.cts +36 -18
  49. package/dist/lib/cjs/jest/global-setup-no-plugin.cjs +3 -3
  50. package/dist/lib/cjs/jest/global-setup-no-plugin.d.cts +1 -1
  51. package/dist/lib/cjs/jest/global-setup.cjs +11 -11
  52. package/dist/lib/cjs/jest/global-setup.d.cts +12 -8
  53. package/dist/lib/cjs/jest/global-teardown-no-plugin.cjs +2 -3
  54. package/dist/lib/cjs/jest/global-teardown-no-plugin.d.cts +1 -2
  55. package/dist/lib/cjs/jest/global-teardown.cjs +2 -3
  56. package/dist/lib/cjs/jest/global-teardown.d.cts +1 -2
  57. package/dist/lib/cjs/jest/setup.cjs +2 -2
  58. package/dist/lib/cjs/jest/setup.d.cts +1 -1
  59. package/dist/lib/cjs/json-with-functions.cjs +7 -7
  60. package/dist/lib/cjs/leftover-cleanup.cjs +14 -14
  61. package/dist/lib/cjs/leftover-cleanup.d.cts +42 -20
  62. package/dist/lib/cjs/library.cjs +2 -2
  63. package/dist/lib/cjs/namespace-bootstrap.cjs +46 -40
  64. package/dist/lib/cjs/native-dialog-monitor.cjs +15 -13
  65. package/dist/lib/cjs/normalize-optional-properties.cjs +3 -3
  66. package/dist/lib/cjs/normalize-optional-properties.d.cts +2 -2
  67. package/dist/lib/cjs/obsidian-config.cjs +30 -31
  68. package/dist/lib/cjs/obsidian-config.d.cts +8 -8
  69. package/dist/lib/cjs/obsidian-executable.cjs +2 -2
  70. package/dist/lib/cjs/obsidian-installer.cjs +37 -37
  71. package/dist/lib/cjs/obsidian-installer.d.cts +7 -3
  72. package/dist/lib/cjs/obsidian-instance.cjs +3 -3
  73. package/dist/lib/cjs/obsidian-instance.d.cts +18 -8
  74. package/dist/lib/cjs/obsidian-metadata.cjs +1 -1
  75. package/dist/lib/cjs/obsidian-metadata.d.cts +36 -12
  76. package/dist/lib/cjs/obsidian-namespace.cjs +1 -1
  77. package/dist/lib/cjs/obsidian-namespace.d.cts +25 -11
  78. package/dist/lib/cjs/obsidian-version-switch.cjs +9 -9
  79. package/dist/lib/cjs/obsidian-version-switch.d.cts +14 -10
  80. package/dist/lib/cjs/obsidian-version.cjs +3 -3
  81. package/dist/lib/cjs/obsidian-version.d.cts +15 -5
  82. package/dist/lib/cjs/owned-vault-seed.cjs +1 -1
  83. package/dist/lib/cjs/owned-vault-seed.d.cts +24 -8
  84. package/dist/lib/cjs/parent-liveness.cjs +4 -4
  85. package/dist/lib/cjs/parent-liveness.d.cts +7 -3
  86. package/dist/lib/cjs/poll-in-obsidian.cjs +5 -5
  87. package/dist/lib/cjs/poll-in-obsidian.d.cts +12 -12
  88. package/dist/lib/cjs/poll-until.cjs +1 -1
  89. package/dist/lib/cjs/poll-until.d.cts +21 -7
  90. package/dist/lib/cjs/process-exit-message.cjs +1 -1
  91. package/dist/lib/cjs/process-exit-message.d.cts +21 -7
  92. package/dist/lib/cjs/renderer-boot-detection.cjs +9 -9
  93. package/dist/lib/cjs/renderer-boot-detection.d.cts +31 -27
  94. package/dist/lib/cjs/renderer-failed-to-initialize-error.cjs +1 -1
  95. package/dist/lib/cjs/renderer-failed-to-initialize-error.d.cts +1 -1
  96. package/dist/lib/cjs/setup-lock.cjs +26 -26
  97. package/dist/lib/cjs/setup-lock.d.cts +6 -2
  98. package/dist/lib/cjs/silent-asar-fallback-error.cjs +7 -3
  99. package/dist/lib/cjs/silent-asar-fallback-error.d.cts +12 -4
  100. package/dist/lib/cjs/spawn-options.cjs +1 -1
  101. package/dist/lib/cjs/spawn-options.d.cts +3 -1
  102. package/dist/lib/cjs/strict-proxy.cjs +25 -25
  103. package/dist/lib/cjs/strict-proxy.d.cts +3 -3
  104. package/dist/lib/cjs/temporary-vault.cjs +166 -0
  105. package/dist/lib/cjs/{temp-vault.d.cts → temporary-vault.d.cts} +3 -3
  106. package/dist/lib/cjs/transport-appium.cjs +7 -7
  107. package/dist/lib/cjs/transport-appium.d.cts +7 -3
  108. package/dist/lib/cjs/transport-desktop-cdp.cjs +57 -57
  109. package/dist/lib/cjs/transport-desktop-cdp.d.cts +29 -17
  110. package/dist/lib/cjs/transport-factory.cjs +62 -63
  111. package/dist/lib/cjs/type-guards.cjs +3 -3
  112. package/dist/lib/cjs/type-guards.d.cts +2 -2
  113. package/dist/lib/cjs/vault-path-match.cjs +9 -9
  114. package/dist/lib/cjs/vault-path-match.d.cts +11 -11
  115. package/dist/lib/cjs/version-matrix.cjs +1 -1
  116. package/dist/lib/cjs/version-matrix.d.cts +51 -17
  117. package/dist/lib/cjs/visibility.cjs +7 -7
  118. package/dist/lib/cjs/visibility.d.cts +5 -5
  119. package/dist/lib/cjs/vitest/global-setup-no-plugin.cjs +3 -3
  120. package/dist/lib/cjs/vitest/global-setup-no-plugin.d.cts +2 -2
  121. package/dist/lib/cjs/vitest/global-setup.cjs +9 -9
  122. package/dist/lib/cjs/vitest/global-setup.d.cts +4 -4
  123. package/dist/lib/cjs/vitest/setup.cjs +2 -2
  124. package/dist/lib/cjs/vitest/typings.d.cts +2 -2
  125. package/dist/lib/esm/appium-dependencies.d.mts +4 -2
  126. package/dist/lib/esm/appium-dependencies.mjs +4 -4
  127. package/dist/lib/esm/appium-session-config.mjs +1 -1
  128. package/dist/lib/esm/asar-fallback-detection.d.mts +15 -7
  129. package/dist/lib/esm/asar-fallback-detection.mjs +3 -3
  130. package/dist/lib/esm/avd-list.d.mts +6 -2
  131. package/dist/lib/esm/avd-list.mjs +1 -1
  132. package/dist/lib/esm/cli.mjs +4 -4
  133. package/dist/lib/esm/compatibility-options.d.mts +24 -12
  134. package/dist/lib/esm/compatibility-options.mjs +10 -10
  135. package/dist/lib/esm/connect-to-cdp.d.mts +6 -6
  136. package/dist/lib/esm/connect-to-cdp.mjs +6 -6
  137. package/dist/lib/esm/context-id.d.mts +1 -1
  138. package/dist/lib/esm/context-id.mjs +5 -5
  139. package/dist/lib/esm/context-provider.d.mts +4 -4
  140. package/dist/lib/esm/context-provider.mjs +5 -5
  141. package/dist/lib/esm/demo-vault-populate.d.mts +4 -4
  142. package/dist/lib/esm/demo-vault-populate.mjs +5 -5
  143. package/dist/lib/esm/demo-vault-tree.d.mts +3 -3
  144. package/dist/lib/esm/demo-vault-tree.mjs +4 -4
  145. package/dist/lib/esm/device-readiness.d.mts +7 -3
  146. package/dist/lib/esm/device-readiness.mjs +3 -3
  147. package/dist/lib/esm/ecmascript-version.mjs +1 -1
  148. package/dist/lib/esm/electron-compatibility.d.mts +33 -17
  149. package/dist/lib/esm/electron-compatibility.mjs +3 -3
  150. package/dist/lib/{cjs/emulator-args.d.cts → esm/emulator-arguments.d.mts} +6 -4
  151. package/dist/lib/esm/emulator-arguments.mjs +12 -0
  152. package/dist/lib/esm/enable-plugin.d.mts +6 -6
  153. package/dist/lib/esm/enable-plugin.mjs +29 -29
  154. package/dist/lib/esm/eval-in-obsidian.d.mts +23 -23
  155. package/dist/lib/esm/eval-in-obsidian.mjs +9 -9
  156. package/dist/lib/esm/exec.d.mts +9 -9
  157. package/dist/lib/esm/exec.mjs +49 -53
  158. package/dist/lib/esm/function-expression.d.mts +4 -4
  159. package/dist/lib/esm/function-expression.mjs +8 -8
  160. package/dist/lib/esm/generate-function-call.d.mts +15 -9
  161. package/dist/lib/esm/generate-function-call.mjs +6 -6
  162. package/dist/lib/esm/global-setup-core.d.mts +19 -9
  163. package/dist/lib/esm/global-setup-core.mjs +45 -45
  164. package/dist/lib/esm/incompatible-installer-version-error.d.mts +18 -6
  165. package/dist/lib/esm/incompatible-installer-version-error.mjs +10 -4
  166. package/dist/lib/esm/index.d.mts +8 -8
  167. package/dist/lib/esm/index.mjs +9 -9
  168. package/dist/lib/esm/installer-asset.d.mts +21 -7
  169. package/dist/lib/esm/installer-asset.mjs +4 -4
  170. package/dist/lib/esm/installer-compatibility.d.mts +36 -18
  171. package/dist/lib/esm/installer-compatibility.mjs +3 -3
  172. package/dist/lib/esm/jest/global-setup-no-plugin.d.mts +1 -1
  173. package/dist/lib/esm/jest/global-setup-no-plugin.mjs +3 -3
  174. package/dist/lib/esm/jest/global-setup.d.mts +12 -8
  175. package/dist/lib/esm/jest/global-setup.mjs +10 -10
  176. package/dist/lib/esm/jest/global-teardown-no-plugin.d.mts +1 -2
  177. package/dist/lib/esm/jest/global-teardown-no-plugin.mjs +2 -3
  178. package/dist/lib/esm/jest/global-teardown.d.mts +1 -2
  179. package/dist/lib/esm/jest/global-teardown.mjs +2 -3
  180. package/dist/lib/esm/jest/setup.d.mts +1 -1
  181. package/dist/lib/esm/jest/setup.mjs +2 -2
  182. package/dist/lib/esm/json-with-functions.mjs +7 -7
  183. package/dist/lib/esm/leftover-cleanup.d.mts +42 -20
  184. package/dist/lib/esm/leftover-cleanup.mjs +12 -12
  185. package/dist/lib/esm/library.mjs +2 -2
  186. package/dist/lib/esm/namespace-bootstrap.mjs +46 -40
  187. package/dist/lib/esm/native-dialog-monitor.mjs +15 -13
  188. package/dist/lib/esm/normalize-optional-properties.d.mts +2 -2
  189. package/dist/lib/esm/normalize-optional-properties.mjs +3 -3
  190. package/dist/lib/esm/obsidian-config.d.mts +8 -8
  191. package/dist/lib/esm/obsidian-config.mjs +27 -28
  192. package/dist/lib/esm/obsidian-executable.mjs +2 -2
  193. package/dist/lib/esm/obsidian-installer.d.mts +7 -3
  194. package/dist/lib/esm/obsidian-installer.mjs +36 -36
  195. package/dist/lib/esm/obsidian-instance.d.mts +18 -8
  196. package/dist/lib/esm/obsidian-instance.mjs +3 -3
  197. package/dist/lib/esm/obsidian-metadata.d.mts +36 -12
  198. package/dist/lib/esm/obsidian-metadata.mjs +1 -1
  199. package/dist/lib/esm/obsidian-namespace.d.mts +25 -11
  200. package/dist/lib/esm/obsidian-version-switch.d.mts +14 -10
  201. package/dist/lib/esm/obsidian-version-switch.mjs +9 -9
  202. package/dist/lib/esm/obsidian-version.d.mts +15 -5
  203. package/dist/lib/esm/obsidian-version.mjs +3 -3
  204. package/dist/lib/esm/owned-vault-seed.d.mts +24 -8
  205. package/dist/lib/esm/owned-vault-seed.mjs +1 -1
  206. package/dist/lib/esm/parent-liveness.d.mts +7 -3
  207. package/dist/lib/esm/parent-liveness.mjs +3 -3
  208. package/dist/lib/esm/poll-in-obsidian.d.mts +12 -12
  209. package/dist/lib/esm/poll-in-obsidian.mjs +5 -5
  210. package/dist/lib/esm/poll-until.d.mts +21 -7
  211. package/dist/lib/esm/poll-until.mjs +1 -1
  212. package/dist/lib/esm/process-exit-message.d.mts +21 -7
  213. package/dist/lib/esm/process-exit-message.mjs +1 -1
  214. package/dist/lib/esm/renderer-boot-detection.d.mts +31 -27
  215. package/dist/lib/esm/renderer-boot-detection.mjs +7 -7
  216. package/dist/lib/esm/renderer-failed-to-initialize-error.d.mts +1 -1
  217. package/dist/lib/esm/renderer-failed-to-initialize-error.mjs +1 -1
  218. package/dist/lib/esm/setup-lock.d.mts +6 -2
  219. package/dist/lib/esm/setup-lock.mjs +26 -26
  220. package/dist/lib/esm/silent-asar-fallback-error.d.mts +12 -4
  221. package/dist/lib/esm/silent-asar-fallback-error.mjs +7 -3
  222. package/dist/lib/esm/spawn-options.d.mts +3 -1
  223. package/dist/lib/esm/spawn-options.mjs +1 -1
  224. package/dist/lib/esm/strict-proxy.d.mts +3 -3
  225. package/dist/lib/esm/strict-proxy.mjs +25 -25
  226. package/dist/lib/esm/{temp-vault.d.mts → temporary-vault.d.mts} +3 -3
  227. package/dist/lib/esm/temporary-vault.mjs +157 -0
  228. package/dist/lib/esm/transport-appium.d.mts +7 -3
  229. package/dist/lib/esm/transport-appium.mjs +7 -7
  230. package/dist/lib/esm/transport-desktop-cdp.d.mts +29 -17
  231. package/dist/lib/esm/transport-desktop-cdp.mjs +67 -67
  232. package/dist/lib/esm/transport-factory.mjs +71 -72
  233. package/dist/lib/esm/type-guards.d.mts +2 -2
  234. package/dist/lib/esm/type-guards.mjs +3 -3
  235. package/dist/lib/esm/vault-path-match.d.mts +11 -11
  236. package/dist/lib/esm/vault-path-match.mjs +7 -7
  237. package/dist/lib/esm/version-matrix.d.mts +51 -17
  238. package/dist/lib/esm/version-matrix.mjs +1 -1
  239. package/dist/lib/esm/visibility.d.mts +5 -5
  240. package/dist/lib/esm/visibility.mjs +5 -5
  241. package/dist/lib/esm/vitest/global-setup-no-plugin.d.mts +2 -2
  242. package/dist/lib/esm/vitest/global-setup-no-plugin.mjs +3 -3
  243. package/dist/lib/esm/vitest/global-setup.d.mts +4 -4
  244. package/dist/lib/esm/vitest/global-setup.mjs +8 -8
  245. package/dist/lib/esm/vitest/setup.mjs +2 -2
  246. package/dist/lib/esm/vitest/typings.d.mts +2 -2
  247. package/dist/obsidian-integration-testing-10.0.0.tgz +0 -0
  248. package/package.json +15 -13
  249. package/dist/lib/cjs/emulator-args.cjs +0 -36
  250. package/dist/lib/cjs/temp-vault.cjs +0 -166
  251. package/dist/lib/esm/emulator-args.mjs +0 -12
  252. package/dist/lib/esm/temp-vault.mjs +0 -157
  253. package/dist/obsidian-integration-testing-9.2.2.tgz +0 -0
@@ -40,29 +40,29 @@ function exec(command, options = {}) {
40
40
  if (batchResult) {
41
41
  return batchResult;
42
42
  }
43
- const args = command.filter((part) => typeof part === "string");
44
- const commandLine = toCommandLine(args);
43
+ const commandArguments = command.filter((part) => typeof part === "string");
44
+ const commandLine = toCommandLine(commandArguments);
45
45
  const maxCommandLength2 = getMaxCommandLength();
46
46
  if (commandLine.length > maxCommandLength2) {
47
47
  return Promise.reject(
48
48
  new Error(
49
- `Command line is too long (${String(commandLine.length)} chars, max ${String(maxCommandLength2)} on ${import_node_process.default.platform}). Consider using ExecArg with batchedArgs.`
49
+ `Command line is too long (${String(commandLine.length)} chars, max ${String(maxCommandLength2)} on ${import_node_process.default.platform}). Consider using ExecArgument with batchedArguments.`
50
50
  )
51
51
  );
52
52
  }
53
- return execString(commandLine, options, args);
53
+ return execString(commandLine, options, commandArguments);
54
54
  }
55
55
  const maxCommandLength = getMaxCommandLength();
56
56
  if (command.length > maxCommandLength) {
57
57
  return Promise.reject(
58
58
  new Error(
59
- `Command line is too long (${String(command.length)} chars, max ${String(maxCommandLength)} on ${import_node_process.default.platform}). Consider using ExecArg with batchedArgs.`
59
+ `Command line is too long (${String(command.length)} chars, max ${String(maxCommandLength)} on ${import_node_process.default.platform}). Consider using ExecArgument with batchedArguments.`
60
60
  )
61
61
  );
62
62
  }
63
63
  return execString(command, options);
64
64
  }
65
- function execString(command, options = {}, rawArgs) {
65
+ function execString(command, options = {}, rawArguments) {
66
66
  const {
67
67
  cwd = import_node_process.default.cwd(),
68
68
  isQuiet: quiet = false,
@@ -72,7 +72,7 @@ function execString(command, options = {}, rawArgs) {
72
72
  timeoutInMilliseconds
73
73
  } = options;
74
74
  return new Promise((resolve, reject) => {
75
- const child = spawnViaShell(command, cwd, rawArgs);
75
+ const child = spawnViaShell(command, cwd, rawArguments);
76
76
  let timeoutTimer;
77
77
  if (timeoutInMilliseconds !== void 0) {
78
78
  timeoutTimer = setTimeout(() => {
@@ -122,9 +122,9 @@ ${stderr}`));
122
122
  stdout
123
123
  });
124
124
  });
125
- child.on("error", (err) => {
125
+ child.on("error", (error) => {
126
126
  if (!ignoreExitCode) {
127
- reject(err);
127
+ reject(error);
128
128
  return;
129
129
  }
130
130
  if (!shouldIncludeDetails) {
@@ -145,37 +145,33 @@ const CHILD_ENV = {
145
145
  ...import_node_process.default.env
146
146
  };
147
147
  const CMD_META_RE = /[()%!^"<>&|]/g;
148
- function toCommandLine(args) {
149
- return args.map((arg) => argvQuote(arg)).join(" ");
148
+ function toCommandLine(commandArguments) {
149
+ return commandArguments.map((argument) => argvQuote(argument)).join(" ");
150
150
  }
151
- function argvQuote(arg) {
152
- if (arg.length > 0 && !/[\s\t\n\v"]/.test(arg)) {
153
- return arg;
151
+ function argvQuote(argument) {
152
+ if (argument.length > 0 && !/[\s\t\n\v"]/.test(argument)) {
153
+ return argument;
154
154
  }
155
155
  const BACKSLASH_ESCAPE_FACTOR = 2;
156
156
  let result = '"';
157
- for (let i = 0; i < arg.length; i++) {
158
- let numBackslashes = 0;
159
- while (i < arg.length && arg[i] === "\\") {
160
- i++;
161
- numBackslashes++;
157
+ for (let index = 0; index < argument.length; index++) {
158
+ let numberBackslashes = 0;
159
+ while (index < argument.length && argument[index] === "\\") {
160
+ index++;
161
+ numberBackslashes++;
162
162
  }
163
- if (i === arg.length) {
164
- result += "\\".repeat(numBackslashes * BACKSLASH_ESCAPE_FACTOR);
163
+ if (index === argument.length) {
164
+ result += "\\".repeat(numberBackslashes * BACKSLASH_ESCAPE_FACTOR);
165
165
  break;
166
166
  }
167
- const ch = arg.charAt(i);
168
- if (ch === '"') {
169
- result += `${"\\".repeat(numBackslashes * BACKSLASH_ESCAPE_FACTOR + 1)}"`;
170
- } else {
171
- result += "\\".repeat(numBackslashes) + ch;
172
- }
167
+ const ch = argument.charAt(index);
168
+ result += ch === '"' ? `${"\\".repeat(numberBackslashes * BACKSLASH_ESCAPE_FACTOR + 1)}"` : "\\".repeat(numberBackslashes) + ch;
173
169
  }
174
170
  result += '"';
175
171
  return result;
176
172
  }
177
- function cmdEscapeCommandLine(commandLine) {
178
- return commandLine.replace(CMD_META_RE, "^$&");
173
+ function commandEscapeCommandLine(commandLine) {
174
+ return commandLine.replaceAll(CMD_META_RE, "^$&");
179
175
  }
180
176
  async function executeBatches(baseCommand, batches, options) {
181
177
  const results = [];
@@ -197,40 +193,40 @@ function getMaxCommandLength() {
197
193
  return import_node_process.default.platform === "win32" ? WINDOWS_MAX_COMMAND_LENGTH : UNIX_MAX_COMMAND_LENGTH;
198
194
  }
199
195
  function handleBatchedCommand(parts, options) {
200
- const execArgs = parts.filter(isExecArg);
201
- if (execArgs.length === 0) {
196
+ const execArguments = parts.filter(isExecArgument);
197
+ if (execArguments.length === 0) {
202
198
  return void 0;
203
199
  }
204
- if (execArgs.length > 1) {
205
- return Promise.reject(new Error("Only one ExecArg with batchedArgs is allowed per command"));
200
+ if (execArguments.length > 1) {
201
+ return Promise.reject(new Error("Only one ExecArgument with batchedArguments is allowed per command"));
206
202
  }
207
- const execArg = execArgs[0];
208
- if (!execArg) {
203
+ const execArgument = execArguments[0];
204
+ if (!execArgument) {
209
205
  return void 0;
210
206
  }
211
207
  const staticParts = parts.filter((part) => typeof part === "string");
212
208
  const baseCommand = toCommandLine(staticParts);
213
209
  const maxCommandLength = getMaxCommandLength();
214
- const fullCommand = `${baseCommand} ${execArg.batchedArgs.join(" ")}`;
210
+ const fullCommand = `${baseCommand} ${execArgument.batchedArguments.join(" ")}`;
215
211
  if (fullCommand.length <= maxCommandLength) {
216
212
  return execString(fullCommand, options);
217
213
  }
218
214
  const batches = [];
219
215
  let currentBatch = [];
220
- for (const arg of execArg.batchedArgs) {
221
- const tentative = `${baseCommand} ${[...currentBatch, arg].join(" ")}`;
216
+ for (const argument of execArgument.batchedArguments) {
217
+ const tentative = `${baseCommand} ${[...currentBatch, argument].join(" ")}`;
222
218
  if (tentative.length > maxCommandLength) {
223
219
  if (currentBatch.length === 0) {
224
220
  return Promise.reject(
225
221
  new Error(
226
- `Cannot split command into batches: a single argument (${String(arg.length)} chars) plus the base command (${String(baseCommand.length)} chars) exceeds the max command length (${String(maxCommandLength)}).`
222
+ `Cannot split command into batches: a single argument (${String(argument.length)} chars) plus the base command (${String(baseCommand.length)} chars) exceeds the max command length (${String(maxCommandLength)}).`
227
223
  )
228
224
  );
229
225
  }
230
226
  batches.push(currentBatch);
231
- currentBatch = [arg];
227
+ currentBatch = [argument];
232
228
  } else {
233
- currentBatch.push(arg);
229
+ currentBatch.push(argument);
234
230
  }
235
231
  }
236
232
  if (currentBatch.length > 0) {
@@ -238,16 +234,16 @@ function handleBatchedCommand(parts, options) {
238
234
  }
239
235
  return executeBatches(baseCommand, batches, options);
240
236
  }
241
- function isExecArg(part) {
242
- return typeof part === "object" && "batchedArgs" in part;
237
+ function isExecArgument(part) {
238
+ return typeof part === "object" && "batchedArguments" in part;
243
239
  }
244
- function spawnViaShell(command, cwd, rawArgs) {
245
- if (import_node_process.default.platform === "win32" && rawArgs) {
246
- const [program, ...args] = rawArgs;
240
+ function spawnViaShell(command, cwd, rawArguments) {
241
+ if (import_node_process.default.platform === "win32" && rawArguments) {
242
+ const [program, ...commandArguments] = rawArguments;
247
243
  if (!program) {
248
244
  throw new Error("Command array must not be empty");
249
245
  }
250
- return (0, import_node_child_process.spawn)(program, args, {
246
+ return (0, import_node_child_process.spawn)(program, commandArguments, {
251
247
  cwd,
252
248
  env: CHILD_ENV,
253
249
  stdio: "pipe"
@@ -256,7 +252,7 @@ function spawnViaShell(command, cwd, rawArgs) {
256
252
  if (import_node_process.default.platform === "win32" && command.includes("\n")) {
257
253
  throw new Error("Commands containing newlines cannot be executed through cmd.exe on Windows. Pass an argument array instead of a string.");
258
254
  }
259
- const shellCommand = import_node_process.default.platform === "win32" ? cmdEscapeCommandLine(command) : command;
255
+ const shellCommand = import_node_process.default.platform === "win32" ? commandEscapeCommandLine(command) : command;
260
256
  return (0, import_node_child_process.spawn)(shellCommand, [], {
261
257
  cwd,
262
258
  env: CHILD_ENV,
@@ -264,15 +260,15 @@ function spawnViaShell(command, cwd, rawArgs) {
264
260
  stdio: "pipe"
265
261
  });
266
262
  }
267
- function trimEnd(str, suffix) {
268
- if (str.endsWith(suffix)) {
269
- return str.slice(0, -suffix.length);
263
+ function trimEnd(value, suffix) {
264
+ if (value.endsWith(suffix)) {
265
+ return value.slice(0, -suffix.length);
270
266
  }
271
- return str;
267
+ return value;
272
268
  }
273
269
  // Annotate the CommonJS export names for ESM import in node:
274
270
  0 && (module.exports = {
275
271
  exec,
276
272
  toCommandLine
277
273
  });
278
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4ZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJnfSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjb21tYW5kIGFyZ3VtZW50IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFyZ3MgdG8gYmUgYmF0Y2hlZC5cbiAqIElmIHRoZSBleHBhbmRlZCBjb21tYW5kIGV4Y2VlZHMgdGhlIHBsYXRmb3JtJ3MgbWF4IGNvbW1hbmQgbGVuZ3RoLFxuICogdGhlIGJhdGNoZWQgYXJncyBhcmUgc3BsaXQgaW50byBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0FyZyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYHRydWVgIHRvIHJlY2VpdmUgZGV0YWlsZWQgcmVzdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzOiB0cnVlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGV4ZWN1dGluZyBhIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY09wdGlvbiB7XG4gIC8qKlxuICAgKiBBIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgZm9yIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBzdXBwcmVzc2VzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBpc1F1aWV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBpZ25vcmVzIHRoZSBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJZ25vcmVFeGl0Q29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgcmV0dXJucyBkZXRhaWxlZCByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBpbnB1dCB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRpbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMuIFRoZSBjaGlsZCBwcm9jZXNzIGlzIGtpbGxlZCBpZiBpdCBleGNlZWRzIHRoaXMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQSByZXN1bHQgb2Yge0BsaW5rIGV4ZWN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNSZXN1bHQge1xuICAvKipcbiAgICogQW4gZXhpdCBjb2RlIG9mIHRoZSBjb21tYW5kLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvY2VzcyBkaWQgbm90IGV4aXQgbm9ybWFsbHkuXG4gICAqL1xuICByZWFkb25seSBleGl0Q29kZTogbnVsbCB8IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzaWduYWwgdGhhdCBjYXVzZWQgdGhlIHByb2Nlc3MgdG8gYmUgdGVybWluYXRlZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgbm8gc2lnbmFsIHdhcyByZWNlaXZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRTaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGVycjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3Rkb3V0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWN9IHRoYXQgcmV0dXJuIG9ubHkgc3Rkb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNTaW1wbGVPcHRpb25zIGV4dGVuZHMgRXhlY09wdGlvbiB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGBmYWxzZWAgb3Igb21pdHRlZCB0byByZWNlaXZlIG9ubHkgc3Rkb3V0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM/OiBmYWxzZTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjKGNvbW1hbmQ6IENvbW1hbmRQYXJ0W10gfCBzdHJpbmcsIG9wdGlvbnM6IEV4ZWNEZXRhaWxlZE9wdGlvbnMpOiBQcm9taXNlPEV4ZWNSZXN1bHQ+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCBvciBhbiBFeGVjUmVzdWx0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmQpKSB7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHQgPSBoYW5kbGVCYXRjaGVkQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAoYmF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBiYXRjaFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgYXJncyA9IGNvbW1hbmQuZmlsdGVyKChwYXJ0KTogcGFydCBpcyBzdHJpbmcgPT4gdHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKTtcbiAgICBjb25zdCBjb21tYW5kTGluZSA9IHRvQ29tbWFuZExpbmUoYXJncyk7XG5cbiAgICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICAgIGlmIChjb21tYW5kTGluZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kTGluZS5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgdXNpbmcgRXhlY0FyZyB3aXRoIGJhdGNoZWRBcmdzLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kTGluZSwgb3B0aW9ucywgYXJncyk7XG4gIH1cblxuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICBpZiAoY29tbWFuZC5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciB1c2luZyBFeGVjQXJnIHdpdGggYmF0Y2hlZEFyZ3MuYFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBzdHJpbmcgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEBwYXJhbSByYXdBcmdzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLCB1c2VkIGJ5IHRoZVxuICogICBkaXJlY3Qtc3Bhd24gZmFsbGJhY2sgb24gV2luZG93cyB3aGVuIHRoZSBjb21tYW5kIGNvbnRhaW5zIG5ld2xpbmVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9LCByYXdBcmdzPzogc3RyaW5nW10pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGN3ZCA9IHByb2Nlc3MuY3dkKCksXG4gICAgaXNRdWlldDogcXVpZXQgPSBmYWxzZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogaWdub3JlRXhpdENvZGUgPSBmYWxzZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlscyA9IGZhbHNlLFxuICAgIHN0ZGluID0gJycsXG4gICAgdGltZW91dEluTWlsbGlzZWNvbmRzXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3blZpYVNoZWxsKGNvbW1hbmQsIGN3ZCwgcmF3QXJncyk7XG4gICAgbGV0IHRpbWVvdXRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGltZW91dEluTWlsbGlzZWNvbmRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjaGlsZC5raWxsKCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgdGltZWQgb3V0IGFmdGVyICR7U3RyaW5nKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9bXNgKSk7XG4gICAgICB9LCB0aW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgIH1cblxuICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICBsZXQgc3RkZXJyID0gJyc7XG5cbiAgICBjaGlsZC5zdGRpbi53cml0ZShzdGRpbik7XG4gICAgY2hpbGQuc3RkaW4uZW5kKCk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZG91dCA9IHRyaW1FbmQoc3Rkb3V0LCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3RkZXJyICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZGVyciA9IHRyaW1FbmQoc3RkZXJyLCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignY2xvc2UnLCAoZXhpdENvZGUsIGV4aXRTaWduYWwpID0+IHtcbiAgICAgIGlmICh0aW1lb3V0VGltZXIpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRUaW1lcik7XG4gICAgICB9XG4gICAgICBpZiAoZXhpdENvZGUgIT09IDAgJiYgIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGUgPyBTdHJpbmcoZXhpdENvZGUpIDogJyhudWxsKSd9XFxuJHtzdGRlcnJ9YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGUsXG4gICAgICAgIGV4aXRTaWduYWwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgICBleGl0U2lnbmFsOiBudWxsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHBhc3NlZCB0byBjaGlsZCBwcm9jZXNzZXMuXG4gKi9cbmNvbnN0IENISUxEX0VOViA9IHtcbiAgREVCVUdfQ09MT1JTOiAnMScsXG4gIC4uLnByb2Nlc3MuZW52XG59O1xuXG4vKipcbiAqIE1hdGNoZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHRoYXQgbXVzdCBiZSBgXmAtZXNjYXBlZC5cbiAqL1xuY29uc3QgQ01EX01FVEFfUkUgPSAvWygpJSFeXCI8PiZ8XS9nO1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBjb21tYW5kLWxpbmUgc3RyaW5nXG4gKiB1c2luZyB0aGUgYENvbW1hbmRMaW5lVG9Bcmd2V2AgY29udmVudGlvbi5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIFRoZSBhcnJheSBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNvbW1hbmQtbGluZSBpbnZvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Db21tYW5kTGluZShhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBhcmdzLm1hcCgoYXJnKSA9PiBhcmd2UXVvdGUoYXJnKSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBzbyB0aGF0IGBDb21tYW5kTGluZVRvQXJndldgIHdpbGwgZGVjb2RlIGl0XG4gKiB1bmNoYW5nZWQuXG4gKlxuICogQHBhcmFtIGFyZyAtIFRoZSByYXcgYXJndW1lbnQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHF1b3RlZCBhcmd1bWVudCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGFyZ3ZRdW90ZShhcmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChhcmcubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJnKSkge1xuICAgIHJldHVybiBhcmc7XG4gIH1cblxuICBjb25zdCBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUiA9IDI7XG4gIGxldCByZXN1bHQgPSAnXCInO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBudW1CYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmcubGVuZ3RoICYmIGFyZ1tpXSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpKys7XG4gICAgICBudW1CYWNrc2xhc2hlcysrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBhcmcubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgKz0gJ1xcXFwnLnJlcGVhdChudW1CYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGNoID0gYXJnLmNoYXJBdChpKTtcbiAgICBpZiAoY2ggPT09ICdcIicpIHtcbiAgICAgIHJlc3VsdCArPSBgJHsnXFxcXCcucmVwZWF0KG51bUJhY2tzbGFzaGVzICogQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgKyAxKX1cImA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSAnXFxcXCcucmVwZWF0KG51bUJhY2tzbGFzaGVzKSArIGNoO1xuICAgIH1cbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG5mdW5jdGlvbiBjbWRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kTGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmRMaW5lLnJlcGxhY2UoQ01EX01FVEFfUkUsICdeJCYnKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBiYXRjaGVkIGNvbW1hbmRzIHNlcXVlbnRpYWxseSBhbmQgY29uY2F0ZW5hdGVzIHN0ZG91dC5cbiAqXG4gKiBAcGFyYW0gYmFzZUNvbW1hbmQgLSBUaGUgYmFzZSBjb21tYW5kIHdpdGhvdXQgYmF0Y2hlZCBhcmdzLlxuICogQHBhcmFtIGJhdGNoZXMgLSBUaGUgYmF0Y2hlcyBvZiBhcmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJhdGNoZXMoYmFzZUNvbW1hbmQ6IHN0cmluZywgYmF0Y2hlczogc3RyaW5nW11bXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCByZXN1bHRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgIGNvbnN0IGJhdGNoQ29tbWFuZCA9IGAke2Jhc2VDb21tYW5kfSAke2JhdGNoLmpvaW4oJyAnKX1gO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNTdHJpbmcoYmF0Y2hDb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgcmV0dXJuIHsgZXhpdENvZGU6IDAsIGV4aXRTaWduYWw6IG51bGwsIHN0ZGVycjogJycsIHN0ZG91dDogcmVzdWx0cy5qb2luKCdcXG4nKSB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgbWF4IGNvbW1hbmQgbGluZSBsZW5ndGguXG4gKlxuICogQHJldHVybnMgVGhlIG1heCBjb21tYW5kIGxlbmd0aCBpbiBjaGFyYWN0ZXJzLlxuICovXG5mdW5jdGlvbiBnZXRNYXhDb21tYW5kTGVuZ3RoKCk6IG51bWJlciB7XG4gIGNvbnN0IFdJTkRPV1NfTUFYX0NPTU1BTkRfTEVOR1RIID0gODE5MTtcbiAgY29uc3QgVU5JWF9NQVhfQ09NTUFORF9MRU5HVEggPSAxMzEwNzI7XG4gIHJldHVybiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gV0lORE9XU19NQVhfQ09NTUFORF9MRU5HVEggOiBVTklYX01BWF9DT01NQU5EX0xFTkdUSDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGEgY29tbWFuZCBhcnJheSB0aGF0IG1heSBjb250YWluIGFuIHtAbGluayBFeGVjQXJnfS5cbiAqIFJldHVybnMgYSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIG5lZWRlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGNvbW1hbmRcbiAqIGhhcyBubyBFeGVjQXJnIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LlxuICpcbiAqIEBwYXJhbSBwYXJ0cyAtIFRoZSBjb21tYW5kIHBhcnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIGhhbmRsZWQsIG9yIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBoYW5kbGVCYXRjaGVkQ29tbWFuZChwYXJ0czogQ29tbWFuZFBhcnRbXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJncyA9IHBhcnRzLmZpbHRlcihpc0V4ZWNBcmcpO1xuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ09ubHkgb25lIEV4ZWNBcmcgd2l0aCBiYXRjaGVkQXJncyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZyA9IGV4ZWNBcmdzWzBdO1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWx3YXlzIHRydXRoeSBhZnRlciB0aGUgbGVuZ3RoIGNoZWNrIGFib3ZlLiAqL1xuICBpZiAoIWV4ZWNBcmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZy5iYXRjaGVkQXJncy5qb2luKCcgJyl9YDtcbiAgaWYgKGZ1bGxDb21tYW5kLmxlbmd0aCA8PSBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoZnVsbENvbW1hbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgY29uc3QgYmF0Y2hlczogc3RyaW5nW11bXSA9IFtdO1xuICBsZXQgY3VycmVudEJhdGNoOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXJnIG9mIGV4ZWNBcmcuYmF0Y2hlZEFyZ3MpIHtcbiAgICBjb25zdCB0ZW50YXRpdmUgPSBgJHtiYXNlQ29tbWFuZH0gJHtbLi4uY3VycmVudEJhdGNoLCBhcmddLmpvaW4oJyAnKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmcubGVuZ3RoKX0gY2hhcnMpIHBsdXMgdGhlIGJhc2UgY29tbWFuZCAoJHtTdHJpbmcoYmFzZUNvbW1hbmQubGVuZ3RoKX0gY2hhcnMpIGV4Y2VlZHMgdGhlIG1heCBjb21tYW5kIGxlbmd0aCAoJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9KS5gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gICAgICBjdXJyZW50QmF0Y2ggPSBbYXJnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEJhdGNoLnB1c2goYXJnKTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJncyBpcyBub24tZW1wdHkgYXQgdGhpcyBwb2ludC4gKi9cbiAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPiAwKSB7XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgfVxuXG4gIHJldHVybiBleGVjdXRlQmF0Y2hlcyhiYXNlQ29tbWFuZCwgYmF0Y2hlcywgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgY29tbWFuZCBwYXJ0IGlzIGFuIHtAbGluayBFeGVjQXJnfS5cbiAqXG4gKiBAcGFyYW0gcGFydCAtIFRoZSBjb21tYW5kIHBhcnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwYXJ0IGlzIGFuIEV4ZWNBcmcuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZyhwYXJ0OiBDb21tYW5kUGFydCk6IHBhcnQgaXMgRXhlY0FyZyB7XG4gIHJldHVybiB0eXBlb2YgcGFydCA9PT0gJ29iamVjdCcgJiYgJ2JhdGNoZWRBcmdzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCB3aGVuIHRoZSByYXcgYXJncyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2Vzc1xuICogZGlyZWN0bHkgd2l0aG91dCBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgYXJncyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaFxuICogYXZvaWRzIGFsbCBgY21kLmV4ZWAgcXVvdGluZy9lc2NhcGluZyBpc3N1ZXMgKG5lc3RlZCBxdW90ZXMsIG1ldGFjaGFyYWN0ZXJzLFxuICogbmV3bGluZXMgaW4gYXJncywgZXRjLikuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSByYXdBcmdzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLlxuICogQHJldHVybnMgVGhlIHNwYXduZWQgY2hpbGQgcHJvY2Vzcy5cbiAqL1xuZnVuY3Rpb24gc3Bhd25WaWFTaGVsbChjb21tYW5kOiBzdHJpbmcsIGN3ZDogc3RyaW5nLCByYXdBcmdzPzogc3RyaW5nW10pOiBDaGlsZFByb2Nlc3NXaXRob3V0TnVsbFN0cmVhbXMge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiByYXdBcmdzKSB7XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmFyZ3NdID0gcmF3QXJncztcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWx3YXlzIHRydXRoeTsgcmF3QXJncyBjb21lcyBmcm9tIHRoZSBhcnJheSBwYXRoIHdoaWNoIGhhcyBhdCBsZWFzdCBvbmUgZWxlbWVudC4gKi9cbiAgICBpZiAoIXByb2dyYW0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZCBhcnJheSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIHJldHVybiBzcGF3bihwcm9ncmFtLCBhcmdzLCB7XG4gICAgICBjd2QsXG4gICAgICBlbnY6IENISUxEX0VOVixcbiAgICAgIHN0ZGlvOiAncGlwZSdcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInICYmIGNvbW1hbmQuaW5jbHVkZXMoJ1xcbicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kcyBjb250YWluaW5nIG5ld2xpbmVzIGNhbm5vdCBiZSBleGVjdXRlZCB0aHJvdWdoIGNtZC5leGUgb24gV2luZG93cy4gUGFzcyBhbiBhcmd1bWVudCBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLicpO1xuICB9XG5cbiAgY29uc3Qgc2hlbGxDb21tYW5kID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IGNtZEVzY2FwZUNvbW1hbmRMaW5lKGNvbW1hbmQpIDogY29tbWFuZDtcbiAgcmV0dXJuIHNwYXduKHNoZWxsQ29tbWFuZCwgW10sIHtcbiAgICBjd2QsXG4gICAgZW52OiBDSElMRF9FTlYsXG4gICAgc2hlbGw6IHRydWUsXG4gICAgc3RkaW86ICdwaXBlJ1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGEgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZyBpZiBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHN1ZmZpeCB0byByZW1vdmUuXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRyaW1FbmQoc3RyOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHN0ci5lbmRzV2l0aChzdWZmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZSgwLCAtc3VmZml4Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxnQ0FBc0I7QUFDdEIsMEJBQW9CO0FBMEhiLFNBQVMsS0FBSyxTQUFpQyxVQUFzQixDQUFDLEdBQWlDO0FBQzVHLE1BQUksTUFBTSxRQUFRLE9BQU8sR0FBRztBQUMxQixVQUFNLGNBQWMscUJBQXFCLFNBQVMsT0FBTztBQUN6RCxRQUFJLGFBQWE7QUFDZixhQUFPO0FBQUEsSUFDVDtBQUNBLFVBQU0sT0FBTyxRQUFRLE9BQU8sQ0FBQyxTQUF5QixPQUFPLFNBQVMsUUFBUTtBQUM5RSxVQUFNLGNBQWMsY0FBYyxJQUFJO0FBRXRDLFVBQU1BLG9CQUFtQixvQkFBb0I7QUFDN0MsUUFBSSxZQUFZLFNBQVNBLG1CQUFrQjtBQUN6QyxhQUFPLFFBQVE7QUFBQSxRQUNiLElBQUk7QUFBQSxVQUNGLDZCQUE2QixPQUFPLFlBQVksTUFBTSxDQUFDLGVBQWUsT0FBT0EsaUJBQWdCLENBQUMsT0FBTyxvQkFBQUMsUUFBUSxRQUFRO0FBQUEsUUFDdkg7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFdBQU8sV0FBVyxhQUFhLFNBQVMsSUFBSTtBQUFBLEVBQzlDO0FBRUEsUUFBTSxtQkFBbUIsb0JBQW9CO0FBQzdDLE1BQUksUUFBUSxTQUFTLGtCQUFrQjtBQUNyQyxXQUFPLFFBQVE7QUFBQSxNQUNiLElBQUk7QUFBQSxRQUNGLDZCQUE2QixPQUFPLFFBQVEsTUFBTSxDQUFDLGVBQWUsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLG9CQUFBQSxRQUFRLFFBQVE7QUFBQSxNQUNuSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTyxXQUFXLFNBQVMsT0FBTztBQUNwQztBQVdBLFNBQVMsV0FBVyxTQUFpQixVQUFzQixDQUFDLEdBQUcsU0FBa0Q7QUFDL0csUUFBTTtBQUFBLElBQ0osTUFBTSxvQkFBQUEsUUFBUSxJQUFJO0FBQUEsSUFDbEIsU0FBUyxRQUFRO0FBQUEsSUFDakIsc0JBQXNCLGlCQUFpQjtBQUFBLElBQ3ZDLHVCQUF1QjtBQUFBLElBQ3ZCLFFBQVE7QUFBQSxJQUNSO0FBQUEsRUFDRixJQUFJO0FBRUosU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDdEMsVUFBTSxRQUFRLGNBQWMsU0FBUyxLQUFLLE9BQU87QUFDakQsUUFBSTtBQUVKLFFBQUksMEJBQTBCLFFBQVc7QUFDdkMscUJBQWUsV0FBVyxNQUFNO0FBQzlCLGNBQU0sS0FBSztBQUNYLGVBQU8sSUFBSSxNQUFNLDJCQUEyQixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQztBQUFBLE1BQ2hGLEdBQUcscUJBQXFCO0FBQUEsSUFDMUI7QUFFQSxRQUFJLFNBQVM7QUFDYixRQUFJLFNBQVM7QUFFYixVQUFNLE1BQU0sTUFBTSxLQUFLO0FBQ3ZCLFVBQU0sTUFBTSxJQUFJO0FBRWhCLFVBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxTQUFpQjtBQUN4QyxVQUFJLENBQUMsT0FBTztBQUNWLDRCQUFBQSxRQUFRLE9BQU8sTUFBTSxJQUFJO0FBQUEsTUFDM0I7QUFDQSxnQkFBVSxLQUFLLFNBQVMsT0FBTztBQUFBLElBQ2pDLENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxPQUFPLE1BQU07QUFDM0IsZUFBUyxRQUFRLFFBQVEsSUFBSTtBQUFBLElBQy9CLENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBaUI7QUFDeEMsVUFBSSxDQUFDLE9BQU87QUFDViw0QkFBQUEsUUFBUSxPQUFPLE1BQU0sSUFBSTtBQUFBLE1BQzNCO0FBQ0EsZ0JBQVUsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUNqQyxDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNO0FBQzNCLGVBQVMsUUFBUSxRQUFRLElBQUk7QUFBQSxJQUMvQixDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxVQUFVLGVBQWU7QUFDMUMsVUFBSSxjQUFjO0FBQ2hCLHFCQUFhLFlBQVk7QUFBQSxNQUMzQjtBQUNBLFVBQUksYUFBYSxLQUFLLENBQUMsZ0JBQWdCO0FBQ3JDLGVBQU8sSUFBSSxNQUFNLGlDQUFpQyxXQUFXLE9BQU8sUUFBUSxJQUFJLFFBQVE7QUFBQSxFQUFLLE1BQU0sRUFBRSxDQUFDO0FBQ3RHO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxzQkFBc0I7QUFDekIsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRjtBQUNBLGNBQVE7QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQ3pCLFVBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsZUFBTyxHQUFHO0FBQ1Y7QUFBQSxNQUNGO0FBRUEsVUFBSSxDQUFDLHNCQUFzQjtBQUN6QixnQkFBUSxNQUFNO0FBQ2Q7QUFBQSxNQUNGO0FBRUEsY0FBUTtBQUFBLFFBQ04sVUFBVTtBQUFBLFFBQ1YsWUFBWTtBQUFBLFFBQ1o7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFLQSxNQUFNLFlBQVk7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxHQUFHLG9CQUFBQSxRQUFRO0FBQ2I7QUFLQSxNQUFNLGNBQWM7QUFTYixTQUFTLGNBQWMsTUFBd0I7QUFDcEQsU0FBTyxLQUFLLElBQUksQ0FBQyxRQUFRLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO0FBQ25EO0FBU0EsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLE1BQUksSUFBSSxTQUFTLEtBQUssQ0FBQyxjQUFjLEtBQUssR0FBRyxHQUFHO0FBQzlDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSwwQkFBMEI7QUFDaEMsTUFBSSxTQUFTO0FBQ2IsV0FBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsS0FBSztBQUNuQyxRQUFJLGlCQUFpQjtBQUNyQixXQUFPLElBQUksSUFBSSxVQUFVLElBQUksQ0FBQyxNQUFNLE1BQU07QUFDeEM7QUFDQTtBQUFBLElBQ0Y7QUFFQSxRQUFJLE1BQU0sSUFBSSxRQUFRO0FBQ3BCLGdCQUFVLEtBQUssT0FBTyxpQkFBaUIsdUJBQXVCO0FBQzlEO0FBQUEsSUFDRjtBQUVBLFVBQU0sS0FBSyxJQUFJLE9BQU8sQ0FBQztBQUN2QixRQUFJLE9BQU8sS0FBSztBQUNkLGdCQUFVLEdBQUcsS0FBSyxPQUFPLGlCQUFpQiwwQkFBMEIsQ0FBQyxDQUFDO0FBQUEsSUFDeEUsT0FBTztBQUNMLGdCQUFVLEtBQUssT0FBTyxjQUFjLElBQUk7QUFBQSxJQUMxQztBQUFBLEVBQ0Y7QUFFQSxZQUFVO0FBQ1YsU0FBTztBQUNUO0FBU0EsU0FBUyxxQkFBcUIsYUFBNkI7QUFDekQsU0FBTyxZQUFZLFFBQVEsYUFBYSxLQUFLO0FBQy9DO0FBVUEsZUFBZSxlQUFlLGFBQXFCLFNBQXFCLFNBQW1EO0FBQ3pILFFBQU0sVUFBb0IsQ0FBQztBQUUzQixhQUFXLFNBQVMsU0FBUztBQUMzQixVQUFNLGVBQWUsR0FBRyxXQUFXLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQztBQUN0RCxVQUFNLFNBQVMsTUFBTSxXQUFXLGNBQWMsT0FBTztBQUNyRCxRQUFJLE9BQU8sV0FBVyxVQUFVO0FBQzlCLGNBQVEsS0FBSyxNQUFNO0FBQUEsSUFDckI7QUFBQSxFQUNGO0FBRUEsTUFBSSxRQUFRLHNCQUFzQjtBQUNoQyxXQUFPLEVBQUUsVUFBVSxHQUFHLFlBQVksTUFBTSxRQUFRLElBQUksUUFBUSxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQUEsRUFDakY7QUFFQSxTQUFPLFFBQVEsS0FBSyxJQUFJO0FBQzFCO0FBT0EsU0FBUyxzQkFBOEI7QUFDckMsUUFBTSw2QkFBNkI7QUFDbkMsUUFBTSwwQkFBMEI7QUFDaEMsU0FBTyxvQkFBQUEsUUFBUSxhQUFhLFVBQVUsNkJBQTZCO0FBQ3JFO0FBV0EsU0FBUyxxQkFBcUIsT0FBc0IsU0FBK0Q7QUFDakgsUUFBTSxXQUFXLE1BQU0sT0FBTyxTQUFTO0FBQ3ZDLE1BQUksU0FBUyxXQUFXLEdBQUc7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLFNBQVMsU0FBUyxHQUFHO0FBQ3ZCLFdBQU8sUUFBUSxPQUFPLElBQUksTUFBTSwwREFBMEQsQ0FBQztBQUFBLEVBQzdGO0FBRUEsUUFBTSxVQUFVLFNBQVMsQ0FBQztBQUUxQixNQUFJLENBQUMsU0FBUztBQUNaLFdBQU87QUFBQSxFQUNUO0FBR0EsUUFBTSxjQUFjLE1BQU0sT0FBTyxDQUFDLFNBQXlCLE9BQU8sU0FBUyxRQUFRO0FBQ25GLFFBQU0sY0FBYyxjQUFjLFdBQVc7QUFDN0MsUUFBTSxtQkFBbUIsb0JBQW9CO0FBRTdDLFFBQU0sY0FBYyxHQUFHLFdBQVcsSUFBSSxRQUFRLFlBQVksS0FBSyxHQUFHLENBQUM7QUFDbkUsTUFBSSxZQUFZLFVBQVUsa0JBQWtCO0FBQzFDLFdBQU8sV0FBVyxhQUFhLE9BQU87QUFBQSxFQUN4QztBQUVBLFFBQU0sVUFBc0IsQ0FBQztBQUM3QixNQUFJLGVBQXlCLENBQUM7QUFFOUIsYUFBVyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxVQUFNLFlBQVksR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLGNBQWMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDO0FBQ3BFLFFBQUksVUFBVSxTQUFTLGtCQUFrQjtBQUN2QyxVQUFJLGFBQWEsV0FBVyxHQUFHO0FBQzdCLGVBQU8sUUFBUTtBQUFBLFVBQ2IsSUFBSTtBQUFBLFlBQ0YseURBQXlELE9BQU8sSUFBSSxNQUFNLENBQUMsa0NBQWtDLE9BQU8sWUFBWSxNQUFNLENBQUMsMkNBQTJDLE9BQU8sZ0JBQWdCLENBQUM7QUFBQSxVQUM1TTtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsY0FBUSxLQUFLLFlBQVk7QUFDekIscUJBQWUsQ0FBQyxHQUFHO0FBQUEsSUFDckIsT0FBTztBQUNMLG1CQUFhLEtBQUssR0FBRztBQUFBLElBQ3ZCO0FBQUEsRUFDRjtBQUVBLE1BQUksYUFBYSxTQUFTLEdBQUc7QUFFM0IsWUFBUSxLQUFLLFlBQVk7QUFBQSxFQUMzQjtBQUVBLFNBQU8sZUFBZSxhQUFhLFNBQVMsT0FBTztBQUNyRDtBQVFBLFNBQVMsVUFBVSxNQUFvQztBQUNyRCxTQUFPLE9BQU8sU0FBUyxZQUFZLGlCQUFpQjtBQUN0RDtBQWlCQSxTQUFTLGNBQWMsU0FBaUIsS0FBYSxTQUFvRDtBQUN2RyxNQUFJLG9CQUFBQSxRQUFRLGFBQWEsV0FBVyxTQUFTO0FBQzNDLFVBQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJO0FBRTNCLFFBQUksQ0FBQyxTQUFTO0FBQ1osWUFBTSxJQUFJLE1BQU0saUNBQWlDO0FBQUEsSUFDbkQ7QUFFQSxlQUFPLGlDQUFNLFNBQVMsTUFBTTtBQUFBLE1BQzFCO0FBQUEsTUFDQSxLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsSUFDVCxDQUFDO0FBQUEsRUFDSDtBQUVBLE1BQUksb0JBQUFBLFFBQVEsYUFBYSxXQUFXLFFBQVEsU0FBUyxJQUFJLEdBQUc7QUFDMUQsVUFBTSxJQUFJLE1BQU0seUhBQXlIO0FBQUEsRUFDM0k7QUFFQSxRQUFNLGVBQWUsb0JBQUFBLFFBQVEsYUFBYSxVQUFVLHFCQUFxQixPQUFPLElBQUk7QUFDcEYsYUFBTyxpQ0FBTSxjQUFjLENBQUMsR0FBRztBQUFBLElBQzdCO0FBQUEsSUFDQSxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0g7QUFTQSxTQUFTLFFBQVEsS0FBYSxRQUF3QjtBQUNwRCxNQUFJLElBQUksU0FBUyxNQUFNLEdBQUc7QUFDeEIsV0FBTyxJQUFJLE1BQU0sR0FBRyxDQUFDLE9BQU8sTUFBTTtBQUFBLEVBQ3BDO0FBQ0EsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJtYXhDb21tYW5kTGVuZ3RoIiwgInByb2Nlc3MiXQp9Cg==
274
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V4ZWMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJndW1lbnR9IHdpdGggYmF0Y2hlZCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIENvbW1hbmRQYXJ0ID0gRXhlY0FyZ3VtZW50IHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY29tbWFuZCBhcmd1bWVudCB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBjb21tYW5kQXJndW1lbnRzIHRvIGJlIGJhdGNoZWQuXG4gKiBJZiB0aGUgZXhwYW5kZWQgY29tbWFuZCBleGNlZWRzIHRoZSBwbGF0Zm9ybSdzIG1heCBjb21tYW5kIGxlbmd0aCxcbiAqIHRoZSBiYXRjaGVkIGNvbW1hbmRBcmd1bWVudHMgYXJlIHNwbGl0IGludG8gc2VxdWVudGlhbCBleGVjdXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNBcmd1bWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3VtZW50czogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWN9IHRoYXQgcmV0dXJuIGRldGFpbGVkIHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0RldGFpbGVkT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb24ge1xuICAvKipcbiAgICogTXVzdCBiZSBgdHJ1ZWAgdG8gcmVjZWl2ZSBkZXRhaWxlZCByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM6IHRydWU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZElnbm9yZUV4aXRDb2RlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgYHRydWVgLCByZXR1cm5zIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFuIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gVGhlIGNoaWxkIHByb2Nlc3MgaXMga2lsbGVkIGlmIGl0IGV4Y2VlZHMgdGhpcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHJlc3VsdCBvZiB7QGxpbmsgZXhlY30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBBbiBleGl0IGNvZGUgb2YgdGhlIGNvbW1hbmQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IHRoZSBwcm9jZXNzIGRpZCBub3QgZXhpdCBub3JtYWxseS5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgcHJvY2VzcyB0byBiZSB0ZXJtaW5hdGVkLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCBubyBzaWduYWwgd2FzIHJlY2VpdmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdFNpZ25hbDogTm9kZUpTLlNpZ25hbHMgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkZXJyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRvdXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZXhlY30gdGhhdCByZXR1cm4gb25seSBzdGRvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY1NpbXBsZU9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9uIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYGZhbHNlYCBvciBvbWl0dGVkIHRvIHJlY2VpdmUgb25seSBzdGRvdXQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlscz86IGZhbHNlO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zPzogRXhlY1NpbXBsZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBFeGVjUmVzdWx0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY0RldGFpbGVkT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdD47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kIG9yIGFuIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9uID0ge30pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29tbWFuZCkpIHtcbiAgICBjb25zdCBiYXRjaFJlc3VsdCA9IGhhbmRsZUJhdGNoZWRDb21tYW5kKGNvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmIChiYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBjb21tYW5kQXJndW1lbnRzID0gY29tbWFuZC5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICAgIGNvbnN0IGNvbW1hbmRMaW5lID0gdG9Db21tYW5kTGluZShjb21tYW5kQXJndW1lbnRzKTtcblxuICAgIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG4gICAgaWYgKGNvbW1hbmRMaW5lLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgKCR7U3RyaW5nKGNvbW1hbmRMaW5lLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciB1c2luZyBFeGVjQXJndW1lbnQgd2l0aCBiYXRjaGVkQXJndW1lbnRzLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kTGluZSwgb3B0aW9ucywgY29tbWFuZEFyZ3VtZW50cyk7XG4gIH1cblxuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICBpZiAoY29tbWFuZC5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciB1c2luZyBFeGVjQXJndW1lbnQgd2l0aCBiYXRjaGVkQXJndW1lbnRzLmBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWNTdHJpbmcoY29tbWFuZCwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBzaW5nbGUgc3RyaW5nIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCBzdHJpbmcuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmF3QXJndW1lbnRzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLCB1c2VkIGJ5IHRoZVxuICogICBkaXJlY3Qtc3Bhd24gZmFsbGJhY2sgb24gV2luZG93cyB3aGVuIHRoZSBjb21tYW5kIGNvbnRhaW5zIG5ld2xpbmVzLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBleGVjU3RyaW5nKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbiA9IHt9LCByYXdBcmd1bWVudHM/OiBzdHJpbmdbXSk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgY3dkID0gcHJvY2Vzcy5jd2QoKSxcbiAgICBpc1F1aWV0OiBxdWlldCA9IGZhbHNlLFxuICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiBpZ25vcmVFeGl0Q29kZSA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVEZXRhaWxzID0gZmFsc2UsXG4gICAgc3RkaW4gPSAnJyxcbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduVmlhU2hlbGwoY29tbWFuZCwgY3dkLCByYXdBcmd1bWVudHMpO1xuICAgIGxldCB0aW1lb3V0VGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2hpbGQua2lsbCgpO1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIHRpbWVkIG91dCBhZnRlciAke1N0cmluZyh0aW1lb3V0SW5NaWxsaXNlY29uZHMpfW1zYCkpO1xuICAgICAgfSwgdGltZW91dEluTWlsbGlzZWNvbmRzKTtcbiAgICB9XG5cbiAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgbGV0IHN0ZGVyciA9ICcnO1xuXG4gICAgY2hpbGQuc3RkaW4ud3JpdGUoc3RkaW4pO1xuICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZG91dCArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRvdXQgPSB0cmltRW5kKHN0ZG91dCwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZGVyciArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRlcnIgPSB0cmltRW5kKHN0ZGVyciwgJ1xcbicpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlLCBleGl0U2lnbmFsKSA9PiB7XG4gICAgICBpZiAodGltZW91dFRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgICAgaWYgKGV4aXRDb2RlICE9PSAwICYmICFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlID8gU3RyaW5nKGV4aXRDb2RlKSA6ICcobnVsbCknfVxcbiR7c3RkZXJyfWApKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlLFxuICAgICAgICBleGl0U2lnbmFsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIGV4aXRTaWduYWw6IG51bGwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy5cbiAqL1xuY29uc3QgQ0hJTERfRU5WID0ge1xuICBERUJVR19DT0xPUlM6ICcxJyxcbiAgLi4ucHJvY2Vzcy5lbnZcbn07XG5cbi8qKlxuICogTWF0Y2hlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIGBeYC1lc2NhcGVkLlxuICovXG5jb25zdCBDTURfTUVUQV9SRSA9IC9bKCklIV5cIjw+JnxdL2c7XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQtbGluZSBzdHJpbmdcbiAqIHVzaW5nIHRoZSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBjb252ZW50aW9uLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kQXJndW1lbnRzIC0gVGhlIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZC1saW5lIGludm9jYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NvbW1hbmRMaW5lKGNvbW1hbmRBcmd1bWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmRBcmd1bWVudHMubWFwKChhcmd1bWVudCkgPT4gYXJndlF1b3RlKGFyZ3VtZW50KSkuam9pbignICcpO1xufVxuXG4vKipcbiAqIFF1b3RlcyBhIHNpbmdsZSBhcmd1bWVudCBzbyB0aGF0IGBDb21tYW5kTGluZVRvQXJndldgIHdpbGwgZGVjb2RlIGl0XG4gKiB1bmNoYW5nZWQuXG4gKlxuICogQHBhcmFtIGFyZ3VtZW50IC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZ3VtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoYXJndW1lbnQubGVuZ3RoID4gMCAmJiAhL1tcXHNcXHRcXG5cXHZcIl0vLnRlc3QoYXJndW1lbnQpKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50O1xuICB9XG5cbiAgY29uc3QgQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IgPSAyO1xuICBsZXQgcmVzdWx0ID0gJ1wiJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3VtZW50Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGxldCBudW1iZXJCYWNrc2xhc2hlcyA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgYXJndW1lbnQubGVuZ3RoICYmIGFyZ3VtZW50W2luZGV4XSA9PT0gJ1xcXFwnKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgbnVtYmVyQmFja3NsYXNoZXMrKztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPT09IGFyZ3VtZW50Lmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtYmVyQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUik7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBjaCA9IGFyZ3VtZW50LmNoYXJBdChpbmRleCk7XG4gICAgcmVzdWx0ICs9IGNoID09PSAnXCInID8gYCR7J1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcyAqIEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SICsgMSl9XCJgIDogJ1xcXFwnLnJlcGVhdChudW1iZXJCYWNrc2xhc2hlcykgKyBjaDtcbiAgfVxuXG4gIHJlc3VsdCArPSAnXCInO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEVzY2FwZXMgYGNtZC5leGVgIG1ldGFjaGFyYWN0ZXJzIHdpdGggYF5gIHNvIHRoYXQgYGNtZC5leGVgIHBhc3NlcyB0aGVtXG4gKiB0aHJvdWdoIGxpdGVyYWxseS5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZExpbmUgLSBUaGUgYWxyZWFkeS1xdW90ZWQgY29tbWFuZCBsaW5lIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBhbGwgY21kIG1ldGFjaGFyYWN0ZXJzIGBeYC1lc2NhcGVkLlxuICovXG5mdW5jdGlvbiBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZExpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb21tYW5kTGluZS5yZXBsYWNlQWxsKENNRF9NRVRBX1JFLCAnXiQmJyk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYmF0Y2hlZCBjb21tYW5kcyBzZXF1ZW50aWFsbHkgYW5kIGNvbmNhdGVuYXRlcyBzdGRvdXQuXG4gKlxuICogQHBhcmFtIGJhc2VDb21tYW5kIC0gVGhlIGJhc2UgY29tbWFuZCB3aXRob3V0IGJhdGNoZWQgY29tbWFuZEFyZ3VtZW50cy5cbiAqIEBwYXJhbSBiYXRjaGVzIC0gVGhlIGJhdGNoZXMgb2YgY29tbWFuZEFyZ3VtZW50cy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kOiBzdHJpbmcsIGJhdGNoZXM6IHN0cmluZ1tdW10sIG9wdGlvbnM6IEV4ZWNPcHRpb24pOiBQcm9taXNlPEV4ZWNSZXN1bHQgfCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0czogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGJhdGNoIG9mIGJhdGNoZXMpIHtcbiAgICBjb25zdCBiYXRjaENvbW1hbmQgPSBgJHtiYXNlQ29tbWFuZH0gJHtiYXRjaC5qb2luKCcgJyl9YDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjU3RyaW5nKGJhdGNoQ29tbWFuZCwgb3B0aW9ucyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgIHJldHVybiB7IGV4aXRDb2RlOiAwLCBleGl0U2lnbmFsOiBudWxsLCBzdGRlcnI6ICcnLCBzdGRvdXQ6IHJlc3VsdHMuam9pbignXFxuJykgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBsYXRmb3JtLXNwZWNpZmljIG1heCBjb21tYW5kIGxpbmUgbGVuZ3RoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtYXggY29tbWFuZCBsZW5ndGggaW4gY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF4Q29tbWFuZExlbmd0aCgpOiBudW1iZXIge1xuICBjb25zdCBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA9IDgxOTE7XG4gIGNvbnN0IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIID0gMTMxXzA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKiBSZXR1cm5zIGEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBuZWVkZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kXG4gKiBoYXMgbm8gRXhlY0FyZ3VtZW50IGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LlxuICpcbiAqIEBwYXJhbSBwYXJ0cyAtIFRoZSBjb21tYW5kIHBhcnRzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgZXhlYyBvcHRpb25zLlxuICogQHJldHVybnMgQSBQcm9taXNlIGlmIGJhdGNoaW5nIGlzIGhhbmRsZWQsIG9yIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBoYW5kbGVCYXRjaGVkQ29tbWFuZChwYXJ0czogQ29tbWFuZFBhcnRbXSwgb3B0aW9uczogRXhlY09wdGlvbik6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJndW1lbnRzID0gcGFydHMuZmlsdGVyKGlzRXhlY0FyZ3VtZW50KTtcbiAgaWYgKGV4ZWNBcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT25seSBvbmUgRXhlY0FyZ3VtZW50IHdpdGggYmF0Y2hlZEFyZ3VtZW50cyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZ3VtZW50ID0gZXhlY0FyZ3VtZW50c1swXTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnV0aHkgYWZ0ZXIgdGhlIGxlbmd0aCBjaGVjayBhYm92ZS4gKi9cbiAgaWYgKCFleGVjQXJndW1lbnQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZ3VtZW50LmJhdGNoZWRBcmd1bWVudHMuam9pbignICcpfWA7XG4gIGlmIChmdWxsQ29tbWFuZC5sZW5ndGggPD0gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBleGVjU3RyaW5nKGZ1bGxDb21tYW5kLCBvcHRpb25zKTtcbiAgfVxuXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZ3VtZW50IG9mIGV4ZWNBcmd1bWVudC5iYXRjaGVkQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7Wy4uLmN1cnJlbnRCYXRjaCwgYXJndW1lbnRdLmpvaW4oJyAnKX1gO1xuICAgIGlmICh0ZW50YXRpdmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgaWYgKGN1cnJlbnRCYXRjaC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3Qgc3BsaXQgY29tbWFuZCBpbnRvIGJhdGNoZXM6IGEgc2luZ2xlIGFyZ3VtZW50ICgke1N0cmluZyhhcmd1bWVudC5sZW5ndGgpfSBjaGFycykgcGx1cyB0aGUgYmFzZSBjb21tYW5kICgke1N0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpfSBjaGFycykgZXhjZWVkcyB0aGUgbWF4IGNvbW1hbmQgbGVuZ3RoICgke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0pLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgICAgIGN1cnJlbnRCYXRjaCA9IFthcmd1bWVudF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZ3VtZW50KTtcbiAgICB9XG4gIH1cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEFsd2F5cyB0cnVlIGFmdGVyIHRoZSBsb29wOyBiYXRjaGVkQXJndW1lbnRzIGlzIG5vbi1lbXB0eSBhdCB0aGlzIHBvaW50LiAqL1xuICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kLCBiYXRjaGVzLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBjb21tYW5kIHBhcnQgaXMgYW4ge0BsaW5rIEV4ZWNBcmd1bWVudH0uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJndW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZ3VtZW50KHBhcnQ6IENvbW1hbmRQYXJ0KTogcGFydCBpcyBFeGVjQXJndW1lbnQge1xuICByZXR1cm4gdHlwZW9mIHBhcnQgPT09ICdvYmplY3QnICYmICdiYXRjaGVkQXJndW1lbnRzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCB3aGVuIHRoZSByYXcgY29tbWFuZEFyZ3VtZW50cyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2Vzc1xuICogZGlyZWN0bHkgd2l0aG91dCBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgY29tbWFuZEFyZ3VtZW50cyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaFxuICogYXZvaWRzIGFsbCBgY21kLmV4ZWAgcXVvdGluZy9lc2NhcGluZyBpc3N1ZXMgKG5lc3RlZCBxdW90ZXMsIG1ldGFjaGFyYWN0ZXJzLFxuICogbmV3bGluZXMgaW4gY29tbWFuZEFyZ3VtZW50cywgZXRjLikuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICogQHBhcmFtIGN3ZCAtIFRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSByYXdBcmd1bWVudHMgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnQgYXJyYXkgKGlmIGF2YWlsYWJsZSkuXG4gKiBAcmV0dXJucyBUaGUgc3Bhd25lZCBjaGlsZCBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzcGF3blZpYVNoZWxsKGNvbW1hbmQ6IHN0cmluZywgY3dkOiBzdHJpbmcsIHJhd0FyZ3VtZW50cz86IHN0cmluZ1tdKTogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgcmF3QXJndW1lbnRzKSB7XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmNvbW1hbmRBcmd1bWVudHNdID0gcmF3QXJndW1lbnRzO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbHdheXMgdHJ1dGh5OyByYXdBcmd1bWVudHMgY29tZXMgZnJvbSB0aGUgYXJyYXkgcGF0aCB3aGljaCBoYXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQuICovXG4gICAgaWYgKCFwcm9ncmFtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbW1hbmQgYXJyYXkgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICByZXR1cm4gc3Bhd24ocHJvZ3JhbSwgY29tbWFuZEFyZ3VtZW50cywge1xuICAgICAgY3dkLFxuICAgICAgZW52OiBDSElMRF9FTlYsXG4gICAgICBzdGRpbzogJ3BpcGUnXG4gICAgfSk7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBjb21tYW5kLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZHMgY29udGFpbmluZyBuZXdsaW5lcyBjYW5ub3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBjbWQuZXhlIG9uIFdpbmRvd3MuIFBhc3MgYW4gYXJndW1lbnQgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmluZy4nKTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjb21tYW5kRXNjYXBlQ29tbWFuZExpbmUoY29tbWFuZCkgOiBjb21tYW5kO1xuICByZXR1cm4gc3Bhd24oc2hlbGxDb21tYW5kLCBbXSwge1xuICAgIGN3ZCxcbiAgICBlbnY6IENISUxEX0VOVixcbiAgICBzaGVsbDogdHJ1ZSxcbiAgICBzdGRpbzogJ3BpcGUnXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYSBzdWZmaXggZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nIGlmIHByZXNlbnQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlLlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB0cmltRW5kKHZhbHVlOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlLmVuZHNXaXRoKHN1ZmZpeCkpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2Uo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
@@ -4,19 +4,19 @@
4
4
  * Contains utility functions for executing commands.
5
5
  */
6
6
  /**
7
- * A command part: either a plain string or an {@link ExecArg} with batched arguments.
7
+ * A command part: either a plain string or an {@link ExecArgument} with batched arguments.
8
8
  */
9
- export type CommandPart = ExecArg | string;
9
+ export type CommandPart = ExecArgument | string;
10
10
  /**
11
- * A command argument that contains a list of args to be batched.
11
+ * A command argument that contains a list of commandArguments to be batched.
12
12
  * If the expanded command exceeds the platform's max command length,
13
- * the batched args are split into sequential executions.
13
+ * the batched commandArguments are split into sequential executions.
14
14
  */
15
- export interface ExecArg {
15
+ export interface ExecArgument {
16
16
  /**
17
17
  * The arguments to batch.
18
18
  */
19
- readonly batchedArgs: readonly string[];
19
+ readonly batchedArguments: readonly string[];
20
20
  }
21
21
  /**
22
22
  * Options for {@link exec} that return detailed results.
@@ -48,7 +48,7 @@ export interface ExecOption {
48
48
  */
49
49
  readonly shouldIncludeDetails?: boolean;
50
50
  /**
51
- * An input to be passed to the command.
51
+ * An argument to be passed to the command.
52
52
  */
53
53
  readonly stdin?: string;
54
54
  /**
@@ -106,7 +106,7 @@ export declare function exec(command: CommandPart[] | string, options: ExecDetai
106
106
  * Converts an array of command-line arguments into a single command-line string
107
107
  * using the `CommandLineToArgvW` convention.
108
108
  *
109
- * @param args - The array of command-line arguments to convert.
109
+ * @param commandArguments - The array of command-line arguments to convert.
110
110
  * @returns A string representing the command-line invocation.
111
111
  */
112
- export declare function toCommandLine(args: string[]): string;
112
+ export declare function toCommandLine(commandArguments: string[]): string;
@@ -21,16 +21,16 @@ __export(function_expression_exports, {
21
21
  getFunctionExpressionString: () => getFunctionExpressionString
22
22
  });
23
23
  module.exports = __toCommonJS(function_expression_exports);
24
- function getFunctionExpressionString(fn) {
25
- const fnString = fn.toString();
26
- if (FUNCTION_EXPRESSION_RE.test(fnString)) {
27
- return fnString;
24
+ function getFunctionExpressionString(callback) {
25
+ const functionString = callback.toString();
26
+ if (FUNCTION_EXPRESSION_RE.test(functionString)) {
27
+ return functionString;
28
28
  }
29
- const asyncMatch = ASYNC_KEYWORD_RE.exec(fnString);
29
+ const asyncMatch = ASYNC_KEYWORD_RE.exec(functionString);
30
30
  if (asyncMatch) {
31
- return `async function ${fnString.slice(asyncMatch[0].length)}`;
31
+ return `async function ${functionString.slice(asyncMatch[0].length)}`;
32
32
  }
33
- return `function ${fnString}`;
33
+ return `function ${functionString}`;
34
34
  }
35
35
  const FUNCTION_EXPRESSION_RE = /^(?:function\b|async\b\s*(?:function\b|\()|\()/;
36
36
  const ASYNC_KEYWORD_RE = /^async\b\s*/;
@@ -38,4 +38,4 @@ const ASYNC_KEYWORD_RE = /^async\b\s*/;
38
38
  0 && (module.exports = {
39
39
  getFunctionExpressionString
40
40
  });
41
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLWV4cHJlc3Npb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKlxuICogYEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZygpYCBvbiBhIHNob3J0aGFuZCBtZXRob2QgbGlrZSBgeyBmbigpIHt9IH1gXG4gKiByZXR1cm5zIGBcImZuKCkge31cImAsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGV4cHJlc3Npb24uXG4gKiBUaGlzIGhlbHBlciBkZXRlY3RzIHRoYXQgZm9ybSBhbmQgcHJlZml4ZXMgaXQgd2l0aCBgZnVuY3Rpb24gYC5cbiAqXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHRoYXQgaXMgYSB2YWxpZCBmdW5jdGlvbiBleHByZXNzaW9uLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZS5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcoZm46IEZ1bmN0aW9uKTogc3RyaW5nIHtcbiAgY29uc3QgZm5TdHJpbmcgPSBmbi50b1N0cmluZygpO1xuXG4gIGlmIChGVU5DVElPTl9FWFBSRVNTSU9OX1JFLnRlc3QoZm5TdHJpbmcpKSB7XG4gICAgcmV0dXJuIGZuU3RyaW5nO1xuICB9XG5cbiAgY29uc3QgYXN5bmNNYXRjaCA9IEFTWU5DX0tFWVdPUkRfUkUuZXhlYyhmblN0cmluZyk7XG4gIGlmIChhc3luY01hdGNoKSB7XG4gICAgcmV0dXJuIGBhc3luYyBmdW5jdGlvbiAke2ZuU3RyaW5nLnNsaWNlKGFzeW5jTWF0Y2hbMF0ubGVuZ3RoKX1gO1xuICB9XG5cbiAgcmV0dXJuIGBmdW5jdGlvbiAke2ZuU3RyaW5nfWA7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBzdHJpbmdzIHRoYXQgYXJlIGFscmVhZHkgdmFsaWQgZnVuY3Rpb24gZXhwcmVzc2lvbnM6XG4gKiAtIGBmdW5jdGlvbiAuLi5gIChrZXl3b3JkLCBub3QgaWRlbnRpZmllciBsaWtlIGBmdW5jdGlvbjFgKVxuICogLSBgKGAgKGFycm93IGZ1bmN0aW9uKVxuICogLSBgYXN5bmNcXGJgIGZvbGxvd2VkIGJ5IGBmdW5jdGlvblxcYmAgb3IgYChgIChhc3luYyBmdW5jdGlvbi9hcnJvdylcbiAqL1xuY29uc3QgRlVOQ1RJT05fRVhQUkVTU0lPTl9SRSA9IC9eKD86ZnVuY3Rpb25cXGJ8YXN5bmNcXGJcXHMqKD86ZnVuY3Rpb25cXGJ8XFwoKXxcXCgpLztcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSBgYXN5bmNgIGtleXdvcmQgKHdvcmQgYm91bmRhcnksIG5vdCBgYXN5bmMxYCkgZm9sbG93ZWQgYnkgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAqIFVzZWQgdG8gc3RyaXAgdGhlIGBhc3luY2AgcHJlZml4IGZyb20gYXN5bmMgc2hvcnRoYW5kIG1ldGhvZHMgYmVmb3JlIHJlLWFkZGluZyBgYXN5bmMgZnVuY3Rpb25gLlxuICovXG5jb25zdCBBU1lOQ19LRVlXT1JEX1JFID0gL15hc3luY1xcYlxccyovO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCTyxTQUFTLDRCQUE0QixJQUFzQjtBQUNoRSxRQUFNLFdBQVcsR0FBRyxTQUFTO0FBRTdCLE1BQUksdUJBQXVCLEtBQUssUUFBUSxHQUFHO0FBQ3pDLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxhQUFhLGlCQUFpQixLQUFLLFFBQVE7QUFDakQsTUFBSSxZQUFZO0FBQ2QsV0FBTyxrQkFBa0IsU0FBUyxNQUFNLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztBQUFBLEVBQy9EO0FBRUEsU0FBTyxZQUFZLFFBQVE7QUFDN0I7QUFRQSxNQUFNLHlCQUF5QjtBQU0vQixNQUFNLG1CQUFtQjsiLAogICJuYW1lcyI6IFtdCn0K
41
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLWV4cHJlc3Npb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZ1bmN0aW9uIGludG8gYSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKlxuICogYEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZygpYCBvbiBhIHNob3J0aGFuZCBtZXRob2QgbGlrZSBgeyBjYWxsYmFjaygpIHt9IH1gXG4gKiByZXR1cm5zIGBcImNhbGxiYWNrKCkge31cImAsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGV4cHJlc3Npb24uXG4gKiBUaGlzIGhlbHBlciBkZXRlY3RzIHRoYXQgZm9ybSBhbmQgcHJlZml4ZXMgaXQgd2l0aCBgZnVuY3Rpb24gYC5cbiAqXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHRoYXQgaXMgYSB2YWxpZCBmdW5jdGlvbiBleHByZXNzaW9uLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIGBGdW5jdGlvbmAgdHlwZS5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcoY2FsbGJhY2s6IEZ1bmN0aW9uKTogc3RyaW5nIHtcbiAgY29uc3QgZnVuY3Rpb25TdHJpbmcgPSBjYWxsYmFjay50b1N0cmluZygpO1xuXG4gIGlmIChGVU5DVElPTl9FWFBSRVNTSU9OX1JFLnRlc3QoZnVuY3Rpb25TdHJpbmcpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uU3RyaW5nO1xuICB9XG5cbiAgY29uc3QgYXN5bmNNYXRjaCA9IEFTWU5DX0tFWVdPUkRfUkUuZXhlYyhmdW5jdGlvblN0cmluZyk7XG4gIGlmIChhc3luY01hdGNoKSB7XG4gICAgcmV0dXJuIGBhc3luYyBmdW5jdGlvbiAke2Z1bmN0aW9uU3RyaW5nLnNsaWNlKGFzeW5jTWF0Y2hbMF0ubGVuZ3RoKX1gO1xuICB9XG5cbiAgcmV0dXJuIGBmdW5jdGlvbiAke2Z1bmN0aW9uU3RyaW5nfWA7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBzdHJpbmdzIHRoYXQgYXJlIGFscmVhZHkgdmFsaWQgZnVuY3Rpb24gZXhwcmVzc2lvbnM6XG4gKiAtIGBmdW5jdGlvbiAuLi5gIChrZXl3b3JkLCBub3QgaWRlbnRpZmllciBsaWtlIGBmdW5jdGlvbjFgKVxuICogLSBgKGAgKGFycm93IGZ1bmN0aW9uKVxuICogLSBgYXN5bmNcXGJgIGZvbGxvd2VkIGJ5IGBmdW5jdGlvblxcYmAgb3IgYChgIChhc3luYyBmdW5jdGlvbi9hcnJvdylcbiAqL1xuY29uc3QgRlVOQ1RJT05fRVhQUkVTU0lPTl9SRSA9IC9eKD86ZnVuY3Rpb25cXGJ8YXN5bmNcXGJcXHMqKD86ZnVuY3Rpb25cXGJ8XFwoKXxcXCgpLztcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSBgYXN5bmNgIGtleXdvcmQgKHdvcmQgYm91bmRhcnksIG5vdCBgYXN5bmMxYCkgZm9sbG93ZWQgYnkgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAqIFVzZWQgdG8gc3RyaXAgdGhlIGBhc3luY2AgcHJlZml4IGZyb20gYXN5bmMgc2hvcnRoYW5kIG1ldGhvZHMgYmVmb3JlIHJlLWFkZGluZyBgYXN5bmMgZnVuY3Rpb25gLlxuICovXG5jb25zdCBBU1lOQ19LRVlXT1JEX1JFID0gL15hc3luY1xcYlxccyovO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCTyxTQUFTLDRCQUE0QixVQUE0QjtBQUN0RSxRQUFNLGlCQUFpQixTQUFTLFNBQVM7QUFFekMsTUFBSSx1QkFBdUIsS0FBSyxjQUFjLEdBQUc7QUFDL0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGFBQWEsaUJBQWlCLEtBQUssY0FBYztBQUN2RCxNQUFJLFlBQVk7QUFDZCxXQUFPLGtCQUFrQixlQUFlLE1BQU0sV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDckU7QUFFQSxTQUFPLFlBQVksY0FBYztBQUNuQztBQVFBLE1BQU0seUJBQXlCO0FBTS9CLE1BQU0sbUJBQW1COyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -6,11 +6,11 @@
6
6
  /**
7
7
  * Converts a function into a string that is a valid function expression.
8
8
  *
9
- * `Function.prototype.toString()` on a shorthand method like `{ fn() {} }`
10
- * returns `"fn() {}"`, which is not a valid expression.
9
+ * `Function.prototype.toString()` on a shorthand method like `{ callback() {} }`
10
+ * returns `"callback() {}"`, which is not a valid expression.
11
11
  * This helper detects that form and prefixes it with `function `.
12
12
  *
13
- * @param fn - The function to convert.
13
+ * @param callback - The function to convert.
14
14
  * @returns A string that is a valid function expression.
15
15
  */
16
- export declare function getFunctionExpressionString(fn: Function): string;
16
+ export declare function getFunctionExpressionString(callback: Function): string;
@@ -30,16 +30,16 @@ async function ensureLayoutReady(params) {
30
30
  params.app.workspace.onLayoutReady(resolve);
31
31
  });
32
32
  }
33
- function generateFunctionCall(fn, params) {
34
- const fnExpr = (0, import_function_expression.getFunctionExpressionString)(fn);
33
+ function generateFunctionCall(callback, params) {
34
+ const functionExpression = (0, import_function_expression.getFunctionExpressionString)(callback);
35
35
  const serializedParams = (0, import_json_with_functions.jsonWithFunctions)(params);
36
- return `(${fnExpr})(Object.assign(${serializedParams}, { app: window.app }))`;
36
+ return `(${functionExpression})(Object.assign(${serializedParams}, { app: window.app }))`;
37
37
  }
38
38
  function generateNamespaceCall(params) {
39
39
  const serializedParams = (0, import_json_with_functions.jsonWithFunctions)({
40
- args: params.args ?? {},
40
+ input: params.input ?? {},
41
41
  ...params.contextId !== void 0 && { contextId: params.contextId },
42
- fn: params.fn
42
+ callback: params.callback
43
43
  });
44
44
  return `window.__obsidianIntegrationTesting.evalWrapper(${serializedParams})`;
45
45
  }
@@ -49,4 +49,4 @@ function generateNamespaceCall(params) {
49
49
  generateFunctionCall,
50
50
  generateNamespaceCall
51
51
  });
52
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBHZW5lcmF0ZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBjYWxscyBhIHNlcmlhbGl6ZWQgZnVuY3Rpb24gd2l0aCBzZXJpYWxpemVkIGFyZ3VtZW50cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyB9IGZyb20gJy4vZnVuY3Rpb24tZXhwcmVzc2lvbi5janMnO1xuaW1wb3J0IHsganNvbldpdGhGdW5jdGlvbnMgfSBmcm9tICcuL2pzb24td2l0aC1mdW5jdGlvbnMuY2pzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHdpdGggYGVuc3VyZUxheW91dFJlYWR5YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnN1cmVMYXlvdXRSZWFkeVBhcmFtcyB7XG4gIC8qKlxuICAgKiBXYWl0cyBmb3IgdGhlIE9ic2lkaWFuIHdvcmtzcGFjZSBsYXlvdXQgdG8gYmUgcmVhZHkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGluY2x1ZGluZyB0aGUgYGFwcGAgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxheW91dCBpcyByZWFkeS5cbiAgICovXG4gIGVuc3VyZUxheW91dFJlYWR5KHBhcmFtczogR2VuZXJhdGVGdW5jdGlvbkNhbGxQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIGBnZW5lcmF0ZUZ1bmN0aW9uQ2FsbGAuXG4gKlxuICogQHR5cGVQYXJhbSBQYXJhbXMgLSBUaGUgdHlwZSBvZiB0aGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVGdW5jdGlvbkNhbGxQYXJhbXM8UGFyYW1zID0gdW5rbm93bj4gPSBBcHBQYXJhbXMgJiBQYXJhbXM7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdlbmVyYXRlTmFtZXNwYWNlQ2FsbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVOYW1lc3BhY2VDYWxsUGFyYW1zIHtcbiAgLyoqIFVzZXItc3VwcGxpZWQgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uLiAqL1xuICByZWFkb25seSBhcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBPcHRpb25hbCBjb250ZXh0IElEIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UuICovXG4gIHJlYWRvbmx5IGNvbnRleHRJZD86IHN0cmluZztcbiAgLyoqIFRoZSB1c2VyIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGluc2lkZSBPYnNpZGlhbi4gKi9cbiAgcmVhZG9ubHkgZm46ICguLi5hcmdzOiBuZXZlcltdKSA9PiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgQXBwUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBzdHJpbmcgdGhhdCBpbW1lZGlhdGVseSBpbnZva2VzIHRoZSBnaXZlblxuICogZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLlxuICpcbiAqIFRoZSBmdW5jdGlvbiBpcyBzZXJpYWxpemVkIHZpYSB7QGxpbmsgZ2V0RnVuY3Rpb25FeHByZXNzaW9uU3RyaW5nfSBhbmQgdGhlXG4gKiBhcmd1bWVudHMgYXJlIHNlcmlhbGl6ZWQgdmlhIHtAbGluayBqc29uV2l0aEZ1bmN0aW9uc30sIHByb2R1Y2luZyBhXG4gKiBzZWxmLWNvbnRhaW5lZCBJSUZFIG9mIHRoZSBmb3JtIGAoZm5FeHByKShhcmdzRXhwcilgLlxuICpcbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcy4gV2hlbiBvbWl0dGVkLCB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLlxuICogQHJldHVybnMgQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gc3RyaW5nLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBTZXJpYWxpemVkIHZpYSB0b1N0cmluZygpIGFuZCBleGVjdXRlZCBpbnNpZGUgT2JzaWRpYW4sIG5vdCBjYWxsYWJsZSBpbiB1bml0IHRlc3RzLiAqL1xuLyoqXG4gKiBXYWl0cyBmb3IgdGhlIE9ic2lkaWFuIHdvcmtzcGFjZSBsYXlvdXQgdG8gYmUgcmVhZHkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgdGhlIGBhcHBgIGluc3RhbmNlLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbGF5b3V0IGlzIHJlYWR5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTGF5b3V0UmVhZHkocGFyYW1zOiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIHBhcmFtcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkocmVzb2x2ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBzdHJpbmcgdGhhdCBpbW1lZGlhdGVseSBpbnZva2VzIHRoZSBnaXZlblxuICogZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcy5cbiAqIEByZXR1cm5zIEEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnVuY3Rpb25DYWxsPFBhcmFtcz4oZm46IChwYXJhbXM6IEdlbmVyYXRlRnVuY3Rpb25DYWxsUGFyYW1zPFBhcmFtcz4pID0+IFByb21pc2FibGU8dW5rbm93bj4sIHBhcmFtczogUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgZm5FeHByID0gZ2V0RnVuY3Rpb25FeHByZXNzaW9uU3RyaW5nKGZuKTtcbiAgY29uc3Qgc2VyaWFsaXplZFBhcmFtcyA9IGpzb25XaXRoRnVuY3Rpb25zKHBhcmFtcyk7XG4gIHJldHVybiBgKCR7Zm5FeHByfSkoT2JqZWN0LmFzc2lnbigke3NlcmlhbGl6ZWRQYXJhbXN9LCB7IGFwcDogd2luZG93LmFwcCB9KSlgO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGxpZ2h0d2VpZ2h0IEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGNhbGxzIHRoZSBwcmUtcmVnaXN0ZXJlZFxuICogYGV2YWxXcmFwcGVyYCBvbiB0aGUgYHdpbmRvdy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYCBuYW1lc3BhY2UuXG4gKlxuICogVW5saWtlIHtAbGluayBnZW5lcmF0ZUZ1bmN0aW9uQ2FsbH0sIHRoaXMgZG9lcyBub3Qgc2VyaWFsaXplIGluZnJhc3RydWN0dXJlXG4gKiBmdW5jdGlvbnMgXHUyMDE0IG9ubHkgdGhlIHVzZXIncyBgZm5gLCBgYXJnc2AsIGFuZCBgY29udGV4dElkYC4gVGhlIGluZnJhc3RydWN0dXJlXG4gKiBtdXN0IGFscmVhZHkgYmUgYm9vdHN0cmFwcGVkIHZpYSB7QGxpbmsgZW5zdXJlTmFtZXNwYWNlQm9vdHN0cmFwcGVkfS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHVzZXIgZnVuY3Rpb24sIGFyZ3VtZW50cywgYW5kIG9wdGlvbmFsIGNvbnRleHQgSUQuXG4gKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwocGFyYW1zOiBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0ganNvbldpdGhGdW5jdGlvbnMoe1xuICAgIGFyZ3M6IHBhcmFtcy5hcmdzID8/IHt9LFxuICAgIC4uLihwYXJhbXMuY29udGV4dElkICE9PSB1bmRlZmluZWQgJiYgeyBjb250ZXh0SWQ6IHBhcmFtcy5jb250ZXh0SWQgfSksXG4gICAgZm46IHBhcmFtcy5mblxuICB9KTtcbiAgcmV0dXJuIGB3aW5kb3cuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy5ldmFsV3JhcHBlcigke3NlcmlhbGl6ZWRQYXJhbXN9KWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLGlDQUE0QztBQUM1QyxpQ0FBa0M7QUEyRGxDLGVBQXNCLGtCQUFrQixRQUFtRDtBQUN6RixRQUFNLElBQUksUUFBYyxDQUFDLFlBQVk7QUFDbkMsV0FBTyxJQUFJLFVBQVUsY0FBYyxPQUFPO0FBQUEsRUFDNUMsQ0FBQztBQUNIO0FBVU8sU0FBUyxxQkFBNkIsSUFBeUUsUUFBd0I7QUFDNUksUUFBTSxhQUFTLHdEQUE0QixFQUFFO0FBQzdDLFFBQU0sdUJBQW1CLDhDQUFrQixNQUFNO0FBQ2pELFNBQU8sSUFBSSxNQUFNLG1CQUFtQixnQkFBZ0I7QUFDdEQ7QUFhTyxTQUFTLHNCQUFzQixRQUE2QztBQUNqRixRQUFNLHVCQUFtQiw4Q0FBa0I7QUFBQSxJQUN6QyxNQUFNLE9BQU8sUUFBUSxDQUFDO0FBQUEsSUFDdEIsR0FBSSxPQUFPLGNBQWMsVUFBYSxFQUFFLFdBQVcsT0FBTyxVQUFVO0FBQUEsSUFDcEUsSUFBSSxPQUFPO0FBQUEsRUFDYixDQUFDO0FBQ0QsU0FBTyxtREFBbUQsZ0JBQWdCO0FBQzVFOyIsCiAgIm5hbWVzIjogW10KfQo=
52
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBHZW5lcmF0ZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBjYWxscyBhIHNlcmlhbGl6ZWQgZnVuY3Rpb24gd2l0aCBzZXJpYWxpemVkIGFyZ3VtZW50cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyB9IGZyb20gJy4vZnVuY3Rpb24tZXhwcmVzc2lvbi5janMnO1xuaW1wb3J0IHsganNvbldpdGhGdW5jdGlvbnMgfSBmcm9tICcuL2pzb24td2l0aC1mdW5jdGlvbnMuY2pzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHdpdGggYGVuc3VyZUxheW91dFJlYWR5YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnN1cmVMYXlvdXRSZWFkeVBhcmFtcyB7XG4gIC8qKlxuICAgKiBXYWl0cyBmb3IgdGhlIE9ic2lkaWFuIHdvcmtzcGFjZSBsYXlvdXQgdG8gYmUgcmVhZHkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGluY2x1ZGluZyB0aGUgYGFwcGAgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxheW91dCBpcyByZWFkeS5cbiAgICovXG4gIGVuc3VyZUxheW91dFJlYWR5KHBhcmFtczogR2VuZXJhdGVGdW5jdGlvbkNhbGxQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIGBnZW5lcmF0ZUZ1bmN0aW9uQ2FsbGAuXG4gKlxuICogQHR5cGVQYXJhbSBQYXJhbXMgLSBUaGUgdHlwZSBvZiB0aGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVGdW5jdGlvbkNhbGxQYXJhbXM8UGFyYW1zID0gdW5rbm93bj4gPSBBcHBQYXJhbXMgJiBQYXJhbXM7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdlbmVyYXRlTmFtZXNwYWNlQ2FsbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVOYW1lc3BhY2VDYWxsUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSB1c2VyIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGluc2lkZSBPYnNpZGlhbi5cbiAgICovXG4gIHJlYWRvbmx5IGNhbGxiYWNrOiAoLi4uaW5wdXQ6IG5ldmVyW10pID0+IHVua25vd247XG4gIC8qKlxuICBPcHRpb25hbCBjb250ZXh0IElEIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICBVc2VyLXN1cHBsaWVkIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGlucHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmludGVyZmFjZSBBcHBQYXJhbXMge1xuICByZWFkb25seSBhcHA6IEFwcDtcbn1cbi8qIHY4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogR2VuZXJhdGVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHN0cmluZyB0aGF0IGltbWVkaWF0ZWx5IGludm9rZXMgdGhlIGdpdmVuXG4gKiBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGlzIHNlcmlhbGl6ZWQgdmlhIHtAbGluayBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmd9IGFuZCB0aGVcbiAqIGFyZ3VtZW50cyBhcmUgc2VyaWFsaXplZCB2aWEge0BsaW5rIGpzb25XaXRoRnVuY3Rpb25zfSwgcHJvZHVjaW5nIGFcbiAqIHNlbGYtY29udGFpbmVkIElJRkUgb2YgdGhlIGZvcm0gYChmbkV4cHIpKGFyZ3NFeHByKWAuXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzLiBXaGVuIG9taXR0ZWQsIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMuXG4gKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBzdHJpbmcuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIFNlcmlhbGl6ZWQgdmlhIHRvU3RyaW5nKCkgYW5kIGV4ZWN1dGVkIGluc2lkZSBPYnNpZGlhbiwgbm90IGNhbGxhYmxlIGluIHVuaXQgdGVzdHMuICovXG4vKipcbiAqIFdhaXRzIGZvciB0aGUgT2JzaWRpYW4gd29ya3NwYWNlIGxheW91dCB0byBiZSByZWFkeS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMsIGluY2x1ZGluZyB0aGUgYGFwcGAgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBsYXlvdXQgaXMgcmVhZHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVMYXlvdXRSZWFkeShwYXJhbXM6IEdlbmVyYXRlRnVuY3Rpb25DYWxsUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgcGFyYW1zLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeShyZXNvbHZlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHN0cmluZyB0aGF0IGltbWVkaWF0ZWx5IGludm9rZXMgdGhlIGdpdmVuXG4gKiBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGFyZ3VtZW50cyB0byBwYXNzLlxuICogQHJldHVybnMgQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGdW5jdGlvbkNhbGw8UGFyYW1zPihjYWxsYmFjazogKHBhcmFtczogR2VuZXJhdGVGdW5jdGlvbkNhbGxQYXJhbXM8UGFyYW1zPikgPT4gUHJvbWlzYWJsZTx1bmtub3duPiwgcGFyYW1zOiBQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBnZXRGdW5jdGlvbkV4cHJlc3Npb25TdHJpbmcoY2FsbGJhY2spO1xuICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0ganNvbldpdGhGdW5jdGlvbnMocGFyYW1zKTtcbiAgcmV0dXJuIGAoJHtmdW5jdGlvbkV4cHJlc3Npb259KShPYmplY3QuYXNzaWduKCR7c2VyaWFsaXplZFBhcmFtc30sIHsgYXBwOiB3aW5kb3cuYXBwIH0pKWA7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbGlnaHR3ZWlnaHQgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgY2FsbHMgdGhlIHByZS1yZWdpc3RlcmVkXG4gKiBgZXZhbFdyYXBwZXJgIG9uIHRoZSBgd2luZG93Ll9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgIG5hbWVzcGFjZS5cbiAqXG4gKiBVbmxpa2Uge0BsaW5rIGdlbmVyYXRlRnVuY3Rpb25DYWxsfSwgdGhpcyBkb2VzIG5vdCBzZXJpYWxpemUgaW5mcmFzdHJ1Y3R1cmVcbiAqIGZ1bmN0aW9ucyBcdTIwMTQgb25seSB0aGUgdXNlcidzIGBjYWxsYmFja2AsIGBpbnB1dGAsIGFuZCBgY29udGV4dElkYC4gVGhlIGluZnJhc3RydWN0dXJlXG4gKiBtdXN0IGFscmVhZHkgYmUgYm9vdHN0cmFwcGVkIHZpYSB7QGxpbmsgZW5zdXJlTmFtZXNwYWNlQm9vdHN0cmFwcGVkfS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHVzZXIgZnVuY3Rpb24sIGFyZ3VtZW50cywgYW5kIG9wdGlvbmFsIGNvbnRleHQgSUQuXG4gKiBAcmV0dXJucyBBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwocGFyYW1zOiBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0ganNvbldpdGhGdW5jdGlvbnMoe1xuICAgIGlucHV0OiBwYXJhbXMuaW5wdXQgPz8ge30sXG4gICAgLi4uKHBhcmFtcy5jb250ZXh0SWQgIT09IHVuZGVmaW5lZCAmJiB7IGNvbnRleHRJZDogcGFyYW1zLmNvbnRleHRJZCB9KSxcbiAgICBjYWxsYmFjazogcGFyYW1zLmNhbGxiYWNrXG4gIH0pO1xuICByZXR1cm4gYHdpbmRvdy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nLmV2YWxXcmFwcGVyKCR7c2VyaWFsaXplZFBhcmFtc30pYDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0EsaUNBQTRDO0FBQzVDLGlDQUFrQztBQWlFbEMsZUFBc0Isa0JBQWtCLFFBQW1EO0FBQ3pGLFFBQU0sSUFBSSxRQUFjLENBQUMsWUFBWTtBQUNuQyxXQUFPLElBQUksVUFBVSxjQUFjLE9BQU87QUFBQSxFQUM1QyxDQUFDO0FBQ0g7QUFVTyxTQUFTLHFCQUE2QixVQUErRSxRQUF3QjtBQUNsSixRQUFNLHlCQUFxQix3REFBNEIsUUFBUTtBQUMvRCxRQUFNLHVCQUFtQiw4Q0FBa0IsTUFBTTtBQUNqRCxTQUFPLElBQUksa0JBQWtCLG1CQUFtQixnQkFBZ0I7QUFDbEU7QUFhTyxTQUFTLHNCQUFzQixRQUE2QztBQUNqRixRQUFNLHVCQUFtQiw4Q0FBa0I7QUFBQSxJQUN6QyxPQUFPLE9BQU8sU0FBUyxDQUFDO0FBQUEsSUFDeEIsR0FBSSxPQUFPLGNBQWMsVUFBYSxFQUFFLFdBQVcsT0FBTyxVQUFVO0FBQUEsSUFDcEUsVUFBVSxPQUFPO0FBQUEsRUFDbkIsQ0FBQztBQUNELFNBQU8sbURBQW1ELGdCQUFnQjtBQUM1RTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -27,12 +27,18 @@ export type GenerateFunctionCallParams<Params = unknown> = AppParams & Params;
27
27
  * Parameters for {@link generateNamespaceCall}.
28
28
  */
29
29
  export interface GenerateNamespaceCallParams {
30
- /** User-supplied arguments to pass to the function. */
31
- readonly args?: Record<string, unknown>;
32
- /** Optional context ID for persistent storage. */
30
+ /**
31
+ The user function to evaluate inside Obsidian.
32
+ */
33
+ readonly callback: (...input: never[]) => unknown;
34
+ /**
35
+ Optional context ID for persistent storage.
36
+ */
33
37
  readonly contextId?: string;
34
- /** The user function to evaluate inside Obsidian. */
35
- readonly fn: (...args: never[]) => unknown;
38
+ /**
39
+ User-supplied arguments to pass to the function.
40
+ */
41
+ readonly input?: Record<string, unknown>;
36
42
  }
37
43
  interface AppParams {
38
44
  readonly app: App;
@@ -45,7 +51,7 @@ interface AppParams {
45
51
  * arguments are serialized via {@link jsonWithFunctions}, producing a
46
52
  * self-contained IIFE of the form `(fnExpr)(argsExpr)`.
47
53
  *
48
- * @param fn - The function to call.
54
+ * @param callback - The function to call.
49
55
  * @param params - The arguments to pass. When omitted, the function is called with no arguments.
50
56
  * @returns A JavaScript expression string.
51
57
  */
@@ -60,17 +66,17 @@ export declare function ensureLayoutReady(params: GenerateFunctionCallParams): P
60
66
  * Generates a JavaScript expression string that immediately invokes the given
61
67
  * function with the given arguments.
62
68
  *
63
- * @param fn - The function to call.
69
+ * @param callback - The function to call.
64
70
  * @param params - The arguments to pass.
65
71
  * @returns A JavaScript expression string.
66
72
  */
67
- export declare function generateFunctionCall<Params>(fn: (params: GenerateFunctionCallParams<Params>) => Promisable<unknown>, params: Params): string;
73
+ export declare function generateFunctionCall<Params>(callback: (params: GenerateFunctionCallParams<Params>) => Promisable<unknown>, params: Params): string;
68
74
  /**
69
75
  * Generates a lightweight JavaScript expression that calls the pre-registered
70
76
  * `evalWrapper` on the `window.__obsidianIntegrationTesting` namespace.
71
77
  *
72
78
  * Unlike {@link generateFunctionCall}, this does not serialize infrastructure
73
- * functions — only the user's `fn`, `args`, and `contextId`. The infrastructure
79
+ * functions — only the user's `callback`, `input`, and `contextId`. The infrastructure
74
80
  * must already be bootstrapped via {@link ensureNamespaceBootstrapped}.
75
81
  *
76
82
  * @param params - The user function, arguments, and optional context ID.