@dbx-tools/genie 0.9.5 → 0.9.7
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/README.md +5 -5
- package/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/agent-mode.js +4 -4
- package/lib/src/chat.js +4 -4
- package/lib/src/space.js +5 -5
- package/package.json +4 -4
- package/src/agent-mode.ts +3 -3
- package/src/chat.ts +3 -3
- package/src/space.ts +4 -4
package/README.md
CHANGED
|
@@ -90,10 +90,10 @@ for await (const message of chat.genieChat(spaceId, "Top stores by revenue?")) {
|
|
|
90
90
|
`chat.genieChat()` starts an Agent Mode response or continues an existing
|
|
91
91
|
conversation, projects SSE output into `GenieMessage` snapshots, filters
|
|
92
92
|
identical consecutive payloads, and stops after a terminal response. Set
|
|
93
|
-
`agentMode: false` to force the
|
|
94
|
-
Use it when you want to run your own diffing or persist the
|
|
95
|
-
shape. Agent Mode returns query output inline as Markdown; use
|
|
96
|
-
consumer specifically requires
|
|
93
|
+
`agentMode: false` to force the Conversation API start/create/get-message
|
|
94
|
+
polling flow. Use it when you want to run your own diffing or persist the
|
|
95
|
+
normalized wire shape. Agent Mode returns query output inline as Markdown; use
|
|
96
|
+
polling when a consumer specifically requires a `statement_id`.
|
|
97
97
|
|
|
98
98
|
## Continue A Conversation
|
|
99
99
|
|
|
@@ -166,7 +166,7 @@ thrown.
|
|
|
166
166
|
- `agentMode` - use Agent Mode SSE, default `true`; `false` forces polling.
|
|
167
167
|
- `enableVisualization` - request Agent Mode visualization generation.
|
|
168
168
|
- `workspaceClient` - explicit Databricks SDK client.
|
|
169
|
-
- `pollIntervalMs` -
|
|
169
|
+
- `pollIntervalMs` - fallback polling cadence, default `500`.
|
|
170
170
|
- `context` - SDK `Context` or `AbortSignal` for cancellation.
|
|
171
171
|
|
|
172
172
|
## Modules
|
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/genie";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.7";
|
|
7
7
|
export * as agentMode from "./src/agent-mode.ts";
|
|
8
8
|
export * as chat from "./src/chat.ts";
|
|
9
9
|
export * as space from "./src/space.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/genie";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.7";
|
|
3
3
|
export * as agentMode from "./src/agent-mode.ts";
|
|
4
4
|
export * as chat from "./src/chat.ts";
|
|
5
5
|
export * as space from "./src/space.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/genie";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.7";
|
|
6
6
|
export * as agentMode from "./src/agent-mode.js";
|
|
7
7
|
export * as chat from "./src/chat.js";
|
|
8
8
|
export * as space from "./src/space.js";
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvZ2VuaWVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS43XCI7XG5leHBvcnQgKiBhcyBhZ2VudE1vZGUgZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXQgZnJvbSBcIi4vc3JjL2NoYXQudHNcIjtcbmV4cG9ydCAqIGFzIHNwYWNlIGZyb20gXCIuL3NyYy9zcGFjZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUFnZW50TW9kZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUNoYXRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2NoYXQudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2V0R2VuaWVTcGFjZU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvc3BhY2UudHNcIjtcbiJdfQ==
|
package/lib/src/agent-mode.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
11
11
|
import { databricks } from "@dbx-tools/appkit";
|
|
12
|
-
import {
|
|
12
|
+
import { errorUtils, json, log, object } from "@dbx-tools/shared-core";
|
|
13
13
|
import { agentMode as agentModeWire, } from "@dbx-tools/shared-genie";
|
|
14
14
|
const logger = log.logger("genie/agent-mode");
|
|
15
15
|
const CANCEL_TIMEOUT_MS = 5_000;
|
|
@@ -68,7 +68,7 @@ export async function* genieAgentModeChat(client, agentId, content, options = {}
|
|
|
68
68
|
}
|
|
69
69
|
/** Return whether Agent Mode is disabled or its preview toggle is unavailable. */
|
|
70
70
|
export function isAgentModeUnavailable(value) {
|
|
71
|
-
const context =
|
|
71
|
+
const context = errorUtils.errorContext(value);
|
|
72
72
|
return context.hasMessage("feature", "disabled") || context.hasMessage("preview", "toggle");
|
|
73
73
|
}
|
|
74
74
|
function isReadableStream(value) {
|
|
@@ -93,7 +93,7 @@ async function cancelResponse(client, agentId, conversationId, responseId) {
|
|
|
93
93
|
agentId,
|
|
94
94
|
conversationId,
|
|
95
95
|
responseId,
|
|
96
|
-
error:
|
|
96
|
+
error: errorUtils.errorMessage(err),
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
finally {
|
|
@@ -138,4 +138,4 @@ function parseSseFrame(frame) {
|
|
|
138
138
|
return undefined;
|
|
139
139
|
return agentModeWire.GenieAgentModeEventSchema.parse(json.parse(data));
|
|
140
140
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUdILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLFNBQVMsSUFBSSxhQUFhLEdBRzNCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzlDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBU2hDLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxrQkFBa0IsQ0FDdkMsTUFBdUIsRUFDdkIsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUFpQyxFQUFFO0lBRW5DLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUM1RSxNQUFNLFVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87WUFDN0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN2QyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxlQUFnQixDQUFDLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDN0M7WUFDRSxJQUFJLEVBQUUseUJBQXlCLGtC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QUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNqRCxPQUFPLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmllIEFnZW50IE1vZGUgU1NFIHRyYW5zcG9ydC5cbiAqXG4gKiBTdHJlYW1zIHRoZSBSZXNwb25zZXMtc2hhcGVkIEFnZW50IE1vZGUgQVBJIGFuZCBwcm9qZWN0cyBpdHMgcmVhc29uaW5nLCBTUUwsXG4gKiBxdWVyeSBvdXRwdXQsIGFuZCBmaW5hbCBhbnN3ZXIgaXRlbXMgb250byB0aGUgZXhpc3RpbmcgYEdlbmllTWVzc2FnZWBcbiAqIGNvbnRyYWN0IHNvIGNhbGxlcnMgY2FuIGtlZXAgb25lIHNlbWFudGljIGV2ZW50IHBpcGVsaW5lIGFjcm9zcyBBZ2VudCBNb2RlXG4gKiBhbmQgdGhlIGxlZ2FjeSBwb2xsaW5nIEFQSS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBlcnJvciwganNvbiwgbG9nLCBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgYWdlbnRNb2RlIGFzIGFnZW50TW9kZVdpcmUsXG4gIHR5cGUgR2VuaWVBZ2VudE1vZGVFdmVudCxcbiAgdHlwZSBHZW5pZU1lc3NhZ2UsXG59IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZVwiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZ2VuaWUvYWdlbnQtbW9kZVwiKTtcbmNvbnN0IENBTkNFTF9USU1FT1VUX01TID0gNV8wMDA7XG5cbi8qKiBJbnB1dHMgZm9yIG9uZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHN0cmVhbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuaWVBZ2VudE1vZGVPcHRpb25zIHtcbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7XG4gIGVuYWJsZVZpc3VhbGl6YXRpb24/OiBib29sZWFuO1xuICBjb250ZXh0PzogZGF0YWJyaWNrcy5Db250ZXh0TGlrZTtcbn1cblxuLyoqIFN0cmVhbSBvbmUgQWdlbnQgTW9kZSByZXNwb25zZSBhcyBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdHMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGdlbmllQWdlbnRNb2RlQ2hhdChcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnQsXG4gIGFnZW50SWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zOiBHZW5pZUFnZW50TW9kZU9wdGlvbnMgPSB7fSxcbik6IEFzeW5jR2VuZXJhdG9yPEdlbmllTWVzc2FnZSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBvd25lZENvbnRyb2xsZXIgPSBvcHRpb25zLmNvbnRleHQgPyB1bmRlZmluZWQgOiBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHByb2plY3Rpb24gPSBuZXcgYWdlbnRNb2RlV2lyZS5HZW5pZUFnZW50TW9kZVByb2plY3Rpb24oYWdlbnRJZCwgY29udGVudCk7XG4gIHRyeSB7XG4gICAgY29uc3QgY29udGV4dCA9IG9wdGlvbnMuY29udGV4dFxuICAgICAgPyBkYXRhYnJpY2tzLnRvQ29udGV4dChvcHRpb25zLmNvbnRleHQpXG4gICAgICA6IGRhdGFicmlja3MudG9Db250ZXh0KG93bmVkQ29udHJvbGxlciEpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmFwaUNsaWVudC5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICBwYXRoOiBgL2FwaS8yLjAvZ2VuaWUvYWdlbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFnZW50SWQpfS9yZXNwb25zZXNgLFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICAgYWNjZXB0OiBcInRleHQvZXZlbnQtc3RyZWFtXCIsXG4gICAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0pLFxuICAgICAgICByYXc6IHRydWUsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICBpbnB1dDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcIm1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgcm9sZTogXCJ1c2VyXCIsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IFt7IHR5cGU6IFwiaW5wdXRfdGV4dFwiLCB0ZXh0OiBjb250ZW50IH1dLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIC4uLihvcHRpb25zLmNvbnZlcnNhdGlvbklkID8geyBjb252ZXJzYXRpb25faWQ6IG9wdGlvbnMuY29udmVyc2F0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9ucy5lbmFibGVWaXN1YWxpemF0aW9uID8geyBlbmFibGVfdml6OiB0cnVlIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY29udGV4dCxcbiAgICApO1xuICAgIGNvbnN0IHN0cmVhbSA9IG9iamVjdC5pc1JlY29yZChyZXNwb25zZSkgPyByZXNwb25zZS5jb250ZW50cyA6IHVuZGVmaW5lZDtcbiAgICBpZiAoIWlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmllIEFnZW50IE1vZGUgZGlkIG5vdCByZXR1cm4gYW4gU1NFIHN0cmVhbVwiKTtcbiAgICB9XG5cbiAgICBsZXQgcHJldmlvdXM6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIHBhcnNlU3NlKHN0cmVhbSkpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBwcm9qZWN0aW9uLmFwcGx5KGV2ZW50KTtcbiAgICAgIGlmICghbWVzc2FnZSkgY29udGludWU7XG4gICAgICBpZiAoIW9iamVjdC5kZWVwRXF1YWwobWVzc2FnZSwgcHJldmlvdXMpKSB7XG4gICAgICAgIHlpZWxkIG1lc3NhZ2U7XG4gICAgICAgIHByZXZpb3VzID0gbWVzc2FnZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFwcm9qZWN0aW9uLnRlcm1pbmFsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5pZSBBZ2VudCBNb2RlIHN0cmVhbSBlbmRlZCBiZWZvcmUgYSB0ZXJtaW5hbCByZXNwb25zZVwiKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgb3duZWRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIGlmICghcHJvamVjdGlvbi50ZXJtaW5hbCAmJiBwcm9qZWN0aW9uLnJlc3BvbnNlSWQgJiYgcHJvamVjdGlvbi5jb252ZXJzYXRpb25JZCkge1xuICAgICAgYXdhaXQgY2FuY2VsUmVzcG9uc2UoY2xpZW50LCBhZ2VudElkLCBwcm9qZWN0aW9uLmNvbnZlcnNhdGlvbklkLCBwcm9qZWN0aW9uLnJlc3BvbnNlSWQpO1xuICAgIH1cbiAgfVxufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgQWdlbnQgTW9kZSBpcyBkaXNhYmxlZCBvciBpdHMgcHJldmlldyB0b2dnbGUgaXMgdW5hdmFpbGFibGUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBZ2VudE1vZGVVbmF2YWlsYWJsZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICBjb25zdCBjb250ZXh0ID0gZXJyb3IuZXJyb3JDb250ZXh0KHZhbHVlKTtcbiAgcmV0dXJuIGNvbnRleHQuaGFzTWVzc2FnZShcImZlYXR1cmVcIiwgXCJkaXNhYmxlZFwiKSB8fCBjb250ZXh0Lmhhc01lc3NhZ2UoXCJwcmV2aWV3XCIsIFwidG9nZ2xlXCIpO1xufVxuXG5mdW5jdGlvbiBpc1JlYWRhYmxlU3RyZWFtKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4ge1xuICByZXR1cm4gb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUuZ2V0UmVhZGVyID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbmNlbFJlc3BvbnNlKFxuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudCxcbiAgYWdlbnRJZDogc3RyaW5nLFxuICBjb252ZXJzYXRpb25JZDogc3RyaW5nLFxuICByZXNwb25zZUlkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCBDQU5DRUxfVElNRU9VVF9NUyk7XG4gIHRyeSB7XG4gICAgYXdhaXQgY2xpZW50LmFwaUNsaWVudC5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICBwYXRoOiBgL2FwaS8yLjAvZ2VuaWUvYWdlbnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGFnZW50SWQpfS9jb252ZXJzYXRpb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGNvbnZlcnNhdGlvbklkKX0vcmVzcG9uc2VzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlc3BvbnNlSWQpfS9jYW5jZWxgLFxuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh7XG4gICAgICAgICAgYWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgfSksXG4gICAgICAgIHJhdzogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZGF0YWJyaWNrcy50b0NvbnRleHQoY29udHJvbGxlciksXG4gICAgKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwicmVzcG9uc2U6Y2FuY2VsLWZhaWxlZFwiLCB7XG4gICAgICBhZ2VudElkLFxuICAgICAgY29udmVyc2F0aW9uSWQsXG4gICAgICByZXNwb25zZUlkLFxuICAgICAgZXJyb3I6IGVycm9yLmVycm9yTWVzc2FnZShlcnIpLFxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiogcGFyc2VTc2UoXG4gIHN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4sXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZUFnZW50TW9kZUV2ZW50LCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuICBsZXQgYnVmZmVyID0gXCJcIjtcbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06ICFkb25lIH0pO1xuICAgICAgY29uc3QgZnJhbWVzID0gYnVmZmVyLnNwbGl0KC9cXHI/XFxuXFxyP1xcbi8pO1xuICAgICAgYnVmZmVyID0gZnJhbWVzLnBvcCgpID8/IFwiXCI7XG4gICAgICBmb3IgKGNvbnN0IGZyYW1lIG9mIGZyYW1lcykge1xuICAgICAgICBjb25zdCBldmVudCA9IHBhcnNlU3NlRnJhbWUoZnJhbWUpO1xuICAgICAgICBpZiAoZXZlbnQpIHlpZWxkIGV2ZW50O1xuICAgICAgfVxuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBwYXJzZVNzZUZyYW1lKGJ1ZmZlcik7XG4gICAgICAgIGlmIChldmVudCkgeWllbGQgZXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByZWFkZXIuY2FuY2VsKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICByZWFkZXIucmVsZWFzZUxvY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVNzZUZyYW1lKGZyYW1lOiBzdHJpbmcpOiBHZW5pZUFnZW50TW9kZUV2ZW50IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGF0YSA9IGZyYW1lXG4gICAgLnNwbGl0KC9cXHI/XFxuLylcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKDUpLnRyaW1TdGFydCgpKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuICBpZiAoIWRhdGEgfHwgZGF0YSA9PT0gXCJbRE9ORV1cIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGFnZW50TW9kZVdpcmUuR2VuaWVBZ2VudE1vZGVFdmVudFNjaGVtYS5wYXJzZShqc29uLnBhcnNlKGRhdGEpKTtcbn1cbiJdfQ==
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUdILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUNMLFNBQVMsSUFBSSxhQUFhLEdBRzNCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzlDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBU2hDLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxrQkFBa0IsQ0FDdkMsTUFBdUIsRUFDdkIsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUFpQyxFQUFFO0lBRW5DLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUM1RSxNQUFNLFVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87WUFDN0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN2QyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxlQUFnQixDQUFDLENBQUM7UUFDM0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDN0M7WUFDRSxJQUFJLEVBQUUseUJBQXlCLGtC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QUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNqRCxPQUFPLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmllIEFnZW50IE1vZGUgU1NFIHRyYW5zcG9ydC5cbiAqXG4gKiBTdHJlYW1zIHRoZSBSZXNwb25zZXMtc2hhcGVkIEFnZW50IE1vZGUgQVBJIGFuZCBwcm9qZWN0cyBpdHMgcmVhc29uaW5nLCBTUUwsXG4gKiBxdWVyeSBvdXRwdXQsIGFuZCBmaW5hbCBhbnN3ZXIgaXRlbXMgb250byB0aGUgZXhpc3RpbmcgYEdlbmllTWVzc2FnZWBcbiAqIGNvbnRyYWN0IHNvIGNhbGxlcnMgY2FuIGtlZXAgb25lIHNlbWFudGljIGV2ZW50IHBpcGVsaW5lIGFjcm9zcyBBZ2VudCBNb2RlXG4gKiBhbmQgdGhlIGxlZ2FjeSBwb2xsaW5nIEFQSS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBlcnJvclV0aWxzLCBqc29uLCBsb2csIG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQge1xuICBhZ2VudE1vZGUgYXMgYWdlbnRNb2RlV2lyZSxcbiAgdHlwZSBHZW5pZUFnZW50TW9kZUV2ZW50LFxuICB0eXBlIEdlbmllTWVzc2FnZSxcbn0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS9hZ2VudC1tb2RlXCIpO1xuY29uc3QgQ0FOQ0VMX1RJTUVPVVRfTVMgPSA1XzAwMDtcblxuLyoqIElucHV0cyBmb3Igb25lIEFnZW50IE1vZGUgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5pZUFnZW50TW9kZU9wdGlvbnMge1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgZW5hYmxlVmlzdWFsaXphdGlvbj86IGJvb2xlYW47XG4gIGNvbnRleHQ/OiBkYXRhYnJpY2tzLkNvbnRleHRMaWtlO1xufVxuXG4vKiogU3RyZWFtIG9uZSBBZ2VudCBNb2RlIHJlc3BvbnNlIGFzIGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90cy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVBZ2VudE1vZGVDaGF0KFxuICBjbGllbnQ6IFdvcmtzcGFjZUNsaWVudCxcbiAgYWdlbnRJZDogc3RyaW5nLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIG9wdGlvbnM6IEdlbmllQWdlbnRNb2RlT3B0aW9ucyA9IHt9LFxuKTogQXN5bmNHZW5lcmF0b3I8R2VuaWVNZXNzYWdlLCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IG93bmVkQ29udHJvbGxlciA9IG9wdGlvbnMuY29udGV4dCA/IHVuZGVmaW5lZCA6IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgcHJvamVjdGlvbiA9IG5ldyBhZ2VudE1vZGVXaXJlLkdlbmllQWdlbnRNb2RlUHJvamVjdGlvbihhZ2VudElkLCBjb250ZW50KTtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZXh0ID0gb3B0aW9ucy5jb250ZXh0XG4gICAgICA/IGRhdGFicmlja3MudG9Db250ZXh0KG9wdGlvbnMuY29udGV4dClcbiAgICAgIDogZGF0YWJyaWNrcy50b0NvbnRleHQob3duZWRDb250cm9sbGVyISk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuYXBpQ2xpZW50LnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHBhdGg6IGAvYXBpLzIuMC9nZW5pZS9hZ2VudHMvJHtlbmNvZGVVUklDb21wb25lbnQoYWdlbnRJZCl9L3Jlc3BvbnNlc2AsXG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHtcbiAgICAgICAgICBhY2NlcHQ6IFwidGV4dC9ldmVudC1zdHJlYW1cIixcbiAgICAgICAgICBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgfSksXG4gICAgICAgIHJhdzogdHJ1ZSxcbiAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgIGlucHV0OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwibWVzc2FnZVwiLFxuICAgICAgICAgICAgICByb2xlOiBcInVzZXJcIixcbiAgICAgICAgICAgICAgY29udGVudDogW3sgdHlwZTogXCJpbnB1dF90ZXh0XCIsIHRleHQ6IGNvbnRlbnQgfV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgLi4uKG9wdGlvbnMuY29udmVyc2F0aW9uSWQgPyB7IGNvbnZlcnNhdGlvbl9pZDogb3B0aW9ucy5jb252ZXJzYXRpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb25zLmVuYWJsZVZpc3VhbGl6YXRpb24gPyB7IGVuYWJsZV92aXo6IHRydWUgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0LFxuICAgICk7XG4gICAgY29uc3Qgc3RyZWFtID0gb2JqZWN0LmlzUmVjb3JkKHJlc3BvbnNlKSA/IHJlc3BvbnNlLmNvbnRlbnRzIDogdW5kZWZpbmVkO1xuICAgIGlmICghaXNSZWFkYWJsZVN0cmVhbShzdHJlYW0pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuaWUgQWdlbnQgTW9kZSBkaWQgbm90IHJldHVybiBhbiBTU0Ugc3RyZWFtXCIpO1xuICAgIH1cblxuICAgIGxldCBwcmV2aW91czogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAgIGZvciBhd2FpdCAoY29uc3QgZXZlbnQgb2YgcGFyc2VTc2Uoc3RyZWFtKSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHByb2plY3Rpb24uYXBwbHkoZXZlbnQpO1xuICAgICAgaWYgKCFtZXNzYWdlKSBjb250aW51ZTtcbiAgICAgIGlmICghb2JqZWN0LmRlZXBFcXVhbChtZXNzYWdlLCBwcmV2aW91cykpIHtcbiAgICAgICAgeWllbGQgbWVzc2FnZTtcbiAgICAgICAgcHJldmlvdXMgPSBtZXNzYWdlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXByb2plY3Rpb24udGVybWluYWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmllIEFnZW50IE1vZGUgc3RyZWFtIGVuZGVkIGJlZm9yZSBhIHRlcm1pbmFsIHJlc3BvbnNlXCIpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBvd25lZENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgaWYgKCFwcm9qZWN0aW9uLnRlcm1pbmFsICYmIHByb2plY3Rpb24ucmVzcG9uc2VJZCAmJiBwcm9qZWN0aW9uLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICBhd2FpdCBjYW5jZWxSZXNwb25zZShjbGllbnQsIGFnZW50SWQsIHByb2plY3Rpb24uY29udmVyc2F0aW9uSWQsIHByb2plY3Rpb24ucmVzcG9uc2VJZCk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBSZXR1cm4gd2hldGhlciBBZ2VudCBNb2RlIGlzIGRpc2FibGVkIG9yIGl0cyBwcmV2aWV3IHRvZ2dsZSBpcyB1bmF2YWlsYWJsZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FnZW50TW9kZVVuYXZhaWxhYmxlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvbnRleHQgPSBlcnJvclV0aWxzLmVycm9yQ29udGV4dCh2YWx1ZSk7XG4gIHJldHVybiBjb250ZXh0Lmhhc01lc3NhZ2UoXCJmZWF0dXJlXCIsIFwiZGlzYWJsZWRcIikgfHwgY29udGV4dC5oYXNNZXNzYWdlKFwicHJldmlld1wiLCBcInRvZ2dsZVwiKTtcbn1cblxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgcmV0dXJuIG9iamVjdC5pc1JlY29yZCh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlLmdldFJlYWRlciA9PT0gXCJmdW5jdGlvblwiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYW5jZWxSZXNwb25zZShcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnQsXG4gIGFnZW50SWQ6IHN0cmluZyxcbiAgY29udmVyc2F0aW9uSWQ6IHN0cmluZyxcbiAgcmVzcG9uc2VJZDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgQ0FOQ0VMX1RJTUVPVVRfTVMpO1xuICB0cnkge1xuICAgIGF3YWl0IGNsaWVudC5hcGlDbGllbnQucmVxdWVzdChcbiAgICAgIHtcbiAgICAgICAgcGF0aDogYC9hcGkvMi4wL2dlbmllL2FnZW50cy8ke2VuY29kZVVSSUNvbXBvbmVudChhZ2VudElkKX0vY29udmVyc2F0aW9ucy8ke2VuY29kZVVSSUNvbXBvbmVudChjb252ZXJzYXRpb25JZCl9L3Jlc3BvbnNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChyZXNwb25zZUlkKX0vY2FuY2VsYCxcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoe1xuICAgICAgICAgIGFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0pLFxuICAgICAgICByYXc6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGRhdGFicmlja3MudG9Db250ZXh0KGNvbnRyb2xsZXIpLFxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5kZWJ1ZyhcInJlc3BvbnNlOmNhbmNlbC1mYWlsZWRcIiwge1xuICAgICAgYWdlbnRJZCxcbiAgICAgIGNvbnZlcnNhdGlvbklkLFxuICAgICAgcmVzcG9uc2VJZCxcbiAgICAgIGVycm9yOiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShlcnIpLFxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiogcGFyc2VTc2UoXG4gIHN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4sXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZUFnZW50TW9kZUV2ZW50LCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuICBsZXQgYnVmZmVyID0gXCJcIjtcbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06ICFkb25lIH0pO1xuICAgICAgY29uc3QgZnJhbWVzID0gYnVmZmVyLnNwbGl0KC9cXHI/XFxuXFxyP1xcbi8pO1xuICAgICAgYnVmZmVyID0gZnJhbWVzLnBvcCgpID8/IFwiXCI7XG4gICAgICBmb3IgKGNvbnN0IGZyYW1lIG9mIGZyYW1lcykge1xuICAgICAgICBjb25zdCBldmVudCA9IHBhcnNlU3NlRnJhbWUoZnJhbWUpO1xuICAgICAgICBpZiAoZXZlbnQpIHlpZWxkIGV2ZW50O1xuICAgICAgfVxuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBwYXJzZVNzZUZyYW1lKGJ1ZmZlcik7XG4gICAgICAgIGlmIChldmVudCkgeWllbGQgZXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCByZWFkZXIuY2FuY2VsKCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICByZWFkZXIucmVsZWFzZUxvY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVNzZUZyYW1lKGZyYW1lOiBzdHJpbmcpOiBHZW5pZUFnZW50TW9kZUV2ZW50IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGF0YSA9IGZyYW1lXG4gICAgLnNwbGl0KC9cXHI/XFxuLylcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKDUpLnRyaW1TdGFydCgpKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuICBpZiAoIWRhdGEgfHwgZGF0YSA9PT0gXCJbRE9ORV1cIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGFnZW50TW9kZVdpcmUuR2VuaWVBZ2VudE1vZGVFdmVudFNjaGVtYS5wYXJzZShqc29uLnBhcnNlKGRhdGEpKTtcbn1cbiJdfQ==
|
package/lib/src/chat.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { createWorkspaceClient, getExecutionContext, } from "@databricks/appkit";
|
|
28
28
|
import { databricks } from "@dbx-tools/appkit";
|
|
29
|
-
import {
|
|
29
|
+
import { asyncUtils, errorUtils, log } from "@dbx-tools/shared-core";
|
|
30
30
|
import { event, genieModel } from "@dbx-tools/shared-genie";
|
|
31
31
|
import { genieAgentModeChat, isAgentModeUnavailable } from "./agent-mode.js";
|
|
32
32
|
const logger = log.logger("genie/chat");
|
|
@@ -112,7 +112,7 @@ export async function* genieChat(space_id, content, options) {
|
|
|
112
112
|
throw err;
|
|
113
113
|
logger.warn("agent-mode:unavailable, falling back to polling", {
|
|
114
114
|
space_id,
|
|
115
|
-
error:
|
|
115
|
+
error: errorUtils.errorMessage(err),
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -149,7 +149,7 @@ export async function* genieChat(space_id, content, options) {
|
|
|
149
149
|
message_id: messageId,
|
|
150
150
|
}, ctx);
|
|
151
151
|
};
|
|
152
|
-
yield*
|
|
152
|
+
yield* asyncUtils.poll(async (pollCtx) => validateMessage(await pollProducer(pollCtx)), {
|
|
153
153
|
intervalMs: options?.pollIntervalMs ?? 500,
|
|
154
154
|
// Skip yielding identical consecutive snapshots; Genie often returns
|
|
155
155
|
// the exact same payload twice during quiet periods. `poll` does a deep
|
|
@@ -282,4 +282,4 @@ async function getWorkspaceClient(options) {
|
|
|
282
282
|
}
|
|
283
283
|
return createWorkspaceClient();
|
|
284
284
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUEwQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQWlCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0tBQ25DLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW9DRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxDQUFDLEtBQUss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TzthQUN6QixDQUFDO1lBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO1FBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDOUIsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNO2dCQUNKLElBQUksRUFBRSxRQUFRO2dCQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO2dCQUN4QyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQzlCLE1BQU07Z0JBQ04sT0FBTzthQUNSLENBQUM7UUFDSixDQUFDO1FBQ0QsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztBQUVELDBFQUEwRTtBQUUxRTs7Ozs7Ozs7R0FRRztBQUNILEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxPQUEwQjtJQUMxRCxJQUFJLE9BQU8sRUFBRSxlQUFlO1FBQUUsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQzdELElBQUksQ0FBQztRQUNILE9BQU8sbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtJQUN4RSxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmllIGNoYXQgZHJpdmVyLlxuICpcbiAqIERyaXZlcyBhIHNpbmdsZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSBmcm9tIG9uZSBgY29udGVudGAgc3RyaW5nO1xuICogbXVsdGktdHVybiBjb252ZXJzYXRpb25zIGFyZSB0aGUgY2FsbGVyJ3Mgam9iICh0aHJlYWQgdGhlIGBjb252ZXJzYXRpb25faWRgXG4gKiByZXR1cm5lZCBvbiBlYWNoIGBHZW5pZU1lc3NhZ2VgIGJhY2sgaW50byB0aGUgbmV4dCB0dXJuJ3NcbiAqIGBvcHRpb25zLmNvbnZlcnNhdGlvbklkYCkuXG4gKlxuICogQWdlbnQgTW9kZSBTU0UgaXMgdGhlIGRlZmF1bHQgdHJhbnNwb3J0LiBJdHMgUmVzcG9uc2VzLXN0eWxlIHJlYXNvbmluZywgU1FMLFxuICogcXVlcnkgb3V0cHV0LCBhbmQgZmluYWwgYW5zd2VyIGl0ZW1zIGFyZSBwcm9qZWN0ZWQgaW50byBgR2VuaWVNZXNzYWdlYFxuICogc25hcHNob3RzOyBgYWdlbnRNb2RlOiBmYWxzZWAgcmV0YWlucyB0aGUgQ29udmVyc2F0aW9uIEFQSSBwb2xsaW5nIHBhdGguXG4gKlxuICogVHdvIGxheWVycyBzZXJ2ZSB0d28ga2luZHMgb2YgY29uc3VtZXIuIFRoZSBsb3ctbGV2ZWwgbGF5ZXIgeWllbGRzIGV2ZXJ5XG4gKiBvYnNlcnZlZCBgR2VuaWVNZXNzYWdlYCAodmFsaWRhdGVkIGFnYWluc3QgYEdlbmllTWVzc2FnZVNjaGVtYWAsIGZhbGxpbmcgYmFja1xuICogdG8gdGhlIHJhdyBzbmFwc2hvdCBvbiBhIHNjaGVtYSBtaXNzKSBhbmQgb3ducyBjYW5jZWxsYXRpb24sIGNvbnZlcnNhdGlvblxuICogc2VlZGluZywgZGlzdGluY3QtZmlsdGVyaW5nLCBhbmQgU0RLIHF1aXJrczsgcmVhY2ggZm9yIGl0IHdoZW4geW91IHdhbnQgdGhlXG4gKiByYXcgc3RyZWFtLiBUaGVcbiAqIGhpZ2gtbGV2ZWwgbGF5ZXIgd3JhcHMgaXQgYW5kIGVtaXRzIHNlbWFudGljLCBkZWR1cGxpY2F0ZWQgYHsgdHlwZSwgcGF5bG9hZCB9YFxuICogZXZlbnRzIChzZWUge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSksIGFsd2F5cyBjbG9zaW5nIGEgc3VjY2Vzc2Z1bCB0dXJuIHdpdGggYVxuICogdGVybWluYWwgYHJlc3VsdGAgZXZlbnQgY2FycnlpbmcgdGhlIGZpbmFsIGBHZW5pZU1lc3NhZ2VgOyBlcnJvcnMgcHJvcGFnYXRlXG4gKiBieSB0aHJvd2luZywgd2l0aCBubyBgZXJyb3JgIHZhcmlhbnQuIEl0ZXJhdGluZyBVSSAvIGFnZW50IGNvZGUgdGhhdCB3YW50c1xuICogZXZlcnkgbWVzc2FnZSB2ZXJiYXRpbSB0YWtlcyB0aGUgbG93LWxldmVsIHN0cmVhbTsgc3Vic2NyaWJlcnMgcmVhY3RpbmcgdG9cbiAqIFwiR2VuaWUgaXMgdGhpbmtpbmcgYWJvdXQgWFwiIG9yIFwiR2VuaWUgcHJvZHVjZWQgdGV4dCBZXCIgdGFrZSB0aGUgZXZlbnQgbGF5ZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCxcbiAgZ2V0RXhlY3V0aW9uQ29udGV4dCxcbiAgdHlwZSBXb3Jrc3BhY2VDbGllbnQsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGRhdGFicmlja3MgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB7IGFzeW5jLCBlcnJvciwgbG9nLCB0eXBlIFBvbGxDb250ZXh0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGV2ZW50LCBnZW5pZU1vZGVsLCB0eXBlIEdlbmllQ2hhdEV2ZW50LCB0eXBlIEdlbmllTWVzc2FnZSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZVwiO1xuXG5pbXBvcnQgeyBnZW5pZUFnZW50TW9kZUNoYXQsIGlzQWdlbnRNb2RlVW5hdmFpbGFibGUgfSBmcm9tIFwiLi9hZ2VudC1tb2RlLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS9jaGF0XCIpO1xuXG4vKipcbiAqIFZhbGlkYXRlIGEgcG9sbGVkIHdpcmUgc25hcHNob3QgYWdhaW5zdCB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfVxuICogYW5kIHJldHVybiB0aGUgc2NoZW1hLW5vcm1hbGl6ZWQgbWVzc2FnZS4gR2VuaWUncyB3aXJlIG9jY2FzaW9uYWxseSBzaGlwcyBhXG4gKiBzaGFwZSB0aGUgKFNESy1kZXJpdmVkKSBzY2hlbWEgZG9lc24ndCBtb2RlbCBleGFjdGx5IC0gZS5nLiBhbiBlYXJseSBwb2xsXG4gKiB0aGF0IG9taXRzIHRoZSBTREstcmVxdWlyZWQgYG1lc3NhZ2VfaWRgIC0gc28gYSBtaXNzIGRlZ3JhZGVzIHRvIHRoZSByYXdcbiAqIHNuYXBzaG90IHJhdGhlciB0aGFuIHRocm93aW5nLCBrZWVwaW5nIGEgc2luZ2xlIG9kZCBwb2xsIGZyb20gYWJvcnRpbmcgdGhlXG4gKiB3aG9sZSB0dXJuLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZU1lc3NhZ2UocmF3OiBHZW5pZU1lc3NhZ2UpOiBHZW5pZU1lc3NhZ2Uge1xuICBjb25zdCByZXN1bHQgPSBnZW5pZU1vZGVsLkdlbmllTWVzc2FnZVNjaGVtYS5zYWZlUGFyc2UocmF3KTtcbiAgaWYgKHJlc3VsdC5zdWNjZXNzKSByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIGxvZ2dlci5kZWJ1ZyhcIndpcmUtbWVzc2FnZTpzY2hlbWEtbWlzc1wiLCB7XG4gICAgbWVzc2FnZV9pZDogcmF3Lm1lc3NhZ2VfaWQgPz8gcmF3LmlkLFxuICAgIGlzc3VlczogcmVzdWx0LmVycm9yLmlzc3Vlcy5sZW5ndGgsXG4gIH0pO1xuICByZXR1cm4gcmF3O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzaGFyZWQgb3B0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKiogT3B0aW9ucyBhY2NlcHRlZCBieSBib3RoIHtAbGluayBnZW5pZUNoYXR9IGFuZCB7QGxpbmsgZ2VuaWVFdmVudENoYXR9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5pZUNoYXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFVzZSB0aGUgc3RyZWFtaW5nIEdlbmllIEFnZW50IE1vZGUgQVBJLiBEZWZhdWx0cyB0byBgdHJ1ZWA7IHNldCBgZmFsc2VgIHRvXG4gICAqIGZvcmNlIHRoZSBsZWdhY3kgc3RhcnQvY3JlYXRlL2dldC1tZXNzYWdlIHBvbGxpbmcgZmxvdy5cbiAgICovXG4gIGFnZW50TW9kZT86IGJvb2xlYW47XG4gIC8qKiBBc2sgQWdlbnQgTW9kZSB0byBnZW5lcmF0ZSB2aXN1YWxpemF0aW9ucyB3aGVuIGFwcHJvcHJpYXRlLiAqL1xuICBlbmFibGVWaXN1YWxpemF0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbnRpbnVlIGFuIGV4aXN0aW5nIGNvbnZlcnNhdGlvbi4gQWdlbnQgTW9kZSBzZW5kcyBpdCBhc1xuICAgKiBgY29udmVyc2F0aW9uX2lkYDsgbGVnYWN5IHBvbGxpbmcgcGFzc2VzIGl0IHRvIGBjcmVhdGVNZXNzYWdlYC4gUmVhZCB0aGUgaWRcbiAgICogZnJvbSB0aGUgcHJpb3IgdHVybidzIHRlcm1pbmFsIGBHZW5pZU1lc3NhZ2VgIG9yIGByZXN1bHRgIGV2ZW50LlxuICAgKi9cbiAgY29udmVyc2F0aW9uSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBgV29ya3NwYWNlQ2xpZW50YC4gRGVmYXVsdHMgdG8gQXBwS2l0J3MgcGVyLXJlcXVlc3RcbiAgICogZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50IHdoZW4gQXBwS2l0IGlzIGluc3RhbGxlZCBhbmQgd2UncmUgaW5zaWRlIGFcbiAgICogcmVxdWVzdDsgZmFsbHMgYmFjayB0byBgY3JlYXRlV29ya3NwYWNlQ2xpZW50KClgIChkZWZhdWx0IGF1dGgpXG4gICAqIG90aGVyd2lzZS5cbiAgICovXG4gIHdvcmtzcGFjZUNsaWVudD86IFdvcmtzcGFjZUNsaWVudDtcbiAgLyoqIExlZ2FjeSBmYWxsYmFjayBjYWRlbmNlIGJldHdlZW4gc3VjY2Vzc2l2ZSBgZ2V0TWVzc2FnZWAgY2FsbHMgKGRlZmF1bHQgNTAwbXMpLiAqL1xuICBwb2xsSW50ZXJ2YWxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEV4dGVybmFsIGNhbmNlbGxhdGlvbi4gQWNjZXB0cyBhIFdIQVRXRyBgQWJvcnRTaWduYWxgIG9yIGEgZnVsbHktYnVpbHQgU0RLXG4gICAqIGBDb250ZXh0YCAoc2VlIGBkYXRhYnJpY2tzLkNvbnRleHRMaWtlYCkuIEFib3J0aW5nIGl0IGNhbmNlbHMgZXZlcnkgaW4tZmxpZ2h0XG4gICAqIEFnZW50IE1vZGUgc3RyZWFtLCBTREsgY2FsbCwgYW5kIHRoZSBuZXh0IGludGVyLXBvbGwgc2xlZXAuXG4gICAqL1xuICBjb250ZXh0PzogZGF0YWJyaWNrcy5Db250ZXh0TGlrZTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbG93LWxldmVsOiBnZW5pZUNoYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBPbmUgdHVybiBhZ2FpbnN0IGEgR2VuaWUgc3BhY2UsIHlpZWxkZWQgYXMgYSBzdHJlYW0gb2YgYEdlbmllTWVzc2FnZWBcbiAqIHNuYXBzaG90cy5cbiAqXG4gKiBUdXJuIGxpZmVjeWNsZTpcbiAqXG4gKiAgIC0gQWdlbnQgTW9kZSAoZGVmYXVsdCk6IFBPU1Qgb25lIFJlc3BvbnNlcy1zdHlsZSBtZXNzYWdlIHRvXG4gKiAgICAgYC9hcGkvMi4wL2dlbmllL2FnZW50cy97aWR9L3Jlc3BvbnNlc2AgYW5kIHlpZWxkIHByb2plY3RlZCBzbmFwc2hvdHMgZnJvbVxuICogICAgIGl0cyBTU0UgZXZlbnRzLlxuICogICAtIExlZ2FjeSBwb2xsaW5nIChgYWdlbnRNb2RlOiBmYWxzZWApOiBzdGFydC9jcmVhdGUgYSBDb252ZXJzYXRpb24gQVBJXG4gKiAgICAgbWVzc2FnZSBhbmQgcG9sbCBgZ2V0TWVzc2FnZWAgdW50aWwgdGVybWluYWwuXG4gKiAgIC0gQSBwcmUtc3RyZWFtIGBGRUFUVVJFX0RJU0FCTEVEYCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZSBmYWxscyBiYWNrIHRvXG4gKiAgICAgbGVnYWN5IHBvbGxpbmcgYXV0b21hdGljYWxseS5cbiAqXG4gKiBDYW5jZWxsYXRpb246IGEgc2luZ2xlIGludGVybmFsIGBBYm9ydENvbnRyb2xsZXJgIGNvdmVycyB0aGUgd2hvbGUgdHVybi5cbiAqIGBvcHRpb25zLmNvbnRleHRgIGlzIHRpZWQgaW50byB0aGF0IGNvbnRyb2xsZXIgc28gYW4gZXh0ZXJuYWwgYWJvcnQgdGVhcnNcbiAqIGRvd24gdGhlIEFnZW50IE1vZGUgU1NFIGNvbm5lY3Rpb24sIFNESyBjYWxscywgYW5kIGFueSBpbnRlci1wb2xsIHNsZWVwLlxuICogQnJlYWtpbmcgb3V0IG9mIHRoZSBgZm9yIGF3YWl0YCBhbHNvIGludm9rZXMgdGhlIEFnZW50IE1vZGUgc2VydmVyLXNpZGVcbiAqIGNhbmNlbCBlbmRwb2ludCBiZWZvcmUgdGhlIGdlbmVyYXRvciBjbG9zZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNpbmdsZSB0dXJuLlxuICogZm9yIGF3YWl0IChjb25zdCBtIG9mIGdlbmllQ2hhdChzcGFjZUlkLCBcIlRvcCA1IHN0b3Jlcz9cIikpIHtcbiAqICAgcmVuZGVyKG0pO1xuICogfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNdWx0aS10dXJuOiBjYWxsZXIgdGhyZWFkcyB0aGUgY29udmVyc2F0aW9uIGlkLlxuICogbGV0IGNvbnZlcnNhdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gKiBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9ucykge1xuICogICBmb3IgYXdhaXQgKGNvbnN0IG0gb2YgZ2VuaWVDaGF0KHNwYWNlSWQsIHF1ZXN0aW9uLCB7IGNvbnZlcnNhdGlvbklkIH0pKSB7XG4gKiAgICAgY29udmVyc2F0aW9uSWQgPSBtLmNvbnZlcnNhdGlvbl9pZCA/PyBjb252ZXJzYXRpb25JZDtcbiAqICAgICByZW5kZXIobSk7XG4gKiAgIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBnZW5pZUNoYXQoXG4gIHNwYWNlX2lkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdlbmllQ2hhdE9wdGlvbnMsXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZU1lc3NhZ2UsIHZvaWQsIHZvaWQ+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBjbGllbnQgPSBhd2FpdCBnZXRXb3Jrc3BhY2VDbGllbnQob3B0aW9ucyk7XG4gICAgLy8gQnVpbGQgdGhlIFNESyBDb250ZXh0IE9OQ0UuIEJ1aWxkaW5nIGl0IGluc2lkZSB0aGUgcG9sbCBwcm9kdWNlciB3b3VsZFxuICAgIC8vIHJlLWF0dGFjaCBhbiBhYm9ydCBsaXN0ZW5lciB0byBgb3B0aW9ucy5jb250ZXh0YCBvbiBldmVyeSBwb2xsIGl0ZXJhdGlvblxuICAgIC8vICh2aWEgYGRhdGFicmlja3MudG9Db250ZXh0YCAtPiBgYXN5bmMudGllQWJvcnRTaWduYWxgKSwgZXZlbnR1YWxseSB0cmlwcGluZ1xuICAgIC8vIE5vZGUncyBgTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nYC5cbiAgICBjb25zdCBjdHggPSBkYXRhYnJpY2tzLnRvQ29udGV4dChjb250cm9sbGVyLCBvcHRpb25zPy5jb250ZXh0KTtcbiAgICBpZiAob3B0aW9ucz8uYWdlbnRNb2RlICE9PSBmYWxzZSkge1xuICAgICAgbGV0IHlpZWxkZWQgPSBmYWxzZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgbWVzc2FnZSBvZiBnZW5pZUFnZW50TW9kZUNoYXQoY2xpZW50LCBzcGFjZV9pZCwgY29udGVudCwge1xuICAgICAgICAgIC4uLihvcHRpb25zPy5jb252ZXJzYXRpb25JZCA/IHsgY29udmVyc2F0aW9uSWQ6IG9wdGlvbnMuY29udmVyc2F0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9ucz8uZW5hYmxlVmlzdWFsaXphdGlvbiA/IHsgZW5hYmxlVmlzdWFsaXphdGlvbjogdHJ1ZSB9IDoge30pLFxuICAgICAgICAgIGNvbnRleHQ6IGN0eCxcbiAgICAgICAgfSkpIHtcbiAgICAgICAgICB5aWVsZGVkID0gdHJ1ZTtcbiAgICAgICAgICB5aWVsZCB2YWxpZGF0ZU1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmICh5aWVsZGVkIHx8ICFpc0FnZW50TW9kZVVuYXZhaWxhYmxlKGVycikpIHRocm93IGVycjtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJhZ2VudC1tb2RlOnVuYXZhaWxhYmxlLCBmYWxsaW5nIGJhY2sgdG8gcG9sbGluZ1wiLCB7XG4gICAgICAgICAgc3BhY2VfaWQsXG4gICAgICAgICAgZXJyb3I6IGVycm9yLmVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGNvbnZlcnNhdGlvbklkID0gb3B0aW9ucz8uY29udmVyc2F0aW9uSWQ7XG4gICAgbGV0IG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcG9sbFByb2R1Y2VyID0gYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pOiBQcm9taXNlPEdlbmllTWVzc2FnZT4gPT4ge1xuICAgICAgaWYgKCFjb252ZXJzYXRpb25JZCkge1xuICAgICAgICAvLyBGaXJzdCBwb2xsOiBvcGVuIHRoZSBjb252ZXJzYXRpb24uIFJlZnVzZSB0byByZXRyeTogaWZcbiAgICAgICAgLy8gYHN0YXJ0Q29udmVyc2F0aW9uYCByZXR1cm5lZCBhIHJlc3BvbnNlIHdpdGhvdXQgYSBgY29udmVyc2F0aW9uX2lkYCxcbiAgICAgICAgLy8gcmV0cnlpbmcgd291bGQganVzdCBvcGVuIGNvbnZlcnNhdGlvbiBhZnRlciBjb252ZXJzYXRpb24uXG4gICAgICAgIGlmIChwb2xsQ3R4LmF0dGVtcHQgPiAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuaWUgZGlkIG5vdCByZXR1cm4gYSBjb252ZXJzYXRpb24gaWQ7IHJlZnVzaW5nIHRvIHJldHJ5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0UmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2VuaWUuc3RhcnRDb252ZXJzYXRpb24oeyBzcGFjZV9pZCwgY29udGVudCB9LCBjdHgpO1xuICAgICAgICBjb252ZXJzYXRpb25JZCA9IHN0YXJ0UmVzcG9uc2UuY29udmVyc2F0aW9uX2lkO1xuICAgICAgICBtZXNzYWdlSWQgPSBzdGFydFJlc3BvbnNlLm1lc3NhZ2VfaWQ7XG4gICAgICAgIHJldHVybiBzdGFydFJlc3BvbnNlLm1lc3NhZ2UhO1xuICAgICAgfVxuICAgICAgaWYgKCFtZXNzYWdlSWQpIHtcbiAgICAgICAgLy8gRmlyc3QgcG9sbCBvZiBhIGZvbGxvdy11cCB0dXJuOiBhcHBlbmQgdG8gdGhlIHNlZWRlZCBjb252ZXJzYXRpb24uXG4gICAgICAgIC8vIGBjbGllbnQuZ2VuaWUuY3JlYXRlTWVzc2FnZWAgcmV0dXJucyBhIGBXYWl0ZXI8R2VuaWVNZXNzYWdlPmBcbiAgICAgICAgLy8gKGB7IC4uLm1lc3NhZ2UsIHdhaXQ6IGFzeW5jICgpID0+IC4uLiB9YCkuIFN0cmlwIGB3YWl0YCBoZXJlIHNvXG4gICAgICAgIC8vIGRvd25zdHJlYW0gc2VyaWFsaXplcnMgKGUuZy4geWFtbC5zdHJpbmdpZnkpIGRvbid0IGNob2tlIG9uIHRoZVxuICAgICAgICAvLyBBc3luY0Z1bmN0aW9uIHZhbHVlLlxuICAgICAgICBjb25zdCB7IHdhaXQ6IF93YWl0LCAuLi5jcmVhdGVSZXNwb25zZSB9ID0gYXdhaXQgY2xpZW50LmdlbmllLmNyZWF0ZU1lc3NhZ2UoXG4gICAgICAgICAgeyBzcGFjZV9pZCwgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCwgY29udGVudCB9LFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgKTtcbiAgICAgICAgbWVzc2FnZUlkID0gY3JlYXRlUmVzcG9uc2UubWVzc2FnZV9pZDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgLy8gU3Vic2VxdWVudCBwb2xsczogcmUtZmV0Y2ggdGhlIGN1cnJlbnQgbWVzc2FnZSB1bnRpbCBpdHMgc3RhdHVzIGJlY29tZXNcbiAgICAgIC8vIHRlcm1pbmFsLlxuICAgICAgcmV0dXJuIGNsaWVudC5nZW5pZS5nZXRNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgc3BhY2VfaWQsXG4gICAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIHlpZWxkKiBhc3luYy5wb2xsKFxuICAgICAgYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pID0+IHZhbGlkYXRlTWVzc2FnZShhd2FpdCBwb2xsUHJvZHVjZXIocG9sbEN0eCkpLFxuICAgICAge1xuICAgICAgICBpbnRlcnZhbE1zOiBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyA1MDAsXG4gICAgICAgIC8vIFNraXAgeWllbGRpbmcgaWRlbnRpY2FsIGNvbnNlY3V0aXZlIHNuYXBzaG90czsgR2VuaWUgb2Z0ZW4gcmV0dXJuc1xuICAgICAgICAvLyB0aGUgZXhhY3Qgc2FtZSBwYXlsb2FkIHR3aWNlIGR1cmluZyBxdWlldCBwZXJpb2RzLiBgcG9sbGAgZG9lcyBhIGRlZXBcbiAgICAgICAgLy8gZXF1YWwgb24gdGhlIHByZXZpb3VzIHlpZWxkLlxuICAgICAgICBmaWx0ZXI6IFwiZGlzdGluY3RcIixcbiAgICAgICAgLy8gU3RvcCBhZnRlciB0aGUgdGVybWluYWwgbWVzc2FnZSBpcyB5aWVsZGVkLiBgcG9sbGAgY2hlY2tzIHRoZVxuICAgICAgICAvLyBwcmVkaWNhdGUgQUZURVIgeWllbGRpbmcsIHNvIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIHN0aWxsIHJlYWNoZXMgdGhlXG4gICAgICAgIC8vIGNvbnN1bWVyLlxuICAgICAgICBwcmVkaWNhdGU6IChtKSA9PiAhZ2VuaWVNb2RlbC5pc1Rlcm1pbmFsU3RhdHVzKG0uc3RhdHVzKSxcbiAgICAgICAgLy8gV2FrZSB0aGUgaW50ZXItcG9sbCBzbGVlcCBvbiBhYm9ydCBzbyBhIGBmb3IgYXdhaXRgIGJyZWFrIChvclxuICAgICAgICAvLyBleHRlcm5hbCBhYm9ydCkgdGVhcnMgZG93biBwcm9tcHRseSBpbnN0ZWFkIG9mIHdhaXRpbmcgb3V0IHRoZVxuICAgICAgICAvLyBpbnRlcnZhbC5cbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDYW5jZWxzIGFueSBzdGlsbC1wZW5kaW5nIFNESyBjYWxsIGFuZCB0aGUgaW50ZXItcG9sbCBzbGVlcCB3aGV0aGVyIHdlJ3JlXG4gICAgLy8gdW53aW5kaW5nIGZyb20gYSBub3JtYWwgcmV0dXJuLCBhIGNvbnN1bWVyIGJyZWFrLCBvciBhIHRocm93biBlcnJvci5cbiAgICAvLyBJZGVtcG90ZW50LlxuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhpZ2gtbGV2ZWw6IGdlbmllRXZlbnRDaGF0IC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHR5cGVkIHtAbGluayBHZW5pZUNoYXRFdmVudH1cbiAqIHN0cmVhbS4gRHJpdmVzIHtAbGluayBnZW5pZUNoYXR9IHVuZGVybmVhdGggYW5kIGRlY29yYXRlcyBlYWNoIHNuYXBzaG90IHdpdGhcbiAqIHRoZSBkZXJpdmVkIGV2ZW50cyB0aGUgZmllbGQtbGV2ZWwgZGlmZiBwcm9kdWNlZC4gU3RyZWFtIG9yZGVyOlxuICpcbiAqICAgMS4gYHsgdHlwZTogXCJtZXNzYWdlXCIsIG1lc3NhZ2UgfWAgLSB0aGUgcmF3IGBHZW5pZU1lc3NhZ2VgLCBvbmNlIHBlciBwb2xsXG4gKiAgICAgIHlpZWxkLlxuICogICAyLiBgeyB0eXBlOiBcInF1ZXN0aW9uXCIsIGNvbnRlbnQsIG1lc3NhZ2VfaWQsIC4uLiB9YCBmaXJlcyBleGFjdGx5IG9uY2UsIG9uXG4gKiAgICAgIHRoZSBGSVJTVCBgbWVzc2FnZWAgeWllbGQuIFdlIHJlYWQgYGNvbnRlbnRgIGFuZCBgbWVzc2FnZV9pZGAgc3RyYWlnaHRcbiAqICAgICAgb2ZmIHRoZSBzbmFwc2hvdCBzbyBldmVyeSBkb3duc3RyZWFtIGV2ZW50IGZvciB0aGlzIHR1cm4gc2hhcmVzIHRoZSBzYW1lXG4gKiAgICAgIGBtZXNzYWdlX2lkYCAodGhlIHF1ZXN0aW9uIGluY2x1ZGVkKSAtIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeXRoaW5nXG4gKiAgICAgIGZvciBvbmUgR2VuaWUgY2FsbCB1bmRlciB0aGF0IG9uZSBrZXkuXG4gKiAgIDMuIEFueSBvZiBgc3RhdHVzYCAvIGBhdHRhY2htZW50YCAvIGB0aGlua2luZ2AgLyBgdGV4dGAgLyBgcXVlcnlgIC9cbiAqICAgICAgYHN0YXRlbWVudGAgLyBgcm93c2AgLyBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgdGhlIGRpZmYgYWdhaW5zdCB0aGUgcHJpb3JcbiAqICAgICAgc25hcHNob3QgcHJvZHVjZWQuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYHsgdHlwZTogXCJyZXN1bHRcIiwgLi4uIH1gIGFzIHRoZSBmaW5hbCB5aWVsZC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIGJ5IHRoZSBnZW5lcmF0b3IgdGhyb3dpbmcgLSB0aGVyZSdzIG5vIGBcImVycm9yXCJgIHZhcmlhbnQuXG4gKiBXcmFwIHRoZSBgZm9yIGF3YWl0YCBpbiBgdHJ5L2NhdGNoYCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZ0IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldnQudHlwZSkge1xuICogICAgIGNhc2UgXCJ0aGlua2luZ1wiOlxuICogICAgICAgY29uc29sZS5sb2coXCJbdGhpbmtpbmddXCIsIGV2dC50aG91Z2h0X3R5cGUsIGV2dC50ZXh0KTtcbiAqICAgICAgIGJyZWFrO1xuICogICAgIGNhc2UgXCJ0ZXh0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIlt0ZXh0XVwiLCBldnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIltkb25lXVwiLCBldnQuc3RhdHVzKTtcbiAqICAgICAgIGJyZWFrO1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVFdmVudENoYXQoXG4gIHNwYWNlX2lkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdlbmllQ2hhdE9wdGlvbnMsXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZUNoYXRFdmVudCwgdm9pZCwgdm9pZD4ge1xuICAvLyBEaWZmIHNvdXJjZSBmb3IgdGhlIGN1cnJlbnQgdHVybi4gQWx3YXlzIGB1bmRlZmluZWRgIG9uIHRoZSBmaXJzdCBzbmFwc2hvdFxuICAvLyBzbyB0aGUgaW5pdGlhbCBzdGF0dXMgLyBhdHRhY2htZW50cyBlbWl0IGZyZXNoOyB1cGRhdGVkIHRvIHRoZSBtb3N0IHJlY2VudFxuICAvLyBzbmFwc2hvdCBhZnRlciBlYWNoIHlpZWxkLlxuICBsZXQgcHJldmlvdXM6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgLy8gVGhlIGBxdWVzdGlvbmAgZXZlbnQgaXMgZGVmZXJyZWQgdG8gdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCBzbyBpdCBjYW5cbiAgLy8gY2FycnkgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCAoc3Vic2NyaWJlcnMgdXNlIGl0IGFzIHRoZSBncm91cGluZyBrZXkgZm9yXG4gIC8vIGV2ZXJ5IGV2ZW50IGluIHRoaXMgdHVybikuIFRoZSBmaXJzdCBzbmFwc2hvdCBpcyB0aGUgZWFybGllc3QgcG9pbnQgdGhhdCBpZFxuICAvLyBleGlzdHMuXG4gIGxldCBxdWVzdGlvbkVtaXR0ZWQgPSBmYWxzZTtcbiAgZm9yIGF3YWl0IChjb25zdCByYXdNZXNzYWdlIG9mIGdlbmllQ2hhdChzcGFjZV9pZCwgY29udGVudCwgb3B0aW9ucykpIHtcbiAgICAvLyBOb3JtYWxpemUgYG1lc3NhZ2VfaWRgIGZyb20gdGhlIGxlZ2FjeSBgaWRgIGZpZWxkIHdoZW4gR2VuaWUncyB3aXJlXG4gICAgLy8gcmVzcG9uc2Ugb25seSBwb3B1bGF0ZXMgb25lIG9mIHRoZW0uIFRoZSBTREsgc2NoZW1hIG1hcmtzIGJvdGggYXNcbiAgICAvLyByZXF1aXJlZCwgYnV0IGluIHByYWN0aWNlIHRoZSBgc3RhcnRDb252ZXJzYXRpb25gIC8gYGNyZWF0ZU1lc3NhZ2VgIGlubmVyXG4gICAgLy8gYG1lc3NhZ2VgIHBheWxvYWQgc29tZXRpbWVzIHNoaXBzIG9ubHkgYGlkYCB3aGlsZSB0aGUgbmV3IGBtZXNzYWdlX2lkYFxuICAgIC8vIGZpZWxkIGxhbmRzIHVuZGVmaW5lZC4gRXZlcnkgZG93bnN0cmVhbSBldmVudCBkZXRlY3RvciBrZXlzIGdyb3VwaW5nIG9mZlxuICAgIC8vIGBtZXNzYWdlX2lkYDsgdGhlIGZhbGxiYWNrIGtlZXBzIG9uZSBHZW5pZSB0dXJuJ3MgZXZlbnRzIGZyb20gc3BsaXR0aW5nXG4gICAgLy8gYWNyb3NzIGFuIGFub24gZ3JvdXAgKyB0aGUgcmVhbC1pZCBncm91cCB3aGVuIHN1YnNjcmliZXJzIGJ1Y2tldCBieVxuICAgIC8vIGBtZXNzYWdlX2lkYC5cbiAgICBjb25zdCBtZXNzYWdlOiBHZW5pZU1lc3NhZ2UgPSByYXdNZXNzYWdlLm1lc3NhZ2VfaWRcbiAgICAgID8gcmF3TWVzc2FnZVxuICAgICAgOiB7IC4uLnJhd01lc3NhZ2UsIG1lc3NhZ2VfaWQ6IHJhd01lc3NhZ2UuaWQgfTtcbiAgICB5aWVsZCB7XG4gICAgICB0eXBlOiBcIm1lc3NhZ2VcIixcbiAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZS5tZXNzYWdlX2lkLFxuICAgICAgbWVzc2FnZSxcbiAgICB9O1xuICAgIGlmICghcXVlc3Rpb25FbWl0dGVkKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcbiAgICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICAgIC4uLihtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCA/IHsgY29udmVyc2F0aW9uX2lkOiBtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCB9IDoge30pLFxuICAgICAgICAuLi4obWVzc2FnZS5tZXNzYWdlX2lkID8geyBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQgfSA6IHt9KSxcbiAgICAgICAgY29udGVudDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgfTtcbiAgICAgIHF1ZXN0aW9uRW1pdHRlZCA9IHRydWU7XG4gICAgfVxuICAgIHlpZWxkKiBldmVudC5ldmVudHNGcm9tTWVzc2FnZShtZXNzYWdlLCBwcmV2aW91cywgbWVzc2FnZS5zcGFjZV9pZCk7XG4gICAgY29uc3Qgc3RhdHVzID0gbWVzc2FnZS5zdGF0dXM7XG4gICAgaWYgKGdlbmllTW9kZWwuaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXMpKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicmVzdWx0XCIsXG4gICAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkLFxuICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHByZXZpb3VzID0gbWVzc2FnZTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHdvcmtzcGFjZSBjbGllbnQgaGVscGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFJlc29sdmUgYSBgV29ya3NwYWNlQ2xpZW50YCBpbiB0aGlzIHByZWZlcmVuY2Ugb3JkZXI6XG4gKlxuICogICAxLiBDYWxsZXItc3VwcGxpZWQgYG9wdGlvbnMud29ya3NwYWNlQ2xpZW50YC5cbiAqICAgMi4gQXBwS2l0J3MgcGVyLXJlcXVlc3QgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50IGluc2lkZSBhIHJlcXVlc3Qgc2NvcGUuXG4gKiAgIDMuIEZyZXNoIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGVudi12YXIgYXV0aCB2aWFcbiAqICAgICAgYERBVEFCUklDS1NfQ09ORklHX1BST0ZJTEVgIC8gYERBVEFCUklDS1NfSE9TVGAgLyBgREFUQUJSSUNLU19UT0tFTmApLlxuICpcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCkgcmV0dXJuIG9wdGlvbnMud29ya3NwYWNlQ2xpZW50O1xuICB0cnkge1xuICAgIHJldHVybiBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb3QgaW5zaWRlIGFuIEFwcEtpdCByZXF1ZXN0IGNvbnRleHQ7IGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGF1dGguXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xufVxuIl19
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUEwQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQWlCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0tBQ25DLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW9DRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxDQUFDLEtBQUss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QU87YUFDekIsQ0FBQztZQUNGLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixNQUFNO2dCQUNOLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUNELFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7O0dBUUc7QUFDSCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsT0FBMEI7SUFDMUQsSUFBSSxPQUFPLEVBQUUsZUFBZTtRQUFFLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUM3RCxJQUFJLENBQUM7UUFDSCxPQUFPLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxzRUFBc0U7SUFDeEUsQ0FBQztJQUNELE9BQU8scUJBQXFCLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5pZSBjaGF0IGRyaXZlci5cbiAqXG4gKiBEcml2ZXMgYSBzaW5nbGUgdHVybiBhZ2FpbnN0IGEgR2VuaWUgc3BhY2UgZnJvbSBvbmUgYGNvbnRlbnRgIHN0cmluZztcbiAqIG11bHRpLXR1cm4gY29udmVyc2F0aW9ucyBhcmUgdGhlIGNhbGxlcidzIGpvYiAodGhyZWFkIHRoZSBgY29udmVyc2F0aW9uX2lkYFxuICogcmV0dXJuZWQgb24gZWFjaCBgR2VuaWVNZXNzYWdlYCBiYWNrIGludG8gdGhlIG5leHQgdHVybidzXG4gKiBgb3B0aW9ucy5jb252ZXJzYXRpb25JZGApLlxuICpcbiAqIEFnZW50IE1vZGUgU1NFIGlzIHRoZSBkZWZhdWx0IHRyYW5zcG9ydC4gSXRzIFJlc3BvbnNlcy1zdHlsZSByZWFzb25pbmcsIFNRTCxcbiAqIHF1ZXJ5IG91dHB1dCwgYW5kIGZpbmFsIGFuc3dlciBpdGVtcyBhcmUgcHJvamVjdGVkIGludG8gYEdlbmllTWVzc2FnZWBcbiAqIHNuYXBzaG90czsgYGFnZW50TW9kZTogZmFsc2VgIHJldGFpbnMgdGhlIENvbnZlcnNhdGlvbiBBUEkgcG9sbGluZyBwYXRoLlxuICpcbiAqIFR3byBsYXllcnMgc2VydmUgdHdvIGtpbmRzIG9mIGNvbnN1bWVyLiBUaGUgbG93LWxldmVsIGxheWVyIHlpZWxkcyBldmVyeVxuICogb2JzZXJ2ZWQgYEdlbmllTWVzc2FnZWAgKHZhbGlkYXRlZCBhZ2FpbnN0IGBHZW5pZU1lc3NhZ2VTY2hlbWFgLCBmYWxsaW5nIGJhY2tcbiAqIHRvIHRoZSByYXcgc25hcHNob3Qgb24gYSBzY2hlbWEgbWlzcykgYW5kIG93bnMgY2FuY2VsbGF0aW9uLCBjb252ZXJzYXRpb25cbiAqIHNlZWRpbmcsIGRpc3RpbmN0LWZpbHRlcmluZywgYW5kIFNESyBxdWlya3M7IHJlYWNoIGZvciBpdCB3aGVuIHlvdSB3YW50IHRoZVxuICogcmF3IHN0cmVhbS4gVGhlXG4gKiBoaWdoLWxldmVsIGxheWVyIHdyYXBzIGl0IGFuZCBlbWl0cyBzZW1hbnRpYywgZGVkdXBsaWNhdGVkIGB7IHR5cGUsIHBheWxvYWQgfWBcbiAqIGV2ZW50cyAoc2VlIHtAbGluayBHZW5pZUNoYXRFdmVudH0pLCBhbHdheXMgY2xvc2luZyBhIHN1Y2Nlc3NmdWwgdHVybiB3aXRoIGFcbiAqIHRlcm1pbmFsIGByZXN1bHRgIGV2ZW50IGNhcnJ5aW5nIHRoZSBmaW5hbCBgR2VuaWVNZXNzYWdlYDsgZXJyb3JzIHByb3BhZ2F0ZVxuICogYnkgdGhyb3dpbmcsIHdpdGggbm8gYGVycm9yYCB2YXJpYW50LiBJdGVyYXRpbmcgVUkgLyBhZ2VudCBjb2RlIHRoYXQgd2FudHNcbiAqIGV2ZXJ5IG1lc3NhZ2UgdmVyYmF0aW0gdGFrZXMgdGhlIGxvdy1sZXZlbCBzdHJlYW07IHN1YnNjcmliZXJzIHJlYWN0aW5nIHRvXG4gKiBcIkdlbmllIGlzIHRoaW5raW5nIGFib3V0IFhcIiBvciBcIkdlbmllIHByb2R1Y2VkIHRleHQgWVwiIHRha2UgdGhlIGV2ZW50IGxheWVyLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICBjcmVhdGVXb3Jrc3BhY2VDbGllbnQsXG4gIGdldEV4ZWN1dGlvbkNvbnRleHQsXG4gIHR5cGUgV29ya3NwYWNlQ2xpZW50LFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBhc3luY1V0aWxzLCBlcnJvclV0aWxzLCBsb2csIHR5cGUgUG9sbENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZXZlbnQsIGdlbmllTW9kZWwsIHR5cGUgR2VuaWVDaGF0RXZlbnQsIHR5cGUgR2VuaWVNZXNzYWdlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5cbmltcG9ydCB7IGdlbmllQWdlbnRNb2RlQ2hhdCwgaXNBZ2VudE1vZGVVbmF2YWlsYWJsZSB9IGZyb20gXCIuL2FnZW50LW1vZGUudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImdlbmllL2NoYXRcIik7XG5cbi8qKlxuICogVmFsaWRhdGUgYSBwb2xsZWQgd2lyZSBzbmFwc2hvdCBhZ2FpbnN0IHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9XG4gKiBhbmQgcmV0dXJuIHRoZSBzY2hlbWEtbm9ybWFsaXplZCBtZXNzYWdlLiBHZW5pZSdzIHdpcmUgb2NjYXNpb25hbGx5IHNoaXBzIGFcbiAqIHNoYXBlIHRoZSAoU0RLLWRlcml2ZWQpIHNjaGVtYSBkb2Vzbid0IG1vZGVsIGV4YWN0bHkgLSBlLmcuIGFuIGVhcmx5IHBvbGxcbiAqIHRoYXQgb21pdHMgdGhlIFNESy1yZXF1aXJlZCBgbWVzc2FnZV9pZGAgLSBzbyBhIG1pc3MgZGVncmFkZXMgdG8gdGhlIHJhd1xuICogc25hcHNob3QgcmF0aGVyIHRoYW4gdGhyb3dpbmcsIGtlZXBpbmcgYSBzaW5nbGUgb2RkIHBvbGwgZnJvbSBhYm9ydGluZyB0aGVcbiAqIHdob2xlIHR1cm4uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlTWVzc2FnZShyYXc6IEdlbmllTWVzc2FnZSk6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IHJlc3VsdCA9IGdlbmllTW9kZWwuR2VuaWVNZXNzYWdlU2NoZW1hLnNhZmVQYXJzZShyYXcpO1xuICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiByZXN1bHQuZGF0YTtcbiAgbG9nZ2VyLmRlYnVnKFwid2lyZS1tZXNzYWdlOnNjaGVtYS1taXNzXCIsIHtcbiAgICBtZXNzYWdlX2lkOiByYXcubWVzc2FnZV9pZCA/PyByYXcuaWQsXG4gICAgaXNzdWVzOiByZXN1bHQuZXJyb3IuaXNzdWVzLmxlbmd0aCxcbiAgfSk7XG4gIHJldHVybiByYXc7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNoYXJlZCBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IGJvdGgge0BsaW5rIGdlbmllQ2hhdH0gYW5kIHtAbGluayBnZW5pZUV2ZW50Q2hhdH0uICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmllQ2hhdE9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkuIERlZmF1bHRzIHRvIGB0cnVlYDsgc2V0IGBmYWxzZWAgdG9cbiAgICogZm9yY2UgdGhlIGxlZ2FjeSBzdGFydC9jcmVhdGUvZ2V0LW1lc3NhZ2UgcG9sbGluZyBmbG93LlxuICAgKi9cbiAgYWdlbnRNb2RlPzogYm9vbGVhbjtcbiAgLyoqIEFzayBBZ2VudCBNb2RlIHRvIGdlbmVyYXRlIHZpc3VhbGl6YXRpb25zIHdoZW4gYXBwcm9wcmlhdGUuICovXG4gIGVuYWJsZVZpc3VhbGl6YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udGludWUgYW4gZXhpc3RpbmcgY29udmVyc2F0aW9uLiBBZ2VudCBNb2RlIHNlbmRzIGl0IGFzXG4gICAqIGBjb252ZXJzYXRpb25faWRgOyBsZWdhY3kgcG9sbGluZyBwYXNzZXMgaXQgdG8gYGNyZWF0ZU1lc3NhZ2VgLiBSZWFkIHRoZSBpZFxuICAgKiBmcm9tIHRoZSBwcmlvciB0dXJuJ3MgdGVybWluYWwgYEdlbmllTWVzc2FnZWAgb3IgYHJlc3VsdGAgZXZlbnQuXG4gICAqL1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGxpY2l0IGBXb3Jrc3BhY2VDbGllbnRgLiBEZWZhdWx0cyB0byBBcHBLaXQncyBwZXItcmVxdWVzdFxuICAgKiBleGVjdXRpb24tY29udGV4dCBjbGllbnQgd2hlbiBBcHBLaXQgaXMgaW5zdGFsbGVkIGFuZCB3ZSdyZSBpbnNpZGUgYVxuICAgKiByZXF1ZXN0OyBmYWxscyBiYWNrIHRvIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGRlZmF1bHQgYXV0aClcbiAgICogb3RoZXJ3aXNlLlxuICAgKi9cbiAgd29ya3NwYWNlQ2xpZW50PzogV29ya3NwYWNlQ2xpZW50O1xuICAvKiogTGVnYWN5IGZhbGxiYWNrIGNhZGVuY2UgYmV0d2VlbiBzdWNjZXNzaXZlIGBnZXRNZXNzYWdlYCBjYWxscyAoZGVmYXVsdCA1MDBtcykuICovXG4gIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogRXh0ZXJuYWwgY2FuY2VsbGF0aW9uLiBBY2NlcHRzIGEgV0hBVFdHIGBBYm9ydFNpZ25hbGAgb3IgYSBmdWxseS1idWlsdCBTREtcbiAgICogYENvbnRleHRgIChzZWUgYGRhdGFicmlja3MuQ29udGV4dExpa2VgKS4gQWJvcnRpbmcgaXQgY2FuY2VscyBldmVyeSBpbi1mbGlnaHRcbiAgICogQWdlbnQgTW9kZSBzdHJlYW0sIFNESyBjYWxsLCBhbmQgdGhlIG5leHQgaW50ZXItcG9sbCBzbGVlcC5cbiAgICovXG4gIGNvbnRleHQ/OiBkYXRhYnJpY2tzLkNvbnRleHRMaWtlO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsb3ctbGV2ZWw6IGdlbmllQ2hhdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHN0cmVhbSBvZiBgR2VuaWVNZXNzYWdlYFxuICogc25hcHNob3RzLlxuICpcbiAqIFR1cm4gbGlmZWN5Y2xlOlxuICpcbiAqICAgLSBBZ2VudCBNb2RlIChkZWZhdWx0KTogUE9TVCBvbmUgUmVzcG9uc2VzLXN0eWxlIG1lc3NhZ2UgdG9cbiAqICAgICBgL2FwaS8yLjAvZ2VuaWUvYWdlbnRzL3tpZH0vcmVzcG9uc2VzYCBhbmQgeWllbGQgcHJvamVjdGVkIHNuYXBzaG90cyBmcm9tXG4gKiAgICAgaXRzIFNTRSBldmVudHMuXG4gKiAgIC0gTGVnYWN5IHBvbGxpbmcgKGBhZ2VudE1vZGU6IGZhbHNlYCk6IHN0YXJ0L2NyZWF0ZSBhIENvbnZlcnNhdGlvbiBBUElcbiAqICAgICBtZXNzYWdlIGFuZCBwb2xsIGBnZXRNZXNzYWdlYCB1bnRpbCB0ZXJtaW5hbC5cbiAqICAgLSBBIHByZS1zdHJlYW0gYEZFQVRVUkVfRElTQUJMRURgIG9yIHByZXZpZXctdG9nZ2xlIHJlc3BvbnNlIGZhbGxzIGJhY2sgdG9cbiAqICAgICBsZWdhY3kgcG9sbGluZyBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIENhbmNlbGxhdGlvbjogYSBzaW5nbGUgaW50ZXJuYWwgYEFib3J0Q29udHJvbGxlcmAgY292ZXJzIHRoZSB3aG9sZSB0dXJuLlxuICogYG9wdGlvbnMuY29udGV4dGAgaXMgdGllZCBpbnRvIHRoYXQgY29udHJvbGxlciBzbyBhbiBleHRlcm5hbCBhYm9ydCB0ZWFyc1xuICogZG93biB0aGUgQWdlbnQgTW9kZSBTU0UgY29ubmVjdGlvbiwgU0RLIGNhbGxzLCBhbmQgYW55IGludGVyLXBvbGwgc2xlZXAuXG4gKiBCcmVha2luZyBvdXQgb2YgdGhlIGBmb3IgYXdhaXRgIGFsc28gaW52b2tlcyB0aGUgQWdlbnQgTW9kZSBzZXJ2ZXItc2lkZVxuICogY2FuY2VsIGVuZHBvaW50IGJlZm9yZSB0aGUgZ2VuZXJhdG9yIGNsb3Nlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2luZ2xlIHR1cm4uXG4gKiBmb3IgYXdhaXQgKGNvbnN0IG0gb2YgZ2VuaWVDaGF0KHNwYWNlSWQsIFwiVG9wIDUgc3RvcmVzP1wiKSkge1xuICogICByZW5kZXIobSk7XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIE11bHRpLXR1cm46IGNhbGxlciB0aHJlYWRzIHRoZSBjb252ZXJzYXRpb24gaWQuXG4gKiBsZXQgY29udmVyc2F0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAqIGZvciAoY29uc3QgcXVlc3Rpb24gb2YgcXVlc3Rpb25zKSB7XG4gKiAgIGZvciBhd2FpdCAoY29uc3QgbSBvZiBnZW5pZUNoYXQoc3BhY2VJZCwgcXVlc3Rpb24sIHsgY29udmVyc2F0aW9uSWQgfSkpIHtcbiAqICAgICBjb252ZXJzYXRpb25JZCA9IG0uY29udmVyc2F0aW9uX2lkID8/IGNvbnZlcnNhdGlvbklkO1xuICogICAgIHJlbmRlcihtKTtcbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGdlbmllQ2hhdChcbiAgc3BhY2VfaWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zPzogR2VuaWVDaGF0T3B0aW9ucyxcbik6IEFzeW5jR2VuZXJhdG9yPEdlbmllTWVzc2FnZSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICB0cnkge1xuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGdldFdvcmtzcGFjZUNsaWVudChvcHRpb25zKTtcbiAgICAvLyBCdWlsZCB0aGUgU0RLIENvbnRleHQgT05DRS4gQnVpbGRpbmcgaXQgaW5zaWRlIHRoZSBwb2xsIHByb2R1Y2VyIHdvdWxkXG4gICAgLy8gcmUtYXR0YWNoIGFuIGFib3J0IGxpc3RlbmVyIHRvIGBvcHRpb25zLmNvbnRleHRgIG9uIGV2ZXJ5IHBvbGwgaXRlcmF0aW9uXG4gICAgLy8gKHZpYSBgZGF0YWJyaWNrcy50b0NvbnRleHRgIC0+IGBhc3luYy50aWVBYm9ydFNpZ25hbGApLCBldmVudHVhbGx5IHRyaXBwaW5nXG4gICAgLy8gTm9kZSdzIGBNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdgLlxuICAgIGNvbnN0IGN0eCA9IGRhdGFicmlja3MudG9Db250ZXh0KGNvbnRyb2xsZXIsIG9wdGlvbnM/LmNvbnRleHQpO1xuICAgIGlmIChvcHRpb25zPy5hZ2VudE1vZGUgIT09IGZhbHNlKSB7XG4gICAgICBsZXQgeWllbGRlZCA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBtZXNzYWdlIG9mIGdlbmllQWdlbnRNb2RlQ2hhdChjbGllbnQsIHNwYWNlX2lkLCBjb250ZW50LCB7XG4gICAgICAgICAgLi4uKG9wdGlvbnM/LmNvbnZlcnNhdGlvbklkID8geyBjb252ZXJzYXRpb25JZDogb3B0aW9ucy5jb252ZXJzYXRpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb25zPy5lbmFibGVWaXN1YWxpemF0aW9uID8geyBlbmFibGVWaXN1YWxpemF0aW9uOiB0cnVlIH0gOiB7fSksXG4gICAgICAgICAgY29udGV4dDogY3R4LFxuICAgICAgICB9KSkge1xuICAgICAgICAgIHlpZWxkZWQgPSB0cnVlO1xuICAgICAgICAgIHlpZWxkIHZhbGlkYXRlTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKHlpZWxkZWQgfHwgIWlzQWdlbnRNb2RlVW5hdmFpbGFibGUoZXJyKSkgdGhyb3cgZXJyO1xuICAgICAgICBsb2dnZXIud2FybihcImFnZW50LW1vZGU6dW5hdmFpbGFibGUsIGZhbGxpbmcgYmFjayB0byBwb2xsaW5nXCIsIHtcbiAgICAgICAgICBzcGFjZV9pZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3JVdGlscy5lcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBjb252ZXJzYXRpb25JZCA9IG9wdGlvbnM/LmNvbnZlcnNhdGlvbklkO1xuICAgIGxldCBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBvbGxQcm9kdWNlciA9IGFzeW5jIChwb2xsQ3R4OiBQb2xsQ29udGV4dDxHZW5pZU1lc3NhZ2U+KTogUHJvbWlzZTxHZW5pZU1lc3NhZ2U+ID0+IHtcbiAgICAgIGlmICghY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgLy8gRmlyc3QgcG9sbDogb3BlbiB0aGUgY29udmVyc2F0aW9uLiBSZWZ1c2UgdG8gcmV0cnk6IGlmXG4gICAgICAgIC8vIGBzdGFydENvbnZlcnNhdGlvbmAgcmV0dXJuZWQgYSByZXNwb25zZSB3aXRob3V0IGEgYGNvbnZlcnNhdGlvbl9pZGAsXG4gICAgICAgIC8vIHJldHJ5aW5nIHdvdWxkIGp1c3Qgb3BlbiBjb252ZXJzYXRpb24gYWZ0ZXIgY29udmVyc2F0aW9uLlxuICAgICAgICBpZiAocG9sbEN0eC5hdHRlbXB0ID4gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmllIGRpZCBub3QgcmV0dXJuIGEgY29udmVyc2F0aW9uIGlkOyByZWZ1c2luZyB0byByZXRyeVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdlbmllLnN0YXJ0Q29udmVyc2F0aW9uKHsgc3BhY2VfaWQsIGNvbnRlbnQgfSwgY3R4KTtcbiAgICAgICAgY29udmVyc2F0aW9uSWQgPSBzdGFydFJlc3BvbnNlLmNvbnZlcnNhdGlvbl9pZDtcbiAgICAgICAgbWVzc2FnZUlkID0gc3RhcnRSZXNwb25zZS5tZXNzYWdlX2lkO1xuICAgICAgICByZXR1cm4gc3RhcnRSZXNwb25zZS5tZXNzYWdlITtcbiAgICAgIH1cbiAgICAgIGlmICghbWVzc2FnZUlkKSB7XG4gICAgICAgIC8vIEZpcnN0IHBvbGwgb2YgYSBmb2xsb3ctdXAgdHVybjogYXBwZW5kIHRvIHRoZSBzZWVkZWQgY29udmVyc2F0aW9uLlxuICAgICAgICAvLyBgY2xpZW50LmdlbmllLmNyZWF0ZU1lc3NhZ2VgIHJldHVybnMgYSBgV2FpdGVyPEdlbmllTWVzc2FnZT5gXG4gICAgICAgIC8vIChgeyAuLi5tZXNzYWdlLCB3YWl0OiBhc3luYyAoKSA9PiAuLi4gfWApLiBTdHJpcCBgd2FpdGAgaGVyZSBzb1xuICAgICAgICAvLyBkb3duc3RyZWFtIHNlcmlhbGl6ZXJzIChlLmcuIHlhbWwuc3RyaW5naWZ5KSBkb24ndCBjaG9rZSBvbiB0aGVcbiAgICAgICAgLy8gQXN5bmNGdW5jdGlvbiB2YWx1ZS5cbiAgICAgICAgY29uc3QgeyB3YWl0OiBfd2FpdCwgLi4uY3JlYXRlUmVzcG9uc2UgfSA9IGF3YWl0IGNsaWVudC5nZW5pZS5jcmVhdGVNZXNzYWdlKFxuICAgICAgICAgIHsgc3BhY2VfaWQsIGNvbnZlcnNhdGlvbl9pZDogY29udmVyc2F0aW9uSWQsIGNvbnRlbnQgfSxcbiAgICAgICAgICBjdHgsXG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VJZCA9IGNyZWF0ZVJlc3BvbnNlLm1lc3NhZ2VfaWQ7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFN1YnNlcXVlbnQgcG9sbHM6IHJlLWZldGNoIHRoZSBjdXJyZW50IG1lc3NhZ2UgdW50aWwgaXRzIHN0YXR1cyBiZWNvbWVzXG4gICAgICAvLyB0ZXJtaW5hbC5cbiAgICAgIHJldHVybiBjbGllbnQuZ2VuaWUuZ2V0TWVzc2FnZShcbiAgICAgICAge1xuICAgICAgICAgIHNwYWNlX2lkLFxuICAgICAgICAgIGNvbnZlcnNhdGlvbl9pZDogY29udmVyc2F0aW9uSWQsXG4gICAgICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZUlkLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApO1xuICAgIH07XG5cbiAgICB5aWVsZCogYXN5bmNVdGlscy5wb2xsKFxuICAgICAgYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pID0+IHZhbGlkYXRlTWVzc2FnZShhd2FpdCBwb2xsUHJvZHVjZXIocG9sbEN0eCkpLFxuICAgICAge1xuICAgICAgICBpbnRlcnZhbE1zOiBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyA1MDAsXG4gICAgICAgIC8vIFNraXAgeWllbGRpbmcgaWRlbnRpY2FsIGNvbnNlY3V0aXZlIHNuYXBzaG90czsgR2VuaWUgb2Z0ZW4gcmV0dXJuc1xuICAgICAgICAvLyB0aGUgZXhhY3Qgc2FtZSBwYXlsb2FkIHR3aWNlIGR1cmluZyBxdWlldCBwZXJpb2RzLiBgcG9sbGAgZG9lcyBhIGRlZXBcbiAgICAgICAgLy8gZXF1YWwgb24gdGhlIHByZXZpb3VzIHlpZWxkLlxuICAgICAgICBmaWx0ZXI6IFwiZGlzdGluY3RcIixcbiAgICAgICAgLy8gU3RvcCBhZnRlciB0aGUgdGVybWluYWwgbWVzc2FnZSBpcyB5aWVsZGVkLiBgcG9sbGAgY2hlY2tzIHRoZVxuICAgICAgICAvLyBwcmVkaWNhdGUgQUZURVIgeWllbGRpbmcsIHNvIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIHN0aWxsIHJlYWNoZXMgdGhlXG4gICAgICAgIC8vIGNvbnN1bWVyLlxuICAgICAgICBwcmVkaWNhdGU6IChtKSA9PiAhZ2VuaWVNb2RlbC5pc1Rlcm1pbmFsU3RhdHVzKG0uc3RhdHVzKSxcbiAgICAgICAgLy8gV2FrZSB0aGUgaW50ZXItcG9sbCBzbGVlcCBvbiBhYm9ydCBzbyBhIGBmb3IgYXdhaXRgIGJyZWFrIChvclxuICAgICAgICAvLyBleHRlcm5hbCBhYm9ydCkgdGVhcnMgZG93biBwcm9tcHRseSBpbnN0ZWFkIG9mIHdhaXRpbmcgb3V0IHRoZVxuICAgICAgICAvLyBpbnRlcnZhbC5cbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDYW5jZWxzIGFueSBzdGlsbC1wZW5kaW5nIFNESyBjYWxsIGFuZCB0aGUgaW50ZXItcG9sbCBzbGVlcCB3aGV0aGVyIHdlJ3JlXG4gICAgLy8gdW53aW5kaW5nIGZyb20gYSBub3JtYWwgcmV0dXJuLCBhIGNvbnN1bWVyIGJyZWFrLCBvciBhIHRocm93biBlcnJvci5cbiAgICAvLyBJZGVtcG90ZW50LlxuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhpZ2gtbGV2ZWw6IGdlbmllRXZlbnRDaGF0IC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHR5cGVkIHtAbGluayBHZW5pZUNoYXRFdmVudH1cbiAqIHN0cmVhbS4gRHJpdmVzIHtAbGluayBnZW5pZUNoYXR9IHVuZGVybmVhdGggYW5kIGRlY29yYXRlcyBlYWNoIHNuYXBzaG90IHdpdGhcbiAqIHRoZSBkZXJpdmVkIGV2ZW50cyB0aGUgZmllbGQtbGV2ZWwgZGlmZiBwcm9kdWNlZC4gU3RyZWFtIG9yZGVyOlxuICpcbiAqICAgMS4gYHsgdHlwZTogXCJtZXNzYWdlXCIsIG1lc3NhZ2UgfWAgLSB0aGUgcmF3IGBHZW5pZU1lc3NhZ2VgLCBvbmNlIHBlciBwb2xsXG4gKiAgICAgIHlpZWxkLlxuICogICAyLiBgeyB0eXBlOiBcInF1ZXN0aW9uXCIsIGNvbnRlbnQsIG1lc3NhZ2VfaWQsIC4uLiB9YCBmaXJlcyBleGFjdGx5IG9uY2UsIG9uXG4gKiAgICAgIHRoZSBGSVJTVCBgbWVzc2FnZWAgeWllbGQuIFdlIHJlYWQgYGNvbnRlbnRgIGFuZCBgbWVzc2FnZV9pZGAgc3RyYWlnaHRcbiAqICAgICAgb2ZmIHRoZSBzbmFwc2hvdCBzbyBldmVyeSBkb3duc3RyZWFtIGV2ZW50IGZvciB0aGlzIHR1cm4gc2hhcmVzIHRoZSBzYW1lXG4gKiAgICAgIGBtZXNzYWdlX2lkYCAodGhlIHF1ZXN0aW9uIGluY2x1ZGVkKSAtIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeXRoaW5nXG4gKiAgICAgIGZvciBvbmUgR2VuaWUgY2FsbCB1bmRlciB0aGF0IG9uZSBrZXkuXG4gKiAgIDMuIEFueSBvZiBgc3RhdHVzYCAvIGBhdHRhY2htZW50YCAvIGB0aGlua2luZ2AgLyBgdGV4dGAgLyBgcXVlcnlgIC9cbiAqICAgICAgYHN0YXRlbWVudGAgLyBgcm93c2AgLyBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgdGhlIGRpZmYgYWdhaW5zdCB0aGUgcHJpb3JcbiAqICAgICAgc25hcHNob3QgcHJvZHVjZWQuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYHsgdHlwZTogXCJyZXN1bHRcIiwgLi4uIH1gIGFzIHRoZSBmaW5hbCB5aWVsZC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIGJ5IHRoZSBnZW5lcmF0b3IgdGhyb3dpbmcgLSB0aGVyZSdzIG5vIGBcImVycm9yXCJgIHZhcmlhbnQuXG4gKiBXcmFwIHRoZSBgZm9yIGF3YWl0YCBpbiBgdHJ5L2NhdGNoYCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZ0IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldnQudHlwZSkge1xuICogICAgIGNhc2UgXCJ0aGlua2luZ1wiOlxuICogICAgICAgY29uc29sZS5sb2coXCJbdGhpbmtpbmddXCIsIGV2dC50aG91Z2h0X3R5cGUsIGV2dC50ZXh0KTtcbiAqICAgICAgIGJyZWFrO1xuICogICAgIGNhc2UgXCJ0ZXh0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIlt0ZXh0XVwiLCBldnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIltkb25lXVwiLCBldnQuc3RhdHVzKTtcbiAqICAgICAgIGJyZWFrO1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVFdmVudENoYXQoXG4gIHNwYWNlX2lkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdlbmllQ2hhdE9wdGlvbnMsXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZUNoYXRFdmVudCwgdm9pZCwgdm9pZD4ge1xuICAvLyBEaWZmIHNvdXJjZSBmb3IgdGhlIGN1cnJlbnQgdHVybi4gQWx3YXlzIGB1bmRlZmluZWRgIG9uIHRoZSBmaXJzdCBzbmFwc2hvdFxuICAvLyBzbyB0aGUgaW5pdGlhbCBzdGF0dXMgLyBhdHRhY2htZW50cyBlbWl0IGZyZXNoOyB1cGRhdGVkIHRvIHRoZSBtb3N0IHJlY2VudFxuICAvLyBzbmFwc2hvdCBhZnRlciBlYWNoIHlpZWxkLlxuICBsZXQgcHJldmlvdXM6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgLy8gVGhlIGBxdWVzdGlvbmAgZXZlbnQgaXMgZGVmZXJyZWQgdG8gdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCBzbyBpdCBjYW5cbiAgLy8gY2FycnkgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCAoc3Vic2NyaWJlcnMgdXNlIGl0IGFzIHRoZSBncm91cGluZyBrZXkgZm9yXG4gIC8vIGV2ZXJ5IGV2ZW50IGluIHRoaXMgdHVybikuIFRoZSBmaXJzdCBzbmFwc2hvdCBpcyB0aGUgZWFybGllc3QgcG9pbnQgdGhhdCBpZFxuICAvLyBleGlzdHMuXG4gIGxldCBxdWVzdGlvbkVtaXR0ZWQgPSBmYWxzZTtcbiAgZm9yIGF3YWl0IChjb25zdCByYXdNZXNzYWdlIG9mIGdlbmllQ2hhdChzcGFjZV9pZCwgY29udGVudCwgb3B0aW9ucykpIHtcbiAgICAvLyBOb3JtYWxpemUgYG1lc3NhZ2VfaWRgIGZyb20gdGhlIGxlZ2FjeSBgaWRgIGZpZWxkIHdoZW4gR2VuaWUncyB3aXJlXG4gICAgLy8gcmVzcG9uc2Ugb25seSBwb3B1bGF0ZXMgb25lIG9mIHRoZW0uIFRoZSBTREsgc2NoZW1hIG1hcmtzIGJvdGggYXNcbiAgICAvLyByZXF1aXJlZCwgYnV0IGluIHByYWN0aWNlIHRoZSBgc3RhcnRDb252ZXJzYXRpb25gIC8gYGNyZWF0ZU1lc3NhZ2VgIGlubmVyXG4gICAgLy8gYG1lc3NhZ2VgIHBheWxvYWQgc29tZXRpbWVzIHNoaXBzIG9ubHkgYGlkYCB3aGlsZSB0aGUgbmV3IGBtZXNzYWdlX2lkYFxuICAgIC8vIGZpZWxkIGxhbmRzIHVuZGVmaW5lZC4gRXZlcnkgZG93bnN0cmVhbSBldmVudCBkZXRlY3RvciBrZXlzIGdyb3VwaW5nIG9mZlxuICAgIC8vIGBtZXNzYWdlX2lkYDsgdGhlIGZhbGxiYWNrIGtlZXBzIG9uZSBHZW5pZSB0dXJuJ3MgZXZlbnRzIGZyb20gc3BsaXR0aW5nXG4gICAgLy8gYWNyb3NzIGFuIGFub24gZ3JvdXAgKyB0aGUgcmVhbC1pZCBncm91cCB3aGVuIHN1YnNjcmliZXJzIGJ1Y2tldCBieVxuICAgIC8vIGBtZXNzYWdlX2lkYC5cbiAgICBjb25zdCBtZXNzYWdlOiBHZW5pZU1lc3NhZ2UgPSByYXdNZXNzYWdlLm1lc3NhZ2VfaWRcbiAgICAgID8gcmF3TWVzc2FnZVxuICAgICAgOiB7IC4uLnJhd01lc3NhZ2UsIG1lc3NhZ2VfaWQ6IHJhd01lc3NhZ2UuaWQgfTtcbiAgICB5aWVsZCB7XG4gICAgICB0eXBlOiBcIm1lc3NhZ2VcIixcbiAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZS5tZXNzYWdlX2lkLFxuICAgICAgbWVzc2FnZSxcbiAgICB9O1xuICAgIGlmICghcXVlc3Rpb25FbWl0dGVkKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcbiAgICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICAgIC4uLihtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCA/IHsgY29udmVyc2F0aW9uX2lkOiBtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCB9IDoge30pLFxuICAgICAgICAuLi4obWVzc2FnZS5tZXNzYWdlX2lkID8geyBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQgfSA6IHt9KSxcbiAgICAgICAgY29udGVudDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgfTtcbiAgICAgIHF1ZXN0aW9uRW1pdHRlZCA9IHRydWU7XG4gICAgfVxuICAgIHlpZWxkKiBldmVudC5ldmVudHNGcm9tTWVzc2FnZShtZXNzYWdlLCBwcmV2aW91cywgbWVzc2FnZS5zcGFjZV9pZCk7XG4gICAgY29uc3Qgc3RhdHVzID0gbWVzc2FnZS5zdGF0dXM7XG4gICAgaWYgKGdlbmllTW9kZWwuaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXMpKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicmVzdWx0XCIsXG4gICAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkLFxuICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHByZXZpb3VzID0gbWVzc2FnZTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHdvcmtzcGFjZSBjbGllbnQgaGVscGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFJlc29sdmUgYSBgV29ya3NwYWNlQ2xpZW50YCBpbiB0aGlzIHByZWZlcmVuY2Ugb3JkZXI6XG4gKlxuICogICAxLiBDYWxsZXItc3VwcGxpZWQgYG9wdGlvbnMud29ya3NwYWNlQ2xpZW50YC5cbiAqICAgMi4gQXBwS2l0J3MgcGVyLXJlcXVlc3QgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50IGluc2lkZSBhIHJlcXVlc3Qgc2NvcGUuXG4gKiAgIDMuIEZyZXNoIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGVudi12YXIgYXV0aCB2aWFcbiAqICAgICAgYERBVEFCUklDS1NfQ09ORklHX1BST0ZJTEVgIC8gYERBVEFCUklDS1NfSE9TVGAgLyBgREFUQUJSSUNLU19UT0tFTmApLlxuICpcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCkgcmV0dXJuIG9wdGlvbnMud29ya3NwYWNlQ2xpZW50O1xuICB0cnkge1xuICAgIHJldHVybiBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb3QgaW5zaWRlIGFuIEFwcEtpdCByZXF1ZXN0IGNvbnRleHQ7IGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGF1dGguXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xufVxuIl19
|
package/lib/src/space.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { createWorkspaceClient } from "@databricks/appkit";
|
|
24
24
|
import { databricks } from "@dbx-tools/appkit";
|
|
25
|
-
import {
|
|
25
|
+
import { errorUtils, json, log, object, stringUtils } from "@dbx-tools/shared-core";
|
|
26
26
|
import { genieModel } from "@dbx-tools/shared-genie";
|
|
27
27
|
const logger = log.logger("genie/space");
|
|
28
28
|
/**
|
|
@@ -59,7 +59,7 @@ export async function getGenieSpace(spaceId, options) {
|
|
|
59
59
|
throw err;
|
|
60
60
|
logger.debug("serialized-space:forbidden", {
|
|
61
61
|
spaceId,
|
|
62
|
-
error:
|
|
62
|
+
error: errorUtils.errorMessage(err),
|
|
63
63
|
});
|
|
64
64
|
raw = await request(false);
|
|
65
65
|
}
|
|
@@ -72,7 +72,7 @@ export async function getGenieSpace(spaceId, options) {
|
|
|
72
72
|
* SDK surfaces the error code without always carrying a status.
|
|
73
73
|
*/
|
|
74
74
|
function isSerializedSpaceForbidden(err) {
|
|
75
|
-
const context =
|
|
75
|
+
const context = errorUtils.errorContext(err);
|
|
76
76
|
return (context.hasStatusCode(403) ||
|
|
77
77
|
context.hasMessage("permission denied") ||
|
|
78
78
|
context.hasMessage("can edit"));
|
|
@@ -101,9 +101,9 @@ export function genieSampleQuestions(space) {
|
|
|
101
101
|
return [
|
|
102
102
|
...object
|
|
103
103
|
.sequence(sampleQuestions)
|
|
104
|
-
.map((entry) =>
|
|
104
|
+
.map((entry) => stringUtils.firstNonEmpty(entry?.question))
|
|
105
105
|
.nonNull()
|
|
106
106
|
.distinct(),
|
|
107
107
|
];
|
|
108
108
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE9BQU8sRUFBRSxxQkFBcUIsRUFBd0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBRXRFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUEyQnpDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsT0FBZSxFQUNmLE9BQThCO0lBRTlCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxlQUFlLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQztJQUNqRCxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pGLE1BQU0sT0FBTyxHQUFHLENBQUMsaUJBQTBCLEVBQW9CLEVBQUUsQ0FDL0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3RCO1FBQ0UsSUFBSSxFQUFFLHlCQUF5QixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM1RCxNQUFNLEVBQUUsS0FBSztRQUNiLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNsRSxPQUFPLEVBQUUsSUFBSSxPQUFPLEVBQUU7UUFDdEIsR0FBRyxFQUFFLEtBQUs7S0FDWCxFQUNELEdBQUcsQ0FDSixDQUFDO0lBRUosSUFBSSxHQUFZLENBQUM7SUFDakIsSUFBSSxDQUFDO1FBQ0gsR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQztZQUFFLE1BQU0sR0FBRyxDQUFDO1FBQy9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUU7WUFDekMsT0FBTztZQUNQLEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztTQUMvQixDQUFDLENBQUM7UUFDSCxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLDBCQUEwQixDQUFDLEdBQVk7SUFDOUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxPQUFPLENBQ0wsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztRQUN2QyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUMvQixDQUFDO0FBQ0osQ0FBQztBQVlEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBaUI7SUFDcEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBQzFDLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFJLE1BQTZELEVBQUUsTUFBTTtRQUM1RixFQUFFLGdCQUFnQixDQUFDO0lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRS9DLE9BQU87UUFDTCxHQUFHLE1BQU07YUFDTixRQUFRLENBQUMsZUFBNkMsQ0FBQzthQUN2RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3JELE9BQU8sRUFBRTthQUNULFFBQVEsRUFBRTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5pZSBzcGFjZSBtZXRhZGF0YSBoZWxwZXJzLlxuICpcbiAqIEZldGNoZXMgYSBHZW5pZSBzcGFjZSdzIGRlZmluaXRpb24gKGluY2x1ZGluZyB0aGUgb3B0LWluIGBzZXJpYWxpemVkX3NwYWNlYFxuICogYmxvYikgYW5kIGV4dHJhY3RzIHRoZSBjdXJhdGVkIHN0YXJ0ZXIgcXVlc3Rpb25zIGFuIGF1dGhvciBjb25maWd1cmVkIG9uIHRoZVxuICogc3BhY2UuIFRoZSB0eXBlZCBTREsgYGNsaWVudC5nZW5pZS5nZXRTcGFjZWAgb25seSByZXR1cm5zIHRoZVxuICogZGlyZWN0b3J5LWxpc3Rpbmcgc3VyZmFjZSAoYHRpdGxlYCAvIGBkZXNjcmlwdGlvbmAgLyBgd2FyZWhvdXNlX2lkYCk7IHRoZVxuICogc2FtcGxlIHF1ZXN0aW9ucyBsaXZlIGluc2lkZSBgc2VyaWFsaXplZF9zcGFjZWAsIHdoaWNoIHRoZSBSRVNUIEFQSSByZXR1cm5zXG4gKiBvbmx5IHdoZW4gYGluY2x1ZGVfc2VyaWFsaXplZF9zcGFjZT10cnVlYC4gV2UgaGl0IHRoYXQgZW5kcG9pbnQgdGhyb3VnaCB0aGVcbiAqIHdvcmtzcGFjZSBjbGllbnQncyByYXcgYGFwaUNsaWVudGAgc2luY2UgdGhlIHR5cGVkIHJlcXVlc3Qgc2hhcGUgaGFzIG5vIGZsYWdcbiAqIGZvciBpdC5cbiAqXG4gKiBUaGUgc2VyaWFsaXplZCBibG9iIGlzIGFsc28gbW9yZSBwcml2aWxlZ2VkIHRoYW4gdGhlIGxpc3Rpbmcgc3VyZmFjZTogdGhlXG4gKiB3b3Jrc3BhY2UgQVBJIHJlcXVpcmVzIGBDYW4gRWRpdGAgb24gdGhlIHNwYWNlIHRvIHJldHVybiBpdCwgd2hpbGUgYENhbiBSdW5gXG4gKiBpcyBlbm91Z2ggZm9yIHRpdGxlIC8gZGVzY3JpcHRpb24uIEEgY2FsbGVyIHRoYXQgb25seSBob2xkcyBgQ2FuIFJ1bmAgLSBhblxuICogYXBwIHNlcnZpY2UgcHJpbmNpcGFsIGdyYW50ZWQganVzdCBlbm91Z2ggdG8gYXNrIHF1ZXN0aW9ucyBpcyB0aGUgY29tbW9uIGNhc2VcbiAqIC0gd291bGQgb3RoZXJ3aXNlIGxvc2UgdGhlIHdob2xlIHNwYWNlIGxvb2t1cCB0byBhIGBQRVJNSVNTSU9OX0RFTklFRGAgaXRcbiAqIGNhbm5vdCBhY3Qgb24sIHNvIHRoZSBmZXRjaCBkZWdyYWRlcyB0byB0aGUgdW5zZXJpYWxpemVkIHJlcXVlc3QgaW5zdGVhZCBvZlxuICogZmFpbGluZyAoc2VlIHtAbGluayBnZXRHZW5pZVNwYWNlfSkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVdvcmtzcGFjZUNsaWVudCwgdHlwZSBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBlcnJvciwganNvbiwgbG9nLCBvYmplY3QsIHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBnZW5pZU1vZGVsLCB0eXBlIEdlbmllU3BhY2UgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWVcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImdlbmllL3NwYWNlXCIpO1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rIGdldEdlbmllU3BhY2V9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRHZW5pZVNwYWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBgV29ya3NwYWNlQ2xpZW50YC4gRGVmYXVsdHMgdG8gYGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpYFxuICAgKiAoZW52LXZhciBhdXRoKS4gU2VydmVyIGNhbGxlcnMgc2hvdWxkIHBhc3MgdGhlaXIgT0JPLXNjb3BlZCBjbGllbnQgc28gdGhlXG4gICAqIGxvb2t1cCBydW5zIGFzIHRoZSB1c2VyLlxuICAgKi9cbiAgd29ya3NwYWNlQ2xpZW50PzogV29ya3NwYWNlQ2xpZW50O1xuICAvKipcbiAgICogUmVxdWVzdCB0aGUgYHNlcmlhbGl6ZWRfc3BhY2VgIGJsb2IgKGNhdGFsb2dzLCB0YWJsZXMsIHNhbXBsZSBxdWVzdGlvbnMsXG4gICAqIHByb21wdHMpLiBEZWZhdWx0cyB0byBgdHJ1ZWAgLSB0aGUgb25seSByZWFzb24gdG8gc2tpcCBpdCBpcyB3aGVuIHRoZVxuICAgKiBjYWxsZXIganVzdCBuZWVkcyB0aXRsZSAvIGRlc2NyaXB0aW9uIGFuZCB3YW50cyB0aGUgc21hbGxlciBwYXlsb2FkLlxuICAgKlxuICAgKiBSZXF1ZXN0aW5nIGl0IGlzIGJlc3QtZWZmb3J0OiB0aGUgYmxvYiBuZWVkcyBgQ2FuIEVkaXRgIG9uIHRoZSBzcGFjZSwgc28gYVxuICAgKiBjYWxsZXIgd2l0aG91dCBpdCBnZXRzIHRoZSB1bnNlcmlhbGl6ZWQgc3BhY2UgYmFjayByYXRoZXIgdGhhbiBhbiBlcnJvcixcbiAgICogYW5kIHtAbGluayBnZW5pZVNhbXBsZVF1ZXN0aW9uc30gdGhlbiByZXBvcnRzIG5vIHN1Z2dlc3Rpb25zLlxuICAgKi9cbiAgc2VyaWFsaXplZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBjYW5jZWxsYXRpb24uIEFjY2VwdHMgYSBXSEFUV0cgYEFib3J0U2lnbmFsYCBvciBhIGZ1bGx5LWJ1aWx0IFNES1xuICAgKiBgQ29udGV4dGAgKHNlZSBgZGF0YWJyaWNrcy5Db250ZXh0TGlrZWApLlxuICAgKi9cbiAgY29udGV4dD86IGRhdGFicmlja3MuQ29udGV4dExpa2U7XG59XG5cbi8qKlxuICogRmV0Y2ggYSBHZW5pZSBzcGFjZSBieSBpZCwgb3B0aW9uYWxseSBpbmNsdWRpbmcgaXRzIHNlcmlhbGl6ZWQgZGVmaW5pdGlvbi5cbiAqIEhpdHMgYEdFVCAvYXBpLzIuMC9nZW5pZS9zcGFjZXMvPGlkPmAgd2l0aCBgaW5jbHVkZV9zZXJpYWxpemVkX3NwYWNlPXRydWVgXG4gKiB0aHJvdWdoIHRoZSByYXcgYGFwaUNsaWVudGAsIHRoZW4gdmFsaWRhdGVzIHRoZSByZXNwb25zZSBhZ2FpbnN0XG4gKiB7QGxpbmsgR2VuaWVTcGFjZVNjaGVtYX0gKHVua25vd24gZmllbGRzIGxpa2UgYGV0YWdgIC9cbiAqIGBwYXJlbnRfcGF0aGAgYXJlIHN0cmlwcGVkKS5cbiAqXG4gKiBXaGVuIHRoZSBzZXJpYWxpemVkIHJlcXVlc3QgaXMgcmVqZWN0ZWQgZm9yIGxhY2sgb2YgcGVybWlzc2lvbiAoYDQwM2AsIG9yIGFcbiAqIGBQRVJNSVNTSU9OX0RFTklFRGAgLyBgQ2FuIEVkaXRgIG1lc3NhZ2UgLSB0aGUgd29ya3NwYWNlIEFQSSBnYXRlcyB0aGUgYmxvYlxuICogYmVoaW5kIGBDYW4gRWRpdGApLCBpdCByZXRyaWVzIG9uY2Ugd2l0aG91dCB0aGUgZmxhZyBzbyB0aGUgY2FsbGVyIHN0aWxsIGdldHNcbiAqIHRoZSBzcGFjZS4gQW55IG90aGVyIGZhaWx1cmUsIGFuZCBhIHJldHJ5IHRoYXQgZmFpbHMgdG9vLCBpcyByZXRocm93bjogYVxuICogY2FuY2VsbGVkIHJlcXVlc3Qgb3IgYSBtaXNzaW5nIHNwYWNlIG11c3Qgbm90IGxvb2sgbGlrZSBhbiB1bnNlcmlhbGl6ZWRcbiAqIHNwYWNlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0R2VuaWVTcGFjZShcbiAgc3BhY2VJZDogc3RyaW5nLFxuICBvcHRpb25zPzogR2V0R2VuaWVTcGFjZU9wdGlvbnMsXG4pOiBQcm9taXNlPEdlbmllU3BhY2U+IHtcbiAgY29uc3QgY2xpZW50ID0gb3B0aW9ucz8ud29ya3NwYWNlQ2xpZW50ID8/IGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xuICBjb25zdCBzZXJpYWxpemVkID0gb3B0aW9ucz8uc2VyaWFsaXplZCAhPT0gZmFsc2U7XG4gIGNvbnN0IGN0eCA9IG9wdGlvbnM/LmNvbnRleHQgPyBkYXRhYnJpY2tzLnRvQ29udGV4dChvcHRpb25zLmNvbnRleHQpIDogdW5kZWZpbmVkO1xuICBjb25zdCByZXF1ZXN0ID0gKGluY2x1ZGVTZXJpYWxpemVkOiBib29sZWFuKTogUHJvbWlzZTx1bmtub3duPiA9PlxuICAgIGNsaWVudC5hcGlDbGllbnQucmVxdWVzdChcbiAgICAgIHtcbiAgICAgICAgcGF0aDogYC9hcGkvMi4wL2dlbmllL3NwYWNlcy8ke2VuY29kZVVSSUNvbXBvbmVudChzcGFjZUlkKX1gLFxuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIHF1ZXJ5OiBpbmNsdWRlU2VyaWFsaXplZCA/IHsgaW5jbHVkZV9zZXJpYWxpemVkX3NwYWNlOiB0cnVlIH0gOiB7fSxcbiAgICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnMoKSxcbiAgICAgICAgcmF3OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBjdHgsXG4gICAgKTtcblxuICBsZXQgcmF3OiB1bmtub3duO1xuICB0cnkge1xuICAgIHJhdyA9IGF3YWl0IHJlcXVlc3Qoc2VyaWFsaXplZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICghc2VyaWFsaXplZCB8fCAhaXNTZXJpYWxpemVkU3BhY2VGb3JiaWRkZW4oZXJyKSkgdGhyb3cgZXJyO1xuICAgIGxvZ2dlci5kZWJ1ZyhcInNlcmlhbGl6ZWQtc3BhY2U6Zm9yYmlkZGVuXCIsIHtcbiAgICAgIHNwYWNlSWQsXG4gICAgICBlcnJvcjogZXJyb3IuZXJyb3JNZXNzYWdlKGVyciksXG4gICAgfSk7XG4gICAgcmF3ID0gYXdhaXQgcmVxdWVzdChmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIGdlbmllTW9kZWwuR2VuaWVTcGFjZVNjaGVtYS5wYXJzZShyYXcpO1xufVxuXG4vKipcbiAqIFRydWUgd2hlbiBhIGZhaWxlZCBzcGFjZSByZXF1ZXN0IHdhcyByZWplY3RlZCBmb3IgbGFjayBvZiBwZXJtaXNzaW9uLCB0aGUgb25lXG4gKiBmYWlsdXJlIHRoZSB1bnNlcmlhbGl6ZWQgcmV0cnkgY2FuIHJlY292ZXIgZnJvbS4gTWF0Y2hlcyBvbiBgNDAzYCBhbmQgb24gdGhlXG4gKiBgUEVSTUlTU0lPTl9ERU5JRURgIC8gYENhbiBFZGl0YCB3b3JkaW5nIHRoZSB3b3Jrc3BhY2UgQVBJIHJldHVybnMsIHNpbmNlIHRoZVxuICogU0RLIHN1cmZhY2VzIHRoZSBlcnJvciBjb2RlIHdpdGhvdXQgYWx3YXlzIGNhcnJ5aW5nIGEgc3RhdHVzLlxuICovXG5mdW5jdGlvbiBpc1NlcmlhbGl6ZWRTcGFjZUZvcmJpZGRlbihlcnI6IHVua25vd24pOiBib29sZWFuIHtcbiAgY29uc3QgY29udGV4dCA9IGVycm9yLmVycm9yQ29udGV4dChlcnIpO1xuICByZXR1cm4gKFxuICAgIGNvbnRleHQuaGFzU3RhdHVzQ29kZSg0MDMpIHx8XG4gICAgY29udGV4dC5oYXNNZXNzYWdlKFwicGVybWlzc2lvbiBkZW5pZWRcIikgfHxcbiAgICBjb250ZXh0Lmhhc01lc3NhZ2UoXCJjYW4gZWRpdFwiKVxuICApO1xufVxuXG4vKipcbiAqIE9uZSBlbnRyeSBpbiBhIHNlcmlhbGl6ZWQgc3BhY2UncyBgY29uZmlnLnNhbXBsZV9xdWVzdGlvbnNgLiBUaGVcbiAqIGF1dGhvci1mYWNpbmcgZmllbGQgaXMgYHF1ZXN0aW9uYCwgd2hpY2ggdGhlIHdpcmUgZm9ybWF0IG1vZGVscyBhcyBhIHN0cmluZ1xuICogYXJyYXkgKGEgc2luZ2xlIG11bHRpLWxpbmUgcXVlc3Rpb24gaXMgc3BsaXQgYWNyb3NzIGVudHJpZXMpOyB3ZSB0cmVhdCB0aGVcbiAqIGZpcnN0IG5vbi1lbXB0eSBlbnRyeSBhcyB0aGUgZGlzcGxheWFibGUgcXVlc3Rpb24gdGV4dC5cbiAqL1xuaW50ZXJmYWNlIFNlcmlhbGl6ZWRTYW1wbGVRdWVzdGlvbiB7XG4gIHF1ZXN0aW9uPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBjdXJhdGVkIHN0YXJ0ZXIgcXVlc3Rpb25zIGFuIGF1dGhvciBjb25maWd1cmVkIG9uIGEgR2VuaWUgc3BhY2UuXG4gKiBSZWFkcyBgc2VyaWFsaXplZF9zcGFjZSAtPiBjb25maWcuc2FtcGxlX3F1ZXN0aW9uc1sqXS5xdWVzdGlvbmAuIFJldHVybnMgYFtdYFxuICogd2hlbiB0aGUgc3BhY2UgY2FycmllcyBubyBzZXJpYWxpemVkIGJsb2IsIHRoZSBibG9iIGlzIHVucGFyc2VhYmxlLCBvciBub1xuICogc2FtcGxlIHF1ZXN0aW9ucyBhcmUgY29uZmlndXJlZCAtIHNvIGEgbWlzc2luZyBvciBtaXNjb25maWd1cmVkIHNwYWNlXG4gKiBkZWdyYWRlcyB0byBcIm5vIHN1Z2dlc3Rpb25zXCIgcmF0aGVyIHRoYW4gdGhyb3dpbmcuIE9yZGVyIGlzIHByZXNlcnZlZCAodGhlXG4gKiBhdXRob3IncyBvcmRlcmluZykgYW5kIGR1cGxpY2F0ZXMgYXJlIGRyb3BwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5pZVNhbXBsZVF1ZXN0aW9ucyhzcGFjZTogR2VuaWVTcGFjZSk6IHN0cmluZ1tdIHtcbiAgY29uc3Qgc2VyaWFsaXplZCA9IHNwYWNlLnNlcmlhbGl6ZWRfc3BhY2U7XG4gIGlmICghc2VyaWFsaXplZCkgcmV0dXJuIFtdO1xuICBjb25zdCBwYXJzZWQgPSBqc29uLnBhcnNlKHNlcmlhbGl6ZWQpO1xuICBpZiAocGFyc2VkID09PSB1bmRlZmluZWQpIHtcbiAgICBsb2dnZXIud2FybihcInNlcmlhbGl6ZWQtc3BhY2U6cGFyc2UtZXJyb3JcIiwgeyBzcGFjZUlkOiBzcGFjZS5zcGFjZV9pZCB9KTtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3Qgc2FtcGxlUXVlc3Rpb25zID0gKHBhcnNlZCBhcyB7IGNvbmZpZz86IHsgc2FtcGxlX3F1ZXN0aW9ucz86IHVua25vd24gfSB9IHwgbnVsbCk/LmNvbmZpZ1xuICAgID8uc2FtcGxlX3F1ZXN0aW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHNhbXBsZVF1ZXN0aW9ucykpIHJldHVybiBbXTtcblxuICByZXR1cm4gW1xuICAgIC4uLm9iamVjdFxuICAgICAgLnNlcXVlbmNlKHNhbXBsZVF1ZXN0aW9ucyBhcyBTZXJpYWxpemVkU2FtcGxlUXVlc3Rpb25bXSlcbiAgICAgIC5tYXAoKGVudHJ5KSA9PiBzdHJpbmcuZmlyc3ROb25FbXB0eShlbnRyeT8ucXVlc3Rpb24pKVxuICAgICAgLm5vbk51bGwoKVxuICAgICAgLmRpc3RpbmN0KCksXG4gIF07XG59XG4iXX0=
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE9BQU8sRUFBRSxxQkFBcUIsRUFBd0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBRXRFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUEyQnpDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsT0FBZSxFQUNmLE9BQThCO0lBRTlCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxlQUFlLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQztJQUNqRCxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pGLE1BQU0sT0FBTyxHQUFHLENBQUMsaUJBQTBCLEVBQW9CLEVBQUUsQ0FDL0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ3RCO1FBQ0UsSUFBSSxFQUFFLHlCQUF5QixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM1RCxNQUFNLEVBQUUsS0FBSztRQUNiLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNsRSxPQUFPLEVBQUUsSUFBSSxPQUFPLEVBQUU7UUFDdEIsR0FBRyxFQUFFLEtBQUs7S0FDWCxFQUNELEdBQUcsQ0FDSixDQUFDO0lBRUosSUFBSSxHQUFZLENBQUM7SUFDakIsSUFBSSxDQUFDO1FBQ0gsR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQztZQUFFLE1BQU0sR0FBRyxDQUFDO1FBQy9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUU7WUFDekMsT0FBTztZQUNQLEtBQUssRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFDSCxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLDBCQUEwQixDQUFDLEdBQVk7SUFDOUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxPQUFPLENBQ0wsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztRQUN2QyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUMvQixDQUFDO0FBQ0osQ0FBQztBQVlEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBaUI7SUFDcEQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBQzFDLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFJLE1BQTZELEVBQUUsTUFBTTtRQUM1RixFQUFFLGdCQUFnQixDQUFDO0lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRS9DLE9BQU87UUFDTCxHQUFHLE1BQU07YUFDTixRQUFRLENBQUMsZUFBNkMsQ0FBQzthQUN2RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzFELE9BQU8sRUFBRTthQUNULFFBQVEsRUFBRTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5pZSBzcGFjZSBtZXRhZGF0YSBoZWxwZXJzLlxuICpcbiAqIEZldGNoZXMgYSBHZW5pZSBzcGFjZSdzIGRlZmluaXRpb24gKGluY2x1ZGluZyB0aGUgb3B0LWluIGBzZXJpYWxpemVkX3NwYWNlYFxuICogYmxvYikgYW5kIGV4dHJhY3RzIHRoZSBjdXJhdGVkIHN0YXJ0ZXIgcXVlc3Rpb25zIGFuIGF1dGhvciBjb25maWd1cmVkIG9uIHRoZVxuICogc3BhY2UuIFRoZSB0eXBlZCBTREsgYGNsaWVudC5nZW5pZS5nZXRTcGFjZWAgb25seSByZXR1cm5zIHRoZVxuICogZGlyZWN0b3J5LWxpc3Rpbmcgc3VyZmFjZSAoYHRpdGxlYCAvIGBkZXNjcmlwdGlvbmAgLyBgd2FyZWhvdXNlX2lkYCk7IHRoZVxuICogc2FtcGxlIHF1ZXN0aW9ucyBsaXZlIGluc2lkZSBgc2VyaWFsaXplZF9zcGFjZWAsIHdoaWNoIHRoZSBSRVNUIEFQSSByZXR1cm5zXG4gKiBvbmx5IHdoZW4gYGluY2x1ZGVfc2VyaWFsaXplZF9zcGFjZT10cnVlYC4gV2UgaGl0IHRoYXQgZW5kcG9pbnQgdGhyb3VnaCB0aGVcbiAqIHdvcmtzcGFjZSBjbGllbnQncyByYXcgYGFwaUNsaWVudGAgc2luY2UgdGhlIHR5cGVkIHJlcXVlc3Qgc2hhcGUgaGFzIG5vIGZsYWdcbiAqIGZvciBpdC5cbiAqXG4gKiBUaGUgc2VyaWFsaXplZCBibG9iIGlzIGFsc28gbW9yZSBwcml2aWxlZ2VkIHRoYW4gdGhlIGxpc3Rpbmcgc3VyZmFjZTogdGhlXG4gKiB3b3Jrc3BhY2UgQVBJIHJlcXVpcmVzIGBDYW4gRWRpdGAgb24gdGhlIHNwYWNlIHRvIHJldHVybiBpdCwgd2hpbGUgYENhbiBSdW5gXG4gKiBpcyBlbm91Z2ggZm9yIHRpdGxlIC8gZGVzY3JpcHRpb24uIEEgY2FsbGVyIHRoYXQgb25seSBob2xkcyBgQ2FuIFJ1bmAgLSBhblxuICogYXBwIHNlcnZpY2UgcHJpbmNpcGFsIGdyYW50ZWQganVzdCBlbm91Z2ggdG8gYXNrIHF1ZXN0aW9ucyBpcyB0aGUgY29tbW9uIGNhc2VcbiAqIC0gd291bGQgb3RoZXJ3aXNlIGxvc2UgdGhlIHdob2xlIHNwYWNlIGxvb2t1cCB0byBhIGBQRVJNSVNTSU9OX0RFTklFRGAgaXRcbiAqIGNhbm5vdCBhY3Qgb24sIHNvIHRoZSBmZXRjaCBkZWdyYWRlcyB0byB0aGUgdW5zZXJpYWxpemVkIHJlcXVlc3QgaW5zdGVhZCBvZlxuICogZmFpbGluZyAoc2VlIHtAbGluayBnZXRHZW5pZVNwYWNlfSkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVdvcmtzcGFjZUNsaWVudCwgdHlwZSBXb3Jrc3BhY2VDbGllbnQgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBlcnJvclV0aWxzLCBqc29uLCBsb2csIG9iamVjdCwgc3RyaW5nVXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZ2VuaWVNb2RlbCwgdHlwZSBHZW5pZVNwYWNlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS9zcGFjZVwiKTtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayBnZXRHZW5pZVNwYWNlfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0R2VuaWVTcGFjZU9wdGlvbnMge1xuICAvKipcbiAgICogRXhwbGljaXQgYFdvcmtzcGFjZUNsaWVudGAuIERlZmF1bHRzIHRvIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWBcbiAgICogKGVudi12YXIgYXV0aCkuIFNlcnZlciBjYWxsZXJzIHNob3VsZCBwYXNzIHRoZWlyIE9CTy1zY29wZWQgY2xpZW50IHNvIHRoZVxuICAgKiBsb29rdXAgcnVucyBhcyB0aGUgdXNlci5cbiAgICovXG4gIHdvcmtzcGFjZUNsaWVudD86IFdvcmtzcGFjZUNsaWVudDtcbiAgLyoqXG4gICAqIFJlcXVlc3QgdGhlIGBzZXJpYWxpemVkX3NwYWNlYCBibG9iIChjYXRhbG9ncywgdGFibGVzLCBzYW1wbGUgcXVlc3Rpb25zLFxuICAgKiBwcm9tcHRzKS4gRGVmYXVsdHMgdG8gYHRydWVgIC0gdGhlIG9ubHkgcmVhc29uIHRvIHNraXAgaXQgaXMgd2hlbiB0aGVcbiAgICogY2FsbGVyIGp1c3QgbmVlZHMgdGl0bGUgLyBkZXNjcmlwdGlvbiBhbmQgd2FudHMgdGhlIHNtYWxsZXIgcGF5bG9hZC5cbiAgICpcbiAgICogUmVxdWVzdGluZyBpdCBpcyBiZXN0LWVmZm9ydDogdGhlIGJsb2IgbmVlZHMgYENhbiBFZGl0YCBvbiB0aGUgc3BhY2UsIHNvIGFcbiAgICogY2FsbGVyIHdpdGhvdXQgaXQgZ2V0cyB0aGUgdW5zZXJpYWxpemVkIHNwYWNlIGJhY2sgcmF0aGVyIHRoYW4gYW4gZXJyb3IsXG4gICAqIGFuZCB7QGxpbmsgZ2VuaWVTYW1wbGVRdWVzdGlvbnN9IHRoZW4gcmVwb3J0cyBubyBzdWdnZXN0aW9ucy5cbiAgICovXG4gIHNlcmlhbGl6ZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogRXh0ZXJuYWwgY2FuY2VsbGF0aW9uLiBBY2NlcHRzIGEgV0hBVFdHIGBBYm9ydFNpZ25hbGAgb3IgYSBmdWxseS1idWlsdCBTREtcbiAgICogYENvbnRleHRgIChzZWUgYGRhdGFicmlja3MuQ29udGV4dExpa2VgKS5cbiAgICovXG4gIGNvbnRleHQ/OiBkYXRhYnJpY2tzLkNvbnRleHRMaWtlO1xufVxuXG4vKipcbiAqIEZldGNoIGEgR2VuaWUgc3BhY2UgYnkgaWQsIG9wdGlvbmFsbHkgaW5jbHVkaW5nIGl0cyBzZXJpYWxpemVkIGRlZmluaXRpb24uXG4gKiBIaXRzIGBHRVQgL2FwaS8yLjAvZ2VuaWUvc3BhY2VzLzxpZD5gIHdpdGggYGluY2x1ZGVfc2VyaWFsaXplZF9zcGFjZT10cnVlYFxuICogdGhyb3VnaCB0aGUgcmF3IGBhcGlDbGllbnRgLCB0aGVuIHZhbGlkYXRlcyB0aGUgcmVzcG9uc2UgYWdhaW5zdFxuICoge0BsaW5rIEdlbmllU3BhY2VTY2hlbWF9ICh1bmtub3duIGZpZWxkcyBsaWtlIGBldGFnYCAvXG4gKiBgcGFyZW50X3BhdGhgIGFyZSBzdHJpcHBlZCkuXG4gKlxuICogV2hlbiB0aGUgc2VyaWFsaXplZCByZXF1ZXN0IGlzIHJlamVjdGVkIGZvciBsYWNrIG9mIHBlcm1pc3Npb24gKGA0MDNgLCBvciBhXG4gKiBgUEVSTUlTU0lPTl9ERU5JRURgIC8gYENhbiBFZGl0YCBtZXNzYWdlIC0gdGhlIHdvcmtzcGFjZSBBUEkgZ2F0ZXMgdGhlIGJsb2JcbiAqIGJlaGluZCBgQ2FuIEVkaXRgKSwgaXQgcmV0cmllcyBvbmNlIHdpdGhvdXQgdGhlIGZsYWcgc28gdGhlIGNhbGxlciBzdGlsbCBnZXRzXG4gKiB0aGUgc3BhY2UuIEFueSBvdGhlciBmYWlsdXJlLCBhbmQgYSByZXRyeSB0aGF0IGZhaWxzIHRvbywgaXMgcmV0aHJvd246IGFcbiAqIGNhbmNlbGxlZCByZXF1ZXN0IG9yIGEgbWlzc2luZyBzcGFjZSBtdXN0IG5vdCBsb29rIGxpa2UgYW4gdW5zZXJpYWxpemVkXG4gKiBzcGFjZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEdlbmllU3BhY2UoXG4gIHNwYWNlSWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdldEdlbmllU3BhY2VPcHRpb25zLFxuKTogUHJvbWlzZTxHZW5pZVNwYWNlPiB7XG4gIGNvbnN0IGNsaWVudCA9IG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCA/PyBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKTtcbiAgY29uc3Qgc2VyaWFsaXplZCA9IG9wdGlvbnM/LnNlcmlhbGl6ZWQgIT09IGZhbHNlO1xuICBjb25zdCBjdHggPSBvcHRpb25zPy5jb250ZXh0ID8gZGF0YWJyaWNrcy50b0NvbnRleHQob3B0aW9ucy5jb250ZXh0KSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcmVxdWVzdCA9IChpbmNsdWRlU2VyaWFsaXplZDogYm9vbGVhbik6IFByb21pc2U8dW5rbm93bj4gPT5cbiAgICBjbGllbnQuYXBpQ2xpZW50LnJlcXVlc3QoXG4gICAgICB7XG4gICAgICAgIHBhdGg6IGAvYXBpLzIuMC9nZW5pZS9zcGFjZXMvJHtlbmNvZGVVUklDb21wb25lbnQoc3BhY2VJZCl9YCxcbiAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICBxdWVyeTogaW5jbHVkZVNlcmlhbGl6ZWQgPyB7IGluY2x1ZGVfc2VyaWFsaXplZF9zcGFjZTogdHJ1ZSB9IDoge30sXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKCksXG4gICAgICAgIHJhdzogZmFsc2UsXG4gICAgICB9LFxuICAgICAgY3R4LFxuICAgICk7XG5cbiAgbGV0IHJhdzogdW5rbm93bjtcbiAgdHJ5IHtcbiAgICByYXcgPSBhd2FpdCByZXF1ZXN0KHNlcmlhbGl6ZWQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIXNlcmlhbGl6ZWQgfHwgIWlzU2VyaWFsaXplZFNwYWNlRm9yYmlkZGVuKGVycikpIHRocm93IGVycjtcbiAgICBsb2dnZXIuZGVidWcoXCJzZXJpYWxpemVkLXNwYWNlOmZvcmJpZGRlblwiLCB7XG4gICAgICBzcGFjZUlkLFxuICAgICAgZXJyb3I6IGVycm9yVXRpbHMuZXJyb3JNZXNzYWdlKGVyciksXG4gICAgfSk7XG4gICAgcmF3ID0gYXdhaXQgcmVxdWVzdChmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIGdlbmllTW9kZWwuR2VuaWVTcGFjZVNjaGVtYS5wYXJzZShyYXcpO1xufVxuXG4vKipcbiAqIFRydWUgd2hlbiBhIGZhaWxlZCBzcGFjZSByZXF1ZXN0IHdhcyByZWplY3RlZCBmb3IgbGFjayBvZiBwZXJtaXNzaW9uLCB0aGUgb25lXG4gKiBmYWlsdXJlIHRoZSB1bnNlcmlhbGl6ZWQgcmV0cnkgY2FuIHJlY292ZXIgZnJvbS4gTWF0Y2hlcyBvbiBgNDAzYCBhbmQgb24gdGhlXG4gKiBgUEVSTUlTU0lPTl9ERU5JRURgIC8gYENhbiBFZGl0YCB3b3JkaW5nIHRoZSB3b3Jrc3BhY2UgQVBJIHJldHVybnMsIHNpbmNlIHRoZVxuICogU0RLIHN1cmZhY2VzIHRoZSBlcnJvciBjb2RlIHdpdGhvdXQgYWx3YXlzIGNhcnJ5aW5nIGEgc3RhdHVzLlxuICovXG5mdW5jdGlvbiBpc1NlcmlhbGl6ZWRTcGFjZUZvcmJpZGRlbihlcnI6IHVua25vd24pOiBib29sZWFuIHtcbiAgY29uc3QgY29udGV4dCA9IGVycm9yVXRpbHMuZXJyb3JDb250ZXh0KGVycik7XG4gIHJldHVybiAoXG4gICAgY29udGV4dC5oYXNTdGF0dXNDb2RlKDQwMykgfHxcbiAgICBjb250ZXh0Lmhhc01lc3NhZ2UoXCJwZXJtaXNzaW9uIGRlbmllZFwiKSB8fFxuICAgIGNvbnRleHQuaGFzTWVzc2FnZShcImNhbiBlZGl0XCIpXG4gICk7XG59XG5cbi8qKlxuICogT25lIGVudHJ5IGluIGEgc2VyaWFsaXplZCBzcGFjZSdzIGBjb25maWcuc2FtcGxlX3F1ZXN0aW9uc2AuIFRoZVxuICogYXV0aG9yLWZhY2luZyBmaWVsZCBpcyBgcXVlc3Rpb25gLCB3aGljaCB0aGUgd2lyZSBmb3JtYXQgbW9kZWxzIGFzIGEgc3RyaW5nXG4gKiBhcnJheSAoYSBzaW5nbGUgbXVsdGktbGluZSBxdWVzdGlvbiBpcyBzcGxpdCBhY3Jvc3MgZW50cmllcyk7IHdlIHRyZWF0IHRoZVxuICogZmlyc3Qgbm9uLWVtcHR5IGVudHJ5IGFzIHRoZSBkaXNwbGF5YWJsZSBxdWVzdGlvbiB0ZXh0LlxuICovXG5pbnRlcmZhY2UgU2VyaWFsaXplZFNhbXBsZVF1ZXN0aW9uIHtcbiAgcXVlc3Rpb24/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIGN1cmF0ZWQgc3RhcnRlciBxdWVzdGlvbnMgYW4gYXV0aG9yIGNvbmZpZ3VyZWQgb24gYSBHZW5pZSBzcGFjZS5cbiAqIFJlYWRzIGBzZXJpYWxpemVkX3NwYWNlIC0+IGNvbmZpZy5zYW1wbGVfcXVlc3Rpb25zWypdLnF1ZXN0aW9uYC4gUmV0dXJucyBgW11gXG4gKiB3aGVuIHRoZSBzcGFjZSBjYXJyaWVzIG5vIHNlcmlhbGl6ZWQgYmxvYiwgdGhlIGJsb2IgaXMgdW5wYXJzZWFibGUsIG9yIG5vXG4gKiBzYW1wbGUgcXVlc3Rpb25zIGFyZSBjb25maWd1cmVkIC0gc28gYSBtaXNzaW5nIG9yIG1pc2NvbmZpZ3VyZWQgc3BhY2VcbiAqIGRlZ3JhZGVzIHRvIFwibm8gc3VnZ2VzdGlvbnNcIiByYXRoZXIgdGhhbiB0aHJvd2luZy4gT3JkZXIgaXMgcHJlc2VydmVkICh0aGVcbiAqIGF1dGhvcidzIG9yZGVyaW5nKSBhbmQgZHVwbGljYXRlcyBhcmUgZHJvcHBlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmllU2FtcGxlUXVlc3Rpb25zKHNwYWNlOiBHZW5pZVNwYWNlKTogc3RyaW5nW10ge1xuICBjb25zdCBzZXJpYWxpemVkID0gc3BhY2Uuc2VyaWFsaXplZF9zcGFjZTtcbiAgaWYgKCFzZXJpYWxpemVkKSByZXR1cm4gW107XG4gIGNvbnN0IHBhcnNlZCA9IGpzb24ucGFyc2Uoc2VyaWFsaXplZCk7XG4gIGlmIChwYXJzZWQgPT09IHVuZGVmaW5lZCkge1xuICAgIGxvZ2dlci53YXJuKFwic2VyaWFsaXplZC1zcGFjZTpwYXJzZS1lcnJvclwiLCB7IHNwYWNlSWQ6IHNwYWNlLnNwYWNlX2lkIH0pO1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBzYW1wbGVRdWVzdGlvbnMgPSAocGFyc2VkIGFzIHsgY29uZmlnPzogeyBzYW1wbGVfcXVlc3Rpb25zPzogdW5rbm93biB9IH0gfCBudWxsKT8uY29uZmlnXG4gICAgPy5zYW1wbGVfcXVlc3Rpb25zO1xuICBpZiAoIUFycmF5LmlzQXJyYXkoc2FtcGxlUXVlc3Rpb25zKSkgcmV0dXJuIFtdO1xuXG4gIHJldHVybiBbXG4gICAgLi4ub2JqZWN0XG4gICAgICAuc2VxdWVuY2Uoc2FtcGxlUXVlc3Rpb25zIGFzIFNlcmlhbGl6ZWRTYW1wbGVRdWVzdGlvbltdKVxuICAgICAgLm1hcCgoZW50cnkpID0+IHN0cmluZ1V0aWxzLmZpcnN0Tm9uRW1wdHkoZW50cnk/LnF1ZXN0aW9uKSlcbiAgICAgIC5ub25OdWxsKClcbiAgICAgIC5kaXN0aW5jdCgpLFxuICBdO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@databricks/appkit": "0.81.0",
|
|
28
|
-
"@dbx-tools/appkit": "^0.9.
|
|
29
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
30
|
-
"@dbx-tools/shared-genie": "^0.9.
|
|
28
|
+
"@dbx-tools/appkit": "^0.9.7",
|
|
29
|
+
"@dbx-tools/shared-core": "^0.9.7",
|
|
30
|
+
"@dbx-tools/shared-genie": "^0.9.7"
|
|
31
31
|
},
|
|
32
32
|
"main": "./lib/index.js",
|
|
33
33
|
"license": "Apache-2.0",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"./package.json": "./package.json"
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
-
"version": "0.9.
|
|
46
|
+
"version": "0.9.7",
|
|
47
47
|
"types": "./lib/index.d.ts",
|
|
48
48
|
"type": "module",
|
|
49
49
|
"exports": {
|
package/src/agent-mode.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
import type { WorkspaceClient } from "@databricks/appkit";
|
|
13
13
|
import { databricks } from "@dbx-tools/appkit";
|
|
14
|
-
import {
|
|
14
|
+
import { errorUtils, json, log, object } from "@dbx-tools/shared-core";
|
|
15
15
|
import {
|
|
16
16
|
agentMode as agentModeWire,
|
|
17
17
|
type GenieAgentModeEvent,
|
|
@@ -91,7 +91,7 @@ export async function* genieAgentModeChat(
|
|
|
91
91
|
|
|
92
92
|
/** Return whether Agent Mode is disabled or its preview toggle is unavailable. */
|
|
93
93
|
export function isAgentModeUnavailable(value: unknown): boolean {
|
|
94
|
-
const context =
|
|
94
|
+
const context = errorUtils.errorContext(value);
|
|
95
95
|
return context.hasMessage("feature", "disabled") || context.hasMessage("preview", "toggle");
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -125,7 +125,7 @@ async function cancelResponse(
|
|
|
125
125
|
agentId,
|
|
126
126
|
conversationId,
|
|
127
127
|
responseId,
|
|
128
|
-
error:
|
|
128
|
+
error: errorUtils.errorMessage(err),
|
|
129
129
|
});
|
|
130
130
|
} finally {
|
|
131
131
|
clearTimeout(timeout);
|
package/src/chat.ts
CHANGED
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
type WorkspaceClient,
|
|
32
32
|
} from "@databricks/appkit";
|
|
33
33
|
import { databricks } from "@dbx-tools/appkit";
|
|
34
|
-
import {
|
|
34
|
+
import { asyncUtils, errorUtils, log, type PollContext } from "@dbx-tools/shared-core";
|
|
35
35
|
import { event, genieModel, type GenieChatEvent, type GenieMessage } from "@dbx-tools/shared-genie";
|
|
36
36
|
|
|
37
37
|
import { genieAgentModeChat, isAgentModeUnavailable } from "./agent-mode.ts";
|
|
@@ -157,7 +157,7 @@ export async function* genieChat(
|
|
|
157
157
|
if (yielded || !isAgentModeUnavailable(err)) throw err;
|
|
158
158
|
logger.warn("agent-mode:unavailable, falling back to polling", {
|
|
159
159
|
space_id,
|
|
160
|
-
error:
|
|
160
|
+
error: errorUtils.errorMessage(err),
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -202,7 +202,7 @@ export async function* genieChat(
|
|
|
202
202
|
);
|
|
203
203
|
};
|
|
204
204
|
|
|
205
|
-
yield*
|
|
205
|
+
yield* asyncUtils.poll(
|
|
206
206
|
async (pollCtx: PollContext<GenieMessage>) => validateMessage(await pollProducer(pollCtx)),
|
|
207
207
|
{
|
|
208
208
|
intervalMs: options?.pollIntervalMs ?? 500,
|
package/src/space.ts
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
import { createWorkspaceClient, type WorkspaceClient } from "@databricks/appkit";
|
|
25
25
|
import { databricks } from "@dbx-tools/appkit";
|
|
26
|
-
import {
|
|
26
|
+
import { errorUtils, json, log, object, stringUtils } from "@dbx-tools/shared-core";
|
|
27
27
|
import { genieModel, type GenieSpace } from "@dbx-tools/shared-genie";
|
|
28
28
|
|
|
29
29
|
const logger = log.logger("genie/space");
|
|
@@ -93,7 +93,7 @@ export async function getGenieSpace(
|
|
|
93
93
|
if (!serialized || !isSerializedSpaceForbidden(err)) throw err;
|
|
94
94
|
logger.debug("serialized-space:forbidden", {
|
|
95
95
|
spaceId,
|
|
96
|
-
error:
|
|
96
|
+
error: errorUtils.errorMessage(err),
|
|
97
97
|
});
|
|
98
98
|
raw = await request(false);
|
|
99
99
|
}
|
|
@@ -107,7 +107,7 @@ export async function getGenieSpace(
|
|
|
107
107
|
* SDK surfaces the error code without always carrying a status.
|
|
108
108
|
*/
|
|
109
109
|
function isSerializedSpaceForbidden(err: unknown): boolean {
|
|
110
|
-
const context =
|
|
110
|
+
const context = errorUtils.errorContext(err);
|
|
111
111
|
return (
|
|
112
112
|
context.hasStatusCode(403) ||
|
|
113
113
|
context.hasMessage("permission denied") ||
|
|
@@ -148,7 +148,7 @@ export function genieSampleQuestions(space: GenieSpace): string[] {
|
|
|
148
148
|
return [
|
|
149
149
|
...object
|
|
150
150
|
.sequence(sampleQuestions as SerializedSampleQuestion[])
|
|
151
|
-
.map((entry) =>
|
|
151
|
+
.map((entry) => stringUtils.firstNonEmpty(entry?.question))
|
|
152
152
|
.nonNull()
|
|
153
153
|
.distinct(),
|
|
154
154
|
];
|