@ultipa-graph/ultipa-driver 6.0.14 → 6.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.d.ts CHANGED
@@ -26,9 +26,17 @@ export interface GqldbConfig {
26
26
  retryCount?: number;
27
27
  /** Delay between retries in milliseconds (default 100ms) */
28
28
  retryDelay?: number;
29
+ /**
30
+ * Optional stable per-client logical session id used by the
31
+ * transaction-branch model (sent as `x-ultipa-session-id` metadata
32
+ * when §2.1 opt-in is enabled in TRANSACTIONS_DRIVER_GUIDE.md).
33
+ * When omitted, the driver auto-generates a random hex string at
34
+ * client construction time.
35
+ */
36
+ sessionId?: string;
29
37
  }
30
38
  /** Default configuration values */
31
- export declare const DEFAULT_CONFIG: Required<Omit<GqldbConfig, 'username' | 'password' | 'defaultGraph' | 'tlsOptions'>>;
39
+ export declare const DEFAULT_CONFIG: Required<Omit<GqldbConfig, 'username' | 'password' | 'defaultGraph' | 'tlsOptions' | 'sessionId'>>;
32
40
  /** Builder for creating GqldbConfig */
33
41
  export declare class ConfigBuilder {
34
42
  private config;
package/dist/config.js CHANGED
@@ -132,4 +132,4 @@ function createConfig(options = {}) {
132
132
  validateConfig(config);
133
133
  return config;
134
134
  }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQTJJSCx3Q0FnQkM7QUFHRCxvQ0FpQkM7QUFqSkQsbUNBQW1DO0FBQ3RCLFFBQUEsY0FBYyxHQUF5RjtJQUNsSCxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsT0FBTztJQUN0QyxRQUFRLEVBQUUsRUFBRTtJQUNaLG1CQUFtQixFQUFFLEtBQUssRUFBRSwrQkFBK0I7SUFDM0QsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVE7Q0FDMUIsQ0FBQztBQUVGLHVDQUF1QztBQUN2QyxNQUFhLGFBQWE7SUFDaEIsTUFBTSxHQUF5QixFQUFFLENBQUM7SUFFMUMsMkJBQTJCO0lBQzNCLEtBQUssQ0FBQyxHQUFHLEtBQWU7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixHQUFHLENBQUMsT0FBOEI7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxRQUFRLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELG1CQUFtQixDQUFDLEVBQVU7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsVUFBVSxDQUFDLEVBQVU7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxLQUFLO1FBQ0gsTUFBTSxNQUFNLEdBQWdCO1lBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxzQkFBYyxDQUFDLEtBQUs7WUFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtZQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzlCLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7WUFDdEMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLHNCQUFjLENBQUMsT0FBTztZQUN0RCxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksc0JBQWMsQ0FBQyxXQUFXO1lBQ2xFLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLHNCQUFjLENBQUMsUUFBUTtZQUN6RCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixJQUFJLHNCQUFjLENBQUMsbUJBQW1CO1lBQzFGLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxzQkFBYyxDQUFDLFVBQVU7WUFDL0QsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLHNCQUFjLENBQUMsVUFBVTtTQUNoRSxDQUFDO1FBRUYsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQTlGRCxzQ0E4RkM7QUFFRCxpQ0FBaUM7QUFDakMsU0FBZ0IsY0FBYyxDQUFDLE1BQW1CO0lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsc0JBQWMsQ0FBQyxXQUFXLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxRCxNQUFNLENBQUMsUUFBUSxHQUFHLHNCQUFjLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7QUFDSCxDQUFDO0FBRUQsMkNBQTJDO0FBQzNDLFNBQWdCLFlBQVksQ0FBQyxVQUFnQyxFQUFFO0lBQzdELE1BQU0sTUFBTSxHQUFnQjtRQUMxQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxzQkFBYyxDQUFDLEtBQUs7UUFDNUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtRQUMxQixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7UUFDbEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksc0JBQWMsQ0FBQyxPQUFPO1FBQ2xELFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLHNCQUFjLENBQUMsV0FBVztRQUM5RCxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDOUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksc0JBQWMsQ0FBQyxRQUFRO1FBQ3JELG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxzQkFBYyxDQUFDLG1CQUFtQjtRQUN0RixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsSUFBSSxzQkFBYyxDQUFDLFVBQVU7UUFDM0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksc0JBQWMsQ0FBQyxVQUFVO0tBQzVELENBQUM7SUFFRixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0ICogYXMgdGxzIGZyb20gJ3Rscyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdxbGRiQ2xpZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEdxbGRiQ29uZmlnIHtcbiAgLyoqIFNlcnZlciBob3N0cyBpbiBmb3JtYXQgXCJob3N0OnBvcnRcIiAqL1xuICBob3N0czogc3RyaW5nW107XG4gIC8qKiBVc2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIC8qKiBQYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IGdyYXBoIHRvIHVzZSAqL1xuICBkZWZhdWx0R3JhcGg/OiBzdHJpbmc7XG4gIC8qKiBRdWVyeSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZWNlaXZlIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcyAoZGVmYXVsdCA2NE1CKSAqL1xuICBtYXhSZWN2U2l6ZT86IG51bWJlcjtcbiAgLyoqIFRMUyBvcHRpb25zIGZvciBzZWN1cmUgY29ubmVjdGlvbnMgKi9cbiAgdGxzT3B0aW9ucz86IHRscy5Db25uZWN0aW9uT3B0aW9ucztcbiAgLyoqIENvbm5lY3Rpb24gcG9vbCBzaXplIHBlciBob3N0ICovXG4gIHBvb2xTaXplPzogbnVtYmVyO1xuICAvKiogSGVhbHRoIGNoZWNrIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICBoZWFsdGhDaGVja0ludGVydmFsPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHJldHJpZXMgZm9yIGZhaWxlZCByZXF1ZXN0cyAqL1xuICByZXRyeUNvdW50PzogbnVtYmVyO1xuICAvKiogRGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAxMDBtcykgKi9cbiAgcmV0cnlEZWxheT86IG51bWJlcjtcbn1cblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8T21pdDxHcWxkYkNvbmZpZywgJ3VzZXJuYW1lJyB8ICdwYXNzd29yZCcgfCAnZGVmYXVsdEdyYXBoJyB8ICd0bHNPcHRpb25zJz4+ID0ge1xuICBob3N0czogWydsb2NhbGhvc3Q6OTAwMCddLFxuICB0aW1lb3V0OiAzMDAwMCwgLy8gMzAgc2Vjb25kcyAoaW4gbWlsbGlzZWNvbmRzKVxuICBtYXhSZWN2U2l6ZTogNjQgKiAxMDI0ICogMTAyNCwgLy8gNjRNQlxuICBwb29sU2l6ZTogMTAsXG4gIGhlYWx0aENoZWNrSW50ZXJ2YWw6IDMwMDAwLCAvLyAzMCBzZWNvbmRzIChpbiBtaWxsaXNlY29uZHMpXG4gIHJldHJ5Q291bnQ6IDMsXG4gIHJldHJ5RGVsYXk6IDEwMCwgLy8gMTAwbXNcbn07XG5cbi8qKiBCdWlsZGVyIGZvciBjcmVhdGluZyBHcWxkYkNvbmZpZyAqL1xuZXhwb3J0IGNsYXNzIENvbmZpZ0J1aWxkZXIge1xuICBwcml2YXRlIGNvbmZpZzogUGFydGlhbDxHcWxkYkNvbmZpZz4gPSB7fTtcblxuICAvKiogU2V0IHRoZSBzZXJ2ZXIgaG9zdHMgKi9cbiAgaG9zdHMoLi4uaG9zdHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcuaG9zdHMgPSBob3N0cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHVzZXJuYW1lIGZvciBhdXRoZW50aWNhdGlvbiAqL1xuICB1c2VybmFtZSh1c2VybmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcudXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHBhc3N3b3JkIGZvciBhdXRoZW50aWNhdGlvbiAqL1xuICBwYXNzd29yZChwYXNzd29yZDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcucGFzc3dvcmQgPSBwYXNzd29yZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGRlZmF1bHQgZ3JhcGggKi9cbiAgZGVmYXVsdEdyYXBoKGdyYXBoOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5kZWZhdWx0R3JhcGggPSBncmFwaDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHF1ZXJ5IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXG4gIHRpbWVvdXQobXM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnRpbWVvdXQgPSBtcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIHF1ZXJ5IHRpbWVvdXQgaW4gc2Vjb25kcyAoY29udmVuaWVuY2UgbWV0aG9kKSAqL1xuICB0aW1lb3V0U2Vjb25kcyhzZWNvbmRzOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy50aW1lb3V0ID0gc2Vjb25kcyAqIDEwMDA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBtYXhpbXVtIHJlY2VpdmUgbWVzc2FnZSBzaXplICovXG4gIG1heFJlY3ZTaXplKGJ5dGVzOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA9IGJ5dGVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCBUTFMgb3B0aW9ucyAqL1xuICB0bHMob3B0aW9uczogdGxzLkNvbm5lY3Rpb25PcHRpb25zKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcudGxzT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBjb25uZWN0aW9uIHBvb2wgc2l6ZSBwZXIgaG9zdCAqL1xuICBwb29sU2l6ZShzaXplOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5wb29sU2l6ZSA9IHNpemU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHRoZSBoZWFsdGggY2hlY2sgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzICovXG4gIGhlYWx0aENoZWNrSW50ZXJ2YWwobXM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPSBtcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG51bWJlciBvZiByZXRyaWVzICovXG4gIHJldHJ5Q291bnQoY291bnQ6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnJldHJ5Q291bnQgPSBjb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGRlbGF5IGJldHdlZW4gcmV0cmllcyBpbiBtaWxsaXNlY29uZHMgKi9cbiAgcmV0cnlEZWxheShtczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcucmV0cnlEZWxheSA9IG1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEJ1aWxkIGFuZCByZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gKi9cbiAgYnVpbGQoKTogR3FsZGJDb25maWcge1xuICAgIGNvbnN0IGNvbmZpZzogR3FsZGJDb25maWcgPSB7XG4gICAgICBob3N0czogdGhpcy5jb25maWcuaG9zdHMgPz8gREVGQVVMVF9DT05GSUcuaG9zdHMsXG4gICAgICB1c2VybmFtZTogdGhpcy5jb25maWcudXNlcm5hbWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5jb25maWcucGFzc3dvcmQsXG4gICAgICBkZWZhdWx0R3JhcGg6IHRoaXMuY29uZmlnLmRlZmF1bHRHcmFwaCxcbiAgICAgIHRpbWVvdXQ6IHRoaXMuY29uZmlnLnRpbWVvdXQgPz8gREVGQVVMVF9DT05GSUcudGltZW91dCxcbiAgICAgIG1heFJlY3ZTaXplOiB0aGlzLmNvbmZpZy5tYXhSZWN2U2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5tYXhSZWN2U2l6ZSxcbiAgICAgIHRsc09wdGlvbnM6IHRoaXMuY29uZmlnLnRsc09wdGlvbnMsXG4gICAgICBwb29sU2l6ZTogdGhpcy5jb25maWcucG9vbFNpemUgPz8gREVGQVVMVF9DT05GSUcucG9vbFNpemUsXG4gICAgICBoZWFsdGhDaGVja0ludGVydmFsOiB0aGlzLmNvbmZpZy5oZWFsdGhDaGVja0ludGVydmFsID8/IERFRkFVTFRfQ09ORklHLmhlYWx0aENoZWNrSW50ZXJ2YWwsXG4gICAgICByZXRyeUNvdW50OiB0aGlzLmNvbmZpZy5yZXRyeUNvdW50ID8/IERFRkFVTFRfQ09ORklHLnJldHJ5Q291bnQsXG4gICAgICByZXRyeURlbGF5OiB0aGlzLmNvbmZpZy5yZXRyeURlbGF5ID8/IERFRkFVTFRfQ09ORklHLnJldHJ5RGVsYXksXG4gICAgfTtcblxuICAgIHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxufVxuXG4vKiogVmFsaWRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IEdxbGRiQ29uZmlnKTogdm9pZCB7XG4gIGlmICghY29uZmlnLmhvc3RzIHx8IGNvbmZpZy5ob3N0cy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGhvc3RzIGNvbmZpZ3VyZWQnKTtcbiAgfVxuXG4gIGlmIChjb25maWcudGltZW91dCAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy50aW1lb3V0IDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0aW1lb3V0IHZhbHVlJyk7XG4gIH1cblxuICBpZiAoY29uZmlnLm1heFJlY3ZTaXplICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLm1heFJlY3ZTaXplIDw9IDApIHtcbiAgICBjb25maWcubWF4UmVjdlNpemUgPSBERUZBVUxUX0NPTkZJRy5tYXhSZWN2U2l6ZTtcbiAgfVxuXG4gIGlmIChjb25maWcucG9vbFNpemUgIT09IHVuZGVmaW5lZCAmJiBjb25maWcucG9vbFNpemUgPD0gMCkge1xuICAgIGNvbmZpZy5wb29sU2l6ZSA9IERFRkFVTFRfQ09ORklHLnBvb2xTaXplO1xuICB9XG59XG5cbi8qKiBDcmVhdGUgYSBjb25maWd1cmF0aW9uIHdpdGggZGVmYXVsdHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25maWcob3B0aW9uczogUGFydGlhbDxHcWxkYkNvbmZpZz4gPSB7fSk6IEdxbGRiQ29uZmlnIHtcbiAgY29uc3QgY29uZmlnOiBHcWxkYkNvbmZpZyA9IHtcbiAgICBob3N0czogb3B0aW9ucy5ob3N0cyA/PyBERUZBVUxUX0NPTkZJRy5ob3N0cyxcbiAgICB1c2VybmFtZTogb3B0aW9ucy51c2VybmFtZSxcbiAgICBwYXNzd29yZDogb3B0aW9ucy5wYXNzd29yZCxcbiAgICBkZWZhdWx0R3JhcGg6IG9wdGlvbnMuZGVmYXVsdEdyYXBoLFxuICAgIHRpbWVvdXQ6IG9wdGlvbnMudGltZW91dCA/PyBERUZBVUxUX0NPTkZJRy50aW1lb3V0LFxuICAgIG1heFJlY3ZTaXplOiBvcHRpb25zLm1heFJlY3ZTaXplID8/IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplLFxuICAgIHRsc09wdGlvbnM6IG9wdGlvbnMudGxzT3B0aW9ucyxcbiAgICBwb29sU2l6ZTogb3B0aW9ucy5wb29sU2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5wb29sU2l6ZSxcbiAgICBoZWFsdGhDaGVja0ludGVydmFsOiBvcHRpb25zLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gREVGQVVMVF9DT05GSUcuaGVhbHRoQ2hlY2tJbnRlcnZhbCxcbiAgICByZXRyeUNvdW50OiBvcHRpb25zLnJldHJ5Q291bnQgPz8gREVGQVVMVF9DT05GSUcucmV0cnlDb3VudCxcbiAgICByZXRyeURlbGF5OiBvcHRpb25zLnJldHJ5RGVsYXkgPz8gREVGQVVMVF9DT05GSUcucmV0cnlEZWxheSxcbiAgfTtcblxuICB2YWxpZGF0ZUNvbmZpZyhjb25maWcpO1xuICByZXR1cm4gY29uZmlnO1xufVxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQW1KSCx3Q0FnQkM7QUFHRCxvQ0FpQkM7QUFqSkQsbUNBQW1DO0FBQ3RCLFFBQUEsY0FBYyxHQUF1RztJQUNoSSxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLCtCQUErQjtJQUMvQyxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsT0FBTztJQUN0QyxRQUFRLEVBQUUsRUFBRTtJQUNaLG1CQUFtQixFQUFFLEtBQUssRUFBRSwrQkFBK0I7SUFDM0QsVUFBVSxFQUFFLENBQUM7SUFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVE7Q0FDMUIsQ0FBQztBQUVGLHVDQUF1QztBQUN2QyxNQUFhLGFBQWE7SUFDaEIsTUFBTSxHQUF5QixFQUFFLENBQUM7SUFFMUMsMkJBQTJCO0lBQzNCLEtBQUssQ0FBQyxHQUFHLEtBQWU7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsT0FBTyxJQUFJLENB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T0FBTyxDQUFDLFVBQVUsSUFBSSxzQkFBYyxDQUFDLFVBQVU7UUFDM0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksc0JBQWMsQ0FBQyxVQUFVO0tBQzVELENBQUM7SUFFRixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0ICogYXMgdGxzIGZyb20gJ3Rscyc7XG5cbi8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdxbGRiQ2xpZW50ICovXG5leHBvcnQgaW50ZXJmYWNlIEdxbGRiQ29uZmlnIHtcbiAgLyoqIFNlcnZlciBob3N0cyBpbiBmb3JtYXQgXCJob3N0OnBvcnRcIiAqL1xuICBob3N0czogc3RyaW5nW107XG4gIC8qKiBVc2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIC8qKiBQYXNzd29yZCBmb3IgYXV0aGVudGljYXRpb24gKi9cbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IGdyYXBoIHRvIHVzZSAqL1xuICBkZWZhdWx0R3JhcGg/OiBzdHJpbmc7XG4gIC8qKiBRdWVyeSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiogTWF4aW11bSByZWNlaXZlIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcyAoZGVmYXVsdCA2NE1CKSAqL1xuICBtYXhSZWN2U2l6ZT86IG51bWJlcjtcbiAgLyoqIFRMUyBvcHRpb25zIGZvciBzZWN1cmUgY29ubmVjdGlvbnMgKi9cbiAgdGxzT3B0aW9ucz86IHRscy5Db25uZWN0aW9uT3B0aW9ucztcbiAgLyoqIENvbm5lY3Rpb24gcG9vbCBzaXplIHBlciBob3N0ICovXG4gIHBvb2xTaXplPzogbnVtYmVyO1xuICAvKiogSGVhbHRoIGNoZWNrIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAzMDAwMG1zID0gMzBzKSAqL1xuICBoZWFsdGhDaGVja0ludGVydmFsPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHJldHJpZXMgZm9yIGZhaWxlZCByZXF1ZXN0cyAqL1xuICByZXRyeUNvdW50PzogbnVtYmVyO1xuICAvKiogRGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdCAxMDBtcykgKi9cbiAgcmV0cnlEZWxheT86IG51bWJlcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YWJsZSBwZXItY2xpZW50IGxvZ2ljYWwgc2Vzc2lvbiBpZCB1c2VkIGJ5IHRoZVxuICAgKiB0cmFuc2FjdGlvbi1icmFuY2ggbW9kZWwgKHNlbnQgYXMgYHgtdWx0aXBhLXNlc3Npb24taWRgIG1ldGFkYXRhXG4gICAqIHdoZW4gwqcyLjEgb3B0LWluIGlzIGVuYWJsZWQgaW4gVFJBTlNBQ1RJT05TX0RSSVZFUl9HVUlERS5tZCkuXG4gICAqIFdoZW4gb21pdHRlZCwgdGhlIGRyaXZlciBhdXRvLWdlbmVyYXRlcyBhIHJhbmRvbSBoZXggc3RyaW5nIGF0XG4gICAqIGNsaWVudCBjb25zdHJ1Y3Rpb24gdGltZS5cbiAgICovXG4gIHNlc3Npb25JZD86IHN0cmluZztcbn1cblxuLyoqIERlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMgKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPTkZJRzogUmVxdWlyZWQ8T21pdDxHcWxkYkNvbmZpZywgJ3VzZXJuYW1lJyB8ICdwYXNzd29yZCcgfCAnZGVmYXVsdEdyYXBoJyB8ICd0bHNPcHRpb25zJyB8ICdzZXNzaW9uSWQnPj4gPSB7XG4gIGhvc3RzOiBbJ2xvY2FsaG9zdDo5MDAwJ10sXG4gIHRpbWVvdXQ6IDMwMDAwLCAvLyAzMCBzZWNvbmRzIChpbiBtaWxsaXNlY29uZHMpXG4gIG1heFJlY3ZTaXplOiA2NCAqIDEwMjQgKiAxMDI0LCAvLyA2NE1CXG4gIHBvb2xTaXplOiAxMCxcbiAgaGVhbHRoQ2hlY2tJbnRlcnZhbDogMzAwMDAsIC8vIDMwIHNlY29uZHMgKGluIG1pbGxpc2Vjb25kcylcbiAgcmV0cnlDb3VudDogMyxcbiAgcmV0cnlEZWxheTogMTAwLCAvLyAxMDBtc1xufTtcblxuLyoqIEJ1aWxkZXIgZm9yIGNyZWF0aW5nIEdxbGRiQ29uZmlnICovXG5leHBvcnQgY2xhc3MgQ29uZmlnQnVpbGRlciB7XG4gIHByaXZhdGUgY29uZmlnOiBQYXJ0aWFsPEdxbGRiQ29uZmlnPiA9IHt9O1xuXG4gIC8qKiBTZXQgdGhlIHNlcnZlciBob3N0cyAqL1xuICBob3N0cyguLi5ob3N0czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5ob3N0cyA9IGhvc3RzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgdXNlcm5hbWUgZm9yIGF1dGhlbnRpY2F0aW9uICovXG4gIHVzZXJuYW1lKHVzZXJuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy51c2VybmFtZSA9IHVzZXJuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgcGFzc3dvcmQgZm9yIGF1dGhlbnRpY2F0aW9uICovXG4gIHBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5wYXNzd29yZCA9IHBhc3N3b3JkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgZGVmYXVsdCBncmFwaCAqL1xuICBkZWZhdWx0R3JhcGgoZ3JhcGg6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLmRlZmF1bHRHcmFwaCA9IGdyYXBoO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgcXVlcnkgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKi9cbiAgdGltZW91dChtczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcudGltZW91dCA9IG1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgcXVlcnkgdGltZW91dCBpbiBzZWNvbmRzIChjb252ZW5pZW5jZSBtZXRob2QpICovXG4gIHRpbWVvdXRTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnRpbWVvdXQgPSBzZWNvbmRzICogMTAwMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIG1heGltdW0gcmVjZWl2ZSBtZXNzYWdlIHNpemUgKi9cbiAgbWF4UmVjdlNpemUoYnl0ZXM6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID0gYnl0ZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IFRMUyBvcHRpb25zICovXG4gIHRscyhvcHRpb25zOiB0bHMuQ29ubmVjdGlvbk9wdGlvbnMpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy50bHNPcHRpb25zID0gb3B0aW9ucztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGNvbm5lY3Rpb24gcG9vbCBzaXplIHBlciBob3N0ICovXG4gIHBvb2xTaXplKHNpemU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuY29uZmlnLnBvb2xTaXplID0gc2l6ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGhlYWx0aCBjaGVjayBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgKi9cbiAgaGVhbHRoQ2hlY2tJbnRlcnZhbChtczogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcuaGVhbHRoQ2hlY2tJbnRlcnZhbCA9IG1zO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgbnVtYmVyIG9mIHJldHJpZXMgKi9cbiAgcmV0cnlDb3VudChjb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5jb25maWcucmV0cnlDb3VudCA9IGNvdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCB0aGUgZGVsYXkgYmV0d2VlbiByZXRyaWVzIGluIG1pbGxpc2Vjb25kcyAqL1xuICByZXRyeURlbGF5KG1zOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmNvbmZpZy5yZXRyeURlbGF5ID0gbXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQnVpbGQgYW5kIHJldHVybiB0aGUgY29uZmlndXJhdGlvbiAqL1xuICBidWlsZCgpOiBHcWxkYkNvbmZpZyB7XG4gICAgY29uc3QgY29uZmlnOiBHcWxkYkNvbmZpZyA9IHtcbiAgICAgIGhvc3RzOiB0aGlzLmNvbmZpZy5ob3N0cyA/PyBERUZBVUxUX0NPTkZJRy5ob3N0cyxcbiAgICAgIHVzZXJuYW1lOiB0aGlzLmNvbmZpZy51c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmNvbmZpZy5wYXNzd29yZCxcbiAgICAgIGRlZmF1bHRHcmFwaDogdGhpcy5jb25maWcuZGVmYXVsdEdyYXBoLFxuICAgICAgdGltZW91dDogdGhpcy5jb25maWcudGltZW91dCA/PyBERUZBVUxUX0NPTkZJRy50aW1lb3V0LFxuICAgICAgbWF4UmVjdlNpemU6IHRoaXMuY29uZmlnLm1heFJlY3ZTaXplID8/IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplLFxuICAgICAgdGxzT3B0aW9uczogdGhpcy5jb25maWcudGxzT3B0aW9ucyxcbiAgICAgIHBvb2xTaXplOiB0aGlzLmNvbmZpZy5wb29sU2l6ZSA/PyBERUZBVUxUX0NPTkZJRy5wb29sU2l6ZSxcbiAgICAgIGhlYWx0aENoZWNrSW50ZXJ2YWw6IHRoaXMuY29uZmlnLmhlYWx0aENoZWNrSW50ZXJ2YWwgPz8gREVGQVVMVF9DT05GSUcuaGVhbHRoQ2hlY2tJbnRlcnZhbCxcbiAgICAgIHJldHJ5Q291bnQ6IHRoaXMuY29uZmlnLnJldHJ5Q291bnQgPz8gREVGQVVMVF9DT05GSUcucmV0cnlDb3VudCxcbiAgICAgIHJldHJ5RGVsYXk6IHRoaXMuY29uZmlnLnJldHJ5RGVsYXkgPz8gREVGQVVMVF9DT05GSUcucmV0cnlEZWxheSxcbiAgICB9O1xuXG4gICAgdmFsaWRhdGVDb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbi8qKiBWYWxpZGF0ZSB0aGUgY29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ29uZmlnKGNvbmZpZzogR3FsZGJDb25maWcpOiB2b2lkIHtcbiAgaWYgKCFjb25maWcuaG9zdHMgfHwgY29uZmlnLmhvc3RzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gaG9zdHMgY29uZmlndXJlZCcpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy50aW1lb3V0ICE9PSB1bmRlZmluZWQgJiYgY29uZmlnLnRpbWVvdXQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRpbWVvdXQgdmFsdWUnKTtcbiAgfVxuXG4gIGlmIChjb25maWcubWF4UmVjdlNpemUgIT09IHVuZGVmaW5lZCAmJiBjb25maWcubWF4UmVjdlNpemUgPD0gMCkge1xuICAgIGNvbmZpZy5tYXhSZWN2U2l6ZSA9IERFRkFVTFRfQ09ORklHLm1heFJlY3ZTaXplO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5wb29sU2l6ZSAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5wb29sU2l6ZSA8PSAwKSB7XG4gICAgY29uZmlnLnBvb2xTaXplID0gREVGQVVMVF9DT05GSUcucG9vbFNpemU7XG4gIH1cbn1cblxuLyoqIENyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZyhvcHRpb25zOiBQYXJ0aWFsPEdxbGRiQ29uZmlnPiA9IHt9KTogR3FsZGJDb25maWcge1xuICBjb25zdCBjb25maWc6IEdxbGRiQ29uZmlnID0ge1xuICAgIGhvc3RzOiBvcHRpb25zLmhvc3RzID8/IERFRkFVTFRfQ09ORklHLmhvc3RzLFxuICAgIHVzZXJuYW1lOiBvcHRpb25zLnVzZXJuYW1lLFxuICAgIHBhc3N3b3JkOiBvcHRpb25zLnBhc3N3b3JkLFxuICAgIGRlZmF1bHRHcmFwaDogb3B0aW9ucy5kZWZhdWx0R3JhcGgsXG4gICAgdGltZW91dDogb3B0aW9ucy50aW1lb3V0ID8/IERFRkFVTFRfQ09ORklHLnRpbWVvdXQsXG4gICAgbWF4UmVjdlNpemU6IG9wdGlvbnMubWF4UmVjdlNpemUgPz8gREVGQVVMVF9DT05GSUcubWF4UmVjdlNpemUsXG4gICAgdGxzT3B0aW9uczogb3B0aW9ucy50bHNPcHRpb25zLFxuICAgIHBvb2xTaXplOiBvcHRpb25zLnBvb2xTaXplID8/IERFRkFVTFRfQ09ORklHLnBvb2xTaXplLFxuICAgIGhlYWx0aENoZWNrSW50ZXJ2YWw6IG9wdGlvbnMuaGVhbHRoQ2hlY2tJbnRlcnZhbCA/PyBERUZBVUxUX0NPTkZJRy5oZWFsdGhDaGVja0ludGVydmFsLFxuICAgIHJldHJ5Q291bnQ6IG9wdGlvbnMucmV0cnlDb3VudCA/PyBERUZBVUxUX0NPTkZJRy5yZXRyeUNvdW50LFxuICAgIHJldHJ5RGVsYXk6IG9wdGlvbnMucmV0cnlEZWxheSA/PyBERUZBVUxUX0NPTkZJRy5yZXRyeURlbGF5LFxuICB9O1xuXG4gIHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XG4gIHJldHVybiBjb25maWc7XG59XG4iXX0=
@@ -5,12 +5,29 @@ import { ServiceContext } from './service-context';
5
5
  import { InsertNodesResult, InsertEdgesResult, DeleteResult, ExportNodesResult, ExportEdgesResult, ExportConfig, ExportChunk } from '../response';
6
6
  import { NodeData, EdgeData } from '../types';
7
7
  import { InsertNodesConfig, InsertEdgesConfig } from '../client';
8
+ /**
9
+ * Parse leading major.minor.patch from a server version string.
10
+ * Returns [0,0,0] on parse failure (treated as "unknown / pre-6.1.149").
11
+ */
12
+ export declare function parseVersion(s: string | null | undefined): [number, number, number];
8
13
  /**
9
14
  * Data service for inserting, deleting, and exporting graph data.
10
15
  */
11
16
  export declare class DataService {
12
17
  private ctx;
13
18
  constructor(ctx: ServiceContext);
19
+ /**
20
+ * Throw GqldbError if `mode` is UPSERT and the connected server is
21
+ * older than 6.1.149.
22
+ *
23
+ * Server >= 6.1.154 reports the real version in
24
+ * `LoginResponse.server_version`. Older servers either return a
25
+ * placeholder "1.0.0" or leave the field empty — both are now treated
26
+ * as "definitely older than 6.1.149" and rejected. (Earlier versions
27
+ * of this gate let those cases pass through; that workaround was
28
+ * removed once 6.1.154+ started populating the field correctly.)
29
+ */
30
+ private requireUpsertSupport;
14
31
  /**
15
32
  * Insert multiple nodes into a graph.
16
33
  */
@@ -4,8 +4,38 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DataService = void 0;
7
+ exports.parseVersion = parseVersion;
8
+ const types_1 = require("../types");
7
9
  const services_1 = require("../services");
8
10
  const converters_1 = require("./converters");
11
+ const errors_1 = require("../errors");
12
+ /**
13
+ * Minimum server version that supports `InsertMode.UPSERT` on the bulk-import
14
+ * RPCs. Older servers ignore the unknown enum value and silently downgrade
15
+ * to Normal, surfacing as a confusing "duplicate _id" error.
16
+ *
17
+ * See `GQLDB-6.1.149-DRIVER-AND-TEST-HANDOFF-2026-05-05.md` (Test plan section D).
18
+ */
19
+ const UPSERT_MIN_VERSION = [6, 1, 149];
20
+ /**
21
+ * Parse leading major.minor.patch from a server version string.
22
+ * Returns [0,0,0] on parse failure (treated as "unknown / pre-6.1.149").
23
+ */
24
+ function parseVersion(s) {
25
+ if (!s)
26
+ return [0, 0, 0];
27
+ const m = s.match(/(\d+)\.(\d+)\.(\d+)/);
28
+ if (!m)
29
+ return [0, 0, 0];
30
+ return [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];
31
+ }
32
+ function versionGTE(actual, required) {
33
+ for (let i = 0; i < 3; i++) {
34
+ if (actual[i] !== required[i])
35
+ return actual[i] > required[i];
36
+ }
37
+ return true;
38
+ }
9
39
  /**
10
40
  * Data service for inserting, deleting, and exporting graph data.
11
41
  */
@@ -14,10 +44,32 @@ class DataService {
14
44
  constructor(ctx) {
15
45
  this.ctx = ctx;
16
46
  }
47
+ /**
48
+ * Throw GqldbError if `mode` is UPSERT and the connected server is
49
+ * older than 6.1.149.
50
+ *
51
+ * Server >= 6.1.154 reports the real version in
52
+ * `LoginResponse.server_version`. Older servers either return a
53
+ * placeholder "1.0.0" or leave the field empty — both are now treated
54
+ * as "definitely older than 6.1.149" and rejected. (Earlier versions
55
+ * of this gate let those cases pass through; that workaround was
56
+ * removed once 6.1.154+ started populating the field correctly.)
57
+ */
58
+ requireUpsertSupport(mode) {
59
+ if (mode !== types_1.InsertType.Upsert)
60
+ return;
61
+ const session = this.ctx.sessions.getSession();
62
+ const serverVer = session?.serverVersion || '';
63
+ if (!versionGTE(parseVersion(serverVer), UPSERT_MIN_VERSION)) {
64
+ throw new errors_1.GqldbError(`InsertType.Upsert requires server >= ${UPSERT_MIN_VERSION.join('.')}, ` +
65
+ `connected server reports ${serverVer || 'unknown'}`);
66
+ }
67
+ }
17
68
  /**
18
69
  * Insert multiple nodes into a graph.
19
70
  */
20
71
  async insertNodes(graphName, nodes, config) {
72
+ this.requireUpsertSupport(config?.options?.mode);
21
73
  const request = {
22
74
  graph_name: graphName,
23
75
  nodes: nodes.map((n) => (0, converters_1.nodeDataToProto)(n)),
@@ -41,6 +93,7 @@ class DataService {
41
93
  * Insert multiple edges into a graph.
42
94
  */
43
95
  async insertEdges(graphName, edges, config) {
96
+ this.requireUpsertSupport(config?.options?.mode);
44
97
  const request = {
45
98
  graph_name: graphName,
46
99
  edges: edges.map((e) => (0, converters_1.edgeDataToProto)(e)),
@@ -205,4 +258,4 @@ class DataService {
205
258
  }
206
259
  }
207
260
  exports.DataService = DataService;
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGEtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWNILDBDQUE0QztBQUM1Qyw2Q0FBd0Y7QUFHeEY7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDRjtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUNmLFNBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLE1BQTBCO1FBRTFCLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDRCQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUMsQ0FBQztRQUVGLHNGQUFzRjtRQUN0Rix3RkFBd0Y7UUFDeEYsT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBVyxFQUFFLENBQUM7UUFFbkUsSUFBSSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDNUIsYUFBYSxFQUNiLE9BQU8sRUFDUCxRQUFRLENBQ1QsQ0FBQztRQUVGLE9BQU87WUFDTCxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8s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RSxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFFBQVEsQ0FBQzt3QkFDUCxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDN0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRTs0QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFOzRCQUNwQixVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFOzRCQUNoQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxFQUFFOzRCQUM1QixVQUFVLEVBQUUsSUFBQSxtQ0FBc0IsRUFBQyxDQUFDLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQzt5QkFDdkQsQ0FBQyxDQUFDO3dCQUNILE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUs7cUJBQ3BDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXRSRCxrQ0FzUkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgc2VydmljZSBoYW5kbGVzIG5vZGUgYW5kIGVkZ2UgaW5zZXJ0L2RlbGV0ZS9leHBvcnQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7XG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRGVsZXRlUmVzdWx0LFxuICBFeHBvcnROb2Rlc1Jlc3VsdCxcbiAgRXhwb3J0RWRnZXNSZXN1bHQsXG4gIEV4cG9ydENvbmZpZyxcbiAgRXhwb3J0Q2h1bmssXG4gIEV4cG9ydFN0YXRzLFxufSBmcm9tICcuLi9yZXNwb25zZSc7XG5pbXBvcnQgeyBOb2RlRGF0YSwgRWRnZURhdGEgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbm9kZURhdGFUb1Byb3RvLCBlZGdlRGF0YVRvUHJvdG8sIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMgfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgSW5zZXJ0Tm9kZXNDb25maWcsIEluc2VydEVkZ2VzQ29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcblxuLyoqXG4gKiBEYXRhIHNlcnZpY2UgZm9yIGluc2VydGluZywgZGVsZXRpbmcsIGFuZCBleHBvcnRpbmcgZ3JhcGggZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbXVsdGlwbGUgbm9kZXMgaW50byBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgaW5zZXJ0Tm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZXM6IE5vZGVEYXRhW10sXG4gICAgY29uZmlnPzogSW5zZXJ0Tm9kZXNDb25maWdcbiAgKTogUHJvbWlzZTxJbnNlcnROb2Rlc1Jlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVzOiBub2Rlcy5tYXAoKG4pID0+IG5vZGVEYXRhVG9Qcm90byhuKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgLy8gYG1vZGVgIGlzIGEgbnVtZXJpYyBlbnVtIGFsaWduZWQgd2l0aCBwcm90byBJbnNlcnRNb2RlIHZhbHVlczsgcGFzcyB0aHJvdWdoIGRpcmVjdGx5LlxuICAgIHJlcXVlc3Qub3B0aW9ucyA9IHsgbW9kZTogKGNvbmZpZz8ub3B0aW9ucz8ubW9kZSA/PyAwKSBhcyBudW1iZXIgfTtcblxuICAgIGlmIChjb25maWc/LmJ1bGtJbXBvcnRTZXNzaW9uSWQpIHtcbiAgICAgIHJlcXVlc3QuYnVsa19pbXBvcnRfc2Vzc2lvbl9pZCA9IGNvbmZpZy5idWxrSW1wb3J0U2Vzc2lvbklkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0luc2VydE5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIG5vZGVJZHM6IHJlc3BvbnNlLm5vZGVfaWRzIHx8IFtdLFxuICAgICAgbm9kZUNvdW50OiBwYXJzZUludChyZXNwb25zZS5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBlZGdlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBlZGdlczogRWRnZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnRFZGdlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydEVkZ2VzUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdDogYW55ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgZWRnZXM6IGVkZ2VzLm1hcCgoZSkgPT4gZWRnZURhdGFUb1Byb3RvKGUpKSxcbiAgICB9O1xuXG4gICAgLy8gQUxXQVlTIHNldCBvcHRpb25zIChldmVuIHdoZW4gdW5kZWZpbmVkKSB0byBhdm9pZCBkZXByZWNhdGVkIGJ1bGsgb3BlcmF0aW9ucyBlcnJvci5cbiAgICByZXF1ZXN0Lm9wdGlvbnMgPSB7XG4gICAgICBza2lwX2ludmFsaWRfbm9kZXM6IGNvbmZpZz8ub3B0aW9ucz8uc2tpcEludmFsaWROb2RlcyB8fCBmYWxzZSxcbiAgICAgIG1vZGU6IChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgPz8gMCkgYXMgbnVtYmVyLFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnPy5idWxrSW1wb3J0U2Vzc2lvbklkKSB7XG4gICAgICByZXF1ZXN0LmJ1bGtfaW1wb3J0X3Nlc3Npb25faWQgPSBjb25maWcuYnVsa0ltcG9ydFNlc3Npb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdJbnNlcnRFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBlZGdlSWRzOiByZXNwb25zZS5lZGdlX2lkcyB8fCBbXSxcbiAgICAgIGVkZ2VDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgICBza2lwcGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLnNraXBwZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgbm9kZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTm9kZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbm9kZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVfaWRzOiBub2RlSWRzIHx8IFtdLFxuICAgICAgbGFiZWxzOiBsYWJlbHMgfHwgW10sXG4gICAgICB3aGVyZTogd2hlcmUgfHwgJycsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0RlbGV0ZU5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIGRlbGV0ZWRDb3VudDogcGFyc2VJbnQocmVzcG9uc2UuZGVsZXRlZF9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UgfHwgJycsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgZWRnZXMgZnJvbSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlRWRnZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgZWRnZUlkcz86IHN0cmluZ1tdLFxuICAgIGxhYmVsPzogc3RyaW5nLFxuICAgIHdoZXJlPzogc3RyaW5nXG4gICk6IFByb21pc2U8RGVsZXRlUmVzdWx0PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGVkZ2VfaWRzOiBlZGdlSWRzIHx8IFtdLFxuICAgICAgbGFiZWw6IGxhYmVsIHx8ICcnLFxuICAgICAgd2hlcmU6IHdoZXJlIHx8ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdEZWxldGVFZGdlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBkZWxldGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmRlbGV0ZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGdyYXBoIGRhdGEgaW4gSlNPTiBMaW5lcyBmb3JtYXQgKHN0cmVhbWluZykuXG4gICAqL1xuICBhc3luYyBleHBvcnQoXG4gICAgY29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgY2FsbGJhY2s/OiAoY2h1bms6IEV4cG9ydENodW5rKSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBjb25maWcuZ3JhcGhOYW1lLFxuICAgICAgYmF0Y2hfc2l6ZTogY29uZmlnLmJhdGNoU2l6ZSB8fCAwLFxuICAgICAgZXhwb3J0X25vZGVzOiBjb25maWcuZXhwb3J0Tm9kZXMgIT09IGZhbHNlLFxuICAgICAgZXhwb3J0X2VkZ2VzOiBjb25maWcuZXhwb3J0RWRnZXMgIT09IGZhbHNlLFxuICAgICAgbm9kZV9sYWJlbHM6IGNvbmZpZy5ub2RlTGFiZWxzIHx8IFtdLFxuICAgICAgZWRnZV9sYWJlbHM6IGNvbmZpZy5lZGdlTGFiZWxzIHx8IFtdLFxuICAgICAgaW5jbHVkZV9tZXRhZGF0YTogY29uZmlnLmluY2x1ZGVNZXRhZGF0YSB8fCBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSBhcyBhbnkpLkV4cG9ydChyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGxldCBzdGF0czogRXhwb3J0U3RhdHMgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXRzKSB7XG4gICAgICAgICAgICBzdGF0cyA9IHtcbiAgICAgICAgICAgICAgbm9kZXNFeHBvcnRlZDogcGFyc2VJbnQocmVzcG9uc2Uuc3RhdHMubm9kZXNfZXhwb3J0ZWQgfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGVkZ2VzRXhwb3J0ZWQ6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmVkZ2VzX2V4cG9ydGVkIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBieXRlc1dyaXR0ZW46IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmJ5dGVzX3dyaXR0ZW4gfHwgJzAnLCAxMCksXG4gICAgICAgICAgICAgIGR1cmF0aW9uTXM6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLmR1cmF0aW9uX21zIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjaHVuazogRXhwb3J0Q2h1bmsgPSB7XG4gICAgICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShyZXNwb25zZS5kYXRhIHx8IFtdKSxcbiAgICAgICAgICAgIGlzRmluYWw6IHJlc3BvbnNlLmlzX2ZpbmFsIHx8IGZhbHNlLFxuICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNhbGxiYWNrKGNodW5rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5pc19maW5hbCkge1xuICAgICAgICAgIHN0cmVhbS5jYW5jZWwoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCAoZXJyb3I6IGFueSkgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIG5vZGVzIGZyb20gYSBncmFwaC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWRcbiAgICovXG4gIGFzeW5jIGV4cG9ydE5vZGVzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIGxhYmVscz86IHN0cmluZ1tdLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwLFxuICAgIGNhbGxiYWNrPzogKHJlc3VsdDogRXhwb3J0Tm9kZXNSZXN1bHQpID0+IHZvaWRcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc29sZS53YXJuKCdleHBvcnROb2RlcyBpcyBkZXByZWNhdGVkLCB1c2UgZXhwb3J0KCkgd2l0aCBFeHBvcnRDb25maWcgaW5zdGVhZCcpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGxhYmVsczogbGFiZWxzIHx8IFtdLFxuICAgICAgbGltaXQ6IGxpbWl0LnRvU3RyaW5nKCksXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UgYXMgYW55KS5FeHBvcnROb2RlcyhyZXF1ZXN0LCBtZXRhZGF0YSk7XG5cbiAgICAgIHN0cmVhbS5vbignZGF0YScsIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgIG5vZGVzOiAocmVzcG9uc2Uubm9kZXMgfHwgW10pLm1hcCgobjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBpZDogbi5pZCB8fCAnJyxcbiAgICAgICAgICAgICAgbGFiZWxzOiBuLmxhYmVscyB8fCBbXSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhuLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBlZGdlcyBmcm9tIGEgZ3JhcGguXG4gICAqIEBkZXByZWNhdGVkIFVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBleHBvcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICBsaW1pdDogbnVtYmVyID0gMCxcbiAgICBjYWxsYmFjaz86IChyZXN1bHQ6IEV4cG9ydEVkZ2VzUmVzdWx0KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUud2FybignZXhwb3J0RWRnZXMgaXMgZGVwcmVjYXRlZCwgdXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWQnKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBsYWJlbHM6IGxhYmVscyB8fCBbXSxcbiAgICAgIGxpbWl0OiBsaW1pdC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9ICh0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlIGFzIGFueSkuRXhwb3J0RWRnZXMocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICBlZGdlczogKHJlc3BvbnNlLmVkZ2VzIHx8IFtdKS5tYXAoKGU6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IGUuaWQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBlLmxhYmVsIHx8ICcnLFxuICAgICAgICAgICAgICBmcm9tTm9kZUlkOiBlLmZyb21fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgdG9Ob2RlSWQ6IGUudG9fbm9kZV9pZCB8fCAnJyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogY29udmVydFByb3RvUHJvcGVydGllcyhlLnByb3BlcnRpZXMgfHwge30pLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaGFzTW9yZTogcmVzcG9uc2UuaGFzX21vcmUgfHwgZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGEtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQWdDSCxvQ0FLQztBQXhCRCxvQ0FBMEQ7QUFDMUQsMENBQTRDO0FBQzVDLDZDQUF3RjtBQUV4RixzQ0FBdUM7QUFFdkM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxrQkFBa0IsR0FBNkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRWpFOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxDQUE0QjtJQUN2RCxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxNQUFnQyxFQUFFLFFBQWtDO0lBQ3RGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxD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QUs7cUJBQ3BDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWpURCxrQ0FpVEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERhdGEgc2VydmljZSBoYW5kbGVzIG5vZGUgYW5kIGVkZ2UgaW5zZXJ0L2RlbGV0ZS9leHBvcnQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgeyBTZXJ2aWNlQ29udGV4dCB9IGZyb20gJy4vc2VydmljZS1jb250ZXh0JztcbmltcG9ydCB7XG4gIEluc2VydE5vZGVzUmVzdWx0LFxuICBJbnNlcnRFZGdlc1Jlc3VsdCxcbiAgRGVsZXRlUmVzdWx0LFxuICBFeHBvcnROb2Rlc1Jlc3VsdCxcbiAgRXhwb3J0RWRnZXNSZXN1bHQsXG4gIEV4cG9ydENvbmZpZyxcbiAgRXhwb3J0Q2h1bmssXG4gIEV4cG9ydFN0YXRzLFxufSBmcm9tICcuLi9yZXNwb25zZSc7XG5pbXBvcnQgeyBOb2RlRGF0YSwgRWRnZURhdGEsIEluc2VydFR5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbm9kZURhdGFUb1Byb3RvLCBlZGdlRGF0YVRvUHJvdG8sIGNvbnZlcnRQcm90b1Byb3BlcnRpZXMgfSBmcm9tICcuL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgSW5zZXJ0Tm9kZXNDb25maWcsIEluc2VydEVkZ2VzQ29uZmlnIH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IEdxbGRiRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG4vKipcbiAqIE1pbmltdW0gc2VydmVyIHZlcnNpb24gdGhhdCBzdXBwb3J0cyBgSW5zZXJ0TW9kZS5VUFNFUlRgIG9uIHRoZSBidWxrLWltcG9ydFxuICogUlBDcy4gT2xkZXIgc2VydmVycyBpZ25vcmUgdGhlIHVua25vd24gZW51bSB2YWx1ZSBhbmQgc2lsZW50bHkgZG93bmdyYWRlXG4gKiB0byBOb3JtYWwsIHN1cmZhY2luZyBhcyBhIGNvbmZ1c2luZyBcImR1cGxpY2F0ZSBfaWRcIiBlcnJvci5cbiAqXG4gKiBTZWUgYEdRTERCLTYuMS4xNDktRFJJVkVSLUFORC1URVNULUhBTkRPRkYtMjAyNi0wNS0wNS5tZGAgKFRlc3QgcGxhbiBzZWN0aW9uIEQpLlxuICovXG5jb25zdCBVUFNFUlRfTUlOX1ZFUlNJT046IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFs2LCAxLCAxNDldO1xuXG4vKipcbiAqIFBhcnNlIGxlYWRpbmcgbWFqb3IubWlub3IucGF0Y2ggZnJvbSBhIHNlcnZlciB2ZXJzaW9uIHN0cmluZy5cbiAqIFJldHVybnMgWzAsMCwwXSBvbiBwYXJzZSBmYWlsdXJlICh0cmVhdGVkIGFzIFwidW5rbm93biAvIHByZS02LjEuMTQ5XCIpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIXMpIHJldHVybiBbMCwgMCwgMF07XG4gIGNvbnN0IG0gPSBzLm1hdGNoKC8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvKTtcbiAgaWYgKCFtKSByZXR1cm4gWzAsIDAsIDBdO1xuICByZXR1cm4gW3BhcnNlSW50KG1bMV0sIDEwKSwgcGFyc2VJbnQobVsyXSwgMTApLCBwYXJzZUludChtWzNdLCAxMCldO1xufVxuXG5mdW5jdGlvbiB2ZXJzaW9uR1RFKGFjdHVhbDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdLCByZXF1aXJlZDogW251bWJlciwgbnVtYmVyLCBudW1iZXJdKTogYm9vbGVhbiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgaWYgKGFjdHVhbFtpXSAhPT0gcmVxdWlyZWRbaV0pIHJldHVybiBhY3R1YWxbaV0gPiByZXF1aXJlZFtpXTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBEYXRhIHNlcnZpY2UgZm9yIGluc2VydGluZywgZGVsZXRpbmcsIGFuZCBleHBvcnRpbmcgZ3JhcGggZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBUaHJvdyBHcWxkYkVycm9yIGlmIGBtb2RlYCBpcyBVUFNFUlQgYW5kIHRoZSBjb25uZWN0ZWQgc2VydmVyIGlzXG4gICAqIG9sZGVyIHRoYW4gNi4xLjE0OS5cbiAgICpcbiAgICogU2VydmVyID49IDYuMS4xNTQgcmVwb3J0cyB0aGUgcmVhbCB2ZXJzaW9uIGluXG4gICAqIGBMb2dpblJlc3BvbnNlLnNlcnZlcl92ZXJzaW9uYC4gT2xkZXIgc2VydmVycyBlaXRoZXIgcmV0dXJuIGFcbiAgICogcGxhY2Vob2xkZXIgXCIxLjAuMFwiIG9yIGxlYXZlIHRoZSBmaWVsZCBlbXB0eSDigJQgYm90aCBhcmUgbm93IHRyZWF0ZWRcbiAgICogYXMgXCJkZWZpbml0ZWx5IG9sZGVyIHRoYW4gNi4xLjE0OVwiIGFuZCByZWplY3RlZC4gKEVhcmxpZXIgdmVyc2lvbnNcbiAgICogb2YgdGhpcyBnYXRlIGxldCB0aG9zZSBjYXNlcyBwYXNzIHRocm91Z2g7IHRoYXQgd29ya2Fyb3VuZCB3YXNcbiAgICogcmVtb3ZlZCBvbmNlIDYuMS4xNTQrIHN0YXJ0ZWQgcG9wdWxhdGluZyB0aGUgZmllbGQgY29ycmVjdGx5LilcbiAgICovXG4gIHByaXZhdGUgcmVxdWlyZVVwc2VydFN1cHBvcnQobW9kZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKG1vZGUgIT09IEluc2VydFR5cGUuVXBzZXJ0KSByZXR1cm47XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3R4LnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBjb25zdCBzZXJ2ZXJWZXIgPSBzZXNzaW9uPy5zZXJ2ZXJWZXJzaW9uIHx8ICcnO1xuICAgIGlmICghdmVyc2lvbkdURShwYXJzZVZlcnNpb24oc2VydmVyVmVyKSwgVVBTRVJUX01JTl9WRVJTSU9OKSkge1xuICAgICAgdGhyb3cgbmV3IEdxbGRiRXJyb3IoXG4gICAgICAgIGBJbnNlcnRUeXBlLlVwc2VydCByZXF1aXJlcyBzZXJ2ZXIgPj0gJHtVUFNFUlRfTUlOX1ZFUlNJT04uam9pbignLicpfSwgYCArXG4gICAgICAgIGBjb25uZWN0ZWQgc2VydmVyIHJlcG9ydHMgJHtzZXJ2ZXJWZXIgfHwgJ3Vua25vd24nfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBub2RlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnROb2RlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBub2RlczogTm9kZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnROb2Rlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydE5vZGVzUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlVXBzZXJ0U3VwcG9ydChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgYXMgbnVtYmVyIHwgdW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIG5vZGVzOiBub2Rlcy5tYXAoKG4pID0+IG5vZGVEYXRhVG9Qcm90byhuKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgLy8gYG1vZGVgIGlzIGEgbnVtZXJpYyBlbnVtIGFsaWduZWQgd2l0aCBwcm90byBJbnNlcnRNb2RlIHZhbHVlczsgcGFzcyB0aHJvdWdoIGRpcmVjdGx5LlxuICAgIHJlcXVlc3Qub3B0aW9ucyA9IHsgbW9kZTogKGNvbmZpZz8ub3B0aW9ucz8ubW9kZSA/PyAwKSBhcyBudW1iZXIgfTtcblxuICAgIGlmIChjb25maWc/LmJ1bGtJbXBvcnRTZXNzaW9uSWQpIHtcbiAgICAgIHJlcXVlc3QuYnVsa19pbXBvcnRfc2Vzc2lvbl9pZCA9IGNvbmZpZy5idWxrSW1wb3J0U2Vzc2lvbklkO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICB0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlLFxuICAgICAgJ0luc2VydE5vZGVzJyxcbiAgICAgIHJlcXVlc3QsXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogcmVzcG9uc2Uuc3VjY2VzcyB8fCBmYWxzZSxcbiAgICAgIG5vZGVJZHM6IHJlc3BvbnNlLm5vZGVfaWRzIHx8IFtdLFxuICAgICAgbm9kZUNvdW50OiBwYXJzZUludChyZXNwb25zZS5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBtdWx0aXBsZSBlZGdlcyBpbnRvIGEgZ3JhcGguXG4gICAqL1xuICBhc3luYyBpbnNlcnRFZGdlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBlZGdlczogRWRnZURhdGFbXSxcbiAgICBjb25maWc/OiBJbnNlcnRFZGdlc0NvbmZpZ1xuICApOiBQcm9taXNlPEluc2VydEVkZ2VzUmVzdWx0PiB7XG4gICAgdGhpcy5yZXF1aXJlVXBzZXJ0U3VwcG9ydChjb25maWc/Lm9wdGlvbnM/Lm1vZGUgYXMgbnVtYmVyIHwgdW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGdyYXBoX25hbWU6IGdyYXBoTmFtZSxcbiAgICAgIGVkZ2VzOiBlZGdlcy5tYXAoKGUpID0+IGVkZ2VEYXRhVG9Qcm90byhlKSksXG4gICAgfTtcblxuICAgIC8vIEFMV0FZUyBzZXQgb3B0aW9ucyAoZXZlbiB3aGVuIHVuZGVmaW5lZCkgdG8gYXZvaWQgZGVwcmVjYXRlZCBidWxrIG9wZXJhdGlvbnMgZXJyb3IuXG4gICAgcmVxdWVzdC5vcHRpb25zID0ge1xuICAgICAgc2tpcF9pbnZhbGlkX25vZGVzOiBjb25maWc/Lm9wdGlvbnM/LnNraXBJbnZhbGlkTm9kZXMgfHwgZmFsc2UsXG4gICAgICBtb2RlOiAoY29uZmlnPy5vcHRpb25zPy5tb2RlID8/IDApIGFzIG51bWJlcixcbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZz8uYnVsa0ltcG9ydFNlc3Npb25JZCkge1xuICAgICAgcmVxdWVzdC5idWxrX2ltcG9ydF9zZXNzaW9uX2lkID0gY29uZmlnLmJ1bGtJbXBvcnRTZXNzaW9uSWQ7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UsXG4gICAgICAnSW5zZXJ0RWRnZXMnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiByZXNwb25zZS5zdWNjZXNzIHx8IGZhbHNlLFxuICAgICAgZWRnZUlkczogcmVzcG9uc2UuZWRnZV9pZHMgfHwgW10sXG4gICAgICBlZGdlQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmVkZ2VfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgICAgc2tpcHBlZENvdW50OiBwYXJzZUludChyZXNwb25zZS5za2lwcGVkX2NvdW50IHx8ICcwJywgMTApLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIG5vZGVzIGZyb20gYSBncmFwaC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZU5vZGVzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIG5vZGVJZHM/OiBzdHJpbmdbXSxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICB3aGVyZT86IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBub2RlX2lkczogbm9kZUlkcyB8fCBbXSxcbiAgICAgIGxhYmVsczogbGFiZWxzIHx8IFtdLFxuICAgICAgd2hlcmU6IHdoZXJlIHx8ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCBwcm9taXNpZnlDYWxsKFxuICAgICAgdGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSxcbiAgICAgICdEZWxldGVOb2RlcycsXG4gICAgICByZXF1ZXN0LFxuICAgICAgbWV0YWRhdGFcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHJlc3BvbnNlLnN1Y2Nlc3MgfHwgZmFsc2UsXG4gICAgICBkZWxldGVkQ291bnQ6IHBhcnNlSW50KHJlc3BvbnNlLmRlbGV0ZWRfY291bnQgfHwgJzAnLCAxMCksXG4gICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGVkZ2VzIGZyb20gYSBncmFwaC5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZUVkZ2VzKFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIGVkZ2VJZHM/OiBzdHJpbmdbXSxcbiAgICBsYWJlbD86IHN0cmluZyxcbiAgICB3aGVyZT86IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBlZGdlX2lkczogZWRnZUlkcyB8fCBbXSxcbiAgICAgIGxhYmVsOiBsYWJlbCB8fCAnJyxcbiAgICAgIHdoZXJlOiB3aGVyZSB8fCAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UsXG4gICAgICAnRGVsZXRlRWRnZXMnLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiByZXNwb25zZS5zdWNjZXNzIHx8IGZhbHNlLFxuICAgICAgZGVsZXRlZENvdW50OiBwYXJzZUludChyZXNwb25zZS5kZWxldGVkX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBncmFwaCBkYXRhIGluIEpTT04gTGluZXMgZm9ybWF0IChzdHJlYW1pbmcpLlxuICAgKi9cbiAgYXN5bmMgZXhwb3J0KFxuICAgIGNvbmZpZzogRXhwb3J0Q29uZmlnLFxuICAgIGNhbGxiYWNrPzogKGNodW5rOiBFeHBvcnRDaHVuaykgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogY29uZmlnLmdyYXBoTmFtZSxcbiAgICAgIGJhdGNoX3NpemU6IGNvbmZpZy5iYXRjaFNpemUgfHwgMCxcbiAgICAgIGV4cG9ydF9ub2RlczogY29uZmlnLmV4cG9ydE5vZGVzICE9PSBmYWxzZSxcbiAgICAgIGV4cG9ydF9lZGdlczogY29uZmlnLmV4cG9ydEVkZ2VzICE9PSBmYWxzZSxcbiAgICAgIG5vZGVfbGFiZWxzOiBjb25maWcubm9kZUxhYmVscyB8fCBbXSxcbiAgICAgIGVkZ2VfbGFiZWxzOiBjb25maWcuZWRnZUxhYmVscyB8fCBbXSxcbiAgICAgIGluY2x1ZGVfbWV0YWRhdGE6IGNvbmZpZy5pbmNsdWRlTWV0YWRhdGEgfHwgZmFsc2UsXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc3RyZWFtID0gKHRoaXMuY3R4LmNsaWVudHMuZGF0YVNlcnZpY2UgYXMgYW55KS5FeHBvcnQocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBsZXQgc3RhdHM6IEV4cG9ydFN0YXRzIHwgdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0cykge1xuICAgICAgICAgICAgc3RhdHMgPSB7XG4gICAgICAgICAgICAgIG5vZGVzRXhwb3J0ZWQ6IHBhcnNlSW50KHJlc3BvbnNlLnN0YXRzLm5vZGVzX2V4cG9ydGVkIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBlZGdlc0V4cG9ydGVkOiBwYXJzZUludChyZXNwb25zZS5zdGF0cy5lZGdlc19leHBvcnRlZCB8fCAnMCcsIDEwKSxcbiAgICAgICAgICAgICAgYnl0ZXNXcml0dGVuOiBwYXJzZUludChyZXNwb25zZS5zdGF0cy5ieXRlc193cml0dGVuIHx8ICcwJywgMTApLFxuICAgICAgICAgICAgICBkdXJhdGlvbk1zOiBwYXJzZUludChyZXNwb25zZS5zdGF0cy5kdXJhdGlvbl9tcyB8fCAnMCcsIDEwKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY2h1bms6IEV4cG9ydENodW5rID0ge1xuICAgICAgICAgICAgZGF0YTogQnVmZmVyLmZyb20ocmVzcG9uc2UuZGF0YSB8fCBbXSksXG4gICAgICAgICAgICBpc0ZpbmFsOiByZXNwb25zZS5pc19maW5hbCB8fCBmYWxzZSxcbiAgICAgICAgICAgIHN0YXRzLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjYWxsYmFjayhjaHVuayk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2UuaXNfZmluYWwpIHtcbiAgICAgICAgICBzdHJlYW0uY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoKSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycm9yOiBhbnkpID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBub2RlcyBmcm9tIGEgZ3JhcGguXG4gICAqIEBkZXByZWNhdGVkIFVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkXG4gICAqL1xuICBhc3luYyBleHBvcnROb2RlcyhcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICBsYWJlbHM/OiBzdHJpbmdbXSxcbiAgICBsaW1pdDogbnVtYmVyID0gMCxcbiAgICBjYWxsYmFjaz86IChyZXN1bHQ6IEV4cG9ydE5vZGVzUmVzdWx0KSA9PiB2b2lkXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnNvbGUud2FybignZXhwb3J0Tm9kZXMgaXMgZGVwcmVjYXRlZCwgdXNlIGV4cG9ydCgpIHdpdGggRXhwb3J0Q29uZmlnIGluc3RlYWQnKTtcblxuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBncmFwaF9uYW1lOiBncmFwaE5hbWUsXG4gICAgICBsYWJlbHM6IGxhYmVscyB8fCBbXSxcbiAgICAgIGxpbWl0OiBsaW1pdC50b1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9ICh0aGlzLmN0eC5jbGllbnRzLmRhdGFTZXJ2aWNlIGFzIGFueSkuRXhwb3J0Tm9kZXMocmVxdWVzdCwgbWV0YWRhdGEpO1xuXG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICBub2RlczogKHJlc3BvbnNlLm5vZGVzIHx8IFtdKS5tYXAoKG46IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IG4uaWQgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsczogbi5sYWJlbHMgfHwgW10sXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IGNvbnZlcnRQcm90b1Byb3BlcnRpZXMobi5wcm9wZXJ0aWVzIHx8IHt9KSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGhhc01vcmU6IHJlc3BvbnNlLmhhc19tb3JlIHx8IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gZWRnZXMgZnJvbSBhIGdyYXBoLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXhwb3J0KCkgd2l0aCBFeHBvcnRDb25maWcgaW5zdGVhZFxuICAgKi9cbiAgYXN5bmMgZXhwb3J0RWRnZXMoXG4gICAgZ3JhcGhOYW1lOiBzdHJpbmcsXG4gICAgbGFiZWxzPzogc3RyaW5nW10sXG4gICAgbGltaXQ6IG51bWJlciA9IDAsXG4gICAgY2FsbGJhY2s/OiAocmVzdWx0OiBFeHBvcnRFZGdlc1Jlc3VsdCkgPT4gdm9pZFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLndhcm4oJ2V4cG9ydEVkZ2VzIGlzIGRlcHJlY2F0ZWQsIHVzZSBleHBvcnQoKSB3aXRoIEV4cG9ydENvbmZpZyBpbnN0ZWFkJyk7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgZ3JhcGhfbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgbGFiZWxzOiBsYWJlbHMgfHwgW10sXG4gICAgICBsaW1pdDogbGltaXQudG9TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzdHJlYW0gPSAodGhpcy5jdHguY2xpZW50cy5kYXRhU2VydmljZSBhcyBhbnkpLkV4cG9ydEVkZ2VzKHJlcXVlc3QsIG1ldGFkYXRhKTtcblxuICAgICAgc3RyZWFtLm9uKCdkYXRhJywgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgZWRnZXM6IChyZXNwb25zZS5lZGdlcyB8fCBbXSkubWFwKChlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgIGlkOiBlLmlkIHx8ICcnLFxuICAgICAgICAgICAgICBsYWJlbDogZS5sYWJlbCB8fCAnJyxcbiAgICAgICAgICAgICAgZnJvbU5vZGVJZDogZS5mcm9tX25vZGVfaWQgfHwgJycsXG4gICAgICAgICAgICAgIHRvTm9kZUlkOiBlLnRvX25vZGVfaWQgfHwgJycsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IGNvbnZlcnRQcm90b1Byb3BlcnRpZXMoZS5wcm9wZXJ0aWVzIHx8IHt9KSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGhhc01vcmU6IHJlc3BvbnNlLmhhc19tb3JlIHx8IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIChlcnJvcjogYW55KSA9PiByZWplY3QoZXJyb3IpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -27,7 +27,19 @@ export declare class ServiceContext {
27
27
  readonly sessions: SessionManager;
28
28
  readonly txManager: TransactionManager;
29
29
  readonly clients: ServiceClients;
30
- constructor(config: GqldbConfig, sessions: SessionManager, txManager: TransactionManager, clients: ServiceClients);
30
+ /**
31
+ * Stable per-client logical session id sent as the
32
+ * `x-ultipa-session-id` gRPC metadata header. Empty string omits the
33
+ * header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
34
+ */
35
+ readonly clientSessionId: string;
36
+ constructor(config: GqldbConfig, sessions: SessionManager, txManager: TransactionManager, clients: ServiceClients,
37
+ /**
38
+ * Stable per-client logical session id sent as the
39
+ * `x-ultipa-session-id` gRPC metadata header. Empty string omits the
40
+ * header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
41
+ */
42
+ clientSessionId?: string);
31
43
  /**
32
44
  * Get session metadata for authenticated requests.
33
45
  */
@@ -47,11 +47,19 @@ class ServiceContext {
47
47
  sessions;
48
48
  txManager;
49
49
  clients;
50
- constructor(config, sessions, txManager, clients) {
50
+ clientSessionId;
51
+ constructor(config, sessions, txManager, clients,
52
+ /**
53
+ * Stable per-client logical session id sent as the
54
+ * `x-ultipa-session-id` gRPC metadata header. Empty string omits the
55
+ * header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
56
+ */
57
+ clientSessionId = '') {
51
58
  this.config = config;
52
59
  this.sessions = sessions;
53
60
  this.txManager = txManager;
54
61
  this.clients = clients;
62
+ this.clientSessionId = clientSessionId;
55
63
  }
56
64
  /**
57
65
  * Get session metadata for authenticated requests.
@@ -60,6 +68,9 @@ class ServiceContext {
60
68
  const metadata = new grpc.Metadata();
61
69
  const session = this.sessions.getSession();
62
70
  metadata.add('session-id', session?.id?.toString() || '0');
71
+ if (this.clientSessionId) {
72
+ metadata.add('x-ultipa-session-id', this.clientSessionId);
73
+ }
63
74
  return metadata;
64
75
  }
65
76
  /**
@@ -70,4 +81,4 @@ class ServiceContext {
70
81
  }
71
82
  }
72
83
  exports.ServiceContext = ServiceContext;
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFtQnRDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRVA7SUFDQTtJQUNBO0lBQ0E7SUFKbEIsWUFDa0IsTUFBbUIsRUFDbkIsUUFBd0IsRUFDeEIsU0FBNkIsRUFDN0IsT0FBdUI7UUFIdkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUN0QyxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQXhCRCx3Q0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCBjb250ZXh0IGZvciBhbGwgc2VydmljZSBjbGFzc2VzLlxuICogQ29udGFpbnMgZ1JQQyBjbGllbnRzLCBtYW5hZ2VycywgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7IEdxbGRiQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IFNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi4vc2Vzc2lvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi90cmFuc2FjdGlvbic7XG5cbi8qKlxuICogU2VydmljZSBjbGllbnQgdHlwZXMgZm9yIGdSUEMgY29tbXVuaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlQ2xpZW50cyB7XG4gIHNlc3Npb25TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgcXVlcnlTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgZ3JhcGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgdHJhbnNhY3Rpb25TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgZGF0YVNlcnZpY2U6IGdycGMuQ2xpZW50O1xuICBoZWFsdGhTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgYWRtaW5TZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgYnVsa0ltcG9ydFNlcnZpY2U6IGdycGMuQ2xpZW50O1xufVxuXG4vKipcbiAqIFNlcnZpY2UgY29udGV4dCBob2xkcyBzaGFyZWQgZGVwZW5kZW5jaWVzIGZvciBhbGwgc2VydmljZSBjbGFzc2VzLlxuICovXG5leHBvcnQgY2xhc3MgU2VydmljZUNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBHcWxkYkNvbmZpZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2Vzc2lvbnM6IFNlc3Npb25NYW5hZ2VyLFxuICAgIHB1YmxpYyByZWFkb25seSB0eE1hbmFnZXI6IFRyYW5zYWN0aW9uTWFuYWdlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50czogU2VydmljZUNsaWVudHNcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBtZXRhZGF0YSBmb3IgYXV0aGVudGljYXRlZCByZXF1ZXN0cy5cbiAgICovXG4gIGdldFNlc3Npb25NZXRhZGF0YSgpOiBncnBjLk1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG5ldyBncnBjLk1ldGFkYXRhKCk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIG1ldGFkYXRhLmFkZCgnc2Vzc2lvbi1pZCcsIHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzZXNzaW9uIGFjdGl2aXR5IHRpbWVzdGFtcC5cbiAgICovXG4gIHVwZGF0ZUFjdGl2aXR5KCk6IHZvaWQge1xuICAgIHRoaXMuc2Vzc2lvbnMudXBkYXRlQWN0aXZpdHkoKTtcbiAgfVxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFtQnRDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRVA7SUFDQTtJQUNBO0lBQ0E7SUFNQTtJQVZsQixZQUNrQixNQUFtQixFQUNuQixRQUF3QixFQUN4QixTQUE2QixFQUM3QixPQUF1QjtJQUN2Qzs7OztPQUlHO0lBQ2Esa0JBQTBCLEVBQUU7UUFUNUIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQU12QixvQkFBZSxHQUFmLGVBQWUsQ0FBYTtJQUMzQyxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFqQ0Qsd0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29udGV4dCBmb3IgYWxsIHNlcnZpY2UgY2xhc3Nlcy5cbiAqIENvbnRhaW5zIGdSUEMgY2xpZW50cywgbWFuYWdlcnMsIGFuZCBjb25maWd1cmF0aW9uLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBHcWxkYkNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4uL3Nlc3Npb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24nO1xuXG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IHR5cGVzIGZvciBnUlBDIGNvbW11bmljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNsaWVudHMge1xuICBzZXNzaW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIHF1ZXJ5U2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGdyYXBoU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIHRyYW5zYWN0aW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGRhdGFTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgaGVhbHRoU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGFkbWluU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGJ1bGtJbXBvcnRTZXJ2aWNlOiBncnBjLkNsaWVudDtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGNvbnRleHQgaG9sZHMgc2hhcmVkIGRlcGVuZGVuY2llcyBmb3IgYWxsIHNlcnZpY2UgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogR3FsZGJDb25maWcsXG4gICAgcHVibGljIHJlYWRvbmx5IHNlc3Npb25zOiBTZXNzaW9uTWFuYWdlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHhNYW5hZ2VyOiBUcmFuc2FjdGlvbk1hbmFnZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWVudHM6IFNlcnZpY2VDbGllbnRzLFxuICAgIC8qKlxuICAgICAqIFN0YWJsZSBwZXItY2xpZW50IGxvZ2ljYWwgc2Vzc2lvbiBpZCBzZW50IGFzIHRoZVxuICAgICAqIGB4LXVsdGlwYS1zZXNzaW9uLWlkYCBnUlBDIG1ldGFkYXRhIGhlYWRlci4gRW1wdHkgc3RyaW5nIG9taXRzIHRoZVxuICAgICAqIGhlYWRlciAobGVnYWN5IGJlaGF2aW9yKS4gU2VlIFRSQU5TQUNUSU9OU19EUklWRVJfR1VJREUubWQgwqcyLjEuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWVudFNlc3Npb25JZDogc3RyaW5nID0gJydcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBtZXRhZGF0YSBmb3IgYXV0aGVudGljYXRlZCByZXF1ZXN0cy5cbiAgICovXG4gIGdldFNlc3Npb25NZXRhZGF0YSgpOiBncnBjLk1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG5ldyBncnBjLk1ldGFkYXRhKCk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIG1ldGFkYXRhLmFkZCgnc2Vzc2lvbi1pZCcsIHNlc3Npb24/LmlkPy50b1N0cmluZygpIHx8ICcwJyk7XG4gICAgaWYgKHRoaXMuY2xpZW50U2Vzc2lvbklkKSB7XG4gICAgICBtZXRhZGF0YS5hZGQoJ3gtdWx0aXBhLXNlc3Npb24taWQnLCB0aGlzLmNsaWVudFNlc3Npb25JZCk7XG4gICAgfVxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc2Vzc2lvbiBhY3Rpdml0eSB0aW1lc3RhbXAuXG4gICAqL1xuICB1cGRhdGVBY3Rpdml0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlc3Npb25zLnVwZGF0ZUFjdGl2aXR5KCk7XG4gIH1cbn1cbiJdfQ==
@@ -11,12 +11,19 @@ export interface Transaction {
11
11
  timeout: number;
12
12
  committed: boolean;
13
13
  rolledBack: boolean;
14
+ /**
15
+ * Stable per-client logical session id surfaced under the
16
+ * transaction-branch model. Distinct from `sessionId: number` (the
17
+ * legacy uint64 from Login). Always populated by the driver. See
18
+ * TRANSACTIONS_DRIVER_GUIDE.md §2.0–2.1.
19
+ */
20
+ clientSessionId: string;
14
21
  }
15
22
  /** Manages transactions for the client */
16
23
  export declare class TransactionManager {
17
24
  private transactions;
18
25
  /** Create a new transaction */
19
- begin(txId: number, sessionId: number, graphName: string, readOnly: boolean, timeout: number): Transaction;
26
+ begin(txId: number, sessionId: number, graphName: string, readOnly: boolean, timeout: number, clientSessionId?: string): Transaction;
20
27
  /** Mark a transaction as committed */
21
28
  commit(txId: number): void;
22
29
  /** Mark a transaction as rolled back */
@@ -9,7 +9,7 @@ const errors_1 = require("./errors");
9
9
  class TransactionManager {
10
10
  transactions = new Map();
11
11
  /** Create a new transaction */
12
- begin(txId, sessionId, graphName, readOnly, timeout) {
12
+ begin(txId, sessionId, graphName, readOnly, timeout, clientSessionId = '') {
13
13
  const tx = {
14
14
  id: txId,
15
15
  sessionId,
@@ -19,6 +19,7 @@ class TransactionManager {
19
19
  timeout,
20
20
  committed: false,
21
21
  rolledBack: false,
22
+ clientSessionId,
22
23
  };
23
24
  this.transactions.set(txId, tx);
24
25
  return tx;
@@ -86,4 +87,4 @@ class TransactionManager {
86
87
  }
87
88
  }
88
89
  exports.TransactionManager = TransactionManager;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxxQ0FBb0Q7QUFjcEQsMENBQTBDO0FBQzFDLE1BQWEsa0JBQWtCO0lBQ3JCLFlBQVksR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUzRCwrQkFBK0I7SUFDL0IsS0FBSyxDQUNILElBQVksRUFDWixTQUFpQixFQUNqQixTQUFpQixFQUNqQixRQUFpQixFQUNqQixPQUFlO1FBRWYsTUFBTSxFQUFFLEdBQWdCO1lBQ3RCLEVBQUUsRUFBRSxJQUFJO1lBQ1IsU0FBUztZQUNULFNBQVM7WUFDVCxRQUFRO1lBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckIsT0FBTztZQUNQLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxpQ0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxpQ0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsbUJBQW1CLENBQUMsU0FBaUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxRQUFRLENBQUMsSUFBWTtRQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsS0FBSyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUM3RCxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsR0FBRyxDQUFDLElBQVk7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBOUZELGdEQThGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKiogUmVwcmVzZW50cyBhbiBhY3RpdmUgZGF0YWJhc2UgdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb24ge1xuICBpZDogbnVtYmVyO1xuICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgZ3JhcGhOYW1lOiBzdHJpbmc7XG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgdGltZW91dDogbnVtYmVyOyAvLyBpbiBtaWxsaXNlY29uZHNcbiAgY29tbWl0dGVkOiBib29sZWFuO1xuICByb2xsZWRCYWNrOiBib29sZWFuO1xufVxuXG4vKiogTWFuYWdlcyB0cmFuc2FjdGlvbnMgZm9yIHRoZSBjbGllbnQgKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbk1hbmFnZXIge1xuICBwcml2YXRlIHRyYW5zYWN0aW9uczogTWFwPG51bWJlciwgVHJhbnNhY3Rpb24+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKiBDcmVhdGUgYSBuZXcgdHJhbnNhY3Rpb24gKi9cbiAgYmVnaW4oXG4gICAgdHhJZDogbnVtYmVyLFxuICAgIHNlc3Npb25JZDogbnVtYmVyLFxuICAgIGdyYXBoTmFtZTogc3RyaW5nLFxuICAgIHJlYWRPbmx5OiBib29sZWFuLFxuICAgIHRpbWVvdXQ6IG51bWJlclxuICApOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHg6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWQ6IHR4SWQsXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBncmFwaE5hbWUsXG4gICAgICByZWFkT25seSxcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBjb21taXR0ZWQ6IGZhbHNlLFxuICAgICAgcm9sbGVkQmFjazogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9ucy5zZXQodHhJZCwgdHgpO1xuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBNYXJrIGEgdHJhbnNhY3Rpb24gYXMgY29tbWl0dGVkICovXG4gIGNvbW1pdCh0eElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHR4LmNvbW1pdHRlZCA9IHRydWU7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuZGVsZXRlKHR4SWQpO1xuICB9XG5cbiAgLyoqIE1hcmsgYSB0cmFuc2FjdGlvbiBhcyByb2xsZWQgYmFjayAqL1xuICByb2xsYmFjayh0eElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHR4LnJvbGxlZEJhY2sgPSB0cnVlO1xuICAgIHRoaXMudHJhbnNhY3Rpb25zLmRlbGV0ZSh0eElkKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSB0cmFuc2FjdGlvbiBieSBJRCAqL1xuICBnZXQodHhJZDogbnVtYmVyKTogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9ucy5nZXQodHhJZCk7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhY3RpdmUgdHJhbnNhY3Rpb25zICovXG4gIGdldEFjdGl2ZSgpOiBUcmFuc2FjdGlvbltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRyYW5zYWN0aW9ucy52YWx1ZXMoKSk7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhY3RpdmUgdHJhbnNhY3Rpb25zIGZvciBhIHNlc3Npb24gKi9cbiAgZ2V0QWN0aXZlRm9yU2Vzc2lvbihzZXNzaW9uSWQ6IG51bWJlcik6IFRyYW5zYWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLmZpbHRlcih0eCA9PiB0eC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBhY3RpdmUgdHJhbnNhY3Rpb25zICovXG4gIGhhc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbnMuc2l6ZSA+IDA7XG4gIH1cblxuICAvKiogR2V0IHRoZSBudW1iZXIgb2YgYWN0aXZlIHRyYW5zYWN0aW9ucyAqL1xuICBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9ucy5zaXplO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCB0cmFuc2FjdGlvbnMgKi9cbiAgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiBhIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZSAqL1xuICBpc0FjdGl2ZSh0eElkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICByZXR1cm4gdHggIT09IHVuZGVmaW5lZCAmJiAhdHguY29tbWl0dGVkICYmICF0eC5yb2xsZWRCYWNrO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIGEgdHJhbnNhY3Rpb24gaGFzIGV4cGlyZWQgKi9cbiAgaXNFeHBpcmVkKHR4SWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR4ID0gdGhpcy50cmFuc2FjdGlvbnMuZ2V0KHR4SWQpO1xuICAgIGlmICghdHggfHwgdHgudGltZW91dCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdHguY3JlYXRlZEF0ID4gdHgudGltZW91dDtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNhY3Rpb24gYWdlIGluIG1pbGxpc2Vjb25kcyAqL1xuICBhZ2UodHhJZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSByZXR1cm4gMDtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHR4LmNyZWF0ZWRBdDtcbiAgfVxufVxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxxQ0FBb0Q7QUFxQnBELDBDQUEwQztBQUMxQyxNQUFhLGtCQUFrQjtJQUNyQixZQUFZLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFM0QsK0JBQStCO0lBQy9CLEtBQUssQ0FDSCxJQUFZLEVBQ1osU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsUUFBaUIsRUFDakIsT0FBZSxFQUNmLGtCQUEwQixFQUFFO1FBRTVCLE1BQU0sRUFBRSxHQUFnQjtZQUN0QixFQUFFLEVBQUUsSUFBSTtZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsUUFBUTtZQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE9BQU87WUFDUCxTQUFTLEVBQUUsS0FBSztZQUNoQixVQUFVLEVBQUUsS0FBSztZQUNqQixlQUFlO1NBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxpQ0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sSUFBSSxpQ0FBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLEdBQUcsQ0FBQyxJQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsbUJBQW1CLENBQUMsU0FBaUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsNENBQTRDO0lBQzVDLEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxRQUFRLENBQUMsSUFBWTtRQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsS0FBSyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUM3RCxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsR0FBRyxDQUFDLElBQVk7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBaEdELGdEQWdHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHJhbnNhY3Rpb24gbWFuYWdlbWVudCBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vKiogUmVwcmVzZW50cyBhbiBhY3RpdmUgZGF0YWJhc2UgdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb24ge1xuICBpZDogbnVtYmVyO1xuICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgZ3JhcGhOYW1lOiBzdHJpbmc7XG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgdGltZW91dDogbnVtYmVyOyAvLyBpbiBtaWxsaXNlY29uZHNcbiAgY29tbWl0dGVkOiBib29sZWFuO1xuICByb2xsZWRCYWNrOiBib29sZWFuO1xuICAvKipcbiAgICogU3RhYmxlIHBlci1jbGllbnQgbG9naWNhbCBzZXNzaW9uIGlkIHN1cmZhY2VkIHVuZGVyIHRoZVxuICAgKiB0cmFuc2FjdGlvbi1icmFuY2ggbW9kZWwuIERpc3RpbmN0IGZyb20gYHNlc3Npb25JZDogbnVtYmVyYCAodGhlXG4gICAqIGxlZ2FjeSB1aW50NjQgZnJvbSBMb2dpbikuIEFsd2F5cyBwb3B1bGF0ZWQgYnkgdGhlIGRyaXZlci4gU2VlXG4gICAqIFRSQU5TQUNUSU9OU19EUklWRVJfR1VJREUubWQgwqcyLjDigJMyLjEuXG4gICAqL1xuICBjbGllbnRTZXNzaW9uSWQ6IHN0cmluZztcbn1cblxuLyoqIE1hbmFnZXMgdHJhbnNhY3Rpb25zIGZvciB0aGUgY2xpZW50ICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSB0cmFuc2FjdGlvbnM6IE1hcDxudW1iZXIsIFRyYW5zYWN0aW9uPiA9IG5ldyBNYXAoKTtcblxuICAvKiogQ3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uICovXG4gIGJlZ2luKFxuICAgIHR4SWQ6IG51bWJlcixcbiAgICBzZXNzaW9uSWQ6IG51bWJlcixcbiAgICBncmFwaE5hbWU6IHN0cmluZyxcbiAgICByZWFkT25seTogYm9vbGVhbixcbiAgICB0aW1lb3V0OiBudW1iZXIsXG4gICAgY2xpZW50U2Vzc2lvbklkOiBzdHJpbmcgPSAnJ1xuICApOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHg6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWQ6IHR4SWQsXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBncmFwaE5hbWUsXG4gICAgICByZWFkT25seSxcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBjb21taXR0ZWQ6IGZhbHNlLFxuICAgICAgcm9sbGVkQmFjazogZmFsc2UsXG4gICAgICBjbGllbnRTZXNzaW9uSWQsXG4gICAgfTtcbiAgICB0aGlzLnRyYW5zYWN0aW9ucy5zZXQodHhJZCwgdHgpO1xuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBNYXJrIGEgdHJhbnNhY3Rpb24gYXMgY29tbWl0dGVkICovXG4gIGNvbW1pdCh0eElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHR4LmNvbW1pdHRlZCA9IHRydWU7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuZGVsZXRlKHR4SWQpO1xuICB9XG5cbiAgLyoqIE1hcmsgYSB0cmFuc2FjdGlvbiBhcyByb2xsZWQgYmFjayAqL1xuICByb2xsYmFjayh0eElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgVHJhbnNhY3Rpb25Ob3RGb3VuZEVycm9yKCk7XG4gICAgfVxuICAgIHR4LnJvbGxlZEJhY2sgPSB0cnVlO1xuICAgIHRoaXMudHJhbnNhY3Rpb25zLmRlbGV0ZSh0eElkKTtcbiAgfVxuXG4gIC8qKiBHZXQgYSB0cmFuc2FjdGlvbiBieSBJRCAqL1xuICBnZXQodHhJZDogbnVtYmVyKTogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9ucy5nZXQodHhJZCk7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhY3RpdmUgdHJhbnNhY3Rpb25zICovXG4gIGdldEFjdGl2ZSgpOiBUcmFuc2FjdGlvbltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRyYW5zYWN0aW9ucy52YWx1ZXMoKSk7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhY3RpdmUgdHJhbnNhY3Rpb25zIGZvciBhIHNlc3Npb24gKi9cbiAgZ2V0QWN0aXZlRm9yU2Vzc2lvbihzZXNzaW9uSWQ6IG51bWJlcik6IFRyYW5zYWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLmZpbHRlcih0eCA9PiB0eC5zZXNzaW9uSWQgPT09IHNlc3Npb25JZCk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBhY3RpdmUgdHJhbnNhY3Rpb25zICovXG4gIGhhc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbnMuc2l6ZSA+IDA7XG4gIH1cblxuICAvKiogR2V0IHRoZSBudW1iZXIgb2YgYWN0aXZlIHRyYW5zYWN0aW9ucyAqL1xuICBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9ucy5zaXplO1xuICB9XG5cbiAgLyoqIENsZWFyIGFsbCB0cmFuc2FjdGlvbnMgKi9cbiAgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiBhIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZSAqL1xuICBpc0FjdGl2ZSh0eElkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICByZXR1cm4gdHggIT09IHVuZGVmaW5lZCAmJiAhdHguY29tbWl0dGVkICYmICF0eC5yb2xsZWRCYWNrO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIGEgdHJhbnNhY3Rpb24gaGFzIGV4cGlyZWQgKi9cbiAgaXNFeHBpcmVkKHR4SWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR4ID0gdGhpcy50cmFuc2FjdGlvbnMuZ2V0KHR4SWQpO1xuICAgIGlmICghdHggfHwgdHgudGltZW91dCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBEYXRlLm5vdygpIC0gdHguY3JlYXRlZEF0ID4gdHgudGltZW91dDtcbiAgfVxuXG4gIC8qKiBHZXQgdHJhbnNhY3Rpb24gYWdlIGluIG1pbGxpc2Vjb25kcyAqL1xuICBhZ2UodHhJZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0eCA9IHRoaXMudHJhbnNhY3Rpb25zLmdldCh0eElkKTtcbiAgICBpZiAoIXR4KSByZXR1cm4gMDtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHR4LmNyZWF0ZWRBdDtcbiAgfVxufVxuIl19
@@ -100,7 +100,12 @@ function formatGqlValue(v) {
100
100
  if (v === null || v === undefined)
101
101
  return 'NULL';
102
102
  if (typeof v === 'string') {
103
- const escaped = v.replace(/'/g, "\\'");
103
+ // Escape backslash FIRST, then single quote — order matters.
104
+ // Without backslash escaping, values containing `\` (e.g. Windows
105
+ // paths "NT AUTHORITY\\ SYSTEM") silently corrupt or trigger
106
+ // "unterminated string literal" parse errors when the lone
107
+ // backslash interacts with the closing `'`.
108
+ const escaped = v.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
104
109
  return `'${escaped}'`;
105
110
  }
106
111
  if (typeof v === 'boolean')
@@ -144,4 +149,4 @@ function useGraphPrefix(graphName) {
144
149
  function dbTypeToKeyword(dt) {
145
150
  return dt === DBType.EDGE ? 'EDGE' : 'NODE';
146
151
  }
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29udmVuaWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFpTUgsa0RBY0M7QUFNRCw4Q0FFQztBQUtELHdEQUlDO0FBS0QsNERBT0M7QUFLRCx3Q0FtQkM7QUFLRCxnRUFLQztBQUtELHdDQUdDO0FBS0QsMENBRUM7QUF4UkQscURBQXFEO0FBQ3JELElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtBQUNWLENBQUMsRUFIVyxNQUFNLHNCQUFOLE1BQU0sUUFHakI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsK0NBQVUsQ0FBQTtJQUNWLHFEQUFhLENBQUE7SUFDYiwrQ0FBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQXVKRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBRXZELGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVM7SUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENB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Tm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgUHJvcGVydHlUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVzcG9uc2UnO1xuXG4vKiogRGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIG5vZGUgYW5kIGVkZ2Ugb3BlcmF0aW9ucyAqL1xuZXhwb3J0IGVudW0gREJUeXBlIHtcbiAgTk9ERSA9IDAsXG4gIEVER0UgPSAxLFxufVxuXG4vKipcbiAqIENvbnRyb2xzIHRoZSBpbnNlcnQgbW9kZSBmb3IgR1FMLWJhc2VkIGluc2VydCBvcGVyYXRpb25zLlxuICpcbiAqICAgLSBgTm9ybWFsYDogICAgSU5TRVJUIOKAlCBlcnJvciBpZiBgX2lkYCBhbHJlYWR5IGV4aXN0cy5cbiAqICAgLSBgT3ZlcndyaXRlYDogSU5TRVJUIE9WRVJXUklURSDigJQgUkVQTEFDRSBleGlzdGluZyBlbnRpdHkgd2hvbGVzYWxlXG4gKiAgICAgb24gZHVwbGljYXRlIGBfaWRgLiBQcm9wZXJ0aWVzIG5vdCBpbiB0aGUgd3JpdGUgYXJlIExPU1QuXG4gKiAgIC0gYFVwc2VydGA6ICAgIFVQU0VSVCDigJQgTUVSR0UgbmV3IHByb3BlcnRpZXMgaW50byBleGlzdGluZyBlbnRpdHlcbiAqICAgICBvbiBkdXBsaWNhdGUgYF9pZGAuIFByb3BlcnRpZXMgbm90IGluIHRoZSB3cml0ZSBhcmUgUFJFU0VSVkVEO1xuICogICAgIHByb3BlcnRpZXMgaW4gdGhlIHdyaXRlIE9WRVJXUklURSBleGlzdGluZyB2YWx1ZXMuIEZhbGxzIGJhY2sgdG9cbiAqICAgICBwbGFpbiBpbnNlcnQgd2hlbiBubyBgX2lkYCBtYXRjaGVzLlxuICpcbiAqIGBPdmVyd3JpdGVgIGFuZCBgVXBzZXJ0YCBhcmUgZGlmZmVyZW50IHNlbWFudGljcyBvbiBleGlzdGluZyByb3dzLlxuICogQ2hvb3NlIGBVcHNlcnRgIChtZXJnZSkgZm9yIHBhcnRpYWwtdXBkYXRlIHdvcmtsb2FkcyB3aGVyZSB5b3UgZG9uJ3RcbiAqIHdhbnQgdG8gbG9zZSBleGlzdGluZyBmaWVsZHM7IGNob29zZSBgT3ZlcndyaXRlYCAocmVwbGFjZSkgZm9yXG4gKiBrbm93bi1jbGVhbiByZS1pbmdlc3Qgb2YgYW4gZW50aXR5J3MgZnVsbCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGVudW0gSW5zZXJ0VHlwZSB7XG4gIE5vcm1hbCA9IDAsXG4gIE92ZXJ3cml0ZSA9IDEsXG4gIFVwc2VydCA9IDIsXG59XG5cbi8qKiBMYWJlbCBpbmZvIGZyb20gU0hPVyBMQUJFTFMuXG4gKlxuICogR1FMIHN1cHBvcnRzIG11bHRpLWxhYmVsIG5vZGVzIChlLmcuIChuOlBlcnNvbjpFbXBsb3llZSkpLCBzbyB0aGVcbiAqIHNlcnZlciByZXR1cm5zIGxhYmVscyBhcyBhIGxpc3QgZXZlbiB3aGVuIHRoZXJlIGlzIG9ubHkgb25lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhYmVsSW5mbyB7XG4gIGxhYmVsczogc3RyaW5nW107XG4gIHR5cGU6IHN0cmluZzsgLy8gXCJOT0RFXCIgb3IgXCJFREdFXCJcbn1cblxuLyoqIE5vZGUgdHlwZSBpbmZvIGZyb20gU0hPVyBOT0RFIFRZUEVTICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVUeXBlSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJvcGVydGllczogQ29udlByb3BlcnR5RGVmW107XG59XG5cbi8qKiBFZGdlIHR5cGUgaW5mbyBmcm9tIFNIT1cgRURHRSBUWVBFUyAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGdlVHlwZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogTGFiZWwgZGVmaW5pdGlvbiB1c2VkIHdoZW4gY3JlYXRpbmcgY2xvc2VkIGdyYXBocyAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbERlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJvcGVydGllczogQ29udlByb3BlcnR5RGVmW107XG59XG5cbi8qKiBQcm9wZXJ0eSBkZWZpbml0aW9uIGZvciBjb252ZW5pZW5jZSBBUEkgKHVzZXMgc3RyaW5nIHR5cGUgbmFtZSkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udlByb3BlcnR5RGVmIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7IC8vIEdRTCB0eXBlIG5hbWU6IFwiU1RSSU5HXCIsIFwiSU5UNjRcIiwgXCJET1VCTEVcIiwgZXRjLlxufVxuXG4vKiogUHJvcGVydHkgaW4gYW4gaW5kZXggZGVmaW5pdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRleFByb3BlcnR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcmVmaXhMZW5ndGg/OiBudW1iZXI7IC8vIDAgb3IgdW5kZWZpbmVkID0gbm8gcHJlZml4LCA+MCA9IHByZWZpeCBsZW5ndGggZm9yIFNUUklOR1xufVxuXG4vKiogSW5kZXggaW5mbyBmcm9tIFNIT1cgSU5ERVggKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhJbmZvIHtcbiAgaW5kZXhOYW1lOiBzdHJpbmc7XG4gIGVudGl0eVR5cGU6IHN0cmluZzsgLy8gXCJOT0RFXCIgb3IgXCJFREdFXCJcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJvcGVydHk6IHN0cmluZztcbiAgcHJlZml4TGVuZ3RoPzogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbiAgcHJvZ3Jlc3M6IHN0cmluZztcbiAgaW5kZXhlZENvdW50OiBudW1iZXI7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgZXJyb3I6IHN0cmluZztcbn1cblxuLyoqIEZ1bGx0ZXh0IGluZGV4IGluZm8gZnJvbSBTSE9XIEZVTExURVhUICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGx0ZXh0SW5mbyB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBlbnRpdHlUeXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG4gIHNjaGVtYU5hbWU6IHN0cmluZztcbiAgcHJvcGVydGllczogc3RyaW5nO1xuICBhbmFseXplcjogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgZG9jQ291bnQ6IG51bWJlcjtcbiAgcHJvZ3Jlc3M6IHN0cmluZztcbn1cblxuLyoqIFRhc2sgaW5mbyBmcm9tIFNIT1cgVEFTS1MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFza0luZm8ge1xuICB0YXNrSWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICBhbGdvTmFtZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhcnRlZEF0OiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IHN0cmluZztcbiAgbm9kZXNXcml0dGVuOiBudW1iZXI7XG4gIGNvbXB1dGVUaW1lTXM6IG51bWJlcjtcbiAgd3JpdGVUaW1lTXM6IG51bWJlcjtcbn1cblxuLyoqIFByb2Nlc3MgaW5mbyBmcm9tIFRPUCAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzSW5mbyB7XG4gIHF1ZXJ5SWQ6IHN0cmluZztcbiAgcXVlcnlUZXh0OiBzdHJpbmc7XG4gIHN0YXJ0VGltZTogc3RyaW5nO1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG4gIHN0YXR1czogc3RyaW5nO1xufVxuXG4vKiogR3JhcGggc3RhdGlzdGljcyBmcm9tIGRiLnN0YXRzKCkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhTdGF0cyB7XG4gIGdyYXBoTmFtZTogc3RyaW5nO1xuICBub2RlQ291bnQ6IG51bWJlcjtcbiAgZWRnZUNvdW50OiBudW1iZXI7XG4gIGxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBlZGdlTGFiZWxDb3VudHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIG5vZGVQcm9wZXJ0eVN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PjtcbiAgZWRnZVByb3BlcnR5U3RhdHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+O1xufVxuXG4vKiogUmVzcG9uc2UgZm9yIEdRTC1iYXNlZCBpbnNlcnQgb3BlcmF0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRHcWxSZXNwb25zZSB7XG4gIHJvd3NBZmZlY3RlZDogbnVtYmVyO1xufVxuXG4vKiogQWxnb3JpdGhtIGluZm8gZnJvbSBTSE9XIEFMR09TICovXG5leHBvcnQgaW50ZXJmYWNlIEFsZ29JbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgc3RhZ2Ugcm93IGZyb20gYSBDQUxMIGFpLnJlYWQgLyBhaS5ncWwgWUlFTEQgc3RyZWFtLlxuICogU3RhZ2UgbmFtZXMgaW5jbHVkZTogc3RhcnQsIHJvdXRpbmcsIGludGVudF9leHRyYWN0aW9uLCBkZXNjcmliZV9hbGdvcml0aG0sXG4gKiBnZW5lcmF0aW9uLCB2YWxpZGF0aW9uLCBleGVjdXRpb24sIGZpbmFsLCBlcnJvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBaVN0YWdlIHtcbiAgc3RhZ2U6IHN0cmluZztcbiAgZGV0YWlsOiBzdHJpbmc7XG4gIGVsYXBzZWRNczogbnVtYmVyO1xuICB0b2tlbnNJbnB1dDogbnVtYmVyO1xuICB0b2tlbnNPdXRwdXQ6IG51bWJlcjtcbiAgdG9rZW5zQ2FjaGVkOiBudW1iZXI7XG4gIC8qKiBTdGFnZS1zcGVjaWZpYyBwYXlsb2FkIChwb2x5bW9ycGhpYyBKU09OIGZyb20gc2VydmVyKS4gKi9cbiAgZGF0YTogYW55O1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBhIGNsaWVudC5haVJlYWQoKSAvIGNsaWVudC5haUdxbCgpIGNhbGwuXG4gKlxuICogRm9yIGFpUmVhZDogYGRhdGFgIGlzIHRoZSBSZXNwb25zZSBmcm9tIHJlLWV4ZWN1dGluZyB0aGUgZ2VuZXJhdGVkIEdRTC5cbiAqIEZvciBhaUdxbDogIGBkYXRhYCBpcyBhbHdheXMgbnVsbCAoZ2VuZXJhdGlvbi1vbmx5OyBjYWxsZXIgcmVydW5zIG1hbnVhbGx5KS5cbiAqIE9uIEFJLXNpZGUgZXJyb3JzLCBgc3VjY2Vzcz1mYWxzZWAsIGBlcnJvcmAgaXMgcG9wdWxhdGVkLCBhbmQgYGRhdGFgIGlzIG51bGwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlSZWFkUmVzdWx0IHtcbiAgc3RhZ2VzOiBBaVN0YWdlW107XG4gIGdlbmVyYXRlZEdxbDogc3RyaW5nIHwgbnVsbDtcbiAgZGF0YTogUmVzcG9uc2UgfCBudWxsO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgdG90YWxFbGFwc2VkTXM6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNJbnB1dDogbnVtYmVyO1xuICB0b3RhbFRva2Vuc091dHB1dDogbnVtYmVyO1xuICB0b3RhbFRva2Vuc0NhY2hlZDogbnVtYmVyO1xufVxuXG4vLyBDb252Tm9kZSBhbmQgQ29udkVkZ2UgaGF2ZSBiZWVuIHJlbW92ZWQuXG4vLyBVc2UgTm9kZURhdGEgYW5kIEVkZ2VEYXRhIGZyb20gZ3JhcGhfbW9kZWxzIGluc3RlYWQuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIZWxwZXIgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBhcnNlIGEgY29tbWEtc2VwYXJhdGVkIHByb3BlcnR5IGRlZmluaXRpb24gc3RyaW5nIGxpa2UgXCJhZ2UgSU5URUdFUiwgbmFtZSBTVFJJTkdcIlxuICogaW50byBhbiBhcnJheSBvZiBDb252UHJvcGVydHlEZWYuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVByb3BlcnR5U3RyaW5nKHM6IHN0cmluZyk6IENvbnZQcm9wZXJ0eURlZltdIHtcbiAgcyA9IHMudHJpbSgpO1xuICBpZiAoIXMpIHJldHVybiBbXTtcblxuICBjb25zdCBwYXJ0cyA9IHMuc3BsaXQoJywnKTtcbiAgY29uc3QgcmVzdWx0OiBDb252UHJvcGVydHlEZWZbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBjb25zdCB0cmltbWVkID0gcGFydC50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkKSBjb250aW51ZTtcbiAgICBjb25zdCB0b2tlbnMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLyk7XG4gICAgaWYgKHRva2Vucy5sZW5ndGggPCAyKSBjb250aW51ZTtcbiAgICByZXN1bHQucHVzaCh7IG5hbWU6IHRva2Vuc1swXSwgdHlwZTogdG9rZW5zWzFdLnRvVXBwZXJDYXNlKCkgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgQ29udlByb3BlcnR5RGVmIHR5cGUgc3RyaW5nIHRvIGl0cyBHUUwgcmVwcmVzZW50YXRpb24uXG4gKiBJZiB0aGUgdHlwZSBpcyBhbHJlYWR5IGEgdmFsaWQgR1FMIHR5cGUgbmFtZSwgcmV0dXJucyBpdCBhcy1pcyAodXBwZXJjYXNlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eVR5cGVUb0dRTCh0eXBlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVOYW1lLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBHUUwgcHJvcGVydHkgZGVmaW5pdGlvbiBzdHJpbmcgbGlrZSBcInthZ2UgSU5UNjQsIG5hbWUgU1RSSU5HfVwiIGZyb20gQ29udlByb3BlcnR5RGVmW10uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb3BlcnR5RGVmU3RyaW5nKHByb3BzOiBDb252UHJvcGVydHlEZWZbXSk6IHN0cmluZyB7XG4gIGlmICghcHJvcHMgfHwgcHJvcHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ3t9JztcbiAgY29uc3QgcGFydHMgPSBwcm9wcy5tYXAocCA9PiBgXFxgJHtwLm5hbWV9XFxgICR7cHJvcGVydHlUeXBlVG9HUUwocC50eXBlKX1gKTtcbiAgcmV0dXJuICd7JyArIHBhcnRzLmpvaW4oJywgJykgKyAnfSc7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIHByb3BlcnR5IGxpc3QgZm9yIENSRUFURSBJTkRFWCwgZS5nLiBcInByb3AxLCBwcm9wMigxMClcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSW5kZXhQcm9wZXJ0eVN0cmluZyhwcm9wczogSW5kZXhQcm9wZXJ0eVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHByb3BzLm1hcChwID0+IHtcbiAgICBpZiAocC5wcmVmaXhMZW5ndGggJiYgcC5wcmVmaXhMZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFxcYCR7cC5uYW1lfVxcYCgke3AucHJlZml4TGVuZ3RofSlgO1xuICAgIH1cbiAgICByZXR1cm4gYFxcYCR7cC5uYW1lfVxcYGA7XG4gIH0pLmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogRm9ybWF0IGEgSmF2YVNjcmlwdCB2YWx1ZSBhcyBhIEdRTCBsaXRlcmFsIGZvciBJTlNFUlQgc3RhdGVtZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEdxbFZhbHVlKHY6IGFueSk6IHN0cmluZyB7XG4gIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCkgcmV0dXJuICdOVUxMJztcbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGVzY2FwZWQgPSB2LnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKTtcbiAgICByZXR1cm4gYCcke2VzY2FwZWR9J2A7XG4gIH1cbiAgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHJldHVybiB2ID8gJ1RSVUUnIDogJ0ZBTFNFJztcbiAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykgcmV0dXJuIFN0cmluZyh2KTtcbiAgaWYgKHR5cGVvZiB2ID09PSAnYmlnaW50JykgcmV0dXJuIFN0cmluZyh2KTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICBjb25zdCBlbGVtcyA9IHYubWFwKChlbGVtOiBhbnkpID0+IGZvcm1hdEdxbFZhbHVlKGVsZW0pKTtcbiAgICByZXR1cm4gJ1snICsgZWxlbXMuam9pbignLCAnKSArICddJztcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHYpO1xuICAgIGNvbnN0IHBhcnRzID0gZW50cmllcy5tYXAoKFtrLCB2YWxdKSA9PiBgJHtrfTogJHtmb3JtYXRHcWxWYWx1ZSh2YWwpfWApO1xuICAgIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xuICB9XG4gIHJldHVybiBgJyR7U3RyaW5nKHYpfSdgO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IHZhbHVlIG1hcCBsaWtlIFwie25hbWU6ICdBbGljZScsIGFnZTogMzB9XCIgZnJvbSBhIFJlY29yZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvcGVydGllc1ZhbHVlU3RyaW5nKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IHBhcnRzID0ga2V5cy5tYXAoayA9PiBgJHtrfTogJHtmb3JtYXRHcWxWYWx1ZShwcm9wc1trXSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIFJldHVybiBcIlVTRSBHUkFQSCA8bmFtZT5cXG5cIiBpZiBncmFwaE5hbWUgaXMgbm9uLWVtcHR5LCBvdGhlcndpc2UgXCJcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUdyYXBoUHJlZml4KGdyYXBoTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFncmFwaE5hbWUpIHJldHVybiAnJztcbiAgcmV0dXJuIGBVU0UgR1JBUEggJHtncmFwaE5hbWV9XFxuYDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IERCVHlwZSB0byBHUUwga2V5d29yZCBcIk5PREVcIiBvciBcIkVER0VcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRiVHlwZVRvS2V5d29yZChkdDogREJUeXBlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGR0ID09PSBEQlR5cGUuRURHRSA/ICdFREdFJyA6ICdOT0RFJztcbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY29udmVuaWVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFpTUgsa0RBY0M7QUFNRCw4Q0FFQztBQUtELHdEQUlDO0FBS0QsNERBT0M7QUFLRCx3Q0F3QkM7QUFLRCxnRUFLQztBQUtELHdDQUdDO0FBS0QsMENBRUM7QUE3UkQscURBQXFEO0FBQ3JELElBQVksTUFHWDtBQUhELFdBQVksTUFBTTtJQUNoQixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtBQUNWLENBQUMsRUFIVyxNQUFNLHNCQUFOLE1BQU0sUUFHakI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsK0NBQVUsQ0FBQTtJQUNWLHFEQUFhLENBQUE7SUFDYiwrQ0FBVSxDQUFBO0FBQ1osQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQXVKRCwyQ0FBMkM7QUFDM0MsdURBQXVEO0FBRXZELGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGOzs7R0FHRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVM7SUFDM0MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBc0IsRUFBRSxDQUFDO0lBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUN2QixNQUFNLE1BQU0sR0FBRyxPQUFPLENB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QUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZW5pZW5jZSBBUEkgdHlwZXMgZm9yIEdRTERCIE5vZGUuanMgZHJpdmVyLlxuICovXG5cbmltcG9ydCB7IFByb3BlcnR5VHlwZSB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zZSB9IGZyb20gJy4uL3Jlc3BvbnNlJztcblxuLyoqIERpc3Rpbmd1aXNoZXMgYmV0d2VlbiBub2RlIGFuZCBlZGdlIG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBlbnVtIERCVHlwZSB7XG4gIE5PREUgPSAwLFxuICBFREdFID0gMSxcbn1cblxuLyoqXG4gKiBDb250cm9scyB0aGUgaW5zZXJ0IG1vZGUgZm9yIEdRTC1iYXNlZCBpbnNlcnQgb3BlcmF0aW9ucy5cbiAqXG4gKiAgIC0gYE5vcm1hbGA6ICAgIElOU0VSVCDigJQgZXJyb3IgaWYgYF9pZGAgYWxyZWFkeSBleGlzdHMuXG4gKiAgIC0gYE92ZXJ3cml0ZWA6IElOU0VSVCBPVkVSV1JJVEUg4oCUIFJFUExBQ0UgZXhpc3RpbmcgZW50aXR5IHdob2xlc2FsZVxuICogICAgIG9uIGR1cGxpY2F0ZSBgX2lkYC4gUHJvcGVydGllcyBub3QgaW4gdGhlIHdyaXRlIGFyZSBMT1NULlxuICogICAtIGBVcHNlcnRgOiAgICBVUFNFUlQg4oCUIE1FUkdFIG5ldyBwcm9wZXJ0aWVzIGludG8gZXhpc3RpbmcgZW50aXR5XG4gKiAgICAgb24gZHVwbGljYXRlIGBfaWRgLiBQcm9wZXJ0aWVzIG5vdCBpbiB0aGUgd3JpdGUgYXJlIFBSRVNFUlZFRDtcbiAqICAgICBwcm9wZXJ0aWVzIGluIHRoZSB3cml0ZSBPVkVSV1JJVEUgZXhpc3RpbmcgdmFsdWVzLiBGYWxscyBiYWNrIHRvXG4gKiAgICAgcGxhaW4gaW5zZXJ0IHdoZW4gbm8gYF9pZGAgbWF0Y2hlcy5cbiAqXG4gKiBgT3ZlcndyaXRlYCBhbmQgYFVwc2VydGAgYXJlIGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gZXhpc3Rpbmcgcm93cy5cbiAqIENob29zZSBgVXBzZXJ0YCAobWVyZ2UpIGZvciBwYXJ0aWFsLXVwZGF0ZSB3b3JrbG9hZHMgd2hlcmUgeW91IGRvbid0XG4gKiB3YW50IHRvIGxvc2UgZXhpc3RpbmcgZmllbGRzOyBjaG9vc2UgYE92ZXJ3cml0ZWAgKHJlcGxhY2UpIGZvclxuICoga25vd24tY2xlYW4gcmUtaW5nZXN0IG9mIGFuIGVudGl0eSdzIGZ1bGwgc3RhdGUuXG4gKi9cbmV4cG9ydCBlbnVtIEluc2VydFR5cGUge1xuICBOb3JtYWwgPSAwLFxuICBPdmVyd3JpdGUgPSAxLFxuICBVcHNlcnQgPSAyLFxufVxuXG4vKiogTGFiZWwgaW5mbyBmcm9tIFNIT1cgTEFCRUxTLlxuICpcbiAqIEdRTCBzdXBwb3J0cyBtdWx0aS1sYWJlbCBub2RlcyAoZS5nLiAobjpQZXJzb246RW1wbG95ZWUpKSwgc28gdGhlXG4gKiBzZXJ2ZXIgcmV0dXJucyBsYWJlbHMgYXMgYSBsaXN0IGV2ZW4gd2hlbiB0aGVyZSBpcyBvbmx5IG9uZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYWJlbEluZm8ge1xuICBsYWJlbHM6IHN0cmluZ1tdO1xuICB0eXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG59XG5cbi8qKiBOb2RlIHR5cGUgaW5mbyBmcm9tIFNIT1cgTk9ERSBUWVBFUyAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlVHlwZUluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogRWRnZSB0eXBlIGluZm8gZnJvbSBTSE9XIEVER0UgVFlQRVMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVR5cGVJbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcm9wZXJ0aWVzOiBDb252UHJvcGVydHlEZWZbXTtcbn1cblxuLyoqIExhYmVsIGRlZmluaXRpb24gdXNlZCB3aGVuIGNyZWF0aW5nIGNsb3NlZCBncmFwaHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFiZWxEZWYge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IENvbnZQcm9wZXJ0eURlZltdO1xufVxuXG4vKiogUHJvcGVydHkgZGVmaW5pdGlvbiBmb3IgY29udmVuaWVuY2UgQVBJICh1c2VzIHN0cmluZyB0eXBlIG5hbWUpICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnZQcm9wZXJ0eURlZiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nOyAvLyBHUUwgdHlwZSBuYW1lOiBcIlNUUklOR1wiLCBcIklOVDY0XCIsIFwiRE9VQkxFXCIsIGV0Yy5cbn1cblxuLyoqIFByb3BlcnR5IGluIGFuIGluZGV4IGRlZmluaXRpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZXhQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJlZml4TGVuZ3RoPzogbnVtYmVyOyAvLyAwIG9yIHVuZGVmaW5lZCA9IG5vIHByZWZpeCwgPjAgPSBwcmVmaXggbGVuZ3RoIGZvciBTVFJJTkdcbn1cblxuLyoqIEluZGV4IGluZm8gZnJvbSBTSE9XIElOREVYICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGV4SW5mbyB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBlbnRpdHlUeXBlOiBzdHJpbmc7IC8vIFwiTk9ERVwiIG9yIFwiRURHRVwiXG4gIGxhYmVsOiBzdHJpbmc7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIHByZWZpeExlbmd0aD86IG51bWJlcjtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIGluZGV4ZWRDb3VudDogbnVtYmVyO1xuICB0b3RhbENvdW50OiBudW1iZXI7XG4gIGVycm9yOiBzdHJpbmc7XG59XG5cbi8qKiBGdWxsdGV4dCBpbmRleCBpbmZvIGZyb20gU0hPVyBGVUxMVEVYVCAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsdGV4dEluZm8ge1xuICBpbmRleE5hbWU6IHN0cmluZztcbiAgZW50aXR5VHlwZTogc3RyaW5nOyAvLyBcIk5PREVcIiBvciBcIkVER0VcIlxuICBzY2hlbWFOYW1lOiBzdHJpbmc7XG4gIHByb3BlcnRpZXM6IHN0cmluZztcbiAgYW5hbHl6ZXI6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGRvY0NvdW50OiBudW1iZXI7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG59XG5cbi8qKiBUYXNrIGluZm8gZnJvbSBTSE9XIFRBU0tTICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc2tJbmZvIHtcbiAgdGFza0lkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWxnb05hbWU6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG4gIG5vZGVzV3JpdHRlbjogbnVtYmVyO1xuICBjb21wdXRlVGltZU1zOiBudW1iZXI7XG4gIHdyaXRlVGltZU1zOiBudW1iZXI7XG59XG5cbi8qKiBQcm9jZXNzIGluZm8gZnJvbSBUT1AgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0luZm8ge1xuICBxdWVyeUlkOiBzdHJpbmc7XG4gIHF1ZXJ5VGV4dDogc3RyaW5nO1xuICBzdGFydFRpbWU6IHN0cmluZztcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBzdGF0dXM6IHN0cmluZztcbn1cblxuLyoqIEdyYXBoIHN0YXRpc3RpY3MgZnJvbSBkYi5zdGF0cygpICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoU3RhdHMge1xuICBncmFwaE5hbWU6IHN0cmluZztcbiAgbm9kZUNvdW50OiBudW1iZXI7XG4gIGVkZ2VDb3VudDogbnVtYmVyO1xuICBsYWJlbENvdW50czogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgZWRnZUxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBub2RlUHJvcGVydHlTdGF0czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgbnVtYmVyPj47XG4gIGVkZ2VQcm9wZXJ0eVN0YXRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+Pjtcbn1cblxuLyoqIFJlc3BvbnNlIGZvciBHUUwtYmFzZWQgaW5zZXJ0IG9wZXJhdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0R3FsUmVzcG9uc2Uge1xuICByb3dzQWZmZWN0ZWQ6IG51bWJlcjtcbn1cblxuLyoqIEFsZ29yaXRobSBpbmZvIGZyb20gU0hPVyBBTEdPUyAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGdvSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT25lIHN0YWdlIHJvdyBmcm9tIGEgQ0FMTCBhaS5yZWFkIC8gYWkuZ3FsIFlJRUxEIHN0cmVhbS5cbiAqIFN0YWdlIG5hbWVzIGluY2x1ZGU6IHN0YXJ0LCByb3V0aW5nLCBpbnRlbnRfZXh0cmFjdGlvbiwgZGVzY3JpYmVfYWxnb3JpdGhtLFxuICogZ2VuZXJhdGlvbiwgdmFsaWRhdGlvbiwgZXhlY3V0aW9uLCBmaW5hbCwgZXJyb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWlTdGFnZSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIGRldGFpbDogc3RyaW5nO1xuICBlbGFwc2VkTXM6IG51bWJlcjtcbiAgdG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG9rZW5zT3V0cHV0OiBudW1iZXI7XG4gIHRva2Vuc0NhY2hlZDogbnVtYmVyO1xuICAvKiogU3RhZ2Utc3BlY2lmaWMgcGF5bG9hZCAocG9seW1vcnBoaWMgSlNPTiBmcm9tIHNlcnZlcikuICovXG4gIGRhdGE6IGFueTtcbn1cblxuLyoqXG4gKiBSZXN1bHQgb2YgYSBjbGllbnQuYWlSZWFkKCkgLyBjbGllbnQuYWlHcWwoKSBjYWxsLlxuICpcbiAqIEZvciBhaVJlYWQ6IGBkYXRhYCBpcyB0aGUgUmVzcG9uc2UgZnJvbSByZS1leGVjdXRpbmcgdGhlIGdlbmVyYXRlZCBHUUwuXG4gKiBGb3IgYWlHcWw6ICBgZGF0YWAgaXMgYWx3YXlzIG51bGwgKGdlbmVyYXRpb24tb25seTsgY2FsbGVyIHJlcnVucyBtYW51YWxseSkuXG4gKiBPbiBBSS1zaWRlIGVycm9ycywgYHN1Y2Nlc3M9ZmFsc2VgLCBgZXJyb3JgIGlzIHBvcHVsYXRlZCwgYW5kIGBkYXRhYCBpcyBudWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFpUmVhZFJlc3VsdCB7XG4gIHN0YWdlczogQWlTdGFnZVtdO1xuICBnZW5lcmF0ZWRHcWw6IHN0cmluZyB8IG51bGw7XG4gIGRhdGE6IFJlc3BvbnNlIHwgbnVsbDtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHRvdGFsRWxhcHNlZE1zOiBudW1iZXI7XG4gIHRvdGFsVG9rZW5zSW5wdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNPdXRwdXQ6IG51bWJlcjtcbiAgdG90YWxUb2tlbnNDYWNoZWQ6IG51bWJlcjtcbn1cblxuLy8gQ29udk5vZGUgYW5kIENvbnZFZGdlIGhhdmUgYmVlbiByZW1vdmVkLlxuLy8gVXNlIE5vZGVEYXRhIGFuZCBFZGdlRGF0YSBmcm9tIGdyYXBoX21vZGVscyBpbnN0ZWFkLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVyIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJzZSBhIGNvbW1hLXNlcGFyYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9uIHN0cmluZyBsaWtlIFwiYWdlIElOVEVHRVIsIG5hbWUgU1RSSU5HXCJcbiAqIGludG8gYW4gYXJyYXkgb2YgQ29udlByb3BlcnR5RGVmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQcm9wZXJ0eVN0cmluZyhzOiBzdHJpbmcpOiBDb252UHJvcGVydHlEZWZbXSB7XG4gIHMgPSBzLnRyaW0oKTtcbiAgaWYgKCFzKSByZXR1cm4gW107XG5cbiAgY29uc3QgcGFydHMgPSBzLnNwbGl0KCcsJyk7XG4gIGNvbnN0IHJlc3VsdDogQ29udlByb3BlcnR5RGVmW10gPSBbXTtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHBhcnQudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgY29udGludWU7XG4gICAgY29uc3QgdG9rZW5zID0gdHJpbW1lZC5zcGxpdCgvXFxzKy8pO1xuICAgIGlmICh0b2tlbnMubGVuZ3RoIDwgMikgY29udGludWU7XG4gICAgcmVzdWx0LnB1c2goeyBuYW1lOiB0b2tlbnNbMF0sIHR5cGU6IHRva2Vuc1sxXS50b1VwcGVyQ2FzZSgpIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBhIENvbnZQcm9wZXJ0eURlZiB0eXBlIHN0cmluZyB0byBpdHMgR1FMIHJlcHJlc2VudGF0aW9uLlxuICogSWYgdGhlIHR5cGUgaXMgYWxyZWFkeSBhIHZhbGlkIEdRTCB0eXBlIG5hbWUsIHJldHVybnMgaXQgYXMtaXMgKHVwcGVyY2FzZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlUeXBlVG9HUUwodHlwZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IGRlZmluaXRpb24gc3RyaW5nIGxpa2UgXCJ7YWdlIElOVDY0LCBuYW1lIFNUUklOR31cIiBmcm9tIENvbnZQcm9wZXJ0eURlZltdLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9wZXJ0eURlZlN0cmluZyhwcm9wczogQ29udlByb3BlcnR5RGVmW10pOiBzdHJpbmcge1xuICBpZiAoIXByb3BzIHx8IHByb3BzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICd7fSc7XG4gIGNvbnN0IHBhcnRzID0gcHJvcHMubWFwKHAgPT4gYFxcYCR7cC5uYW1lfVxcYCAke3Byb3BlcnR5VHlwZVRvR1FMKHAudHlwZSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBwcm9wZXJ0eSBsaXN0IGZvciBDUkVBVEUgSU5ERVgsIGUuZy4gXCJwcm9wMSwgcHJvcDIoMTApXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEluZGV4UHJvcGVydHlTdHJpbmcocHJvcHM6IEluZGV4UHJvcGVydHlbXSk6IHN0cmluZyB7XG4gIHJldHVybiBwcm9wcy5tYXAocCA9PiB7XG4gICAgaWYgKHAucHJlZml4TGVuZ3RoICYmIHAucHJlZml4TGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGAoJHtwLnByZWZpeExlbmd0aH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGBcXGAke3AubmFtZX1cXGBgO1xuICB9KS5qb2luKCcsICcpO1xufVxuXG4vKipcbiAqIEZvcm1hdCBhIEphdmFTY3JpcHQgdmFsdWUgYXMgYSBHUUwgbGl0ZXJhbCBmb3IgSU5TRVJUIHN0YXRlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRHcWxWYWx1ZSh2OiBhbnkpOiBzdHJpbmcge1xuICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQpIHJldHVybiAnTlVMTCc7XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBFc2NhcGUgYmFja3NsYXNoIEZJUlNULCB0aGVuIHNpbmdsZSBxdW90ZSDigJQgb3JkZXIgbWF0dGVycy5cbiAgICAvLyBXaXRob3V0IGJhY2tzbGFzaCBlc2NhcGluZywgdmFsdWVzIGNvbnRhaW5pbmcgYFxcYCAoZS5nLiBXaW5kb3dzXG4gICAgLy8gcGF0aHMgXCJOVCBBVVRIT1JJVFlcXFxcIFNZU1RFTVwiKSBzaWxlbnRseSBjb3JydXB0IG9yIHRyaWdnZXJcbiAgICAvLyBcInVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbFwiIHBhcnNlIGVycm9ycyB3aGVuIHRoZSBsb25lXG4gICAgLy8gYmFja3NsYXNoIGludGVyYWN0cyB3aXRoIHRoZSBjbG9zaW5nIGAnYC5cbiAgICBjb25zdCBlc2NhcGVkID0gdi5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKTtcbiAgICByZXR1cm4gYCcke2VzY2FwZWR9J2A7XG4gIH1cbiAgaWYgKHR5cGVvZiB2ID09PSAnYm9vbGVhbicpIHJldHVybiB2ID8gJ1RSVUUnIDogJ0ZBTFNFJztcbiAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykgcmV0dXJuIFN0cmluZyh2KTtcbiAgaWYgKHR5cGVvZiB2ID09PSAnYmlnaW50JykgcmV0dXJuIFN0cmluZyh2KTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICBjb25zdCBlbGVtcyA9IHYubWFwKChlbGVtOiBhbnkpID0+IGZvcm1hdEdxbFZhbHVlKGVsZW0pKTtcbiAgICByZXR1cm4gJ1snICsgZWxlbXMuam9pbignLCAnKSArICddJztcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHYpO1xuICAgIGNvbnN0IHBhcnRzID0gZW50cmllcy5tYXAoKFtrLCB2YWxdKSA9PiBgJHtrfTogJHtmb3JtYXRHcWxWYWx1ZSh2YWwpfWApO1xuICAgIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xuICB9XG4gIHJldHVybiBgJyR7U3RyaW5nKHYpfSdgO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgR1FMIHByb3BlcnR5IHZhbHVlIG1hcCBsaWtlIFwie25hbWU6ICdBbGljZScsIGFnZTogMzB9XCIgZnJvbSBhIFJlY29yZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvcGVydGllc1ZhbHVlU3RyaW5nKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGNvbnN0IHBhcnRzID0ga2V5cy5tYXAoayA9PiBgJHtrfTogJHtmb3JtYXRHcWxWYWx1ZShwcm9wc1trXSl9YCk7XG4gIHJldHVybiAneycgKyBwYXJ0cy5qb2luKCcsICcpICsgJ30nO1xufVxuXG4vKipcbiAqIFJldHVybiBcIlVTRSBHUkFQSCA8bmFtZT5cXG5cIiBpZiBncmFwaE5hbWUgaXMgbm9uLWVtcHR5LCBvdGhlcndpc2UgXCJcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUdyYXBoUHJlZml4KGdyYXBoTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFncmFwaE5hbWUpIHJldHVybiAnJztcbiAgcmV0dXJuIGBVU0UgR1JBUEggJHtncmFwaE5hbWV9XFxuYDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IERCVHlwZSB0byBHUUwga2V5d29yZCBcIk5PREVcIiBvciBcIkVER0VcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRiVHlwZVRvS2V5d29yZChkdDogREJUeXBlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGR0ID09PSBEQlR5cGUuRURHRSA/ICdFREdFJyA6ICdOT0RFJztcbn1cbiJdfQ==
@@ -20,6 +20,19 @@ export interface TransactionInfo {
20
20
  durationMs: number;
21
21
  internalTxId: string;
22
22
  }
23
+ /**
24
+ * One row from `SHOW TRANSACTIONS` (admin DDL added by transaction-branch).
25
+ * `sessionId` is `''` when the server has not auto-derived one from peer
26
+ * info and the driver has not surfaced explicit `x-ultipa-session-id`
27
+ * metadata. See TRANSACTIONS_DRIVER_GUIDE.md §3.1.
28
+ */
29
+ export interface TransactionRow {
30
+ transactionId: string;
31
+ status: string;
32
+ readOnly: boolean;
33
+ startTime: string;
34
+ sessionId: string;
35
+ }
23
36
  /** AST cache statistics */
24
37
  export interface ASTCacheStats {
25
38
  hits: number;
@@ -3,4 +3,4 @@
3
3
  * Metadata types for GQLDB Node.js driver.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRhZGF0YSB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgR3JhcGhUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XG5cbi8qKiBJbmZvcm1hdGlvbiBhYm91dCBhIGdyYXBoICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZ3JhcGhUeXBlOiBHcmFwaFR5cGU7XG4gIG5vZGVDb3VudDogbnVtYmVyO1xuICBlZGdlQ291bnQ6IG51bWJlcjtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLyoqIEluZm9ybWF0aW9uIGFib3V0IGEgdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25JbmZvIHtcbiAgdHJhbnNhY3Rpb25JZDogbnVtYmVyO1xuICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgZ3JhcGhOYW1lOiBzdHJpbmc7XG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBpbnRlcm5hbFR4SWQ6IHN0cmluZztcbn1cblxuLyoqIEFTVCBjYWNoZSBzdGF0aXN0aWNzICovXG5leHBvcnQgaW50ZXJmYWNlIEFTVENhY2hlU3RhdHMge1xuICBoaXRzOiBudW1iZXI7XG4gIG1pc3NlczogbnVtYmVyO1xuICBldmljdGlvbnM6IG51bWJlcjtcbiAgZW50cmllczogbnVtYmVyO1xuICBoaXRSYXRlOiBudW1iZXI7XG59XG5cbi8qKiBQbGFuIGNhY2hlIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbkNhY2hlU3RhdHMge1xuICBzaXplOiBudW1iZXI7XG4gIGNhcGFjaXR5OiBudW1iZXI7XG4gIGhpdHM6IG51bWJlcjtcbiAgbWlzc2VzOiBudW1iZXI7XG4gIGhpdFJhdGU6IG51bWJlcjtcbn1cblxuLyoqIENvbWJpbmVkIGNhY2hlIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVTdGF0cyB7XG4gIGFzdFN0YXRzPzogQVNUQ2FjaGVTdGF0cztcbiAgcGxhblN0YXRzPzogUGxhbkNhY2hlU3RhdHM7XG59XG5cbi8qKiBEYXRhYmFzZSBzdGF0aXN0aWNzICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpc3RpY3Mge1xuICBub2RlQ291bnQ6IG51bWJlcjtcbiAgZWRnZUNvdW50OiBudW1iZXI7XG4gIGxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBlZGdlTGFiZWxDb3VudHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKiBDUFUgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDcHVNZXRyaWNzIHtcbiAgcHJvY2Vzc1BlcmNlbnQ6IG51bWJlcjtcbiAgc3lzdGVtUGVyY2VudDogbnVtYmVyO1xuICBudW1Db3JlczogbnVtYmVyO1xufVxuXG4vKiogTWVtb3J5IG1ldHJpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5TWV0cmljcyB7XG4gIHByb2Nlc3NSc3M6IG51bWJlcjtcbiAgaGVhcEFsbG9jOiBudW1iZXI7XG4gIGhlYXBTeXM6IG51bWJlcjtcbiAgc3RhY2tJblVzZTogbnVtYmVyO1xuICBzeXN0ZW1Ub3RhbDogbnVtYmVyO1xuICBzeXN0ZW1BdmFpbGFibGU6IG51bWJlcjtcbiAgc3lzdGVtVXNlZDogbnVtYmVyO1xuICBzeXN0ZW1Vc2VkUGVyY2VudDogbnVtYmVyO1xufVxuXG4vKiogRGlzayBJL08gbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNrSU9NZXRyaWNzIHtcbiAgcmVhZEJ5dGVzOiBudW1iZXI7XG4gIHdyaXRlQnl0ZXM6IG51bWJlcjtcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqIFN0b3JhZ2UgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTWV0cmljcyB7XG4gIGRiUGF0aDogc3RyaW5nO1xuICBkYlNpemVCeXRlczogbnVtYmVyO1xuICB2b2x1bWVUb3RhbDogbnVtYmVyO1xuICB2b2x1bWVGcmVlOiBudW1iZXI7XG4gIHZvbHVtZVVzZWQ6IG51bWJlcjtcbn1cblxuLyoqIE5ldHdvcmsgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrTWV0cmljcyB7XG4gIGJ5dGVzU2VudDogbnVtYmVyO1xuICBieXRlc1JlY3Y6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1JlY3Y6IG51bWJlcjtcbn1cblxuLyoqIFN5c3RlbS1sZXZlbCBtZXRyaWNzICovXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbU1ldHJpY3Mge1xuICBjcHU/OiBDcHVNZXRyaWNzO1xuICBtZW1vcnk/OiBNZW1vcnlNZXRyaWNzO1xuICBkaXNrSU8/OiBEaXNrSU9NZXRyaWNzO1xuICBzdG9yYWdlPzogU3RvcmFnZU1ldHJpY3M7XG4gIG5ldHdvcms/OiBOZXR3b3JrTWV0cmljcztcbn1cblxuLyoqIFJlc3VsdCBvZiBhIGNvbXBhY3Qgb3BlcmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhY3RSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgYSB3YWl0LWZvci1jb21wdXRlLXRvcG9sb2d5IG9wZXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlVG9wb2xvZ3lSZXN1bHQge1xuICByZWFkeTogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRhZGF0YSB0eXBlcyBmb3IgR1FMREIgTm9kZS5qcyBkcml2ZXIuXG4gKi9cblxuaW1wb3J0IHsgR3JhcGhUeXBlIH0gZnJvbSAnLi9lbnVtcyc7XG5cbi8qKiBJbmZvcm1hdGlvbiBhYm91dCBhIGdyYXBoICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoSW5mbyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZ3JhcGhUeXBlOiBHcmFwaFR5cGU7XG4gIG5vZGVDb3VudDogbnVtYmVyO1xuICBlZGdlQ291bnQ6IG51bWJlcjtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLyoqIEluZm9ybWF0aW9uIGFib3V0IGEgdHJhbnNhY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25JbmZvIHtcbiAgdHJhbnNhY3Rpb25JZDogbnVtYmVyO1xuICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgZ3JhcGhOYW1lOiBzdHJpbmc7XG4gIHJlYWRPbmx5OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBpbnRlcm5hbFR4SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgcm93IGZyb20gYFNIT1cgVFJBTlNBQ1RJT05TYCAoYWRtaW4gRERMIGFkZGVkIGJ5IHRyYW5zYWN0aW9uLWJyYW5jaCkuXG4gKiBgc2Vzc2lvbklkYCBpcyBgJydgIHdoZW4gdGhlIHNlcnZlciBoYXMgbm90IGF1dG8tZGVyaXZlZCBvbmUgZnJvbSBwZWVyXG4gKiBpbmZvIGFuZCB0aGUgZHJpdmVyIGhhcyBub3Qgc3VyZmFjZWQgZXhwbGljaXQgYHgtdWx0aXBhLXNlc3Npb24taWRgXG4gKiBtZXRhZGF0YS4gU2VlIFRSQU5TQUNUSU9OU19EUklWRVJfR1VJREUubWQgwqczLjEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25Sb3cge1xuICB0cmFuc2FjdGlvbklkOiBzdHJpbmc7ICAgLy8gJ3R4Xzx1dWlkPicgZm9ybVxuICBzdGF0dXM6IHN0cmluZzsgICAgICAgICAgLy8gJ2FjdGl2ZScgLyBldGNcbiAgcmVhZE9ubHk6IGJvb2xlYW47XG4gIHN0YXJ0VGltZTogc3RyaW5nOyAgICAgICAvLyBJU08gODYwMVxuICBzZXNzaW9uSWQ6IHN0cmluZztcbn1cblxuLyoqIEFTVCBjYWNoZSBzdGF0aXN0aWNzICovXG5leHBvcnQgaW50ZXJmYWNlIEFTVENhY2hlU3RhdHMge1xuICBoaXRzOiBudW1iZXI7XG4gIG1pc3NlczogbnVtYmVyO1xuICBldmljdGlvbnM6IG51bWJlcjtcbiAgZW50cmllczogbnVtYmVyO1xuICBoaXRSYXRlOiBudW1iZXI7XG59XG5cbi8qKiBQbGFuIGNhY2hlIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbkNhY2hlU3RhdHMge1xuICBzaXplOiBudW1iZXI7XG4gIGNhcGFjaXR5OiBudW1iZXI7XG4gIGhpdHM6IG51bWJlcjtcbiAgbWlzc2VzOiBudW1iZXI7XG4gIGhpdFJhdGU6IG51bWJlcjtcbn1cblxuLyoqIENvbWJpbmVkIGNhY2hlIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVTdGF0cyB7XG4gIGFzdFN0YXRzPzogQVNUQ2FjaGVTdGF0cztcbiAgcGxhblN0YXRzPzogUGxhbkNhY2hlU3RhdHM7XG59XG5cbi8qKiBEYXRhYmFzZSBzdGF0aXN0aWNzICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpc3RpY3Mge1xuICBub2RlQ291bnQ6IG51bWJlcjtcbiAgZWRnZUNvdW50OiBudW1iZXI7XG4gIGxhYmVsQ291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBlZGdlTGFiZWxDb3VudHM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKiBDUFUgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDcHVNZXRyaWNzIHtcbiAgcHJvY2Vzc1BlcmNlbnQ6IG51bWJlcjtcbiAgc3lzdGVtUGVyY2VudDogbnVtYmVyO1xuICBudW1Db3JlczogbnVtYmVyO1xufVxuXG4vKiogTWVtb3J5IG1ldHJpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5TWV0cmljcyB7XG4gIHByb2Nlc3NSc3M6IG51bWJlcjtcbiAgaGVhcEFsbG9jOiBudW1iZXI7XG4gIGhlYXBTeXM6IG51bWJlcjtcbiAgc3RhY2tJblVzZTogbnVtYmVyO1xuICBzeXN0ZW1Ub3RhbDogbnVtYmVyO1xuICBzeXN0ZW1BdmFpbGFibGU6IG51bWJlcjtcbiAgc3lzdGVtVXNlZDogbnVtYmVyO1xuICBzeXN0ZW1Vc2VkUGVyY2VudDogbnVtYmVyO1xufVxuXG4vKiogRGlzayBJL08gbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXNrSU9NZXRyaWNzIHtcbiAgcmVhZEJ5dGVzOiBudW1iZXI7XG4gIHdyaXRlQnl0ZXM6IG51bWJlcjtcbiAgcmVhZENvdW50OiBudW1iZXI7XG4gIHdyaXRlQ291bnQ6IG51bWJlcjtcbn1cblxuLyoqIFN0b3JhZ2UgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTWV0cmljcyB7XG4gIGRiUGF0aDogc3RyaW5nO1xuICBkYlNpemVCeXRlczogbnVtYmVyO1xuICB2b2x1bWVUb3RhbDogbnVtYmVyO1xuICB2b2x1bWVGcmVlOiBudW1iZXI7XG4gIHZvbHVtZVVzZWQ6IG51bWJlcjtcbn1cblxuLyoqIE5ldHdvcmsgbWV0cmljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrTWV0cmljcyB7XG4gIGJ5dGVzU2VudDogbnVtYmVyO1xuICBieXRlc1JlY3Y6IG51bWJlcjtcbiAgcGFja2V0c1NlbnQ6IG51bWJlcjtcbiAgcGFja2V0c1JlY3Y6IG51bWJlcjtcbn1cblxuLyoqIFN5c3RlbS1sZXZlbCBtZXRyaWNzICovXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbU1ldHJpY3Mge1xuICBjcHU/OiBDcHVNZXRyaWNzO1xuICBtZW1vcnk/OiBNZW1vcnlNZXRyaWNzO1xuICBkaXNrSU8/OiBEaXNrSU9NZXRyaWNzO1xuICBzdG9yYWdlPzogU3RvcmFnZU1ldHJpY3M7XG4gIG5ldHdvcms/OiBOZXR3b3JrTWV0cmljcztcbn1cblxuLyoqIFJlc3VsdCBvZiBhIGNvbXBhY3Qgb3BlcmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhY3RSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgYSB3YWl0LWZvci1jb21wdXRlLXRvcG9sb2d5IG9wZXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlVG9wb2xvZ3lSZXN1bHQge1xuICByZWFkeTogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ultipa-graph/ultipa-driver",
3
- "version": "6.0.14",
3
+ "version": "6.0.16",
4
4
  "description": "NodeJS SDK for Ultipa GQL",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",