@pipeline-builder/pipeline-core 3.4.66 → 3.4.68

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.
@@ -74,7 +74,7 @@ export interface AuthConfig {
74
74
  readonly expiresIn: number;
75
75
  /** Signing algorithm, e.g. `'HS256'` (env: `JWT_ALGORITHM`). */
76
76
  readonly algorithm: Algorithm;
77
- /** bcrypt salt rounds for password hashing (env: `JWT_SALT_ROUNDS`). */
77
+ /** bcrypt salt rounds for password hashing (env: `BCRYPT_SALT_ROUNDS`). */
78
78
  readonly saltRounds: number;
79
79
  };
80
80
  readonly refreshToken: {
@@ -2,4 +2,4 @@
2
2
  // Copyright 2026 Pipeline Builder Contributors
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBBcmNoaXRlY3R1cmUsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcblxuLyoqXG4gKiBUeXBlLXNhZmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBzZXJ2ZXI6IFNlcnZlckNvbmZpZztcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENvbmZpZztcbiAgcmVhZG9ubHkgZGF0YWJhc2U6IERhdGFiYXNlQ29uZmlnO1xuICByZWFkb25seSByZWdpc3RyeTogUmVnaXN0cnlDb25maWc7XG4gIHJlYWRvbmx5IHJlZGlzOiBSZWRpc0NvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgSldUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWRpc0NvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmFja29mZkRlbGF5TXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgd29ya2VyVGltZW91dE1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRlbXBEaXJNYXhBZ2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhBdHRlbXB0czogbnVtYmVyO1xuICByZWFkb25seSBkbHFCYWNrb2ZmQmFzZU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRscU1heFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZENvbmZpZyB7XG4gIC8qKiBSb290IGRpcmVjdG9yeSBmb3IgYnVpbGQgdGVtcCBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgdGVtcFJvb3Q6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHB1c2hUaW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxka2l0ZCBzb2NrZXQgdGhlIHBsdWdpbidzIGBidWlsZGN0bGAgY29ubmVjdHMgdG8uIEluIGs4c1xuICAgKiBhbmQgY29tcG9zZSB0aGlzIGlzIGEgc2hhcmVkIGVtcHR5RGlyL3RtcGZzIHZvbHVtZSBtb3VudGVkIGZyb20gdGhlXG4gICAqIGJ1aWxka2l0ZCBzaWRlY2FyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRraXRBZGRyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvZ0xldmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvZ0Zvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0cmFjaW5nOiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDb25maWcge1xuICByZWFkb25seSBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogV2hlbiBmYWxzZSwgdGhlIHNjaGVkdWxlciBza2lwcyBzY2Fucy9zY2hlZHVsZXMgZm9yIHRoZSBzeXN0ZW0gb3JnLiBEZWZhdWx0OiBmYWxzZS4gKi9cbiAgcmVhZG9ubHkgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0NvbmZpZyB7XG4gIHJlYWRvbmx5IGxhbWJkYToge1xuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWU7XG4gICAgcmVhZG9ubHkgdGltZW91dDogRHVyYXRpb247XG4gICAgcmVhZG9ubHkgbWVtb3J5U2l6ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSByZXRlbnRpb246IFJldGVudGlvbkRheXM7XG4gICAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeTtcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgcmVhZG9ubHkgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbiAgLyoqIEluY2x1ZGUgbGVnYWN5IGBYLVJhdGVMaW1pdC0qYCBoZWFkZXJzLiAqL1xuICByZWFkb25seSBsZWdhY3lIZWFkZXJzOiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBzdGFuZGFyZCBgUmF0ZUxpbWl0LSpgIGhlYWRlcnMgKFJGQyA2NTg1KS4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRIZWFkZXJzOiBib29sZWFuO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nQ29uZmlnIHtcbiAgcmVhZG9ubHkgcGxhbnM6IHJlYWRvbmx5IEJpbGxpbmdQbGFuQ29uZmlnW107XG59XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBBcmNoaXRlY3R1cmUsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcblxuLyoqXG4gKiBUeXBlLXNhZmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBzZXJ2ZXI6IFNlcnZlckNvbmZpZztcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENvbmZpZztcbiAgcmVhZG9ubHkgZGF0YWJhc2U6IERhdGFiYXNlQ29uZmlnO1xuICByZWFkb25seSByZWdpc3RyeTogUmVnaXN0cnlDb25maWc7XG4gIHJlYWRvbmx5IHJlZGlzOiBSZWRpc0NvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgQkNSWVBUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICAvKipcbiAgICogSG9zdC9wb3J0IGFuIE9VVC1PRi1DTFVTVEVSIGNsaWVudCAobm90YWJseSBBV1MgQ29kZUJ1aWxkKSB1c2VzIHRvIHB1bGxcbiAgICogcGx1Z2luIGltYWdlcywgd2hlbiBpdCBkaWZmZXJzIGZyb20gdGhlIGluLWNsdXN0ZXIgYGhvc3RgL2Bwb3J0YC4gVGhlXG4gICAqIGluLWNsdXN0ZXIgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUCBpc24ndCByZXNvbHZhYmxlIGZyb20gdGhlIFZQQywgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENvZGVCdWlsZCBpbWFnZSBVUkkgbXVzdCBwb2ludCBhdCB0aGUgcHVibGljIGdhdGV3YXkgaW5zdGVhZC5cbiAgICogRW52OiBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYCAvIGBJTUFHRV9SRUdJU1RSWV9QVUxMX1BPUlRgLiBPcHRpb25hbDtcbiAgICogY29uc3VtZXJzIGZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIHdoZW4gdW5zZXQgKHNpbmdsZS1ob3N0IC9cbiAgICogaW4tY2x1c3Rlci1vbmx5IGRlcGxveXMpLiBgbG9hZFJlZ2lzdHJ5Q29uZmlnYCBhbHdheXMgcG9wdWxhdGVzIHRoZW0uXG4gICAqL1xuICByZWFkb25seSBwdWxsSG9zdD86IHN0cmluZztcbiAgcmVhZG9ubHkgcHVsbFBvcnQ/OiBudW1iZXI7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqXG4gICAqIEJ1aWxkS2l0IHRhbGtzIHRvIHRoZSByZWdpc3RyeSBvdmVyIHBsYWluIEhUVFAgd2hlbiB0cnVlOyBIVFRQUyB3aXRoIHRoZVxuICAgKiBzeXN0ZW0gQ0EgYnVuZGxlIG90aGVyd2lzZS4gRW52OiBgSU1BR0VfUkVHSVNUUllfSFRUUGAgKGRlZmF1bHRzIHRydWUg4oCUXG4gICAqIHRoZSBpbi1jbHVzdGVyIHJlZ2lzdHJ5IGhhcyBubyBUTFMpLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWRpc0NvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmFja29mZkRlbGF5TXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgd29ya2VyVGltZW91dE1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRlbXBEaXJNYXhBZ2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhBdHRlbXB0czogbnVtYmVyO1xuICByZWFkb25seSBkbHFCYWNrb2ZmQmFzZU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRscU1heFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZENvbmZpZyB7XG4gIC8qKiBSb290IGRpcmVjdG9yeSBmb3IgYnVpbGQgdGVtcCBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgdGVtcFJvb3Q6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHB1c2hUaW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJ1aWxka2l0ZCBzb2NrZXQgdGhlIHBsdWdpbidzIGBidWlsZGN0bGAgY29ubmVjdHMgdG8uIEluIGs4c1xuICAgKiBhbmQgY29tcG9zZSB0aGlzIGlzIGEgc2hhcmVkIGVtcHR5RGlyL3RtcGZzIHZvbHVtZSBtb3VudGVkIGZyb20gdGhlXG4gICAqIGJ1aWxka2l0ZCBzaWRlY2FyLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRraXRBZGRyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvZ0xldmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvZ0Zvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0cmFjaW5nOiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDb25maWcge1xuICByZWFkb25seSBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogV2hlbiBmYWxzZSwgdGhlIHNjaGVkdWxlciBza2lwcyBzY2Fucy9zY2hlZHVsZXMgZm9yIHRoZSBzeXN0ZW0gb3JnLiBEZWZhdWx0OiBmYWxzZS4gKi9cbiAgcmVhZG9ubHkgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0NvbmZpZyB7XG4gIHJlYWRvbmx5IGxhbWJkYToge1xuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWU7XG4gICAgcmVhZG9ubHkgdGltZW91dDogRHVyYXRpb247XG4gICAgcmVhZG9ubHkgbWVtb3J5U2l6ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSByZXRlbnRpb246IFJldGVudGlvbkRheXM7XG4gICAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeTtcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgcmVhZG9ubHkgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlO1xuICAgIC8qKlxuICAgICAqIEltYWdlIHVzZWQgZm9yIENvZGVCdWlsZCBzdGVwcyB0aGF0IGRvbid0IGhhdmUgYSBwbHVnaW4tYmFrZWQgaW1hZ2VcbiAgICAgKiAoY29sZC1zdGFydCBzeW50aCBib290c3RyYXAsIFNoZWxsU3RlcHMgd2l0aCBubyByZWdpc3RyeSwgYW5kXG4gICAgICogYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMpLiBlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWAuIERlZmF1bHRcbiAgICAgKiBgcGlwZWxpbmUtYm9vdHN0cmFwOjEuMGAg4oCUIHRoZSBsb2NhbCB0YWcgYnVpbHQgYnlcbiAgICAgKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAsIHdpdGggYHBpcGVsaW5lLW1hbmFnZXJgXG4gICAgICogYmFrZWQgaW4uXG4gICAgICpcbiAgICAgKiBDb250cmFjdDogdGhlIGltYWdlIE1VU1QgaGF2ZSBgcGlwZWxpbmUtbWFuYWdlcmAgb24gUEFUSC4gVGhlXG4gICAgICogYm9vdHN0cmFwIHN5bnRoIHBhdGggbm8gbG9uZ2VyIHNlbGYtaGVhbHMgdmlhIGBucG0gaW5zdGFsbCAtZ2A7XG4gICAgICogcG9pbnRpbmcgdGhpcyBhdCBhbiBpbWFnZSB3aXRob3V0IHRoZSB0b29sIGdldHMgZXhpdCAxMjcgb24gdGhlXG4gICAgICogZmlyc3QgY29sZC1zdGFydCBidWlsZC5cbiAgICAgKlxuICAgICAqIFJlc29sdXRpb246XG4gICAgICogLSBCYXJlIHRhZyAobm8gYC9gKSDihpIgYXV0by1wcmVmaXhlZCB0b1xuICAgICAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAgICAgKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggKHNhbWUgZmxvdyBhc1xuICAgICAqICAgcGx1Z2luIGltYWdlcykuXG4gICAgICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApIOKGkiB1c2VkIGFzLWlzLCBub1xuICAgICAqICAgYXV0aCB3aXJlZCAob3BlcmF0b3Igb3ducyBtYWtpbmcgaXQgcHVsbGFibGUpLlxuICAgICAqIC0gV2hlbiB0aGUgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCBvciBwZXItb3JnIGF1dGggaXNuJ3RcbiAgICAgKiAgIGF2YWlsYWJsZSBhdCB0aGUgY2FsbCBzaXRlLCBmYWxscyBiYWNrIHRvXG4gICAgICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIHdpdGggYSB3YXJuaW5nIOKAlCBjb2xkLXN0YXJ0IHN5bnRoXG4gICAgICogICB3aWxsIHRoZW4gZmFpbCBvbiBgcGlwZWxpbmUtbWFuYWdlcjogbm90IGZvdW5kYCwgc3VyZmFjaW5nIHRoZVxuICAgICAqICAgbWlzY29uZmlndXJhdGlvbiBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSBzd2FwcGluZyBpbWFnZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVmYXVsdEltYWdlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKiBFeHByZXNzIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmF0ZUxpbWl0Q29uZmlnIHtcbiAgLyoqIE1heGltdW0gcmVxdWVzdHMgcGVyIHdpbmRvdyAoZW52OiBgTElNSVRFUl9NQVhgKS4gKi9cbiAgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gIC8qKiBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtaWxsaXNlY29uZHMgKGVudjogYExJTUlURVJfV0lORE9XTVNgKS4gKi9cbiAgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcjtcbiAgLyoqIEluY2x1ZGUgbGVnYWN5IGBYLVJhdGVMaW1pdC0qYCBoZWFkZXJzLiAqL1xuICByZWFkb25seSBsZWdhY3lIZWFkZXJzOiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBzdGFuZGFyZCBgUmF0ZUxpbWl0LSpgIGhlYWRlcnMgKFJGQyA2NTg1KS4gKi9cbiAgcmVhZG9ubHkgc3RhbmRhcmRIZWFkZXJzOiBib29sZWFuO1xufVxuXG4vKiogUHJpY2UgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgYmlsbGluZyBwbGFuIChpbiBjZW50cykuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuUHJpY2VzIHtcbiAgcmVhZG9ubHkgbW9udGhseTogbnVtYmVyO1xuICByZWFkb25seSBhbm51YWw6IG51bWJlcjtcbn1cblxuLyoqIEZ1bGwgYmlsbGluZyBwbGFuIGRlZmluaXRpb24gdXNlZCBmb3Igc2VlZGluZyBhbmQgcnVudGltZSBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhbkNvbmZpZyB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgdGllcjogUXVvdGFUaWVyO1xuICByZWFkb25seSBwcmljZXM6IEJpbGxpbmdQbGFuUHJpY2VzO1xuICByZWFkb25seSBmZWF0dXJlczogcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGlzQWN0aXZlOiBib29sZWFuO1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNvcnRPcmRlcjogbnVtYmVyO1xufVxuXG4vKiogQmlsbGluZyBwbGFucyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nQ29uZmlnIHtcbiAgcmVhZG9ubHkgcGxhbnM6IHJlYWRvbmx5IEJpbGxpbmdQbGFuQ29uZmlnW107XG59XG4iXX0=
@@ -20,7 +20,7 @@ export declare function loadServerConfig(): ServerConfig;
20
20
  * - `REFRESH_TOKEN_SECRET` — **Required.** Secret key for signing refresh tokens
21
21
  * - `JWT_EXPIRES_IN` — JWT lifetime in seconds (default: `7200` = 2 hours)
22
22
  * - `JWT_ALGORITHM` — JWT signing algorithm (default: `'HS256'`)
23
- * - `JWT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
23
+ * - `BCRYPT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
24
24
  * - `REFRESH_TOKEN_EXPIRES_IN` — Refresh token lifetime in seconds (default: `2592000` = 30 days)
25
25
  *
26
26
  * @returns Authentication configuration with safe defaults (empty strings when env vars are unset).
@@ -66,7 +66,7 @@ function loadServerConfig() {
66
66
  * - `REFRESH_TOKEN_SECRET` — **Required.** Secret key for signing refresh tokens
67
67
  * - `JWT_EXPIRES_IN` — JWT lifetime in seconds (default: `7200` = 2 hours)
68
68
  * - `JWT_ALGORITHM` — JWT signing algorithm (default: `'HS256'`)
69
- * - `JWT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
69
+ * - `BCRYPT_SALT_ROUNDS` — bcrypt salt rounds for password hashing (default: `12`)
70
70
  * - `REFRESH_TOKEN_EXPIRES_IN` — Refresh token lifetime in seconds (default: `2592000` = 30 days)
71
71
  *
72
72
  * @returns Authentication configuration with safe defaults (empty strings when env vars are unset).
@@ -78,7 +78,7 @@ function loadAuthConfig() {
78
78
  secret: process.env.JWT_SECRET ?? '',
79
79
  expiresIn: parseInt(process.env.JWT_EXPIRES_IN || '7200', 10),
80
80
  algorithm: (process.env.JWT_ALGORITHM || 'HS256'),
81
- saltRounds: parseInt(process.env.JWT_SALT_ROUNDS || '12', 10),
81
+ saltRounds: parseInt(process.env.BCRYPT_SALT_ROUNDS || '12', 10),
82
82
  },
83
83
  refreshToken: {
84
84
  secret: process.env.REFRESH_TOKEN_SECRET || '',
@@ -177,4 +177,4 @@ function validateAuthConfig(config) {
177
177
  throw new Error(`Auth configuration validation failed:\n${errors.map(e => ` - ${e}`).join('\n')}`);
178
178
  }
179
179
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFxQnRDLDRDQXNDQztBQWdCRCx3Q0FhQztBQVdELGtEQU9DO0FBT0Qsb0RBNEJDO0FBZ0JELGdEQXNDQztBQWpNRCx5REFBMEQ7QUFFMUQsNkNBQTZDO0FBRzdDLE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVksRUFBQyxlQUFlLENBQUMsQ0FBQztBQUUxQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksMEJBQWEsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxRTtRQUNELFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN4RCxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSwwQkFBYSxDQUFDLG9CQUFvQjtRQUVoRixVQUFVLEVBQUU7WUFDVixP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QUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNuRixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBBbGdvcml0aG0gfSBmcm9tICdqc29ud2VidG9rZW4nO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4vYXBwLWNvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckNvbmZpZywgQXV0aENvbmZpZywgUmF0ZUxpbWl0Q29uZmlnIH0gZnJvbSAnLi9jb25maWctdHlwZXMnO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ3NlcnZlci1jb25maWcnKTtcblxuLyoqXG4gKiBMb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYFBPUlRgIOKAlCBIVFRQIGxpc3RlbiBwb3J0IChkZWZhdWx0OiBgMzAwMGApXG4gKiAtIGBDT1JTX09SSUdJTmAg4oCUIENvbW1hLXNlcGFyYXRlZCBhbGxvd2VkIG9yaWdpbnMgKGRlZmF1bHQ6IGBQTEFURk9STV9CQVNFX1VSTGApXG4gKiAtIGBDT1JTX0NSRURFTlRJQUxTYCDigJQgQWxsb3cgY3JlZGVudGlhbHM7IHNldCB0byBgJ2ZhbHNlJ2AgdG8gZGlzYWJsZSAoZGVmYXVsdDogYHRydWVgKVxuICogLSBgVFJVU1RfUFJPWFlgIOKAlCBFeHByZXNzIHRydXN0IHByb3h5IGhvcHMgKGRlZmF1bHQ6IGAxYClcbiAqIC0gYFBMQVRGT1JNX0JBU0VfVVJMYCDigJQgRnJvbnRlbmQgVVJMIHVzZWQgYXMgQ09SUyBmYWxsYmFjayAoZGVmYXVsdDogYCdodHRwczovL2xvY2FsaG9zdDo4NDQzJ2ApXG4gKlxuICogQHJldHVybnMgU2VydmVyIGNvbmZpZ3VyYXRpb24gd2l0aCBwb3J0LCBDT1JTLCB0cnVzdCBwcm94eSwgYW5kIHBsYXRmb3JtIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFNlcnZlckNvbmZpZygpOiBTZXJ2ZXJDb25maWcge1xuICByZXR1cm4ge1xuICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgY29yczoge1xuICAgICAgY3JlZGVudGlhbHM6IHByb2Nlc3MuZW52LkNPUlNfQ1JFREVOVElBTFMgIT09ICdmYWxzZScsXG4gICAgICBvcmlnaW46IHByb2Nlc3MuZW52LkNPUlNfT1JJR0lOXG4gICAgICAgID8gcHJvY2Vzcy5lbnYuQ09SU19PUklHSU4uc3BsaXQoJywnKS5tYXAobyA9PiBvLnRyaW0oKSlcbiAgICAgICAgOiBbcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgQ29yZUNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTF0sXG4gICAgfSxcbiAgICB0cnVzdFByb3h5OiBwYXJzZUludChwcm9jZXNzLmVudi5UUlVTVF9QUk9YWSB8fCAnMScsIDEwKSxcbiAgICBwbGF0Zm9ybVVybDogcHJvY2Vzcy5lbnYuUExBVEZPUk1fQkFTRV9VUkwgfHwgQ29yZUNvbnN0YW50cy5ERUZBVUxUX1BMQVRGT1JNX1VSTCxcblxuICAgIGh0dHBDbGllbnQ6IHtcbiAgICAgIHRpbWVvdXQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX1RJTUVPVVQgfHwgJzUwMDAnLCAxMCksXG4gICAgICBtYXhSZXRyaWVzOiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9NQVhfUkVUUklFUyB8fCAnMicsIDEwKSxcbiAgICAgIHJldHJ5RGVsYXlNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfUkVUUllfREVMQVlfTVMgfHwgJzIwMCcsIDEwKSxcbiAgICB9LFxuXG4gICAgc3NlOiB7XG4gICAgICBtYXhDbGllbnRzUGVyUmVxdWVzdDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX01BWF9DTElFTlRTX1BFUl9SRVFVRVNUIHx8ICcxMCcsIDEwKSxcbiAgICAgIGNsaWVudFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0NMSUVOVF9USU1FT1VUX01TIHx8ICcxODAwMDAwJywgMTApLFxuICAgICAgY2xlYW51cEludGVydmFsTXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlNTRV9DTEVBTlVQX0lOVEVSVkFMX01TIHx8ICczMDAwMDAnLCAxMCksXG4gICAgfSxcblxuICAgIHNlcnZpY2VzOiB7XG4gICAgICBwbHVnaW5Ib3N0OiBwcm9jZXNzLmVudi5QTFVHSU5fU0VSVklDRV9IT1NUIHx8ICdwbHVnaW4nLFxuICAgICAgcGx1Z2luUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIHBpcGVsaW5lSG9zdDogcHJvY2Vzcy5lbnYuUElQRUxJTkVfU0VSVklDRV9IT1NUIHx8ICdwaXBlbGluZScsXG4gICAgICBwaXBlbGluZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBJUEVMSU5FX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIG1lc3NhZ2VIb3N0OiBwcm9jZXNzLmVudi5NRVNTQUdFX1NFUlZJQ0VfSE9TVCB8fCAnbWVzc2FnZScsXG4gICAgICBtZXNzYWdlUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTUVTU0FHRV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBjb21wbGlhbmNlSG9zdDogcHJvY2Vzcy5lbnYuQ09NUExJQU5DRV9TRVJWSUNFX0hPU1QgfHwgJ2NvbXBsaWFuY2UnLFxuICAgICAgY29tcGxpYW5jZVBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkNPTVBMSUFOQ0VfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgYmlsbGluZ0hvc3Q6IHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9IT1NUIHx8ICdiaWxsaW5nJyxcbiAgICAgIGJpbGxpbmdQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGJpbGxpbmdUaW1lb3V0OiBwYXJzZUludChwcm9jZXNzLmVudi5CSUxMSU5HX1NFUlZJQ0VfVElNRU9VVCB8fCAnNTAwMCcsIDEwKSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBKV1RfU0VDUkVUYCDigJQgKipSZXF1aXJlZC4qKiBTZWNyZXQga2V5IGZvciBzaWduaW5nIEpXVHNcbiAqIC0gYFJFRlJFU0hfVE9LRU5fU0VDUkVUYCDigJQgKipSZXF1aXJlZC4qKiBTZWNyZXQga2V5IGZvciBzaWduaW5nIHJlZnJlc2ggdG9rZW5zXG4gKiAtIGBKV1RfRVhQSVJFU19JTmAg4oCUIEpXVCBsaWZldGltZSBpbiBzZWNvbmRzIChkZWZhdWx0OiBgNzIwMGAgPSAyIGhvdXJzKVxuICogLSBgSldUX0FMR09SSVRITWAg4oCUIEpXVCBzaWduaW5nIGFsZ29yaXRobSAoZGVmYXVsdDogYCdIUzI1NidgKVxuICogLSBgSldUX1NBTFRfUk9VTkRTYCDigJQgYmNyeXB0IHNhbHQgcm91bmRzIGZvciBwYXNzd29yZCBoYXNoaW5nIChkZWZhdWx0OiBgMTJgKVxuICogLSBgUkVGUkVTSF9UT0tFTl9FWFBJUkVTX0lOYCDigJQgUmVmcmVzaCB0b2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChkZWZhdWx0OiBgMjU5MjAwMGAgPSAzMCBkYXlzKVxuICpcbiAqIEByZXR1cm5zIEF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gd2l0aCBzYWZlIGRlZmF1bHRzIChlbXB0eSBzdHJpbmdzIHdoZW4gZW52IHZhcnMgYXJlIHVuc2V0KS5cbiAqIENhbGwge0BsaW5rIHZhbGlkYXRlQXV0aENvbmZpZ30gYXQgc2VydmVyIHN0YXJ0dXAgdG8gZW5mb3JjZSByZXF1aXJlZCBzZWNyZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEF1dGhDb25maWcoKTogQXV0aENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgand0OiB7XG4gICAgICBzZWNyZXQ6IHByb2Nlc3MuZW52LkpXVF9TRUNSRVQgPz8gJycsXG4gICAgICBleHBpcmVzSW46IHBhcnNlSW50KHByb2Nlc3MuZW52LkpXVF9FWFBJUkVTX0lOIHx8ICc3MjAwJywgMTApLFxuICAgICAgYWxnb3JpdGhtOiAocHJvY2Vzcy5lbnYuSldUX0FMR09SSVRITSB8fCAnSFMyNTYnKSBhcyBBbGdvcml0aG0sXG4gICAgICBzYWx0Um91bmRzOiBwYXJzZUludChwcm9jZXNzLmVudi5KV1RfU0FMVF9ST1VORFMgfHwgJzEyJywgMTApLFxuICAgIH0sXG4gICAgcmVmcmVzaFRva2VuOiB7XG4gICAgICBzZWNyZXQ6IHByb2Nlc3MuZW52LlJFRlJFU0hfVE9LRU5fU0VDUkVUIHx8ICcnLFxuICAgICAgZXhwaXJlc0luOiBwYXJzZUludChwcm9jZXNzLmVudi5SRUZSRVNIX1RPS0VOX0VYUElSRVNfSU4gfHwgJzI1OTIwMDAnLCAxMCksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIHJhdGUgbGltaXRpbmcgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBMSU1JVEVSX01BWGAg4oCUIE1heCByZXF1ZXN0cyBwZXIgd2luZG93IChkZWZhdWx0OiBgMTAwYClcbiAqIC0gYExJTUlURVJfV0lORE9XTVNgIOKAlCBSYXRlIGxpbWl0IHdpbmRvdyBpbiBtcyAoZGVmYXVsdDogYDkwMDAwMGAgPSAxNSBtaW51dGVzKVxuICpcbiAqIEByZXR1cm5zIFJhdGUgbGltaXQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJhdGVMaW1pdENvbmZpZygpOiBSYXRlTGltaXRDb25maWcge1xuICByZXR1cm4ge1xuICAgIG1heDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTElNSVRFUl9NQVggfHwgJzEwMCcsIDEwKSxcbiAgICB3aW5kb3dNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTElNSVRFUl9XSU5ET1dNUyB8fCAnOTAwMDAwJywgMTApLFxuICAgIGxlZ2FjeUhlYWRlcnM6IGZhbHNlLFxuICAgIHN0YW5kYXJkSGVhZGVyczogdHJ1ZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhbmQgbG9nIHdhcm5pbmdzIGZvciBpbnNlY3VyZSBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gU2VydmVyIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2VydmVyQ29uZmlnKGNvbmZpZzogU2VydmVyQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIENoZWNrIENPUlMgY29uZmlndXJhdGlvblxuICBjb25zdCBvcmlnaW4gPSBjb25maWcuY29ycy5vcmlnaW47XG4gIGNvbnN0IGlzV2lsZGNhcmQgPSBvcmlnaW4gPT09ICcqJyB8fCAoQXJyYXkuaXNBcnJheShvcmlnaW4pICYmIG9yaWdpbi5pbmNsdWRlcygnKicpKTtcbiAgaWYgKGlzV2lsZGNhcmQpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdDT1JTIG9yaWdpbiBzZXQgdG8gd2lsZGNhcmQgKCopIC0gY29uc2lkZXIgcmVzdHJpY3RpbmcgdG8gc3BlY2lmaWMgZG9tYWlucycpO1xuICB9XG4gIGlmIChpc1dpbGRjYXJkICYmIGNvbmZpZy5jb3JzLmNyZWRlbnRpYWxzKSB7XG4gICAgLy8gQnJvd3NlcnMgcmVqZWN0IHRoaXMgY29tYmluYXRpb24sIGJ1dCBpdCBpbmRpY2F0ZXMgYSBtaXNjb25maWd1cmF0aW9uXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1NFQ1VSSVRZIEVSUk9SOiBDT1JTX09SSUdJTj0qIHdpdGggQ09SU19DUkVERU5USUFMUz10cnVlIGlzIGFuIGludmFsaWQgYW5kIGluc2VjdXJlIGNvbmZpZ3VyYXRpb24uICcgK1xuICAgICAgJ1NldCBDT1JTX09SSUdJTiB0byBzcGVjaWZpYyBkb21haW5zIG9yIGRpc2FibGUgQ09SU19DUkVERU5USUFMUy4nLFxuICAgICk7XG4gIH1cblxuICAvLyBDaGVjayBwbGF0Zm9ybSBVUkwgdXNlcyBIVFRQU1xuICBpZiAoY29uZmlnLnBsYXRmb3JtVXJsLnN0YXJ0c1dpdGgoJ2h0dHA6Ly8nKSAmJlxuICAgICFjb25maWcucGxhdGZvcm1VcmwuaW5jbHVkZXMoJ2xvY2FsaG9zdCcpKSB7XG4gICAgd2FybmluZ3MucHVzaCgnUGxhdGZvcm0gVVJMIHVzZXMgSFRUUCBpbnN0ZWFkIG9mIEhUVFBTIC0gaW5zZWN1cmUgZm9yIHByb2R1Y3Rpb24nKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignU2VydmVyIGNvbmZpZ3VyYXRpb24gd2FybmluZ3M6Jyk7XG4gICAgd2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IGxvZy53YXJuKGAgIC0gJHt3YXJuaW5nfWApKTtcbiAgfVxufVxuXG5jb25zdCBJTlNFQ1VSRV9QQVRURVJOUyA9IFsnc2VjcmV0JywgJ3Bhc3N3b3JkJywgJ2NoYW5nZW1lJywgJ2RlZmF1bHQnLCAnMTIzNDU2JywgJ2FkbWluJ107XG5cbmZ1bmN0aW9uIGlzSW5zZWN1cmVTZWNyZXQoc2VjcmV0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbG93ZXIgPSBzZWNyZXQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIElOU0VDVVJFX1BBVFRFUk5TLnNvbWUocyA9PiBsb3dlciA9PT0gcyB8fCAobG93ZXIubGVuZ3RoIDwgNjQgJiYgbG93ZXIuaW5jbHVkZXMocykpKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIChKV1Qgc2VjcmV0cywgYWxnb3JpdGhtcywgZXhwaXJhdGlvbikuXG4gKiBDYWxsIHRoaXMgYXQgc2VydmVyIHN0YXJ0dXAsIG5vdCBkdXJpbmcgQ0RLIHN5bnRoZXNpcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gQXV0aCBjb25maWd1cmF0aW9uIHRvIHZhbGlkYXRlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2VjcmV0cyBhcmUgaW5zZWN1cmUsIHRvbyBzaG9ydCAoPDMyIGNoYXJzKSwgb3IgdXNlIGRpc2FsbG93ZWQgYWxnb3JpdGhtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBdXRoQ29uZmlnKGNvbmZpZzogQXV0aENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIFZhbGlkYXRlIGJvdGggc2VjcmV0cyB3aXRoIHRoZSBzYW1lIGNoZWNrc1xuICBmb3IgKGNvbnN0IFtsYWJlbCwgc2VjcmV0XSBvZiBbWydKV1QnLCBjb25maWcuand0LnNlY3JldF0sIFsnUmVmcmVzaCB0b2tlbicsIGNvbmZpZy5yZWZyZXNoVG9rZW4uc2VjcmV0XV0gYXMgY29uc3QpIHtcbiAgICBpZiAoc2VjcmV0Lmxlbmd0aCA8IDMyKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtsYWJlbH0gc2VjcmV0IHNob3VsZCBiZSBhdCBsZWFzdCAzMiBjaGFyYWN0ZXJzIGxvbmdgKTtcbiAgICB9XG4gICAgaWYgKGlzSW5zZWN1cmVTZWNyZXQoc2VjcmV0KSkge1xuICAgICAgZXJyb3JzLnB1c2goYCR7bGFiZWx9IHNlY3JldCBhcHBlYXJzIHRvIGJlIGluc2VjdXJlIG9yIGRlZmF1bHQgdmFsdWVgKTtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBKV1QgZXhwaXJhdGlvbiB0aW1lc1xuICBpZiAoY29uZmlnLmp3dC5leHBpcmVzSW4gPiA4NjQwMCkge1xuICAgIGVycm9ycy5wdXNoKCdKV1QgZXhwaXJhdGlvbiBtdXN0IG5vdCBleGNlZWQgMjQgaG91cnMgKDg2NDAwIHNlY29uZHMpJyk7XG4gIH0gZWxzZSBpZiAoY29uZmlnLmp3dC5leHBpcmVzSW4gPiA3MjAwKSB7XG4gICAgd2FybmluZ3MucHVzaCgnSldUIGV4cGlyYXRpb24gdGltZSBpcyBncmVhdGVyIHRoYW4gMiBob3VycyAtIHNob3J0ZXIgZXhwaXJhdGlvbiByZWNvbW1lbmRlZCcpO1xuICB9XG5cbiAgLy8gQ2hlY2sgYWxnb3JpdGhtXG4gIGlmICghQ29yZUNvbnN0YW50cy5BTExPV0VEX0pXVF9BTEdPUklUSE1TLmluY2x1ZGVzKGNvbmZpZy5qd3QuYWxnb3JpdGhtKSkge1xuICAgIGVycm9ycy5wdXNoKGBKV1QgYWxnb3JpdGhtICR7Y29uZmlnLmp3dC5hbGdvcml0aG19IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCBsaXN0YCk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHdhcm5pbmdzXG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oJ0F1dGggY29uZmlndXJhdGlvbiB3YXJuaW5nczonKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4gbG9nLndhcm4oYCAgLSAke3dhcm5pbmd9YCkpO1xuICB9XG5cbiAgLy8gVGhyb3cgZXJyb3JzXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBBdXRoIGNvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBmYWlsZWQ6XFxuJHtlcnJvcnMubWFwKGUgPT4gYCAgLSAke2V9YCkuam9pbignXFxuJyl9YCxcbiAgICApO1xuICB9XG59XG4iXX0=
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvc2VydmVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFxQnRDLDRDQXNDQztBQWdCRCx3Q0FhQztBQVdELGtEQU9DO0FBT0Qsb0RBNEJDO0FBZ0JELGdEQXNDQztBQWpNRCx5REFBMEQ7QUFFMUQsNkNBQTZDO0FBRzdDLE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVksRUFBQyxlQUFlLENBQUMsQ0FBQztBQUUxQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE9BQU87WUFDckQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztnQkFDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksMEJBQWEsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxRTtRQUNELFVBQVUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUN4RCxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSwwQkFBYSxDQUFDLG9CQUFvQjtRQUVoRixVQUFVLEVBQUU7WUFDVixP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RUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25GLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IEFsZ29yaXRobSB9IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi9hcHAtY29uZmlnJztcbmltcG9ydCB0eXBlIHsgU2VydmVyQ29uZmlnLCBBdXRoQ29uZmlnLCBSYXRlTGltaXRDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcyc7XG5cbmNvbnN0IGxvZyA9IGNyZWF0ZUxvZ2dlcignc2VydmVyLWNvbmZpZycpO1xuXG4vKipcbiAqIExvYWQgc2VydmVyIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgUE9SVGAg4oCUIEhUVFAgbGlzdGVuIHBvcnQgKGRlZmF1bHQ6IGAzMDAwYClcbiAqIC0gYENPUlNfT1JJR0lOYCDigJQgQ29tbWEtc2VwYXJhdGVkIGFsbG93ZWQgb3JpZ2lucyAoZGVmYXVsdDogYFBMQVRGT1JNX0JBU0VfVVJMYClcbiAqIC0gYENPUlNfQ1JFREVOVElBTFNgIOKAlCBBbGxvdyBjcmVkZW50aWFsczsgc2V0IHRvIGAnZmFsc2UnYCB0byBkaXNhYmxlIChkZWZhdWx0OiBgdHJ1ZWApXG4gKiAtIGBUUlVTVF9QUk9YWWAg4oCUIEV4cHJlc3MgdHJ1c3QgcHJveHkgaG9wcyAoZGVmYXVsdDogYDFgKVxuICogLSBgUExBVEZPUk1fQkFTRV9VUkxgIOKAlCBGcm9udGVuZCBVUkwgdXNlZCBhcyBDT1JTIGZhbGxiYWNrIChkZWZhdWx0OiBgJ2h0dHBzOi8vbG9jYWxob3N0Ojg0NDMnYClcbiAqXG4gKiBAcmV0dXJucyBTZXJ2ZXIgY29uZmlndXJhdGlvbiB3aXRoIHBvcnQsIENPUlMsIHRydXN0IHByb3h5LCBhbmQgcGxhdGZvcm0gVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2VydmVyQ29uZmlnKCk6IFNlcnZlckNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgcG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICBjb3JzOiB7XG4gICAgICBjcmVkZW50aWFsczogcHJvY2Vzcy5lbnYuQ09SU19DUkVERU5USUFMUyAhPT0gJ2ZhbHNlJyxcbiAgICAgIG9yaWdpbjogcHJvY2Vzcy5lbnYuQ09SU19PUklHSU5cbiAgICAgICAgPyBwcm9jZXNzLmVudi5DT1JTX09SSUdJTi5zcGxpdCgnLCcpLm1hcChvID0+IG8udHJpbSgpKVxuICAgICAgICA6IFtwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCBDb3JlQ29uc3RhbnRzLkRFRkFVTFRfUExBVEZPUk1fVVJMXSxcbiAgICB9LFxuICAgIHRydXN0UHJveHk6IHBhcnNlSW50KHByb2Nlc3MuZW52LlRSVVNUX1BST1hZIHx8ICcxJywgMTApLFxuICAgIHBsYXRmb3JtVXJsOiBwcm9jZXNzLmVudi5QTEFURk9STV9CQVNFX1VSTCB8fCBDb3JlQ29uc3RhbnRzLkRFRkFVTFRfUExBVEZPUk1fVVJMLFxuXG4gICAgaHR0cENsaWVudDoge1xuICAgICAgdGltZW91dDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSFRUUF9DTElFTlRfVElNRU9VVCB8fCAnNTAwMCcsIDEwKSxcbiAgICAgIG1heFJldHJpZXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkhUVFBfQ0xJRU5UX01BWF9SRVRSSUVTIHx8ICcyJywgMTApLFxuICAgICAgcmV0cnlEZWxheU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5IVFRQX0NMSUVOVF9SRVRSWV9ERUxBWV9NUyB8fCAnMjAwJywgMTApLFxuICAgIH0sXG5cbiAgICBzc2U6IHtcbiAgICAgIG1heENsaWVudHNQZXJSZXF1ZXN0OiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfTUFYX0NMSUVOVFNfUEVSX1JFUVVFU1QgfHwgJzEwJywgMTApLFxuICAgICAgY2xpZW50VGltZW91dE1zOiBwYXJzZUludChwcm9jZXNzLmVudi5TU0VfQ0xJRU5UX1RJTUVPVVRfTVMgfHwgJzE4MDAwMDAnLCAxMCksXG4gICAgICBjbGVhbnVwSW50ZXJ2YWxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU1NFX0NMRUFOVVBfSU5URVJWQUxfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICB9LFxuXG4gICAgc2VydmljZXM6IHtcbiAgICAgIHBsdWdpbkhvc3Q6IHByb2Nlc3MuZW52LlBMVUdJTl9TRVJWSUNFX0hPU1QgfHwgJ3BsdWdpbicsXG4gICAgICBwbHVnaW5Qb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgcGlwZWxpbmVIb3N0OiBwcm9jZXNzLmVudi5QSVBFTElORV9TRVJWSUNFX0hPU1QgfHwgJ3BpcGVsaW5lJyxcbiAgICAgIHBpcGVsaW5lUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUElQRUxJTkVfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgbWVzc2FnZUhvc3Q6IHByb2Nlc3MuZW52Lk1FU1NBR0VfU0VSVklDRV9IT1NUIHx8ICdtZXNzYWdlJyxcbiAgICAgIG1lc3NhZ2VQb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5NRVNTQUdFX1NFUlZJQ0VfUE9SVCB8fCAnMzAwMCcsIDEwKSxcbiAgICAgIGNvbXBsaWFuY2VIb3N0OiBwcm9jZXNzLmVudi5DT01QTElBTkNFX1NFUlZJQ0VfSE9TVCB8fCAnY29tcGxpYW5jZScsXG4gICAgICBjb21wbGlhbmNlUG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuQ09NUExJQU5DRV9TRVJWSUNFX1BPUlQgfHwgJzMwMDAnLCAxMCksXG4gICAgICBiaWxsaW5nSG9zdDogcHJvY2Vzcy5lbnYuQklMTElOR19TRVJWSUNFX0hPU1QgfHwgJ2JpbGxpbmcnLFxuICAgICAgYmlsbGluZ1BvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9QT1JUIHx8ICczMDAwJywgMTApLFxuICAgICAgYmlsbGluZ1RpbWVvdXQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJJTExJTkdfU0VSVklDRV9USU1FT1VUIHx8ICc1MDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYEpXVF9TRUNSRVRgIOKAlCAqKlJlcXVpcmVkLioqIFNlY3JldCBrZXkgZm9yIHNpZ25pbmcgSldUc1xuICogLSBgUkVGUkVTSF9UT0tFTl9TRUNSRVRgIOKAlCAqKlJlcXVpcmVkLioqIFNlY3JldCBrZXkgZm9yIHNpZ25pbmcgcmVmcmVzaCB0b2tlbnNcbiAqIC0gYEpXVF9FWFBJUkVTX0lOYCDigJQgSldUIGxpZmV0aW1lIGluIHNlY29uZHMgKGRlZmF1bHQ6IGA3MjAwYCA9IDIgaG91cnMpXG4gKiAtIGBKV1RfQUxHT1JJVEhNYCDigJQgSldUIHNpZ25pbmcgYWxnb3JpdGhtIChkZWZhdWx0OiBgJ0hTMjU2J2ApXG4gKiAtIGBCQ1JZUFRfU0FMVF9ST1VORFNgIOKAlCBiY3J5cHQgc2FsdCByb3VuZHMgZm9yIHBhc3N3b3JkIGhhc2hpbmcgKGRlZmF1bHQ6IGAxMmApXG4gKiAtIGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gIOKAlCBSZWZyZXNoIHRva2VuIGxpZmV0aW1lIGluIHNlY29uZHMgKGRlZmF1bHQ6IGAyNTkyMDAwYCA9IDMwIGRheXMpXG4gKlxuICogQHJldHVybnMgQXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiB3aXRoIHNhZmUgZGVmYXVsdHMgKGVtcHR5IHN0cmluZ3Mgd2hlbiBlbnYgdmFycyBhcmUgdW5zZXQpLlxuICogQ2FsbCB7QGxpbmsgdmFsaWRhdGVBdXRoQ29uZmlnfSBhdCBzZXJ2ZXIgc3RhcnR1cCB0byBlbmZvcmNlIHJlcXVpcmVkIHNlY3JldHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXV0aENvbmZpZygpOiBBdXRoQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBqd3Q6IHtcbiAgICAgIHNlY3JldDogcHJvY2Vzcy5lbnYuSldUX1NFQ1JFVCA/PyAnJyxcbiAgICAgIGV4cGlyZXNJbjogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSldUX0VYUElSRVNfSU4gfHwgJzcyMDAnLCAxMCksXG4gICAgICBhbGdvcml0aG06IChwcm9jZXNzLmVudi5KV1RfQUxHT1JJVEhNIHx8ICdIUzI1NicpIGFzIEFsZ29yaXRobSxcbiAgICAgIHNhbHRSb3VuZHM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkJDUllQVF9TQUxUX1JPVU5EUyB8fCAnMTInLCAxMCksXG4gICAgfSxcbiAgICByZWZyZXNoVG9rZW46IHtcbiAgICAgIHNlY3JldDogcHJvY2Vzcy5lbnYuUkVGUkVTSF9UT0tFTl9TRUNSRVQgfHwgJycsXG4gICAgICBleHBpcmVzSW46IHBhcnNlSW50KHByb2Nlc3MuZW52LlJFRlJFU0hfVE9LRU5fRVhQSVJFU19JTiB8fCAnMjU5MjAwMCcsIDEwKSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgcmF0ZSBsaW1pdGluZyBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYExJTUlURVJfTUFYYCDigJQgTWF4IHJlcXVlc3RzIHBlciB3aW5kb3cgKGRlZmF1bHQ6IGAxMDBgKVxuICogLSBgTElNSVRFUl9XSU5ET1dNU2Ag4oCUIFJhdGUgbGltaXQgd2luZG93IGluIG1zIChkZWZhdWx0OiBgOTAwMDAwYCA9IDE1IG1pbnV0ZXMpXG4gKlxuICogQHJldHVybnMgUmF0ZSBsaW1pdCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkUmF0ZUxpbWl0Q29uZmlnKCk6IFJhdGVMaW1pdENvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgbWF4OiBwYXJzZUludChwcm9jZXNzLmVudi5MSU1JVEVSX01BWCB8fCAnMTAwJywgMTApLFxuICAgIHdpbmRvd01zOiBwYXJzZUludChwcm9jZXNzLmVudi5MSU1JVEVSX1dJTkRPV01TIHx8ICc5MDAwMDAnLCAxMCksXG4gICAgbGVnYWN5SGVhZGVyczogZmFsc2UsXG4gICAgc3RhbmRhcmRIZWFkZXJzOiB0cnVlLFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNlcnZlciBjb25maWd1cmF0aW9uIGFuZCBsb2cgd2FybmluZ3MgZm9yIGluc2VjdXJlIHNldHRpbmdzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBTZXJ2ZXIgY29uZmlndXJhdGlvbiB0byB2YWxpZGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTZXJ2ZXJDb25maWcoY29uZmlnOiBTZXJ2ZXJDb25maWcpOiB2b2lkIHtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgQ09SUyBjb25maWd1cmF0aW9uXG4gIGNvbnN0IG9yaWdpbiA9IGNvbmZpZy5jb3JzLm9yaWdpbjtcbiAgY29uc3QgaXNXaWxkY2FyZCA9IG9yaWdpbiA9PT0gJyonIHx8IChBcnJheS5pc0FycmF5KG9yaWdpbikgJiYgb3JpZ2luLmluY2x1ZGVzKCcqJykpO1xuICBpZiAoaXNXaWxkY2FyZCkge1xuICAgIHdhcm5pbmdzLnB1c2goJ0NPUlMgb3JpZ2luIHNldCB0byB3aWxkY2FyZCAoKikgLSBjb25zaWRlciByZXN0cmljdGluZyB0byBzcGVjaWZpYyBkb21haW5zJyk7XG4gIH1cbiAgaWYgKGlzV2lsZGNhcmQgJiYgY29uZmlnLmNvcnMuY3JlZGVudGlhbHMpIHtcbiAgICAvLyBCcm93c2VycyByZWplY3QgdGhpcyBjb21iaW5hdGlvbiwgYnV0IGl0IGluZGljYXRlcyBhIG1pc2NvbmZpZ3VyYXRpb25cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnU0VDVVJJVFkgRVJST1I6IENPUlNfT1JJR0lOPSogd2l0aCBDT1JTX0NSRURFTlRJQUxTPXRydWUgaXMgYW4gaW52YWxpZCBhbmQgaW5zZWN1cmUgY29uZmlndXJhdGlvbi4gJyArXG4gICAgICAnU2V0IENPUlNfT1JJR0lOIHRvIHNwZWNpZmljIGRvbWFpbnMgb3IgZGlzYWJsZSBDT1JTX0NSRURFTlRJQUxTLicsXG4gICAgKTtcbiAgfVxuXG4gIC8vIENoZWNrIHBsYXRmb3JtIFVSTCB1c2VzIEhUVFBTXG4gIGlmIChjb25maWcucGxhdGZvcm1Vcmwuc3RhcnRzV2l0aCgnaHR0cDovLycpICYmXG4gICAgIWNvbmZpZy5wbGF0Zm9ybVVybC5pbmNsdWRlcygnbG9jYWxob3N0JykpIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdQbGF0Zm9ybSBVUkwgdXNlcyBIVFRQIGluc3RlYWQgb2YgSFRUUFMgLSBpbnNlY3VyZSBmb3IgcHJvZHVjdGlvbicpO1xuICB9XG5cbiAgLy8gRGlzcGxheSB3YXJuaW5nc1xuICBpZiAod2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgIGxvZy53YXJuKCdTZXJ2ZXIgY29uZmlndXJhdGlvbiB3YXJuaW5nczonKTtcbiAgICB3YXJuaW5ncy5mb3JFYWNoKHdhcm5pbmcgPT4gbG9nLndhcm4oYCAgLSAke3dhcm5pbmd9YCkpO1xuICB9XG59XG5cbmNvbnN0IElOU0VDVVJFX1BBVFRFUk5TID0gWydzZWNyZXQnLCAncGFzc3dvcmQnLCAnY2hhbmdlbWUnLCAnZGVmYXVsdCcsICcxMjM0NTYnLCAnYWRtaW4nXTtcblxuZnVuY3Rpb24gaXNJbnNlY3VyZVNlY3JldChzZWNyZXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBsb3dlciA9IHNlY3JldC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gSU5TRUNVUkVfUEFUVEVSTlMuc29tZShzID0+IGxvd2VyID09PSBzIHx8IChsb3dlci5sZW5ndGggPCA2NCAmJiBsb3dlci5pbmNsdWRlcyhzKSkpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gKEpXVCBzZWNyZXRzLCBhbGdvcml0aG1zLCBleHBpcmF0aW9uKS5cbiAqIENhbGwgdGhpcyBhdCBzZXJ2ZXIgc3RhcnR1cCwgbm90IGR1cmluZyBDREsgc3ludGhlc2lzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBBdXRoIGNvbmZpZ3VyYXRpb24gdG8gdmFsaWRhdGVcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzZWNyZXRzIGFyZSBpbnNlY3VyZSwgdG9vIHNob3J0ICg8MzIgY2hhcnMpLCBvciB1c2UgZGlzYWxsb3dlZCBhbGdvcml0aG1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUF1dGhDb25maWcoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gVmFsaWRhdGUgYm90aCBzZWNyZXRzIHdpdGggdGhlIHNhbWUgY2hlY2tzXG4gIGZvciAoY29uc3QgW2xhYmVsLCBzZWNyZXRdIG9mIFtbJ0pXVCcsIGNvbmZpZy5qd3Quc2VjcmV0XSwgWydSZWZyZXNoIHRva2VuJywgY29uZmlnLnJlZnJlc2hUb2tlbi5zZWNyZXRdXSBhcyBjb25zdCkge1xuICAgIGlmIChzZWNyZXQubGVuZ3RoIDwgMzIpIHtcbiAgICAgIGVycm9ycy5wdXNoKGAke2xhYmVsfSBzZWNyZXQgc2hvdWxkIGJlIGF0IGxlYXN0IDMyIGNoYXJhY3RlcnMgbG9uZ2ApO1xuICAgIH1cbiAgICBpZiAoaXNJbnNlY3VyZVNlY3JldChzZWNyZXQpKSB7XG4gICAgICBlcnJvcnMucHVzaChgJHtsYWJlbH0gc2VjcmV0IGFwcGVhcnMgdG8gYmUgaW5zZWN1cmUgb3IgZGVmYXVsdCB2YWx1ZWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIEpXVCBleHBpcmF0aW9uIHRpbWVzXG4gIGlmIChjb25maWcuand0LmV4cGlyZXNJbiA+IDg2NDAwKSB7XG4gICAgZXJyb3JzLnB1c2goJ0pXVCBleHBpcmF0aW9uIG11c3Qgbm90IGV4Y2VlZCAyNCBob3VycyAoODY0MDAgc2Vjb25kcyknKTtcbiAgfSBlbHNlIGlmIChjb25maWcuand0LmV4cGlyZXNJbiA+IDcyMDApIHtcbiAgICB3YXJuaW5ncy5wdXNoKCdKV1QgZXhwaXJhdGlvbiB0aW1lIGlzIGdyZWF0ZXIgdGhhbiAyIGhvdXJzIC0gc2hvcnRlciBleHBpcmF0aW9uIHJlY29tbWVuZGVkJyk7XG4gIH1cblxuICAvLyBDaGVjayBhbGdvcml0aG1cbiAgaWYgKCFDb3JlQ29uc3RhbnRzLkFMTE9XRURfSldUX0FMR09SSVRITVMuaW5jbHVkZXMoY29uZmlnLmp3dC5hbGdvcml0aG0pKSB7XG4gICAgZXJyb3JzLnB1c2goYEpXVCBhbGdvcml0aG0gJHtjb25maWcuand0LmFsZ29yaXRobX0gaXMgbm90IGluIHRoZSBhbGxvd2VkIGxpc3RgKTtcbiAgfVxuXG4gIC8vIERpc3BsYXkgd2FybmluZ3NcbiAgaWYgKHdhcm5pbmdzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybignQXV0aCBjb25maWd1cmF0aW9uIHdhcm5pbmdzOicpO1xuICAgIHdhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiBsb2cud2FybihgICAtICR7d2FybmluZ31gKSk7XG4gIH1cblxuICAvLyBUaHJvdyBlcnJvcnNcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEF1dGggY29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIGZhaWxlZDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBgICAtICR7ZX1gKS5qb2luKCdcXG4nKX1gLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -17,9 +17,6 @@
17
17
  * generate('plugin:lookup') → 'plugin:{hash}:lookup:2' (counter inc)
18
18
  * generate('cdk:pipeline:1') → 'cdk:pipeline:1' (already counted)
19
19
  *
20
- * Format without org+project (backward compat):
21
- * generate('plugin:lookup') → 'plugin:lookup:1'
22
- *
23
20
  * @example
24
21
  * ```typescript
25
22
  * const id = new UniqueId({ organization: 'AcmeCorp', project: 'spring-boot' });
@@ -30,14 +27,14 @@
30
27
  */
31
28
  export interface UniqueIdOptions {
32
29
  /** Organization name — combined with project to form the stack-identity hash. */
33
- readonly organization?: string;
30
+ readonly organization: string;
34
31
  /** Project name — combined with organization to form the stack-identity hash. */
35
- readonly project?: string;
32
+ readonly project: string;
36
33
  }
37
34
  export declare class UniqueId {
38
35
  private readonly _counters;
39
36
  private readonly _stackId;
40
- constructor(opts?: UniqueIdOptions);
37
+ constructor(opts: UniqueIdOptions);
41
38
  /**
42
39
  * Returns a unique construct ID for the given label.
43
40
  * If the label already ends with a numeric counter, it is returned as-is.
@@ -48,6 +45,6 @@ export declare class UniqueId {
48
45
  * @returns The label with hash + counter inserted
49
46
  */
50
47
  generate(label: string): string;
51
- /** The stack-identity hash, or empty string when not configured. */
48
+ /** The stack-identity hash derived from organization + project. */
52
49
  get stackId(): string;
53
50
  }
@@ -7,18 +7,13 @@ const crypto_1 = require("crypto");
7
7
  class UniqueId {
8
8
  _counters = new Map();
9
9
  _stackId;
10
- constructor(opts = {}) {
11
- if (opts.organization && opts.project) {
12
- // 8 hex chars = 32 bits = 1 in 4 billion collision odds across pipelines.
13
- // Lowercased for case-insensitive stability ("AcmeCorp" === "acmecorp").
14
- this._stackId = (0, crypto_1.createHash)('sha256')
15
- .update(`${opts.project}:${opts.organization}`.toLowerCase())
16
- .digest('hex')
17
- .slice(0, 8);
18
- }
19
- else {
20
- this._stackId = '';
21
- }
10
+ constructor(opts) {
11
+ // 8 hex chars = 32 bits = 1 in 4 billion collision odds across pipelines.
12
+ // Lowercased for case-insensitive stability ("AcmeCorp" === "acmecorp").
13
+ this._stackId = (0, crypto_1.createHash)('sha256')
14
+ .update(`${opts.project}:${opts.organization}`.toLowerCase())
15
+ .digest('hex')
16
+ .slice(0, 8);
22
17
  }
23
18
  /**
24
19
  * Returns a unique construct ID for the given label.
@@ -39,9 +34,6 @@ class UniqueId {
39
34
  }
40
35
  const count = (this._counters.get(label) ?? 0) + 1;
41
36
  this._counters.set(label, count);
42
- if (!this._stackId) {
43
- return `${label}:${count}`;
44
- }
45
37
  // Insert the stack hash after the first namespace segment so the leading
46
38
  // category (`plugin`, `log`, `resource`, etc.) stays human-readable.
47
39
  const idx = label.indexOf(':');
@@ -53,10 +45,10 @@ class UniqueId {
53
45
  const tail = label.slice(idx + 1);
54
46
  return `${head}:${this._stackId}:${tail}:${count}`;
55
47
  }
56
- /** The stack-identity hash, or empty string when not configured. */
48
+ /** The stack-identity hash derived from organization + project. */
57
49
  get stackId() {
58
50
  return this._stackId;
59
51
  }
60
52
  }
61
53
  exports.UniqueId = UniqueId;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvaWQtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7QUFFdEMsbUNBQW9DO0FBdUNwQyxNQUFhLFFBQVE7SUFDRixTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDdEMsUUFBUSxDQUFTO0lBRWxDLFlBQVksT0FBd0IsRUFBRTtRQUNwQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RDLDBFQUEwRTtZQUMxRSx5RUFBeUU7WUFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDO2lCQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDYixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCwyREFBMkQ7UUFDM0QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQseUVBQXlFO1FBQ3pFLHFFQUFxRTtRQUNyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZiwwREFBMEQ7WUFDMUQsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQTNERCw0QkEyREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHVuaXF1ZSBDREsgY29uc3RydWN0IElEcyBieSBhcHBlbmRpbmcgYXV0by1pbmNyZW1lbnRpbmcgY291bnRlcnNcbiAqIHRvIGxhYmVscywgd2l0aCBhbiBvcHRpb25hbCBzdGFjay1pZGVudGl0eSBoYXNoIGluc2VydGVkIGFmdGVyIHRoZSBmaXJzdFxuICogbmFtZXNwYWNlIHNlZ21lbnQgdG8gcHJldmVudCBjb2xsaXNpb25zIGFjcm9zcyBwaXBlbGluZXMvb3Jncy5cbiAqXG4gKiBXaHkgdGhlIGhhc2ggbWF0dGVyczpcbiAqICAgQVdTIHJlc291cmNlcyB3aXRoIGV4cGxpY2l0IG5hbWVzIChDbG91ZFdhdGNoIGxvZyBncm91cHMsIElBTSByb2xlcylcbiAqICAgY29sbGlkZSBpZiB0d28gQ0RLIHN0YWNrcyBnZW5lcmF0ZSB0aGUgc2FtZSBuYW1lLiBXaGVuIG9yZyBBJ3NcbiAqICAgc3ByaW5nLWJvb3QgcGlwZWxpbmUgYW5kIG9yZyBCJ3Mgc3ByaW5nLWJvb3QgcGlwZWxpbmUgYm90aCBkZXBsb3kgYVxuICogICBgcGx1Z2luLWxvb2t1cC0xYCBsb2cgZ3JvdXAsIHRoZSBzZWNvbmQgZGVwbG95IGZhaWxzIHdpdGhcbiAqICAgXCJSZXNvdXJjZSBhbHJlYWR5IGV4aXN0c1wiLiBUaGUgaGFzaCBtYWtlcyBlYWNoIChwcm9qZWN0LCBvcmcpIHBhaXJcbiAqICAgcHJvZHVjZSBhIHVuaXF1ZSBzdGFibGUgbmFtZSB3aXRob3V0IGNoYW5naW5nIHRoZSByZXN0IG9mIHRoZSBsYWJlbC5cbiAqXG4gKiBGb3JtYXQgd2l0aCBvcmcrcHJvamVjdDpcbiAqICAgZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKSAgIOKGkiAncGx1Z2luOntoYXNofTpsb29rdXA6MSdcbiAqICAgZ2VuZXJhdGUoJ2xvZzpncm91cCcpICAgICAgIOKGkiAnbG9nOntoYXNofTpncm91cDoxJ1xuICogICBnZW5lcmF0ZSgncGx1Z2luOmxvb2t1cCcpICAg4oaSICdwbHVnaW46e2hhc2h9Omxvb2t1cDoyJyAgIChjb3VudGVyIGluYylcbiAqICAgZ2VuZXJhdGUoJ2NkazpwaXBlbGluZToxJykgIOKGkiAnY2RrOnBpcGVsaW5lOjEnICAgICAgICAgICAoYWxyZWFkeSBjb3VudGVkKVxuICpcbiAqIEZvcm1hdCB3aXRob3V0IG9yZytwcm9qZWN0IChiYWNrd2FyZCBjb21wYXQpOlxuICogICBnZW5lcmF0ZSgncGx1Z2luOmxvb2t1cCcpICAg4oaSICdwbHVnaW46bG9va3VwOjEnXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGlkID0gbmV3IFVuaXF1ZUlkKHsgb3JnYW5pemF0aW9uOiAnQWNtZUNvcnAnLCBwcm9qZWN0OiAnc3ByaW5nLWJvb3QnIH0pO1xuICogaWQuZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKTsgICAvLyBcInBsdWdpbjphMWIyYzNkNDpsb29rdXA6MVwiXG4gKiBpZC5nZW5lcmF0ZSgnbG9nOmdyb3VwJyk7ICAgICAgIC8vIFwibG9nOmExYjJjM2Q0Omdyb3VwOjFcIlxuICogaWQuZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKTsgICAvLyBcInBsdWdpbjphMWIyYzNkNDpsb29rdXA6MlwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlxdWVJZE9wdGlvbnMge1xuICAvKiogT3JnYW5pemF0aW9uIG5hbWUg4oCUIGNvbWJpbmVkIHdpdGggcHJvamVjdCB0byBmb3JtIHRoZSBzdGFjay1pZGVudGl0eSBoYXNoLiAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb24/OiBzdHJpbmc7XG4gIC8qKiBQcm9qZWN0IG5hbWUg4oCUIGNvbWJpbmVkIHdpdGggb3JnYW5pemF0aW9uIHRvIGZvcm0gdGhlIHN0YWNrLWlkZW50aXR5IGhhc2guICovXG4gIHJlYWRvbmx5IHByb2plY3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBVbmlxdWVJZCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvdW50ZXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhY2tJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IFVuaXF1ZUlkT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKG9wdHMub3JnYW5pemF0aW9uICYmIG9wdHMucHJvamVjdCkge1xuICAgICAgLy8gOCBoZXggY2hhcnMgPSAzMiBiaXRzID0gMSBpbiA0IGJpbGxpb24gY29sbGlzaW9uIG9kZHMgYWNyb3NzIHBpcGVsaW5lcy5cbiAgICAgIC8vIExvd2VyY2FzZWQgZm9yIGNhc2UtaW5zZW5zaXRpdmUgc3RhYmlsaXR5IChcIkFjbWVDb3JwXCIgPT09IFwiYWNtZWNvcnBcIikuXG4gICAgICB0aGlzLl9zdGFja0lkID0gY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgICAgLnVwZGF0ZShgJHtvcHRzLnByb2plY3R9OiR7b3B0cy5vcmdhbml6YXRpb259YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAuZGlnZXN0KCdoZXgnKVxuICAgICAgICAuc2xpY2UoMCwgOCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3N0YWNrSWQgPSAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHVuaXF1ZSBjb25zdHJ1Y3QgSUQgZm9yIHRoZSBnaXZlbiBsYWJlbC5cbiAgICogSWYgdGhlIGxhYmVsIGFscmVhZHkgZW5kcyB3aXRoIGEgbnVtZXJpYyBjb3VudGVyLCBpdCBpcyByZXR1cm5lZCBhcy1pcy5cbiAgICogT3RoZXJ3aXNlLCBhbiBhdXRvLWluY3JlbWVudGluZyBjb3VudGVyIGlzIGFwcGVuZGVkOyBpZiBhIHN0YWNrLWlkZW50aXR5XG4gICAqIGhhc2ggd2FzIHByb3ZpZGVkIGF0IGNvbnN0cnVjdGlvbiwgaXQncyBpbnNlcnRlZCBhZnRlciB0aGUgZmlyc3Qgc2VnbWVudC5cbiAgICpcbiAgICogQHBhcmFtIGxhYmVsIC0gQ29sb24tc2VwYXJhdGVkIG5hbWVzcGFjZSAoZS5nLiwgJ3BsdWdpbjpsb29rdXAnKVxuICAgKiBAcmV0dXJucyBUaGUgbGFiZWwgd2l0aCBoYXNoICsgY291bnRlciBpbnNlcnRlZFxuICAgKi9cbiAgZ2VuZXJhdGUobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFsYWJlbCB8fCB0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xhYmVsIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuXG4gICAgLy8gQWxyZWFkeSBjb3VudGVkIChlLmcuLCAnY2RrOnBpcGVsaW5lOjEnKSDigJQgcGFzcyB0aHJvdWdoLlxuICAgIGlmICgvOlxcZCskLy50ZXN0KGxhYmVsKSkge1xuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50ID0gKHRoaXMuX2NvdW50ZXJzLmdldChsYWJlbCkgPz8gMCkgKyAxO1xuICAgIHRoaXMuX2NvdW50ZXJzLnNldChsYWJlbCwgY291bnQpO1xuXG4gICAgaWYgKCF0aGlzLl9zdGFja0lkKSB7XG4gICAgICByZXR1cm4gYCR7bGFiZWx9OiR7Y291bnR9YDtcbiAgICB9XG5cbiAgICAvLyBJbnNlcnQgdGhlIHN0YWNrIGhhc2ggYWZ0ZXIgdGhlIGZpcnN0IG5hbWVzcGFjZSBzZWdtZW50IHNvIHRoZSBsZWFkaW5nXG4gICAgLy8gY2F0ZWdvcnkgKGBwbHVnaW5gLCBgbG9nYCwgYHJlc291cmNlYCwgZXRjLikgc3RheXMgaHVtYW4tcmVhZGFibGUuXG4gICAgY29uc3QgaWR4ID0gbGFiZWwuaW5kZXhPZignOicpO1xuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAvLyBTaW5nbGUtc2VnbWVudCBsYWJlbCDigJQgcHV0IHRoZSBoYXNoIGJlZm9yZSB0aGUgY291bnRlci5cbiAgICAgIHJldHVybiBgJHtsYWJlbH06JHt0aGlzLl9zdGFja0lkfToke2NvdW50fWA7XG4gICAgfVxuICAgIGNvbnN0IGhlYWQgPSBsYWJlbC5zbGljZSgwLCBpZHgpO1xuICAgIGNvbnN0IHRhaWwgPSBsYWJlbC5zbGljZShpZHggKyAxKTtcbiAgICByZXR1cm4gYCR7aGVhZH06JHt0aGlzLl9zdGFja0lkfToke3RhaWx9OiR7Y291bnR9YDtcbiAgfVxuXG4gIC8qKiBUaGUgc3RhY2staWRlbnRpdHkgaGFzaCwgb3IgZW1wdHkgc3RyaW5nIHdoZW4gbm90IGNvbmZpZ3VyZWQuICovXG4gIGdldCBzdGFja0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YWNrSWQ7XG4gIH1cbn1cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvaWQtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7QUFFdEMsbUNBQW9DO0FBb0NwQyxNQUFhLFFBQVE7SUFDRixTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDdEMsUUFBUSxDQUFTO0lBRWxDLFlBQVksSUFBcUI7UUFDL0IsMEVBQTBFO1FBQzFFLHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUM7YUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNiLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMseUVBQXlFO1FBQ3pFLHFFQUFxRTtRQUNyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZiwwREFBMEQ7WUFDMUQsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQW5ERCw0QkFtREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5cbi8qKlxuICogR2VuZXJhdGVzIHVuaXF1ZSBDREsgY29uc3RydWN0IElEcyBieSBhcHBlbmRpbmcgYXV0by1pbmNyZW1lbnRpbmcgY291bnRlcnNcbiAqIHRvIGxhYmVscywgd2l0aCBhbiBvcHRpb25hbCBzdGFjay1pZGVudGl0eSBoYXNoIGluc2VydGVkIGFmdGVyIHRoZSBmaXJzdFxuICogbmFtZXNwYWNlIHNlZ21lbnQgdG8gcHJldmVudCBjb2xsaXNpb25zIGFjcm9zcyBwaXBlbGluZXMvb3Jncy5cbiAqXG4gKiBXaHkgdGhlIGhhc2ggbWF0dGVyczpcbiAqICAgQVdTIHJlc291cmNlcyB3aXRoIGV4cGxpY2l0IG5hbWVzIChDbG91ZFdhdGNoIGxvZyBncm91cHMsIElBTSByb2xlcylcbiAqICAgY29sbGlkZSBpZiB0d28gQ0RLIHN0YWNrcyBnZW5lcmF0ZSB0aGUgc2FtZSBuYW1lLiBXaGVuIG9yZyBBJ3NcbiAqICAgc3ByaW5nLWJvb3QgcGlwZWxpbmUgYW5kIG9yZyBCJ3Mgc3ByaW5nLWJvb3QgcGlwZWxpbmUgYm90aCBkZXBsb3kgYVxuICogICBgcGx1Z2luLWxvb2t1cC0xYCBsb2cgZ3JvdXAsIHRoZSBzZWNvbmQgZGVwbG95IGZhaWxzIHdpdGhcbiAqICAgXCJSZXNvdXJjZSBhbHJlYWR5IGV4aXN0c1wiLiBUaGUgaGFzaCBtYWtlcyBlYWNoIChwcm9qZWN0LCBvcmcpIHBhaXJcbiAqICAgcHJvZHVjZSBhIHVuaXF1ZSBzdGFibGUgbmFtZSB3aXRob3V0IGNoYW5naW5nIHRoZSByZXN0IG9mIHRoZSBsYWJlbC5cbiAqXG4gKiBGb3JtYXQgd2l0aCBvcmcrcHJvamVjdDpcbiAqICAgZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKSAgIOKGkiAncGx1Z2luOntoYXNofTpsb29rdXA6MSdcbiAqICAgZ2VuZXJhdGUoJ2xvZzpncm91cCcpICAgICAgIOKGkiAnbG9nOntoYXNofTpncm91cDoxJ1xuICogICBnZW5lcmF0ZSgncGx1Z2luOmxvb2t1cCcpICAg4oaSICdwbHVnaW46e2hhc2h9Omxvb2t1cDoyJyAgIChjb3VudGVyIGluYylcbiAqICAgZ2VuZXJhdGUoJ2NkazpwaXBlbGluZToxJykgIOKGkiAnY2RrOnBpcGVsaW5lOjEnICAgICAgICAgICAoYWxyZWFkeSBjb3VudGVkKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpZCA9IG5ldyBVbmlxdWVJZCh7IG9yZ2FuaXphdGlvbjogJ0FjbWVDb3JwJywgcHJvamVjdDogJ3NwcmluZy1ib290JyB9KTtcbiAqIGlkLmdlbmVyYXRlKCdwbHVnaW46bG9va3VwJyk7ICAgLy8gXCJwbHVnaW46YTFiMmMzZDQ6bG9va3VwOjFcIlxuICogaWQuZ2VuZXJhdGUoJ2xvZzpncm91cCcpOyAgICAgICAvLyBcImxvZzphMWIyYzNkNDpncm91cDoxXCJcbiAqIGlkLmdlbmVyYXRlKCdwbHVnaW46bG9va3VwJyk7ICAgLy8gXCJwbHVnaW46YTFiMmMzZDQ6bG9va3VwOjJcIlxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5pcXVlSWRPcHRpb25zIHtcbiAgLyoqIE9yZ2FuaXphdGlvbiBuYW1lIOKAlCBjb21iaW5lZCB3aXRoIHByb2plY3QgdG8gZm9ybSB0aGUgc3RhY2staWRlbnRpdHkgaGFzaC4gKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG4gIC8qKiBQcm9qZWN0IG5hbWUg4oCUIGNvbWJpbmVkIHdpdGggb3JnYW5pemF0aW9uIHRvIGZvcm0gdGhlIHN0YWNrLWlkZW50aXR5IGhhc2guICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFVuaXF1ZUlkIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY291bnRlcnMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFja0lkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0czogVW5pcXVlSWRPcHRpb25zKSB7XG4gICAgLy8gOCBoZXggY2hhcnMgPSAzMiBiaXRzID0gMSBpbiA0IGJpbGxpb24gY29sbGlzaW9uIG9kZHMgYWNyb3NzIHBpcGVsaW5lcy5cbiAgICAvLyBMb3dlcmNhc2VkIGZvciBjYXNlLWluc2Vuc2l0aXZlIHN0YWJpbGl0eSAoXCJBY21lQ29ycFwiID09PSBcImFjbWVjb3JwXCIpLlxuICAgIHRoaXMuX3N0YWNrSWQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKVxuICAgICAgLnVwZGF0ZShgJHtvcHRzLnByb2plY3R9OiR7b3B0cy5vcmdhbml6YXRpb259YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgLmRpZ2VzdCgnaGV4JylcbiAgICAgIC5zbGljZSgwLCA4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdW5pcXVlIGNvbnN0cnVjdCBJRCBmb3IgdGhlIGdpdmVuIGxhYmVsLlxuICAgKiBJZiB0aGUgbGFiZWwgYWxyZWFkeSBlbmRzIHdpdGggYSBudW1lcmljIGNvdW50ZXIsIGl0IGlzIHJldHVybmVkIGFzLWlzLlxuICAgKiBPdGhlcndpc2UsIGFuIGF1dG8taW5jcmVtZW50aW5nIGNvdW50ZXIgaXMgYXBwZW5kZWQ7IGlmIGEgc3RhY2staWRlbnRpdHlcbiAgICogaGFzaCB3YXMgcHJvdmlkZWQgYXQgY29uc3RydWN0aW9uLCBpdCdzIGluc2VydGVkIGFmdGVyIHRoZSBmaXJzdCBzZWdtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gbGFiZWwgLSBDb2xvbi1zZXBhcmF0ZWQgbmFtZXNwYWNlIChlLmcuLCAncGx1Z2luOmxvb2t1cCcpXG4gICAqIEByZXR1cm5zIFRoZSBsYWJlbCB3aXRoIGhhc2ggKyBjb3VudGVyIGluc2VydGVkXG4gICAqL1xuICBnZW5lcmF0ZShsYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWxhYmVsIHx8IHR5cGVvZiBsYWJlbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGFiZWwgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICAvLyBBbHJlYWR5IGNvdW50ZWQgKGUuZy4sICdjZGs6cGlwZWxpbmU6MScpIOKAlCBwYXNzIHRocm91Z2guXG4gICAgaWYgKC86XFxkKyQvLnRlc3QobGFiZWwpKSB7XG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnQgPSAodGhpcy5fY291bnRlcnMuZ2V0KGxhYmVsKSA/PyAwKSArIDE7XG4gICAgdGhpcy5fY291bnRlcnMuc2V0KGxhYmVsLCBjb3VudCk7XG5cbiAgICAvLyBJbnNlcnQgdGhlIHN0YWNrIGhhc2ggYWZ0ZXIgdGhlIGZpcnN0IG5hbWVzcGFjZSBzZWdtZW50IHNvIHRoZSBsZWFkaW5nXG4gICAgLy8gY2F0ZWdvcnkgKGBwbHVnaW5gLCBgbG9nYCwgYHJlc291cmNlYCwgZXRjLikgc3RheXMgaHVtYW4tcmVhZGFibGUuXG4gICAgY29uc3QgaWR4ID0gbGFiZWwuaW5kZXhPZignOicpO1xuICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAvLyBTaW5nbGUtc2VnbWVudCBsYWJlbCDigJQgcHV0IHRoZSBoYXNoIGJlZm9yZSB0aGUgY291bnRlci5cbiAgICAgIHJldHVybiBgJHtsYWJlbH06JHt0aGlzLl9zdGFja0lkfToke2NvdW50fWA7XG4gICAgfVxuICAgIGNvbnN0IGhlYWQgPSBsYWJlbC5zbGljZSgwLCBpZHgpO1xuICAgIGNvbnN0IHRhaWwgPSBsYWJlbC5zbGljZShpZHggKyAxKTtcbiAgICByZXR1cm4gYCR7aGVhZH06JHt0aGlzLl9zdGFja0lkfToke3RhaWx9OiR7Y291bnR9YDtcbiAgfVxuXG4gIC8qKiBUaGUgc3RhY2staWRlbnRpdHkgaGFzaCBkZXJpdmVkIGZyb20gb3JnYW5pemF0aW9uICsgcHJvamVjdC4gKi9cbiAgZ2V0IHN0YWNrSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhY2tJZDtcbiAgfVxufVxuIl19
@@ -237,6 +237,13 @@ class PipelineBuilder extends constructs_1.Construct {
237
237
  if (props.orgId) {
238
238
  aws_cdk_lib_1.Tags.of(this.pipeline).add('OrgId', props.orgId);
239
239
  }
240
+ // Stable event-reporting key. Applied at synth (the pipelineId is known
241
+ // here), so it's present from stack creation — the events Lambda reads this
242
+ // tag to attribute CodePipeline state-change events to the pipeline without
243
+ // ever handling the ARN/account. See packages/pipeline-events.
244
+ if (props.pipelineId) {
245
+ aws_cdk_lib_1.Tags.of(this.pipeline).add('PIPELINE_EVENT_ID', props.pipelineId);
246
+ }
240
247
  if (props.tags) {
241
248
  for (const [key, value] of Object.entries(props.tags)) {
242
249
  aws_cdk_lib_1.Tags.of(this.pipeline).add(key, value);
@@ -387,4 +394,4 @@ class PipelineBuilder extends constructs_1.Construct {
387
394
  }
388
395
  }
389
396
  exports.PipelineBuilder = PipelineBuilder;
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9waXBlbGluZS9waXBlbGluZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMseURBQTBEO0FBRTFELDZDQUE0RDtBQUM1RCx1RUFBeUQ7QUFDekQsbUVBQWtHO0FBQ2xHLCtEQUFpRDtBQUNqRCx3RUFBMEQ7QUFDMUQseURBQTJDO0FBQzNDLHVEQUF5QztBQUN6Qyx5REFBMkM7QUFDM0MscURBQTRFO0FBQzVFLDJDQUF1QztBQUN2QyxxRUFBaUU7QUFDakUsbURBQStDO0FBQy9DLHFEQUFpRDtBQUNqRCxtREFBK0M7QUFFL0MscURBQTZEO0FBQzdELCtEQUEyRDtBQUMzRCx1REFBZ0Q7QUFDaEQsK0RBT2tDO0FBQ2xDLDZDQUF1RTtBQUV2RSwrREFBeUY7QUFDekYsMkRBQW1FO0FBRW5FLHVDQUEyQztBQUUzQywyREFBOEQ7QUFFOUQsTUFBTSxrQkFBa0IsR0FBK0M7SUFDckUsTUFBTSxFQUFFLDZDQUEwQixDQUFDLHlCQUF5QjtJQUM1RCxTQUFTLEVBQUUsNkNBQTBCLENBQUMsNEJBQTRCO0lBQ2xFLE9BQU8sRUFBRSw2Q0FBMEIsQ0FBQywwQkFBMEI7SUFDOUQsUUFBUSxFQUFFLDZDQUEwQixDQUFDLDJCQUEyQjtJQUNoRSxVQUFVLEVBQUUsNkNBQTBCLENBQUMsNkJBQTZCO0NBQ3JFLENBQUM7QUFFRixTQUFTLHVCQUF1QixDQUFDLEtBQWM7SUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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RixHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUNwRCxxRUFBcUU7WUFDckUsd0RBQXdEO1lBQ3hELGlFQUFpRTtZQUNqRSxtRUFBbUU7WUFDbkUsK0RBQStEO1lBQy9ELGlFQUFpRTtZQUNqRSxnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLElBQUEsMkNBQXdCLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDakQsb0JBQW9CLEVBQUUsZUFBZTthQUN0QztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUExVUQsMENBMFVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMsIFBpcGVsaW5lVHlwZSwgVmFyaWFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgeyBDb2RlUGlwZWxpbmUsIHR5cGUgQ29kZUJ1aWxkT3B0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFBpcGVsaW5lQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcGlwZWxpbmUtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBQbHVnaW5Mb29rdXAgfSBmcm9tICcuL3BsdWdpbi1sb29rdXAnO1xuaW1wb3J0IHsgU291cmNlQnVpbGRlciB9IGZyb20gJy4vc291cmNlLWJ1aWxkZXInO1xuaW1wb3J0IHsgU3RhZ2VCdWlsZGVyIH0gZnJvbSAnLi9zdGFnZS1idWlsZGVyJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VPcHRpb25zLCBTeW50aE9wdGlvbnMgfSBmcm9tICcuL3N0ZXAtdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgQXJ0aWZhY3RNYW5hZ2VyIH0gZnJvbSAnLi4vY29yZS9hcnRpZmFjdC1tYW5hZ2VyJztcbmltcG9ydCB7IFVuaXF1ZUlkIH0gZnJvbSAnLi4vY29yZS9pZC1nZW5lcmF0b3InO1xuaW1wb3J0IHtcbiAgYXNJbnQsXG4gIG1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lLFxuICBuZXR3b3JrQ29uZmlnRnJvbU1ldGFkYXRhLFxuICBwYXJzZVBpcGVsaW5lVmFyaWFibGVzLFxuICByb2xlQ29uZmlnRnJvbU1ldGFkYXRhLFxuICBzZWN1cml0eUdyb3VwQ29uZmlnRnJvbU1ldGFkYXRhLFxufSBmcm9tICcuLi9jb3JlL21ldGFkYXRhLWJ1aWxkZXInO1xuaW1wb3J0IHsgcmVzb2x2ZU5ldHdvcmssIG5ldHdvcmtDb25maWdGcm9tRW52IH0gZnJvbSAnLi4vY29yZS9uZXR3b3JrJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkRGVmYXVsdHMgfSBmcm9tICcuLi9jb3JlL25ldHdvcmstdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29kZUJ1aWxkU3RlcCwgcmVzb2x2ZURlZmF1bHRCdWlsZEltYWdlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS1oZWxwZXJzJztcbmltcG9ydCB7IE1ldGFkYXRhS2V5cywgVHJpZ2dlclR5cGUgfSBmcm9tICcuLi9jb3JlL3BpcGVsaW5lLXR5cGVzJztcbmltcG9ydCB0eXBlIHsgTWV0YURhdGFUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgeyByZXNvbHZlUm9sZSB9IGZyb20gJy4uL2NvcmUvcm9sZSc7XG5pbXBvcnQgdHlwZSB7IFJvbGVDb25maWcgfSBmcm9tICcuLi9jb3JlL3JvbGUtdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZVNlY3VyaXR5R3JvdXAgfSBmcm9tICcuLi9jb3JlL3NlY3VyaXR5LWdyb3VwJztcblxuY29uc3QgUElQRUxJTkVfRVZFTlRfTUFQOiBSZWNvcmQ8c3RyaW5nLCBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cz4gPSB7XG4gIEZBSUxFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX0ZBSUxFRCxcbiAgU1VDQ0VFREVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fU1VDQ0VFREVELFxuICBTVEFSVEVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fU1RBUlRFRCxcbiAgQ0FOQ0VMRUQ6IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9DQU5DRUxFRCxcbiAgU1VQRVJTRURFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX1NVUEVSU0VERUQsXG59O1xuXG5mdW5jdGlvbiBwYXJzZU5vdGlmaWNhdGlvbkV2ZW50cyh2YWx1ZTogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKSk7XG4gIHJldHVybiBbJ0ZBSUxFRCcsICdTVUNDRUVERUQnXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBQaXBlbGluZUJ1aWxkZXIgY29uc3RydWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRlclByb3BzIHtcbiAgLyoqIFByb2plY3QgaWRlbnRpZmllciAod2lsbCBiZSBzYW5pdGl6ZWQgdG8gbG93ZXJjYXNlIGFscGhhbnVtZXJpYyB3aXRoIHVuZGVyc2NvcmVzKSAqL1xuICByZWFkb25seSBwcm9qZWN0OiBzdHJpbmc7XG5cbiAgLyoqIE9yZ2FuaXphdGlvbiBpZGVudGlmaWVyICh3aWxsIGJlIHNhbml0aXplZCB0byBsb3dlcmNhc2UgYWxwaGFudW1lcmljIHdpdGggdW5kZXJzY29yZXMpICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbjogc3RyaW5nO1xuXG4gIC8qKiBUZW5hbnQgaWRlbnRpZmllciBmb3IgcmVzb2x2aW5nIHBlci1vcmcgc2VjcmV0cyBmcm9tIEFXUyBTZWNyZXRzIE1hbmFnZXIgKi9cbiAgcmVhZG9ubHkgb3JnSWQ/OiBzdHJpbmc7XG5cbiAgLyoqIFBpcGVsaW5lIGRhdGFiYXNlIHJlY29yZCBJRCDigJQgaW5qZWN0ZWQgYXMgUElQRUxJTkVfSUQgZW52IHZhciBmb3IgYXV0b25vbW91cyBzeW50aCAqL1xuICByZWFkb25seSBwaXBlbGluZUlkPzogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25hbCBjdXN0b20gcGlwZWxpbmUgbmFtZS4gRGVmYXVsdHMgdG86IHtvcmdhbml6YXRpb259LXtwcm9qZWN0fS1waXBlbGluZSAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIEdsb2JhbCBtZXRhZGF0YSBpbmhlcml0ZWQgYnkgYWxsIHBpcGVsaW5lIHN0ZXBzICovXG4gIHJlYWRvbmx5IGdsb2JhbD86IE1ldGFEYXRhVHlwZTtcblxuICAvKipcbiAgICogUGlwZWxpbmUtbGV2ZWwgQ29kZUJ1aWxkIGRlZmF1bHRzIGFwcGxpZWQgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zXG4gICAqIChzeW50aCwgc2VsZi1tdXRhdGlvbiwgYXNzZXQgcHVibGlzaGluZykgdmlhIGBjb2RlQnVpbGREZWZhdWx0c2AuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0cz86IENvZGVCdWlsZERlZmF1bHRzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBJQU0gcm9sZSBmb3IgdGhlIENvZGVQaXBlbGluZS5cbiAgICogV2hlbiBwcm92aWRlZCwgcmVzb2x2ZXMgdG8gYSBDREsgSVJvbGUgYW5kIGlzIHBhc3NlZCB0byB0aGUgQ29kZVBpcGVsaW5lIGNvbnN0cnVjdC5cbiAgICogV2hlbiBvbWl0dGVkLCBDREsgYXV0by1jcmVhdGVzIGEgcm9sZSB3aXRoIHRoZSBjb3JyZWN0IGNvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tIHByaW5jaXBhbC5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBSb2xlQ29uZmlnO1xuXG4gIC8qKiBTeW50aGVzaXMgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcgc291cmNlIGFuZCBwbHVnaW4gZGV0YWlscyAqL1xuICByZWFkb25seSBzeW50aDogU3ludGhPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwaXBlbGluZSBzdGFnZXMsIGVhY2ggY29udGFpbmluZyBvbmUgb3IgbW9yZSBDb2RlQnVpbGQgc3RlcHMuXG4gICAqIFN0YWdlcyBhcmUgYWRkZWQgYXMgd2F2ZXMgdG8gdGhlIENvZGVQaXBlbGluZSBhZnRlciB0aGUgc3ludGggc3RlcC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlcz86IFN0YWdlT3B0aW9uc1tdO1xuXG4gIC8qKiBPcHRpb25hbCBjcm9uL3JhdGUgZXhwcmVzc2lvbiBmb3Igc2NoZWR1bGVkIHBpcGVsaW5lIGV4ZWN1dGlvbi4gKi9cbiAgcmVhZG9ubHkgc2NoZWR1bGU/OiBzdHJpbmc7XG5cbiAgLyoqIEN1c3RvbSB0YWdzIGFwcGxpZWQgdG8gYWxsIHBpcGVsaW5lIHJlc291cmNlcy4gKi9cbiAgcmVhZG9ubHkgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFBsdWdpbnMgcHJlLXJlc29sdmVkIGJ5IGBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoYCBmcm9tIHRoZSBwbGF0Zm9ybSBBUEksXG4gICAqIGtleWVkIGJ5IGBhbGlhcyB8fCBuYW1lYC4gV2hlbiBwcmVzZW50LCBgUGx1Z2luTG9va3VwLnBsdWdpbigpYCByZXR1cm5zXG4gICAqIHRoZSBtYXRjaGluZyBlbnRyeSBkaXJlY3RseSBhbmQgc2tpcHMgdGhlIGN1c3RvbSByZXNvdXJjZSDigJQgc28gdGhlXG4gICAqIHN5bnRoZXNpemVkIENGTiB0ZW1wbGF0ZSBzaGlwcyB3aXRoIHRoZSByZWFsIENvZGVCdWlsZCBpbWFnZSBiYWtlZCBpbi5cbiAgICogUG9wdWxhdGVkIGJ5IHRoZSBDTEkgYmVmb3JlIGludm9raW5nIHRoZSBib2lsZXJwbGF0ZSBhcHA7IENESyBjb25zdW1lcnNcbiAgICogd2hvIGNvbnN0cnVjdCBQaXBlbGluZUJ1aWxkZXIgZGlyZWN0bHkgbm9ybWFsbHkgbGVhdmUgdGhpcyB1bnNldC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkUGx1Z2lucz86IFJlY29yZDxzdHJpbmcsIFBsdWdpbj47XG59XG5cbi8qKlxuICogQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgYSBDb2RlUGlwZWxpbmUgZm9yIGNvbnRpbnVvdXMgZGVwbG95bWVudC5cbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gTXVsdGktc291cmNlIHN1cHBvcnQgKFMzLCBHaXRIdWIsIENvZGVTdGFyKVxuICogLSBQbHVnaW4tYmFzZWQgYnVpbGQgc3RlcHNcbiAqIC0gTWV0YWRhdGEtZHJpdmVuIGNvbmZpZ3VyYXRpb25cbiAqIC0gQXV0b21hdGljIHRhZ2dpbmdcbiAqIC0gQXV0b21hdGljIHNhbml0aXphdGlvbiBvZiBwcm9qZWN0IGFuZCBvcmdhbml6YXRpb24gbmFtZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogbmV3IFBpcGVsaW5lQnVpbGRlcih0aGlzLCAnTXlQaXBlbGluZScsIHtcbiAqICAgcHJvamVjdDogJ215LWFwcCcsXG4gKiAgIG9yZ2FuaXphdGlvbjogJ215LW9yZycsXG4gKiAgIHN5bnRoOiB7XG4gKiAgICAgc291cmNlOiB7XG4gKiAgICAgICB0eXBlOiAnZ2l0aHViJyxcbiAqICAgICAgIG9wdGlvbnM6IHsgcmVwbzogJ293bmVyL3JlcG8nLCBicmFuY2g6ICdtYWluJyB9XG4gKiAgICAgfSxcbiAqICAgICBwbHVnaW46IHsgbmFtZTogJ3N5bnRoJyB9XG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBQaXBlbGluZUJ1aWxkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcGlwZWxpbmU6IENvZGVQaXBlbGluZTtcbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogUGlwZWxpbmVDb25maWd1cmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCdWlsZGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gVXNlIFBpcGVsaW5lQ29uZmlndXJhdGlvbiBmb3IgYWxsIGJ1c2luZXNzIGxvZ2ljICh2YWxpZGF0aW9uLCBzYW5pdGl6YXRpb24sIG1ldGFkYXRhIG1lcmdpbmcpXG4gICAgdGhpcy5jb25maWcgPSBuZXcgUGlwZWxpbmVDb25maWd1cmF0aW9uKHByb3BzKTtcblxuICAgIGNvbnN0IHNlcnZlckNvbmZpZyA9IENvbmZpZy5nZXQoJ3NlcnZlcicpO1xuICAgIGNvbnN0IGF3c0NvbmZpZyA9IENvbmZpZy5nZXQoJ2F3cycpO1xuICAgIC8vIFBhc3Mgb3JnK3Byb2plY3Qgc28gbG9nIGdyb3VwIC8gSUFNIHJvbGUgbmFtZXMgZ2V0IGEgc3RhYmxlIGhhc2hcbiAgICAvLyBzdWZmaXggcGVyIHBpcGVsaW5lLiBQcmV2ZW50cyBgUmVzb3VyY2UgYWxyZWFkeSBleGlzdHNgIGNvbGxpc2lvbnNcbiAgICAvLyBhY3Jvc3Mgc3RhY2tzIGRlcGxveWVkIHRvIHRoZSBzYW1lIEFXUyBhY2NvdW50LlxuICAgIGNvbnN0IHVuaXF1ZUlkID0gbmV3IFVuaXF1ZUlkKHtcbiAgICAgIG9yZ2FuaXphdGlvbjogdGhpcy5jb25maWcub3JnYW5pemF0aW9uLFxuICAgICAgcHJvamVjdDogdGhpcy5jb25maWcucHJvamVjdCxcbiAgICB9KTtcbiAgICBjb25zdCBwbHVnaW5Mb29rdXAgPSBuZXcgUGx1Z2luTG9va3VwKFxuICAgICAgdGhpcyxcbiAgICAgIHVuaXF1ZUlkLmdlbmVyYXRlKCdwbHVnaW46bG9va3VwJyksXG4gICAgICB7XG4gICAgICAgIG9yZ2FuaXphdGlvbjogdGhpcy5jb25maWcub3JnYW5pemF0aW9uLFxuICAgICAgICBwcm9qZWN0OiB0aGlzLmNvbmZpZy5wcm9qZWN0LFxuICAgICAgICBwbGF0Zm9ybVVybDogc2VydmVyQ29uZmlnLnBsYXRmb3JtVXJsLFxuICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgb3JnSWQ6IHByb3BzLm9yZ0lkLFxuICAgICAgICBydW50aW1lOiBhd3NDb25maWcubGFtYmRhLnJ1bnRpbWUsXG4gICAgICAgIHRpbWVvdXQ6IGF3c0NvbmZpZy5sYW1iZGEudGltZW91dCxcbiAgICAgICAgcmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9uczogYXdzQ29uZmlnLmxhbWJkYS5yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zLFxuICAgICAgICByZXNvbHZlZFBsdWdpbnM6IHByb3BzLnJlc29sdmVkUGx1Z2lucyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBzb3VyY2UgYW5kIGJ1aWxkIHN0ZXBcbiAgICBjb25zdCBzb3VyY2VCdWlsZGVyID0gbmV3IFNvdXJjZUJ1aWxkZXIodGhpcywgdGhpcy5jb25maWcpO1xuICAgIGNvbnN0IHNvdXJjZSA9IHNvdXJjZUJ1aWxkZXIuY3JlYXRlKHVuaXF1ZUlkKTtcblxuICAgIC8vIFN5bnRoLXBsdWdpbiByZXNvbHV0aW9uOlxuICAgIC8vICAgMS4gUHJlLXJlc29sdmVkIGJ5IGBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoL2RlcGxveWAgZnJvbSB0aGUgcGxhdGZvcm1cbiAgICAvLyAgICAgIEFQSSDihpIgdXNlIGl0LiBTeW50aCBzdGVwIHJ1bnMgb24gdGhlIHJlYWwgYGNkay1zeW50aGAgaW1hZ2Ugd2l0aFxuICAgIC8vICAgICAgcmVhbCBjb21tYW5kcyBiYWtlZCBpbnRvIHRoZSB0ZW1wbGF0ZS5cbiAgICAvLyAgIDIuIE90aGVyd2lzZSDihpIgYGJvb3RzdHJhcCgpYDogY29sZC1zdGFydCBgcGlwZWxpbmUtbWFuYWdlciBzeW50aGBcbiAgICAvLyAgICAgIG9uIHRoZSBjb25maWd1cmVkIENPREVCVUlMRF9ERUZBVUxUX0lNQUdFIChkZWZhdWx0XG4gICAgLy8gICAgICBwaXBlbGluZS1ib290c3RyYXA6MS4wKS4gVXNlZCB3aGVuIHRoZSBwbGF0Zm9ybSBpc24ndCByZWFjaGFibGVcbiAgICAvLyAgICAgIGF0IHN5bnRoIHRpbWUgKENMSSBsb2dzIGEgd2FybmluZyBwZXIgbWlzc2VkIHBsdWdpbikuXG4gICAgLy9cbiAgICAvLyBwbHVnaW5Mb29rdXAucGx1Z2luKCkgcmVhZHMgYHJlc29sdmVkUGx1Z2luc2AgaW50ZXJuYWxseSBhbmQgcmV0dXJuc1xuICAgIC8vIHRoZSBjYWNoZWQgZW50cnkgd2hlbiBwcmVzZW50IOKAlCBzbyBjYWxsaW5nIGl0IGFsd2F5cyB3aW5zIG92ZXJcbiAgICAvLyBib290c3RyYXAoKSB3aGVuIHByZS1yZXNvbHV0aW9uIHN1Y2NlZWRlZC5cbiAgICBjb25zdCBzeW50aENhY2hlS2V5ID1cbiAgICAgIHRoaXMuY29uZmlnLnBsdWdpbi5hbGlhcyB8fCBgJHt0aGlzLmNvbmZpZy5wbHVnaW4ubmFtZX0tYWxpYXNgO1xuICAgIGNvbnN0IHBsdWdpbiA9IHByb3BzLnJlc29sdmVkUGx1Z2lucz8uW3N5bnRoQ2FjaGVLZXldXG4gICAgICA/IHBsdWdpbkxvb2t1cC5wbHVnaW4odGhpcy5jb25maWcucGx1Z2luKVxuICAgICAgOiBwbHVnaW5Mb29rdXAuYm9vdHN0cmFwKCk7XG4gICAgY29uc3QgZGVmYXVsdENvbXB1dGVUeXBlID0gYXdzQ29uZmlnLmNvZGVCdWlsZC5jb21wdXRlVHlwZTtcbiAgICBjb25zdCBhcnRpZmFjdE1hbmFnZXIgPSBuZXcgQXJ0aWZhY3RNYW5hZ2VyKCk7XG4gICAgY29uc3Qgc3ludGhBbGlhcyA9IHRoaXMuY29uZmlnLnBsdWdpbi5hbGlhcyA/PyB0aGlzLmNvbmZpZy5wbHVnaW4ubmFtZTtcblxuICAgIC8vIFNjb3BlIGV4cG9zZWQgdG8gcGx1Z2luLXNwZWMgdGVtcGxhdGVzIGFzIGBwaXBlbGluZS4qYC4gQnVpbHQgb25jZVxuICAgIC8vIGhlcmUgc28gYm90aCB0aGUgc3ludGggc3RlcCBhbmQgZXZlcnkgc3RhZ2Ugc3RlcCByZXNvbHZlIGFnYWluc3RcbiAgICAvLyB0aGUgc2FtZSBzbmFwc2hvdC5cbiAgICBjb25zdCBwaXBlbGluZVNjb3BlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIHBpcGVsaW5lOiB7XG4gICAgICAgIHByb2plY3ROYW1lOiB0aGlzLmNvbmZpZy5wcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiB0aGlzLmNvbmZpZy5wcm9qZWN0LFxuICAgICAgICBvcmdJZDogdGhpcy5jb25maWcub3JnYW5pemF0aW9uLFxuICAgICAgICBvcmdhbml6YXRpb246IHRoaXMuY29uZmlnLm9yZ2FuaXphdGlvbixcbiAgICAgICAgcGlwZWxpbmVOYW1lOiB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUsXG4gICAgICAgIG1ldGFkYXRhOiB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQsXG4gICAgICAgIHZhcnM6IChwcm9wcyBhcyB7IHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KS52YXJzID8/IHt9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3ludGggPSBjcmVhdGVDb2RlQnVpbGRTdGVwKHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLnN5bnRoQ3VzdG9taXphdGlvbixcbiAgICAgIGlkOiB1bmlxdWVJZC5nZW5lcmF0ZSgnY2RrOnN5bnRoJyksXG4gICAgICB1bmlxdWVJZCxcbiAgICAgIHBsdWdpbixcbiAgICAgIGlucHV0OiBzb3VyY2UsXG4gICAgICBtZXRhZGF0YTogdGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkLFxuICAgICAgbmV0d29yazogdGhpcy5jb25maWcubmV0d29yayxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgZGVmYXVsdENvbXB1dGVUeXBlLFxuICAgICAgYXJ0aWZhY3RNYW5hZ2VyLFxuICAgICAgc3RhZ2VOYW1lOiAnbm8tc3RhZ2UnLFxuICAgICAgc3RhZ2VBbGlhczogJ25vLXN0YWdlLWFsaWFzJyxcbiAgICAgIHBsdWdpbkFsaWFzOiBgJHtzeW50aEFsaWFzfS1hbGlhc2AsXG4gICAgICBvcmdJZDogcHJvcHMub3JnSWQsXG4gICAgICBwaXBlbGluZVNjb3BlLFxuICAgIH0pO1xuXG4gICAgLy8gUmVzb2x2ZSBwaXBlbGluZS1sZXZlbCBkZWZhdWx0cyBpbnRvIGNvZGVCdWlsZERlZmF1bHRzXG4gICAgLy8gQnVpbGQgdGhlIHBlci1vcmcgcGxhdGZvcm0gc2VjcmV0IG5hbWUgZm9yIENvZGVCdWlsZCBlbnYgdmFyc1xuICAgIGNvbnN0IHBsYXRmb3JtU2VjcmV0TmFtZSA9IHByb3BzLm9yZ0lkXG4gICAgICA/IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChwcm9wcy5vcmdJZCwgJ3BsYXRmb3JtJylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY29kZUJ1aWxkRGVmYXVsdHMgPSB0aGlzLnJlc29sdmVEZWZhdWx0cyh0aGlzLmNvbmZpZy5kZWZhdWx0cywgdW5pcXVlSWQsIHByb3BzLnBpcGVsaW5lSWQsIHBsYXRmb3JtU2VjcmV0TmFtZSwgc2VydmVyQ29uZmlnLnBsYXRmb3JtVXJsLCBwcm9wcy5vcmdJZCk7XG5cbiAgICAvLyBSZXNvbHZlIElBTSByb2xlOiBleHBsaWNpdCBwcm9wIHdpbnMsIGVsc2UgYGlhbTpyb2xlYCBtZXRhZGF0YSwgZWxzZSBsZXRcbiAgICAvLyBDREsgYXV0by1jcmVhdGUgdGhlIHBpcGVsaW5lIHJvbGUgKGNvZGVwaXBlbGluZS5hbWF6b25hd3MuY29tIHByaW5jaXBhbCkuXG4gICAgY29uc3Qgcm9sZUNvbmZpZyA9IHByb3BzLnJvbGUgPz8gcm9sZUNvbmZpZ0Zyb21NZXRhZGF0YSh0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQpO1xuICAgIGlmIChyb2xlQ29uZmlnPy50eXBlID09PSAnY29kZUJ1aWxkRGVmYXVsdCcpIHtcbiAgICAgIGNyZWF0ZUxvZ2dlcigncGlwZWxpbmUtYnVpbGRlcicpLndhcm4oXG4gICAgICAgICdjb2RlQnVpbGREZWZhdWx0IHJvbGUgdHlwZSB1c2VzIGNvZGVidWlsZC5hbWF6b25hd3MuY29tIHRydXN0IHByaW5jaXBhbCDigJQgJyArXG4gICAgICAgICd0aGlzIGlzIG5vdCBzdWl0YWJsZSBhcyB0aGUgcGlwZWxpbmUtbGV2ZWwgcm9sZS4gQ29uc2lkZXIgdXNpbmcgcm9sZUFybi9yb2xlTmFtZSAnICtcbiAgICAgICAgJ29yIG9taXR0aW5nIHRoZSByb2xlIHRvIGxldCBDREsgYXV0by1jcmVhdGUgb25lIHdpdGggY29kZXBpcGVsaW5lLmFtYXpvbmF3cy5jb20uJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHJvbGUgPSByb2xlQ29uZmlnXG4gICAgICA/IHJlc29sdmVSb2xlKHRoaXMsIHVuaXF1ZUlkLCByb2xlQ29uZmlnKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyDilIDilIAgQXJ0aWZhY3QgYnVja2V0IChLTVMgZW5jcnlwdGlvbiArIHJldGVudGlvbikg4pSA4pSAXG4gICAgLy8gV2hlbiBgZW5jcnlwdGlvbi5rbXNLZXlBcm5gIGFuZC9vciBgb3BlcmF0aW9ucy5hcnRpZmFjdFJldGVudGlvbkRheXNgIGFyZVxuICAgIC8vIHNldCB3ZSBjcmVhdGUgYSBjdXN0b20gYXJ0aWZhY3QgYnVja2V0IGFuZCBwYXNzIGl0IHRvIENvZGVQaXBlbGluZTsgdGhhdFxuICAgIC8vIGlzIHRoZSBvbmx5IHdheSB0byBhdHRhY2ggYSBjdXN0b21lci1tYW5hZ2VkIGtleSAodGhlIEwzIGNvbnN0cnVjdCBleHBvc2VzXG4gICAgLy8gYGFydGlmYWN0QnVja2V0YCwgbm90IGBlbmNyeXB0aW9uS2V5YCkuIEFic2VudCBib3RoIGtleXMsIENESyBhdXRvLWNyZWF0ZXNcbiAgICAvLyB0aGUgYnVja2V0IGFuZCBiZWhhdmlvciBpcyB1bmNoYW5nZWQuXG4gICAgY29uc3QgYXJ0aWZhY3RCdWNrZXQgPSB0aGlzLmJ1aWxkQXJ0aWZhY3RCdWNrZXQoKTtcblxuICAgIC8vIENyZWF0ZSBDb2RlUGlwZWxpbmUgY29uc3RydWN0XG4gICAgdGhpcy5waXBlbGluZSA9IG5ldyBDb2RlUGlwZWxpbmUodGhpcywgdW5pcXVlSWQuZ2VuZXJhdGUoJ3BpcGVsaW5lczpjb2RlcGlwZWxpbmUnKSwge1xuICAgICAgLi4uKGNvZGVCdWlsZERlZmF1bHRzICYmIHsgY29kZUJ1aWxkRGVmYXVsdHMgfSksXG4gICAgICAuLi4ocm9sZSAmJiB7IHJvbGUgfSksXG4gICAgICAuLi4oYXJ0aWZhY3RCdWNrZXQgJiYgeyBhcnRpZmFjdEJ1Y2tldCB9KSxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUsXG4gICAgICBzeW50aCxcbiAgICAgIC4uLm1ldGFkYXRhRm9yQ29kZVBpcGVsaW5lKHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCksXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuc3RhZ2VzKSB7XG4gICAgICBjb25zdCBzdGFnZUJ1aWxkZXIgPSBuZXcgU3RhZ2VCdWlsZGVyKHtcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICAgIHBsdWdpbkxvb2t1cCxcbiAgICAgICAgdW5pcXVlSWQsXG4gICAgICAgIGdsb2JhbE1ldGFkYXRhOiB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQsXG4gICAgICAgIGRlZmF1bHRDb21wdXRlVHlwZSxcbiAgICAgICAgYXJ0aWZhY3RNYW5hZ2VyLFxuICAgICAgICBvcmdJZDogcHJvcHMub3JnSWQsXG4gICAgICAgIHBpcGVsaW5lU2NvcGUsXG4gICAgICB9KTtcbiAgICAgIHN0YWdlQnVpbGRlci5hZGRTdGFnZXModGhpcy5waXBlbGluZSwgcHJvcHMuc3RhZ2VzKTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgVGFncyDilIDilIBcbiAgICAvLyBUaGUgZmlyc3QgdGhyZWUgYXJlIG9wZXJhdGlvbnMtZXNzZW50aWFsIGFuZCB1c2VkIGJ5IGBwaXBlbGluZS1tYW5hZ2VyXG4gICAgLy8gYXVkaXQtc3RhY2tzYCB0byBkaWZmIENGTiBzdGFja3MgYWdhaW5zdCB0aGUgcGlwZWxpbmVfcmVnaXN0cnkgdGFibGUuXG4gICAgLy8gYE9yZ0lkYCBpcyB0aGUgY2Fub25pY2FsIGtleSBmb3IgY29zdCBhdHRyaWJ1dGlvbiAoQVdTIENvc3QgRXhwbG9yZXJcbiAgICAvLyBncm91cHMgYnkgdGFnIGtleS92YWx1ZSB3aGVuIGFjdGl2YXRlZCBpbiBCaWxsaW5nIHNldHRpbmdzKS5cbiAgICBUYWdzLm9mKHRoaXMucGlwZWxpbmUpLmFkZCgncGlwZWxpbmUtYnVpbGRlcicsICd0cnVlJyk7XG4gICAgVGFncy5vZih0aGlzLnBpcGVsaW5lKS5hZGQoJ3Byb2plY3QnLCB0aGlzLmNvbmZpZy5wcm9qZWN0KTtcbiAgICBUYWdzLm9mKHRoaXMucGlwZWxpbmUpLmFkZCgnb3JnYW5pemF0aW9uJywgdGhpcy5jb25maWcub3JnYW5pemF0aW9uKTtcbiAgICBpZiAocHJvcHMub3JnSWQpIHtcbiAgICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdPcmdJZCcsIHByb3BzLm9yZ0lkKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnRhZ3MpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzLnRhZ3MpKSB7XG4gICAgICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBpbnRlcm5hbCBwaXBlbGluZSBiZWZvcmUgYWNjZXNzaW5nIGl0cyBwcm9wZXJ0aWVzXG4gICAgdGhpcy5waXBlbGluZS5idWlsZFBpcGVsaW5lKCk7XG4gICAgY29uc3QgY2RrUGlwZWxpbmUgPSB0aGlzLnBpcGVsaW5lLnBpcGVsaW5lO1xuICAgIGNvbnN0IG1ldGEgPSB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQ7XG5cbiAgICAvLyDilIDilIAgUGlwZWxpbmUtbGV2ZWwgVmFyaWFibGVzIChDb2RlUGlwZWxpbmUgVjIpIOKUgOKUgFxuICAgIGZvciAoY29uc3QgdiBvZiBwYXJzZVBpcGVsaW5lVmFyaWFibGVzKG1ldGFbTWV0YWRhdGFLZXlzLlBJUEVMSU5FX1ZBUklBQkxFU10pKSB7XG4gICAgICBjZGtQaXBlbGluZS5hZGRWYXJpYWJsZShuZXcgVmFyaWFibGUoe1xuICAgICAgICB2YXJpYWJsZU5hbWU6IHYubmFtZSxcbiAgICAgICAgLi4uKHYuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgeyBkZWZhdWx0VmFsdWU6IHYuZGVmYXVsdFZhbHVlIH0pLFxuICAgICAgICAuLi4odi5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgZGVzY3JpcHRpb246IHYuZGVzY3JpcHRpb24gfSksXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIFNOUyBOb3RpZmljYXRpb25zIOKUgOKUgFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvblRvcGljQXJuID0gbWV0YVtNZXRhZGF0YUtleXMuTk9USUZJQ0FUSU9OX1RPUElDX0FSTl07XG4gICAgaWYgKHR5cGVvZiBub3RpZmljYXRpb25Ub3BpY0FybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHRvcGljID0gc25zLlRvcGljLmZyb21Ub3BpY0Fybih0aGlzLCAnTm90aWZpY2F0aW9uVG9waWMnLCBub3RpZmljYXRpb25Ub3BpY0Fybik7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25FdmVudHMgPSBwYXJzZU5vdGlmaWNhdGlvbkV2ZW50cyhtZXRhW01ldGFkYXRhS2V5cy5OT1RJRklDQVRJT05fRVZFTlRTXSlcbiAgICAgICAgLm1hcChlID0+IFBJUEVMSU5FX0VWRU5UX01BUFtlLnRvVXBwZXJDYXNlKCldKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKG5vdGlmaWNhdGlvbkV2ZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNka1BpcGVsaW5lLm5vdGlmeU9uKCdQaXBlbGluZU5vdGlmaWNhdGlvbicsIHRvcGljLCB7IGV2ZW50czogbm90aWZpY2F0aW9uRXZlbnRzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIOKUgOKUgCBTY2hlZHVsZWQgRXhlY3V0aW9uIOKUgOKUgFxuICAgIGlmIChwcm9wcy5zeW50aC5zb3VyY2Uub3B0aW9ucz8udHJpZ2dlciA9PT0gVHJpZ2dlclR5cGUuU0NIRURVTEUgfHwgcHJvcHMuc2NoZWR1bGUpIHtcbiAgICAgIGNvbnN0IGV4cHIgPSBwcm9wcy5zY2hlZHVsZSB8fCAocHJvcHMuc3ludGguc291cmNlLm9wdGlvbnMgYXMgeyBzY2hlZHVsZT86IHN0cmluZyB9KT8uc2NoZWR1bGUgfHwgJ3JhdGUoMSBkYXkpJztcbiAgICAgIG5ldyBldmVudHMuUnVsZSh0aGlzLCAnU2NoZWR1bGVSdWxlJywge1xuICAgICAgICBzY2hlZHVsZTogZXZlbnRzLlNjaGVkdWxlLmV4cHJlc3Npb24oZXhwciksXG4gICAgICAgIHRhcmdldHM6IFtuZXcgdGFyZ2V0cy5Db2RlUGlwZWxpbmUoY2RrUGlwZWxpbmUpXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBFeGVjdXRpb24gRXZlbnQgVHJhY2tpbmcgKGZvcndhcmQgcGlwZWxpbmUgc3RhdGUgY2hhbmdlcyB0byBTTlMpIOKUgOKUgFxuICAgIGlmIChtZXRhW01ldGFkYXRhS2V5cy5FTkFCTEVfRVhFQ1VUSU9OX0VWRU5UU10gJiYgdHlwZW9mIG5vdGlmaWNhdGlvblRvcGljQXJuID09PSAnc3RyaW5nJykge1xuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdFeGVjdXRpb25FdmVudFJ1bGUnLCB7XG4gICAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICAgIHNvdXJjZTogWydhd3MuY29kZXBpcGVsaW5lJ10sXG4gICAgICAgICAgZGV0YWlsVHlwZTogWydDb2RlUGlwZWxpbmUgUGlwZWxpbmUgRXhlY3V0aW9uIFN0YXRlIENoYW5nZSddLFxuICAgICAgICAgIHJlc291cmNlczogW2Nka1BpcGVsaW5lLnBpcGVsaW5lQXJuXSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLlNuc1RvcGljKFxuICAgICAgICAgIHNucy5Ub3BpYy5mcm9tVG9waWNBcm4odGhpcywgJ0V4ZWN1dGlvbkV2ZW50VG9waWMnLCBub3RpZmljYXRpb25Ub3BpY0FybiksXG4gICAgICAgICldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIFBpcGVsaW5lIE1ldHJpY3MgJiBBbGFybXMg4pSA4pSAXG4gICAgY29uc3QgZW5hYmxlTWV0cmljcyA9IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZFtNZXRhZGF0YUtleXMuRU5BQkxFX01FVFJJQ1NdO1xuICAgIGlmIChlbmFibGVNZXRyaWNzKSB7XG4gICAgICBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnUGlwZWxpbmVGYWlsdXJlQWxhcm0nLCB7XG4gICAgICAgIG1ldHJpYzogbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgICAgICBuYW1lc3BhY2U6ICdBV1MvQ29kZVBpcGVsaW5lJyxcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnRmFpbGVkUGlwZWxpbmVFeGVjdXRpb25Db3VudCcsXG4gICAgICAgICAgZGltZW5zaW9uc01hcDogeyBQaXBlbGluZU5hbWU6IHRoaXMuY29uZmlnLnBpcGVsaW5lTmFtZSB9LFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYFBpcGVsaW5lICR7dGhpcy5jb25maWcucGlwZWxpbmVOYW1lfSBleGVjdXRpb24gZmFpbGVkYCxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBjbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGN1c3RvbSBhcnRpZmFjdCBidWNrZXQgd2hlbiBgZW5jcnlwdGlvbi5rbXNLZXlBcm5gIGFuZC9vclxuICAgKiBgb3BlcmF0aW9ucy5hcnRpZmFjdFJldGVudGlvbkRheXNgIGFyZSBzZXQuIFJldHVybnMgdW5kZWZpbmVkIG90aGVyd2lzZSBzb1xuICAgKiBDREsgYXV0by1jcmVhdGVzIHRoZSBkZWZhdWx0IGFydGlmYWN0IGJ1Y2tldCAodW5jaGFuZ2VkIGJlaGF2aW9yKS5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRBcnRpZmFjdEJ1Y2tldCgpOiBzMy5JQnVja2V0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBtZXRhID0gdGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkO1xuICAgIGNvbnN0IGttc0tleUFybiA9IHR5cGVvZiBtZXRhW01ldGFkYXRhS2V5cy5LTVNfS0VZX0FSTl0gPT09ICdzdHJpbmcnXG4gICAgICA/IChtZXRhW01ldGFkYXRhS2V5cy5LTVNfS0VZX0FSTl0gYXMgc3RyaW5nKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmV0ZW50aW9uRGF5cyA9IGFzSW50KG1ldGFbTWV0YWRhdGFLZXlzLkFSVElGQUNUX1JFVEVOVElPTl9EQVlTXSk7XG5cbiAgICBpZiAoIWttc0tleUFybiAmJiByZXRlbnRpb25EYXlzID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBlbmNyeXB0aW9uS2V5ID0ga21zS2V5QXJuXG4gICAgICA/IGttcy5LZXkuZnJvbUtleUFybih0aGlzLCAnQXJ0aWZhY3RLZXknLCBrbXNLZXlBcm4pXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0FydGlmYWN0QnVja2V0Jywge1xuICAgICAgZW5jcnlwdGlvbjogZW5jcnlwdGlvbktleSA/IHMzLkJ1Y2tldEVuY3J5cHRpb24uS01TIDogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgLi4uKGVuY3J5cHRpb25LZXkgJiYgeyBlbmNyeXB0aW9uS2V5IH0pLFxuICAgICAgLi4uKHJldGVudGlvbkRheXMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbeyBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKHJldGVudGlvbkRheXMpIH1dLFxuICAgICAgfSksXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgIH0pO1xuICAgIFRhZ3Mub2YoYnVja2V0KS5hZGQoJ3BpcGVsaW5lJywgdGhpcy5jb25maWcucGlwZWxpbmVOYW1lKTtcbiAgICByZXR1cm4gYnVja2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIENvZGVCdWlsZERlZmF1bHRzIGludG8gdGhlIHNoYXBlIGV4cGVjdGVkIGJ5IENESydzIGNvZGVCdWlsZERlZmF1bHRzLlxuICAgKiBDb21iaW5lcyBuZXR3b3JrIGNvbmZpZywgc2VjdXJpdHkgZ3JvdXBzLCBhbmQgcGlwZWxpbmUtbGV2ZWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqIChQSVBFTElORV9JRCwgRVhFQ1VUSU9OX0lELCBQTEFURk9STV9CQVNFX1VSTCkgYXZhaWxhYmxlIHRvIGFsbCBDb2RlQnVpbGQgYWN0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZURlZmF1bHRzKFxuICAgIGRlZmF1bHRzOiBDb2RlQnVpbGREZWZhdWx0cyB8IHVuZGVmaW5lZCxcbiAgICBpZDogVW5pcXVlSWQsXG4gICAgcGlwZWxpbmVJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHBsYXRmb3JtU2VjcmV0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHBsYXRmb3JtVXJsOiBzdHJpbmcsXG4gICAgb3JnSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgKTogQ29kZUJ1aWxkT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gUGVyLXBpcGVsaW5lIG5ldHdvcmsgY29uZmlnIHdpbnM7IG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gYW4gZW52LWRyaXZlblxuICAgIC8vIGdsb2JhbCBWUEMgKGludGVybmFsIC8gaW5zaWRlLUFXUy1vbmx5IG1vZGUpIHNvIGV2ZXJ5IHBpcGVsaW5lJ3NcbiAgICAvLyBDb2RlQnVpbGQgcnVucyBpbiB0aGUgVlBDIGFuZCBjYW4gcmVhY2ggdGhlIHByaXZhdGUgZ2F0ZXdheS4gVW5zZXQgaW5cbiAgICAvLyBwdWJsaWMgZGVwbG95cyDihpIgQ29kZUJ1aWxkIHN0YXlzIGluIHRoZSBBV1MtbWFuYWdlZCBuZXR3b3JrLlxuICAgIC8vIFByZWNlZGVuY2U6IGV4cGxpY2l0IHByb3AgPiBgZWMyOm5ldHdvcmtgIG1ldGFkYXRhID4gZW52LWRyaXZlbiBnbG9iYWwgVlBDLlxuICAgIGNvbnN0IG5ldHdvcmsgPSBkZWZhdWx0cz8ubmV0d29yayA/PyBuZXR3b3JrQ29uZmlnRnJvbU1ldGFkYXRhKHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCkgPz8gbmV0d29ya0NvbmZpZ0Zyb21FbnYoKTtcbiAgICBjb25zdCBuZXR3b3JrUHJvcHMgPSBuZXR3b3JrXG4gICAgICA/IHJlc29sdmVOZXR3b3JrKHRoaXMsIGlkLCBuZXR3b3JrKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBTYW1lIHByZWNlZGVuY2UgZm9yIHN0YW5kYWxvbmUgc2VjdXJpdHkgZ3JvdXBzIChwcm9wID4gYGVjMjpzZWN1cml0eWdyb3VwYCBtZXRhZGF0YSkuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cENvbmZpZyA9IGRlZmF1bHRzPy5zZWN1cml0eUdyb3VwcyA/PyBzZWN1cml0eUdyb3VwQ29uZmlnRnJvbU1ldGFkYXRhKHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCk7XG4gICAgY29uc3Qgc3RhbmRhbG9uZVNlY3VyaXR5R3JvdXBzID0gc2VjdXJpdHlHcm91cENvbmZpZ1xuICAgICAgPyByZXNvbHZlU2VjdXJpdHlHcm91cCh0aGlzLCBpZCwgc2VjdXJpdHlHcm91cENvbmZpZylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gUGlwZWxpbmUtbGV2ZWwgZW52IHZhcnMgYXZhaWxhYmxlIHRvIGFsbCBDb2RlQnVpbGQgYWN0aW9uc1xuICAgIC8vIE5vdGU6ICN7Y29kZXBpcGVsaW5lLip9IHJlc29sdmVkIHZhcmlhYmxlcyBtdXN0IGdvIHRocm91Z2ggQ29kZUJ1aWxkU3RlcC5lbnZcbiAgICAvLyAoYWN0aW9uLWxldmVsKSwgbm90IGJ1aWxkRW52aXJvbm1lbnQuZW52aXJvbm1lbnRWYXJpYWJsZXMgKHByb2plY3QtbGV2ZWwpLlxuICAgIGNvbnN0IHBpcGVsaW5lRW52VmFyczogUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogc3RyaW5nIH0+ID0ge1xuICAgICAgUExBVEZPUk1fQkFTRV9VUkw6IHsgdmFsdWU6IHBsYXRmb3JtVXJsIH0sXG4gICAgICAuLi4ocGlwZWxpbmVJZCAmJiB7IFBJUEVMSU5FX0lEOiB7IHZhbHVlOiBwaXBlbGluZUlkIH0gfSksXG4gICAgICAuLi4ocGxhdGZvcm1TZWNyZXROYW1lICYmIHsgUExBVEZPUk1fU0VDUkVUX05BTUU6IHsgdmFsdWU6IHBsYXRmb3JtU2VjcmV0TmFtZSB9IH0pLFxuICAgICAgLy8gUHJvcGFnYXRlIFRMUyB2ZXJpZmljYXRpb24gc2V0dGluZyBzbyBhbGwgQ29kZUJ1aWxkIHN0ZXBzIGNhbiByZWFjaFxuICAgICAgLy8gdGhlIHBsYXRmb3JtIEFQSSB3aGVuIHVzaW5nIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlc1xuICAgICAgLi4uKHByb2Nlc3MuZW52Lk5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQgPT09ICcwJyAmJiB7XG4gICAgICAgIE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ6IHsgdmFsdWU6ICcwJyB9LFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gW1xuICAgICAgLi4uKG5ldHdvcmtQcm9wcz8uc2VjdXJpdHlHcm91cHMgPz8gW10pLFxuICAgICAgLi4uKHN0YW5kYWxvbmVTZWN1cml0eUdyb3VwcyA/PyBbXSksXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi4obmV0d29ya1Byb3BzICYmIHsgdnBjOiBuZXR3b3JrUHJvcHMudnBjLCBzdWJuZXRTZWxlY3Rpb246IG5ldHdvcmtQcm9wcy5zdWJuZXRTZWxlY3Rpb24gfSksXG4gICAgICAuLi4oc2VjdXJpdHlHcm91cHMubGVuZ3RoID4gMCAmJiB7IHNlY3VyaXR5R3JvdXBzIH0pLFxuICAgICAgLy8gYnVpbGRJbWFnZSBhdCB0aGlzIGxldmVsIHJlYWNoZXMgQ0RLIFBpcGVsaW5lcycgaW50ZXJuYWxseS13cmFwcGVkXG4gICAgICAvLyBTaGVsbFN0ZXAgQ29kZUJ1aWxkIGFjdGlvbiwgd2hpY2ggb3RoZXJ3aXNlIGhhcmRjb2Rlc1xuICAgICAgLy8gYExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzBgLiBTZXR0aW5nIGl0IGhlcmUgY2xvc2VzIHRoZSBnYXBcbiAgICAgIC8vIGV4cG9zZWQgaW4gdGhlIHNhbWUgZW52IHZhciAoYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFYCkgdGhhdCB0aGVcbiAgICAgIC8vIENvZGVCdWlsZFN0ZXAgcGF0aCBhbHJlYWR5IGhvbm9ycyB2aWEgcmVzb2x2ZVBsdWdpbkltYWdlKCknc1xuICAgICAgLy8gZmFsbGJhY2suIFBlci1zdGVwIGBidWlsZEltYWdlYCBvbiBhIENvZGVCdWlsZFN0ZXAgc3RpbGwgd2lucy5cbiAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogcmVzb2x2ZURlZmF1bHRCdWlsZEltYWdlKHRoaXMsIG9yZ0lkKSxcbiAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHBpcGVsaW5lRW52VmFycyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9waXBlbGluZS9waXBlbGluZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMseURBQTBEO0FBRTFELDZDQUE0RDtBQUM1RCx1RUFBeUQ7QUFDekQsbUVBQWtHO0FBQ2xHLCtEQUFpRDtBQUNqRCx3RUFBMEQ7QUFDMUQseURBQTJDO0FBQzNDLHVEQUF5QztBQUN6Qyx5REFBMkM7QUFDM0MscURBQTRFO0FBQzVFLDJDQUF1QztBQUN2QyxxRUFBaUU7QUFDakUsbURBQStDO0FBQy9DLHFEQUFpRDtBQUNqRCxtREFBK0M7QUFFL0MscURBQTZEO0FBQzdELCtEQUEyRDtBQUMzRCx1REFBZ0Q7QUFDaEQsK0RBT2tDO0FBQ2xDLDZDQUF1RTtBQUV2RSwrREFBeUY7QUFDekYsMkRBQW1FO0FBRW5FLHVDQUEyQztBQUUzQywyREFBOEQ7QUFFOUQsTUFBTSxrQkFBa0IsR0FBK0M7SUFDckUsTUFBTSxFQUFFLDZDQUEwQixDQUFDLHlCQUF5QjtJQUM1RCxTQUFTLEVBQUUsNkNBQTBCLENBQUMsNEJBQTRCO0lBQ2xFLE9BQU8sRUFBRSw2Q0FBMEIsQ0FBQywwQkFBMEI7SUFDOUQsUUFBUSxFQUFFLDZDQUEwQixDQUFDLDJCQUEyQjtJQUNoRSxVQUFVLEVBQUUsNkNBQTBCLENBQUMsNkJBQTZCO0NBQ3JFLENBQUM7QUFFRixTQUFTLHVCQUF1QixDQUFDLEtBQWM7SUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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QUFHLENBQUMsWUFBWSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7WUFDdkMsR0FBRyxDQUFDLHdCQUF3QixJQUFJLEVBQUUsQ0FBQztTQUNwQyxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdGLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ3BELHFFQUFxRTtZQUNyRSx3REFBd0Q7WUFDeEQsaUVBQWlFO1lBQ2pFLG1FQUFtRTtZQUNuRSwrREFBK0Q7WUFDL0QsaUVBQWlFO1lBQ2pFLGdCQUFnQixFQUFFO2dCQUNoQixVQUFVLEVBQUUsSUFBQSwyQ0FBd0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUNqRCxvQkFBb0IsRUFBRSxlQUFlO2FBQ3RDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWpWRCwwQ0FpVkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcbmltcG9ydCB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cywgUGlwZWxpbmVUeXBlLCBWYXJpYWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUnO1xuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7IENvZGVQaXBlbGluZSwgdHlwZSBDb2RlQnVpbGRPcHRpb25zIH0gZnJvbSAnYXdzLWNkay1saWIvcGlwZWxpbmVzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGlwZWxpbmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9waXBlbGluZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IFBsdWdpbkxvb2t1cCB9IGZyb20gJy4vcGx1Z2luLWxvb2t1cCc7XG5pbXBvcnQgeyBTb3VyY2VCdWlsZGVyIH0gZnJvbSAnLi9zb3VyY2UtYnVpbGRlcic7XG5pbXBvcnQgeyBTdGFnZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWdlLWJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgeyBTdGFnZU9wdGlvbnMsIFN5bnRoT3B0aW9ucyB9IGZyb20gJy4vc3RlcC10eXBlcyc7XG5pbXBvcnQgeyBDb25maWcsIENvcmVDb25zdGFudHMgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBBcnRpZmFjdE1hbmFnZXIgfSBmcm9tICcuLi9jb3JlL2FydGlmYWN0LW1hbmFnZXInO1xuaW1wb3J0IHsgVW5pcXVlSWQgfSBmcm9tICcuLi9jb3JlL2lkLWdlbmVyYXRvcic7XG5pbXBvcnQge1xuICBhc0ludCxcbiAgbWV0YWRhdGFGb3JDb2RlUGlwZWxpbmUsXG4gIG5ldHdvcmtDb25maWdGcm9tTWV0YWRhdGEsXG4gIHBhcnNlUGlwZWxpbmVWYXJpYWJsZXMsXG4gIHJvbGVDb25maWdGcm9tTWV0YWRhdGEsXG4gIHNlY3VyaXR5R3JvdXBDb25maWdGcm9tTWV0YWRhdGEsXG59IGZyb20gJy4uL2NvcmUvbWV0YWRhdGEtYnVpbGRlcic7XG5pbXBvcnQgeyByZXNvbHZlTmV0d29yaywgbmV0d29ya0NvbmZpZ0Zyb21FbnYgfSBmcm9tICcuLi9jb3JlL25ldHdvcmsnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQnVpbGREZWZhdWx0cyB9IGZyb20gJy4uL2NvcmUvbmV0d29yay10eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2RlQnVpbGRTdGVwLCByZXNvbHZlRGVmYXVsdEJ1aWxkSW1hZ2UgfSBmcm9tICcuLi9jb3JlL3BpcGVsaW5lLWhlbHBlcnMnO1xuaW1wb3J0IHsgTWV0YWRhdGFLZXlzLCBUcmlnZ2VyVHlwZSB9IGZyb20gJy4uL2NvcmUvcGlwZWxpbmUtdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBNZXRhRGF0YVR5cGUgfSBmcm9tICcuLi9jb3JlL3BpcGVsaW5lLXR5cGVzJztcbmltcG9ydCB7IHJlc29sdmVSb2xlIH0gZnJvbSAnLi4vY29yZS9yb2xlJztcbmltcG9ydCB0eXBlIHsgUm9sZUNvbmZpZyB9IGZyb20gJy4uL2NvcmUvcm9sZS10eXBlcyc7XG5pbXBvcnQgeyByZXNvbHZlU2VjdXJpdHlHcm91cCB9IGZyb20gJy4uL2NvcmUvc2VjdXJpdHktZ3JvdXAnO1xuXG5jb25zdCBQSVBFTElORV9FVkVOVF9NQVA6IFJlY29yZDxzdHJpbmcsIFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzPiA9IHtcbiAgRkFJTEVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVELFxuICBTVUNDRUVERUQ6IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9TVUNDRUVERUQsXG4gIFNUQVJURUQ6IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzLlBJUEVMSU5FX0VYRUNVVElPTl9TVEFSVEVELFxuICBDQU5DRUxFRDogUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX0NBTkNFTEVELFxuICBTVVBFUlNFREVEOiBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fU1VQRVJTRURFRCxcbn07XG5cbmZ1bmN0aW9uIHBhcnNlTm90aWZpY2F0aW9uRXZlbnRzKHZhbHVlOiB1bmtub3duKTogc3RyaW5nW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcChzID0+IHMudHJpbSgpKTtcbiAgcmV0dXJuIFsnRkFJTEVEJywgJ1NVQ0NFRURFRCddO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFBpcGVsaW5lQnVpbGRlciBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyUHJvcHMge1xuICAvKiogUHJvamVjdCBpZGVudGlmaWVyICh3aWxsIGJlIHNhbml0aXplZCB0byBsb3dlcmNhc2UgYWxwaGFudW1lcmljIHdpdGggdW5kZXJzY29yZXMpICovXG4gIHJlYWRvbmx5IHByb2plY3Q6IHN0cmluZztcblxuICAvKiogT3JnYW5pemF0aW9uIGlkZW50aWZpZXIgKHdpbGwgYmUgc2FuaXRpemVkIHRvIGxvd2VyY2FzZSBhbHBoYW51bWVyaWMgd2l0aCB1bmRlcnNjb3JlcykgKi9cbiAgcmVhZG9ubHkgb3JnYW5pemF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqIFRlbmFudCBpZGVudGlmaWVyIGZvciByZXNvbHZpbmcgcGVyLW9yZyBzZWNyZXRzIGZyb20gQVdTIFNlY3JldHMgTWFuYWdlciAqL1xuICByZWFkb25seSBvcmdJZD86IHN0cmluZztcblxuICAvKiogUGlwZWxpbmUgZGF0YWJhc2UgcmVjb3JkIElEIOKAlCBpbmplY3RlZCBhcyBQSVBFTElORV9JRCBlbnYgdmFyIGZvciBhdXRvbm9tb3VzIHN5bnRoICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lSWQ/OiBzdHJpbmc7XG5cbiAgLyoqIE9wdGlvbmFsIGN1c3RvbSBwaXBlbGluZSBuYW1lLiBEZWZhdWx0cyB0bzoge29yZ2FuaXphdGlvbn0te3Byb2plY3R9LXBpcGVsaW5lICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZT86IHN0cmluZztcblxuICAvKiogR2xvYmFsIG1ldGFkYXRhIGluaGVyaXRlZCBieSBhbGwgcGlwZWxpbmUgc3RlcHMgKi9cbiAgcmVhZG9ubHkgZ2xvYmFsPzogTWV0YURhdGFUeXBlO1xuXG4gIC8qKlxuICAgKiBQaXBlbGluZS1sZXZlbCBDb2RlQnVpbGQgZGVmYXVsdHMgYXBwbGllZCB0byBhbGwgQ29kZUJ1aWxkIGFjdGlvbnNcbiAgICogKHN5bnRoLCBzZWxmLW11dGF0aW9uLCBhc3NldCBwdWJsaXNoaW5nKSB2aWEgYGNvZGVCdWlsZERlZmF1bHRzYC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRzPzogQ29kZUJ1aWxkRGVmYXVsdHM7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIGZvciB0aGUgQ29kZVBpcGVsaW5lLlxuICAgKiBXaGVuIHByb3ZpZGVkLCByZXNvbHZlcyB0byBhIENESyBJUm9sZSBhbmQgaXMgcGFzc2VkIHRvIHRoZSBDb2RlUGlwZWxpbmUgY29uc3RydWN0LlxuICAgKiBXaGVuIG9taXR0ZWQsIENESyBhdXRvLWNyZWF0ZXMgYSByb2xlIHdpdGggdGhlIGNvcnJlY3QgY29kZXBpcGVsaW5lLmFtYXpvbmF3cy5jb20gcHJpbmNpcGFsLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IFJvbGVDb25maWc7XG5cbiAgLyoqIFN5bnRoZXNpcyBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBzb3VyY2UgYW5kIHBsdWdpbiBkZXRhaWxzICovXG4gIHJlYWRvbmx5IHN5bnRoOiBTeW50aE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBpcGVsaW5lIHN0YWdlcywgZWFjaCBjb250YWluaW5nIG9uZSBvciBtb3JlIENvZGVCdWlsZCBzdGVwcy5cbiAgICogU3RhZ2VzIGFyZSBhZGRlZCBhcyB3YXZlcyB0byB0aGUgQ29kZVBpcGVsaW5lIGFmdGVyIHRoZSBzeW50aCBzdGVwLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VzPzogU3RhZ2VPcHRpb25zW107XG5cbiAgLyoqIE9wdGlvbmFsIGNyb24vcmF0ZSBleHByZXNzaW9uIGZvciBzY2hlZHVsZWQgcGlwZWxpbmUgZXhlY3V0aW9uLiAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IHN0cmluZztcblxuICAvKiogQ3VzdG9tIHRhZ3MgYXBwbGllZCB0byBhbGwgcGlwZWxpbmUgcmVzb3VyY2VzLiAqL1xuICByZWFkb25seSB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogUGx1Z2lucyBwcmUtcmVzb2x2ZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXIgc3ludGhgIGZyb20gdGhlIHBsYXRmb3JtIEFQSSxcbiAgICoga2V5ZWQgYnkgYGFsaWFzIHx8IG5hbWVgLiBXaGVuIHByZXNlbnQsIGBQbHVnaW5Mb29rdXAucGx1Z2luKClgIHJldHVybnNcbiAgICogdGhlIG1hdGNoaW5nIGVudHJ5IGRpcmVjdGx5IGFuZCBza2lwcyB0aGUgY3VzdG9tIHJlc291cmNlIOKAlCBzbyB0aGVcbiAgICogc3ludGhlc2l6ZWQgQ0ZOIHRlbXBsYXRlIHNoaXBzIHdpdGggdGhlIHJlYWwgQ29kZUJ1aWxkIGltYWdlIGJha2VkIGluLlxuICAgKiBQb3B1bGF0ZWQgYnkgdGhlIENMSSBiZWZvcmUgaW52b2tpbmcgdGhlIGJvaWxlcnBsYXRlIGFwcDsgQ0RLIGNvbnN1bWVyc1xuICAgKiB3aG8gY29uc3RydWN0IFBpcGVsaW5lQnVpbGRlciBkaXJlY3RseSBub3JtYWxseSBsZWF2ZSB0aGlzIHVuc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRQbHVnaW5zPzogUmVjb3JkPHN0cmluZywgUGx1Z2luPjtcbn1cblxuLyoqXG4gKiBDREsgY29uc3RydWN0IHRoYXQgY3JlYXRlcyBhbmQgY29uZmlndXJlcyBhIENvZGVQaXBlbGluZSBmb3IgY29udGludW91cyBkZXBsb3ltZW50LlxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBNdWx0aS1zb3VyY2Ugc3VwcG9ydCAoUzMsIEdpdEh1YiwgQ29kZVN0YXIpXG4gKiAtIFBsdWdpbi1iYXNlZCBidWlsZCBzdGVwc1xuICogLSBNZXRhZGF0YS1kcml2ZW4gY29uZmlndXJhdGlvblxuICogLSBBdXRvbWF0aWMgdGFnZ2luZ1xuICogLSBBdXRvbWF0aWMgc2FuaXRpemF0aW9uIG9mIHByb2plY3QgYW5kIG9yZ2FuaXphdGlvbiBuYW1lc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBuZXcgUGlwZWxpbmVCdWlsZGVyKHRoaXMsICdNeVBpcGVsaW5lJywge1xuICogICBwcm9qZWN0OiAnbXktYXBwJyxcbiAqICAgb3JnYW5pemF0aW9uOiAnbXktb3JnJyxcbiAqICAgc3ludGg6IHtcbiAqICAgICBzb3VyY2U6IHtcbiAqICAgICAgIHR5cGU6ICdnaXRodWInLFxuICogICAgICAgb3B0aW9uczogeyByZXBvOiAnb3duZXIvcmVwbycsIGJyYW5jaDogJ21haW4nIH1cbiAqICAgICB9LFxuICogICAgIHBsdWdpbjogeyBuYW1lOiAnc3ludGgnIH1cbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFBpcGVsaW5lQnVpbGRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwaXBlbGluZTogQ29kZVBpcGVsaW5lO1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBQaXBlbGluZUNvbmZpZ3VyYXRpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJ1aWxkZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBVc2UgUGlwZWxpbmVDb25maWd1cmF0aW9uIGZvciBhbGwgYnVzaW5lc3MgbG9naWMgKHZhbGlkYXRpb24sIHNhbml0aXphdGlvbiwgbWV0YWRhdGEgbWVyZ2luZylcbiAgICB0aGlzLmNvbmZpZyA9IG5ldyBQaXBlbGluZUNvbmZpZ3VyYXRpb24ocHJvcHMpO1xuXG4gICAgY29uc3Qgc2VydmVyQ29uZmlnID0gQ29uZmlnLmdldCgnc2VydmVyJyk7XG4gICAgY29uc3QgYXdzQ29uZmlnID0gQ29uZmlnLmdldCgnYXdzJyk7XG4gICAgLy8gUGFzcyBvcmcrcHJvamVjdCBzbyBsb2cgZ3JvdXAgLyBJQU0gcm9sZSBuYW1lcyBnZXQgYSBzdGFibGUgaGFzaFxuICAgIC8vIHN1ZmZpeCBwZXIgcGlwZWxpbmUuIFByZXZlbnRzIGBSZXNvdXJjZSBhbHJlYWR5IGV4aXN0c2AgY29sbGlzaW9uc1xuICAgIC8vIGFjcm9zcyBzdGFja3MgZGVwbG95ZWQgdG8gdGhlIHNhbWUgQVdTIGFjY291bnQuXG4gICAgY29uc3QgdW5pcXVlSWQgPSBuZXcgVW5pcXVlSWQoe1xuICAgICAgb3JnYW5pemF0aW9uOiB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24sXG4gICAgICBwcm9qZWN0OiB0aGlzLmNvbmZpZy5wcm9qZWN0LFxuICAgIH0pO1xuICAgIGNvbnN0IHBsdWdpbkxvb2t1cCA9IG5ldyBQbHVnaW5Mb29rdXAoXG4gICAgICB0aGlzLFxuICAgICAgdW5pcXVlSWQuZ2VuZXJhdGUoJ3BsdWdpbjpsb29rdXAnKSxcbiAgICAgIHtcbiAgICAgICAgb3JnYW5pemF0aW9uOiB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24sXG4gICAgICAgIHByb2plY3Q6IHRoaXMuY29uZmlnLnByb2plY3QsXG4gICAgICAgIHBsYXRmb3JtVXJsOiBzZXJ2ZXJDb25maWcucGxhdGZvcm1VcmwsXG4gICAgICAgIHVuaXF1ZUlkLFxuICAgICAgICBvcmdJZDogcHJvcHMub3JnSWQsXG4gICAgICAgIHJ1bnRpbWU6IGF3c0NvbmZpZy5sYW1iZGEucnVudGltZSxcbiAgICAgICAgdGltZW91dDogYXdzQ29uZmlnLmxhbWJkYS50aW1lb3V0LFxuICAgICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiBhd3NDb25maWcubGFtYmRhLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMsXG4gICAgICAgIHJlc29sdmVkUGx1Z2luczogcHJvcHMucmVzb2x2ZWRQbHVnaW5zLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gQ3JlYXRlIHNvdXJjZSBhbmQgYnVpbGQgc3RlcFxuICAgIGNvbnN0IHNvdXJjZUJ1aWxkZXIgPSBuZXcgU291cmNlQnVpbGRlcih0aGlzLCB0aGlzLmNvbmZpZyk7XG4gICAgY29uc3Qgc291cmNlID0gc291cmNlQnVpbGRlci5jcmVhdGUodW5pcXVlSWQpO1xuXG4gICAgLy8gU3ludGgtcGx1Z2luIHJlc29sdXRpb246XG4gICAgLy8gICAxLiBQcmUtcmVzb2x2ZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXIgc3ludGgvZGVwbG95YCBmcm9tIHRoZSBwbGF0Zm9ybVxuICAgIC8vICAgICAgQVBJIOKGkiB1c2UgaXQuIFN5bnRoIHN0ZXAgcnVucyBvbiB0aGUgcmVhbCBgY2RrLXN5bnRoYCBpbWFnZSB3aXRoXG4gICAgLy8gICAgICByZWFsIGNvbW1hbmRzIGJha2VkIGludG8gdGhlIHRlbXBsYXRlLlxuICAgIC8vICAgMi4gT3RoZXJ3aXNlIOKGkiBgYm9vdHN0cmFwKClgOiBjb2xkLXN0YXJ0IGBwaXBlbGluZS1tYW5hZ2VyIHN5bnRoYFxuICAgIC8vICAgICAgb24gdGhlIGNvbmZpZ3VyZWQgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0UgKGRlZmF1bHRcbiAgICAvLyAgICAgIHBpcGVsaW5lLWJvb3RzdHJhcDoxLjApLiBVc2VkIHdoZW4gdGhlIHBsYXRmb3JtIGlzbid0IHJlYWNoYWJsZVxuICAgIC8vICAgICAgYXQgc3ludGggdGltZSAoQ0xJIGxvZ3MgYSB3YXJuaW5nIHBlciBtaXNzZWQgcGx1Z2luKS5cbiAgICAvL1xuICAgIC8vIHBsdWdpbkxvb2t1cC5wbHVnaW4oKSByZWFkcyBgcmVzb2x2ZWRQbHVnaW5zYCBpbnRlcm5hbGx5IGFuZCByZXR1cm5zXG4gICAgLy8gdGhlIGNhY2hlZCBlbnRyeSB3aGVuIHByZXNlbnQg4oCUIHNvIGNhbGxpbmcgaXQgYWx3YXlzIHdpbnMgb3ZlclxuICAgIC8vIGJvb3RzdHJhcCgpIHdoZW4gcHJlLXJlc29sdXRpb24gc3VjY2VlZGVkLlxuICAgIGNvbnN0IHN5bnRoQ2FjaGVLZXkgPVxuICAgICAgdGhpcy5jb25maWcucGx1Z2luLmFsaWFzIHx8IGAke3RoaXMuY29uZmlnLnBsdWdpbi5uYW1lfS1hbGlhc2A7XG4gICAgY29uc3QgcGx1Z2luID0gcHJvcHMucmVzb2x2ZWRQbHVnaW5zPy5bc3ludGhDYWNoZUtleV1cbiAgICAgID8gcGx1Z2luTG9va3VwLnBsdWdpbih0aGlzLmNvbmZpZy5wbHVnaW4pXG4gICAgICA6IHBsdWdpbkxvb2t1cC5ib290c3RyYXAoKTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcHV0ZVR5cGUgPSBhd3NDb25maWcuY29kZUJ1aWxkLmNvbXB1dGVUeXBlO1xuICAgIGNvbnN0IGFydGlmYWN0TWFuYWdlciA9IG5ldyBBcnRpZmFjdE1hbmFnZXIoKTtcbiAgICBjb25zdCBzeW50aEFsaWFzID0gdGhpcy5jb25maWcucGx1Z2luLmFsaWFzID8/IHRoaXMuY29uZmlnLnBsdWdpbi5uYW1lO1xuXG4gICAgLy8gU2NvcGUgZXhwb3NlZCB0byBwbHVnaW4tc3BlYyB0ZW1wbGF0ZXMgYXMgYHBpcGVsaW5lLipgLiBCdWlsdCBvbmNlXG4gICAgLy8gaGVyZSBzbyBib3RoIHRoZSBzeW50aCBzdGVwIGFuZCBldmVyeSBzdGFnZSBzdGVwIHJlc29sdmUgYWdhaW5zdFxuICAgIC8vIHRoZSBzYW1lIHNuYXBzaG90LlxuICAgIGNvbnN0IHBpcGVsaW5lU2NvcGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgcGlwZWxpbmU6IHtcbiAgICAgICAgcHJvamVjdE5hbWU6IHRoaXMuY29uZmlnLnByb2plY3QsXG4gICAgICAgIHByb2plY3Q6IHRoaXMuY29uZmlnLnByb2plY3QsXG4gICAgICAgIG9yZ0lkOiB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24sXG4gICAgICAgIG9yZ2FuaXphdGlvbjogdGhpcy5jb25maWcub3JnYW5pemF0aW9uLFxuICAgICAgICBwaXBlbGluZU5hbWU6IHRoaXMuY29uZmlnLnBpcGVsaW5lTmFtZSxcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCxcbiAgICAgICAgdmFyczogKHByb3BzIGFzIHsgdmFycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnZhcnMgPz8ge30sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBzeW50aCA9IGNyZWF0ZUNvZGVCdWlsZFN0ZXAoe1xuICAgICAgLi4udGhpcy5jb25maWcuc3ludGhDdXN0b21pemF0aW9uLFxuICAgICAgaWQ6IHVuaXF1ZUlkLmdlbmVyYXRlKCdjZGs6c3ludGgnKSxcbiAgICAgIHVuaXF1ZUlkLFxuICAgICAgcGx1Z2luLFxuICAgICAgaW5wdXQ6IHNvdXJjZSxcbiAgICAgIG1ldGFkYXRhOiB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQsXG4gICAgICBuZXR3b3JrOiB0aGlzLmNvbmZpZy5uZXR3b3JrLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICBkZWZhdWx0Q29tcHV0ZVR5cGUsXG4gICAgICBhcnRpZmFjdE1hbmFnZXIsXG4gICAgICBzdGFnZU5hbWU6ICduby1zdGFnZScsXG4gICAgICBzdGFnZUFsaWFzOiAnbm8tc3RhZ2UtYWxpYXMnLFxuICAgICAgcGx1Z2luQWxpYXM6IGAke3N5bnRoQWxpYXN9LWFsaWFzYCxcbiAgICAgIG9yZ0lkOiBwcm9wcy5vcmdJZCxcbiAgICAgIHBpcGVsaW5lU2NvcGUsXG4gICAgfSk7XG5cbiAgICAvLyBSZXNvbHZlIHBpcGVsaW5lLWxldmVsIGRlZmF1bHRzIGludG8gY29kZUJ1aWxkRGVmYXVsdHNcbiAgICAvLyBCdWlsZCB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBzZWNyZXQgbmFtZSBmb3IgQ29kZUJ1aWxkIGVudiB2YXJzXG4gICAgY29uc3QgcGxhdGZvcm1TZWNyZXROYW1lID0gcHJvcHMub3JnSWRcbiAgICAgID8gQ29yZUNvbnN0YW50cy5zZWNyZXRQYXRoKHByb3BzLm9yZ0lkLCAncGxhdGZvcm0nKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb2RlQnVpbGREZWZhdWx0cyA9IHRoaXMucmVzb2x2ZURlZmF1bHRzKHRoaXMuY29uZmlnLmRlZmF1bHRzLCB1bmlxdWVJZCwgcHJvcHMucGlwZWxpbmVJZCwgcGxhdGZvcm1TZWNyZXROYW1lLCBzZXJ2ZXJDb25maWcucGxhdGZvcm1VcmwsIHByb3BzLm9yZ0lkKTtcblxuICAgIC8vIFJlc29sdmUgSUFNIHJvbGU6IGV4cGxpY2l0IHByb3Agd2lucywgZWxzZSBgaWFtOnJvbGVgIG1ldGFkYXRhLCBlbHNlIGxldFxuICAgIC8vIENESyBhdXRvLWNyZWF0ZSB0aGUgcGlwZWxpbmUgcm9sZSAoY29kZXBpcGVsaW5lLmFtYXpvbmF3cy5jb20gcHJpbmNpcGFsKS5cbiAgICBjb25zdCByb2xlQ29uZmlnID0gcHJvcHMucm9sZSA/PyByb2xlQ29uZmlnRnJvbU1ldGFkYXRhKHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCk7XG4gICAgaWYgKHJvbGVDb25maWc/LnR5cGUgPT09ICdjb2RlQnVpbGREZWZhdWx0Jykge1xuICAgICAgY3JlYXRlTG9nZ2VyKCdwaXBlbGluZS1idWlsZGVyJykud2FybihcbiAgICAgICAgJ2NvZGVCdWlsZERlZmF1bHQgcm9sZSB0eXBlIHVzZXMgY29kZWJ1aWxkLmFtYXpvbmF3cy5jb20gdHJ1c3QgcHJpbmNpcGFsIOKAlCAnICtcbiAgICAgICAgJ3RoaXMgaXMgbm90IHN1aXRhYmxlIGFzIHRoZSBwaXBlbGluZS1sZXZlbCByb2xlLiBDb25zaWRlciB1c2luZyByb2xlQXJuL3JvbGVOYW1lICcgK1xuICAgICAgICAnb3Igb21pdHRpbmcgdGhlIHJvbGUgdG8gbGV0IENESyBhdXRvLWNyZWF0ZSBvbmUgd2l0aCBjb2RlcGlwZWxpbmUuYW1hem9uYXdzLmNvbS4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3Qgcm9sZSA9IHJvbGVDb25maWdcbiAgICAgID8gcmVzb2x2ZVJvbGUodGhpcywgdW5pcXVlSWQsIHJvbGVDb25maWcpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIOKUgOKUgCBBcnRpZmFjdCBidWNrZXQgKEtNUyBlbmNyeXB0aW9uICsgcmV0ZW50aW9uKSDilIDilIBcbiAgICAvLyBXaGVuIGBlbmNyeXB0aW9uLmttc0tleUFybmAgYW5kL29yIGBvcGVyYXRpb25zLmFydGlmYWN0UmV0ZW50aW9uRGF5c2AgYXJlXG4gICAgLy8gc2V0IHdlIGNyZWF0ZSBhIGN1c3RvbSBhcnRpZmFjdCBidWNrZXQgYW5kIHBhc3MgaXQgdG8gQ29kZVBpcGVsaW5lOyB0aGF0XG4gICAgLy8gaXMgdGhlIG9ubHkgd2F5IHRvIGF0dGFjaCBhIGN1c3RvbWVyLW1hbmFnZWQga2V5ICh0aGUgTDMgY29uc3RydWN0IGV4cG9zZXNcbiAgICAvLyBgYXJ0aWZhY3RCdWNrZXRgLCBub3QgYGVuY3J5cHRpb25LZXlgKS4gQWJzZW50IGJvdGgga2V5cywgQ0RLIGF1dG8tY3JlYXRlc1xuICAgIC8vIHRoZSBidWNrZXQgYW5kIGJlaGF2aW9yIGlzIHVuY2hhbmdlZC5cbiAgICBjb25zdCBhcnRpZmFjdEJ1Y2tldCA9IHRoaXMuYnVpbGRBcnRpZmFjdEJ1Y2tldCgpO1xuXG4gICAgLy8gQ3JlYXRlIENvZGVQaXBlbGluZSBjb25zdHJ1Y3RcbiAgICB0aGlzLnBpcGVsaW5lID0gbmV3IENvZGVQaXBlbGluZSh0aGlzLCB1bmlxdWVJZC5nZW5lcmF0ZSgncGlwZWxpbmVzOmNvZGVwaXBlbGluZScpLCB7XG4gICAgICAuLi4oY29kZUJ1aWxkRGVmYXVsdHMgJiYgeyBjb2RlQnVpbGREZWZhdWx0cyB9KSxcbiAgICAgIC4uLihyb2xlICYmIHsgcm9sZSB9KSxcbiAgICAgIC4uLihhcnRpZmFjdEJ1Y2tldCAmJiB7IGFydGlmYWN0QnVja2V0IH0pLFxuICAgICAgcGlwZWxpbmVUeXBlOiBQaXBlbGluZVR5cGUuVjIsXG4gICAgICBwaXBlbGluZU5hbWU6IHRoaXMuY29uZmlnLnBpcGVsaW5lTmFtZSxcbiAgICAgIHN5bnRoLFxuICAgICAgLi4ubWV0YWRhdGFGb3JDb2RlUGlwZWxpbmUodGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zdGFnZXMpIHtcbiAgICAgIGNvbnN0IHN0YWdlQnVpbGRlciA9IG5ldyBTdGFnZUJ1aWxkZXIoe1xuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgcGx1Z2luTG9va3VwLFxuICAgICAgICB1bmlxdWVJZCxcbiAgICAgICAgZ2xvYmFsTWV0YWRhdGE6IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZCxcbiAgICAgICAgZGVmYXVsdENvbXB1dGVUeXBlLFxuICAgICAgICBhcnRpZmFjdE1hbmFnZXIsXG4gICAgICAgIG9yZ0lkOiBwcm9wcy5vcmdJZCxcbiAgICAgICAgcGlwZWxpbmVTY29wZSxcbiAgICAgIH0pO1xuICAgICAgc3RhZ2VCdWlsZGVyLmFkZFN0YWdlcyh0aGlzLnBpcGVsaW5lLCBwcm9wcy5zdGFnZXMpO1xuICAgIH1cblxuICAgIC8vIOKUgOKUgCBUYWdzIOKUgOKUgFxuICAgIC8vIFRoZSBmaXJzdCB0aHJlZSBhcmUgb3BlcmF0aW9ucy1lc3NlbnRpYWwgYW5kIHVzZWQgYnkgYHBpcGVsaW5lLW1hbmFnZXJcbiAgICAvLyBhdWRpdC1zdGFja3NgIHRvIGRpZmYgQ0ZOIHN0YWNrcyBhZ2FpbnN0IHRoZSBwaXBlbGluZV9yZWdpc3RyeSB0YWJsZS5cbiAgICAvLyBgT3JnSWRgIGlzIHRoZSBjYW5vbmljYWwga2V5IGZvciBjb3N0IGF0dHJpYnV0aW9uIChBV1MgQ29zdCBFeHBsb3JlclxuICAgIC8vIGdyb3VwcyBieSB0YWcga2V5L3ZhbHVlIHdoZW4gYWN0aXZhdGVkIGluIEJpbGxpbmcgc2V0dGluZ3MpLlxuICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdwaXBlbGluZS1idWlsZGVyJywgJ3RydWUnKTtcbiAgICBUYWdzLm9mKHRoaXMucGlwZWxpbmUpLmFkZCgncHJvamVjdCcsIHRoaXMuY29uZmlnLnByb2plY3QpO1xuICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdvcmdhbml6YXRpb24nLCB0aGlzLmNvbmZpZy5vcmdhbml6YXRpb24pO1xuICAgIGlmIChwcm9wcy5vcmdJZCkge1xuICAgICAgVGFncy5vZih0aGlzLnBpcGVsaW5lKS5hZGQoJ09yZ0lkJywgcHJvcHMub3JnSWQpO1xuICAgIH1cbiAgICAvLyBTdGFibGUgZXZlbnQtcmVwb3J0aW5nIGtleS4gQXBwbGllZCBhdCBzeW50aCAodGhlIHBpcGVsaW5lSWQgaXMga25vd25cbiAgICAvLyBoZXJlKSwgc28gaXQncyBwcmVzZW50IGZyb20gc3RhY2sgY3JlYXRpb24g4oCUIHRoZSBldmVudHMgTGFtYmRhIHJlYWRzIHRoaXNcbiAgICAvLyB0YWcgdG8gYXR0cmlidXRlIENvZGVQaXBlbGluZSBzdGF0ZS1jaGFuZ2UgZXZlbnRzIHRvIHRoZSBwaXBlbGluZSB3aXRob3V0XG4gICAgLy8gZXZlciBoYW5kbGluZyB0aGUgQVJOL2FjY291bnQuIFNlZSBwYWNrYWdlcy9waXBlbGluZS1ldmVudHMuXG4gICAgaWYgKHByb3BzLnBpcGVsaW5lSWQpIHtcbiAgICAgIFRhZ3Mub2YodGhpcy5waXBlbGluZSkuYWRkKCdQSVBFTElORV9FVkVOVF9JRCcsIHByb3BzLnBpcGVsaW5lSWQpO1xuICAgIH1cbiAgICBpZiAocHJvcHMudGFncykge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMudGFncykpIHtcbiAgICAgICAgVGFncy5vZih0aGlzLnBpcGVsaW5lKS5hZGQoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGludGVybmFsIHBpcGVsaW5lIGJlZm9yZSBhY2Nlc3NpbmcgaXRzIHByb3BlcnRpZXNcbiAgICB0aGlzLnBpcGVsaW5lLmJ1aWxkUGlwZWxpbmUoKTtcbiAgICBjb25zdCBjZGtQaXBlbGluZSA9IHRoaXMucGlwZWxpbmUucGlwZWxpbmU7XG4gICAgY29uc3QgbWV0YSA9IHRoaXMuY29uZmlnLm1ldGFkYXRhLm1lcmdlZDtcblxuICAgIC8vIOKUgOKUgCBQaXBlbGluZS1sZXZlbCBWYXJpYWJsZXMgKENvZGVQaXBlbGluZSBWMikg4pSA4pSAXG4gICAgZm9yIChjb25zdCB2IG9mIHBhcnNlUGlwZWxpbmVWYXJpYWJsZXMobWV0YVtNZXRhZGF0YUtleXMuUElQRUxJTkVfVkFSSUFCTEVTXSkpIHtcbiAgICAgIGNka1BpcGVsaW5lLmFkZFZhcmlhYmxlKG5ldyBWYXJpYWJsZSh7XG4gICAgICAgIHZhcmlhYmxlTmFtZTogdi5uYW1lLFxuICAgICAgICAuLi4odi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiB7IGRlZmF1bHRWYWx1ZTogdi5kZWZhdWx0VmFsdWUgfSksXG4gICAgICAgIC4uLih2LmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiYgeyBkZXNjcmlwdGlvbjogdi5kZXNjcmlwdGlvbiB9KSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgU05TIE5vdGlmaWNhdGlvbnMg4pSA4pSAXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uVG9waWNBcm4gPSBtZXRhW01ldGFkYXRhS2V5cy5OT1RJRklDQVRJT05fVE9QSUNfQVJOXTtcbiAgICBpZiAodHlwZW9mIG5vdGlmaWNhdGlvblRvcGljQXJuID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdG9waWMgPSBzbnMuVG9waWMuZnJvbVRvcGljQXJuKHRoaXMsICdOb3RpZmljYXRpb25Ub3BpYycsIG5vdGlmaWNhdGlvblRvcGljQXJuKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV2ZW50cyA9IHBhcnNlTm90aWZpY2F0aW9uRXZlbnRzKG1ldGFbTWV0YWRhdGFLZXlzLk5PVElGSUNBVElPTl9FVkVOVFNdKVxuICAgICAgICAubWFwKGUgPT4gUElQRUxJTkVfRVZFTlRfTUFQW2UudG9VcHBlckNhc2UoKV0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBpZiAobm90aWZpY2F0aW9uRXZlbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY2RrUGlwZWxpbmUubm90aWZ5T24oJ1BpcGVsaW5lTm90aWZpY2F0aW9uJywgdG9waWMsIHsgZXZlbnRzOiBub3RpZmljYXRpb25FdmVudHMgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIFNjaGVkdWxlZCBFeGVjdXRpb24g4pSA4pSAXG4gICAgaWYgKHByb3BzLnN5bnRoLnNvdXJjZS5vcHRpb25zPy50cmlnZ2VyID09PSBUcmlnZ2VyVHlwZS5TQ0hFRFVMRSB8fCBwcm9wcy5zY2hlZHVsZSkge1xuICAgICAgY29uc3QgZXhwciA9IHByb3BzLnNjaGVkdWxlIHx8IChwcm9wcy5zeW50aC5zb3VyY2Uub3B0aW9ucyBhcyB7IHNjaGVkdWxlPzogc3RyaW5nIH0pPy5zY2hlZHVsZSB8fCAncmF0ZSgxIGRheSknO1xuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdTY2hlZHVsZVJ1bGUnLCB7XG4gICAgICAgIHNjaGVkdWxlOiBldmVudHMuU2NoZWR1bGUuZXhwcmVzc2lvbihleHByKSxcbiAgICAgICAgdGFyZ2V0czogW25ldyB0YXJnZXRzLkNvZGVQaXBlbGluZShjZGtQaXBlbGluZSldLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8g4pSA4pSAIEV4ZWN1dGlvbiBFdmVudCBUcmFja2luZyAoZm9yd2FyZCBwaXBlbGluZSBzdGF0ZSBjaGFuZ2VzIHRvIFNOUykg4pSA4pSAXG4gICAgaWYgKG1ldGFbTWV0YWRhdGFLZXlzLkVOQUJMRV9FWEVDVVRJT05fRVZFTlRTXSAmJiB0eXBlb2Ygbm90aWZpY2F0aW9uVG9waWNBcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ0V4ZWN1dGlvbkV2ZW50UnVsZScsIHtcbiAgICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgICAgc291cmNlOiBbJ2F3cy5jb2RlcGlwZWxpbmUnXSxcbiAgICAgICAgICBkZXRhaWxUeXBlOiBbJ0NvZGVQaXBlbGluZSBQaXBlbGluZSBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbY2RrUGlwZWxpbmUucGlwZWxpbmVBcm5dLFxuICAgICAgICB9LFxuICAgICAgICB0YXJnZXRzOiBbbmV3IHRhcmdldHMuU25zVG9waWMoXG4gICAgICAgICAgc25zLlRvcGljLmZyb21Ub3BpY0Fybih0aGlzLCAnRXhlY3V0aW9uRXZlbnRUb3BpYycsIG5vdGlmaWNhdGlvblRvcGljQXJuKSxcbiAgICAgICAgKV0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDilIDilIAgUGlwZWxpbmUgTWV0cmljcyAmIEFsYXJtcyDilIDilIBcbiAgICBjb25zdCBlbmFibGVNZXRyaWNzID0gdGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkW01ldGFkYXRhS2V5cy5FTkFCTEVfTUVUUklDU107XG4gICAgaWYgKGVuYWJsZU1ldHJpY3MpIHtcbiAgICAgIG5ldyBjbG91ZHdhdGNoLkFsYXJtKHRoaXMsICdQaXBlbGluZUZhaWx1cmVBbGFybScsIHtcbiAgICAgICAgbWV0cmljOiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgICAgIG5hbWVzcGFjZTogJ0FXUy9Db2RlUGlwZWxpbmUnLFxuICAgICAgICAgIG1ldHJpY05hbWU6ICdGYWlsZWRQaXBlbGluZUV4ZWN1dGlvbkNvdW50JyxcbiAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7IFBpcGVsaW5lTmFtZTogdGhpcy5jb25maWcucGlwZWxpbmVOYW1lIH0sXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgIH0pLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBgUGlwZWxpbmUgJHt0aGlzLmNvbmZpZy5waXBlbGluZU5hbWV9IGV4ZWN1dGlvbiBmYWlsZWRgLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGNsb3Vkd2F0Y2guQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IGNsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY3VzdG9tIGFydGlmYWN0IGJ1Y2tldCB3aGVuIGBlbmNyeXB0aW9uLmttc0tleUFybmAgYW5kL29yXG4gICAqIGBvcGVyYXRpb25zLmFydGlmYWN0UmV0ZW50aW9uRGF5c2AgYXJlIHNldC4gUmV0dXJucyB1bmRlZmluZWQgb3RoZXJ3aXNlIHNvXG4gICAqIENESyBhdXRvLWNyZWF0ZXMgdGhlIGRlZmF1bHQgYXJ0aWZhY3QgYnVja2V0ICh1bmNoYW5nZWQgYmVoYXZpb3IpLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFydGlmYWN0QnVja2V0KCk6IHMzLklCdWNrZXQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldGEgPSB0aGlzLmNvbmZpZy5tZXRhZGF0YS5tZXJnZWQ7XG4gICAgY29uc3Qga21zS2V5QXJuID0gdHlwZW9mIG1ldGFbTWV0YWRhdGFLZXlzLktNU19LRVlfQVJOXSA9PT0gJ3N0cmluZydcbiAgICAgID8gKG1ldGFbTWV0YWRhdGFLZXlzLktNU19LRVlfQVJOXSBhcyBzdHJpbmcpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXRlbnRpb25EYXlzID0gYXNJbnQobWV0YVtNZXRhZGF0YUtleXMuQVJUSUZBQ1RfUkVURU5USU9OX0RBWVNdKTtcblxuICAgIGlmICgha21zS2V5QXJuICYmIHJldGVudGlvbkRheXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGVuY3J5cHRpb25LZXkgPSBrbXNLZXlBcm5cbiAgICAgID8ga21zLktleS5mcm9tS2V5QXJuKHRoaXMsICdBcnRpZmFjdEtleScsIGttc0tleUFybilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnQXJ0aWZhY3RCdWNrZXQnLCB7XG4gICAgICBlbmNyeXB0aW9uOiBlbmNyeXB0aW9uS2V5ID8gczMuQnVja2V0RW5jcnlwdGlvbi5LTVMgOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICAuLi4oZW5jcnlwdGlvbktleSAmJiB7IGVuY3J5cHRpb25LZXkgfSksXG4gICAgICAuLi4ocmV0ZW50aW9uRGF5cyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7IGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMocmV0ZW50aW9uRGF5cykgfV0sXG4gICAgICB9KSxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogczMuQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgfSk7XG4gICAgVGFncy5vZihidWNrZXQpLmFkZCgncGlwZWxpbmUnLCB0aGlzLmNvbmZpZy5waXBlbGluZU5hbWUpO1xuICAgIHJldHVybiBidWNrZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgQ29kZUJ1aWxkRGVmYXVsdHMgaW50byB0aGUgc2hhcGUgZXhwZWN0ZWQgYnkgQ0RLJ3MgY29kZUJ1aWxkRGVmYXVsdHMuXG4gICAqIENvbWJpbmVzIG5ldHdvcmsgY29uZmlnLCBzZWN1cml0eSBncm91cHMsIGFuZCBwaXBlbGluZS1sZXZlbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICogKFBJUEVMSU5FX0lELCBFWEVDVVRJT05fSUQsIFBMQVRGT1JNX0JBU0VfVVJMKSBhdmFpbGFibGUgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlRGVmYXVsdHMoXG4gICAgZGVmYXVsdHM6IENvZGVCdWlsZERlZmF1bHRzIHwgdW5kZWZpbmVkLFxuICAgIGlkOiBVbmlxdWVJZCxcbiAgICBwaXBlbGluZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcGxhdGZvcm1TZWNyZXROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcGxhdGZvcm1Vcmw6IHN0cmluZyxcbiAgICBvcmdJZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICApOiBDb2RlQnVpbGRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBQZXItcGlwZWxpbmUgbmV0d29yayBjb25maWcgd2luczsgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBhbiBlbnYtZHJpdmVuXG4gICAgLy8gZ2xvYmFsIFZQQyAoaW50ZXJuYWwgLyBpbnNpZGUtQVdTLW9ubHkgbW9kZSkgc28gZXZlcnkgcGlwZWxpbmUnc1xuICAgIC8vIENvZGVCdWlsZCBydW5zIGluIHRoZSBWUEMgYW5kIGNhbiByZWFjaCB0aGUgcHJpdmF0ZSBnYXRld2F5LiBVbnNldCBpblxuICAgIC8vIHB1YmxpYyBkZXBsb3lzIOKGkiBDb2RlQnVpbGQgc3RheXMgaW4gdGhlIEFXUy1tYW5hZ2VkIG5ldHdvcmsuXG4gICAgLy8gUHJlY2VkZW5jZTogZXhwbGljaXQgcHJvcCA+IGBlYzI6bmV0d29ya2AgbWV0YWRhdGEgPiBlbnYtZHJpdmVuIGdsb2JhbCBWUEMuXG4gICAgY29uc3QgbmV0d29yayA9IGRlZmF1bHRzPy5uZXR3b3JrID8/IG5ldHdvcmtDb25maWdGcm9tTWV0YWRhdGEodGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkKSA/PyBuZXR3b3JrQ29uZmlnRnJvbUVudigpO1xuICAgIGNvbnN0IG5ldHdvcmtQcm9wcyA9IG5ldHdvcmtcbiAgICAgID8gcmVzb2x2ZU5ldHdvcmsodGhpcywgaWQsIG5ldHdvcmspXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIFNhbWUgcHJlY2VkZW5jZSBmb3Igc3RhbmRhbG9uZSBzZWN1cml0eSBncm91cHMgKHByb3AgPiBgZWMyOnNlY3VyaXR5Z3JvdXBgIG1ldGFkYXRhKS5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwQ29uZmlnID0gZGVmYXVsdHM/LnNlY3VyaXR5R3JvdXBzID8/IHNlY3VyaXR5R3JvdXBDb25maWdGcm9tTWV0YWRhdGEodGhpcy5jb25maWcubWV0YWRhdGEubWVyZ2VkKTtcbiAgICBjb25zdCBzdGFuZGFsb25lU2VjdXJpdHlHcm91cHMgPSBzZWN1cml0eUdyb3VwQ29uZmlnXG4gICAgICA/IHJlc29sdmVTZWN1cml0eUdyb3VwKHRoaXMsIGlkLCBzZWN1cml0eUdyb3VwQ29uZmlnKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBQaXBlbGluZS1sZXZlbCBlbnYgdmFycyBhdmFpbGFibGUgdG8gYWxsIENvZGVCdWlsZCBhY3Rpb25zXG4gICAgLy8gTm90ZTogI3tjb2RlcGlwZWxpbmUuKn0gcmVzb2x2ZWQgdmFyaWFibGVzIG11c3QgZ28gdGhyb3VnaCBDb2RlQnVpbGRTdGVwLmVudlxuICAgIC8vIChhY3Rpb24tbGV2ZWwpLCBub3QgYnVpbGRFbnZpcm9ubWVudC5lbnZpcm9ubWVudFZhcmlhYmxlcyAocHJvamVjdC1sZXZlbCkuXG4gICAgY29uc3QgcGlwZWxpbmVFbnZWYXJzOiBSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBzdHJpbmcgfT4gPSB7XG4gICAgICBQTEFURk9STV9CQVNFX1VSTDogeyB2YWx1ZTogcGxhdGZvcm1VcmwgfSxcbiAgICAgIC4uLihwaXBlbGluZUlkICYmIHsgUElQRUxJTkVfSUQ6IHsgdmFsdWU6IHBpcGVsaW5lSWQgfSB9KSxcbiAgICAgIC4uLihwbGF0Zm9ybVNlY3JldE5hbWUgJiYgeyBQTEFURk9STV9TRUNSRVRfTkFNRTogeyB2YWx1ZTogcGxhdGZvcm1TZWNyZXROYW1lIH0gfSksXG4gICAgICAvLyBQcm9wYWdhdGUgVExTIHZlcmlmaWNhdGlvbiBzZXR0aW5nIHNvIGFsbCBDb2RlQnVpbGQgc3RlcHMgY2FuIHJlYWNoXG4gICAgICAvLyB0aGUgcGxhdGZvcm0gQVBJIHdoZW4gdXNpbmcgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzXG4gICAgICAuLi4ocHJvY2Vzcy5lbnYuTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCA9PT0gJzAnICYmIHtcbiAgICAgICAgTk9ERV9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRDogeyB2YWx1ZTogJzAnIH0sXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VjdXJpdHlHcm91cHMgPSBbXG4gICAgICAuLi4obmV0d29ya1Byb3BzPy5zZWN1cml0eUdyb3VwcyA/PyBbXSksXG4gICAgICAuLi4oc3RhbmRhbG9uZVNlY3VyaXR5R3JvdXBzID8/IFtdKSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihuZXR3b3JrUHJvcHMgJiYgeyB2cGM6IG5ldHdvcmtQcm9wcy52cGMsIHN1Ym5ldFNlbGVjdGlvbjogbmV0d29ya1Byb3BzLnN1Ym5ldFNlbGVjdGlvbiB9KSxcbiAgICAgIC4uLihzZWN1cml0eUdyb3Vwcy5sZW5ndGggPiAwICYmIHsgc2VjdXJpdHlHcm91cHMgfSksXG4gICAgICAvLyBidWlsZEltYWdlIGF0IHRoaXMgbGV2ZWwgcmVhY2hlcyBDREsgUGlwZWxpbmVzJyBpbnRlcm5hbGx5LXdyYXBwZWRcbiAgICAgIC8vIFNoZWxsU3RlcCBDb2RlQnVpbGQgYWN0aW9uLCB3aGljaCBvdGhlcndpc2UgaGFyZGNvZGVzXG4gICAgICAvLyBgTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMGAuIFNldHRpbmcgaXQgaGVyZSBjbG9zZXMgdGhlIGdhcFxuICAgICAgLy8gZXhwb3NlZCBpbiB0aGUgc2FtZSBlbnYgdmFyIChgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VgKSB0aGF0IHRoZVxuICAgICAgLy8gQ29kZUJ1aWxkU3RlcCBwYXRoIGFscmVhZHkgaG9ub3JzIHZpYSByZXNvbHZlUGx1Z2luSW1hZ2UoKSdzXG4gICAgICAvLyBmYWxsYmFjay4gUGVyLXN0ZXAgYGJ1aWxkSW1hZ2VgIG9uIGEgQ29kZUJ1aWxkU3RlcCBzdGlsbCB3aW5zLlxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiByZXNvbHZlRGVmYXVsdEJ1aWxkSW1hZ2UodGhpcywgb3JnSWQpLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogcGlwZWxpbmVFbnZWYXJzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -30,8 +30,8 @@
30
30
  "constructs": "10.5.1",
31
31
  "jsonwebtoken": "9.0.3",
32
32
  "uuid": "13.0.0",
33
- "@pipeline-builder/api-core": "3.4.60",
34
- "@pipeline-builder/pipeline-data": "3.4.61"
33
+ "@pipeline-builder/api-core": "3.4.62",
34
+ "@pipeline-builder/pipeline-data": "3.4.63"
35
35
  },
36
36
  "keywords": [
37
37
  "aws",
@@ -75,7 +75,7 @@
75
75
  "access": "public",
76
76
  "registry": "https://registry.npmjs.org/"
77
77
  },
78
- "version": "3.4.66",
78
+ "version": "3.4.68",
79
79
  "bugs": {
80
80
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
81
81
  },