@dbx-tools/genie 0.9.32 → 0.9.36
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/index.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/src/chat.js +2 -3
- package/package.json +33 -10
- package/src/chat.ts +1 -2
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.36";
|
|
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.36";
|
|
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.36";
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvZ2VuaWVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zNlwiO1xuZXhwb3J0ICogYXMgYWdlbnRNb2RlIGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBjaGF0IGZyb20gXCIuL3NyYy9jaGF0LnRzXCI7XG5leHBvcnQgKiBhcyBzcGFjZSBmcm9tIFwiLi9zcmMvc3BhY2UudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVBZ2VudE1vZGVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDaGF0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGF0LnRzXCI7XG5leHBvcnQgdHlwZSB7IEdldEdlbmllU3BhY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3NwYWNlLnRzXCI7XG4iXX0=
|
package/lib/src/chat.js
CHANGED
|
@@ -267,8 +267,7 @@ export async function* genieEventChat(space_id, content, options) {
|
|
|
267
267
|
*
|
|
268
268
|
* 1. Caller-supplied `options.workspaceClient`.
|
|
269
269
|
* 2. AppKit's per-request execution-context client inside a request scope.
|
|
270
|
-
* 3. Fresh `createWorkspaceClient()
|
|
271
|
-
* `DATABRICKS_CONFIG_PROFILE` / `DATABRICKS_HOST` / `DATABRICKS_TOKEN`).
|
|
270
|
+
* 3. Fresh native AppKit `createWorkspaceClient()`.
|
|
272
271
|
*
|
|
273
272
|
*/
|
|
274
273
|
async function getWorkspaceClient(options) {
|
|
@@ -282,4 +281,4 @@ async function getWorkspaceClient(options) {
|
|
|
282
281
|
}
|
|
283
282
|
return createWorkspaceClient();
|
|
284
283
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUEwQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQWlCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0tBQ25DLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW9DRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsU0FBUyxDQUM5QixRQUFnQixFQUNoQixPQUFlLEVBQ2YsT0FBMEI7SUFFMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUN6QyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELHlFQUF5RTtRQUN6RSwyRUFBMkU7UUFDM0UsOEVBQThFO1FBQzlFLHdDQUF3QztRQUN4QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsSUFBSSxPQUFPLEVBQUUsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2pDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxLQUFLLEVBQUUsTUFBTSxPQUFPLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7b0JBQ3hFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDOUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN0RSxPQUFPLEVBQUUsR0FBRztpQkFDYixDQUFDLEVBQUUsQ0FBQztvQkFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO2dCQUNELE9BQU87WUFDVCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixJQUFJLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQztvQkFBRSxNQUFNLEdBQUcsQ0FBQztnQkFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxpREFBaUQsRUFBRTtvQkFDN0QsUUFBUTtvQkFDUixLQUFLLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ3BDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxjQUFjLEdBQUcsT0FBTyxFQUFFLGNBQWMsQ0FBQztRQUM3QyxJQUFJLFNBQTZCLENBQUM7UUFFbEMsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLE9BQWtDLEVBQXlCLEVBQUU7WUFDdkYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNwQix5REFBeUQ7Z0JBQ3pELHVFQUF1RTtnQkFDdkUsNERBQTREO2dCQUM1RCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztnQkFDL0UsQ0FBQztnQkFDRCxNQUFNLGFBQWEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZGLGNBQWMsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDO2dCQUMvQyxTQUFTLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztnQkFDckMsT0FBTyxhQUFhLENBQUMsT0FBUSxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2YscUVBQXFFO2dCQUNyRSxnRUFBZ0U7Z0JBQ2hFLGtFQUFrRTtnQkFDbEUsa0VBQWtFO2dCQUNsRSx1QkFBdUI7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDekUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsRUFDdEQsR0FBRyxDQUNKLENBQUM7Z0JBQ0YsU0FBUyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUM7Z0JBQ3RDLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUM7WUFDRCwwRUFBMEU7WUFDMUUsWUFBWTtZQUNaLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQzVCO2dCQUNFLFFBQVE7Z0JBQ1IsZUFBZSxFQUFFLGNBQWM7Z0JBQy9CLFVBQVUsRUFBRSxTQUFTO2FBQ3RCLEVBQ0QsR0FBRyxDQUNKLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNwQixLQUFLLEVBQUUsT0FBa0MsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzFGO1lBQ0UsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLElBQUksR0FBRztZQUMxQyxxRUFBcUU7WUFDckUsd0VBQXdFO1lBQ3hFLCtCQUErQjtZQUMvQixNQUFNLEVBQUUsVUFBVTtZQUNsQixnRUFBZ0U7WUFDaEUsc0VBQXNFO1lBQ3RFLFlBQVk7WUFDWixTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDeEQsZ0VBQWdFO1lBQ2hFLGlFQUFpRTtZQUNqRSxZQUFZO1lBQ1osTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1NBQzFCLENBQ0YsQ0FBQztJQUNKLENBQUM7WUFBUyxDQUFDO1FBQ1QsNEVBQTRFO1FBQzVFLHVFQUF1RTtRQUN2RSxjQUFjO1FBQ2QsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQsMEVBQTBFO0FBRTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ0gsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsY0FBYyxDQUNuQyxRQUFnQixFQUNoQixPQUFlLEVBQ2YsT0FBMEI7SUFFMUIsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUM3RSw2QkFBNkI7SUFDN0IsSUFBSSxRQUFrQyxDQUFDO0lBQ3ZDLDBFQUEwRTtJQUMxRSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLFVBQVU7SUFDVixJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDNUIsSUFBSSxLQUFLLEVBQUUsTUFBTSxVQUFVLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxzRUFBc0U7UUFDdEUsb0VBQW9FO1FBQ3BFLDRFQUE0RTtRQUM1RSx5RUFBeUU7UUFDekUsMkVBQTJFO1FBQzNFLDBFQUEwRTtRQUMxRSxzRUFBc0U7UUFDdEUsZ0JBQWdCO1FBQ2hCLE1BQU0sT0FBTyxHQUFpQixVQUFVLENBQUMsVUFBVTtZQUNqRCxDQUFDLENBQUMsVUFBVTtZQUNaLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakQsTUFBTTtZQUNKLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtZQUM5QixPQUFPO1NBQ1IsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixNQUFNO2dCQUNKLElBQUksRUFBRSxVQUFVO2dCQUNoQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87YUFDekIsQ0FBQztZQUNGLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixNQUFNO2dCQUNOLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUNELFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7O0dBUUc7QUFDSCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsT0FBMEI7SUFDMUQsSUFBSSxPQUFPLEVBQUUsZUFBZTtRQUFFLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUM3RCxJQUFJLENBQUM7UUFDSCxPQUFPLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxzRUFBc0U7SUFDeEUsQ0FBQztJQUNELE9BQU8scUJBQXFCLEVBQUUsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5pZSBjaGF0IGRyaXZlci5cbiAqXG4gKiBEcml2ZXMgYSBzaW5nbGUgdHVybiBhZ2FpbnN0IGEgR2VuaWUgc3BhY2UgZnJvbSBvbmUgYGNvbnRlbnRgIHN0cmluZztcbiAqIG11bHRpLXR1cm4gY29udmVyc2F0aW9ucyBhcmUgdGhlIGNhbGxlcidzIGpvYiAodGhyZWFkIHRoZSBgY29udmVyc2F0aW9uX2lkYFxuICogcmV0dXJuZWQgb24gZWFjaCBgR2VuaWVNZXNzYWdlYCBiYWNrIGludG8gdGhlIG5leHQgdHVybidzXG4gKiBgb3B0aW9ucy5jb252ZXJzYXRpb25JZGApLlxuICpcbiAqIEFnZW50IE1vZGUgU1NFIGlzIHRoZSBkZWZhdWx0IHRyYW5zcG9ydC4gSXRzIFJlc3BvbnNlcy1zdHlsZSByZWFzb25pbmcsIFNRTCxcbiAqIHF1ZXJ5IG91dHB1dCwgYW5kIGZpbmFsIGFuc3dlciBpdGVtcyBhcmUgcHJvamVjdGVkIGludG8gYEdlbmllTWVzc2FnZWBcbiAqIHNuYXBzaG90czsgYGFnZW50TW9kZTogZmFsc2VgIHJldGFpbnMgdGhlIENvbnZlcnNhdGlvbiBBUEkgcG9sbGluZyBwYXRoLlxuICpcbiAqIFR3byBsYXllcnMgc2VydmUgdHdvIGtpbmRzIG9mIGNvbnN1bWVyLiBUaGUgbG93LWxldmVsIGxheWVyIHlpZWxkcyBldmVyeVxuICogb2JzZXJ2ZWQgYEdlbmllTWVzc2FnZWAgKHZhbGlkYXRlZCBhZ2FpbnN0IGBHZW5pZU1lc3NhZ2VTY2hlbWFgLCBmYWxsaW5nIGJhY2tcbiAqIHRvIHRoZSByYXcgc25hcHNob3Qgb24gYSBzY2hlbWEgbWlzcykgYW5kIG93bnMgY2FuY2VsbGF0aW9uLCBjb252ZXJzYXRpb25cbiAqIHNlZWRpbmcsIGRpc3RpbmN0LWZpbHRlcmluZywgYW5kIFNESyBxdWlya3M7IHJlYWNoIGZvciBpdCB3aGVuIHlvdSB3YW50IHRoZVxuICogcmF3IHN0cmVhbS4gVGhlXG4gKiBoaWdoLWxldmVsIGxheWVyIHdyYXBzIGl0IGFuZCBlbWl0cyBzZW1hbnRpYywgZGVkdXBsaWNhdGVkIGB7IHR5cGUsIHBheWxvYWQgfWBcbiAqIGV2ZW50cyAoc2VlIHtAbGluayBHZW5pZUNoYXRFdmVudH0pLCBhbHdheXMgY2xvc2luZyBhIHN1Y2Nlc3NmdWwgdHVybiB3aXRoIGFcbiAqIHRlcm1pbmFsIGByZXN1bHRgIGV2ZW50IGNhcnJ5aW5nIHRoZSBmaW5hbCBgR2VuaWVNZXNzYWdlYDsgZXJyb3JzIHByb3BhZ2F0ZVxuICogYnkgdGhyb3dpbmcsIHdpdGggbm8gYGVycm9yYCB2YXJpYW50LiBJdGVyYXRpbmcgVUkgLyBhZ2VudCBjb2RlIHRoYXQgd2FudHNcbiAqIGV2ZXJ5IG1lc3NhZ2UgdmVyYmF0aW0gdGFrZXMgdGhlIGxvdy1sZXZlbCBzdHJlYW07IHN1YnNjcmliZXJzIHJlYWN0aW5nIHRvXG4gKiBcIkdlbmllIGlzIHRoaW5raW5nIGFib3V0IFhcIiBvciBcIkdlbmllIHByb2R1Y2VkIHRleHQgWVwiIHRha2UgdGhlIGV2ZW50IGxheWVyLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICBjcmVhdGVXb3Jrc3BhY2VDbGllbnQsXG4gIGdldEV4ZWN1dGlvbkNvbnRleHQsXG4gIHR5cGUgV29ya3NwYWNlQ2xpZW50LFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBkYXRhYnJpY2tzIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgeyBhc3luY1V0aWxzLCBlcnJvclV0aWxzLCBsb2csIHR5cGUgUG9sbENvbnRleHQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZXZlbnQsIGdlbmllTW9kZWwsIHR5cGUgR2VuaWVDaGF0RXZlbnQsIHR5cGUgR2VuaWVNZXNzYWdlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmllXCI7XG5cbmltcG9ydCB7IGdlbmllQWdlbnRNb2RlQ2hhdCwgaXNBZ2VudE1vZGVVbmF2YWlsYWJsZSB9IGZyb20gXCIuL2FnZW50LW1vZGUudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImdlbmllL2NoYXRcIik7XG5cbi8qKlxuICogVmFsaWRhdGUgYSBwb2xsZWQgd2lyZSBzbmFwc2hvdCBhZ2FpbnN0IHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9XG4gKiBhbmQgcmV0dXJuIHRoZSBzY2hlbWEtbm9ybWFsaXplZCBtZXNzYWdlLiBHZW5pZSdzIHdpcmUgb2NjYXNpb25hbGx5IHNoaXBzIGFcbiAqIHNoYXBlIHRoZSAoU0RLLWRlcml2ZWQpIHNjaGVtYSBkb2Vzbid0IG1vZGVsIGV4YWN0bHkgLSBlLmcuIGFuIGVhcmx5IHBvbGxcbiAqIHRoYXQgb21pdHMgdGhlIFNESy1yZXF1aXJlZCBgbWVzc2FnZV9pZGAgLSBzbyBhIG1pc3MgZGVncmFkZXMgdG8gdGhlIHJhd1xuICogc25hcHNob3QgcmF0aGVyIHRoYW4gdGhyb3dpbmcsIGtlZXBpbmcgYSBzaW5nbGUgb2RkIHBvbGwgZnJvbSBhYm9ydGluZyB0aGVcbiAqIHdob2xlIHR1cm4uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlTWVzc2FnZShyYXc6IEdlbmllTWVzc2FnZSk6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IHJlc3VsdCA9IGdlbmllTW9kZWwuR2VuaWVNZXNzYWdlU2NoZW1hLnNhZmVQYXJzZShyYXcpO1xuICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiByZXN1bHQuZGF0YTtcbiAgbG9nZ2VyLmRlYnVnKFwid2lyZS1tZXNzYWdlOnNjaGVtYS1taXNzXCIsIHtcbiAgICBtZXNzYWdlX2lkOiByYXcubWVzc2FnZV9pZCA/PyByYXcuaWQsXG4gICAgaXNzdWVzOiByZXN1bHQuZXJyb3IuaXNzdWVzLmxlbmd0aCxcbiAgfSk7XG4gIHJldHVybiByYXc7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNoYXJlZCBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IGJvdGgge0BsaW5rIGdlbmllQ2hhdH0gYW5kIHtAbGluayBnZW5pZUV2ZW50Q2hhdH0uICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmllQ2hhdE9wdGlvbnMge1xuICAvKipcbiAgICogVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkuIERlZmF1bHRzIHRvIGB0cnVlYDsgc2V0IGBmYWxzZWAgdG9cbiAgICogZm9yY2UgdGhlIGxlZ2FjeSBzdGFydC9jcmVhdGUvZ2V0LW1lc3NhZ2UgcG9sbGluZyBmbG93LlxuICAgKi9cbiAgYWdlbnRNb2RlPzogYm9vbGVhbjtcbiAgLyoqIEFzayBBZ2VudCBNb2RlIHRvIGdlbmVyYXRlIHZpc3VhbGl6YXRpb25zIHdoZW4gYXBwcm9wcmlhdGUuICovXG4gIGVuYWJsZVZpc3VhbGl6YXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udGludWUgYW4gZXhpc3RpbmcgY29udmVyc2F0aW9uLiBBZ2VudCBNb2RlIHNlbmRzIGl0IGFzXG4gICAqIGBjb252ZXJzYXRpb25faWRgOyBsZWdhY3kgcG9sbGluZyBwYXNzZXMgaXQgdG8gYGNyZWF0ZU1lc3NhZ2VgLiBSZWFkIHRoZSBpZFxuICAgKiBmcm9tIHRoZSBwcmlvciB0dXJuJ3MgdGVybWluYWwgYEdlbmllTWVzc2FnZWAgb3IgYHJlc3VsdGAgZXZlbnQuXG4gICAqL1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGxpY2l0IGBXb3Jrc3BhY2VDbGllbnRgLiBEZWZhdWx0cyB0byBBcHBLaXQncyBwZXItcmVxdWVzdFxuICAgKiBleGVjdXRpb24tY29udGV4dCBjbGllbnQgd2hlbiBBcHBLaXQgaXMgaW5zdGFsbGVkIGFuZCB3ZSdyZSBpbnNpZGUgYVxuICAgKiByZXF1ZXN0OyBmYWxscyBiYWNrIHRvIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGRlZmF1bHQgYXV0aClcbiAgICogb3RoZXJ3aXNlLlxuICAgKi9cbiAgd29ya3NwYWNlQ2xpZW50PzogV29ya3NwYWNlQ2xpZW50O1xuICAvKiogTGVnYWN5IGZhbGxiYWNrIGNhZGVuY2UgYmV0d2VlbiBzdWNjZXNzaXZlIGBnZXRNZXNzYWdlYCBjYWxscyAoZGVmYXVsdCA1MDBtcykuICovXG4gIHBvbGxJbnRlcnZhbE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogRXh0ZXJuYWwgY2FuY2VsbGF0aW9uLiBBY2NlcHRzIGEgV0hBVFdHIGBBYm9ydFNpZ25hbGAgb3IgYSBmdWxseS1idWlsdCBTREtcbiAgICogYENvbnRleHRgIChzZWUgYGRhdGFicmlja3MuQ29udGV4dExpa2VgKS4gQWJvcnRpbmcgaXQgY2FuY2VscyBldmVyeSBpbi1mbGlnaHRcbiAgICogQWdlbnQgTW9kZSBzdHJlYW0sIFNESyBjYWxsLCBhbmQgdGhlIG5leHQgaW50ZXItcG9sbCBzbGVlcC5cbiAgICovXG4gIGNvbnRleHQ/OiBkYXRhYnJpY2tzLkNvbnRleHRMaWtlO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsb3ctbGV2ZWw6IGdlbmllQ2hhdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHN0cmVhbSBvZiBgR2VuaWVNZXNzYWdlYFxuICogc25hcHNob3RzLlxuICpcbiAqIFR1cm4gbGlmZWN5Y2xlOlxuICpcbiAqICAgLSBBZ2VudCBNb2RlIChkZWZhdWx0KTogUE9TVCBvbmUgUmVzcG9uc2VzLXN0eWxlIG1lc3NhZ2UgdG9cbiAqICAgICBgL2FwaS8yLjAvZ2VuaWUvYWdlbnRzL3tpZH0vcmVzcG9uc2VzYCBhbmQgeWllbGQgcHJvamVjdGVkIHNuYXBzaG90cyBmcm9tXG4gKiAgICAgaXRzIFNTRSBldmVudHMuXG4gKiAgIC0gTGVnYWN5IHBvbGxpbmcgKGBhZ2VudE1vZGU6IGZhbHNlYCk6IHN0YXJ0L2NyZWF0ZSBhIENvbnZlcnNhdGlvbiBBUElcbiAqICAgICBtZXNzYWdlIGFuZCBwb2xsIGBnZXRNZXNzYWdlYCB1bnRpbCB0ZXJtaW5hbC5cbiAqICAgLSBBIHByZS1zdHJlYW0gYEZFQVRVUkVfRElTQUJMRURgIG9yIHByZXZpZXctdG9nZ2xlIHJlc3BvbnNlIGZhbGxzIGJhY2sgdG9cbiAqICAgICBsZWdhY3kgcG9sbGluZyBhdXRvbWF0aWNhbGx5LlxuICpcbiAqIENhbmNlbGxhdGlvbjogYSBzaW5nbGUgaW50ZXJuYWwgYEFib3J0Q29udHJvbGxlcmAgY292ZXJzIHRoZSB3aG9sZSB0dXJuLlxuICogYG9wdGlvbnMuY29udGV4dGAgaXMgdGllZCBpbnRvIHRoYXQgY29udHJvbGxlciBzbyBhbiBleHRlcm5hbCBhYm9ydCB0ZWFyc1xuICogZG93biB0aGUgQWdlbnQgTW9kZSBTU0UgY29ubmVjdGlvbiwgU0RLIGNhbGxzLCBhbmQgYW55IGludGVyLXBvbGwgc2xlZXAuXG4gKiBCcmVha2luZyBvdXQgb2YgdGhlIGBmb3IgYXdhaXRgIGFsc28gaW52b2tlcyB0aGUgQWdlbnQgTW9kZSBzZXJ2ZXItc2lkZVxuICogY2FuY2VsIGVuZHBvaW50IGJlZm9yZSB0aGUgZ2VuZXJhdG9yIGNsb3Nlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2luZ2xlIHR1cm4uXG4gKiBmb3IgYXdhaXQgKGNvbnN0IG0gb2YgZ2VuaWVDaGF0KHNwYWNlSWQsIFwiVG9wIDUgc3RvcmVzP1wiKSkge1xuICogICByZW5kZXIobSk7XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIE11bHRpLXR1cm46IGNhbGxlciB0aHJlYWRzIHRoZSBjb252ZXJzYXRpb24gaWQuXG4gKiBsZXQgY29udmVyc2F0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAqIGZvciAoY29uc3QgcXVlc3Rpb24gb2YgcXVlc3Rpb25zKSB7XG4gKiAgIGZvciBhd2FpdCAoY29uc3QgbSBvZiBnZW5pZUNoYXQoc3BhY2VJZCwgcXVlc3Rpb24sIHsgY29udmVyc2F0aW9uSWQgfSkpIHtcbiAqICAgICBjb252ZXJzYXRpb25JZCA9IG0uY29udmVyc2F0aW9uX2lkID8/IGNvbnZlcnNhdGlvbklkO1xuICogICAgIHJlbmRlcihtKTtcbiAqICAgfVxuICogfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIGdlbmllQ2hhdChcbiAgc3BhY2VfaWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zPzogR2VuaWVDaGF0T3B0aW9ucyxcbik6IEFzeW5jR2VuZXJhdG9yPEdlbmllTWVzc2FnZSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICB0cnkge1xuICAgIGNvbnN0IGNsaWVudCA9IGF3YWl0IGdldFdvcmtzcGFjZUNsaWVudChvcHRpb25zKTtcbiAgICAvLyBCdWlsZCB0aGUgU0RLIENvbnRleHQgT05DRS4gQnVpbGRpbmcgaXQgaW5zaWRlIHRoZSBwb2xsIHByb2R1Y2VyIHdvdWxkXG4gICAgLy8gcmUtYXR0YWNoIGFuIGFib3J0IGxpc3RlbmVyIHRvIGBvcHRpb25zLmNvbnRleHRgIG9uIGV2ZXJ5IHBvbGwgaXRlcmF0aW9uXG4gICAgLy8gKHZpYSBgZGF0YWJyaWNrcy50b0NvbnRleHRgIC0+IGBhc3luYy50aWVBYm9ydFNpZ25hbGApLCBldmVudHVhbGx5IHRyaXBwaW5nXG4gICAgLy8gTm9kZSdzIGBNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdgLlxuICAgIGNvbnN0IGN0eCA9IGRhdGFicmlja3MudG9Db250ZXh0KGNvbnRyb2xsZXIsIG9wdGlvbnM/LmNvbnRleHQpO1xuICAgIGlmIChvcHRpb25zPy5hZ2VudE1vZGUgIT09IGZhbHNlKSB7XG4gICAgICBsZXQgeWllbGRlZCA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBtZXNzYWdlIG9mIGdlbmllQWdlbnRNb2RlQ2hhdChjbGllbnQsIHNwYWNlX2lkLCBjb250ZW50LCB7XG4gICAgICAgICAgLi4uKG9wdGlvbnM/LmNvbnZlcnNhdGlvbklkID8geyBjb252ZXJzYXRpb25JZDogb3B0aW9ucy5jb252ZXJzYXRpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihvcHRpb25zPy5lbmFibGVWaXN1YWxpemF0aW9uID8geyBlbmFibGVWaXN1YWxpemF0aW9uOiB0cnVlIH0gOiB7fSksXG4gICAgICAgICAgY29udGV4dDogY3R4LFxuICAgICAgICB9KSkge1xuICAgICAgICAgIHlpZWxkZWQgPSB0cnVlO1xuICAgICAgICAgIHlpZWxkIHZhbGlkYXRlTWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKHlpZWxkZWQgfHwgIWlzQWdlbnRNb2RlVW5hdmFpbGFibGUoZXJyKSkgdGhyb3cgZXJyO1xuICAgICAgICBsb2dnZXIud2FybihcImFnZW50LW1vZGU6dW5hdmFpbGFibGUsIGZhbGxpbmcgYmFjayB0byBwb2xsaW5nXCIsIHtcbiAgICAgICAgICBzcGFjZV9pZCxcbiAgICAgICAgICBlcnJvcjogZXJyb3JVdGlscy5lcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBjb252ZXJzYXRpb25JZCA9IG9wdGlvbnM/LmNvbnZlcnNhdGlvbklkO1xuICAgIGxldCBtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBvbGxQcm9kdWNlciA9IGFzeW5jIChwb2xsQ3R4OiBQb2xsQ29udGV4dDxHZW5pZU1lc3NhZ2U+KTogUHJvbWlzZTxHZW5pZU1lc3NhZ2U+ID0+IHtcbiAgICAgIGlmICghY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgLy8gRmlyc3QgcG9sbDogb3BlbiB0aGUgY29udmVyc2F0aW9uLiBSZWZ1c2UgdG8gcmV0cnk6IGlmXG4gICAgICAgIC8vIGBzdGFydENvbnZlcnNhdGlvbmAgcmV0dXJuZWQgYSByZXNwb25zZSB3aXRob3V0IGEgYGNvbnZlcnNhdGlvbl9pZGAsXG4gICAgICAgIC8vIHJldHJ5aW5nIHdvdWxkIGp1c3Qgb3BlbiBjb252ZXJzYXRpb24gYWZ0ZXIgY29udmVyc2F0aW9uLlxuICAgICAgICBpZiAocG9sbEN0eC5hdHRlbXB0ID4gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmllIGRpZCBub3QgcmV0dXJuIGEgY29udmVyc2F0aW9uIGlkOyByZWZ1c2luZyB0byByZXRyeVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydFJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdlbmllLnN0YXJ0Q29udmVyc2F0aW9uKHsgc3BhY2VfaWQsIGNvbnRlbnQgfSwgY3R4KTtcbiAgICAgICAgY29udmVyc2F0aW9uSWQgPSBzdGFydFJlc3BvbnNlLmNvbnZlcnNhdGlvbl9pZDtcbiAgICAgICAgbWVzc2FnZUlkID0gc3RhcnRSZXNwb25zZS5tZXNzYWdlX2lkO1xuICAgICAgICByZXR1cm4gc3RhcnRSZXNwb25zZS5tZXNzYWdlITtcbiAgICAgIH1cbiAgICAgIGlmICghbWVzc2FnZUlkKSB7XG4gICAgICAgIC8vIEZpcnN0IHBvbGwgb2YgYSBmb2xsb3ctdXAgdHVybjogYXBwZW5kIHRvIHRoZSBzZWVkZWQgY29udmVyc2F0aW9uLlxuICAgICAgICAvLyBgY2xpZW50LmdlbmllLmNyZWF0ZU1lc3NhZ2VgIHJldHVybnMgYSBgV2FpdGVyPEdlbmllTWVzc2FnZT5gXG4gICAgICAgIC8vIChgeyAuLi5tZXNzYWdlLCB3YWl0OiBhc3luYyAoKSA9PiAuLi4gfWApLiBTdHJpcCBgd2FpdGAgaGVyZSBzb1xuICAgICAgICAvLyBkb3duc3RyZWFtIHNlcmlhbGl6ZXJzIChlLmcuIHlhbWwuc3RyaW5naWZ5KSBkb24ndCBjaG9rZSBvbiB0aGVcbiAgICAgICAgLy8gQXN5bmNGdW5jdGlvbiB2YWx1ZS5cbiAgICAgICAgY29uc3QgeyB3YWl0OiBfd2FpdCwgLi4uY3JlYXRlUmVzcG9uc2UgfSA9IGF3YWl0IGNsaWVudC5nZW5pZS5jcmVhdGVNZXNzYWdlKFxuICAgICAgICAgIHsgc3BhY2VfaWQsIGNvbnZlcnNhdGlvbl9pZDogY29udmVyc2F0aW9uSWQsIGNvbnRlbnQgfSxcbiAgICAgICAgICBjdHgsXG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VJZCA9IGNyZWF0ZVJlc3BvbnNlLm1lc3NhZ2VfaWQ7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFN1YnNlcXVlbnQgcG9sbHM6IHJlLWZldGNoIHRoZSBjdXJyZW50IG1lc3NhZ2UgdW50aWwgaXRzIHN0YXR1cyBiZWNvbWVzXG4gICAgICAvLyB0ZXJtaW5hbC5cbiAgICAgIHJldHVybiBjbGllbnQuZ2VuaWUuZ2V0TWVzc2FnZShcbiAgICAgICAge1xuICAgICAgICAgIHNwYWNlX2lkLFxuICAgICAgICAgIGNvbnZlcnNhdGlvbl9pZDogY29udmVyc2F0aW9uSWQsXG4gICAgICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZUlkLFxuICAgICAgICB9LFxuICAgICAgICBjdHgsXG4gICAgICApO1xuICAgIH07XG5cbiAgICB5aWVsZCogYXN5bmNVdGlscy5wb2xsKFxuICAgICAgYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pID0+IHZhbGlkYXRlTWVzc2FnZShhd2FpdCBwb2xsUHJvZHVjZXIocG9sbEN0eCkpLFxuICAgICAge1xuICAgICAgICBpbnRlcnZhbE1zOiBvcHRpb25zPy5wb2xsSW50ZXJ2YWxNcyA/PyA1MDAsXG4gICAgICAgIC8vIFNraXAgeWllbGRpbmcgaWRlbnRpY2FsIGNvbnNlY3V0aXZlIHNuYXBzaG90czsgR2VuaWUgb2Z0ZW4gcmV0dXJuc1xuICAgICAgICAvLyB0aGUgZXhhY3Qgc2FtZSBwYXlsb2FkIHR3aWNlIGR1cmluZyBxdWlldCBwZXJpb2RzLiBgcG9sbGAgZG9lcyBhIGRlZXBcbiAgICAgICAgLy8gZXF1YWwgb24gdGhlIHByZXZpb3VzIHlpZWxkLlxuICAgICAgICBmaWx0ZXI6IFwiZGlzdGluY3RcIixcbiAgICAgICAgLy8gU3RvcCBhZnRlciB0aGUgdGVybWluYWwgbWVzc2FnZSBpcyB5aWVsZGVkLiBgcG9sbGAgY2hlY2tzIHRoZVxuICAgICAgICAvLyBwcmVkaWNhdGUgQUZURVIgeWllbGRpbmcsIHNvIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIHN0aWxsIHJlYWNoZXMgdGhlXG4gICAgICAgIC8vIGNvbnN1bWVyLlxuICAgICAgICBwcmVkaWNhdGU6IChtKSA9PiAhZ2VuaWVNb2RlbC5pc1Rlcm1pbmFsU3RhdHVzKG0uc3RhdHVzKSxcbiAgICAgICAgLy8gV2FrZSB0aGUgaW50ZXItcG9sbCBzbGVlcCBvbiBhYm9ydCBzbyBhIGBmb3IgYXdhaXRgIGJyZWFrIChvclxuICAgICAgICAvLyBleHRlcm5hbCBhYm9ydCkgdGVhcnMgZG93biBwcm9tcHRseSBpbnN0ZWFkIG9mIHdhaXRpbmcgb3V0IHRoZVxuICAgICAgICAvLyBpbnRlcnZhbC5cbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDYW5jZWxzIGFueSBzdGlsbC1wZW5kaW5nIFNESyBjYWxsIGFuZCB0aGUgaW50ZXItcG9sbCBzbGVlcCB3aGV0aGVyIHdlJ3JlXG4gICAgLy8gdW53aW5kaW5nIGZyb20gYSBub3JtYWwgcmV0dXJuLCBhIGNvbnN1bWVyIGJyZWFrLCBvciBhIHRocm93biBlcnJvci5cbiAgICAvLyBJZGVtcG90ZW50LlxuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhpZ2gtbGV2ZWw6IGdlbmllRXZlbnRDaGF0IC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE9uZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSwgeWllbGRlZCBhcyBhIHR5cGVkIHtAbGluayBHZW5pZUNoYXRFdmVudH1cbiAqIHN0cmVhbS4gRHJpdmVzIHtAbGluayBnZW5pZUNoYXR9IHVuZGVybmVhdGggYW5kIGRlY29yYXRlcyBlYWNoIHNuYXBzaG90IHdpdGhcbiAqIHRoZSBkZXJpdmVkIGV2ZW50cyB0aGUgZmllbGQtbGV2ZWwgZGlmZiBwcm9kdWNlZC4gU3RyZWFtIG9yZGVyOlxuICpcbiAqICAgMS4gYHsgdHlwZTogXCJtZXNzYWdlXCIsIG1lc3NhZ2UgfWAgLSB0aGUgcmF3IGBHZW5pZU1lc3NhZ2VgLCBvbmNlIHBlciBwb2xsXG4gKiAgICAgIHlpZWxkLlxuICogICAyLiBgeyB0eXBlOiBcInF1ZXN0aW9uXCIsIGNvbnRlbnQsIG1lc3NhZ2VfaWQsIC4uLiB9YCBmaXJlcyBleGFjdGx5IG9uY2UsIG9uXG4gKiAgICAgIHRoZSBGSVJTVCBgbWVzc2FnZWAgeWllbGQuIFdlIHJlYWQgYGNvbnRlbnRgIGFuZCBgbWVzc2FnZV9pZGAgc3RyYWlnaHRcbiAqICAgICAgb2ZmIHRoZSBzbmFwc2hvdCBzbyBldmVyeSBkb3duc3RyZWFtIGV2ZW50IGZvciB0aGlzIHR1cm4gc2hhcmVzIHRoZSBzYW1lXG4gKiAgICAgIGBtZXNzYWdlX2lkYCAodGhlIHF1ZXN0aW9uIGluY2x1ZGVkKSAtIHN1YnNjcmliZXJzIGNhbiBncm91cCBldmVyeXRoaW5nXG4gKiAgICAgIGZvciBvbmUgR2VuaWUgY2FsbCB1bmRlciB0aGF0IG9uZSBrZXkuXG4gKiAgIDMuIEFueSBvZiBgc3RhdHVzYCAvIGBhdHRhY2htZW50YCAvIGB0aGlua2luZ2AgLyBgdGV4dGAgLyBgcXVlcnlgIC9cbiAqICAgICAgYHN0YXRlbWVudGAgLyBgcm93c2AgLyBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgdGhlIGRpZmYgYWdhaW5zdCB0aGUgcHJpb3JcbiAqICAgICAgc25hcHNob3QgcHJvZHVjZWQuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYHsgdHlwZTogXCJyZXN1bHRcIiwgLi4uIH1gIGFzIHRoZSBmaW5hbCB5aWVsZC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIGJ5IHRoZSBnZW5lcmF0b3IgdGhyb3dpbmcgLSB0aGVyZSdzIG5vIGBcImVycm9yXCJgIHZhcmlhbnQuXG4gKiBXcmFwIHRoZSBgZm9yIGF3YWl0YCBpbiBgdHJ5L2NhdGNoYCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgZmFpbHVyZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZ0IG9mIGdlbmllRXZlbnRDaGF0KHNwYWNlSWQsIFwiVG9wIHN0b3Jlcz9cIikpIHtcbiAqICAgc3dpdGNoIChldnQudHlwZSkge1xuICogICAgIGNhc2UgXCJ0aGlua2luZ1wiOlxuICogICAgICAgY29uc29sZS5sb2coXCJbdGhpbmtpbmddXCIsIGV2dC50aG91Z2h0X3R5cGUsIGV2dC50ZXh0KTtcbiAqICAgICAgIGJyZWFrO1xuICogICAgIGNhc2UgXCJ0ZXh0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIlt0ZXh0XVwiLCBldnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIltkb25lXVwiLCBldnQuc3RhdHVzKTtcbiAqICAgICAgIGJyZWFrO1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVFdmVudENoYXQoXG4gIHNwYWNlX2lkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IEdlbmllQ2hhdE9wdGlvbnMsXG4pOiBBc3luY0dlbmVyYXRvcjxHZW5pZUNoYXRFdmVudCwgdm9pZCwgdm9pZD4ge1xuICAvLyBEaWZmIHNvdXJjZSBmb3IgdGhlIGN1cnJlbnQgdHVybi4gQWx3YXlzIGB1bmRlZmluZWRgIG9uIHRoZSBmaXJzdCBzbmFwc2hvdFxuICAvLyBzbyB0aGUgaW5pdGlhbCBzdGF0dXMgLyBhdHRhY2htZW50cyBlbWl0IGZyZXNoOyB1cGRhdGVkIHRvIHRoZSBtb3N0IHJlY2VudFxuICAvLyBzbmFwc2hvdCBhZnRlciBlYWNoIHlpZWxkLlxuICBsZXQgcHJldmlvdXM6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgLy8gVGhlIGBxdWVzdGlvbmAgZXZlbnQgaXMgZGVmZXJyZWQgdG8gdGhlIGZpcnN0IGBtZXNzYWdlYCB5aWVsZCBzbyBpdCBjYW5cbiAgLy8gY2FycnkgdGhlIGFzc2lnbmVkIGBtZXNzYWdlX2lkYCAoc3Vic2NyaWJlcnMgdXNlIGl0IGFzIHRoZSBncm91cGluZyBrZXkgZm9yXG4gIC8vIGV2ZXJ5IGV2ZW50IGluIHRoaXMgdHVybikuIFRoZSBmaXJzdCBzbmFwc2hvdCBpcyB0aGUgZWFybGllc3QgcG9pbnQgdGhhdCBpZFxuICAvLyBleGlzdHMuXG4gIGxldCBxdWVzdGlvbkVtaXR0ZWQgPSBmYWxzZTtcbiAgZm9yIGF3YWl0IChjb25zdCByYXdNZXNzYWdlIG9mIGdlbmllQ2hhdChzcGFjZV9pZCwgY29udGVudCwgb3B0aW9ucykpIHtcbiAgICAvLyBOb3JtYWxpemUgYG1lc3NhZ2VfaWRgIGZyb20gdGhlIGxlZ2FjeSBgaWRgIGZpZWxkIHdoZW4gR2VuaWUncyB3aXJlXG4gICAgLy8gcmVzcG9uc2Ugb25seSBwb3B1bGF0ZXMgb25lIG9mIHRoZW0uIFRoZSBTREsgc2NoZW1hIG1hcmtzIGJvdGggYXNcbiAgICAvLyByZXF1aXJlZCwgYnV0IGluIHByYWN0aWNlIHRoZSBgc3RhcnRDb252ZXJzYXRpb25gIC8gYGNyZWF0ZU1lc3NhZ2VgIGlubmVyXG4gICAgLy8gYG1lc3NhZ2VgIHBheWxvYWQgc29tZXRpbWVzIHNoaXBzIG9ubHkgYGlkYCB3aGlsZSB0aGUgbmV3IGBtZXNzYWdlX2lkYFxuICAgIC8vIGZpZWxkIGxhbmRzIHVuZGVmaW5lZC4gRXZlcnkgZG93bnN0cmVhbSBldmVudCBkZXRlY3RvciBrZXlzIGdyb3VwaW5nIG9mZlxuICAgIC8vIGBtZXNzYWdlX2lkYDsgdGhlIGZhbGxiYWNrIGtlZXBzIG9uZSBHZW5pZSB0dXJuJ3MgZXZlbnRzIGZyb20gc3BsaXR0aW5nXG4gICAgLy8gYWNyb3NzIGFuIGFub24gZ3JvdXAgKyB0aGUgcmVhbC1pZCBncm91cCB3aGVuIHN1YnNjcmliZXJzIGJ1Y2tldCBieVxuICAgIC8vIGBtZXNzYWdlX2lkYC5cbiAgICBjb25zdCBtZXNzYWdlOiBHZW5pZU1lc3NhZ2UgPSByYXdNZXNzYWdlLm1lc3NhZ2VfaWRcbiAgICAgID8gcmF3TWVzc2FnZVxuICAgICAgOiB7IC4uLnJhd01lc3NhZ2UsIG1lc3NhZ2VfaWQ6IHJhd01lc3NhZ2UuaWQgfTtcbiAgICB5aWVsZCB7XG4gICAgICB0eXBlOiBcIm1lc3NhZ2VcIixcbiAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgbWVzc2FnZV9pZDogbWVzc2FnZS5tZXNzYWdlX2lkLFxuICAgICAgbWVzc2FnZSxcbiAgICB9O1xuICAgIGlmICghcXVlc3Rpb25FbWl0dGVkKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcbiAgICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICAgIC4uLihtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCA/IHsgY29udmVyc2F0aW9uX2lkOiBtZXNzYWdlLmNvbnZlcnNhdGlvbl9pZCB9IDoge30pLFxuICAgICAgICAuLi4obWVzc2FnZS5tZXNzYWdlX2lkID8geyBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQgfSA6IHt9KSxcbiAgICAgICAgY29udGVudDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgfTtcbiAgICAgIHF1ZXN0aW9uRW1pdHRlZCA9IHRydWU7XG4gICAgfVxuICAgIHlpZWxkKiBldmVudC5ldmVudHNGcm9tTWVzc2FnZShtZXNzYWdlLCBwcmV2aW91cywgbWVzc2FnZS5zcGFjZV9pZCk7XG4gICAgY29uc3Qgc3RhdHVzID0gbWVzc2FnZS5zdGF0dXM7XG4gICAgaWYgKGdlbmllTW9kZWwuaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXMpKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIHR5cGU6IFwicmVzdWx0XCIsXG4gICAgICAgIHNwYWNlX2lkOiBtZXNzYWdlLnNwYWNlX2lkLFxuICAgICAgICBjb252ZXJzYXRpb25faWQ6IG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkLFxuICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHByZXZpb3VzID0gbWVzc2FnZTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHdvcmtzcGFjZSBjbGllbnQgaGVscGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFJlc29sdmUgYSBgV29ya3NwYWNlQ2xpZW50YCBpbiB0aGlzIHByZWZlcmVuY2Ugb3JkZXI6XG4gKlxuICogICAxLiBDYWxsZXItc3VwcGxpZWQgYG9wdGlvbnMud29ya3NwYWNlQ2xpZW50YC5cbiAqICAgMi4gQXBwS2l0J3MgcGVyLXJlcXVlc3QgZXhlY3V0aW9uLWNvbnRleHQgY2xpZW50IGluc2lkZSBhIHJlcXVlc3Qgc2NvcGUuXG4gKiAgIDMuIEZyZXNoIGBjcmVhdGVXb3Jrc3BhY2VDbGllbnQoKWAgKGVudi12YXIgYXV0aCB2aWFcbiAqICAgICAgYERBVEFCUklDS1NfQ09ORklHX1BST0ZJTEVgIC8gYERBVEFCUklDS1NfSE9TVGAgLyBgREFUQUJSSUNLU19UT0tFTmApLlxuICpcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCkgcmV0dXJuIG9wdGlvbnMud29ya3NwYWNlQ2xpZW50O1xuICB0cnkge1xuICAgIHJldHVybiBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb3QgaW5zaWRlIGFuIEFwcEtpdCByZXF1ZXN0IGNvbnRleHQ7IGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGF1dGguXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xufVxuIl19
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBRUgsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixtQkFBbUIsR0FFcEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUEwQyxNQUFNLHlCQUF5QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQWlCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUQsSUFBSSxNQUFNLENBQUMsT0FBTztRQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0tBQ25DLENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQW9DRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBQ0gsTUFBTSxDQUFDLEtBQUss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QU87YUFDekIsQ0FBQztZQUNGLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7Z0JBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUM5QixNQUFNO2dCQUNOLE9BQU87YUFDUixDQUFDO1FBQ0osQ0FBQztRQUNELFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFFMUU7Ozs7Ozs7R0FPRztBQUNILEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxPQUEwQjtJQUMxRCxJQUFJLE9BQU8sRUFBRSxlQUFlO1FBQUUsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQzdELElBQUksQ0FBQztRQUNILE9BQU8sbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtJQUN4RSxDQUFDO0lBQ0QsT0FBTyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmllIGNoYXQgZHJpdmVyLlxuICpcbiAqIERyaXZlcyBhIHNpbmdsZSB0dXJuIGFnYWluc3QgYSBHZW5pZSBzcGFjZSBmcm9tIG9uZSBgY29udGVudGAgc3RyaW5nO1xuICogbXVsdGktdHVybiBjb252ZXJzYXRpb25zIGFyZSB0aGUgY2FsbGVyJ3Mgam9iICh0aHJlYWQgdGhlIGBjb252ZXJzYXRpb25faWRgXG4gKiByZXR1cm5lZCBvbiBlYWNoIGBHZW5pZU1lc3NhZ2VgIGJhY2sgaW50byB0aGUgbmV4dCB0dXJuJ3NcbiAqIGBvcHRpb25zLmNvbnZlcnNhdGlvbklkYCkuXG4gKlxuICogQWdlbnQgTW9kZSBTU0UgaXMgdGhlIGRlZmF1bHQgdHJhbnNwb3J0LiBJdHMgUmVzcG9uc2VzLXN0eWxlIHJlYXNvbmluZywgU1FMLFxuICogcXVlcnkgb3V0cHV0LCBhbmQgZmluYWwgYW5zd2VyIGl0ZW1zIGFyZSBwcm9qZWN0ZWQgaW50byBgR2VuaWVNZXNzYWdlYFxuICogc25hcHNob3RzOyBgYWdlbnRNb2RlOiBmYWxzZWAgcmV0YWlucyB0aGUgQ29udmVyc2F0aW9uIEFQSSBwb2xsaW5nIHBhdGguXG4gKlxuICogVHdvIGxheWVycyBzZXJ2ZSB0d28ga2luZHMgb2YgY29uc3VtZXIuIFRoZSBsb3ctbGV2ZWwgbGF5ZXIgeWllbGRzIGV2ZXJ5XG4gKiBvYnNlcnZlZCBgR2VuaWVNZXNzYWdlYCAodmFsaWRhdGVkIGFnYWluc3QgYEdlbmllTWVzc2FnZVNjaGVtYWAsIGZhbGxpbmcgYmFja1xuICogdG8gdGhlIHJhdyBzbmFwc2hvdCBvbiBhIHNjaGVtYSBtaXNzKSBhbmQgb3ducyBjYW5jZWxsYXRpb24sIGNvbnZlcnNhdGlvblxuICogc2VlZGluZywgZGlzdGluY3QtZmlsdGVyaW5nLCBhbmQgU0RLIHF1aXJrczsgcmVhY2ggZm9yIGl0IHdoZW4geW91IHdhbnQgdGhlXG4gKiByYXcgc3RyZWFtLiBUaGVcbiAqIGhpZ2gtbGV2ZWwgbGF5ZXIgd3JhcHMgaXQgYW5kIGVtaXRzIHNlbWFudGljLCBkZWR1cGxpY2F0ZWQgYHsgdHlwZSwgcGF5bG9hZCB9YFxuICogZXZlbnRzIChzZWUge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSksIGFsd2F5cyBjbG9zaW5nIGEgc3VjY2Vzc2Z1bCB0dXJuIHdpdGggYVxuICogdGVybWluYWwgYHJlc3VsdGAgZXZlbnQgY2FycnlpbmcgdGhlIGZpbmFsIGBHZW5pZU1lc3NhZ2VgOyBlcnJvcnMgcHJvcGFnYXRlXG4gKiBieSB0aHJvd2luZywgd2l0aCBubyBgZXJyb3JgIHZhcmlhbnQuIEl0ZXJhdGluZyBVSSAvIGFnZW50IGNvZGUgdGhhdCB3YW50c1xuICogZXZlcnkgbWVzc2FnZSB2ZXJiYXRpbSB0YWtlcyB0aGUgbG93LWxldmVsIHN0cmVhbTsgc3Vic2NyaWJlcnMgcmVhY3RpbmcgdG9cbiAqIFwiR2VuaWUgaXMgdGhpbmtpbmcgYWJvdXQgWFwiIG9yIFwiR2VuaWUgcHJvZHVjZWQgdGV4dCBZXCIgdGFrZSB0aGUgZXZlbnQgbGF5ZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCxcbiAgZ2V0RXhlY3V0aW9uQ29udGV4dCxcbiAgdHlwZSBXb3Jrc3BhY2VDbGllbnQsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGRhdGFicmlja3MgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB7IGFzeW5jVXRpbHMsIGVycm9yVXRpbHMsIGxvZywgdHlwZSBQb2xsQ29udGV4dCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBldmVudCwgZ2VuaWVNb2RlbCwgdHlwZSBHZW5pZUNoYXRFdmVudCwgdHlwZSBHZW5pZU1lc3NhZ2UgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWVcIjtcblxuaW1wb3J0IHsgZ2VuaWVBZ2VudE1vZGVDaGF0LCBpc0FnZW50TW9kZVVuYXZhaWxhYmxlIH0gZnJvbSBcIi4vYWdlbnQtbW9kZS50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwiZ2VuaWUvY2hhdFwiKTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHBvbGxlZCB3aXJlIHNuYXBzaG90IGFnYWluc3Qge0BsaW5rIEdlbmllTWVzc2FnZVNjaGVtYX1cbiAqIGFuZCByZXR1cm4gdGhlIHNjaGVtYS1ub3JtYWxpemVkIG1lc3NhZ2UuIEdlbmllJ3Mgd2lyZSBvY2Nhc2lvbmFsbHkgc2hpcHMgYVxuICogc2hhcGUgdGhlIChTREstZGVyaXZlZCkgc2NoZW1hIGRvZXNuJ3QgbW9kZWwgZXhhY3RseSAtIGUuZy4gYW4gZWFybHkgcG9sbFxuICogdGhhdCBvbWl0cyB0aGUgU0RLLXJlcXVpcmVkIGBtZXNzYWdlX2lkYCAtIHNvIGEgbWlzcyBkZWdyYWRlcyB0byB0aGUgcmF3XG4gKiBzbmFwc2hvdCByYXRoZXIgdGhhbiB0aHJvd2luZywga2VlcGluZyBhIHNpbmdsZSBvZGQgcG9sbCBmcm9tIGFib3J0aW5nIHRoZVxuICogd2hvbGUgdHVybi5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVNZXNzYWdlKHJhdzogR2VuaWVNZXNzYWdlKTogR2VuaWVNZXNzYWdlIHtcbiAgY29uc3QgcmVzdWx0ID0gZ2VuaWVNb2RlbC5HZW5pZU1lc3NhZ2VTY2hlbWEuc2FmZVBhcnNlKHJhdyk7XG4gIGlmIChyZXN1bHQuc3VjY2VzcykgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICBsb2dnZXIuZGVidWcoXCJ3aXJlLW1lc3NhZ2U6c2NoZW1hLW1pc3NcIiwge1xuICAgIG1lc3NhZ2VfaWQ6IHJhdy5tZXNzYWdlX2lkID8/IHJhdy5pZCxcbiAgICBpc3N1ZXM6IHJlc3VsdC5lcnJvci5pc3N1ZXMubGVuZ3RoLFxuICB9KTtcbiAgcmV0dXJuIHJhdztcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2hhcmVkIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqIE9wdGlvbnMgYWNjZXB0ZWQgYnkgYm90aCB7QGxpbmsgZ2VuaWVDaGF0fSBhbmQge0BsaW5rIGdlbmllRXZlbnRDaGF0fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuaWVDaGF0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2UgdGhlIHN0cmVhbWluZyBHZW5pZSBBZ2VudCBNb2RlIEFQSS4gRGVmYXVsdHMgdG8gYHRydWVgOyBzZXQgYGZhbHNlYCB0b1xuICAgKiBmb3JjZSB0aGUgbGVnYWN5IHN0YXJ0L2NyZWF0ZS9nZXQtbWVzc2FnZSBwb2xsaW5nIGZsb3cuXG4gICAqL1xuICBhZ2VudE1vZGU/OiBib29sZWFuO1xuICAvKiogQXNrIEFnZW50IE1vZGUgdG8gZ2VuZXJhdGUgdmlzdWFsaXphdGlvbnMgd2hlbiBhcHByb3ByaWF0ZS4gKi9cbiAgZW5hYmxlVmlzdWFsaXphdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb250aW51ZSBhbiBleGlzdGluZyBjb252ZXJzYXRpb24uIEFnZW50IE1vZGUgc2VuZHMgaXQgYXNcbiAgICogYGNvbnZlcnNhdGlvbl9pZGA7IGxlZ2FjeSBwb2xsaW5nIHBhc3NlcyBpdCB0byBgY3JlYXRlTWVzc2FnZWAuIFJlYWQgdGhlIGlkXG4gICAqIGZyb20gdGhlIHByaW9yIHR1cm4ncyB0ZXJtaW5hbCBgR2VuaWVNZXNzYWdlYCBvciBgcmVzdWx0YCBldmVudC5cbiAgICovXG4gIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogRXhwbGljaXQgYFdvcmtzcGFjZUNsaWVudGAuIERlZmF1bHRzIHRvIEFwcEtpdCdzIHBlci1yZXF1ZXN0XG4gICAqIGV4ZWN1dGlvbi1jb250ZXh0IGNsaWVudCB3aGVuIEFwcEtpdCBpcyBpbnN0YWxsZWQgYW5kIHdlJ3JlIGluc2lkZSBhXG4gICAqIHJlcXVlc3Q7IGZhbGxzIGJhY2sgdG8gYGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpYCAoZGVmYXVsdCBhdXRoKVxuICAgKiBvdGhlcndpc2UuXG4gICAqL1xuICB3b3Jrc3BhY2VDbGllbnQ/OiBXb3Jrc3BhY2VDbGllbnQ7XG4gIC8qKiBMZWdhY3kgZmFsbGJhY2sgY2FkZW5jZSBiZXR3ZWVuIHN1Y2Nlc3NpdmUgYGdldE1lc3NhZ2VgIGNhbGxzIChkZWZhdWx0IDUwMG1zKS4gKi9cbiAgcG9sbEludGVydmFsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBjYW5jZWxsYXRpb24uIEFjY2VwdHMgYSBXSEFUV0cgYEFib3J0U2lnbmFsYCBvciBhIGZ1bGx5LWJ1aWx0IFNES1xuICAgKiBgQ29udGV4dGAgKHNlZSBgZGF0YWJyaWNrcy5Db250ZXh0TGlrZWApLiBBYm9ydGluZyBpdCBjYW5jZWxzIGV2ZXJ5IGluLWZsaWdodFxuICAgKiBBZ2VudCBNb2RlIHN0cmVhbSwgU0RLIGNhbGwsIGFuZCB0aGUgbmV4dCBpbnRlci1wb2xsIHNsZWVwLlxuICAgKi9cbiAgY29udGV4dD86IGRhdGFicmlja3MuQ29udGV4dExpa2U7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGxvdy1sZXZlbDogZ2VuaWVDaGF0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogT25lIHR1cm4gYWdhaW5zdCBhIEdlbmllIHNwYWNlLCB5aWVsZGVkIGFzIGEgc3RyZWFtIG9mIGBHZW5pZU1lc3NhZ2VgXG4gKiBzbmFwc2hvdHMuXG4gKlxuICogVHVybiBsaWZlY3ljbGU6XG4gKlxuICogICAtIEFnZW50IE1vZGUgKGRlZmF1bHQpOiBQT1NUIG9uZSBSZXNwb25zZXMtc3R5bGUgbWVzc2FnZSB0b1xuICogICAgIGAvYXBpLzIuMC9nZW5pZS9hZ2VudHMve2lkfS9yZXNwb25zZXNgIGFuZCB5aWVsZCBwcm9qZWN0ZWQgc25hcHNob3RzIGZyb21cbiAqICAgICBpdHMgU1NFIGV2ZW50cy5cbiAqICAgLSBMZWdhY3kgcG9sbGluZyAoYGFnZW50TW9kZTogZmFsc2VgKTogc3RhcnQvY3JlYXRlIGEgQ29udmVyc2F0aW9uIEFQSVxuICogICAgIG1lc3NhZ2UgYW5kIHBvbGwgYGdldE1lc3NhZ2VgIHVudGlsIHRlcm1pbmFsLlxuICogICAtIEEgcHJlLXN0cmVhbSBgRkVBVFVSRV9ESVNBQkxFRGAgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2UgZmFsbHMgYmFjayB0b1xuICogICAgIGxlZ2FjeSBwb2xsaW5nIGF1dG9tYXRpY2FsbHkuXG4gKlxuICogQ2FuY2VsbGF0aW9uOiBhIHNpbmdsZSBpbnRlcm5hbCBgQWJvcnRDb250cm9sbGVyYCBjb3ZlcnMgdGhlIHdob2xlIHR1cm4uXG4gKiBgb3B0aW9ucy5jb250ZXh0YCBpcyB0aWVkIGludG8gdGhhdCBjb250cm9sbGVyIHNvIGFuIGV4dGVybmFsIGFib3J0IHRlYXJzXG4gKiBkb3duIHRoZSBBZ2VudCBNb2RlIFNTRSBjb25uZWN0aW9uLCBTREsgY2FsbHMsIGFuZCBhbnkgaW50ZXItcG9sbCBzbGVlcC5cbiAqIEJyZWFraW5nIG91dCBvZiB0aGUgYGZvciBhd2FpdGAgYWxzbyBpbnZva2VzIHRoZSBBZ2VudCBNb2RlIHNlcnZlci1zaWRlXG4gKiBjYW5jZWwgZW5kcG9pbnQgYmVmb3JlIHRoZSBnZW5lcmF0b3IgY2xvc2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTaW5nbGUgdHVybi5cbiAqIGZvciBhd2FpdCAoY29uc3QgbSBvZiBnZW5pZUNoYXQoc3BhY2VJZCwgXCJUb3AgNSBzdG9yZXM/XCIpKSB7XG4gKiAgIHJlbmRlcihtKTtcbiAqIH1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gTXVsdGktdHVybjogY2FsbGVyIHRocmVhZHMgdGhlIGNvbnZlcnNhdGlvbiBpZC5cbiAqIGxldCBjb252ZXJzYXRpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICogZm9yIChjb25zdCBxdWVzdGlvbiBvZiBxdWVzdGlvbnMpIHtcbiAqICAgZm9yIGF3YWl0IChjb25zdCBtIG9mIGdlbmllQ2hhdChzcGFjZUlkLCBxdWVzdGlvbiwgeyBjb252ZXJzYXRpb25JZCB9KSkge1xuICogICAgIGNvbnZlcnNhdGlvbklkID0gbS5jb252ZXJzYXRpb25faWQgPz8gY29udmVyc2F0aW9uSWQ7XG4gKiAgICAgcmVuZGVyKG0pO1xuICogICB9XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZ2VuaWVDaGF0KFxuICBzcGFjZV9pZDogc3RyaW5nLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zLFxuKTogQXN5bmNHZW5lcmF0b3I8R2VuaWVNZXNzYWdlLCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2xpZW50ID0gYXdhaXQgZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnMpO1xuICAgIC8vIEJ1aWxkIHRoZSBTREsgQ29udGV4dCBPTkNFLiBCdWlsZGluZyBpdCBpbnNpZGUgdGhlIHBvbGwgcHJvZHVjZXIgd291bGRcbiAgICAvLyByZS1hdHRhY2ggYW4gYWJvcnQgbGlzdGVuZXIgdG8gYG9wdGlvbnMuY29udGV4dGAgb24gZXZlcnkgcG9sbCBpdGVyYXRpb25cbiAgICAvLyAodmlhIGBkYXRhYnJpY2tzLnRvQ29udGV4dGAgLT4gYGFzeW5jLnRpZUFib3J0U2lnbmFsYCksIGV2ZW50dWFsbHkgdHJpcHBpbmdcbiAgICAvLyBOb2RlJ3MgYE1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZ2AuXG4gICAgY29uc3QgY3R4ID0gZGF0YWJyaWNrcy50b0NvbnRleHQoY29udHJvbGxlciwgb3B0aW9ucz8uY29udGV4dCk7XG4gICAgaWYgKG9wdGlvbnM/LmFnZW50TW9kZSAhPT0gZmFsc2UpIHtcbiAgICAgIGxldCB5aWVsZGVkID0gZmFsc2U7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IG1lc3NhZ2Ugb2YgZ2VuaWVBZ2VudE1vZGVDaGF0KGNsaWVudCwgc3BhY2VfaWQsIGNvbnRlbnQsIHtcbiAgICAgICAgICAuLi4ob3B0aW9ucz8uY29udmVyc2F0aW9uSWQgPyB7IGNvbnZlcnNhdGlvbklkOiBvcHRpb25zLmNvbnZlcnNhdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbnM/LmVuYWJsZVZpc3VhbGl6YXRpb24gPyB7IGVuYWJsZVZpc3VhbGl6YXRpb246IHRydWUgfSA6IHt9KSxcbiAgICAgICAgICBjb250ZXh0OiBjdHgsXG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgeWllbGRlZCA9IHRydWU7XG4gICAgICAgICAgeWllbGQgdmFsaWRhdGVNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoeWllbGRlZCB8fCAhaXNBZ2VudE1vZGVVbmF2YWlsYWJsZShlcnIpKSB0aHJvdyBlcnI7XG4gICAgICAgIGxvZ2dlci53YXJuKFwiYWdlbnQtbW9kZTp1bmF2YWlsYWJsZSwgZmFsbGluZyBiYWNrIHRvIHBvbGxpbmdcIiwge1xuICAgICAgICAgIHNwYWNlX2lkLFxuICAgICAgICAgIGVycm9yOiBlcnJvclV0aWxzLmVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGNvbnZlcnNhdGlvbklkID0gb3B0aW9ucz8uY29udmVyc2F0aW9uSWQ7XG4gICAgbGV0IG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcG9sbFByb2R1Y2VyID0gYXN5bmMgKHBvbGxDdHg6IFBvbGxDb250ZXh0PEdlbmllTWVzc2FnZT4pOiBQcm9taXNlPEdlbmllTWVzc2FnZT4gPT4ge1xuICAgICAgaWYgKCFjb252ZXJzYXRpb25JZCkge1xuICAgICAgICAvLyBGaXJzdCBwb2xsOiBvcGVuIHRoZSBjb252ZXJzYXRpb24uIFJlZnVzZSB0byByZXRyeTogaWZcbiAgICAgICAgLy8gYHN0YXJ0Q29udmVyc2F0aW9uYCByZXR1cm5lZCBhIHJlc3BvbnNlIHdpdGhvdXQgYSBgY29udmVyc2F0aW9uX2lkYCxcbiAgICAgICAgLy8gcmV0cnlpbmcgd291bGQganVzdCBvcGVuIGNvbnZlcnNhdGlvbiBhZnRlciBjb252ZXJzYXRpb24uXG4gICAgICAgIGlmIChwb2xsQ3R4LmF0dGVtcHQgPiAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuaWUgZGlkIG5vdCByZXR1cm4gYSBjb252ZXJzYXRpb24gaWQ7IHJlZnVzaW5nIHRvIHJldHJ5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0UmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2VuaWUuc3RhcnRDb252ZXJzYXRpb24oeyBzcGFjZV9pZCwgY29udGVudCB9LCBjdHgpO1xuICAgICAgICBjb252ZXJzYXRpb25JZCA9IHN0YXJ0UmVzcG9uc2UuY29udmVyc2F0aW9uX2lkO1xuICAgICAgICBtZXNzYWdlSWQgPSBzdGFydFJlc3BvbnNlLm1lc3NhZ2VfaWQ7XG4gICAgICAgIHJldHVybiBzdGFydFJlc3BvbnNlLm1lc3NhZ2UhO1xuICAgICAgfVxuICAgICAgaWYgKCFtZXNzYWdlSWQpIHtcbiAgICAgICAgLy8gRmlyc3QgcG9sbCBvZiBhIGZvbGxvdy11cCB0dXJuOiBhcHBlbmQgdG8gdGhlIHNlZWRlZCBjb252ZXJzYXRpb24uXG4gICAgICAgIC8vIGBjbGllbnQuZ2VuaWUuY3JlYXRlTWVzc2FnZWAgcmV0dXJucyBhIGBXYWl0ZXI8R2VuaWVNZXNzYWdlPmBcbiAgICAgICAgLy8gKGB7IC4uLm1lc3NhZ2UsIHdhaXQ6IGFzeW5jICgpID0+IC4uLiB9YCkuIFN0cmlwIGB3YWl0YCBoZXJlIHNvXG4gICAgICAgIC8vIGRvd25zdHJlYW0gc2VyaWFsaXplcnMgKGUuZy4geWFtbC5zdHJpbmdpZnkpIGRvbid0IGNob2tlIG9uIHRoZVxuICAgICAgICAvLyBBc3luY0Z1bmN0aW9uIHZhbHVlLlxuICAgICAgICBjb25zdCB7IHdhaXQ6IF93YWl0LCAuLi5jcmVhdGVSZXNwb25zZSB9ID0gYXdhaXQgY2xpZW50LmdlbmllLmNyZWF0ZU1lc3NhZ2UoXG4gICAgICAgICAgeyBzcGFjZV9pZCwgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCwgY29udGVudCB9LFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgKTtcbiAgICAgICAgbWVzc2FnZUlkID0gY3JlYXRlUmVzcG9uc2UubWVzc2FnZV9pZDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlc3BvbnNlO1xuICAgICAgfVxuICAgICAgLy8gU3Vic2VxdWVudCBwb2xsczogcmUtZmV0Y2ggdGhlIGN1cnJlbnQgbWVzc2FnZSB1bnRpbCBpdHMgc3RhdHVzIGJlY29tZXNcbiAgICAgIC8vIHRlcm1pbmFsLlxuICAgICAgcmV0dXJuIGNsaWVudC5nZW5pZS5nZXRNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgc3BhY2VfaWQsXG4gICAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGN0eCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIHlpZWxkKiBhc3luY1V0aWxzLnBvbGwoXG4gICAgICBhc3luYyAocG9sbEN0eDogUG9sbENvbnRleHQ8R2VuaWVNZXNzYWdlPikgPT4gdmFsaWRhdGVNZXNzYWdlKGF3YWl0IHBvbGxQcm9kdWNlcihwb2xsQ3R4KSksXG4gICAgICB7XG4gICAgICAgIGludGVydmFsTXM6IG9wdGlvbnM/LnBvbGxJbnRlcnZhbE1zID8/IDUwMCxcbiAgICAgICAgLy8gU2tpcCB5aWVsZGluZyBpZGVudGljYWwgY29uc2VjdXRpdmUgc25hcHNob3RzOyBHZW5pZSBvZnRlbiByZXR1cm5zXG4gICAgICAgIC8vIHRoZSBleGFjdCBzYW1lIHBheWxvYWQgdHdpY2UgZHVyaW5nIHF1aWV0IHBlcmlvZHMuIGBwb2xsYCBkb2VzIGEgZGVlcFxuICAgICAgICAvLyBlcXVhbCBvbiB0aGUgcHJldmlvdXMgeWllbGQuXG4gICAgICAgIGZpbHRlcjogXCJkaXN0aW5jdFwiLFxuICAgICAgICAvLyBTdG9wIGFmdGVyIHRoZSB0ZXJtaW5hbCBtZXNzYWdlIGlzIHlpZWxkZWQuIGBwb2xsYCBjaGVja3MgdGhlXG4gICAgICAgIC8vIHByZWRpY2F0ZSBBRlRFUiB5aWVsZGluZywgc28gdGhlIHRlcm1pbmFsIG1lc3NhZ2Ugc3RpbGwgcmVhY2hlcyB0aGVcbiAgICAgICAgLy8gY29uc3VtZXIuXG4gICAgICAgIHByZWRpY2F0ZTogKG0pID0+ICFnZW5pZU1vZGVsLmlzVGVybWluYWxTdGF0dXMobS5zdGF0dXMpLFxuICAgICAgICAvLyBXYWtlIHRoZSBpbnRlci1wb2xsIHNsZWVwIG9uIGFib3J0IHNvIGEgYGZvciBhd2FpdGAgYnJlYWsgKG9yXG4gICAgICAgIC8vIGV4dGVybmFsIGFib3J0KSB0ZWFycyBkb3duIHByb21wdGx5IGluc3RlYWQgb2Ygd2FpdGluZyBvdXQgdGhlXG4gICAgICAgIC8vIGludGVydmFsLlxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICB9IGZpbmFsbHkge1xuICAgIC8vIENhbmNlbHMgYW55IHN0aWxsLXBlbmRpbmcgU0RLIGNhbGwgYW5kIHRoZSBpbnRlci1wb2xsIHNsZWVwIHdoZXRoZXIgd2UncmVcbiAgICAvLyB1bndpbmRpbmcgZnJvbSBhIG5vcm1hbCByZXR1cm4sIGEgY29uc3VtZXIgYnJlYWssIG9yIGEgdGhyb3duIGVycm9yLlxuICAgIC8vIElkZW1wb3RlbnQuXG4gICAgY29udHJvbGxlci5hYm9ydCgpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGlnaC1sZXZlbDogZ2VuaWVFdmVudENoYXQgLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogT25lIHR1cm4gYWdhaW5zdCBhIEdlbmllIHNwYWNlLCB5aWVsZGVkIGFzIGEgdHlwZWQge0BsaW5rIEdlbmllQ2hhdEV2ZW50fVxuICogc3RyZWFtLiBEcml2ZXMge0BsaW5rIGdlbmllQ2hhdH0gdW5kZXJuZWF0aCBhbmQgZGVjb3JhdGVzIGVhY2ggc25hcHNob3Qgd2l0aFxuICogdGhlIGRlcml2ZWQgZXZlbnRzIHRoZSBmaWVsZC1sZXZlbCBkaWZmIHByb2R1Y2VkLiBTdHJlYW0gb3JkZXI6XG4gKlxuICogICAxLiBgeyB0eXBlOiBcIm1lc3NhZ2VcIiwgbWVzc2FnZSB9YCAtIHRoZSByYXcgYEdlbmllTWVzc2FnZWAsIG9uY2UgcGVyIHBvbGxcbiAqICAgICAgeWllbGQuXG4gKiAgIDIuIGB7IHR5cGU6IFwicXVlc3Rpb25cIiwgY29udGVudCwgbWVzc2FnZV9pZCwgLi4uIH1gIGZpcmVzIGV4YWN0bHkgb25jZSwgb25cbiAqICAgICAgdGhlIEZJUlNUIGBtZXNzYWdlYCB5aWVsZC4gV2UgcmVhZCBgY29udGVudGAgYW5kIGBtZXNzYWdlX2lkYCBzdHJhaWdodFxuICogICAgICBvZmYgdGhlIHNuYXBzaG90IHNvIGV2ZXJ5IGRvd25zdHJlYW0gZXZlbnQgZm9yIHRoaXMgdHVybiBzaGFyZXMgdGhlIHNhbWVcbiAqICAgICAgYG1lc3NhZ2VfaWRgICh0aGUgcXVlc3Rpb24gaW5jbHVkZWQpIC0gc3Vic2NyaWJlcnMgY2FuIGdyb3VwIGV2ZXJ5dGhpbmdcbiAqICAgICAgZm9yIG9uZSBHZW5pZSBjYWxsIHVuZGVyIHRoYXQgb25lIGtleS5cbiAqICAgMy4gQW55IG9mIGBzdGF0dXNgIC8gYGF0dGFjaG1lbnRgIC8gYHRoaW5raW5nYCAvIGB0ZXh0YCAvIGBxdWVyeWAgL1xuICogICAgICBgc3RhdGVtZW50YCAvIGByb3dzYCAvIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYCB0aGUgZGlmZiBhZ2FpbnN0IHRoZSBwcmlvclxuICogICAgICBzbmFwc2hvdCBwcm9kdWNlZC5cbiAqICAgNC4gT24gdGhlIHRlcm1pbmFsIHNuYXBzaG90LCBgeyB0eXBlOiBcInJlc3VsdFwiLCAuLi4gfWAgYXMgdGhlIGZpbmFsIHlpZWxkLlxuICpcbiAqIEVycm9ycyBwcm9wYWdhdGUgYnkgdGhlIGdlbmVyYXRvciB0aHJvd2luZyAtIHRoZXJlJ3Mgbm8gYFwiZXJyb3JcImAgdmFyaWFudC5cbiAqIFdyYXAgdGhlIGBmb3IgYXdhaXRgIGluIGB0cnkvY2F0Y2hgIGlmIHlvdSBuZWVkIHRvIGhhbmRsZSBmYWlsdXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogZm9yIGF3YWl0IChjb25zdCBldnQgb2YgZ2VuaWVFdmVudENoYXQoc3BhY2VJZCwgXCJUb3Agc3RvcmVzP1wiKSkge1xuICogICBzd2l0Y2ggKGV2dC50eXBlKSB7XG4gKiAgICAgY2FzZSBcInRoaW5raW5nXCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcIlt0aGlua2luZ11cIiwgZXZ0LnRob3VnaHRfdHlwZSwgZXZ0LnRleHQpO1xuICogICAgICAgYnJlYWs7XG4gKiAgICAgY2FzZSBcInRleHRcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKFwiW3RleHRdXCIsIGV2dC50ZXh0KTtcbiAqICAgICAgIGJyZWFrO1xuICogICAgIGNhc2UgXCJyZXN1bHRcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKFwiW2RvbmVdXCIsIGV2dC5zdGF0dXMpO1xuICogICAgICAgYnJlYWs7XG4gKiAgIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBnZW5pZUV2ZW50Q2hhdChcbiAgc3BhY2VfaWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zPzogR2VuaWVDaGF0T3B0aW9ucyxcbik6IEFzeW5jR2VuZXJhdG9yPEdlbmllQ2hhdEV2ZW50LCB2b2lkLCB2b2lkPiB7XG4gIC8vIERpZmYgc291cmNlIGZvciB0aGUgY3VycmVudCB0dXJuLiBBbHdheXMgYHVuZGVmaW5lZGAgb24gdGhlIGZpcnN0IHNuYXBzaG90XG4gIC8vIHNvIHRoZSBpbml0aWFsIHN0YXR1cyAvIGF0dGFjaG1lbnRzIGVtaXQgZnJlc2g7IHVwZGF0ZWQgdG8gdGhlIG1vc3QgcmVjZW50XG4gIC8vIHNuYXBzaG90IGFmdGVyIGVhY2ggeWllbGQuXG4gIGxldCBwcmV2aW91czogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvLyBUaGUgYHF1ZXN0aW9uYCBldmVudCBpcyBkZWZlcnJlZCB0byB0aGUgZmlyc3QgYG1lc3NhZ2VgIHlpZWxkIHNvIGl0IGNhblxuICAvLyBjYXJyeSB0aGUgYXNzaWduZWQgYG1lc3NhZ2VfaWRgIChzdWJzY3JpYmVycyB1c2UgaXQgYXMgdGhlIGdyb3VwaW5nIGtleSBmb3JcbiAgLy8gZXZlcnkgZXZlbnQgaW4gdGhpcyB0dXJuKS4gVGhlIGZpcnN0IHNuYXBzaG90IGlzIHRoZSBlYXJsaWVzdCBwb2ludCB0aGF0IGlkXG4gIC8vIGV4aXN0cy5cbiAgbGV0IHF1ZXN0aW9uRW1pdHRlZCA9IGZhbHNlO1xuICBmb3IgYXdhaXQgKGNvbnN0IHJhd01lc3NhZ2Ugb2YgZ2VuaWVDaGF0KHNwYWNlX2lkLCBjb250ZW50LCBvcHRpb25zKSkge1xuICAgIC8vIE5vcm1hbGl6ZSBgbWVzc2FnZV9pZGAgZnJvbSB0aGUgbGVnYWN5IGBpZGAgZmllbGQgd2hlbiBHZW5pZSdzIHdpcmVcbiAgICAvLyByZXNwb25zZSBvbmx5IHBvcHVsYXRlcyBvbmUgb2YgdGhlbS4gVGhlIFNESyBzY2hlbWEgbWFya3MgYm90aCBhc1xuICAgIC8vIHJlcXVpcmVkLCBidXQgaW4gcHJhY3RpY2UgdGhlIGBzdGFydENvbnZlcnNhdGlvbmAgLyBgY3JlYXRlTWVzc2FnZWAgaW5uZXJcbiAgICAvLyBgbWVzc2FnZWAgcGF5bG9hZCBzb21ldGltZXMgc2hpcHMgb25seSBgaWRgIHdoaWxlIHRoZSBuZXcgYG1lc3NhZ2VfaWRgXG4gICAgLy8gZmllbGQgbGFuZHMgdW5kZWZpbmVkLiBFdmVyeSBkb3duc3RyZWFtIGV2ZW50IGRldGVjdG9yIGtleXMgZ3JvdXBpbmcgb2ZmXG4gICAgLy8gYG1lc3NhZ2VfaWRgOyB0aGUgZmFsbGJhY2sga2VlcHMgb25lIEdlbmllIHR1cm4ncyBldmVudHMgZnJvbSBzcGxpdHRpbmdcbiAgICAvLyBhY3Jvc3MgYW4gYW5vbiBncm91cCArIHRoZSByZWFsLWlkIGdyb3VwIHdoZW4gc3Vic2NyaWJlcnMgYnVja2V0IGJ5XG4gICAgLy8gYG1lc3NhZ2VfaWRgLlxuICAgIGNvbnN0IG1lc3NhZ2U6IEdlbmllTWVzc2FnZSA9IHJhd01lc3NhZ2UubWVzc2FnZV9pZFxuICAgICAgPyByYXdNZXNzYWdlXG4gICAgICA6IHsgLi4ucmF3TWVzc2FnZSwgbWVzc2FnZV9pZDogcmF3TWVzc2FnZS5pZCB9O1xuICAgIHlpZWxkIHtcbiAgICAgIHR5cGU6IFwibWVzc2FnZVwiLFxuICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICBtZXNzYWdlX2lkOiBtZXNzYWdlLm1lc3NhZ2VfaWQsXG4gICAgICBtZXNzYWdlLFxuICAgIH07XG4gICAgaWYgKCFxdWVzdGlvbkVtaXR0ZWQpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgdHlwZTogXCJxdWVzdGlvblwiLFxuICAgICAgICBzcGFjZV9pZDogbWVzc2FnZS5zcGFjZV9pZCxcbiAgICAgICAgLi4uKG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkID8geyBjb252ZXJzYXRpb25faWQ6IG1lc3NhZ2UuY29udmVyc2F0aW9uX2lkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZXNzYWdlLm1lc3NhZ2VfaWQgPyB7IG1lc3NhZ2VfaWQ6IG1lc3NhZ2UubWVzc2FnZV9pZCB9IDoge30pLFxuICAgICAgICBjb250ZW50OiBtZXNzYWdlLmNvbnRlbnQsXG4gICAgICB9O1xuICAgICAgcXVlc3Rpb25FbWl0dGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgeWllbGQqIGV2ZW50LmV2ZW50c0Zyb21NZXNzYWdlKG1lc3NhZ2UsIHByZXZpb3VzLCBtZXNzYWdlLnNwYWNlX2lkKTtcbiAgICBjb25zdCBzdGF0dXMgPSBtZXNzYWdlLnN0YXR1cztcbiAgICBpZiAoZ2VuaWVNb2RlbC5pc1Rlcm1pbmFsU3RhdHVzKHN0YXR1cykpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgdHlwZTogXCJyZXN1bHRcIixcbiAgICAgICAgc3BhY2VfaWQ6IG1lc3NhZ2Uuc3BhY2VfaWQsXG4gICAgICAgIGNvbnZlcnNhdGlvbl9pZDogbWVzc2FnZS5jb252ZXJzYXRpb25faWQsXG4gICAgICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2UubWVzc2FnZV9pZCxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgfTtcbiAgICB9XG4gICAgcHJldmlvdXMgPSBtZXNzYWdlO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gd29ya3NwYWNlIGNsaWVudCBoZWxwZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogUmVzb2x2ZSBhIGBXb3Jrc3BhY2VDbGllbnRgIGluIHRoaXMgcHJlZmVyZW5jZSBvcmRlcjpcbiAqXG4gKiAgIDEuIENhbGxlci1zdXBwbGllZCBgb3B0aW9ucy53b3Jrc3BhY2VDbGllbnRgLlxuICogICAyLiBBcHBLaXQncyBwZXItcmVxdWVzdCBleGVjdXRpb24tY29udGV4dCBjbGllbnQgaW5zaWRlIGEgcmVxdWVzdCBzY29wZS5cbiAqICAgMy4gRnJlc2ggbmF0aXZlIEFwcEtpdCBgY3JlYXRlV29ya3NwYWNlQ2xpZW50KClgLlxuICpcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V29ya3NwYWNlQ2xpZW50KG9wdGlvbnM/OiBHZW5pZUNoYXRPcHRpb25zKTogUHJvbWlzZTxXb3Jrc3BhY2VDbGllbnQ+IHtcbiAgaWYgKG9wdGlvbnM/LndvcmtzcGFjZUNsaWVudCkgcmV0dXJuIG9wdGlvbnMud29ya3NwYWNlQ2xpZW50O1xuICB0cnkge1xuICAgIHJldHVybiBnZXRFeGVjdXRpb25Db250ZXh0KCkuY2xpZW50O1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb3QgaW5zaWRlIGFuIEFwcEtpdCByZXF1ZXN0IGNvbnRleHQ7IGZhbGwgdGhyb3VnaCB0byBkZWZhdWx0IGF1dGguXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVdvcmtzcGFjZUNsaWVudCgpO1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -19,15 +19,14 @@
|
|
|
19
19
|
"projen": "projen"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"@types/bun": "1.3.14",
|
|
23
22
|
"@types/node": "^24.6.0",
|
|
24
23
|
"typescript": "^5.9.3"
|
|
25
24
|
},
|
|
26
25
|
"dependencies": {
|
|
27
26
|
"@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.
|
|
27
|
+
"@dbx-tools/appkit": "^0.9.36",
|
|
28
|
+
"@dbx-tools/shared-core": "^0.9.36",
|
|
29
|
+
"@dbx-tools/shared-genie": "^0.9.36"
|
|
31
30
|
},
|
|
32
31
|
"main": "./lib/index.js",
|
|
33
32
|
"license": "Apache-2.0",
|
|
@@ -40,17 +39,46 @@
|
|
|
40
39
|
"types": "./lib/index.d.ts",
|
|
41
40
|
"default": "./lib/index.js"
|
|
42
41
|
},
|
|
42
|
+
"./agent-mode": {
|
|
43
|
+
"types": "./lib/src/agent-mode.d.ts",
|
|
44
|
+
"default": "./lib/src/agent-mode.js"
|
|
45
|
+
},
|
|
46
|
+
"./chat": {
|
|
47
|
+
"types": "./lib/src/chat.d.ts",
|
|
48
|
+
"default": "./lib/src/chat.js"
|
|
49
|
+
},
|
|
50
|
+
"./space": {
|
|
51
|
+
"types": "./lib/src/space.d.ts",
|
|
52
|
+
"default": "./lib/src/space.js"
|
|
53
|
+
},
|
|
43
54
|
"./package.json": "./package.json"
|
|
44
55
|
}
|
|
45
56
|
},
|
|
46
|
-
"version": "0.9.
|
|
57
|
+
"version": "0.9.36",
|
|
47
58
|
"types": "./lib/index.d.ts",
|
|
59
|
+
"dbxToolsConfig": {
|
|
60
|
+
"tags": [
|
|
61
|
+
"node"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
48
64
|
"type": "module",
|
|
49
65
|
"exports": {
|
|
50
66
|
".": {
|
|
51
67
|
"types": "./lib/index.d.ts",
|
|
52
68
|
"default": "./lib/index.js"
|
|
53
69
|
},
|
|
70
|
+
"./agent-mode": {
|
|
71
|
+
"types": "./lib/src/agent-mode.d.ts",
|
|
72
|
+
"default": "./lib/src/agent-mode.js"
|
|
73
|
+
},
|
|
74
|
+
"./chat": {
|
|
75
|
+
"types": "./lib/src/chat.d.ts",
|
|
76
|
+
"default": "./lib/src/chat.js"
|
|
77
|
+
},
|
|
78
|
+
"./space": {
|
|
79
|
+
"types": "./lib/src/space.d.ts",
|
|
80
|
+
"default": "./lib/src/space.js"
|
|
81
|
+
},
|
|
54
82
|
"./package.json": "./package.json"
|
|
55
83
|
},
|
|
56
84
|
"files": [
|
|
@@ -58,10 +86,5 @@
|
|
|
58
86
|
"src",
|
|
59
87
|
"lib"
|
|
60
88
|
],
|
|
61
|
-
"dbxToolsConfig": {
|
|
62
|
-
"tags": [
|
|
63
|
-
"node"
|
|
64
|
-
]
|
|
65
|
-
},
|
|
66
89
|
"//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"bunx projen\"."
|
|
67
90
|
}
|
package/src/chat.ts
CHANGED
|
@@ -330,8 +330,7 @@ export async function* genieEventChat(
|
|
|
330
330
|
*
|
|
331
331
|
* 1. Caller-supplied `options.workspaceClient`.
|
|
332
332
|
* 2. AppKit's per-request execution-context client inside a request scope.
|
|
333
|
-
* 3. Fresh `createWorkspaceClient()
|
|
334
|
-
* `DATABRICKS_CONFIG_PROFILE` / `DATABRICKS_HOST` / `DATABRICKS_TOKEN`).
|
|
333
|
+
* 3. Fresh native AppKit `createWorkspaceClient()`.
|
|
335
334
|
*
|
|
336
335
|
*/
|
|
337
336
|
async function getWorkspaceClient(options?: GenieChatOptions): Promise<WorkspaceClient> {
|