obsidian-integration-testing 11.0.0 → 12.1.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.
- package/dist/lib/cjs/adb-device-list.cjs +54 -0
- package/dist/lib/cjs/adb-device-list.d.cts +72 -0
- package/dist/lib/cjs/android-sdk.cjs +52 -0
- package/dist/lib/cjs/android-sdk.d.cts +29 -0
- package/dist/lib/cjs/app-startup-progress.cjs +87 -0
- package/dist/lib/cjs/app-startup-progress.d.cts +128 -0
- package/dist/lib/cjs/appium-server-marker.cjs +112 -0
- package/dist/lib/cjs/appium-server-marker.d.cts +103 -0
- package/dist/lib/cjs/avd-probe-verdict.cjs +90 -0
- package/dist/lib/cjs/avd-probe-verdict.d.cts +175 -0
- package/dist/lib/cjs/cli.cjs +104 -19
- package/dist/lib/cjs/cli.d.cts +16 -8
- package/dist/lib/cjs/community-plugin-registry.cjs +52 -0
- package/dist/lib/cjs/community-plugin-registry.d.cts +116 -0
- package/dist/lib/cjs/config-directory-fallback-error.cjs +57 -0
- package/dist/lib/cjs/config-directory-fallback-error.d.cts +64 -0
- package/dist/lib/cjs/config-directory.cjs +46 -0
- package/dist/lib/cjs/config-directory.d.cts +45 -0
- package/dist/lib/cjs/connect-to-cdp.cjs +13 -7
- package/dist/lib/cjs/connect-to-cdp.d.cts +19 -0
- package/dist/lib/cjs/context-provider.cjs +12 -1
- package/dist/lib/cjs/context-provider.d.cts +26 -3
- package/dist/lib/cjs/demo-vault-bootstrap.cjs +148 -0
- package/dist/lib/cjs/demo-vault-bootstrap.d.cts +114 -0
- package/dist/lib/cjs/demo-vault-populate.cjs +38 -10
- package/dist/lib/cjs/demo-vault-populate.d.cts +70 -0
- package/dist/lib/cjs/device-readiness.cjs +38 -3
- package/dist/lib/cjs/device-readiness.d.cts +83 -9
- package/dist/lib/cjs/emulator-arguments.cjs +6 -2
- package/dist/lib/cjs/emulator-arguments.d.cts +26 -0
- package/dist/lib/cjs/emulator-backend.cjs +71 -0
- package/dist/lib/cjs/emulator-backend.d.cts +76 -0
- package/dist/lib/cjs/emulator-liveness.cjs +72 -0
- package/dist/lib/cjs/emulator-liveness.d.cts +158 -0
- package/dist/lib/cjs/emulator-snapshot.cjs +57 -0
- package/dist/lib/cjs/emulator-snapshot.d.cts +68 -0
- package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.d.cts +42 -13
- package/dist/lib/cjs/global-setup-core.cjs +30 -30
- package/dist/lib/cjs/global-setup-core.d.cts +27 -2
- package/dist/lib/cjs/headless-vault-config.cjs +51 -0
- package/dist/lib/cjs/headless-vault-config.d.cts +67 -0
- package/dist/lib/cjs/index.cjs +24 -1
- package/dist/lib/cjs/index.d.cts +14 -5
- package/dist/lib/cjs/installer-asset.cjs +1 -1
- package/dist/lib/cjs/installer-asset.d.cts +1 -1
- package/dist/lib/cjs/integration-setup-failed-error.cjs +62 -0
- package/dist/lib/cjs/integration-setup-failed-error.d.cts +66 -0
- package/dist/lib/cjs/jest/global-setup.cjs +2 -2
- package/dist/lib/cjs/jest/global-setup.d.cts +5 -1
- package/dist/lib/cjs/kill-process-tree.cjs +18 -7
- package/dist/lib/cjs/kill-process-tree.d.cts +10 -2
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/mobile-input.cjs +173 -0
- package/dist/lib/cjs/mobile-input.d.cts +156 -0
- package/dist/lib/cjs/namespace-bootstrap.cjs +92 -9
- package/dist/lib/cjs/obsidian-installer.cjs +1 -1
- package/dist/lib/cjs/obsidian-instance.cjs +52 -3
- package/dist/lib/cjs/obsidian-instance.d.cts +12 -0
- package/dist/lib/cjs/obsidian-metadata.cjs +123 -17
- package/dist/lib/cjs/obsidian-metadata.d.cts +17 -6
- package/dist/lib/cjs/obsidian-version-switch.cjs +3 -3
- package/dist/lib/cjs/open-obsidian-settings-tab.cjs +1 -1
- package/dist/lib/cjs/open-obsidian-settings-tab.d.cts +3 -2
- package/dist/lib/cjs/owned-instance-exit-marker.cjs +99 -0
- package/dist/lib/cjs/owned-instance-exit-marker.d.cts +106 -0
- package/dist/lib/cjs/owned-instance-exited-error.cjs +106 -0
- package/dist/lib/cjs/owned-instance-exited-error.d.cts +98 -0
- package/dist/lib/cjs/owned-vault-seed.cjs +9 -5
- package/dist/lib/cjs/owned-vault-seed.d.cts +24 -3
- package/dist/lib/cjs/parent-liveness.cjs +42 -5
- package/dist/lib/cjs/parent-liveness.d.cts +37 -5
- package/dist/lib/cjs/port-owner.cjs +61 -0
- package/dist/lib/cjs/port-owner.d.cts +47 -0
- package/dist/lib/cjs/process-capture.cjs +62 -0
- package/dist/lib/cjs/process-capture.d.cts +83 -0
- package/dist/lib/cjs/process-exit-message.cjs +14 -8
- package/dist/lib/cjs/process-exit-message.d.cts +37 -3
- package/dist/lib/cjs/process-liveness.cjs +51 -0
- package/dist/lib/cjs/process-liveness.d.cts +18 -0
- package/dist/lib/cjs/release-catalog.cjs +73 -0
- package/dist/lib/cjs/release-catalog.d.cts +125 -0
- package/dist/lib/cjs/run-version-matrix.cjs +1 -1
- package/dist/lib/cjs/run-version-matrix.d.cts +1 -1
- package/dist/lib/cjs/teardown-verdict.cjs +53 -0
- package/dist/lib/cjs/teardown-verdict.d.cts +69 -0
- package/dist/lib/cjs/temporary-vault.cjs +43 -8
- package/dist/lib/cjs/temporary-vault.d.cts +47 -5
- package/dist/lib/cjs/transport-appium.cjs +223 -17
- package/dist/lib/cjs/transport-appium.d.cts +104 -3
- package/dist/lib/cjs/transport-desktop-cdp.cjs +201 -6
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +100 -0
- package/dist/lib/cjs/transport-factory.cjs +1165 -142
- package/dist/lib/cjs/transport-factory.d.cts +10 -1
- package/dist/lib/cjs/transport-options.cjs +11 -3
- package/dist/lib/cjs/transport-options.d.cts +131 -12
- package/dist/lib/cjs/transport.cjs +1 -1
- package/dist/lib/cjs/transport.d.cts +7 -1
- package/dist/lib/cjs/vault-plugin-install.cjs +40 -0
- package/dist/lib/cjs/vault-plugin-install.d.cts +64 -0
- package/dist/lib/cjs/vault-teardown-verdict.cjs +42 -0
- package/dist/lib/cjs/vault-teardown-verdict.d.cts +57 -0
- package/dist/lib/cjs/version-matrix.cjs +1 -1
- package/dist/lib/cjs/version-matrix.d.cts +2 -2
- package/dist/lib/cjs/vitest/global-setup.cjs +13 -7
- package/dist/lib/cjs/vitest/global-setup.d.cts +5 -1
- package/dist/lib/cjs/vitest/setup.cjs +2 -1
- package/dist/lib/cjs/vitest/setup.d.cts +5 -0
- package/dist/lib/cjs/vitest/typings.d.cts +6 -4
- package/dist/lib/cjs/webview-cdp.cjs +263 -0
- package/dist/lib/cjs/webview-cdp.d.cts +156 -0
- package/dist/lib/cjs/wedged-appium-server.cjs +113 -0
- package/dist/lib/cjs/wedged-appium-server.d.cts +187 -0
- package/dist/lib/esm/adb-device-list.d.mts +72 -0
- package/dist/lib/esm/adb-device-list.mjs +28 -0
- package/dist/lib/esm/android-sdk.d.mts +29 -0
- package/dist/lib/esm/android-sdk.mjs +18 -0
- package/dist/lib/esm/app-startup-progress.d.mts +128 -0
- package/dist/lib/esm/app-startup-progress.mjs +59 -0
- package/dist/lib/esm/appium-server-marker.d.mts +103 -0
- package/dist/lib/esm/appium-server-marker.mjs +89 -0
- package/dist/lib/esm/avd-probe-verdict.d.mts +175 -0
- package/dist/lib/esm/avd-probe-verdict.mjs +62 -0
- package/dist/lib/esm/cli.d.mts +16 -8
- package/dist/lib/esm/cli.mjs +110 -19
- package/dist/lib/esm/community-plugin-registry.d.mts +116 -0
- package/dist/lib/esm/community-plugin-registry.mjs +23 -0
- package/dist/lib/esm/config-directory-fallback-error.d.mts +64 -0
- package/dist/lib/esm/config-directory-fallback-error.mjs +33 -0
- package/dist/lib/esm/config-directory.d.mts +45 -0
- package/dist/lib/esm/config-directory.mjs +21 -0
- package/dist/lib/esm/connect-to-cdp.d.mts +19 -0
- package/dist/lib/esm/connect-to-cdp.mjs +13 -7
- package/dist/lib/esm/context-provider.d.mts +26 -3
- package/dist/lib/esm/context-provider.mjs +10 -1
- package/dist/lib/esm/demo-vault-bootstrap.d.mts +114 -0
- package/dist/lib/esm/demo-vault-bootstrap.mjs +127 -0
- package/dist/lib/esm/demo-vault-populate.d.mts +70 -0
- package/dist/lib/esm/demo-vault-populate.mjs +35 -9
- package/dist/lib/esm/device-readiness.d.mts +83 -9
- package/dist/lib/esm/device-readiness.mjs +34 -2
- package/dist/lib/esm/emulator-arguments.d.mts +26 -0
- package/dist/lib/esm/emulator-arguments.mjs +6 -2
- package/dist/lib/esm/emulator-backend.d.mts +76 -0
- package/dist/lib/esm/emulator-backend.mjs +45 -0
- package/dist/lib/esm/emulator-liveness.d.mts +158 -0
- package/dist/lib/esm/emulator-liveness.mjs +47 -0
- package/dist/lib/esm/emulator-snapshot.d.mts +68 -0
- package/dist/lib/esm/emulator-snapshot.mjs +32 -0
- package/dist/lib/esm/eval-in-obsidian.d.mts +42 -13
- package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
- package/dist/lib/esm/global-setup-core.d.mts +27 -2
- package/dist/lib/esm/global-setup-core.mjs +34 -35
- package/dist/lib/esm/headless-vault-config.d.mts +67 -0
- package/dist/lib/esm/headless-vault-config.mjs +31 -0
- package/dist/lib/esm/index.d.mts +14 -5
- package/dist/lib/esm/index.mjs +26 -2
- package/dist/lib/esm/installer-asset.d.mts +1 -1
- package/dist/lib/esm/installer-asset.mjs +1 -1
- package/dist/lib/esm/integration-setup-failed-error.d.mts +66 -0
- package/dist/lib/esm/integration-setup-failed-error.mjs +38 -0
- package/dist/lib/esm/jest/global-setup.d.mts +5 -1
- package/dist/lib/esm/jest/global-setup.mjs +2 -2
- package/dist/lib/esm/kill-process-tree.d.mts +10 -2
- package/dist/lib/esm/kill-process-tree.mjs +16 -6
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/mobile-input.d.mts +156 -0
- package/dist/lib/esm/mobile-input.mjs +144 -0
- package/dist/lib/esm/namespace-bootstrap.mjs +95 -9
- package/dist/lib/esm/obsidian-installer.mjs +1 -1
- package/dist/lib/esm/obsidian-instance.d.mts +12 -0
- package/dist/lib/esm/obsidian-instance.mjs +55 -3
- package/dist/lib/esm/obsidian-metadata.d.mts +17 -6
- package/dist/lib/esm/obsidian-metadata.mjs +123 -17
- package/dist/lib/esm/obsidian-version-switch.mjs +3 -3
- package/dist/lib/esm/open-obsidian-settings-tab.d.mts +3 -2
- package/dist/lib/esm/open-obsidian-settings-tab.mjs +1 -1
- package/dist/lib/esm/owned-instance-exit-marker.d.mts +106 -0
- package/dist/lib/esm/owned-instance-exit-marker.mjs +78 -0
- package/dist/lib/esm/owned-instance-exited-error.d.mts +98 -0
- package/dist/lib/esm/owned-instance-exited-error.mjs +81 -0
- package/dist/lib/esm/owned-vault-seed.d.mts +24 -3
- package/dist/lib/esm/owned-vault-seed.mjs +9 -5
- package/dist/lib/esm/parent-liveness.d.mts +37 -5
- package/dist/lib/esm/parent-liveness.mjs +42 -5
- package/dist/lib/esm/port-owner.d.mts +47 -0
- package/dist/lib/esm/port-owner.mjs +36 -0
- package/dist/lib/esm/process-capture.d.mts +83 -0
- package/dist/lib/esm/process-capture.mjs +38 -0
- package/dist/lib/esm/process-exit-message.d.mts +37 -3
- package/dist/lib/esm/process-exit-message.mjs +13 -8
- package/dist/lib/esm/process-liveness.d.mts +18 -0
- package/dist/lib/esm/process-liveness.mjs +17 -0
- package/dist/lib/esm/release-catalog.d.mts +125 -0
- package/dist/lib/esm/release-catalog.mjs +46 -0
- package/dist/lib/esm/run-version-matrix.d.mts +1 -1
- package/dist/lib/esm/run-version-matrix.mjs +1 -1
- package/dist/lib/esm/teardown-verdict.d.mts +69 -0
- package/dist/lib/esm/teardown-verdict.mjs +28 -0
- package/dist/lib/esm/temporary-vault.d.mts +47 -5
- package/dist/lib/esm/temporary-vault.mjs +43 -8
- package/dist/lib/esm/transport-appium.d.mts +104 -3
- package/dist/lib/esm/transport-appium.mjs +233 -17
- package/dist/lib/esm/transport-desktop-cdp.d.mts +100 -0
- package/dist/lib/esm/transport-desktop-cdp.mjs +208 -7
- package/dist/lib/esm/transport-factory.d.mts +10 -1
- package/dist/lib/esm/transport-factory.mjs +1220 -149
- package/dist/lib/esm/transport-options.d.mts +131 -12
- package/dist/lib/esm/transport-options.mjs +9 -2
- package/dist/lib/esm/transport.d.mts +7 -1
- package/dist/lib/esm/vault-plugin-install.d.mts +64 -0
- package/dist/lib/esm/vault-plugin-install.mjs +20 -0
- package/dist/lib/esm/vault-teardown-verdict.d.mts +57 -0
- package/dist/lib/esm/vault-teardown-verdict.mjs +18 -0
- package/dist/lib/esm/version-matrix.d.mts +2 -2
- package/dist/lib/esm/version-matrix.mjs +1 -1
- package/dist/lib/esm/vitest/global-setup.d.mts +5 -1
- package/dist/lib/esm/vitest/global-setup.mjs +14 -7
- package/dist/lib/esm/vitest/setup.d.mts +5 -0
- package/dist/lib/esm/vitest/setup.mjs +3 -1
- package/dist/lib/esm/vitest/typings.d.mts +6 -4
- package/dist/lib/esm/webview-cdp.d.mts +156 -0
- package/dist/lib/esm/webview-cdp.mjs +235 -0
- package/dist/lib/esm/wedged-appium-server.d.mts +187 -0
- package/dist/lib/esm/wedged-appium-server.mjs +86 -0
- package/package.json +25 -23
- package/dist/lib/cjs/native-dialog-monitor.cjs +0 -192
- package/dist/lib/cjs/native-dialog-monitor.d.cts +0 -66
- package/dist/lib/cjs/obsidian-namespace.cjs +0 -17
- package/dist/lib/cjs/obsidian-namespace.d.cts +0 -128
- package/dist/lib/esm/native-dialog-monitor.d.mts +0 -66
- package/dist/lib/esm/native-dialog-monitor.mjs +0 -158
- package/dist/lib/esm/obsidian-namespace.d.mts +0 -128
- package/dist/lib/esm/obsidian-namespace.mjs +0 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
const MOBILE_INPUT_BINDING_NAME = "__obsidianIntegrationTestingInput";
|
|
2
|
+
const MOBILE_INPUT_TIMEOUT_IN_MILLISECONDS = 15e3;
|
|
3
|
+
const LONG_PRESS_DWELL_IN_MILLISECONDS = 600;
|
|
4
|
+
const NO_MODIFIERS = 0;
|
|
5
|
+
const MODIFIER_BIT_ALT = 1;
|
|
6
|
+
const MODIFIER_BIT_CONTROL = 2;
|
|
7
|
+
const MODIFIER_BIT_META = 4;
|
|
8
|
+
const MODIFIER_BIT_SHIFT = 8;
|
|
9
|
+
const CDP_MODIFIER_BIT_BY_NAME = /* @__PURE__ */ new Map([
|
|
10
|
+
["alt", MODIFIER_BIT_ALT],
|
|
11
|
+
["control", MODIFIER_BIT_CONTROL],
|
|
12
|
+
["meta", MODIFIER_BIT_META],
|
|
13
|
+
["shift", MODIFIER_BIT_SHIFT]
|
|
14
|
+
]);
|
|
15
|
+
const KEY_CODE_BACKSPACE = 8;
|
|
16
|
+
const KEY_CODE_TAB = 9;
|
|
17
|
+
const KEY_CODE_ENTER = 13;
|
|
18
|
+
const KEY_CODE_ESCAPE = 27;
|
|
19
|
+
const KEY_CODE_ARROW_LEFT = 37;
|
|
20
|
+
const KEY_CODE_ARROW_UP = 38;
|
|
21
|
+
const KEY_CODE_ARROW_RIGHT = 39;
|
|
22
|
+
const KEY_CODE_ARROW_DOWN = 40;
|
|
23
|
+
const KEY_CODE_DELETE = 46;
|
|
24
|
+
const NAMED_KEYS = /* @__PURE__ */ new Map([
|
|
25
|
+
["ArrowDown", { code: "ArrowDown", windowsVirtualKeyCode: KEY_CODE_ARROW_DOWN }],
|
|
26
|
+
["ArrowLeft", { code: "ArrowLeft", windowsVirtualKeyCode: KEY_CODE_ARROW_LEFT }],
|
|
27
|
+
["ArrowRight", { code: "ArrowRight", windowsVirtualKeyCode: KEY_CODE_ARROW_RIGHT }],
|
|
28
|
+
["ArrowUp", { code: "ArrowUp", windowsVirtualKeyCode: KEY_CODE_ARROW_UP }],
|
|
29
|
+
["Backspace", { code: "Backspace", windowsVirtualKeyCode: KEY_CODE_BACKSPACE }],
|
|
30
|
+
["Delete", { code: "Delete", windowsVirtualKeyCode: KEY_CODE_DELETE }],
|
|
31
|
+
["Enter", { code: "Enter", text: "\r", windowsVirtualKeyCode: KEY_CODE_ENTER }],
|
|
32
|
+
["Escape", { code: "Escape", windowsVirtualKeyCode: KEY_CODE_ESCAPE }],
|
|
33
|
+
["Tab", { code: "Tab", text: " ", windowsVirtualKeyCode: KEY_CODE_TAB }]
|
|
34
|
+
]);
|
|
35
|
+
const FIRST_CODE_POINT_INDEX = 0;
|
|
36
|
+
const DIGIT_ZERO_CODE_POINT = codePointOf("0");
|
|
37
|
+
const DIGIT_NINE_CODE_POINT = codePointOf("9");
|
|
38
|
+
const UPPERCASE_A_CODE_POINT = codePointOf("A");
|
|
39
|
+
const UPPERCASE_Z_CODE_POINT = codePointOf("Z");
|
|
40
|
+
function buildResolveInputExpression(id, errorMessage) {
|
|
41
|
+
return `window.__obsidianIntegrationTesting?.resolveInput?.(${JSON.stringify(id)}, ${JSON.stringify(errorMessage ?? null)})`;
|
|
42
|
+
}
|
|
43
|
+
function codePointOf(text) {
|
|
44
|
+
const codePoint = text.codePointAt(FIRST_CODE_POINT_INDEX);
|
|
45
|
+
if (codePoint === void 0) {
|
|
46
|
+
throw new Error("codePointOf received an empty string.");
|
|
47
|
+
}
|
|
48
|
+
return codePoint;
|
|
49
|
+
}
|
|
50
|
+
function toCdpInputCommands(request) {
|
|
51
|
+
if (request.kind === "key") {
|
|
52
|
+
return toKeyCommands(request);
|
|
53
|
+
}
|
|
54
|
+
return toPointerCommands(request);
|
|
55
|
+
}
|
|
56
|
+
function toCdpModifiers(modifiers) {
|
|
57
|
+
const bits = /* @__PURE__ */ new Set();
|
|
58
|
+
for (const modifier of modifiers) {
|
|
59
|
+
const bit = CDP_MODIFIER_BIT_BY_NAME.get(modifier);
|
|
60
|
+
if (bit !== void 0) {
|
|
61
|
+
bits.add(bit);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
let bitmask = NO_MODIFIERS;
|
|
65
|
+
for (const bit of bits) {
|
|
66
|
+
bitmask += bit;
|
|
67
|
+
}
|
|
68
|
+
return bitmask;
|
|
69
|
+
}
|
|
70
|
+
function resolveKey(key) {
|
|
71
|
+
const namedKey = NAMED_KEYS.get(key);
|
|
72
|
+
if (namedKey) {
|
|
73
|
+
return namedKey;
|
|
74
|
+
}
|
|
75
|
+
const codePoint = key.codePointAt(FIRST_CODE_POINT_INDEX);
|
|
76
|
+
if (codePoint === void 0 || String.fromCodePoint(codePoint) !== key) {
|
|
77
|
+
throw new Error(
|
|
78
|
+
`pressKey received an unknown key name on mobile: ${JSON.stringify(key)}. Pass a single character or one of: ${[...NAMED_KEYS.keys()].join(", ")}.`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
const upperCasedCodePoint = codePointOf(key.toUpperCase());
|
|
82
|
+
return {
|
|
83
|
+
code: resolveKeyCode(upperCasedCodePoint),
|
|
84
|
+
text: key,
|
|
85
|
+
windowsVirtualKeyCode: upperCasedCodePoint
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function resolveKeyCode(upperCasedCodePoint) {
|
|
89
|
+
if (upperCasedCodePoint >= UPPERCASE_A_CODE_POINT && upperCasedCodePoint <= UPPERCASE_Z_CODE_POINT) {
|
|
90
|
+
return `Key${String.fromCodePoint(upperCasedCodePoint)}`;
|
|
91
|
+
}
|
|
92
|
+
if (upperCasedCodePoint >= DIGIT_ZERO_CODE_POINT && upperCasedCodePoint <= DIGIT_NINE_CODE_POINT) {
|
|
93
|
+
return `Digit${String.fromCodePoint(upperCasedCodePoint)}`;
|
|
94
|
+
}
|
|
95
|
+
return "";
|
|
96
|
+
}
|
|
97
|
+
function toKeyCommands(request) {
|
|
98
|
+
const { code, text, windowsVirtualKeyCode } = resolveKey(request.key);
|
|
99
|
+
const modifiers = toCdpModifiers(request.modifiers);
|
|
100
|
+
const base = { code, key: request.key, modifiers, windowsVirtualKeyCode };
|
|
101
|
+
const commands = [
|
|
102
|
+
{ method: "Input.dispatchKeyEvent", params: { ...base, type: "rawKeyDown" } }
|
|
103
|
+
];
|
|
104
|
+
if (text !== void 0) {
|
|
105
|
+
commands.push({ method: "Input.dispatchKeyEvent", params: { ...base, text, type: "char" } });
|
|
106
|
+
}
|
|
107
|
+
commands.push({ method: "Input.dispatchKeyEvent", params: { ...base, type: "keyUp" } });
|
|
108
|
+
return commands;
|
|
109
|
+
}
|
|
110
|
+
function toPointerCommands(request) {
|
|
111
|
+
const modifiers = toCdpModifiers(request.modifiers);
|
|
112
|
+
if (request.kind === "longPress") {
|
|
113
|
+
return [
|
|
114
|
+
{
|
|
115
|
+
method: "Input.synthesizeTapGesture",
|
|
116
|
+
params: {
|
|
117
|
+
duration: LONG_PRESS_DWELL_IN_MILLISECONDS,
|
|
118
|
+
gestureSourceType: "touch",
|
|
119
|
+
x: request.x,
|
|
120
|
+
y: request.y
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
return [
|
|
126
|
+
{
|
|
127
|
+
method: "Input.dispatchTouchEvent",
|
|
128
|
+
params: { modifiers, touchPoints: [{ x: request.x, y: request.y }], type: "touchStart" }
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
method: "Input.dispatchTouchEvent",
|
|
132
|
+
params: { modifiers, touchPoints: [], type: "touchEnd" }
|
|
133
|
+
}
|
|
134
|
+
];
|
|
135
|
+
}
|
|
136
|
+
export {
|
|
137
|
+
MOBILE_INPUT_BINDING_NAME,
|
|
138
|
+
MOBILE_INPUT_TIMEOUT_IN_MILLISECONDS,
|
|
139
|
+
buildResolveInputExpression,
|
|
140
|
+
codePointOf,
|
|
141
|
+
toCdpInputCommands,
|
|
142
|
+
toCdpModifiers
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vYmlsZS1pbnB1dC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRyYW5zbGF0ZXMgYSBtb2JpbGUgdHJ1c3RlZC1pbnB1dCByZXF1ZXN0IGludG8gdGhlIG9yZGVyZWQgQ2hyb21lIERldlRvb2xzIFByb3RvY29sIGBJbnB1dC4qYCBjb21tYW5kc1xuICogdGhhdCByZWFsaXplIGl0IChzZWUgKipMMzkqKikuXG4gKlxuICogUHVyZSBhbmQgc3luY2hyb25vdXMgYnkgZGVzaWduOiB0aGUgV2ViVmlldyBjb25uZWN0aW9uICh7QGxpbmsgV2ViVmlld0NkcENvbm5lY3Rpb259KSBzZW5kcyB3aGF0ZXZlciB0aGlzXG4gKiByZXR1cm5zLCBzbyBldmVyeSBkZWNpc2lvbiB0aGF0IGlzIHdvcnRoIGEgdGVzdCBcdTIwMTQgdGhlIHRvdWNoIHBhaXIgYSB0YXAgZXhwYW5kcyBpbnRvLCB0aGUgZHdlbGwgYVxuICogbG9uZy1wcmVzcyBhZGRzLCB0aGUgYHJhd0tleURvd25gIFx1MjE5MiBgY2hhcmAgXHUyMTkyIGBrZXlVcGAgc2hhcGUgYSBrZXkgcHJlc3MgbWlycm9ycyBmcm9tIHRoZSBkZXNrdG9wIHR3aW4sIHRoZVxuICogbW9kaWZpZXIgYml0bWFzayBcdTIwMTQgbGl2ZXMgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIHRyYW5zcG9ydCdzIEkvTyBwYXRoLlxuICpcbiAqIFRoZSByZXF1ZXN0IHRyYXZlbHMgcmVuZGVyZXIgXHUyMTkyIGhvc3QgYXMgSlNPTiAodGhlIHJlbmRlcmVyIGNvbXB1dGVzIHRoZSBjb29yZGluYXRlcywgYmVjYXVzZSBvbmx5IGl0IGNhblxuICogc2VlIHRoZSBET00pLCBzbyBib3RoIHRoZSByZXF1ZXN0IGFuZCB0aGUgY29tbWFuZCBzaGFwZXMgYXJlIGRlbGliZXJhdGVseSBwbGFpbiBkYXRhLlxuICovXG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGBSdW50aW1lLmFkZEJpbmRpbmdgIGZ1bmN0aW9uIHRoZSBob3N0IGV4cG9zZXMgb24gdGhlIHBhZ2Ugc28gdGhlIHJlbmRlcmVyIGNhbiBoYW5kIGl0IGFuXG4gKiBpbnB1dCByZXF1ZXN0IG1pZC1jbG9zdXJlLlxuICpcbiAqIEl0IGlzIHBhc3NlZCAqaW50byogdGhlIHNlcmlhbGl6ZWQgYm9vdHN0cmFwIGNsb3N1cmUgYXMgZGF0YSByYXRoZXIgdGhhbiByZWZlcmVuY2VkIGZyb20gaXQsIGJlY2F1c2UgdGhhdFxuICogY2xvc3VyZSBtYXkgbm90IHJlYWQgb3V0ZXIgc2NvcGUgKCoqTDE1KiopIFx1MjAxNCBzbyB0aGlzIHN0YXlzIHRoZSBzaW5nbGUgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE1PQklMRV9JTlBVVF9CSU5ESU5HX05BTUUgPSAnX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZ0lucHV0JztcblxuLyoqXG4gKiBIb3cgbG9uZyB0aGUgcmVuZGVyZXIgd2FpdHMgZm9yIHRoZSBob3N0IHRvIHNlcnZpY2Ugb25lIGlucHV0IHJlcXVlc3QgYmVmb3JlIGdpdmluZyB1cC5cbiAqXG4gKiBHZW5lcm91cyByZWxhdGl2ZSB0byB0aGUgd29yayAoYSB0YXAgaXMgdHdvIENEUCBjb21tYW5kczsgYSBsb25nLXByZXNzIGFkZHMgYSA2MDBtcyBkd2VsbCk6IHRoZSBwb2ludCBpc1xuICogdG8gZmFpbCB3aXRoIGEgbGVnaWJsZSBlcnJvciByYXRoZXIgdGhhbiBoYW5nIHRoZSBjbG9zdXJlIHVudGlsIHRoZSB3aG9sZSBydW4gdGltZXMgb3V0LiBQYXNzZWQgaW50byB0aGVcbiAqIGJvb3RzdHJhcCBjbG9zdXJlIGFzIGRhdGEsIGZvciB0aGUgc2FtZSByZWFzb24gYXMge0BsaW5rIE1PQklMRV9JTlBVVF9CSU5ESU5HX05BTUV9LlxuICovXG5leHBvcnQgY29uc3QgTU9CSUxFX0lOUFVUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTVfMDAwO1xuXG4vKipcbiAqIEEgc2luZ2xlIENocm9tZSBEZXZUb29scyBQcm90b2NvbCBjb21tYW5kLlxuICpcbiAqIEl0IG9uY2UgYWxzbyBjYXJyaWVkIGEgYGRlbGF5QmVmb3JlSW5NaWxsaXNlY29uZHNgLCBzbyB0aGUgaG9zdCB3b3VsZCBzbGVlcCBiZXR3ZWVuIHRoZSB0d28gaGFsdmVzIG9mIGFcbiAqIGxvbmctcHJlc3MuIFRoYXQgZHdlbGwgaXMgZ29uZTogdGhlIGdlc3R1cmUgaXMgbm93IG9uZSBgSW5wdXQuc3ludGhlc2l6ZVRhcEdlc3R1cmVgIHRoYXQgaG9sZHMgaXRzZWxmXG4gKiBmb3IgaXRzIG93biBgZHVyYXRpb25gLCBzbyBubyBjb21tYW5kIGluIGFueSBzZXF1ZW5jZSBuZWVkcyB0byBiZSBzcGFjZWQgZnJvbSB0aGUgb25lIGJlZm9yZSBpdCwgYW5kIGFcbiAqIGtub2Igbm90aGluZyBzZXRzIGlzIHdvcnNlIHRoYW4gbm8ga25vYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZHBJbnB1dENvbW1hbmQge1xuICAvKipcbiAgICogVGhlIENEUCBtZXRob2QgbmFtZSwgZS5nLiBgSW5wdXQuZGlzcGF0Y2hUb3VjaEV2ZW50YC5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGhvZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0RQIG1ldGhvZCBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSByZW5kZXJlciBoYW5kcyB0byB0aGUgaG9zdCBiaW5kaW5nOiBvbmUgcmVxdWVzdCwgcGx1cyB0aGUgaWQgdG8gYW5zd2VyIGl0IG9uLlxuICpcbiAqIFRoZSByZW5kZXJlciBidWlsZHMgdGhpcyBsaXRlcmFsIGluc2lkZSB0aGUgc2VyaWFsaXplZCBib290c3RyYXAgY2xvc3VyZSwgd2hpY2ggY2Fubm90IGltcG9ydCAoKipMMTUqKiksXG4gKiBzbyB0aGUgc2hhcGUgaXMgZGVjbGFyZWQgaGVyZSBhbmQgbWlycm9yZWQgdGhlcmUuIFRoZXkgYXJlIG9uZSB3aXJlIGZvcm1hdDsgY2hhbmdlIHRoZW0gdG9nZXRoZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9iaWxlSW5wdXRFbnZlbG9wZSB7XG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCBpZCB0aGUgcmVuZGVyZXIgaXMgd2FpdGluZyBvbi5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoYXQgdG8gaW5qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdDogTW9iaWxlSW5wdXRSZXF1ZXN0O1xufVxuXG4vKipcbiAqIEFueXRoaW5nIHRoZSByZW5kZXJlciBjYW4gYXNrIHRoZSBob3N0IHRvIGluamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgTW9iaWxlSW5wdXRSZXF1ZXN0ID0gTW9iaWxlS2V5SW5wdXRSZXF1ZXN0IHwgTW9iaWxlUG9pbnRlcklucHV0UmVxdWVzdDtcblxuLyoqXG4gKiBBIHRydXN0ZWQga2V5IHByZXNzIHRvIGluamVjdCBvbiBtb2JpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9iaWxlS2V5SW5wdXRSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBrZXkgdG8gcHJlc3MsIGluIHRoZSBzYW1lIHNwZWxsaW5nIHRoZSBkZXNrdG9wIHR3aW4gdGFrZXM6IGVpdGhlciBhIG5hbWVkIGtleVxuICAgKiAoYEVudGVyYCwgYEVzY2FwZWAsIGBUYWJgLCBgQmFja3NwYWNlYCwgYERlbGV0ZWAsIGFuIGFycm93KSBvciBhIHNpbmdsZSBwcmludGFibGUgY2hhcmFjdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc2NyaW1pbmFudC5cbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6ICdrZXknO1xuXG4gIC8qKlxuICAgKiBNb2RpZmllcnMgYWxyZWFkeSByZXNvbHZlZCB0byB0aGVpciBwbGF0Zm9ybS1pbmRlcGVuZGVudCBsb3dlcmNhc2UgbmFtZXMgYnkgdGhlIHJlbmRlcmVyJ3NcbiAgICogYHRvRWxlY3Ryb25Nb2RpZmllcnNgIFx1MjAxNCB0aGUgb25lIG1hcHBpbmcgYSBrZXkgcHJlc3MgYW5kIGEgY2xpY2sgc2hhcmUsIHNvIGAnTW9kJ2AgY2Fubm90IG1lYW4gdHdvXG4gICAqIGRpZmZlcmVudCB0aGluZ3MgKCoqTDE3KiopLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kaWZpZXJzOiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIHRydXN0ZWQgcG9pbnRlciBnZXN0dXJlIHRvIGluamVjdCBvbiBtb2JpbGUsIGluIENTUyBwaXhlbHMgd2l0aGluIHRoZSBXZWJWaWV3J3Mgb3duIHZpZXdwb3J0LlxuICpcbiAqIE5vIGRldmljZS1waXhlbCBjb252ZXJzaW9uIGlzIGludm9sdmVkOiBDRFAgdGFrZXMgcGFnZSBjb29yZGluYXRlcywgc28gYGRldmljZVBpeGVsUmF0aW9gIGFuZCB0aGVcbiAqIFdlYlZpZXcncyBvZmZzZXQgdW5kZXIgdGhlIHN0YXR1cyBiYXIgbmV2ZXIgZW50ZXIgdGhlIHBpY3R1cmUgKHRoZXkgd291bGQgZm9yIG5hdGl2ZSBpbmplY3Rpb24pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vYmlsZVBvaW50ZXJJbnB1dFJlcXVlc3Qge1xuICAvKipcbiAgICogYHRhcGAgaXMgdGhlIHRvdWNoIGFuYWxvZyBvZiBhIGxlZnQgY2xpY2s7IGBsb25nUHJlc3NgIGlzIHRoZSBtb2JpbGUgY29udGV4dC1tZW51IGdlc3R1cmUsIGkuZS4gd2hhdCBhXG4gICAqIGRlc2t0b3AgcmlnaHQgY2xpY2sgbWVhbnMgaGVyZS5cbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ6ICdsb25nUHJlc3MnIHwgJ3RhcCc7XG5cbiAgLyoqXG4gICAqIFNlZSB7QGxpbmsgTW9iaWxlS2V5SW5wdXRSZXF1ZXN0Lm1vZGlmaWVyc30uXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgdmlld3BvcnQgeCBjb29yZGluYXRlLCBpbiBDU1MgcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgdmlld3BvcnQgeSBjb29yZGluYXRlLCBpbiBDU1MgcGl4ZWxzLlxuICAgKi9cbiAgcmVhZG9ubHkgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEhvdyBsb25nIGEgbG9uZy1wcmVzcyBob2xkcyB0aGUgdG91Y2ggZG93biBiZWZvcmUgcmVsZWFzaW5nIGl0LlxuICpcbiAqIEl0IGhhcyB0byBjbGVhciAqKkFuZHJvaWQncyoqIGxvbmctcHJlc3MgdGhyZXNob2xkLCB3aGljaCBpcyA1MDBtcyBieSBkZWZhdWx0OiB0aGUgZ2VzdHVyZSBpc1xuICogcmVjb2duaXplZCBieSB0aGUgcGxhdGZvcm0sIGFuZCB0aGUgYGNvbnRleHRtZW51YCBPYnNpZGlhbidzIG1lbnVzIGhhbmcgb2ZmIGlzIHdoYXQgdGhlIHJlY29nbml6ZXJcbiAqIGVtaXRzLiA2MDBtcyBjbGVhcnMgdGhhdCB3aXRoIG1hcmdpbiB3aXRob3V0IG1ha2luZyBldmVyeSBsb25nLXByZXNzIHRlc3Qgbm90aWNlYWJseSBzbG93ZXIuXG4gKlxuICogVGhpcyBjb3JyZWN0cyB0aGUgZm9ybWVyIHJlYWRpbmcgXHUyMDE0IHRoYXQgT2JzaWRpYW4gTW9iaWxlIGltcGxlbWVudHMgbG9uZy1wcmVzcyBpdHNlbGYsIG9uIGEgSmF2YVNjcmlwdFxuICogYHRvdWNoc3RhcnRgIHRpbWVyLCBzbyB0aGUgZHdlbGwgb25seSBoYWQgdG8gY2xlYXIgKml0cyogdGhyZXNob2xkLiBNZWFzdXJlZCBhZ2FpbnN0IGEgcmVhbFxuICogYC5uYXYtZmlsZS10aXRsZWAsIGEgNjAwbXMgZHdlbGwgYmV0d2VlbiB0d28gZGlzcGF0Y2hlZCB0b3VjaGVzIG9wZW5lZCB0aGUgbm90ZSBpbnN0ZWFkIG9mIGl0cyBtZW51O1xuICogc2VlIHtAbGluayB0b1BvaW50ZXJDb21tYW5kc30gZm9yIHdoeSB0aGUgZHdlbGwgYWxvbmUgd2FzIG5ldmVyIGdvaW5nIHRvIGJlIGVub3VnaC5cbiAqL1xuY29uc3QgTE9OR19QUkVTU19EV0VMTF9JTl9NSUxMSVNFQ09ORFMgPSA2MDA7XG5cbmNvbnN0IE5PX01PRElGSUVSUyA9IDA7XG5jb25zdCBNT0RJRklFUl9CSVRfQUxUID0gMTtcbmNvbnN0IE1PRElGSUVSX0JJVF9DT05UUk9MID0gMjtcbmNvbnN0IE1PRElGSUVSX0JJVF9NRVRBID0gNDtcbmNvbnN0IE1PRElGSUVSX0JJVF9TSElGVCA9IDg7XG5cbi8qKlxuICogQ0RQJ3MgbW9kaWZpZXIgYml0bWFzaywgd2hpY2ggaXMgbm90IHRoZSBzYW1lIHNwZWxsaW5nIGFzIEVsZWN0cm9uJ3Mgc3RyaW5nIGxpc3QuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9jaHJvbWVkZXZ0b29scy5naXRodWIuaW8vZGV2dG9vbHMtcHJvdG9jb2wvdG90L0lucHV0LyNtZXRob2QtZGlzcGF0Y2hLZXlFdmVudH1cbiAqL1xuY29uc3QgQ0RQX01PRElGSUVSX0JJVF9CWV9OQU1FID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oW1xuICBbJ2FsdCcsIE1PRElGSUVSX0JJVF9BTFRdLFxuICBbJ2NvbnRyb2wnLCBNT0RJRklFUl9CSVRfQ09OVFJPTF0sXG4gIFsnbWV0YScsIE1PRElGSUVSX0JJVF9NRVRBXSxcbiAgWydzaGlmdCcsIE1PRElGSUVSX0JJVF9TSElGVF1cbl0pO1xuXG5jb25zdCBLRVlfQ09ERV9CQUNLU1BBQ0UgPSA4O1xuY29uc3QgS0VZX0NPREVfVEFCID0gOTtcbmNvbnN0IEtFWV9DT0RFX0VOVEVSID0gMTM7XG5jb25zdCBLRVlfQ09ERV9FU0NBUEUgPSAyNztcbmNvbnN0IEtFWV9DT0RFX0FSUk9XX0xFRlQgPSAzNztcbmNvbnN0IEtFWV9DT0RFX0FSUk9XX1VQID0gMzg7XG5jb25zdCBLRVlfQ09ERV9BUlJPV19SSUdIVCA9IDM5O1xuY29uc3QgS0VZX0NPREVfQVJST1dfRE9XTiA9IDQwO1xuY29uc3QgS0VZX0NPREVfREVMRVRFID0gNDY7XG5cbi8qKlxuICogTmFtZWQga2V5cywgd2l0aCB0aGUgYHRleHRgIGEgcmVhbCBrZXkgcHJlc3Mgd291bGQgcHJvZHVjZSAoYWJzZW50IHdoZW4gaXQgcHJvZHVjZXMgbm9uZSkuXG4gKlxuICogT25seSBrZXlzIHRoZXNlIHN1aXRlcyBhY3R1YWxseSBwcmVzcyBhcmUgbGlzdGVkLCBwbHVzIHRoZSBlZGl0aW5nIGtleXMgYSBjYWxsZXIgd291bGQgcmVhc29uYWJseSByZWFjaFxuICogZm9yIG5leHQuIEFuIHVua25vd24gbXVsdGktY2hhcmFjdGVyIGtleSBpcyBhIGNhbGxlciBlcnJvciwgbm90IGEgc2lsZW50IG5vLW9wIFx1MjAxNCBzZWVcbiAqIHtAbGluayB0b0tleUNvbW1hbmRzfS5cbiAqL1xuY29uc3QgTkFNRURfS0VZUyA9IG5ldyBNYXA8c3RyaW5nLCBOYW1lZEtleT4oW1xuICBbJ0Fycm93RG93bicsIHsgY29kZTogJ0Fycm93RG93bicsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogS0VZX0NPREVfQVJST1dfRE9XTiB9XSxcbiAgWydBcnJvd0xlZnQnLCB7IGNvZGU6ICdBcnJvd0xlZnQnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0FSUk9XX0xFRlQgfV0sXG4gIFsnQXJyb3dSaWdodCcsIHsgY29kZTogJ0Fycm93UmlnaHQnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0FSUk9XX1JJR0hUIH1dLFxuICBbJ0Fycm93VXAnLCB7IGNvZGU6ICdBcnJvd1VwJywgd2luZG93c1ZpcnR1YWxLZXlDb2RlOiBLRVlfQ09ERV9BUlJPV19VUCB9XSxcbiAgWydCYWNrc3BhY2UnLCB7IGNvZGU6ICdCYWNrc3BhY2UnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0JBQ0tTUEFDRSB9XSxcbiAgWydEZWxldGUnLCB7IGNvZGU6ICdEZWxldGUnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0RFTEVURSB9XSxcbiAgWydFbnRlcicsIHsgY29kZTogJ0VudGVyJywgdGV4dDogJ1xccicsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogS0VZX0NPREVfRU5URVIgfV0sXG4gIFsnRXNjYXBlJywgeyBjb2RlOiAnRXNjYXBlJywgd2luZG93c1ZpcnR1YWxLZXlDb2RlOiBLRVlfQ09ERV9FU0NBUEUgfV0sXG4gIFsnVGFiJywgeyBjb2RlOiAnVGFiJywgdGV4dDogJ1xcdCcsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogS0VZX0NPREVfVEFCIH1dXG5dKTtcblxuY29uc3QgRklSU1RfQ09ERV9QT0lOVF9JTkRFWCA9IDA7XG5jb25zdCBESUdJVF9aRVJPX0NPREVfUE9JTlQgPSBjb2RlUG9pbnRPZignMCcpO1xuY29uc3QgRElHSVRfTklORV9DT0RFX1BPSU5UID0gY29kZVBvaW50T2YoJzknKTtcbmNvbnN0IFVQUEVSQ0FTRV9BX0NPREVfUE9JTlQgPSBjb2RlUG9pbnRPZignQScpO1xuY29uc3QgVVBQRVJDQVNFX1pfQ09ERV9QT0lOVCA9IGNvZGVQb2ludE9mKCdaJyk7XG5cbi8qKlxuICogVGhlIENEUCBzcGVsbGluZyBvZiBvbmUgbmFtZWQga2V5LlxuICovXG5pbnRlcmZhY2UgTmFtZWRLZXkge1xuICByZWFkb25seSBjb2RlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRleHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZXhwcmVzc2lvbiB0aGUgaG9zdCBldmFsdWF0ZXMgdG8gYW5zd2VyIG9uZSBpbnB1dCByZXF1ZXN0LlxuICpcbiAqIE9wdGlvbmFsIGNoYWluaW5nIHRocm91Z2hvdXQ6IGJ5IHRoZSB0aW1lIHRoZSBob3N0IGFuc3dlcnMsIHRoZSBwYWdlIG1heSBoYXZlIG5hdmlnYXRlZCBhbmQgZHJvcHBlZCB0aGVcbiAqIG5hbWVzcGFjZSwgYW5kIGEgYFR5cGVFcnJvcmAgaW5zaWRlIHRoaXMgZXZhbHVhdGUgd291bGQgYmUgcmVwb3J0ZWQgYXMgYW4gaW5qZWN0aW9uIGZhaWx1cmUgdGhhdCBhbHJlYWR5XG4gKiBzdWNjZWVkZWQuXG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIHJlcXVlc3QgaWQgdGhlIHJlbmRlcmVyIGlzIHdhaXRpbmcgb24uXG4gKiBAcGFyYW0gZXJyb3JNZXNzYWdlIC0gV2h5IHRoZSBpbmplY3Rpb24gZmFpbGVkLCB3aGVuIGl0IGRpZC4gT21pdCBvbiBzdWNjZXNzLlxuICogQHJldHVybnMgQSBzZWxmLWNvbnRhaW5lZCBleHByZXNzaW9uIHRvIHBhc3MgdG8gYFJ1bnRpbWUuZXZhbHVhdGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZXNvbHZlSW5wdXRFeHByZXNzaW9uKGlkOiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgd2luZG93Ll9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnJlc29sdmVJbnB1dD8uKCR7SlNPTi5zdHJpbmdpZnkoaWQpfSwgJHtKU09OLnN0cmluZ2lmeShlcnJvck1lc3NhZ2UgPz8gbnVsbCl9KWA7XG59XG5cbi8qKlxuICogVGhlIGZpcnN0IGNvZGUgcG9pbnQgb2YgYSBub24tZW1wdHkgc3RyaW5nLlxuICpcbiAqIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBpcyB0eXBlZCBgbnVtYmVyIHwgdW5kZWZpbmVkYCwgc28gZXZlcnkgY2FsbCBzaXRlIHdvdWxkIG90aGVyd2lzZSBjYXJyeSBhXG4gKiBgPz8gZmFsbGJhY2tgIHRoYXQgbm8gaW5wdXQgY2FuIGV2ZXIgcmVhY2ggXHUyMDE0IGEgZGVhZCBicmFuY2ggdW5kZXIgdGhlIDEwMCUgY292ZXJhZ2UgZ2F0ZS4gVGhyb3dpbmcgaGVyZVxuICoga2VlcHMgdGhhdCBpbXBvc3NpYmxlIGNhc2UgaW4gT05FIHBsYWNlLCB3aGVyZSBhIHVuaXQgdGVzdCBjYW4gcmVhY2ggaXQgZGlyZWN0bHksIGluc3RlYWQgb2Ygc3ByZWFkaW5nXG4gKiB1bnJlYWNoYWJsZSBmYWxsYmFja3MgKG9yIGNvdmVyYWdlIHN1cHByZXNzaW9ucykgYWNyb3NzIHRoZSBtb2R1bGUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBBIG5vbi1lbXB0eSBzdHJpbmcuXG4gKiBAcmV0dXJucyBJdHMgZmlyc3QgY29kZSBwb2ludC5cbiAqIEB0aHJvd3MgV2hlbiBgdGV4dGAgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2RlUG9pbnRPZih0ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBjb2RlUG9pbnQgPSB0ZXh0LmNvZGVQb2ludEF0KEZJUlNUX0NPREVfUE9JTlRfSU5ERVgpO1xuICBpZiAoY29kZVBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvZGVQb2ludE9mIHJlY2VpdmVkIGFuIGVtcHR5IHN0cmluZy4nKTtcbiAgfVxuXG4gIHJldHVybiBjb2RlUG9pbnQ7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlcyBhIG1vYmlsZSBpbnB1dCByZXF1ZXN0IGludG8gdGhlIG9yZGVyZWQgQ0RQIGNvbW1hbmRzIHRoYXQgcmVhbGl6ZSBpdC5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFdoYXQgdGhlIHJlbmRlcmVyIGFza2VkIHRoZSBob3N0IHRvIGluamVjdC5cbiAqIEByZXR1cm5zIFRoZSBjb21tYW5kcyB0byBzZW5kLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2RwSW5wdXRDb21tYW5kcyhyZXF1ZXN0OiBNb2JpbGVJbnB1dFJlcXVlc3QpOiBDZHBJbnB1dENvbW1hbmRbXSB7XG4gIGlmIChyZXF1ZXN0LmtpbmQgPT09ICdrZXknKSB7XG4gICAgcmV0dXJuIHRvS2V5Q29tbWFuZHMocmVxdWVzdCk7XG4gIH1cblxuICByZXR1cm4gdG9Qb2ludGVyQ29tbWFuZHMocmVxdWVzdCk7XG59XG5cbi8qKlxuICogRm9sZHMgcmVzb2x2ZWQgbW9kaWZpZXIgbmFtZXMgaW50byBDRFAncyBiaXRtYXNrLlxuICpcbiAqIFVua25vd24gbmFtZXMgYXJlIGlnbm9yZWQgcmF0aGVyIHRoYW4gdGhyb3dpbmc6IHRoZSByZW5kZXJlcidzIGB0b0VsZWN0cm9uTW9kaWZpZXJzYCBpcyBleGhhdXN0aXZlIG92ZXJcbiAqIE9ic2lkaWFuJ3MgYE1vZGlmaWVyYCB1bmlvbiwgc28gYW4gdW5rbm93biBuYW1lIGhlcmUgd291bGQgbWVhbiB0aGUgdHdvIGNvcGllcyBoYXZlIGFscmVhZHkgZHJpZnRlZCwgYW5kXG4gKiBmYWlsaW5nIHRoZSB3aG9sZSBnZXN0dXJlIGlzIGEgd29yc2Ugb3V0Y29tZSB0aGFuIHByZXNzaW5nIGl0IHVubW9kaWZpZWQuXG4gKlxuICogQHBhcmFtIG1vZGlmaWVycyAtIFJlc29sdmVkIGxvd2VyY2FzZSBtb2RpZmllciBuYW1lcy5cbiAqIEByZXR1cm5zIFRoZSBDRFAgbW9kaWZpZXIgYml0bWFzay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2RwTW9kaWZpZXJzKG1vZGlmaWVyczogcmVhZG9ubHkgc3RyaW5nW10pOiBudW1iZXIge1xuICAvLyBTdW1taW5nIERJU1RJTkNUIGJpdHMgZXF1YWxzIE9SLWluZyB0aGVtLCBhbmQgdGhlIGBTZXRgIGlzIHdoYXQgbWFrZXMgdGhhdCBob2xkIGV2ZW4gd2hlbiBhIGNhbGxlclxuICAvLyBQYXNzZXMgdGhlIHNhbWUgbW9kaWZpZXIgdHdpY2UgXHUyMDE0IHNvIHRoZSBtYXNrIGlzIGJ1aWx0IHdpdGhvdXQgYSBiaXR3aXNlIG9wZXJhdG9yLlxuICBjb25zdCBiaXRzID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgbW9kaWZpZXIgb2YgbW9kaWZpZXJzKSB7XG4gICAgY29uc3QgYml0ID0gQ0RQX01PRElGSUVSX0JJVF9CWV9OQU1FLmdldChtb2RpZmllcik7XG4gICAgaWYgKGJpdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBiaXRzLmFkZChiaXQpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBiaXRtYXNrID0gTk9fTU9ESUZJRVJTO1xuICBmb3IgKGNvbnN0IGJpdCBvZiBiaXRzKSB7XG4gICAgYml0bWFzayArPSBiaXQ7XG4gIH1cblxuICByZXR1cm4gYml0bWFzaztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhIGtleSBuYW1lIHRvIGl0cyBDRFAgc3BlbGxpbmcuXG4gKlxuICogQHBhcmFtIGtleSAtIEEgbmFtZWQga2V5IG9yIGEgc2luZ2xlIHByaW50YWJsZSBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyBUaGUgQ0RQIHNwZWxsaW5nLlxuICovXG5mdW5jdGlvbiByZXNvbHZlS2V5KGtleTogc3RyaW5nKTogTmFtZWRLZXkge1xuICBjb25zdCBuYW1lZEtleSA9IE5BTUVEX0tFWVMuZ2V0KGtleSk7XG4gIGlmIChuYW1lZEtleSkge1xuICAgIHJldHVybiBuYW1lZEtleTtcbiAgfVxuXG4gIC8vIFwiRXhhY3RseSBvbmUgY29kZSBwb2ludFwiLCB0ZXN0ZWQgd2l0aG91dCBzcGxpdHRpbmcgdGhlIHN0cmluZzogYGZyb21Db2RlUG9pbnRgIHJvdW5kLXRyaXBzIG9ubHkgd2hlblxuICAvLyBga2V5YCBpcyB0aGF0IHNpbmdsZSBjb2RlIHBvaW50LCBzbyBhbiBhc3RyYWwtcGxhbmUgY2hhcmFjdGVyIGNvdW50cyBhcyBvbmUgYW5kIGAnQ3RybCtLJ2AgZG9lcyBub3QuXG4gIGNvbnN0IGNvZGVQb2ludCA9IGtleS5jb2RlUG9pbnRBdChGSVJTVF9DT0RFX1BPSU5UX0lOREVYKTtcbiAgaWYgKGNvZGVQb2ludCA9PT0gdW5kZWZpbmVkIHx8IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludCkgIT09IGtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwcmVzc0tleSByZWNlaXZlZCBhbiB1bmtub3duIGtleSBuYW1lIG9uIG1vYmlsZTogJHtKU09OLnN0cmluZ2lmeShrZXkpfS4gYFxuICAgICAgICArIGBQYXNzIGEgc2luZ2xlIGNoYXJhY3RlciBvciBvbmUgb2Y6ICR7Wy4uLk5BTUVEX0tFWVMua2V5cygpXS5qb2luKCcsICcpfS5gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHVwcGVyQ2FzZWRDb2RlUG9pbnQgPSBjb2RlUG9pbnRPZihrZXkudG9VcHBlckNhc2UoKSk7XG4gIHJldHVybiB7XG4gICAgY29kZTogcmVzb2x2ZUtleUNvZGUodXBwZXJDYXNlZENvZGVQb2ludCksXG4gICAgdGV4dDoga2V5LFxuICAgIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogdXBwZXJDYXNlZENvZGVQb2ludFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwaHlzaWNhbCBgY29kZWAgZm9yIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci5cbiAqXG4gKiBDaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEFTQ0lJIGxldHRlci9kaWdpdCByb3dzIGhhdmUgbm8gc3RhYmxlIHBoeXNpY2FsIGtleSwgc28gdGhleSBnZXQgYW4gZW1wdHlcbiAqIGBjb2RlYCBcdTIwMTQgdGhlIGB0ZXh0YCBzdGlsbCBjYXJyaWVzIHRoZW0sIHdoaWNoIGlzIHdoYXQgYW4gZWRpdG9yIHJlYWRzLlxuICpcbiAqIEBwYXJhbSB1cHBlckNhc2VkQ29kZVBvaW50IC0gVGhlIGNoYXJhY3RlcidzIHVwcGVyLWNhc2VkIGNvZGUgcG9pbnQuXG4gKiBAcmV0dXJucyBUaGUgQ0RQIGBjb2RlYCwgb3IgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlcmUgaXMgbm8gc3RhYmxlIG9uZS5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUtleUNvZGUodXBwZXJDYXNlZENvZGVQb2ludDogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHVwcGVyQ2FzZWRDb2RlUG9pbnQgPj0gVVBQRVJDQVNFX0FfQ09ERV9QT0lOVCAmJiB1cHBlckNhc2VkQ29kZVBvaW50IDw9IFVQUEVSQ0FTRV9aX0NPREVfUE9JTlQpIHtcbiAgICByZXR1cm4gYEtleSR7U3RyaW5nLmZyb21Db2RlUG9pbnQodXBwZXJDYXNlZENvZGVQb2ludCl9YDtcbiAgfVxuXG4gIGlmICh1cHBlckNhc2VkQ29kZVBvaW50ID49IERJR0lUX1pFUk9fQ09ERV9QT0lOVCAmJiB1cHBlckNhc2VkQ29kZVBvaW50IDw9IERJR0lUX05JTkVfQ09ERV9QT0lOVCkge1xuICAgIHJldHVybiBgRGlnaXQke1N0cmluZy5mcm9tQ29kZVBvaW50KHVwcGVyQ2FzZWRDb2RlUG9pbnQpfWA7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjb21tYW5kIHNlcXVlbmNlIGZvciBhIGtleSBwcmVzcy5cbiAqXG4gKiBNaXJyb3JzIHRoZSBkZXNrdG9wIHR3aW4ncyB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgIGluIENEUCdzIHNwZWxsaW5nOiBgcmF3S2V5RG93bmAgZmlyZXNcbiAqIGBrZXlkb3duYCBhbG9uZSwgYGNoYXJgIGZpcmVzIGBrZXlwcmVzc2AgLyBgYmVmb3JlaW5wdXRgIC8gYGlucHV0YCwgYGtleVVwYCBmaXJlcyBga2V5dXBgLiBBIGtleSB0aGF0XG4gKiBwcm9kdWNlcyBubyB0ZXh0IChgRXNjYXBlYCkgc2tpcHMgdGhlIGBjaGFyYCwgZXhhY3RseSBhcyBhIHJlYWwgb25lIGRvZXMuXG4gKlxuICogQHBhcmFtIHJlcXVlc3QgLSBUaGUga2V5IHJlcXVlc3QuXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZHMgdG8gc2VuZCwgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5Q29tbWFuZHMocmVxdWVzdDogTW9iaWxlS2V5SW5wdXRSZXF1ZXN0KTogQ2RwSW5wdXRDb21tYW5kW10ge1xuICBjb25zdCB7IGNvZGUsIHRleHQsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSB9ID0gcmVzb2x2ZUtleShyZXF1ZXN0LmtleSk7XG4gIGNvbnN0IG1vZGlmaWVycyA9IHRvQ2RwTW9kaWZpZXJzKHJlcXVlc3QubW9kaWZpZXJzKTtcbiAgY29uc3QgYmFzZSA9IHsgY29kZSwga2V5OiByZXF1ZXN0LmtleSwgbW9kaWZpZXJzLCB3aW5kb3dzVmlydHVhbEtleUNvZGUgfTtcblxuICBjb25zdCBjb21tYW5kczogQ2RwSW5wdXRDb21tYW5kW10gPSBbXG4gICAgeyBtZXRob2Q6ICdJbnB1dC5kaXNwYXRjaEtleUV2ZW50JywgcGFyYW1zOiB7IC4uLmJhc2UsIHR5cGU6ICdyYXdLZXlEb3duJyB9IH1cbiAgXTtcblxuICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tbWFuZHMucHVzaCh7IG1ldGhvZDogJ0lucHV0LmRpc3BhdGNoS2V5RXZlbnQnLCBwYXJhbXM6IHsgLi4uYmFzZSwgdGV4dCwgdHlwZTogJ2NoYXInIH0gfSk7XG4gIH1cblxuICBjb21tYW5kcy5wdXNoKHsgbWV0aG9kOiAnSW5wdXQuZGlzcGF0Y2hLZXlFdmVudCcsIHBhcmFtczogeyAuLi5iYXNlLCB0eXBlOiAna2V5VXAnIH0gfSk7XG5cbiAgcmV0dXJuIGNvbW1hbmRzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgY29tbWFuZCBzZXF1ZW5jZSBmb3IgYSB0YXAgb3IgYSBsb25nLXByZXNzLlxuICpcbiAqICoqVGhlIHR3byBnZXN0dXJlcyB0YWtlIGRpZmZlcmVudCBDRFAgcm91dGVzLCBhbmQgdGhhdCBhc3ltbWV0cnkgaXMgdGhlIHdob2xlIHBvaW50LioqXG4gKlxuICogQSB0YXAgaXMgYSB0cnVzdGVkIHRvdWNoIHBhaXIsIHdoaWNoIGlzIGFsbCBDaHJvbWl1bSBuZWVkcyBcdTIwMTQgaXQgc3ludGhlc2l6ZXMgYHBvaW50ZXJkb3duYCAvXG4gKiBgdG91Y2hzdGFydGAgLyBgcG9pbnRlcnVwYCAvIGB0b3VjaGVuZGAgLyBgY2xpY2tgIGZyb20gaXQsIGV2ZXJ5IG9uZSBgaXNUcnVzdGVkYC4gVGhlIHJlbGVhc2UgY2Fycmllc1xuICogYW4gZW1wdHkgYHRvdWNoUG9pbnRzYCBsaXN0LCB3aGljaCBpcyBDRFAncyBzcGVsbGluZyBmb3IgXCJhbGwgZmluZ2VycyBsaWZ0ZWRcIi5cbiAqXG4gKiBBIGxvbmctcHJlc3MgY2Fubm90IGJlIHRoYXQgc2FtZSBwYWlyIGhlbGQgYXBhcnQgYnkgYSBkd2VsbCwgYmVjYXVzZSBgSW5wdXQuZGlzcGF0Y2hUb3VjaEV2ZW50YCBpbmplY3RzXG4gKiBhIGBXZWJUb3VjaEV2ZW50YCAqKnBhc3QqKiBBbmRyb2lkJ3MgZ2VzdHVyZSByZWNvZ25pemVyOiBubyByZWNvZ25pemVyIHNlZXMgdGhlIGhvbGQsIHNvIG5vIGxvbmctcHJlc3NcbiAqIGdlc3R1cmUgaXMgZXZlciBwcm9kdWNlZCBhbmQgdGhlIHBhaXIgaXMgY2xhc3NpZmllZCBhcyBhIHRhcCBob3dldmVyIGxvbmcgdGhlIGR3ZWxsIGlzLlxuICogYElucHV0LnN5bnRoZXNpemVUYXBHZXN0dXJlYCBpbnN0ZWFkIGdvZXMgdGhyb3VnaCBDaHJvbWl1bSdzIHN5bnRoZXRpYy1nZXN0dXJlIGNvbnRyb2xsZXIsIHdoaWNoIGJ1aWxkc1xuICogcmVhbCBgTW90aW9uRXZlbnRgcyBhbmQgZmVlZHMgdGhlbSB0byB0aGUgcGxhdGZvcm0gcmVjb2duaXplciBcdTIwMTQgdGhlIHN0ZXAgdGhlIGRpc3BhdGNoIHJvdXRlIHNraXBzLlxuICpcbiAqIE1lYXN1cmVkIG9uIGEgbGl2ZSBlbXVsYXRvciAoMjAyNi0wOS0wOCk6IHRoZSBkaXNwYXRjaCBwYWlyIHdpdGggYSA2MDBtcyBkd2VsbCwgYWltZWQgYXQgYSAqKnJlYWwqKlxuICogYC5uYXYtZmlsZS10aXRsZWAgaW4gdGhlIGZpbGUgZXhwbG9yZXIsIHByb2R1Y2VkIGBwb2ludGVyZG93bmAgLyBgdG91Y2hzdGFydGAgLyBgdG91Y2hlbmRgIC8gYGNsaWNrYCBhbmRcbiAqICoqb3BlbmVkIHRoZSBub3RlKiogXHUyMDE0IGEgdGFwLiBObyBgY29udGV4dG1lbnVgLCBhbmQgbm8gT2JzaWRpYW4gbWVudS5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFRoZSBwb2ludGVyIHJlcXVlc3QuXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZHMgdG8gc2VuZCwgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIHRvUG9pbnRlckNvbW1hbmRzKHJlcXVlc3Q6IE1vYmlsZVBvaW50ZXJJbnB1dFJlcXVlc3QpOiBDZHBJbnB1dENvbW1hbmRbXSB7XG4gIGNvbnN0IG1vZGlmaWVycyA9IHRvQ2RwTW9kaWZpZXJzKHJlcXVlc3QubW9kaWZpZXJzKTtcblxuICBpZiAocmVxdWVzdC5raW5kID09PSAnbG9uZ1ByZXNzJykge1xuICAgIC8vIGBzeW50aGVzaXplVGFwR2VzdHVyZWAgdGFrZXMgbm8gbW9kaWZpZXIgYml0bWFzayBcdTIwMTQgQ0RQJ3MgZ2VzdHVyZSBBUEkgaGFzIG5vIHBhcmFtZXRlciBmb3Igb25lIFx1MjAxNCBhbmRcbiAgICAvLyBBIHRvdWNoIHNjcmVlbiBoYXMgbm8gbW9kaWZpZXIga2V5cyB0byBob2xkIGR1cmluZyBhIHByZXNzLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGNhcnJ5IGhlcmUuXG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnSW5wdXQuc3ludGhlc2l6ZVRhcEdlc3R1cmUnLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBkdXJhdGlvbjogTE9OR19QUkVTU19EV0VMTF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICAgICAgZ2VzdHVyZVNvdXJjZVR5cGU6ICd0b3VjaCcsXG4gICAgICAgICAgeDogcmVxdWVzdC54LFxuICAgICAgICAgIHk6IHJlcXVlc3QueVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbWV0aG9kOiAnSW5wdXQuZGlzcGF0Y2hUb3VjaEV2ZW50JyxcbiAgICAgIHBhcmFtczogeyBtb2RpZmllcnMsIHRvdWNoUG9pbnRzOiBbeyB4OiByZXF1ZXN0LngsIHk6IHJlcXVlc3QueSB9XSwgdHlwZTogJ3RvdWNoU3RhcnQnIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG1ldGhvZDogJ0lucHV0LmRpc3BhdGNoVG91Y2hFdmVudCcsXG4gICAgICBwYXJhbXM6IHsgbW9kaWZpZXJzLCB0b3VjaFBvaW50czogW10sIHR5cGU6ICd0b3VjaEVuZCcgfVxuICAgIH1cbiAgXTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXNCTyxNQUFNLDRCQUE0QjtBQVNsQyxNQUFNLHVDQUF1QztBQTZHcEQsTUFBTSxtQ0FBbUM7QUFFekMsTUFBTSxlQUFlO0FBQ3JCLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sdUJBQXVCO0FBQzdCLE1BQU0sb0JBQW9CO0FBQzFCLE1BQU0scUJBQXFCO0FBTzNCLE1BQU0sMkJBQTJCLG9CQUFJLElBQW9CO0FBQUEsRUFDdkQsQ0FBQyxPQUFPLGdCQUFnQjtBQUFBLEVBQ3hCLENBQUMsV0FBVyxvQkFBb0I7QUFBQSxFQUNoQyxDQUFDLFFBQVEsaUJBQWlCO0FBQUEsRUFDMUIsQ0FBQyxTQUFTLGtCQUFrQjtBQUM5QixDQUFDO0FBRUQsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSxlQUFlO0FBQ3JCLE1BQU0saUJBQWlCO0FBQ3ZCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sb0JBQW9CO0FBQzFCLE1BQU0sdUJBQXVCO0FBQzdCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sa0JBQWtCO0FBU3hCLE1BQU0sYUFBYSxvQkFBSSxJQUFzQjtBQUFBLEVBQzNDLENBQUMsYUFBYSxFQUFFLE1BQU0sYUFBYSx1QkFBdUIsb0JBQW9CLENBQUM7QUFBQSxFQUMvRSxDQUFDLGFBQWEsRUFBRSxNQUFNLGFBQWEsdUJBQXVCLG9CQUFvQixDQUFDO0FBQUEsRUFDL0UsQ0FBQyxjQUFjLEVBQUUsTUFBTSxjQUFjLHVCQUF1QixxQkFBcUIsQ0FBQztBQUFBLEVBQ2xGLENBQUMsV0FBVyxFQUFFLE1BQU0sV0FBVyx1QkFBdUIsa0JBQWtCLENBQUM7QUFBQSxFQUN6RSxDQUFDLGFBQWEsRUFBRSxNQUFNLGFBQWEsdUJBQXVCLG1CQUFtQixDQUFDO0FBQUEsRUFDOUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxVQUFVLHVCQUF1QixnQkFBZ0IsQ0FBQztBQUFBLEVBQ3JFLENBQUMsU0FBUyxFQUFFLE1BQU0sU0FBUyxNQUFNLE1BQU0sdUJBQXVCLGVBQWUsQ0FBQztBQUFBLEVBQzlFLENBQUMsVUFBVSxFQUFFLE1BQU0sVUFBVSx1QkFBdUIsZ0JBQWdCLENBQUM7QUFBQSxFQUNyRSxDQUFDLE9BQU8sRUFBRSxNQUFNLE9BQU8sTUFBTSxLQUFNLHVCQUF1QixhQUFhLENBQUM7QUFDMUUsQ0FBQztBQUVELE1BQU0seUJBQXlCO0FBQy9CLE1BQU0sd0JBQXdCLFlBQVksR0FBRztBQUM3QyxNQUFNLHdCQUF3QixZQUFZLEdBQUc7QUFDN0MsTUFBTSx5QkFBeUIsWUFBWSxHQUFHO0FBQzlDLE1BQU0seUJBQXlCLFlBQVksR0FBRztBQXNCdkMsU0FBUyw0QkFBNEIsSUFBWSxjQUErQjtBQUNyRixTQUFPLHVEQUF1RCxLQUFLLFVBQVUsRUFBRSxDQUFDLEtBQUssS0FBSyxVQUFVLGdCQUFnQixJQUFJLENBQUM7QUFDM0g7QUFjTyxTQUFTLFlBQVksTUFBc0I7QUFDaEQsUUFBTSxZQUFZLEtBQUssWUFBWSxzQkFBc0I7QUFDekQsTUFBSSxjQUFjLFFBQVc7QUFDM0IsVUFBTSxJQUFJLE1BQU0sdUNBQXVDO0FBQUEsRUFDekQ7QUFFQSxTQUFPO0FBQ1Q7QUFRTyxTQUFTLG1CQUFtQixTQUFnRDtBQUNqRixNQUFJLFFBQVEsU0FBUyxPQUFPO0FBQzFCLFdBQU8sY0FBYyxPQUFPO0FBQUEsRUFDOUI7QUFFQSxTQUFPLGtCQUFrQixPQUFPO0FBQ2xDO0FBWU8sU0FBUyxlQUFlLFdBQXNDO0FBR25FLFFBQU0sT0FBTyxvQkFBSSxJQUFZO0FBQzdCLGFBQVcsWUFBWSxXQUFXO0FBQ2hDLFVBQU0sTUFBTSx5QkFBeUIsSUFBSSxRQUFRO0FBQ2pELFFBQUksUUFBUSxRQUFXO0FBQ3JCLFdBQUssSUFBSSxHQUFHO0FBQUEsSUFDZDtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFVBQVU7QUFDZCxhQUFXLE9BQU8sTUFBTTtBQUN0QixlQUFXO0FBQUEsRUFDYjtBQUVBLFNBQU87QUFDVDtBQVFBLFNBQVMsV0FBVyxLQUF1QjtBQUN6QyxRQUFNLFdBQVcsV0FBVyxJQUFJLEdBQUc7QUFDbkMsTUFBSSxVQUFVO0FBQ1osV0FBTztBQUFBLEVBQ1Q7QUFJQSxRQUFNLFlBQVksSUFBSSxZQUFZLHNCQUFzQjtBQUN4RCxNQUFJLGNBQWMsVUFBYSxPQUFPLGNBQWMsU0FBUyxNQUFNLEtBQUs7QUFDdEUsVUFBTSxJQUFJO0FBQUEsTUFDUixvREFBb0QsS0FBSyxVQUFVLEdBQUcsQ0FBQyx3Q0FDN0IsQ0FBQyxHQUFHLFdBQVcsS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxJQUM3RTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLHNCQUFzQixZQUFZLElBQUksWUFBWSxDQUFDO0FBQ3pELFNBQU87QUFBQSxJQUNMLE1BQU0sZUFBZSxtQkFBbUI7QUFBQSxJQUN4QyxNQUFNO0FBQUEsSUFDTix1QkFBdUI7QUFBQSxFQUN6QjtBQUNGO0FBV0EsU0FBUyxlQUFlLHFCQUFxQztBQUMzRCxNQUFJLHVCQUF1QiwwQkFBMEIsdUJBQXVCLHdCQUF3QjtBQUNsRyxXQUFPLE1BQU0sT0FBTyxjQUFjLG1CQUFtQixDQUFDO0FBQUEsRUFDeEQ7QUFFQSxNQUFJLHVCQUF1Qix5QkFBeUIsdUJBQXVCLHVCQUF1QjtBQUNoRyxXQUFPLFFBQVEsT0FBTyxjQUFjLG1CQUFtQixDQUFDO0FBQUEsRUFDMUQ7QUFFQSxTQUFPO0FBQ1Q7QUFZQSxTQUFTLGNBQWMsU0FBbUQ7QUFDeEUsUUFBTSxFQUFFLE1BQU0sTUFBTSxzQkFBc0IsSUFBSSxXQUFXLFFBQVEsR0FBRztBQUNwRSxRQUFNLFlBQVksZUFBZSxRQUFRLFNBQVM7QUFDbEQsUUFBTSxPQUFPLEVBQUUsTUFBTSxLQUFLLFFBQVEsS0FBSyxXQUFXLHNCQUFzQjtBQUV4RSxRQUFNLFdBQThCO0FBQUEsSUFDbEMsRUFBRSxRQUFRLDBCQUEwQixRQUFRLEVBQUUsR0FBRyxNQUFNLE1BQU0sYUFBYSxFQUFFO0FBQUEsRUFDOUU7QUFFQSxNQUFJLFNBQVMsUUFBVztBQUN0QixhQUFTLEtBQUssRUFBRSxRQUFRLDBCQUEwQixRQUFRLEVBQUUsR0FBRyxNQUFNLE1BQU0sTUFBTSxPQUFPLEVBQUUsQ0FBQztBQUFBLEVBQzdGO0FBRUEsV0FBUyxLQUFLLEVBQUUsUUFBUSwwQkFBMEIsUUFBUSxFQUFFLEdBQUcsTUFBTSxNQUFNLFFBQVEsRUFBRSxDQUFDO0FBRXRGLFNBQU87QUFDVDtBQXdCQSxTQUFTLGtCQUFrQixTQUF1RDtBQUNoRixRQUFNLFlBQVksZUFBZSxRQUFRLFNBQVM7QUFFbEQsTUFBSSxRQUFRLFNBQVMsYUFBYTtBQUdoQyxXQUFPO0FBQUEsTUFDTDtBQUFBLFFBQ0UsUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFVBQ04sVUFBVTtBQUFBLFVBQ1YsbUJBQW1CO0FBQUEsVUFDbkIsR0FBRyxRQUFRO0FBQUEsVUFDWCxHQUFHLFFBQVE7QUFBQSxRQUNiO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxNQUNFLFFBQVE7QUFBQSxNQUNSLFFBQVEsRUFBRSxXQUFXLGFBQWEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxNQUFNLGFBQWE7QUFBQSxJQUN6RjtBQUFBLElBQ0E7QUFBQSxNQUNFLFFBQVE7QUFBQSxNQUNSLFFBQVEsRUFBRSxXQUFXLGFBQWEsQ0FBQyxHQUFHLE1BQU0sV0FBVztBQUFBLElBQ3pEO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|