@pipeline-builder/pipeline-core 3.3.33 → 3.3.35

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.
@@ -118,6 +118,17 @@ export interface RegistryConfig {
118
118
  readonly http: boolean;
119
119
  /** Skip TLS certificate verification for self-signed certs (env: `DOCKER_REGISTRY_INSECURE`). Defaults to true. */
120
120
  readonly insecure: boolean;
121
+ /**
122
+ * AWS Secrets Manager secret name containing CodeBuild image-pull
123
+ * credentials in the standard `{ "username": "...", "password": "..." }`
124
+ * JSON shape. Defaults to `pipeline-builder/system/registry`.
125
+ *
126
+ * Override via `IMAGE_REGISTRY_CREDS_SECRET` if you store the creds
127
+ * under a different name. Cannot share with `pipeline-builder/system/platform`
128
+ * — that secret stores a JWT, which has a different schema; CodeBuild's
129
+ * docker-pull credentials API requires `username`/`password` keys.
130
+ */
131
+ readonly credentialsSecret: string;
121
132
  }
122
133
  export interface RedisConfig {
123
134
  readonly host: string;
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBBcmNoaXRlY3R1cmUsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcblxuLyoqXG4gKiBUeXBlLXNhZmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBzZXJ2ZXI6IFNlcnZlckNvbmZpZztcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENvbmZpZztcbiAgcmVhZG9ubHkgZGF0YWJhc2U6IERhdGFiYXNlQ29uZmlnO1xuICByZWFkb25seSByZWdpc3RyeTogUmVnaXN0cnlDb25maWc7XG4gIHJlYWRvbmx5IHJlZGlzOiBSZWRpc0NvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgSldUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICByZWFkb25seSB1c2VyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRva2VuOiBzdHJpbmc7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqIFVzZSBwbGFpbiBIVFRQIGluc3RlYWQgb2YgSFRUUFMgKGVudjogYERPQ0tFUl9SRUdJU1RSWV9IVFRQYCkuIERlZmF1bHRzIHRvIHRydWUuICovXG4gIHJlYWRvbmx5IGh0dHA6IGJvb2xlYW47XG4gIC8qKiBTa2lwIFRMUyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZm9yIHNlbGYtc2lnbmVkIGNlcnRzIChlbnY6IGBET0NLRVJfUkVHSVNUUllfSU5TRUNVUkVgKS4gRGVmYXVsdHMgdG8gdHJ1ZS4gKi9cbiAgcmVhZG9ubHkgaW5zZWN1cmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNDb25maWcge1xuICByZWFkb25seSBob3N0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdWlsZENvbmZpZyB7XG4gIHJlYWRvbmx5IGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGJhY2tvZmZEZWxheU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHdvcmtlclRpbWVvdXRNczogbnVtYmVyO1xuICByZWFkb25seSB0ZW1wRGlyTWF4QWdlTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxTWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgZGxxQmFja29mZkJhc2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRDb25maWcge1xuICAvKiogQnVpbGQgc3RyYXRlZ3k6ICdwb2RtYW4nIChkZWZhdWx0KSwgJ2RvY2tlcicsIG9yICdrYW5pa28nLiAqL1xuICByZWFkb25seSBzdHJhdGVneTogJ2RvY2tlcicgfCAna2FuaWtvJyB8ICdwb2RtYW4nO1xuICAvKiogUm9vdCBkaXJlY3RvcnkgZm9yIGJ1aWxkIHRlbXAgZmlsZXMuICovXG4gIHJlYWRvbmx5IHRlbXBSb290OiBzdHJpbmc7XG4gIC8qKiBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQdXNoIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSBwdXNoVGltZW91dE1zOiBudW1iZXI7XG4gIC8qKiBQYXRoIHRvIEthbmlrbyBleGVjdXRvciBiaW5hcnkgKG9ubHkgdXNlZCB3aGVuIHN0cmF0ZWd5PWthbmlrbykuICovXG4gIHJlYWRvbmx5IGthbmlrb0V4ZWN1dG9yOiBzdHJpbmc7XG4gIC8qKiBLYW5pa28gbGF5ZXIgY2FjaGUgZGlyZWN0b3J5IChvbmx5IHVzZWQgd2hlbiBzdHJhdGVneT1rYW5pa28pLiAqL1xuICByZWFkb25seSBrYW5pa29DYWNoZURpcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmFiaWxpdHlDb25maWcge1xuICByZWFkb25seSBsb2dMZXZlbDogc3RyaW5nO1xuICByZWFkb25seSBsb2dGb3JtYXQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdHJhY2luZzoge1xuICAgIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgZW5kcG9pbnQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgc2NhblNjaGVkdWxlckludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqIFdoZW4gZmFsc2UsIHRoZSBzY2hlZHVsZXIgc2tpcHMgc2NhbnMvc2NoZWR1bGVzIGZvciB0aGUgc3lzdGVtIG9yZy4gRGVmYXVsdDogZmFsc2UuICovXG4gIHJlYWRvbmx5IHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBV1NDb25maWcge1xuICByZWFkb25seSBsYW1iZGE6IHtcbiAgICByZWFkb25seSBydW50aW1lOiBSdW50aW1lO1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IER1cmF0aW9uO1xuICAgIHJlYWRvbmx5IG1lbW9yeVNpemU6IG51bWJlcjtcbiAgICByZWFkb25seSBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZTtcbiAgICByZWFkb25seSByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zPzogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSBsb2dnaW5nOiB7XG4gICAgcmVhZG9ubHkgZ3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzO1xuICAgIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3k7XG4gIH07XG4gIHJlYWRvbmx5IGNvZGVCdWlsZDoge1xuICAgIHJlYWRvbmx5IGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZTtcbiAgfTtcbiAgLyoqIFdoZW4gdHJ1ZSwgcmVzb2x2ZSBzeW50aCBwbHVnaW4gdmlhIGN1c3RvbSByZXNvdXJjZSBMYW1iZGEgYXQgZGVwbG95IHRpbWUuXG4gICAqICBXaGVuIGZhbHNlIChkZWZhdWx0KSwgdXNlIGZhbGxiYWNrIHN5bnRoIGNvbW1hbmRzIChwaXBlbGluZS1tYW5hZ2VyIHN5bnRoKS4gKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRTeW50aFBsdWdpbjogYm9vbGVhbjtcbn1cblxuLyoqIEV4cHJlc3MgcmF0ZSBsaW1pdGluZyBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXRlTGltaXRDb25maWcge1xuICAvKiogTWF4aW11bSByZXF1ZXN0cyBwZXIgd2luZG93IChlbnY6IGBMSU1JVEVSX01BWGApLiAqL1xuICByZWFkb25seSBtYXg6IG51bWJlcjtcbiAgLyoqIFJhdGUgbGltaXQgd2luZG93IGluIG1pbGxpc2Vjb25kcyAoZW52OiBgTElNSVRFUl9XSU5ET1dNU2ApLiAqL1xuICByZWFkb25seSB3aW5kb3dNczogbnVtYmVyO1xuICAvKiogSW5jbHVkZSBsZWdhY3kgYFgtUmF0ZUxpbWl0LSpgIGhlYWRlcnMuICovXG4gIHJlYWRvbmx5IGxlZ2FjeUhlYWRlcnM6IGJvb2xlYW47XG4gIC8qKiBJbmNsdWRlIHN0YW5kYXJkIGBSYXRlTGltaXQtKmAgaGVhZGVycyAoUkZDIDY1ODUpLiAqL1xuICByZWFkb25seSBzdGFuZGFyZEhlYWRlcnM6IGJvb2xlYW47XG59XG5cbi8qKiBQcmljZSBjb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBiaWxsaW5nIHBsYW4gKGluIGNlbnRzKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ1BsYW5QcmljZXMge1xuICByZWFkb25seSBtb250aGx5OiBudW1iZXI7XG4gIHJlYWRvbmx5IGFubnVhbDogbnVtYmVyO1xufVxuXG4vKiogRnVsbCBiaWxsaW5nIHBsYW4gZGVmaW5pdGlvbiB1c2VkIGZvciBzZWVkaW5nIGFuZCBydW50aW1lIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdQbGFuQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICByZWFkb25seSB0aWVyOiBRdW90YVRpZXI7XG4gIHJlYWRvbmx5IHByaWNlczogQmlsbGluZ1BsYW5QcmljZXM7XG4gIHJlYWRvbmx5IGZlYXR1cmVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaXNBY3RpdmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzRGVmYXVsdDogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc29ydE9yZGVyOiBudW1iZXI7XG59XG5cbi8qKiBCaWxsaW5nIHBsYW5zIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbGxpbmdDb25maWcge1xuICByZWFkb25seSBwbGFuczogcmVhZG9ubHkgQmlsbGluZ1BsYW5Db25maWdbXTtcbn1cbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBRdW90YVRpZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDb21wdXRlVHlwZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBBcmNoaXRlY3R1cmUsIFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB0eXBlIHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQWxnb3JpdGhtIH0gZnJvbSAnanNvbndlYnRva2VuJztcblxuLyoqXG4gKiBUeXBlLXNhZmUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBzZXJ2ZXI6IFNlcnZlckNvbmZpZztcbiAgcmVhZG9ubHkgYXV0aDogQXV0aENvbmZpZztcbiAgcmVhZG9ubHkgZGF0YWJhc2U6IERhdGFiYXNlQ29uZmlnO1xuICByZWFkb25seSByZWdpc3RyeTogUmVnaXN0cnlDb25maWc7XG4gIHJlYWRvbmx5IHJlZGlzOiBSZWRpc0NvbmZpZztcbiAgcmVhZG9ubHkgcGx1Z2luQnVpbGQ6IFBsdWdpbkJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBkb2NrZXJDb25maWc6IEJ1aWxkQ29uZmlnO1xuICByZWFkb25seSBvYnNlcnZhYmlsaXR5OiBPYnNlcnZhYmlsaXR5Q29uZmlnO1xuICByZWFkb25seSBjb21wbGlhbmNlOiBDb21wbGlhbmNlQ29uZmlnO1xuICByZWFkb25seSBhd3M6IEFXU0NvbmZpZztcbiAgcmVhZG9ubHkgcmF0ZUxpbWl0OiBSYXRlTGltaXRDb25maWc7XG4gIHJlYWRvbmx5IGJpbGxpbmc6IEJpbGxpbmdDb25maWc7XG59XG5cbi8qKiBFeHByZXNzIHNlcnZlciBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJDb25maWcge1xuICAvKiogSFRUUCBsaXN0ZW4gcG9ydCAoZW52OiBgUE9SVGApLiAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvcnM6IHtcbiAgICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNyZWRlbnRpYWxzIGluIENPUlMgcmVzcG9uc2VzIChlbnY6IGBDT1JTX0NSRURFTlRJQUxTYCkuICovXG4gICAgcmVhZG9ubHkgY3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgLyoqIEFsbG93ZWQgb3JpZ2luKHMpIOKAlCBzaW5nbGUgc3RyaW5nLCBhcnJheSwgb3IgYCcqJ2AgKGVudjogYENPUlNfT1JJR0lOYCkuICovXG4gICAgcmVhZG9ubHkgb3JpZ2luOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgLyoqIE51bWJlciBvZiByZXZlcnNlIHByb3h5IGhvcHMgdG8gdHJ1c3QgKGVudjogYFRSVVNUX1BST1hZYCkuICovXG4gIHJlYWRvbmx5IHRydXN0UHJveHk6IG51bWJlcjtcbiAgLyoqIEZyb250ZW5kIGJhc2UgVVJMLCB1c2VkIGFzIENPUlMgZmFsbGJhY2sgKGVudjogYFBMQVRGT1JNX0JBU0VfVVJMYCkuICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGh0dHBDbGllbnQ6IHtcbiAgICAvKiogRGVmYXVsdCBIVFRQIHJlcXVlc3QgdGltZW91dCBpbiBtcyAoZW52OiBgSFRUUF9DTElFTlRfVElNRU9VVGApLiAqL1xuICAgIHJlYWRvbmx5IHRpbWVvdXQ6IG51bWJlcjtcbiAgICAvKiogTWF4aW11bSByZXRyeSBhdHRlbXB0cyBmb3IgZmFpbGVkIHJlcXVlc3RzIChlbnY6IGBIVFRQX0NMSUVOVF9NQVhfUkVUUklFU2ApLiAqL1xuICAgIHJlYWRvbmx5IG1heFJldHJpZXM6IG51bWJlcjtcbiAgICAvKiogQmFzZSBkZWxheSBiZXR3ZWVuIHJldHJpZXMgaW4gbXMgKGVudjogYEhUVFBfQ0xJRU5UX1JFVFJZX0RFTEFZX01TYCkuICovXG4gICAgcmVhZG9ubHkgcmV0cnlEZWxheU1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNzZToge1xuICAgIC8qKiBNYXggU1NFIGNsaWVudHMgcGVyIHJlcXVlc3QgKGVudjogYFNTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVGApLiAqL1xuICAgIHJlYWRvbmx5IG1heENsaWVudHNQZXJSZXF1ZXN0OiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGllbnQgdGltZW91dCBpbiBtcyAoZW52OiBgU1NFX0NMSUVOVF9USU1FT1VUX01TYCkuICovXG4gICAgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gICAgLyoqIFNTRSBjbGVhbnVwIGludGVydmFsIGluIG1zIChlbnY6IGBTU0VfQ0xFQU5VUF9JTlRFUlZBTF9NU2ApLiAqL1xuICAgIHJlYWRvbmx5IGNsZWFudXBJbnRlcnZhbE1zOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHNlcnZpY2VzOiB7XG4gICAgcmVhZG9ubHkgcGx1Z2luSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsdWdpblBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBwaXBlbGluZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBwaXBlbGluZVBvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXNzYWdlSG9zdDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lc3NhZ2VQb3J0OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29tcGxpYW5jZUhvc3Q6IHN0cmluZztcbiAgICByZWFkb25seSBjb21wbGlhbmNlUG9ydDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJpbGxpbmdIb3N0OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYmlsbGluZ1BvcnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBiaWxsaW5nVGltZW91dDogbnVtYmVyO1xuICB9O1xufVxuXG4vKiogSldUIGFuZCByZWZyZXNoIHRva2VuIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICByZWFkb25seSBqd3Q6IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIGFjY2VzcyB0b2tlbnMgKGVudjogYEpXVF9TRUNSRVRgKS4gKi9cbiAgICByZWFkb25seSBzZWNyZXQ6IHN0cmluZztcbiAgICAvKiogVG9rZW4gbGlmZXRpbWUgaW4gc2Vjb25kcyAoZW52OiBgSldUX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgICAvKiogU2lnbmluZyBhbGdvcml0aG0sIGUuZy4gYCdIUzI1NidgIChlbnY6IGBKV1RfQUxHT1JJVEhNYCkuICovXG4gICAgcmVhZG9ubHkgYWxnb3JpdGhtOiBBbGdvcml0aG07XG4gICAgLyoqIGJjcnlwdCBzYWx0IHJvdW5kcyBmb3IgcGFzc3dvcmQgaGFzaGluZyAoZW52OiBgSldUX1NBTFRfUk9VTkRTYCkuICovXG4gICAgcmVhZG9ubHkgc2FsdFJvdW5kczogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSByZWZyZXNoVG9rZW46IHtcbiAgICAvKiogU2lnbmluZyBzZWNyZXQgZm9yIHJlZnJlc2ggdG9rZW5zIChlbnY6IGBSRUZSRVNIX1RPS0VOX1NFQ1JFVGApLiAqL1xuICAgIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xuICAgIC8qKiBUb2tlbiBsaWZldGltZSBpbiBzZWNvbmRzIChlbnY6IGBSRUZSRVNIX1RPS0VOX0VYUElSRVNfSU5gKS4gKi9cbiAgICByZWFkb25seSBleHBpcmVzSW46IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBvc3RncmVTUUwgYW5kIERyaXp6bGUgT1JNIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ29uZmlnIHtcbiAgcmVhZG9ubHkgcG9zdGdyZXM6IHtcbiAgICAvKiogUG9zdGdyZVNRTCBob3N0IChlbnY6IGBEQl9IT1NUYCkuICovXG4gICAgcmVhZG9ubHkgaG9zdDogc3RyaW5nO1xuICAgIC8qKiBQb3N0Z3JlU1FMIHBvcnQgKGVudjogYERCX1BPUlRgKS4gKi9cbiAgICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gICAgLyoqIERhdGFiYXNlIG5hbWUgKGVudjogYERBVEFCQVNFYCkuICovXG4gICAgcmVhZG9ubHkgZGF0YWJhc2U6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgdXNlciAoZW52OiBgREJfVVNFUmApLiAqL1xuICAgIHJlYWRvbmx5IHVzZXI6IHN0cmluZztcbiAgICAvKiogRGF0YWJhc2UgcGFzc3dvcmQgKGVudjogYERCX1BBU1NXT1JEYCkuICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmQ6IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZHJpenpsZToge1xuICAgIC8qKiBNYXhpbXVtIGNvbm5lY3Rpb24gcG9vbCBzaXplIChlbnY6IGBEUklaWkxFX01BWF9QT09MX1NJWkVgKS4gKi9cbiAgICByZWFkb25seSBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJZGxlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgaWRsZVRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgICAvKiogTmV3IGNvbm5lY3Rpb24gdGltZW91dCBpbiBtcyAoZW52OiBgRFJJWlpMRV9DT05ORUNUSU9OX1RJTUVPVVRfTUlMTElTYCkuICovXG4gICAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IG51bWJlcjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RyeUNvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICByZWFkb25seSB1c2VyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRva2VuOiBzdHJpbmc7XG4gIC8qKiBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZW1wdHkgc3RyaW5nID0gZGVmYXVsdCkuICovXG4gIHJlYWRvbmx5IG5ldHdvcms6IHN0cmluZztcbiAgLyoqIFVzZSBwbGFpbiBIVFRQIGluc3RlYWQgb2YgSFRUUFMgKGVudjogYERPQ0tFUl9SRUdJU1RSWV9IVFRQYCkuIERlZmF1bHRzIHRvIHRydWUuICovXG4gIHJlYWRvbmx5IGh0dHA6IGJvb2xlYW47XG4gIC8qKiBTa2lwIFRMUyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZm9yIHNlbGYtc2lnbmVkIGNlcnRzIChlbnY6IGBET0NLRVJfUkVHSVNUUllfSU5TRUNVUkVgKS4gRGVmYXVsdHMgdG8gdHJ1ZS4gKi9cbiAgcmVhZG9ubHkgaW5zZWN1cmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBuYW1lIGNvbnRhaW5pbmcgQ29kZUJ1aWxkIGltYWdlLXB1bGxcbiAgICogY3JlZGVudGlhbHMgaW4gdGhlIHN0YW5kYXJkIGB7IFwidXNlcm5hbWVcIjogXCIuLi5cIiwgXCJwYXNzd29yZFwiOiBcIi4uLlwiIH1gXG4gICAqIEpTT04gc2hhcGUuIERlZmF1bHRzIHRvIGBwaXBlbGluZS1idWlsZGVyL3N5c3RlbS9yZWdpc3RyeWAuXG4gICAqXG4gICAqIE92ZXJyaWRlIHZpYSBgSU1BR0VfUkVHSVNUUllfQ1JFRFNfU0VDUkVUYCBpZiB5b3Ugc3RvcmUgdGhlIGNyZWRzXG4gICAqIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUuIENhbm5vdCBzaGFyZSB3aXRoIGBwaXBlbGluZS1idWlsZGVyL3N5c3RlbS9wbGF0Zm9ybWBcbiAgICog4oCUIHRoYXQgc2VjcmV0IHN0b3JlcyBhIEpXVCwgd2hpY2ggaGFzIGEgZGlmZmVyZW50IHNjaGVtYTsgQ29kZUJ1aWxkJ3NcbiAgICogZG9ja2VyLXB1bGwgY3JlZGVudGlhbHMgQVBJIHJlcXVpcmVzIGB1c2VybmFtZWAvYHBhc3N3b3JkYCBrZXlzLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlZGVudGlhbHNTZWNyZXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWRpc0NvbmZpZyB7XG4gIHJlYWRvbmx5IGhvc3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYmFja29mZkRlbGF5TXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgd29ya2VyVGltZW91dE1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHRlbXBEaXJNYXhBZ2VNczogbnVtYmVyO1xuICByZWFkb25seSBkbHFNYXhBdHRlbXB0czogbnVtYmVyO1xuICByZWFkb25seSBkbHFCYWNrb2ZmQmFzZU1zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRscU1heFNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZENvbmZpZyB7XG4gIC8qKiBCdWlsZCBzdHJhdGVneTogJ3BvZG1hbicgKGRlZmF1bHQpLCAnZG9ja2VyJywgb3IgJ2thbmlrbycuICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5OiAnZG9ja2VyJyB8ICdrYW5pa28nIHwgJ3BvZG1hbic7XG4gIC8qKiBSb290IGRpcmVjdG9yeSBmb3IgYnVpbGQgdGVtcCBmaWxlcy4gKi9cbiAgcmVhZG9ubHkgdGVtcFJvb3Q6IHN0cmluZztcbiAgLyoqIEJ1aWxkIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiAqL1xuICByZWFkb25seSB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFB1c2ggdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHB1c2hUaW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFBhdGggdG8gS2FuaWtvIGV4ZWN1dG9yIGJpbmFyeSAob25seSB1c2VkIHdoZW4gc3RyYXRlZ3k9a2FuaWtvKS4gKi9cbiAgcmVhZG9ubHkga2FuaWtvRXhlY3V0b3I6IHN0cmluZztcbiAgLyoqIEthbmlrbyBsYXllciBjYWNoZSBkaXJlY3RvcnkgKG9ubHkgdXNlZCB3aGVuIHN0cmF0ZWd5PWthbmlrbykuICovXG4gIHJlYWRvbmx5IGthbmlrb0NhY2hlRGlyOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJpbGl0eUNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvZ0xldmVsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvZ0Zvcm1hdDogc3RyaW5nO1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0cmFjaW5nOiB7XG4gICAgcmVhZG9ubHkgZW5hYmxlZDogYm9vbGVhbjtcbiAgICByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsaWFuY2VDb25maWcge1xuICByZWFkb25seSBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogbnVtYmVyO1xuICAvKiogV2hlbiBmYWxzZSwgdGhlIHNjaGVkdWxlciBza2lwcyBzY2Fucy9zY2hlZHVsZXMgZm9yIHRoZSBzeXN0ZW0gb3JnLiBEZWZhdWx0OiBmYWxzZS4gKi9cbiAgcmVhZG9ubHkgc3lzdGVtT3JnU2NhbnNFbmFibGVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFXU0NvbmZpZyB7XG4gIHJlYWRvbmx5IGxhbWJkYToge1xuICAgIHJlYWRvbmx5IHJ1bnRpbWU6IFJ1bnRpbWU7XG4gICAgcmVhZG9ubHkgdGltZW91dDogRHVyYXRpb247XG4gICAgcmVhZG9ubHkgbWVtb3J5U2l6ZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuICAgIHJlYWRvbmx5IHJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IGxvZ2dpbmc6IHtcbiAgICByZWFkb25seSBncm91cE5hbWU6IHN0cmluZztcbiAgICByZWFkb25seSByZXRlbnRpb246IFJldGVudGlvbkRheXM7XG4gICAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeTtcbiAgfTtcbiAgcmVhZG9ubHkgY29kZUJ1aWxkOiB7XG4gICAgcmVhZG9ubHkgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlO1xuICB9O1xuICAvKiogV2hlbiB0cnVlLCByZXNvbHZlIHN5bnRoIHBsdWdpbiB2aWEgY3VzdG9tIHJlc291cmNlIExhbWJkYSBhdCBkZXBsb3kgdGltZS5cbiAgICogIFdoZW4gZmFsc2UgKGRlZmF1bHQpLCB1c2UgZmFsbGJhY2sgc3ludGggY29tbWFuZHMgKHBpcGVsaW5lLW1hbmFnZXIgc3ludGgpLiAqL1xuICByZWFkb25seSByZXNvbHZlZFN5bnRoUGx1Z2luOiBib29sZWFuO1xufVxuXG4vKiogRXhwcmVzcyByYXRlIGxpbWl0aW5nIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIFJhdGVMaW1pdENvbmZpZyB7XG4gIC8qKiBNYXhpbXVtIHJlcXVlc3RzIHBlciB3aW5kb3cgKGVudjogYExJTUlURVJfTUFYYCkuICovXG4gIHJlYWRvbmx5IG1heDogbnVtYmVyO1xuICAvKiogUmF0ZSBsaW1pdCB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIChlbnY6IGBMSU1JVEVSX1dJTkRPV01TYCkuICovXG4gIHJlYWRvbmx5IHdpbmRvd01zOiBudW1iZXI7XG4gIC8qKiBJbmNsdWRlIGxlZ2FjeSBgWC1SYXRlTGltaXQtKmAgaGVhZGVycy4gKi9cbiAgcmVhZG9ubHkgbGVnYWN5SGVhZGVyczogYm9vbGVhbjtcbiAgLyoqIEluY2x1ZGUgc3RhbmRhcmQgYFJhdGVMaW1pdC0qYCBoZWFkZXJzIChSRkMgNjU4NSkuICovXG4gIHJlYWRvbmx5IHN0YW5kYXJkSGVhZGVyczogYm9vbGVhbjtcbn1cblxuLyoqIFByaWNlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGJpbGxpbmcgcGxhbiAoaW4gY2VudHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaWxsaW5nUGxhblByaWNlcyB7XG4gIHJlYWRvbmx5IG1vbnRobHk6IG51bWJlcjtcbiAgcmVhZG9ubHkgYW5udWFsOiBudW1iZXI7XG59XG5cbi8qKiBGdWxsIGJpbGxpbmcgcGxhbiBkZWZpbml0aW9uIHVzZWQgZm9yIHNlZWRpbmcgYW5kIHJ1bnRpbWUgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ1BsYW5Db25maWcge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRpZXI6IFF1b3RhVGllcjtcbiAgcmVhZG9ubHkgcHJpY2VzOiBCaWxsaW5nUGxhblByaWNlcztcbiAgcmVhZG9ubHkgZmVhdHVyZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaXNEZWZhdWx0OiBib29sZWFuO1xuICByZWFkb25seSBzb3J0T3JkZXI6IG51bWJlcjtcbn1cblxuLyoqIEJpbGxpbmcgcGxhbnMgY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmlsbGluZ0NvbmZpZyB7XG4gIHJlYWRvbmx5IHBsYW5zOiByZWFkb25seSBCaWxsaW5nUGxhbkNvbmZpZ1tdO1xufVxuIl19
@@ -50,6 +50,8 @@ function loadRegistryConfig() {
50
50
  network: process.env.DOCKER_NETWORK || '',
51
51
  http: process.env.DOCKER_REGISTRY_HTTP !== 'false',
52
52
  insecure: process.env.DOCKER_REGISTRY_INSECURE !== 'false',
53
+ credentialsSecret: process.env.IMAGE_REGISTRY_CREDS_SECRET
54
+ || 'pipeline-builder/system/registry',
53
55
  };
54
56
  }
55
57
  function loadRedisConfig() {
@@ -198,4 +200,4 @@ function parseRetention(days) {
198
200
  const parsed = parseInt(days, 10);
199
201
  return VALID_RETENTION_DAYS.has(parsed) ? parsed : aws_logs_1.RetentionDays.ONE_DAY;
200
202
  }
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9pbmZyYXN0cnVjdHVyZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7O0FBZ0N0QyxnREFVQztBQUVELDBDQUtDO0FBUUQsc0RBV0M7QUFFRCxnREFlQztBQUVELDBEQVVDO0FBRUQsb0RBS0M7QUFhRCw0Q0FXQztBQWlCRCxzQ0E0QkM7QUEzS0QsZ0RBQXdCO0FBQ3hCLDZDQUFzRDtBQUN0RCx1REFBK0Q7QUFDL0QsbURBQXFEO0FBRXJELCtEQUEwRDtBQUUxRCxTQUFTLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxVQUFrQjtJQUM3RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3hCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQixrQkFBa0I7SUFDaEMsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLFVBQVU7UUFDbkQsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDN0QsSUFBSSxFQUFFLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQztRQUN6RCxLQUFLLEVBQUUsbUJBQW1CLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDO1FBQzlELE9B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QVE7Z0JBQ3hELENBQUMsQ0FBQywyQkFBYSxDQUFDLE1BQU07Z0JBQ3RCLENBQUMsQ0FBQywyQkFBYSxDQUFDLE9BQU87U0FDMUI7UUFFRCxTQUFTLEVBQUU7WUFDVCxXQUFXLEVBQUUsSUFBQSxpQ0FBYyxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksT0FBTyxDQUFDO1NBQzNFO1FBRUQsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsS0FBSyxNQUFNO0tBQ2xFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxPQUFlO0lBQ25DLE1BQU0sVUFBVSxHQUE0QjtRQUMxQyxZQUFZLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO0tBQ2xDLENBQUM7SUFDRixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxvQkFBTyxDQUFDLFdBQVcsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyx3QkFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBRXJILFNBQVMsY0FBYyxDQUFDLElBQVk7SUFDbEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsQyxPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUMsd0JBQWEsQ0FBQyxPQUFPLENBQUM7QUFDNUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlLCBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHR5cGUgeyBBV1NDb25maWcsIEJ1aWxkQ29uZmlnLCBDb21wbGlhbmNlQ29uZmlnLCBEYXRhYmFzZUNvbmZpZywgT2JzZXJ2YWJpbGl0eUNvbmZpZywgUGx1Z2luQnVpbGRDb25maWcsIFJlZGlzQ29uZmlnLCBSZWdpc3RyeUNvbmZpZyB9IGZyb20gJy4vY29uZmlnLXR5cGVzJztcbmltcG9ydCB7IGdldENvbXB1dGVUeXBlIH0gZnJvbSAnLi4vY29yZS9waXBlbGluZS1oZWxwZXJzJztcblxuZnVuY3Rpb24gcmVxdWlyZUluUHJvZHVjdGlvbihlbnZWYXI6IHN0cmluZywgZGV2RGVmYXVsdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltlbnZWYXJdO1xuICBpZiAodmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZW52VmFyfSBpcyByZXF1aXJlZCBpbiBwcm9kdWN0aW9uYCk7XG4gIH1cbiAgcmV0dXJuIGRldkRlZmF1bHQ7XG59XG5cbi8qKlxuICogTG9hZCBEb2NrZXIgcmVnaXN0cnkgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9IT1NUYCDigJQgUmVnaXN0cnkgaG9zdG5hbWUgKGRlZmF1bHQ6IGAncmVnaXN0cnknYClcbiAqIC0gYElNQUdFX1JFR0lTVFJZX1BPUlRgIOKAlCBSZWdpc3RyeSBwb3J0IChkZWZhdWx0OiBgNTAwMGApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9VU0VSYCDigJQgUmVnaXN0cnkgdXNlcm5hbWUgKGRlZmF1bHQ6IGAnYWRtaW4nYClcbiAqIC0gYElNQUdFX1JFR0lTVFJZX1RPS0VOYCDigJQgUmVnaXN0cnkgYXV0aCB0b2tlbiAoZGVmYXVsdDogYCdwYXNzd29yZCdgKVxuICogLSBgRE9DS0VSX05FVFdPUktgIOKAlCBEb2NrZXIgbmV0d29yayBmb3IgYnVpbGQvcHVzaCAoZGVmYXVsdDogYCcnYClcbiAqIC0gYERPQ0tFUl9SRUdJU1RSWV9IVFRQYCDigJQgVXNlIHBsYWluIEhUVFAgKGRlZmF1bHQ6IGB0cnVlYCkuIFNldCBgZmFsc2VgIGZvciBIVFRQUy5cbiAqIC0gYERPQ0tFUl9SRUdJU1RSWV9JTlNFQ1VSRWAg4oCUIFNraXAgVExTIHZlcmlmaWNhdGlvbiAoZGVmYXVsdDogYHRydWVgKS4gU2V0IGBmYWxzZWAgZm9yIHByb2R1Y3Rpb24uXG4gKlxuICogQHJldHVybnMgUmVnaXN0cnkgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlZ2lzdHJ5Q29uZmlnKCk6IFJlZ2lzdHJ5Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBob3N0OiBwcm9jZXNzLmVudi5JTUFHRV9SRUdJU1RSWV9IT1NUIHx8ICdyZWdpc3RyeScsXG4gICAgcG9ydDogcGFyc2VJbnQocHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfUE9SVCB8fCAnNTAwMCcsIDEwKSxcbiAgICB1c2VyOiByZXF1aXJlSW5Qcm9kdWN0aW9uKCdJTUFHRV9SRUdJU1RSWV9VU0VSJywgJ2FkbWluJyksXG4gICAgdG9rZW46IHJlcXVpcmVJblByb2R1Y3Rpb24oJ0lNQUdFX1JFR0lTVFJZX1RPS0VOJywgJ3Bhc3N3b3JkJyksXG4gICAgbmV0d29yazogcHJvY2Vzcy5lbnYuRE9DS0VSX05FVFdPUksgfHwgJycsXG4gICAgaHR0cDogcHJvY2Vzcy5lbnYuRE9DS0VSX1JFR0lTVFJZX0hUVFAgIT09ICdmYWxzZScsXG4gICAgaW5zZWN1cmU6IHByb2Nlc3MuZW52LkRPQ0tFUl9SRUdJU1RSWV9JTlNFQ1VSRSAhPT0gJ2ZhbHNlJyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZWRpc0NvbmZpZygpOiBSZWRpc0NvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgaG9zdDogcHJvY2Vzcy5lbnYuUkVESVNfSE9TVCB8fCAnbG9jYWxob3N0JyxcbiAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5SRURJU19QT1JUIHx8ICc2Mzc5JywgMTApLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgcGx1Z2luIGJ1aWxkIHF1ZXVlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgUExVR0lOX0JVSUxEX0NPTkNVUlJFTkNZYCDigJQgTWF4IGNvbmN1cnJlbnQgcGx1Z2luIGJ1aWxkcyAoZGVmYXVsdDogYDFgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFBsdWdpbkJ1aWxkQ29uZmlnKCk6IFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBjb25jdXJyZW5jeTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0NPTkNVUlJFTkNZIHx8ICcxJywgMTApLFxuICAgIG1heEF0dGVtcHRzOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfTUFYX0FUVEVNUFRTIHx8ICcyJywgMTApLFxuICAgIGJhY2tvZmZEZWxheU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfQkFDS09GRl9ERUxBWV9NUyB8fCAnNTAwMCcsIDEwKSxcbiAgICB3b3JrZXJUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9XT1JLRVJfVElNRU9VVF9NUyB8fCAnMTAwMDAnLCAxMCksXG4gICAgdGVtcERpck1heEFnZU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5URU1QX0RJUl9NQVhfQUdFX01TIHx8ICcxNDQwMDAwMCcsIDEwKSxcbiAgICBkbHFNYXhBdHRlbXB0czogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9NQVhfQVRURU1QVFMgfHwgJzMnLCAxMCksXG4gICAgZGxxQmFja29mZkJhc2VNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9CQUNLT0ZGX0JBU0VfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICBkbHFNYXhTaXplOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fRExRX01BWF9TSVpFIHx8ICcyMCcsIDEwKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREYXRhYmFzZUNvbmZpZygpOiBEYXRhYmFzZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgcG9zdGdyZXM6IHtcbiAgICAgIGhvc3Q6IHByb2Nlc3MuZW52LkRCX0hPU1QgfHwgJ3Bvc3RncmVzJyxcbiAgICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRCX1BPUlQgfHwgJzU0MzInLCAxMCksXG4gICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuREFUQUJBU0UgfHwgJ3BpcGVsaW5lX2J1aWxkZXInLFxuICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuREJfVVNFUiB8fCAncG9zdGdyZXMnLFxuICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkRCX1BBU1NXT1JEIHx8ICcnLFxuICAgIH0sXG4gICAgZHJpenpsZToge1xuICAgICAgbWF4UG9vbFNpemU6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRSSVpaTEVfTUFYX1BPT0xfU0laRSB8fCAnMjAnLCAxMCksXG4gICAgICBpZGxlVGltZW91dE1pbGxpczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTIHx8ICczMDAwMCcsIDEwKSxcbiAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiBwYXJzZUludChwcm9jZXNzLmVudi5EUklaWkxFX0NPTk5FQ1RJT05fVElNRU9VVF9NSUxMSVMgfHwgJzEwMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkT2JzZXJ2YWJpbGl0eUNvbmZpZygpOiBPYnNlcnZhYmlsaXR5Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dMZXZlbDogcHJvY2Vzcy5lbnYuTE9HX0xFVkVMIHx8ICdpbmZvJyxcbiAgICBsb2dGb3JtYXQ6IHByb2Nlc3MuZW52LkxPR19GT1JNQVQgfHwgJ2pzb24nLFxuICAgIHNlcnZpY2VOYW1lOiBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ2FwaScsXG4gICAgdHJhY2luZzoge1xuICAgICAgZW5hYmxlZDogcHJvY2Vzcy5lbnYuT1RFTF9UUkFDSU5HX0VOQUJMRUQgPT09ICd0cnVlJyxcbiAgICAgIGVuZHBvaW50OiBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXMnLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ29tcGxpYW5jZUNvbmZpZygpOiBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU0NBTl9TQ0hFRFVMRVJfSU5URVJWQUxfTVMgfHwgJzYwMDAwJywgMTApLFxuICAgIHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogcHJvY2Vzcy5lbnYuU1lTVEVNX09SR19TQ0FOU19FTkFCTEVEID09PSAndHJ1ZScsXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBEb2NrZXIvUG9kbWFuL0thbmlrbyBidWlsZCBjb25maWd1cmF0aW9uLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYERPQ0tFUl9CVUlMRF9TVFJBVEVHWWAg4oCUIEJ1aWxkIHN0cmF0ZWd5OiBgcG9kbWFuYCwgYGRvY2tlcmAsIG9yIGBrYW5pa29gIChkZWZhdWx0OiBgcG9kbWFuYClcbiAqIC0gYERPQ0tFUl9CVUlMRF9URU1QX1JPT1RgIOKAlCBUZW1wIGRpcmVjdG9yeSBmb3IgYnVpbGQgY29udGV4dHMgKGRlZmF1bHQ6IGA8Y3dkPi90bXBgKVxuICogLSBgRE9DS0VSX0JVSUxEX1RJTUVPVVRfTVNgIOKAlCBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDkwMDAwMGAgLyAxNSBtaW4pXG4gKiAtIGBET0NLRVJfUFVTSF9USU1FT1VUX01TYCDigJQgUHVzaCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDMwMDAwMGAgLyA1IG1pbilcbiAqIC0gYEtBTklLT19FWEVDVVRPUl9QQVRIYCDigJQgUGF0aCB0byBLYW5pa28gZXhlY3V0b3IgYmluYXJ5IChkZWZhdWx0OiBgL2thbmlrby9leGVjdXRvcmApXG4gKiAtIGBLQU5JS09fQ0FDSEVfRElSYCDigJQgS2FuaWtvIGxheWVyIGNhY2hlIGRpcmVjdG9yeSAoZGVmYXVsdDogYC9rYW5pa28vY2FjaGVgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZERvY2tlckNvbmZpZygpOiBCdWlsZENvbmZpZyB7XG4gIGNvbnN0IHZhbGlkU3RyYXRlZ2llcyA9IG5ldyBTZXQoWydkb2NrZXInLCAna2FuaWtvJywgJ3BvZG1hbiddKTtcbiAgY29uc3Qgc3RyYXRlZ3lFbnYgPSAocHJvY2Vzcy5lbnYuRE9DS0VSX0JVSUxEX1NUUkFURUdZIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4ge1xuICAgIHN0cmF0ZWd5OiB2YWxpZFN0cmF0ZWdpZXMuaGFzKHN0cmF0ZWd5RW52KSA/IHN0cmF0ZWd5RW52IGFzIEJ1aWxkQ29uZmlnWydzdHJhdGVneSddIDogJ2RvY2tlcicsXG4gICAgdGVtcFJvb3Q6IHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9URU1QX1JPT1QgfHwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd0bXAnKSxcbiAgICB0aW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9USU1FT1VUX01TIHx8ICc5MDAwMDAnLCAxMCksXG4gICAgcHVzaFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRE9DS0VSX1BVU0hfVElNRU9VVF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIGthbmlrb0V4ZWN1dG9yOiBwcm9jZXNzLmVudi5LQU5JS09fRVhFQ1VUT1JfUEFUSCB8fCAnL2thbmlrby9leGVjdXRvcicsXG4gICAga2FuaWtvQ2FjaGVEaXI6IHByb2Nlc3MuZW52LktBTklLT19DQUNIRV9ESVIgfHwgJy9rYW5pa28vY2FjaGUnLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTEFNQkRBX1JVTlRJTUVgIOKAlCBMYW1iZGEgcnVudGltZSAoZGVmYXVsdDogYCdub2RlanMyNC54J2A7IHN1cHBvcnRzIG5vZGVqczIyLngsIG5vZGVqczI0LngpXG4gKiAtIGBMQU1CREFfVElNRU9VVGAg4oCUIExhbWJkYSB0aW1lb3V0IGluIHNlY29uZHMgKGRlZmF1bHQ6IGA5MDBgKVxuICogLSBgTEFNQkRBX01FTU9SWV9TSVpFYCDigJQgTGFtYmRhIG1lbW9yeSBpbiBNQiAoZGVmYXVsdDogYDEyOGApXG4gKiAtIGBMQU1CREFfQVJDSElURUNUVVJFYCDigJQgYCd4ODZfNjQnYCBvciBBUk0gKGRlZmF1bHQ6IEFSTV82NClcbiAqIC0gYExPR19HUk9VUF9OQU1FYCDigJQgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgKGRlZmF1bHQ6IGAnL3BpcGVsaW5lLWJ1aWxkZXIvbG9ncydgKVxuICogLSBgTE9HX1JFVEVOVElPTmAg4oCUIExvZyByZXRlbnRpb24gaW4gZGF5cyAoZGVmYXVsdDogYDdgKVxuICogLSBgTE9HX1JFTU9WQUxfUE9MSUNZYCDigJQgYCdSRVRBSU4nYCBvciBkZXN0cm95IChkZWZhdWx0OiBERVNUUk9ZKVxuICogLSBgQ09ERUJVSUxEX0NPTVBVVEVfVFlQRWAg4oCUIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgKGRlZmF1bHQ6IGAnU01BTEwnYClcbiAqXG4gKiBAcmV0dXJucyBBV1MgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFXU0NvbmZpZygpOiBBV1NDb25maWcge1xuICByZXR1cm4ge1xuICAgIGxhbWJkYToge1xuICAgICAgcnVudGltZTogcGFyc2VSdW50aW1lKHByb2Nlc3MuZW52LkxBTUJEQV9SVU5USU1FIHx8ICdub2RlanMyNC54JyksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9USU1FT1VUIHx8ICc5MDAnLCAxMCkpLFxuICAgICAgbWVtb3J5U2l6ZTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTEFNQkRBX01FTU9SWV9TSVpFIHx8ICc1MTInLCAxMCksXG4gICAgICBhcmNoaXRlY3R1cmU6IHByb2Nlc3MuZW52LkxBTUJEQV9BUkNISVRFQ1RVUkUgPT09ICd4ODZfNjQnXG4gICAgICAgID8gQXJjaGl0ZWN0dXJlLlg4Nl82NFxuICAgICAgICA6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiBwcm9jZXNzLmVudi5MQU1CREFfUkVTRVJWRURfQ09OQ1VSUkVOQ1lcbiAgICAgICAgPyBwYXJzZUludChwcm9jZXNzLmVudi5MQU1CREFfUkVTRVJWRURfQ09OQ1VSUkVOQ1ksIDEwKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9LFxuXG4gICAgbG9nZ2luZzoge1xuICAgICAgZ3JvdXBOYW1lOiBwcm9jZXNzLmVudi5MT0dfR1JPVVBfTkFNRSB8fCAnL3BpcGVsaW5lLWJ1aWxkZXIvbG9ncycsXG4gICAgICByZXRlbnRpb246IHBhcnNlUmV0ZW50aW9uKHByb2Nlc3MuZW52LkxPR19SRVRFTlRJT04gfHwgJzcnKSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb2Nlc3MuZW52LkxPR19SRU1PVkFMX1BPTElDWSA9PT0gJ1JFVEFJTidcbiAgICAgICAgPyBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgICAgICA6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9LFxuXG4gICAgY29kZUJ1aWxkOiB7XG4gICAgICBjb21wdXRlVHlwZTogZ2V0Q29tcHV0ZVR5cGUocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0NPTVBVVEVfVFlQRSB8fCAnU01BTEwnKSxcbiAgICB9LFxuXG4gICAgcmVzb2x2ZWRTeW50aFBsdWdpbjogcHJvY2Vzcy5lbnYuUkVTT0xWRURfU1lOVEhfUExVR0lOID09PSAndHJ1ZScsXG4gIH07XG59XG5cbi8qKlxuICogUGFyc2UgTGFtYmRhIHJ1bnRpbWUgc3RyaW5nIGludG8gYSBDREsgUnVudGltZSBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBydW50aW1lIC0gUnVudGltZSBzdHJpbmcgKGUuZy4gYCdub2RlanMyNC54J2ApXG4gKiBAcmV0dXJucyBDREsgUnVudGltZSBlbnVtOyBmYWxscyBiYWNrIHRvIE5PREVKU18yNF9YIGZvciB1bmtub3duIHZhbHVlc1xuICovXG5mdW5jdGlvbiBwYXJzZVJ1bnRpbWUocnVudGltZTogc3RyaW5nKTogUnVudGltZSB7XG4gIGNvbnN0IHJ1bnRpbWVNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bnRpbWU+ID0ge1xuICAgICdub2RlanMyNC54JzogUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgfTtcbiAgcmV0dXJuIHJ1bnRpbWVNYXBbcnVudGltZV0gfHwgUnVudGltZS5OT0RFSlNfMjRfWDtcbn1cblxuLyoqXG4gKiBQYXJzZSBsb2cgcmV0ZW50aW9uIGRheXMgc3RyaW5nIGludG8gYSBDREsgUmV0ZW50aW9uRGF5cyBlbnVtIHZhbHVlLlxuICogUmV0ZW50aW9uRGF5cyBlbnVtIHZhbHVlcyBhcmUgdGhlIG51bWVyaWMgZGF5IGNvdW50cyB0aGVtc2VsdmVzLFxuICogc28gd2UgcGFyc2UgdGhlIHN0cmluZyBhbmQgY2hlY2sgaWYgaXQncyBhIHZhbGlkIGVudW0gbWVtYmVyLlxuICpcbiAqIEBwYXJhbSBkYXlzIC0gUmV0ZW50aW9uIHBlcmlvZCBpbiBkYXlzIGFzIGEgc3RyaW5nIChlLmcuIGAnMzAnYClcbiAqIEByZXR1cm5zIENESyBSZXRlbnRpb25EYXlzIGVudW07IGZhbGxzIGJhY2sgdG8gT05FX0RBWSBmb3IgdW5rbm93biB2YWx1ZXNcbiAqL1xuY29uc3QgVkFMSURfUkVURU5USU9OX0RBWVMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoUmV0ZW50aW9uRGF5cykuZmlsdGVyKCh2KTogdiBpcyBudW1iZXIgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInKSk7XG5cbmZ1bmN0aW9uIHBhcnNlUmV0ZW50aW9uKGRheXM6IHN0cmluZyk6IFJldGVudGlvbkRheXMge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChkYXlzLCAxMCk7XG4gIHJldHVybiBWQUxJRF9SRVRFTlRJT05fREFZUy5oYXMocGFyc2VkKSA/IHBhcnNlZCBhcyBSZXRlbnRpb25EYXlzIDogUmV0ZW50aW9uRGF5cy5PTkVfREFZO1xufVxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9pbmZyYXN0cnVjdHVyZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7Ozs7O0FBZ0N0QyxnREFZQztBQUVELDBDQUtDO0FBUUQsc0RBV0M7QUFFRCxnREFlQztBQUVELDBEQVVDO0FBRUQsb0RBS0M7QUFhRCw0Q0FXQztBQWlCRCxzQ0E0QkM7QUE3S0QsZ0RBQXdCO0FBQ3hCLDZDQUFzRDtBQUN0RCx1REFBK0Q7QUFDL0QsbURBQXFEO0FBRXJELCtEQUEwRDtBQUUxRCxTQUFTLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxVQUFrQjtJQUM3RCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3hCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sNEJBQTRCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQixrQkFBa0I7SUFDaEMsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLFVBQVU7UUFDbkQsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDN0QsSUFBSSxFQUFFLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQztRQUN6RCxLQUFLLEVBQUUsbUJBQW1CLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDO1FBQzlELE9B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QUcsQ0FBQztZQUMzRCxhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsS0FBSyxRQUFRO2dCQUN4RCxDQUFDLENBQUMsMkJBQWEsQ0FBQyxNQUFNO2dCQUN0QixDQUFDLENBQUMsMkJBQWEsQ0FBQyxPQUFPO1NBQzFCO1FBRUQsU0FBUyxFQUFFO1lBQ1QsV0FBVyxFQUFFLElBQUEsaUNBQWMsRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLE9BQU8sQ0FBQztTQUMzRTtRQUVELG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEtBQUssTUFBTTtLQUNsRSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBZTtJQUNuQyxNQUFNLFVBQVUsR0FBNEI7UUFDMUMsWUFBWSxFQUFFLG9CQUFPLENBQUMsV0FBVztLQUNsQyxDQUFDO0lBQ0YsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksb0JBQU8sQ0FBQyxXQUFXLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztBQUVySCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQXVCLENBQUMsQ0FBQyxDQUFDLHdCQUFhLENBQUMsT0FBTyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEFyY2hpdGVjdHVyZSwgUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHsgQVdTQ29uZmlnLCBCdWlsZENvbmZpZywgQ29tcGxpYW5jZUNvbmZpZywgRGF0YWJhc2VDb25maWcsIE9ic2VydmFiaWxpdHlDb25maWcsIFBsdWdpbkJ1aWxkQ29uZmlnLCBSZWRpc0NvbmZpZywgUmVnaXN0cnlDb25maWcgfSBmcm9tICcuL2NvbmZpZy10eXBlcyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlVHlwZSB9IGZyb20gJy4uL2NvcmUvcGlwZWxpbmUtaGVscGVycyc7XG5cbmZ1bmN0aW9uIHJlcXVpcmVJblByb2R1Y3Rpb24oZW52VmFyOiBzdHJpbmcsIGRldkRlZmF1bHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbZW52VmFyXTtcbiAgaWYgKHZhbHVlKSByZXR1cm4gdmFsdWU7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2VudlZhcn0gaXMgcmVxdWlyZWQgaW4gcHJvZHVjdGlvbmApO1xuICB9XG4gIHJldHVybiBkZXZEZWZhdWx0O1xufVxuXG4vKipcbiAqIExvYWQgRG9ja2VyIHJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgSU1BR0VfUkVHSVNUUllfSE9TVGAg4oCUIFJlZ2lzdHJ5IGhvc3RuYW1lIChkZWZhdWx0OiBgJ3JlZ2lzdHJ5J2ApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9QT1JUYCDigJQgUmVnaXN0cnkgcG9ydCAoZGVmYXVsdDogYDUwMDBgKVxuICogLSBgSU1BR0VfUkVHSVNUUllfVVNFUmAg4oCUIFJlZ2lzdHJ5IHVzZXJuYW1lIChkZWZhdWx0OiBgJ2FkbWluJ2ApXG4gKiAtIGBJTUFHRV9SRUdJU1RSWV9UT0tFTmAg4oCUIFJlZ2lzdHJ5IGF1dGggdG9rZW4gKGRlZmF1bHQ6IGAncGFzc3dvcmQnYClcbiAqIC0gYERPQ0tFUl9ORVRXT1JLYCDigJQgRG9ja2VyIG5ldHdvcmsgZm9yIGJ1aWxkL3B1c2ggKGRlZmF1bHQ6IGAnJ2ApXG4gKiAtIGBET0NLRVJfUkVHSVNUUllfSFRUUGAg4oCUIFVzZSBwbGFpbiBIVFRQIChkZWZhdWx0OiBgdHJ1ZWApLiBTZXQgYGZhbHNlYCBmb3IgSFRUUFMuXG4gKiAtIGBET0NLRVJfUkVHSVNUUllfSU5TRUNVUkVgIOKAlCBTa2lwIFRMUyB2ZXJpZmljYXRpb24gKGRlZmF1bHQ6IGB0cnVlYCkuIFNldCBgZmFsc2VgIGZvciBwcm9kdWN0aW9uLlxuICpcbiAqIEByZXR1cm5zIFJlZ2lzdHJ5IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZWdpc3RyeUNvbmZpZygpOiBSZWdpc3RyeUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgaG9zdDogcHJvY2Vzcy5lbnYuSU1BR0VfUkVHSVNUUllfSE9TVCB8fCAncmVnaXN0cnknLFxuICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX1BPUlQgfHwgJzUwMDAnLCAxMCksXG4gICAgdXNlcjogcmVxdWlyZUluUHJvZHVjdGlvbignSU1BR0VfUkVHSVNUUllfVVNFUicsICdhZG1pbicpLFxuICAgIHRva2VuOiByZXF1aXJlSW5Qcm9kdWN0aW9uKCdJTUFHRV9SRUdJU1RSWV9UT0tFTicsICdwYXNzd29yZCcpLFxuICAgIG5ldHdvcms6IHByb2Nlc3MuZW52LkRPQ0tFUl9ORVRXT1JLIHx8ICcnLFxuICAgIGh0dHA6IHByb2Nlc3MuZW52LkRPQ0tFUl9SRUdJU1RSWV9IVFRQICE9PSAnZmFsc2UnLFxuICAgIGluc2VjdXJlOiBwcm9jZXNzLmVudi5ET0NLRVJfUkVHSVNUUllfSU5TRUNVUkUgIT09ICdmYWxzZScsXG4gICAgY3JlZGVudGlhbHNTZWNyZXQ6IHByb2Nlc3MuZW52LklNQUdFX1JFR0lTVFJZX0NSRURTX1NFQ1JFVFxuICAgICAgfHwgJ3BpcGVsaW5lLWJ1aWxkZXIvc3lzdGVtL3JlZ2lzdHJ5JyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZWRpc0NvbmZpZygpOiBSZWRpc0NvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgaG9zdDogcHJvY2Vzcy5lbnYuUkVESVNfSE9TVCB8fCAnbG9jYWxob3N0JyxcbiAgICBwb3J0OiBwYXJzZUludChwcm9jZXNzLmVudi5SRURJU19QT1JUIHx8ICc2Mzc5JywgMTApLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgcGx1Z2luIGJ1aWxkIHF1ZXVlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgUExVR0lOX0JVSUxEX0NPTkNVUlJFTkNZYCDigJQgTWF4IGNvbmN1cnJlbnQgcGx1Z2luIGJ1aWxkcyAoZGVmYXVsdDogYDFgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFBsdWdpbkJ1aWxkQ29uZmlnKCk6IFBsdWdpbkJ1aWxkQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBjb25jdXJyZW5jeTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0JVSUxEX0NPTkNVUlJFTkNZIHx8ICcxJywgMTApLFxuICAgIG1heEF0dGVtcHRzOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfTUFYX0FUVEVNUFRTIHx8ICcyJywgMTApLFxuICAgIGJhY2tvZmZEZWxheU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fQlVJTERfQkFDS09GRl9ERUxBWV9NUyB8fCAnNTAwMCcsIDEwKSxcbiAgICB3b3JrZXJUaW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LlBMVUdJTl9CVUlMRF9XT1JLRVJfVElNRU9VVF9NUyB8fCAnMTAwMDAnLCAxMCksXG4gICAgdGVtcERpck1heEFnZU1zOiBwYXJzZUludChwcm9jZXNzLmVudi5URU1QX0RJUl9NQVhfQUdFX01TIHx8ICcxNDQwMDAwMCcsIDEwKSxcbiAgICBkbHFNYXhBdHRlbXB0czogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9NQVhfQVRURU1QVFMgfHwgJzMnLCAxMCksXG4gICAgZGxxQmFja29mZkJhc2VNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuUExVR0lOX0RMUV9CQUNLT0ZGX0JBU0VfTVMgfHwgJzMwMDAwMCcsIDEwKSxcbiAgICBkbHFNYXhTaXplOiBwYXJzZUludChwcm9jZXNzLmVudi5QTFVHSU5fRExRX01BWF9TSVpFIHx8ICcyMCcsIDEwKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREYXRhYmFzZUNvbmZpZygpOiBEYXRhYmFzZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgcG9zdGdyZXM6IHtcbiAgICAgIGhvc3Q6IHByb2Nlc3MuZW52LkRCX0hPU1QgfHwgJ3Bvc3RncmVzJyxcbiAgICAgIHBvcnQ6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRCX1BPUlQgfHwgJzU0MzInLCAxMCksXG4gICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuREFUQUJBU0UgfHwgJ3BpcGVsaW5lX2J1aWxkZXInLFxuICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuREJfVVNFUiB8fCAncG9zdGdyZXMnLFxuICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkRCX1BBU1NXT1JEIHx8ICcnLFxuICAgIH0sXG4gICAgZHJpenpsZToge1xuICAgICAgbWF4UG9vbFNpemU6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRSSVpaTEVfTUFYX1BPT0xfU0laRSB8fCAnMjAnLCAxMCksXG4gICAgICBpZGxlVGltZW91dE1pbGxpczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRFJJWlpMRV9JRExFX1RJTUVPVVRfTUlMTElTIHx8ICczMDAwMCcsIDEwKSxcbiAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiBwYXJzZUludChwcm9jZXNzLmVudi5EUklaWkxFX0NPTk5FQ1RJT05fVElNRU9VVF9NSUxMSVMgfHwgJzEwMDAwJywgMTApLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkT2JzZXJ2YWJpbGl0eUNvbmZpZygpOiBPYnNlcnZhYmlsaXR5Q29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBsb2dMZXZlbDogcHJvY2Vzcy5lbnYuTE9HX0xFVkVMIHx8ICdpbmZvJyxcbiAgICBsb2dGb3JtYXQ6IHByb2Nlc3MuZW52LkxPR19GT1JNQVQgfHwgJ2pzb24nLFxuICAgIHNlcnZpY2VOYW1lOiBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ2FwaScsXG4gICAgdHJhY2luZzoge1xuICAgICAgZW5hYmxlZDogcHJvY2Vzcy5lbnYuT1RFTF9UUkFDSU5HX0VOQUJMRUQgPT09ICd0cnVlJyxcbiAgICAgIGVuZHBvaW50OiBwcm9jZXNzLmVudi5PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6NDMxOC92MS90cmFjZXMnLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ29tcGxpYW5jZUNvbmZpZygpOiBDb21wbGlhbmNlQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBzY2FuU2NoZWR1bGVySW50ZXJ2YWxNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuU0NBTl9TQ0hFRFVMRVJfSU5URVJWQUxfTVMgfHwgJzYwMDAwJywgMTApLFxuICAgIHN5c3RlbU9yZ1NjYW5zRW5hYmxlZDogcHJvY2Vzcy5lbnYuU1lTVEVNX09SR19TQ0FOU19FTkFCTEVEID09PSAndHJ1ZScsXG4gIH07XG59XG5cbi8qKlxuICogTG9hZCBEb2NrZXIvUG9kbWFuL0thbmlrbyBidWlsZCBjb25maWd1cmF0aW9uLlxuICpcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlczpcbiAqIC0gYERPQ0tFUl9CVUlMRF9TVFJBVEVHWWAg4oCUIEJ1aWxkIHN0cmF0ZWd5OiBgcG9kbWFuYCwgYGRvY2tlcmAsIG9yIGBrYW5pa29gIChkZWZhdWx0OiBgcG9kbWFuYClcbiAqIC0gYERPQ0tFUl9CVUlMRF9URU1QX1JPT1RgIOKAlCBUZW1wIGRpcmVjdG9yeSBmb3IgYnVpbGQgY29udGV4dHMgKGRlZmF1bHQ6IGA8Y3dkPi90bXBgKVxuICogLSBgRE9DS0VSX0JVSUxEX1RJTUVPVVRfTVNgIOKAlCBCdWlsZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDkwMDAwMGAgLyAxNSBtaW4pXG4gKiAtIGBET0NLRVJfUFVTSF9USU1FT1VUX01TYCDigJQgUHVzaCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogYDMwMDAwMGAgLyA1IG1pbilcbiAqIC0gYEtBTklLT19FWEVDVVRPUl9QQVRIYCDigJQgUGF0aCB0byBLYW5pa28gZXhlY3V0b3IgYmluYXJ5IChkZWZhdWx0OiBgL2thbmlrby9leGVjdXRvcmApXG4gKiAtIGBLQU5JS09fQ0FDSEVfRElSYCDigJQgS2FuaWtvIGxheWVyIGNhY2hlIGRpcmVjdG9yeSAoZGVmYXVsdDogYC9rYW5pa28vY2FjaGVgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZERvY2tlckNvbmZpZygpOiBCdWlsZENvbmZpZyB7XG4gIGNvbnN0IHZhbGlkU3RyYXRlZ2llcyA9IG5ldyBTZXQoWydkb2NrZXInLCAna2FuaWtvJywgJ3BvZG1hbiddKTtcbiAgY29uc3Qgc3RyYXRlZ3lFbnYgPSAocHJvY2Vzcy5lbnYuRE9DS0VSX0JVSUxEX1NUUkFURUdZIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4ge1xuICAgIHN0cmF0ZWd5OiB2YWxpZFN0cmF0ZWdpZXMuaGFzKHN0cmF0ZWd5RW52KSA/IHN0cmF0ZWd5RW52IGFzIEJ1aWxkQ29uZmlnWydzdHJhdGVneSddIDogJ2RvY2tlcicsXG4gICAgdGVtcFJvb3Q6IHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9URU1QX1JPT1QgfHwgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd0bXAnKSxcbiAgICB0aW1lb3V0TXM6IHBhcnNlSW50KHByb2Nlc3MuZW52LkRPQ0tFUl9CVUlMRF9USU1FT1VUX01TIHx8ICc5MDAwMDAnLCAxMCksXG4gICAgcHVzaFRpbWVvdXRNczogcGFyc2VJbnQocHJvY2Vzcy5lbnYuRE9DS0VSX1BVU0hfVElNRU9VVF9NUyB8fCAnMzAwMDAwJywgMTApLFxuICAgIGthbmlrb0V4ZWN1dG9yOiBwcm9jZXNzLmVudi5LQU5JS09fRVhFQ1VUT1JfUEFUSCB8fCAnL2thbmlrby9leGVjdXRvcicsXG4gICAga2FuaWtvQ2FjaGVEaXI6IHByb2Nlc3MuZW52LktBTklLT19DQUNIRV9ESVIgfHwgJy9rYW5pa28vY2FjaGUnLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgQVdTIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGVzOlxuICogLSBgTEFNQkRBX1JVTlRJTUVgIOKAlCBMYW1iZGEgcnVudGltZSAoZGVmYXVsdDogYCdub2RlanMyNC54J2A7IHN1cHBvcnRzIG5vZGVqczIyLngsIG5vZGVqczI0LngpXG4gKiAtIGBMQU1CREFfVElNRU9VVGAg4oCUIExhbWJkYSB0aW1lb3V0IGluIHNlY29uZHMgKGRlZmF1bHQ6IGA5MDBgKVxuICogLSBgTEFNQkRBX01FTU9SWV9TSVpFYCDigJQgTGFtYmRhIG1lbW9yeSBpbiBNQiAoZGVmYXVsdDogYDEyOGApXG4gKiAtIGBMQU1CREFfQVJDSElURUNUVVJFYCDigJQgYCd4ODZfNjQnYCBvciBBUk0gKGRlZmF1bHQ6IEFSTV82NClcbiAqIC0gYExPR19HUk9VUF9OQU1FYCDigJQgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgKGRlZmF1bHQ6IGAnL3BpcGVsaW5lLWJ1aWxkZXIvbG9ncydgKVxuICogLSBgTE9HX1JFVEVOVElPTmAg4oCUIExvZyByZXRlbnRpb24gaW4gZGF5cyAoZGVmYXVsdDogYDdgKVxuICogLSBgTE9HX1JFTU9WQUxfUE9MSUNZYCDigJQgYCdSRVRBSU4nYCBvciBkZXN0cm95IChkZWZhdWx0OiBERVNUUk9ZKVxuICogLSBgQ09ERUJVSUxEX0NPTVBVVEVfVFlQRWAg4oCUIENvZGVCdWlsZCBjb21wdXRlIHR5cGUgKGRlZmF1bHQ6IGAnU01BTEwnYClcbiAqXG4gKiBAcmV0dXJucyBBV1MgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFXU0NvbmZpZygpOiBBV1NDb25maWcge1xuICByZXR1cm4ge1xuICAgIGxhbWJkYToge1xuICAgICAgcnVudGltZTogcGFyc2VSdW50aW1lKHByb2Nlc3MuZW52LkxBTUJEQV9SVU5USU1FIHx8ICdub2RlanMyNC54JyksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKHBhcnNlSW50KHByb2Nlc3MuZW52LkxBTUJEQV9USU1FT1VUIHx8ICc5MDAnLCAxMCkpLFxuICAgICAgbWVtb3J5U2l6ZTogcGFyc2VJbnQocHJvY2Vzcy5lbnYuTEFNQkRBX01FTU9SWV9TSVpFIHx8ICc1MTInLCAxMCksXG4gICAgICBhcmNoaXRlY3R1cmU6IHByb2Nlc3MuZW52LkxBTUJEQV9BUkNISVRFQ1RVUkUgPT09ICd4ODZfNjQnXG4gICAgICAgID8gQXJjaGl0ZWN0dXJlLlg4Nl82NFxuICAgICAgICA6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiBwcm9jZXNzLmVudi5MQU1CREFfUkVTRVJWRURfQ09OQ1VSUkVOQ1lcbiAgICAgICAgPyBwYXJzZUludChwcm9jZXNzLmVudi5MQU1CREFfUkVTRVJWRURfQ09OQ1VSUkVOQ1ksIDEwKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9LFxuXG4gICAgbG9nZ2luZzoge1xuICAgICAgZ3JvdXBOYW1lOiBwcm9jZXNzLmVudi5MT0dfR1JPVVBfTkFNRSB8fCAnL3BpcGVsaW5lLWJ1aWxkZXIvbG9ncycsXG4gICAgICByZXRlbnRpb246IHBhcnNlUmV0ZW50aW9uKHByb2Nlc3MuZW52LkxPR19SRVRFTlRJT04gfHwgJzcnKSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb2Nlc3MuZW52LkxPR19SRU1PVkFMX1BPTElDWSA9PT0gJ1JFVEFJTidcbiAgICAgICAgPyBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgICAgICA6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9LFxuXG4gICAgY29kZUJ1aWxkOiB7XG4gICAgICBjb21wdXRlVHlwZTogZ2V0Q29tcHV0ZVR5cGUocHJvY2Vzcy5lbnYuQ09ERUJVSUxEX0NPTVBVVEVfVFlQRSB8fCAnU01BTEwnKSxcbiAgICB9LFxuXG4gICAgcmVzb2x2ZWRTeW50aFBsdWdpbjogcHJvY2Vzcy5lbnYuUkVTT0xWRURfU1lOVEhfUExVR0lOID09PSAndHJ1ZScsXG4gIH07XG59XG5cbi8qKlxuICogUGFyc2UgTGFtYmRhIHJ1bnRpbWUgc3RyaW5nIGludG8gYSBDREsgUnVudGltZSBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBydW50aW1lIC0gUnVudGltZSBzdHJpbmcgKGUuZy4gYCdub2RlanMyNC54J2ApXG4gKiBAcmV0dXJucyBDREsgUnVudGltZSBlbnVtOyBmYWxscyBiYWNrIHRvIE5PREVKU18yNF9YIGZvciB1bmtub3duIHZhbHVlc1xuICovXG5mdW5jdGlvbiBwYXJzZVJ1bnRpbWUocnVudGltZTogc3RyaW5nKTogUnVudGltZSB7XG4gIGNvbnN0IHJ1bnRpbWVNYXA6IFJlY29yZDxzdHJpbmcsIFJ1bnRpbWU+ID0ge1xuICAgICdub2RlanMyNC54JzogUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgfTtcbiAgcmV0dXJuIHJ1bnRpbWVNYXBbcnVudGltZV0gfHwgUnVudGltZS5OT0RFSlNfMjRfWDtcbn1cblxuLyoqXG4gKiBQYXJzZSBsb2cgcmV0ZW50aW9uIGRheXMgc3RyaW5nIGludG8gYSBDREsgUmV0ZW50aW9uRGF5cyBlbnVtIHZhbHVlLlxuICogUmV0ZW50aW9uRGF5cyBlbnVtIHZhbHVlcyBhcmUgdGhlIG51bWVyaWMgZGF5IGNvdW50cyB0aGVtc2VsdmVzLFxuICogc28gd2UgcGFyc2UgdGhlIHN0cmluZyBhbmQgY2hlY2sgaWYgaXQncyBhIHZhbGlkIGVudW0gbWVtYmVyLlxuICpcbiAqIEBwYXJhbSBkYXlzIC0gUmV0ZW50aW9uIHBlcmlvZCBpbiBkYXlzIGFzIGEgc3RyaW5nIChlLmcuIGAnMzAnYClcbiAqIEByZXR1cm5zIENESyBSZXRlbnRpb25EYXlzIGVudW07IGZhbGxzIGJhY2sgdG8gT05FX0RBWSBmb3IgdW5rbm93biB2YWx1ZXNcbiAqL1xuY29uc3QgVkFMSURfUkVURU5USU9OX0RBWVMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoUmV0ZW50aW9uRGF5cykuZmlsdGVyKCh2KTogdiBpcyBudW1iZXIgPT4gdHlwZW9mIHYgPT09ICdudW1iZXInKSk7XG5cbmZ1bmN0aW9uIHBhcnNlUmV0ZW50aW9uKGRheXM6IHN0cmluZyk6IFJldGVudGlvbkRheXMge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChkYXlzLCAxMCk7XG4gIHJldHVybiBWQUxJRF9SRVRFTlRJT05fREFZUy5oYXMocGFyc2VkKSA/IHBhcnNlZCBhcyBSZXRlbnRpb25EYXlzIDogUmV0ZW50aW9uRGF5cy5PTkVfREFZO1xufVxuIl19
@@ -1,6 +1,8 @@
1
+ import type { Plugin } from '@pipeline-builder/pipeline-data';
1
2
  import { SecretValue } from 'aws-cdk-lib';
2
- import { ComputeType as CDKComputeType } from 'aws-cdk-lib/aws-codebuild';
3
+ import { ComputeType as CDKComputeType, IBuildImage } from 'aws-cdk-lib/aws-codebuild';
3
4
  import { CodeBuildStep, ManualApprovalStep, ShellStep } from 'aws-cdk-lib/pipelines';
5
+ import type { Construct } from 'constructs';
4
6
  import { MetaDataType } from './pipeline-types';
5
7
  import type { CodeBuildStepOptions } from '../pipeline/step-types';
6
8
  /**
@@ -33,6 +35,27 @@ export declare function extractMetadataEnv(metadata: MetaDataType): Record<strin
33
35
  * This means metadata keys like `aws:cdk:pipelines:codebuildstep:commands`
34
36
  * will override the plugin-derived commands when explicitly set.
35
37
  */
38
+ /**
39
+ * Resolve the CodeBuild image to use for a plugin.
40
+ *
41
+ * Strategy:
42
+ * 1. If the plugin sets `aws:cdk:codebuild:buildenvironment:buildImage`
43
+ * explicitly in metadata, the metadata-builder passthrough handles it
44
+ * (via `metadataForBuildEnvironment`). This function returns
45
+ * `undefined` and the metadata wins.
46
+ * 2. Otherwise, if the plugin has an `imageTag` AND the registry config
47
+ * is populated, build a `LinuxBuildImage.fromDockerRegistry()` image
48
+ * pointing at `<registry-host>:<port>/<imageTag>:latest`. CodeBuild
49
+ * pulls from our private registry — credentials come from the
50
+ * `pipeline-builder/system/registry` Secrets Manager secret.
51
+ * 3. If neither (e.g., a `metadata_only` plugin or one with no image),
52
+ * return `undefined` so CodeBuild uses its default (`standard:7.0`).
53
+ *
54
+ * `scope` is required because `Secret.fromSecretNameV2()` needs a parent
55
+ * Construct to anchor the imported secret to. Pass the stack/construct
56
+ * that owns the CodeBuild step.
57
+ */
58
+ export declare function resolvePluginImage(scope: Construct | undefined, plugin: Plugin): IBuildImage | undefined;
36
59
  export declare function createCodeBuildStep(options: CodeBuildStepOptions): ShellStep | CodeBuildStep | ManualApprovalStep;
37
60
  /**
38
61
  * Convert string or ComputeType enum to CDK ComputeType
@@ -4,6 +4,7 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.merge = merge;
6
6
  exports.extractMetadataEnv = extractMetadataEnv;
7
+ exports.resolvePluginImage = resolvePluginImage;
7
8
  exports.createCodeBuildStep = createCodeBuildStep;
8
9
  exports.getComputeType = getComputeType;
9
10
  exports.replaceNonAlphanumeric = replaceNonAlphanumeric;
@@ -11,6 +12,7 @@ exports.unwrapSecret = unwrapSecret;
11
12
  const api_core_1 = require("@pipeline-builder/api-core");
12
13
  const aws_cdk_lib_1 = require("aws-cdk-lib");
13
14
  const aws_codebuild_1 = require("aws-cdk-lib/aws-codebuild");
15
+ const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
14
16
  const pipelines_1 = require("aws-cdk-lib/pipelines");
15
17
  const metadata_builder_1 = require("./metadata-builder");
16
18
  const network_1 = require("./network");
@@ -146,6 +148,90 @@ function toSecretEnvVars(secrets, orgId) {
146
148
  * This means metadata keys like `aws:cdk:pipelines:codebuildstep:commands`
147
149
  * will override the plugin-derived commands when explicitly set.
148
150
  */
151
+ /**
152
+ * Resolve the CodeBuild image to use for a plugin.
153
+ *
154
+ * Strategy:
155
+ * 1. If the plugin sets `aws:cdk:codebuild:buildenvironment:buildImage`
156
+ * explicitly in metadata, the metadata-builder passthrough handles it
157
+ * (via `metadataForBuildEnvironment`). This function returns
158
+ * `undefined` and the metadata wins.
159
+ * 2. Otherwise, if the plugin has an `imageTag` AND the registry config
160
+ * is populated, build a `LinuxBuildImage.fromDockerRegistry()` image
161
+ * pointing at `<registry-host>:<port>/<imageTag>:latest`. CodeBuild
162
+ * pulls from our private registry — credentials come from the
163
+ * `pipeline-builder/system/registry` Secrets Manager secret.
164
+ * 3. If neither (e.g., a `metadata_only` plugin or one with no image),
165
+ * return `undefined` so CodeBuild uses its default (`standard:7.0`).
166
+ *
167
+ * `scope` is required because `Secret.fromSecretNameV2()` needs a parent
168
+ * Construct to anchor the imported secret to. Pass the stack/construct
169
+ * that owns the CodeBuild step.
170
+ */
171
+ function resolvePluginImage(scope, plugin) {
172
+ const imageTag = plugin.imageTag;
173
+ // `metadata_only` plugins legitimately have no image — their work runs
174
+ // in the default CodeBuild image. Quiet skip.
175
+ if (plugin.buildType === 'metadata_only')
176
+ return undefined;
177
+ // No image tag means there's nothing to pull. This SHOULDN'T happen for
178
+ // build_image / prebuilt plugins (the platform writes imageTag at upload
179
+ // time); if it does, the plugin record is malformed.
180
+ if (!imageTag || imageTag === '') {
181
+ log.warn(`Plugin "${plugin.name}" has buildType=${plugin.buildType} but no imageTag — ` +
182
+ `CodeBuild will run on aws/codebuild/standard:7.0 and won't have the plugin's baked tools. ` +
183
+ `Verify the plugin was uploaded correctly via load-plugins.sh.`);
184
+ return undefined;
185
+ }
186
+ let registry;
187
+ try {
188
+ registry = app_config_1.Config.get('registry');
189
+ }
190
+ catch {
191
+ // Config namespace not loaded (e.g., unit tests without full config).
192
+ log.warn(`Plugin "${plugin.name}" has imageTag="${imageTag}" but registry config not loaded — ` +
193
+ `CodeBuild will fall back to aws/codebuild/standard:7.0. ` +
194
+ `Set IMAGE_REGISTRY_HOST + IMAGE_REGISTRY_PORT in pipeline-manager's environment.`);
195
+ return undefined;
196
+ }
197
+ if (!registry?.host) {
198
+ log.warn(`Plugin "${plugin.name}" has imageTag="${imageTag}" but IMAGE_REGISTRY_HOST is empty — ` +
199
+ `CodeBuild will fall back to aws/codebuild/standard:7.0. ` +
200
+ `Set IMAGE_REGISTRY_HOST in pipeline-manager's environment to use the plugin image.`);
201
+ return undefined;
202
+ }
203
+ if (!scope) {
204
+ log.warn(`Plugin "${plugin.name}" image resolution skipped: no construct scope provided`);
205
+ return undefined;
206
+ }
207
+ // Compose the image URI: `<host>:<port>/<imageTag>:latest`.
208
+ // The trailing `:latest` is required — Docker assumes `latest` only when
209
+ // pulling without a tag, and we want explicit pull semantics.
210
+ const portPart = registry.port && registry.port !== 80 && registry.port !== 443
211
+ ? `:${registry.port}`
212
+ : '';
213
+ const imageUri = `${registry.host}${portPart}/${imageTag}:latest`;
214
+ // Credentials live in a Secrets Manager secret as
215
+ // `{ "username": "...", "password": "..." }` JSON. The secret name is
216
+ // configurable via `IMAGE_REGISTRY_CREDS_SECRET` env var (default:
217
+ // `pipeline-builder/system/registry`). The CodeBuild role needs
218
+ // `secretsmanager:GetSecretValue` for that ARN — CDK adds this
219
+ // automatically when the secret reference flows through
220
+ // `secretsManagerCredentials`.
221
+ //
222
+ // Use a deterministic construct ID so multiple steps that share the same
223
+ // registry secret reuse the same imported construct (avoids "construct
224
+ // already exists" errors when many steps resolve the same image).
225
+ const stack = aws_cdk_lib_1.Stack.of(scope);
226
+ const secretName = registry.credentialsSecret || 'pipeline-builder/system/registry';
227
+ // CDK construct IDs allow only [A-Za-z0-9_-]; sanitize the secret name.
228
+ const secretConstructId = `RegistryCreds_${secretName.replace(/[^A-Za-z0-9_-]/g, '_')}`;
229
+ const credentialsSecret = stack.node.tryFindChild(secretConstructId)
230
+ ?? aws_secretsmanager_1.Secret.fromSecretNameV2(stack, secretConstructId, secretName);
231
+ return aws_codebuild_1.LinuxBuildImage.fromDockerRegistry(imageUri, {
232
+ secretsManagerCredentials: credentialsSecret,
233
+ });
234
+ }
149
235
  function createCodeBuildStep(options) {
150
236
  const { id, input, metadata, network, scope, preInstallCommands, postInstallCommands, preCommands, postCommands, env: customEnv, additionalInputs, timeout, failureBehavior, artifactManager, stageName, stageAlias, pluginAlias, orgId, pipelineScope, } = options;
151
237
  // Resolve {{ ... }} templates in plugin spec fields against the pipeline scope.
@@ -187,13 +273,36 @@ function createCodeBuildStep(options) {
187
273
  postCommands,
188
274
  }, failureBehavior);
189
275
  const programmatic = { input, installCommands, commands };
190
- // Return ShellStep if plugin type is SHELL_STEP
276
+ // Resolve the plugin's runtime image. CodeBuild defaults to
277
+ // `aws/codebuild/standard:7.0` when no `buildImage` is set — that's the
278
+ // AWS-managed Ubuntu image and DOES NOT have any plugin-baked tools
279
+ // (pipeline-manager, snyk, terraform, etc.). Wiring the plugin's image
280
+ // here means CodeBuild pulls from our private registry and the tools
281
+ // installed in the plugin's Dockerfile are actually available.
282
+ const pluginBuildImage = resolvePluginImage(scope, plugin);
283
+ // ShellStep branch.
284
+ // ShellStep itself doesn't accept `buildEnvironment`/`buildImage`. CDK
285
+ // pipelines wraps ShellSteps in a default CodeBuild action that runs on
286
+ // `aws/codebuild/standard:7.0` — which won't have the plugin's tools.
287
+ //
288
+ // So when a SHELL_STEP plugin DOES have an image (because its author
289
+ // baked tools into a Dockerfile), we PROMOTE it to a CodeBuildStep with
290
+ // the resolved image. The plugin author's intent ("use my baked tools")
291
+ // is preserved without forcing them to change pluginType.
292
+ //
293
+ // When the plugin has no image (or registry isn't configured), we keep
294
+ // the original ShellStep — it's lighter weight and the default
295
+ // CodeBuild image is fine.
191
296
  if (plugin.pluginType === pipeline_types_1.PluginType.SHELL_STEP) {
192
- return new pipelines_1.ShellStep(id, {
193
- ...programmatic,
194
- env: { ...env, ...actionEnv },
195
- ...(0, metadata_builder_1.metadataForShellStep)(merged),
196
- });
297
+ if (!pluginBuildImage) {
298
+ return new pipelines_1.ShellStep(id, {
299
+ ...programmatic,
300
+ env: { ...env, ...actionEnv },
301
+ ...(0, metadata_builder_1.metadataForShellStep)(merged),
302
+ });
303
+ }
304
+ log.debug(`[CreateCodeBuildStep] SHELL_STEP plugin "${plugin.name}" has imageTag — promoting to CodeBuildStep so the plugin image is actually used`);
305
+ // Fall through to the CodeBuildStep path below.
197
306
  }
198
307
  const computeType = getComputeType(plugin.computeType ?? options.defaultComputeType ?? 'SMALL');
199
308
  const networkProps = network
@@ -215,6 +324,7 @@ function createCodeBuildStep(options) {
215
324
  primaryOutputDirectory: plugin.primaryOutputDirectory ?? undefined,
216
325
  buildEnvironment: {
217
326
  computeType,
327
+ ...(pluginBuildImage && { buildImage: pluginBuildImage }),
218
328
  environmentVariables: {
219
329
  ...toCodeBuildEnvVars(env),
220
330
  ...secretEnvVars,
@@ -275,4 +385,4 @@ function replaceNonAlphanumeric(input, replaceValue = '_') {
275
385
  function unwrapSecret(value) {
276
386
  return typeof value === 'string' ? value : value.unsafeUnwrap();
277
387
  }
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BpcGVsaW5lLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBb0J0QyxzQkFFQztBQVNELGdEQVFDO0FBNEhELGtEQW1IQztBQUtELHdDQXFCQztBQVFELHdEQUVDO0FBT0Qsb0NBRUM7QUFqVUQseURBQTBEO0FBRTFELDZDQUFvRDtBQUNwRCw2REFBd0c7QUFDeEcscURBQXFGO0FBRXJGLHlEQUFpSDtBQUNqSCx1Q0FBMkM7QUFDM0MscURBQThGO0FBQzlGLHFEQUFxRDtBQUVyRCxpRUFBcUU7QUFFckUsTUFBTSxHQUFHLEdBQUcsSUFBQSx1QkFBWSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRW5DOztHQUVHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLEdBQUcsT0FBcUM7SUFDNUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBaUIsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsUUFBc0I7SUFDdkQsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLG9DQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sYUFBYSxHQUFHLDhDQUE4QyxDQUFDO0FBRXJFLFNBQVMs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QUFNLENBQUMsRUFBRSwyQkFBYyxDQUFDLE1BQU07UUFDM0MsQ0FBQyw0QkFBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLDJCQUFjLENBQUMsS0FBSztRQUN6QyxDQUFDLDRCQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsMkJBQWMsQ0FBQyxRQUFRO0tBQ2hELENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsS0FBSywwQkFBMEIsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sMkJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLEtBQWEsRUFBRSxlQUF1QixHQUFHO0lBQzlFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBMkI7SUFDdEQsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTZWNyZXRWYWx1ZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUsIENvbXB1dGVUeXBlIGFzIENES0NvbXB1dGVUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgeyBDb2RlQnVpbGRTdGVwLCBNYW51YWxBcHByb3ZhbFN0ZXAsIFNoZWxsU3RlcCB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgdHlwZSB7IEFydGlmYWN0S2V5IH0gZnJvbSAnLi9hcnRpZmFjdC1tYW5hZ2VyJztcbmltcG9ydCB7IG1ldGFkYXRhRm9yU2hlbGxTdGVwLCBtZXRhZGF0YUZvckNvZGVCdWlsZFN0ZXAsIG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4vbWV0YWRhdGEtYnVpbGRlcic7XG5pbXBvcnQgeyByZXNvbHZlTmV0d29yayB9IGZyb20gJy4vbmV0d29yayc7XG5pbXBvcnQgeyBQbHVnaW5UeXBlLCBDb21wdXRlVHlwZSwgTWV0YURhdGFUeXBlLCBDREtfTUVUQURBVEFfUFJFRklYIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcyc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQnVpbGRTdGVwT3B0aW9ucywgU3RlcEN1c3RvbWl6YXRpb24gfSBmcm9tICcuLi9waXBlbGluZS9zdGVwLXR5cGVzJztcbmltcG9ydCB7IHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMgfSBmcm9tICcuLi90ZW1wbGF0ZS9wbHVnaW4tcmVzb2x2ZXInO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ0hlbHBlcicpO1xuXG4vKipcbiAqIE1lcmdlIG11bHRpcGxlIG1ldGFkYXRhIG9iamVjdHMgaW50byBvbmUuIExhdGVyIHNvdXJjZXMgb3ZlcnJpZGUgZWFybGllciBvbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoLi4uc291cmNlczogQXJyYXk8UGFydGlhbDxNZXRhRGF0YVR5cGU+Pik6IE1ldGFEYXRhVHlwZSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCAuLi5zb3VyY2VzKSBhcyBNZXRhRGF0YVR5cGU7XG59XG5cbi8qKlxuICogRXh0cmFjdCBub24tbmFtZXNwYWNlZCBtZXRhZGF0YSBrZXlzIGFzIGVudmlyb25tZW50IHZhcmlhYmxlIHN0cmluZ3MuXG4gKiBLZXlzIHN0YXJ0aW5nIHdpdGggJ2F3czpjZGs6JyBhcmUgcmVzZXJ2ZWQgZm9yIENESyBjb25zdHJ1Y3QgcHJvcHNcbiAqIChwcm9jZXNzZWQgYnkgbWV0YWRhdGEgZXh0cmFjdGlvbiBmdW5jdGlvbnMpIGFuZCBhcmUgZXhjbHVkZWQgaGVyZS5cbiAqXG4gKiBBbGwgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBmb3IgQ29kZUJ1aWxkIGNvbXBhdGliaWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpKSB7XG4gICAgaWYgKCFrZXkuc3RhcnRzV2l0aChDREtfTUVUQURBVEFfUFJFRklYKSkge1xuICAgICAgZW52W2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG4vKipcbiAqIEJ1aWxkIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIHBsdWdpbiBjb25maWcsIG1lcmdlZCBtZXRhZGF0YSwgYW5kIGN1c3RvbSBlbnYuXG4gKlxuICogTWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIHBsdWdpbi5lbnYg4oCUIHBsdWdpbiBkZWZhdWx0IGVudiB2YXJzIChsb3dlc3QgcHJpb3JpdHkpXG4gKiAgIDIuIG5vbi1uYW1lc3BhY2VkIG1ldGFkYXRhIGtleXMg4oCUIGUuZy4gUFlUSE9OX1ZFUlNJT04sIFdPUktESVJcbiAqICAgMy4gY3VzdG9tRW52IOKAlCBwZXItc3RlcCBjdXN0b20gZW52IHZhcnMgKGhpZ2hlc3QgcHJpb3JpdHkpXG4gKi9cbmNvbnN0IEJPT1RTVFJBUF9DTUQgPSAnZXhwb3J0IFdPUktESVI9JHtXT1JLRElSOi0uL307IGNkICR7V09SS0RJUn0nO1xuXG5mdW5jdGlvbiBidWlsZEVudihwbHVnaW46IFBsdWdpbiwgbWV0YWRhdGE6IE1ldGFEYXRhVHlwZSwgY3VzdG9tRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4ge1xuICAgIC4uLihwbHVnaW4uZW52ID8/IHt9KSxcbiAgICAuLi5leHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGEpLFxuICAgIC4uLihjdXN0b21FbnYgPz8ge30pLFxuICB9O1xufVxuXG4vKipcbiAqIFdyYXAgYnVpbGQgY29tbWFuZHMgYmFzZWQgb24gZmFpbHVyZSBiZWhhdmlvci5cbiAqIC0gJ2ZhaWwnIChkZWZhdWx0KTogTm8gd3JhcHBpbmcg4oCUIGNvbW1hbmRzIGZhaWwgdGhlIHBpcGVsaW5lIG5hdHVyYWxseS5cbiAqIC0gJ3dhcm4nOiBSdW4gY29tbWFuZHMgd2l0aCBgc2V0ICtlYCwgY2FwdHVyZSBmYWlsdXJlcywgbG9nIHdhcm5pbmdzLCBjb250aW51ZS5cbiAqIC0gJ2lnbm9yZSc6IEFwcGVuZCBgfHwgdHJ1ZWAgdG8gZWFjaCBjb21tYW5kIOKAlCBmYWlsdXJlcyBhcmUgc2lsZW50bHkgc3dhbGxvd2VkLlxuICpcbiAqIE9ubHkgYXBwbGllZCB0byBidWlsZCBjb21tYW5kcywgbm90IGluc3RhbGwgY29tbWFuZHMgKGluc3RhbGwgZmFpbHVyZXMgc2hvdWxkIGFsd2F5cyBzdG9wIHRoZSBidWlsZCkuXG4gKi9cbmZ1bmN0aW9uIHdyYXBDb21tYW5kc0ZvckZhaWx1cmVCZWhhdmlvcihjb21tYW5kczogc3RyaW5nW10sIGJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZScpOiBzdHJpbmdbXSB7XG4gIGlmICghYmVoYXZpb3IgfHwgYmVoYXZpb3IgPT09ICdmYWlsJykgcmV0dXJuIGNvbW1hbmRzO1xuXG4gIGlmIChiZWhhdmlvciA9PT0gJ2lnbm9yZScpIHtcbiAgICByZXR1cm4gY29tbWFuZHMubWFwKGNtZCA9PiBgJHtjbWR9IHx8IHRydWVgKTtcbiAgfVxuXG4gIC8vICd3YXJuJzogcnVuIGFsbCBjb21tYW5kcywgY2FwdHVyZSBmYWlsdXJlcywgYnV0IGRvbid0IHN0b3BcbiAgcmV0dXJuIFtcbiAgICAnc2V0ICtlJyxcbiAgICAnX1NURVBfRVhJVD0wJyxcbiAgICAuLi5jb21tYW5kcy5tYXAoY21kID0+IGAke2NtZH0gfHwgeyBlY2hvIFwiV0FSTklORzogQ29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJD9cIjsgX1NURVBfRVhJVD0xOyB9YCksXG4gICAgJ3NldCAtZScsXG4gICAgJ2lmIFsgXCIkX1NURVBfRVhJVFwiIC1uZSAwIF07IHRoZW4gZWNobyBcIldBUk5JTkc6IE9uZSBvciBtb3JlIGNvbW1hbmRzIGluIHRoaXMgc3RlcCBmYWlsZWRcIjsgZmknLFxuICBdO1xufVxuXG4vKipcbiAqIEJ1aWxkIGJvb3RzdHJhcC1wcmVmaXhlZCBpbnN0YWxsIGFuZCBidWlsZCBjb21tYW5kcyBmcm9tIHBsdWdpbiBjb25maWcuXG4gKiBFYWNoIGNvbW1hbmQgbGlzdCBpcyBwcmVwZW5kZWQgd2l0aCBhIFdPUktESVIgYm9vdHN0cmFwIHRoYXQgZGVmYXVsdHMgdG8gJy4vJy5cbiAqIFdoZW4gY3VzdG9tIGNvbW1hbmRzIGFyZSBwcm92aWRlZCwgdGhleSBhcmUgaW5qZWN0ZWQgYmVmb3JlL2FmdGVyIHRoZSBwbHVnaW4ncyBjb21tYW5kcy5cbiAqIEJ1aWxkIGNvbW1hbmRzIGFyZSBvcHRpb25hbGx5IHdyYXBwZWQgYnkgZmFpbHVyZUJlaGF2aW9yIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBidWlsZENvbW1hbmRzKHBsdWdpbjogUGx1Z2luLCBjdXN0b20/OiBTdGVwQ3VzdG9taXphdGlvbiwgZmFpbHVyZUJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZScpOiB7IGluc3RhbGxDb21tYW5kczogc3RyaW5nW107IGNvbW1hbmRzOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgdXNlckNvbW1hbmRzID0gW1xuICAgIC4uLihjdXN0b20/LnByZUNvbW1hbmRzID8/IFtdKSxcbiAgICAuLi4ocGx1Z2luLmNvbW1hbmRzPy5sZW5ndGggPyBwbHVnaW4uY29tbWFuZHMgOiBbXSksXG4gICAgLi4uKGN1c3RvbT8ucG9zdENvbW1hbmRzID8/IFtdKSxcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGluc3RhbGxDb21tYW5kczogW1xuICAgICAgQk9PVFNUUkFQX0NNRCxcbiAgICAgIC4uLihjdXN0b20/LnByZUluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgICAuLi4ocGx1Z2luLmluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgICAuLi4oY3VzdG9tPy5wb3N0SW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICBdLFxuICAgIGNvbW1hbmRzOiBbQk9PVFNUUkFQX0NNRCwgLi4ud3JhcENvbW1hbmRzRm9yRmFpbHVyZUJlaGF2aW9yKHVzZXJDb21tYW5kcywgZmFpbHVyZUJlaGF2aW9yKV0sXG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydCBhIHBsYWluIGVudiByZWNvcmQgdG8gQ29kZUJ1aWxkJ3MgZW52aXJvbm1lbnRWYXJpYWJsZXMgZm9ybWF0IChQTEFJTlRFWFQpLlxuICovXG5mdW5jdGlvbiB0b0NvZGVCdWlsZEVudlZhcnMoZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogc3RyaW5nIH0+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhlbnYpLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gW25hbWUsIHsgdmFsdWUgfV0pLFxuICApO1xufVxuXG4vKipcbiAqIEJ1aWxkIFNFQ1JFVFNfTUFOQUdFUi10eXBlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIHBsdWdpbiBzZWNyZXQgZGVjbGFyYXRpb25zLlxuICogVXNlcyBuYW1pbmcgY29udmVudGlvbjogcGlwZWxpbmUtYnVpbGRlci97b3JnSWR9L3tzZWNyZXROYW1lfVxuICogRWFjaCBvcmcgbWFuYWdlcyB0aGVzZSBzZWNyZXRzIGluIHRoZWlyIG93biBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICovXG5jb25zdCBWQUxJRF9TRUNSRVRfTkFNRSA9IC9eW2EtekEtWjAtOS9fKz0uQC1dKyQvO1xuXG5mdW5jdGlvbiB0b1NlY3JldEVudlZhcnMoXG4gIHNlY3JldHM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyByZXF1aXJlZDogYm9vbGVhbiB9PixcbiAgb3JnSWQ6IHN0cmluZyxcbik6IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IHN0cmluZzsgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSB9PiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgc2VjcmV0cy5tYXAoKHsgbmFtZSB9KSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXRQYXRoID0gQ29yZUNvbnN0YW50cy5zZWNyZXRQYXRoKG9yZ0lkLCBuYW1lKTtcbiAgICAgIGlmICghVkFMSURfU0VDUkVUX05BTUUudGVzdChzZWNyZXRQYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlY3JldCBwYXRoIFwiJHtzZWNyZXRQYXRofVwiIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyBmb3IgQVdTIFNlY3JldHMgTWFuYWdlcmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBzZWNyZXRQYXRoLFxuICAgICAgICAgIHR5cGU6IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9KSxcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBDb2RlQnVpbGQgc3RlcCBvciBTaGVsbCBzdGVwIGJhc2VkIG9uIHBsdWdpbiBjb25maWd1cmF0aW9uLlxuICpcbiAqIE1ldGFkYXRhIG1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBTdGVwLWxldmVsIG1ldGFkYXRhIChmcm9tIG9wdGlvbnMubWV0YWRhdGEpXG4gKiAgIDIuIFBsdWdpbiBtZXRhZGF0YSAoZnJvbSBwbHVnaW4ubWV0YWRhdGEgaW4gZGF0YWJhc2UpXG4gKlxuICogRW52aXJvbm1lbnQgbWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIFBsdWdpbiBlbnYgdmFycyAoZnJvbSBwbHVnaW4uZW52KVxuICogICAyLiBDdXN0b20gZW52IHZhcnMgKGZyb20gb3B0aW9ucy5lbnYpXG4gKiAgIDMuIFdPUktESVIgZnJvbSBtZXJnZWQgbWV0YWRhdGFcbiAqXG4gKiBDREsgcHJvcCBzcHJlYWQgb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIHByb2dyYW1tYXRpYyBkZWZhdWx0cyAoaW5wdXQsIGNvbW1hbmRzLCBlbnYsIG5ldHdvcmspIOKGkiBtZXRhZGF0YSBvdmVycmlkZXNcbiAqXG4gKiBUaGlzIG1lYW5zIG1ldGFkYXRhIGtleXMgbGlrZSBgYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjb21tYW5kc2BcbiAqIHdpbGwgb3ZlcnJpZGUgdGhlIHBsdWdpbi1kZXJpdmVkIGNvbW1hbmRzIHdoZW4gZXhwbGljaXRseSBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2RlQnVpbGRTdGVwKG9wdGlvbnM6IENvZGVCdWlsZFN0ZXBPcHRpb25zKTogU2hlbGxTdGVwIHwgQ29kZUJ1aWxkU3RlcCB8IE1hbnVhbEFwcHJvdmFsU3RlcCB7XG4gIGNvbnN0IHtcbiAgICBpZCwgaW5wdXQsIG1ldGFkYXRhLCBuZXR3b3JrLCBzY29wZSxcbiAgICBwcmVJbnN0YWxsQ29tbWFuZHMsIHBvc3RJbnN0YWxsQ29tbWFuZHMsIHByZUNvbW1hbmRzLCBwb3N0Q29tbWFuZHMsXG4gICAgZW52OiBjdXN0b21FbnYsIGFkZGl0aW9uYWxJbnB1dHMsIHRpbWVvdXQsIGZhaWx1cmVCZWhhdmlvcixcbiAgICBhcnRpZmFjdE1hbmFnZXIsIHN0YWdlTmFtZSwgc3RhZ2VBbGlhcywgcGx1Z2luQWxpYXMsIG9yZ0lkLCBwaXBlbGluZVNjb3BlLFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBSZXNvbHZlIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgaW4gcGx1Z2luIHNwZWMgZmllbGRzIGFnYWluc3QgdGhlIHBpcGVsaW5lIHNjb3BlLlxuICAvLyBFdmVyeSBjYWxsIGdvZXMgdGhyb3VnaCB0aGUgcmVzb2x2ZXIg4oCUIHBsdWdpbnMgd2l0aG91dCB0ZW1wbGF0ZSB0b2tlbnMgYXJlXG4gIC8vIGEgbm8tb3AgZmFzdCBwYXRoIGluc2lkZSByZXNvbHZlUGx1Z2luVGVtcGxhdGVzKCkuXG4gIGNvbnN0IHBsdWdpbiA9IHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMob3B0aW9ucy5wbHVnaW4sIHBpcGVsaW5lU2NvcGUpO1xuXG4gIGNvbnN0IG1lcmdlZCA9IG1lcmdlKG1ldGFkYXRhID8/IHt9LCBwbHVnaW4ubWV0YWRhdGEgPz8ge30pO1xuXG4gIC8vIE1hbnVhbEFwcHJvdmFsU3RlcDogbm8gY29tbWFuZHMsIGVudiwgY29tcHV0ZSwgb3IgbmV0d29yayDigJQganVzdCBpZCArIG9wdGlvbmFsIGNvbW1lbnRcbiAgaWYgKHBsdWdpbi5wbHVnaW5UeXBlID09PSBQbHVnaW5UeXBlLk1BTlVBTF9BUFBST1ZBTF9TVEVQKSB7XG4gICAgcmV0dXJuIG5ldyBNYW51YWxBcHByb3ZhbFN0ZXAoaWQsIHtcbiAgICAgIGNvbW1lbnQ6IHR5cGVvZiBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA9PT0gJ3N0cmluZycgPyBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnW0NyZWF0ZUNvZGVCdWlsZFN0ZXBdIEJ1aWxkaW5nIHN0ZXAgd2l0aCBtZXJnZWQgbWV0YWRhdGEnKTtcblxuICAvLyBXYXJuIGFib3V0IHJlcXVpcmVkIHNlY3JldHMgd2l0aG91dCBvcmdJZCAoY2FuJ3QgcmVzb2x2ZSlcbiAgY29uc3QgcmVxdWlyZWRTZWNyZXRzID0gcGx1Z2luLnNlY3JldHM/LmZpbHRlcihzID0+IHMucmVxdWlyZWQpID8/IFtdO1xuICBpZiAocmVxdWlyZWRTZWNyZXRzLmxlbmd0aCA+IDAgJiYgIW9yZ0lkKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBkZWNsYXJlcyAke3JlcXVpcmVkU2VjcmV0cy5sZW5ndGh9IHJlcXVpcmVkIHNlY3JldChzKSBidXQgbm8gb3JnSWQgaXMgYXZhaWxhYmxlLiBgICtcbiAgICAgIGBTZWNyZXRzIHdpbGwgbm90IGJlIGluamVjdGVkOiAke3JlcXVpcmVkU2VjcmV0cy5tYXAocyA9PiBzLm5hbWUpLmpvaW4oJywgJyl9YCxcbiAgICApO1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBwbHVnaW4gc2VjcmV0cyBhcyBTRUNSRVRTX01BTkFHRVIgZW52IHZhcnNcbiAgY29uc3Qgc2VjcmV0RW52VmFycyA9IChwbHVnaW4uc2VjcmV0cz8ubGVuZ3RoICYmIG9yZ0lkKVxuICAgID8gdG9TZWNyZXRFbnZWYXJzKHBsdWdpbi5zZWNyZXRzLCBvcmdJZClcbiAgICA6IHt9O1xuXG4gIGNvbnN0IGVudiA9IGJ1aWxkRW52KHBsdWdpbiwgbWVyZ2VkLCBjdXN0b21FbnYpO1xuXG4gIC8vIENvZGVQaXBlbGluZSByZXNvbHZlZCB2YXJpYWJsZXMg4oCUIG11c3QgYmUgaW4gQ29kZUJ1aWxkU3RlcC5lbnYgKGFjdGlvbi1sZXZlbCksXG4gIC8vIG5vdCBidWlsZEVudmlyb25tZW50LmVudmlyb25tZW50VmFyaWFibGVzIChwcm9qZWN0LWxldmVsKVxuICBjb25zdCBhY3Rpb25FbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgUElQRUxJTkVfRVhFQ1VUSU9OX0lEOiAnI3tjb2RlcGlwZWxpbmUuUGlwZWxpbmVFeGVjdXRpb25JZH0nLFxuICB9O1xuXG4gIGNvbnN0IG91dHB1dERpciA9IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5O1xuICBjb25zdCBlbnN1cmVPdXRwdXREaXIgPSAob3V0cHV0RGlyICYmICFvdXRwdXREaXIuaW5jbHVkZXMoJyonKSlcbiAgICA/IFtgbWtkaXIgLXAgXCIke291dHB1dERpcn1cIiAmJiB0b3VjaCBcIiR7b3V0cHV0RGlyfS8uZ2l0a2VlcFwiYF1cbiAgICA6IFtdO1xuXG4gIGNvbnN0IHsgaW5zdGFsbENvbW1hbmRzLCBjb21tYW5kcyB9ID0gYnVpbGRDb21tYW5kcyhwbHVnaW4sIHtcbiAgICBwcmVJbnN0YWxsQ29tbWFuZHM6IFsuLi5lbnN1cmVPdXRwdXREaXIsIC4uLihwcmVJbnN0YWxsQ29tbWFuZHMgPz8gW10pXSxcbiAgICBwb3N0SW5zdGFsbENvbW1hbmRzLFxuICAgIHByZUNvbW1hbmRzLFxuICAgIHBvc3RDb21tYW5kcyxcbiAgfSwgZmFpbHVyZUJlaGF2aW9yKTtcblxuICBjb25zdCBwcm9ncmFtbWF0aWMgPSB7IGlucHV0LCBpbnN0YWxsQ29tbWFuZHMsIGNvbW1hbmRzIH07XG5cbiAgLy8gUmV0dXJuIFNoZWxsU3RlcCBpZiBwbHVnaW4gdHlwZSBpcyBTSEVMTF9TVEVQXG4gIGlmIChwbHVnaW4ucGx1Z2luVHlwZSA9PT0gUGx1Z2luVHlwZS5TSEVMTF9TVEVQKSB7XG4gICAgcmV0dXJuIG5ldyBTaGVsbFN0ZXAoaWQsIHtcbiAgICAgIC4uLnByb2dyYW1tYXRpYyxcbiAgICAgIGVudjogeyAuLi5lbnYsIC4uLmFjdGlvbkVudiB9LFxuICAgICAgLi4ubWV0YWRhdGFGb3JTaGVsbFN0ZXAobWVyZ2VkKSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbXB1dGVUeXBlID0gZ2V0Q29tcHV0ZVR5cGUoXG4gICAgcGx1Z2luLmNvbXB1dGVUeXBlID8/IG9wdGlvbnMuZGVmYXVsdENvbXB1dGVUeXBlID8/ICdTTUFMTCcsXG4gICk7XG5cbiAgY29uc3QgbmV0d29ya1Byb3BzID0gbmV0d29ya1xuICAgID8gcmVzb2x2ZU5ldHdvcmsoc2NvcGUsIG9wdGlvbnMudW5pcXVlSWQsIG5ldHdvcmspXG4gICAgOiB7fTtcblxuICAvLyBNZXRhZGF0YSBzcHJlYWQgbGFzdCBzbyBpdCBjYW4gb3ZlcnJpZGUgcHJvZ3JhbW1hdGljIGRlZmF1bHRzLlxuICAvLyBOT1RFOiBDYWNoaW5nIGlzIHN1cHBvcnRlZCB2aWEgdHdvIG1ldGFkYXRhIHBhdGhzOlxuICAvLyAgIDEuIE1ldGFkYXRhS2V5cy5DQUNIRSAoJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6Y2FjaGUnKSDigJQgcGFzc2VkIGRpcmVjdGx5XG4gIC8vICAgICAgYXMgdGhlIENvZGVCdWlsZFN0ZXAgYGNhY2hlYCBwcm9wIChleHBlY3RzIGEgY29kZWJ1aWxkLkNhY2hlIG9iamVjdCkuXG4gIC8vICAgMi4gTWV0YWRhdGFLZXlzLlBBUlRJQUxfQlVJTERfU1BFQyAoJ2F3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6cGFydGlhbGJ1aWxkc3BlYycpXG4gIC8vICAgICAg4oCUIHBhc3NlZCBhcyBgcGFydGlhbEJ1aWxkU3BlY2AsIHdoaWNoIGNhbiBpbmNsdWRlIGEgYGNhY2hlOmAgc2VjdGlvbiBmb3JcbiAgLy8gICAgICBTMyBvciBsb2NhbCBjYWNoaW5nIChlLmcuLCBCdWlsZFNwZWMuZnJvbU9iamVjdCh7IGNhY2hlOiB7IHBhdGhzOiBbLi4uXSB9IH0pKS5cbiAgY29uc3Qgc3RlcCA9IG5ldyBDb2RlQnVpbGRTdGVwKGlkLCB7XG4gICAgLi4ucHJvZ3JhbW1hdGljLFxuICAgIC4uLm5ldHdvcmtQcm9wcyxcbiAgICAuLi4oYWRkaXRpb25hbElucHV0cyAmJiB7IGFkZGl0aW9uYWxJbnB1dHMgfSksXG4gICAgLi4uKHRpbWVvdXQgJiYgeyB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKHRpbWVvdXQpIH0pLFxuICAgIGVudjogYWN0aW9uRW52LFxuICAgIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5ID8/IHVuZGVmaW5lZCxcbiAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICBjb21wdXRlVHlwZSxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgIC4uLnRvQ29kZUJ1aWxkRW52VmFycyhlbnYpLFxuICAgICAgICAuLi5zZWNyZXRFbnZWYXJzLFxuICAgICAgfSxcbiAgICAgIC4uLm1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudChtZXJnZWQpLFxuICAgIH0sXG4gICAgLi4ubWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwKG1lcmdlZCksXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIHdpdGggYXJ0aWZhY3QgbWFuYWdlciBpZiBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5IGlzIHNldFxuICBpZiAocGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnkgJiYgYXJ0aWZhY3RNYW5hZ2VyICYmIHN0YWdlTmFtZSkge1xuICAgIGNvbnN0IGFydGlmYWN0S2V5OiBBcnRpZmFjdEtleSA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIHN0YWdlQWxpYXM6IHN0YWdlQWxpYXMgPz8gYCR7c3RhZ2VOYW1lfS1hbGlhc2AsXG4gICAgICBwbHVnaW5OYW1lOiBwbHVnaW4ubmFtZSxcbiAgICAgIHBsdWdpbkFsaWFzOiBwbHVnaW5BbGlhcyA/PyBgJHtwbHVnaW4ubmFtZX0tYWxpYXNgLFxuICAgICAgb3V0cHV0RGlyZWN0b3J5OiBwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeSxcbiAgICB9O1xuICAgIGFydGlmYWN0TWFuYWdlci5hZGQoYXJ0aWZhY3RLZXksIHN0ZXApO1xuICB9XG5cbiAgcmV0dXJuIHN0ZXA7XG59XG5cbi8qKlxuICogQ29udmVydCBzdHJpbmcgb3IgQ29tcHV0ZVR5cGUgZW51bSB0byBDREsgQ29tcHV0ZVR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXB1dGVUeXBlKGlucHV0OiBzdHJpbmcgfCBDREtDb21wdXRlVHlwZSA9ICdTTUFMTCcpOiBDREtDb21wdXRlVHlwZSB7XG4gIC8vIElmIGFscmVhZHkgYSBDREsgQ29tcHV0ZVR5cGUsIHJldHVybiBhcy1pc1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBpbnB1dC50b1VwcGVyQ2FzZSgpIGFzIENvbXB1dGVUeXBlO1xuXG4gIGNvbnN0IG1hcHBpbmc6IFJlY29yZDxDb21wdXRlVHlwZSwgQ0RLQ29tcHV0ZVR5cGU+ID0ge1xuICAgIFtDb21wdXRlVHlwZS5TTUFMTF06IENES0NvbXB1dGVUeXBlLlNNQUxMLFxuICAgIFtDb21wdXRlVHlwZS5NRURJVU1dOiBDREtDb21wdXRlVHlwZS5NRURJVU0sXG4gICAgW0NvbXB1dGVUeXBlLkxBUkdFXTogQ0RLQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgW0NvbXB1dGVUeXBlLlgyX0xBUkdFXTogQ0RLQ29tcHV0ZVR5cGUuWDJfTEFSR0UsXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gbWFwcGluZ1tub3JtYWxpemVkXTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICBsb2cud2FybihgVW5rbm93biBjb21wdXRlIHR5cGUgXCIke2lucHV0fVwiLCBmYWxsaW5nIGJhY2sgdG8gU01BTExgKTtcbiAgICByZXR1cm4gQ0RLQ29tcHV0ZVR5cGUuU01BTEw7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBhbGwgY2hhcmFjdGVycyB0aGF0IGFyZSBub3QgbGV0dGVycyBvciBudW1iZXJzIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZVxuICogQHBhcmFtIGlucHV0IC0gVGhlIHN0cmluZyB0byBwcm9jZXNzXG4gKiBAcGFyYW0gcmVwbGFjZVZhbHVlIC0gVGhlIGNoYXJhY3RlcihzKSB0byByZXBsYWNlIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIChkZWZhdWx0OiAnXycpXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHJlcGxhY2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlTm9uQWxwaGFudW1lcmljKGlucHV0OiBzdHJpbmcsIHJlcGxhY2VWYWx1ZTogc3RyaW5nID0gJ18nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCByZXBsYWNlVmFsdWUpO1xufVxuXG4vKipcbiAqIFVud3JhcCBhIFNlY3JldFZhbHVlIHwgc3RyaW5nIGludG8gYSBwbGFpbiBzdHJpbmcuXG4gKiBXaGVuIGEgU2VjcmV0VmFsdWUgaXMgcHJvdmlkZWQgKGUuZy4gZnJvbSBTZWNyZXRzIE1hbmFnZXIpLCBjYWxscyB1bnNhZmVVbndyYXAoKVxuICogdG8gZXh0cmFjdCB0aGUgdW5kZXJseWluZyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcFNlY3JldCh2YWx1ZTogU2VjcmV0VmFsdWUgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogdmFsdWUudW5zYWZlVW53cmFwKCk7XG59XG4iXX0=
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BpcGVsaW5lLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBc0J0QyxzQkFFQztBQVNELGdEQVFDO0FBZ0pELGdEQTBFQztBQUVELGtEQTRJQztBQUtELHdDQXFCQztBQVFELHdEQUVDO0FBT0Qsb0NBRUM7QUE1YkQseURBQTBEO0FBRTFELDZDQUEyRDtBQUMzRCw2REFBc0k7QUFDdEksdUVBQXdEO0FBQ3hELHFEQUFxRjtBQUdyRix5REFBaUg7QUFDakgsdUNBQTJDO0FBQzNDLHFEQUE4RjtBQUM5RixxREFBNkQ7QUFFN0QsaUVBQXFFO0FBRXJFLE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQVksRUFBQyxRQUFRLENBQUMsQ0FBQztBQUVuQzs7R0FFRztBQUNILFNBQWdCLEtBQUssQ0FBQyxHQUFHLE9BQXFDO0lBQzVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQWlCLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLFFBQXNCO0lBQ3ZELE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7SUFDdkMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxvQ0FBbUIsQ0FBQyxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGFBQWEsR0FB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c0IsQ0FBQyxLQUFhLEVBQUUsZUFBdUIsR0FBRztJQUM5RSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEtBQTJCO0lBQ3RELE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU2VjcmV0VmFsdWUsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSwgQ29tcHV0ZVR5cGUgYXMgQ0RLQ29tcHV0ZVR5cGUsIExpbnV4QnVpbGRJbWFnZSwgSUJ1aWxkSW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBDb2RlQnVpbGRTdGVwLCBNYW51YWxBcHByb3ZhbFN0ZXAsIFNoZWxsU3RlcCB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBBcnRpZmFjdEtleSB9IGZyb20gJy4vYXJ0aWZhY3QtbWFuYWdlcic7XG5pbXBvcnQgeyBtZXRhZGF0YUZvclNoZWxsU3RlcCwgbWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwLCBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQgfSBmcm9tICcuL21ldGFkYXRhLWJ1aWxkZXInO1xuaW1wb3J0IHsgcmVzb2x2ZU5ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsnO1xuaW1wb3J0IHsgUGx1Z2luVHlwZSwgQ29tcHV0ZVR5cGUsIE1ldGFEYXRhVHlwZSwgQ0RLX01FVEFEQVRBX1BSRUZJWCB9IGZyb20gJy4vcGlwZWxpbmUtdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlnLCBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQnVpbGRTdGVwT3B0aW9ucywgU3RlcEN1c3RvbWl6YXRpb24gfSBmcm9tICcuLi9waXBlbGluZS9zdGVwLXR5cGVzJztcbmltcG9ydCB7IHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMgfSBmcm9tICcuLi90ZW1wbGF0ZS9wbHVnaW4tcmVzb2x2ZXInO1xuXG5jb25zdCBsb2cgPSBjcmVhdGVMb2dnZXIoJ0hlbHBlcicpO1xuXG4vKipcbiAqIE1lcmdlIG11bHRpcGxlIG1ldGFkYXRhIG9iamVjdHMgaW50byBvbmUuIExhdGVyIHNvdXJjZXMgb3ZlcnJpZGUgZWFybGllciBvbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoLi4uc291cmNlczogQXJyYXk8UGFydGlhbDxNZXRhRGF0YVR5cGU+Pik6IE1ldGFEYXRhVHlwZSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCAuLi5zb3VyY2VzKSBhcyBNZXRhRGF0YVR5cGU7XG59XG5cbi8qKlxuICogRXh0cmFjdCBub24tbmFtZXNwYWNlZCBtZXRhZGF0YSBrZXlzIGFzIGVudmlyb25tZW50IHZhcmlhYmxlIHN0cmluZ3MuXG4gKiBLZXlzIHN0YXJ0aW5nIHdpdGggJ2F3czpjZGs6JyBhcmUgcmVzZXJ2ZWQgZm9yIENESyBjb25zdHJ1Y3QgcHJvcHNcbiAqIChwcm9jZXNzZWQgYnkgbWV0YWRhdGEgZXh0cmFjdGlvbiBmdW5jdGlvbnMpIGFuZCBhcmUgZXhjbHVkZWQgaGVyZS5cbiAqXG4gKiBBbGwgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBmb3IgQ29kZUJ1aWxkIGNvbXBhdGliaWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpKSB7XG4gICAgaWYgKCFrZXkuc3RhcnRzV2l0aChDREtfTUVUQURBVEFfUFJFRklYKSkge1xuICAgICAgZW52W2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG4vKipcbiAqIEJ1aWxkIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIHBsdWdpbiBjb25maWcsIG1lcmdlZCBtZXRhZGF0YSwgYW5kIGN1c3RvbSBlbnYuXG4gKlxuICogTWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIHBsdWdpbi5lbnYg4oCUIHBsdWdpbiBkZWZhdWx0IGVudiB2YXJzIChsb3dlc3QgcHJpb3JpdHkpXG4gKiAgIDIuIG5vbi1uYW1lc3BhY2VkIG1ldGFkYXRhIGtleXMg4oCUIGUuZy4gUFlUSE9OX1ZFUlNJT04sIFdPUktESVJcbiAqICAgMy4gY3VzdG9tRW52IOKAlCBwZXItc3RlcCBjdXN0b20gZW52IHZhcnMgKGhpZ2hlc3QgcHJpb3JpdHkpXG4gKi9cbmNvbnN0IEJPT1RTVFJBUF9DTUQgPSAnZXhwb3J0IFdPUktESVI9JHtXT1JLRElSOi0uL307IGNkICR7V09SS0RJUn0nO1xuXG5mdW5jdGlvbiBidWlsZEVudihwbHVnaW46IFBsdWdpbiwgbWV0YWRhdGE6IE1ldGFEYXRhVHlwZSwgY3VzdG9tRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4ge1xuICAgIC4uLihwbHVnaW4uZW52ID8/IHt9KSxcbiAgICAuLi5leHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGEpLFxuICAgIC4uLihjdXN0b21FbnYgPz8ge30pLFxuICB9O1xufVxuXG4vKipcbiAqIFdyYXAgYnVpbGQgY29tbWFuZHMgYmFzZWQgb24gZmFpbHVyZSBiZWhhdmlvci5cbiAqIC0gJ2ZhaWwnIChkZWZhdWx0KTogTm8gd3JhcHBpbmcg4oCUIGNvbW1hbmRzIGZhaWwgdGhlIHBpcGVsaW5lIG5hdHVyYWxseS5cbiAqIC0gJ3dhcm4nOiBSdW4gY29tbWFuZHMgd2l0aCBgc2V0ICtlYCwgY2FwdHVyZSBmYWlsdXJlcywgbG9nIHdhcm5pbmdzLCBjb250aW51ZS5cbiAqIC0gJ2lnbm9yZSc6IEFwcGVuZCBgfHwgdHJ1ZWAgdG8gZWFjaCBjb21tYW5kIOKAlCBmYWlsdXJlcyBhcmUgc2lsZW50bHkgc3dhbGxvd2VkLlxuICpcbiAqIE9ubHkgYXBwbGllZCB0byBidWlsZCBjb21tYW5kcywgbm90IGluc3RhbGwgY29tbWFuZHMgKGluc3RhbGwgZmFpbHVyZXMgc2hvdWxkIGFsd2F5cyBzdG9wIHRoZSBidWlsZCkuXG4gKi9cbmZ1bmN0aW9uIHdyYXBDb21tYW5kc0ZvckZhaWx1cmVCZWhhdmlvcihjb21tYW5kczogc3RyaW5nW10sIGJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZScpOiBzdHJpbmdbXSB7XG4gIGlmICghYmVoYXZpb3IgfHwgYmVoYXZpb3IgPT09ICdmYWlsJykgcmV0dXJuIGNvbW1hbmRzO1xuXG4gIGlmIChiZWhhdmlvciA9PT0gJ2lnbm9yZScpIHtcbiAgICByZXR1cm4gY29tbWFuZHMubWFwKGNtZCA9PiBgJHtjbWR9IHx8IHRydWVgKTtcbiAgfVxuXG4gIC8vICd3YXJuJzogcnVuIGFsbCBjb21tYW5kcywgY2FwdHVyZSBmYWlsdXJlcywgYnV0IGRvbid0IHN0b3BcbiAgcmV0dXJuIFtcbiAgICAnc2V0ICtlJyxcbiAgICAnX1NURVBfRVhJVD0wJyxcbiAgICAuLi5jb21tYW5kcy5tYXAoY21kID0+IGAke2NtZH0gfHwgeyBlY2hvIFwiV0FSTklORzogQ29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJD9cIjsgX1NURVBfRVhJVD0xOyB9YCksXG4gICAgJ3NldCAtZScsXG4gICAgJ2lmIFsgXCIkX1NURVBfRVhJVFwiIC1uZSAwIF07IHRoZW4gZWNobyBcIldBUk5JTkc6IE9uZSBvciBtb3JlIGNvbW1hbmRzIGluIHRoaXMgc3RlcCBmYWlsZWRcIjsgZmknLFxuICBdO1xufVxuXG4vKipcbiAqIEJ1aWxkIGJvb3RzdHJhcC1wcmVmaXhlZCBpbnN0YWxsIGFuZCBidWlsZCBjb21tYW5kcyBmcm9tIHBsdWdpbiBjb25maWcuXG4gKiBFYWNoIGNvbW1hbmQgbGlzdCBpcyBwcmVwZW5kZWQgd2l0aCBhIFdPUktESVIgYm9vdHN0cmFwIHRoYXQgZGVmYXVsdHMgdG8gJy4vJy5cbiAqIFdoZW4gY3VzdG9tIGNvbW1hbmRzIGFyZSBwcm92aWRlZCwgdGhleSBhcmUgaW5qZWN0ZWQgYmVmb3JlL2FmdGVyIHRoZSBwbHVnaW4ncyBjb21tYW5kcy5cbiAqIEJ1aWxkIGNvbW1hbmRzIGFyZSBvcHRpb25hbGx5IHdyYXBwZWQgYnkgZmFpbHVyZUJlaGF2aW9yIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBidWlsZENvbW1hbmRzKHBsdWdpbjogUGx1Z2luLCBjdXN0b20/OiBTdGVwQ3VzdG9taXphdGlvbiwgZmFpbHVyZUJlaGF2aW9yPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZScpOiB7IGluc3RhbGxDb21tYW5kczogc3RyaW5nW107IGNvbW1hbmRzOiBzdHJpbmdbXSB9IHtcbiAgY29uc3QgdXNlckNvbW1hbmRzID0gW1xuICAgIC4uLihjdXN0b20/LnByZUNvbW1hbmRzID8/IFtdKSxcbiAgICAuLi4ocGx1Z2luLmNvbW1hbmRzPy5sZW5ndGggPyBwbHVnaW4uY29tbWFuZHMgOiBbXSksXG4gICAgLi4uKGN1c3RvbT8ucG9zdENvbW1hbmRzID8/IFtdKSxcbiAgXTtcblxuICByZXR1cm4ge1xuICAgIGluc3RhbGxDb21tYW5kczogW1xuICAgICAgQk9PVFNUUkFQX0NNRCxcbiAgICAgIC4uLihjdXN0b20/LnByZUluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgICAuLi4ocGx1Z2luLmluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgICAuLi4oY3VzdG9tPy5wb3N0SW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICBdLFxuICAgIGNvbW1hbmRzOiBbQk9PVFNUUkFQX0NNRCwgLi4ud3JhcENvbW1hbmRzRm9yRmFpbHVyZUJlaGF2aW9yKHVzZXJDb21tYW5kcywgZmFpbHVyZUJlaGF2aW9yKV0sXG4gIH07XG59XG5cbi8qKlxuICogQ29udmVydCBhIHBsYWluIGVudiByZWNvcmQgdG8gQ29kZUJ1aWxkJ3MgZW52aXJvbm1lbnRWYXJpYWJsZXMgZm9ybWF0IChQTEFJTlRFWFQpLlxuICovXG5mdW5jdGlvbiB0b0NvZGVCdWlsZEVudlZhcnMoZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogc3RyaW5nIH0+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhlbnYpLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gW25hbWUsIHsgdmFsdWUgfV0pLFxuICApO1xufVxuXG4vKipcbiAqIEJ1aWxkIFNFQ1JFVFNfTUFOQUdFUi10eXBlIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIHBsdWdpbiBzZWNyZXQgZGVjbGFyYXRpb25zLlxuICogVXNlcyBuYW1pbmcgY29udmVudGlvbjogcGlwZWxpbmUtYnVpbGRlci97b3JnSWR9L3tzZWNyZXROYW1lfVxuICogRWFjaCBvcmcgbWFuYWdlcyB0aGVzZSBzZWNyZXRzIGluIHRoZWlyIG93biBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICovXG5jb25zdCBWQUxJRF9TRUNSRVRfTkFNRSA9IC9eW2EtekEtWjAtOS9fKz0uQC1dKyQvO1xuXG5mdW5jdGlvbiB0b1NlY3JldEVudlZhcnMoXG4gIHNlY3JldHM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyByZXF1aXJlZDogYm9vbGVhbiB9PixcbiAgb3JnSWQ6IHN0cmluZyxcbik6IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IHN0cmluZzsgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSB9PiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgc2VjcmV0cy5tYXAoKHsgbmFtZSB9KSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXRQYXRoID0gQ29yZUNvbnN0YW50cy5zZWNyZXRQYXRoKG9yZ0lkLCBuYW1lKTtcbiAgICAgIGlmICghVkFMSURfU0VDUkVUX05BTUUudGVzdChzZWNyZXRQYXRoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlY3JldCBwYXRoIFwiJHtzZWNyZXRQYXRofVwiIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyBmb3IgQVdTIFNlY3JldHMgTWFuYWdlcmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgbmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBzZWNyZXRQYXRoLFxuICAgICAgICAgIHR5cGU6IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuU0VDUkVUU19NQU5BR0VSLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9KSxcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBDb2RlQnVpbGQgc3RlcCBvciBTaGVsbCBzdGVwIGJhc2VkIG9uIHBsdWdpbiBjb25maWd1cmF0aW9uLlxuICpcbiAqIE1ldGFkYXRhIG1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBTdGVwLWxldmVsIG1ldGFkYXRhIChmcm9tIG9wdGlvbnMubWV0YWRhdGEpXG4gKiAgIDIuIFBsdWdpbiBtZXRhZGF0YSAoZnJvbSBwbHVnaW4ubWV0YWRhdGEgaW4gZGF0YWJhc2UpXG4gKlxuICogRW52aXJvbm1lbnQgbWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIFBsdWdpbiBlbnYgdmFycyAoZnJvbSBwbHVnaW4uZW52KVxuICogICAyLiBDdXN0b20gZW52IHZhcnMgKGZyb20gb3B0aW9ucy5lbnYpXG4gKiAgIDMuIFdPUktESVIgZnJvbSBtZXJnZWQgbWV0YWRhdGFcbiAqXG4gKiBDREsgcHJvcCBzcHJlYWQgb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIHByb2dyYW1tYXRpYyBkZWZhdWx0cyAoaW5wdXQsIGNvbW1hbmRzLCBlbnYsIG5ldHdvcmspIOKGkiBtZXRhZGF0YSBvdmVycmlkZXNcbiAqXG4gKiBUaGlzIG1lYW5zIG1ldGFkYXRhIGtleXMgbGlrZSBgYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjb21tYW5kc2BcbiAqIHdpbGwgb3ZlcnJpZGUgdGhlIHBsdWdpbi1kZXJpdmVkIGNvbW1hbmRzIHdoZW4gZXhwbGljaXRseSBzZXQuXG4gKi9cbi8qKlxuICogUmVzb2x2ZSB0aGUgQ29kZUJ1aWxkIGltYWdlIHRvIHVzZSBmb3IgYSBwbHVnaW4uXG4gKlxuICogU3RyYXRlZ3k6XG4gKiAgIDEuIElmIHRoZSBwbHVnaW4gc2V0cyBgYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpidWlsZEltYWdlYFxuICogICAgICBleHBsaWNpdGx5IGluIG1ldGFkYXRhLCB0aGUgbWV0YWRhdGEtYnVpbGRlciBwYXNzdGhyb3VnaCBoYW5kbGVzIGl0XG4gKiAgICAgICh2aWEgYG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudGApLiBUaGlzIGZ1bmN0aW9uIHJldHVybnNcbiAqICAgICAgYHVuZGVmaW5lZGAgYW5kIHRoZSBtZXRhZGF0YSB3aW5zLlxuICogICAyLiBPdGhlcndpc2UsIGlmIHRoZSBwbHVnaW4gaGFzIGFuIGBpbWFnZVRhZ2AgQU5EIHRoZSByZWdpc3RyeSBjb25maWdcbiAqICAgICAgaXMgcG9wdWxhdGVkLCBidWlsZCBhIGBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KClgIGltYWdlXG4gKiAgICAgIHBvaW50aW5nIGF0IGA8cmVnaXN0cnktaG9zdD46PHBvcnQ+LzxpbWFnZVRhZz46bGF0ZXN0YC4gQ29kZUJ1aWxkXG4gKiAgICAgIHB1bGxzIGZyb20gb3VyIHByaXZhdGUgcmVnaXN0cnkg4oCUIGNyZWRlbnRpYWxzIGNvbWUgZnJvbSB0aGVcbiAqICAgICAgYHBpcGVsaW5lLWJ1aWxkZXIvc3lzdGVtL3JlZ2lzdHJ5YCBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0LlxuICogICAzLiBJZiBuZWl0aGVyIChlLmcuLCBhIGBtZXRhZGF0YV9vbmx5YCBwbHVnaW4gb3Igb25lIHdpdGggbm8gaW1hZ2UpLFxuICogICAgICByZXR1cm4gYHVuZGVmaW5lZGAgc28gQ29kZUJ1aWxkIHVzZXMgaXRzIGRlZmF1bHQgKGBzdGFuZGFyZDo3LjBgKS5cbiAqXG4gKiBgc2NvcGVgIGlzIHJlcXVpcmVkIGJlY2F1c2UgYFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKClgIG5lZWRzIGEgcGFyZW50XG4gKiBDb25zdHJ1Y3QgdG8gYW5jaG9yIHRoZSBpbXBvcnRlZCBzZWNyZXQgdG8uIFBhc3MgdGhlIHN0YWNrL2NvbnN0cnVjdFxuICogdGhhdCBvd25zIHRoZSBDb2RlQnVpbGQgc3RlcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQbHVnaW5JbWFnZShzY29wZTogQ29uc3RydWN0IHwgdW5kZWZpbmVkLCBwbHVnaW46IFBsdWdpbik6IElCdWlsZEltYWdlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaW1hZ2VUYWcgPSBwbHVnaW4uaW1hZ2VUYWc7XG5cbiAgLy8gYG1ldGFkYXRhX29ubHlgIHBsdWdpbnMgbGVnaXRpbWF0ZWx5IGhhdmUgbm8gaW1hZ2Ug4oCUIHRoZWlyIHdvcmsgcnVuc1xuICAvLyBpbiB0aGUgZGVmYXVsdCBDb2RlQnVpbGQgaW1hZ2UuIFF1aWV0IHNraXAuXG4gIGlmIChwbHVnaW4uYnVpbGRUeXBlID09PSAnbWV0YWRhdGFfb25seScpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgLy8gTm8gaW1hZ2UgdGFnIG1lYW5zIHRoZXJlJ3Mgbm90aGluZyB0byBwdWxsLiBUaGlzIFNIT1VMRE4nVCBoYXBwZW4gZm9yXG4gIC8vIGJ1aWxkX2ltYWdlIC8gcHJlYnVpbHQgcGx1Z2lucyAodGhlIHBsYXRmb3JtIHdyaXRlcyBpbWFnZVRhZyBhdCB1cGxvYWRcbiAgLy8gdGltZSk7IGlmIGl0IGRvZXMsIHRoZSBwbHVnaW4gcmVjb3JkIGlzIG1hbGZvcm1lZC5cbiAgaWYgKCFpbWFnZVRhZyB8fCBpbWFnZVRhZyA9PT0gJycpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGhhcyBidWlsZFR5cGU9JHtwbHVnaW4uYnVpbGRUeXBlfSBidXQgbm8gaW1hZ2VUYWcg4oCUIGAgK1xuICAgICAgYENvZGVCdWlsZCB3aWxsIHJ1biBvbiBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjcuMCBhbmQgd29uJ3QgaGF2ZSB0aGUgcGx1Z2luJ3MgYmFrZWQgdG9vbHMuIGAgK1xuICAgICAgYFZlcmlmeSB0aGUgcGx1Z2luIHdhcyB1cGxvYWRlZCBjb3JyZWN0bHkgdmlhIGxvYWQtcGx1Z2lucy5zaC5gLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCByZWdpc3RyeTtcbiAgdHJ5IHtcbiAgICByZWdpc3RyeSA9IENvbmZpZy5nZXQoJ3JlZ2lzdHJ5Jyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIENvbmZpZyBuYW1lc3BhY2Ugbm90IGxvYWRlZCAoZS5nLiwgdW5pdCB0ZXN0cyB3aXRob3V0IGZ1bGwgY29uZmlnKS5cbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGhhcyBpbWFnZVRhZz1cIiR7aW1hZ2VUYWd9XCIgYnV0IHJlZ2lzdHJ5IGNvbmZpZyBub3QgbG9hZGVkIOKAlCBgICtcbiAgICAgIGBDb2RlQnVpbGQgd2lsbCBmYWxsIGJhY2sgdG8gYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjAuIGAgK1xuICAgICAgYFNldCBJTUFHRV9SRUdJU1RSWV9IT1NUICsgSU1BR0VfUkVHSVNUUllfUE9SVCBpbiBwaXBlbGluZS1tYW5hZ2VyJ3MgZW52aXJvbm1lbnQuYCxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIXJlZ2lzdHJ5Py5ob3N0KSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBoYXMgaW1hZ2VUYWc9XCIke2ltYWdlVGFnfVwiIGJ1dCBJTUFHRV9SRUdJU1RSWV9IT1NUIGlzIGVtcHR5IOKAlCBgICtcbiAgICAgIGBDb2RlQnVpbGQgd2lsbCBmYWxsIGJhY2sgdG8gYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjAuIGAgK1xuICAgICAgYFNldCBJTUFHRV9SRUdJU1RSWV9IT1NUIGluIHBpcGVsaW5lLW1hbmFnZXIncyBlbnZpcm9ubWVudCB0byB1c2UgdGhlIHBsdWdpbiBpbWFnZS5gLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoIXNjb3BlKSB7XG4gICAgbG9nLndhcm4oYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaW1hZ2UgcmVzb2x1dGlvbiBza2lwcGVkOiBubyBjb25zdHJ1Y3Qgc2NvcGUgcHJvdmlkZWRgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gQ29tcG9zZSB0aGUgaW1hZ2UgVVJJOiBgPGhvc3Q+Ojxwb3J0Pi88aW1hZ2VUYWc+OmxhdGVzdGAuXG4gIC8vIFRoZSB0cmFpbGluZyBgOmxhdGVzdGAgaXMgcmVxdWlyZWQg4oCUIERvY2tlciBhc3N1bWVzIGBsYXRlc3RgIG9ubHkgd2hlblxuICAvLyBwdWxsaW5nIHdpdGhvdXQgYSB0YWcsIGFuZCB3ZSB3YW50IGV4cGxpY2l0IHB1bGwgc2VtYW50aWNzLlxuICBjb25zdCBwb3J0UGFydCA9IHJlZ2lzdHJ5LnBvcnQgJiYgcmVnaXN0cnkucG9ydCAhPT0gODAgJiYgcmVnaXN0cnkucG9ydCAhPT0gNDQzXG4gICAgPyBgOiR7cmVnaXN0cnkucG9ydH1gXG4gICAgOiAnJztcbiAgY29uc3QgaW1hZ2VVcmkgPSBgJHtyZWdpc3RyeS5ob3N0fSR7cG9ydFBhcnR9LyR7aW1hZ2VUYWd9OmxhdGVzdGA7XG5cbiAgLy8gQ3JlZGVudGlhbHMgbGl2ZSBpbiBhIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgYXNcbiAgLy8gYHsgXCJ1c2VybmFtZVwiOiBcIi4uLlwiLCBcInBhc3N3b3JkXCI6IFwiLi4uXCIgfWAgSlNPTi4gVGhlIHNlY3JldCBuYW1lIGlzXG4gIC8vIGNvbmZpZ3VyYWJsZSB2aWEgYElNQUdFX1JFR0lTVFJZX0NSRURTX1NFQ1JFVGAgZW52IHZhciAoZGVmYXVsdDpcbiAgLy8gYHBpcGVsaW5lLWJ1aWxkZXIvc3lzdGVtL3JlZ2lzdHJ5YCkuIFRoZSBDb2RlQnVpbGQgcm9sZSBuZWVkc1xuICAvLyBgc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWVgIGZvciB0aGF0IEFSTiDigJQgQ0RLIGFkZHMgdGhpc1xuICAvLyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHNlY3JldCByZWZlcmVuY2UgZmxvd3MgdGhyb3VnaFxuICAvLyBgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsc2AuXG4gIC8vXG4gIC8vIFVzZSBhIGRldGVybWluaXN0aWMgY29uc3RydWN0IElEIHNvIG11bHRpcGxlIHN0ZXBzIHRoYXQgc2hhcmUgdGhlIHNhbWVcbiAgLy8gcmVnaXN0cnkgc2VjcmV0IHJldXNlIHRoZSBzYW1lIGltcG9ydGVkIGNvbnN0cnVjdCAoYXZvaWRzIFwiY29uc3RydWN0XG4gIC8vIGFscmVhZHkgZXhpc3RzXCIgZXJyb3JzIHdoZW4gbWFueSBzdGVwcyByZXNvbHZlIHRoZSBzYW1lIGltYWdlKS5cbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSByZWdpc3RyeS5jcmVkZW50aWFsc1NlY3JldCB8fCAncGlwZWxpbmUtYnVpbGRlci9zeXN0ZW0vcmVnaXN0cnknO1xuICAvLyBDREsgY29uc3RydWN0IElEcyBhbGxvdyBvbmx5IFtBLVphLXowLTlfLV07IHNhbml0aXplIHRoZSBzZWNyZXQgbmFtZS5cbiAgY29uc3Qgc2VjcmV0Q29uc3RydWN0SWQgPSBgUmVnaXN0cnlDcmVkc18ke3NlY3JldE5hbWUucmVwbGFjZSgvW15BLVphLXowLTlfLV0vZywgJ18nKX1gO1xuICBjb25zdCBjcmVkZW50aWFsc1NlY3JldCA9IChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChzZWNyZXRDb25zdHJ1Y3RJZCkgYXMgU2VjcmV0IHwgdW5kZWZpbmVkKVxuICAgID8/IFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKHN0YWNrLCBzZWNyZXRDb25zdHJ1Y3RJZCwgc2VjcmV0TmFtZSk7XG5cbiAgcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoaW1hZ2VVcmksIHtcbiAgICBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzOiBjcmVkZW50aWFsc1NlY3JldCxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2RlQnVpbGRTdGVwKG9wdGlvbnM6IENvZGVCdWlsZFN0ZXBPcHRpb25zKTogU2hlbGxTdGVwIHwgQ29kZUJ1aWxkU3RlcCB8IE1hbnVhbEFwcHJvdmFsU3RlcCB7XG4gIGNvbnN0IHtcbiAgICBpZCwgaW5wdXQsIG1ldGFkYXRhLCBuZXR3b3JrLCBzY29wZSxcbiAgICBwcmVJbnN0YWxsQ29tbWFuZHMsIHBvc3RJbnN0YWxsQ29tbWFuZHMsIHByZUNvbW1hbmRzLCBwb3N0Q29tbWFuZHMsXG4gICAgZW52OiBjdXN0b21FbnYsIGFkZGl0aW9uYWxJbnB1dHMsIHRpbWVvdXQsIGZhaWx1cmVCZWhhdmlvcixcbiAgICBhcnRpZmFjdE1hbmFnZXIsIHN0YWdlTmFtZSwgc3RhZ2VBbGlhcywgcGx1Z2luQWxpYXMsIG9yZ0lkLCBwaXBlbGluZVNjb3BlLFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBSZXNvbHZlIHt7IC4uLiB9fSB0ZW1wbGF0ZXMgaW4gcGx1Z2luIHNwZWMgZmllbGRzIGFnYWluc3QgdGhlIHBpcGVsaW5lIHNjb3BlLlxuICAvLyBFdmVyeSBjYWxsIGdvZXMgdGhyb3VnaCB0aGUgcmVzb2x2ZXIg4oCUIHBsdWdpbnMgd2l0aG91dCB0ZW1wbGF0ZSB0b2tlbnMgYXJlXG4gIC8vIGEgbm8tb3AgZmFzdCBwYXRoIGluc2lkZSByZXNvbHZlUGx1Z2luVGVtcGxhdGVzKCkuXG4gIGNvbnN0IHBsdWdpbiA9IHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMob3B0aW9ucy5wbHVnaW4sIHBpcGVsaW5lU2NvcGUpO1xuXG4gIGNvbnN0IG1lcmdlZCA9IG1lcmdlKG1ldGFkYXRhID8/IHt9LCBwbHVnaW4ubWV0YWRhdGEgPz8ge30pO1xuXG4gIC8vIE1hbnVhbEFwcHJvdmFsU3RlcDogbm8gY29tbWFuZHMsIGVudiwgY29tcHV0ZSwgb3IgbmV0d29yayDigJQganVzdCBpZCArIG9wdGlvbmFsIGNvbW1lbnRcbiAgaWYgKHBsdWdpbi5wbHVnaW5UeXBlID09PSBQbHVnaW5UeXBlLk1BTlVBTF9BUFBST1ZBTF9TVEVQKSB7XG4gICAgcmV0dXJuIG5ldyBNYW51YWxBcHByb3ZhbFN0ZXAoaWQsIHtcbiAgICAgIGNvbW1lbnQ6IHR5cGVvZiBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA9PT0gJ3N0cmluZycgPyBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnW0NyZWF0ZUNvZGVCdWlsZFN0ZXBdIEJ1aWxkaW5nIHN0ZXAgd2l0aCBtZXJnZWQgbWV0YWRhdGEnKTtcblxuICAvLyBXYXJuIGFib3V0IHJlcXVpcmVkIHNlY3JldHMgd2l0aG91dCBvcmdJZCAoY2FuJ3QgcmVzb2x2ZSlcbiAgY29uc3QgcmVxdWlyZWRTZWNyZXRzID0gcGx1Z2luLnNlY3JldHM/LmZpbHRlcihzID0+IHMucmVxdWlyZWQpID8/IFtdO1xuICBpZiAocmVxdWlyZWRTZWNyZXRzLmxlbmd0aCA+IDAgJiYgIW9yZ0lkKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBkZWNsYXJlcyAke3JlcXVpcmVkU2VjcmV0cy5sZW5ndGh9IHJlcXVpcmVkIHNlY3JldChzKSBidXQgbm8gb3JnSWQgaXMgYXZhaWxhYmxlLiBgICtcbiAgICAgIGBTZWNyZXRzIHdpbGwgbm90IGJlIGluamVjdGVkOiAke3JlcXVpcmVkU2VjcmV0cy5tYXAocyA9PiBzLm5hbWUpLmpvaW4oJywgJyl9YCxcbiAgICApO1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBwbHVnaW4gc2VjcmV0cyBhcyBTRUNSRVRTX01BTkFHRVIgZW52IHZhcnNcbiAgY29uc3Qgc2VjcmV0RW52VmFycyA9IChwbHVnaW4uc2VjcmV0cz8ubGVuZ3RoICYmIG9yZ0lkKVxuICAgID8gdG9TZWNyZXRFbnZWYXJzKHBsdWdpbi5zZWNyZXRzLCBvcmdJZClcbiAgICA6IHt9O1xuXG4gIGNvbnN0IGVudiA9IGJ1aWxkRW52KHBsdWdpbiwgbWVyZ2VkLCBjdXN0b21FbnYpO1xuXG4gIC8vIENvZGVQaXBlbGluZSByZXNvbHZlZCB2YXJpYWJsZXMg4oCUIG11c3QgYmUgaW4gQ29kZUJ1aWxkU3RlcC5lbnYgKGFjdGlvbi1sZXZlbCksXG4gIC8vIG5vdCBidWlsZEVudmlyb25tZW50LmVudmlyb25tZW50VmFyaWFibGVzIChwcm9qZWN0LWxldmVsKVxuICBjb25zdCBhY3Rpb25FbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgUElQRUxJTkVfRVhFQ1VUSU9OX0lEOiAnI3tjb2RlcGlwZWxpbmUuUGlwZWxpbmVFeGVjdXRpb25JZH0nLFxuICB9O1xuXG4gIGNvbnN0IG91dHB1dERpciA9IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5O1xuICBjb25zdCBlbnN1cmVPdXRwdXREaXIgPSAob3V0cHV0RGlyICYmICFvdXRwdXREaXIuaW5jbHVkZXMoJyonKSlcbiAgICA/IFtgbWtkaXIgLXAgXCIke291dHB1dERpcn1cIiAmJiB0b3VjaCBcIiR7b3V0cHV0RGlyfS8uZ2l0a2VlcFwiYF1cbiAgICA6IFtdO1xuXG4gIGNvbnN0IHsgaW5zdGFsbENvbW1hbmRzLCBjb21tYW5kcyB9ID0gYnVpbGRDb21tYW5kcyhwbHVnaW4sIHtcbiAgICBwcmVJbnN0YWxsQ29tbWFuZHM6IFsuLi5lbnN1cmVPdXRwdXREaXIsIC4uLihwcmVJbnN0YWxsQ29tbWFuZHMgPz8gW10pXSxcbiAgICBwb3N0SW5zdGFsbENvbW1hbmRzLFxuICAgIHByZUNvbW1hbmRzLFxuICAgIHBvc3RDb21tYW5kcyxcbiAgfSwgZmFpbHVyZUJlaGF2aW9yKTtcblxuICBjb25zdCBwcm9ncmFtbWF0aWMgPSB7IGlucHV0LCBpbnN0YWxsQ29tbWFuZHMsIGNvbW1hbmRzIH07XG5cbiAgLy8gUmVzb2x2ZSB0aGUgcGx1Z2luJ3MgcnVudGltZSBpbWFnZS4gQ29kZUJ1aWxkIGRlZmF1bHRzIHRvXG4gIC8vIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjcuMGAgd2hlbiBubyBgYnVpbGRJbWFnZWAgaXMgc2V0IOKAlCB0aGF0J3MgdGhlXG4gIC8vIEFXUy1tYW5hZ2VkIFVidW50dSBpbWFnZSBhbmQgRE9FUyBOT1QgaGF2ZSBhbnkgcGx1Z2luLWJha2VkIHRvb2xzXG4gIC8vIChwaXBlbGluZS1tYW5hZ2VyLCBzbnlrLCB0ZXJyYWZvcm0sIGV0Yy4pLiBXaXJpbmcgdGhlIHBsdWdpbidzIGltYWdlXG4gIC8vIGhlcmUgbWVhbnMgQ29kZUJ1aWxkIHB1bGxzIGZyb20gb3VyIHByaXZhdGUgcmVnaXN0cnkgYW5kIHRoZSB0b29sc1xuICAvLyBpbnN0YWxsZWQgaW4gdGhlIHBsdWdpbidzIERvY2tlcmZpbGUgYXJlIGFjdHVhbGx5IGF2YWlsYWJsZS5cbiAgY29uc3QgcGx1Z2luQnVpbGRJbWFnZSA9IHJlc29sdmVQbHVnaW5JbWFnZShzY29wZSwgcGx1Z2luKTtcblxuICAvLyBTaGVsbFN0ZXAgYnJhbmNoLlxuICAvLyBTaGVsbFN0ZXAgaXRzZWxmIGRvZXNuJ3QgYWNjZXB0IGBidWlsZEVudmlyb25tZW50YC9gYnVpbGRJbWFnZWAuIENES1xuICAvLyBwaXBlbGluZXMgd3JhcHMgU2hlbGxTdGVwcyBpbiBhIGRlZmF1bHQgQ29kZUJ1aWxkIGFjdGlvbiB0aGF0IHJ1bnMgb25cbiAgLy8gYGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6Ny4wYCDigJQgd2hpY2ggd29uJ3QgaGF2ZSB0aGUgcGx1Z2luJ3MgdG9vbHMuXG4gIC8vXG4gIC8vIFNvIHdoZW4gYSBTSEVMTF9TVEVQIHBsdWdpbiBET0VTIGhhdmUgYW4gaW1hZ2UgKGJlY2F1c2UgaXRzIGF1dGhvclxuICAvLyBiYWtlZCB0b29scyBpbnRvIGEgRG9ja2VyZmlsZSksIHdlIFBST01PVEUgaXQgdG8gYSBDb2RlQnVpbGRTdGVwIHdpdGhcbiAgLy8gdGhlIHJlc29sdmVkIGltYWdlLiBUaGUgcGx1Z2luIGF1dGhvcidzIGludGVudCAoXCJ1c2UgbXkgYmFrZWQgdG9vbHNcIilcbiAgLy8gaXMgcHJlc2VydmVkIHdpdGhvdXQgZm9yY2luZyB0aGVtIHRvIGNoYW5nZSBwbHVnaW5UeXBlLlxuICAvL1xuICAvLyBXaGVuIHRoZSBwbHVnaW4gaGFzIG5vIGltYWdlIChvciByZWdpc3RyeSBpc24ndCBjb25maWd1cmVkKSwgd2Uga2VlcFxuICAvLyB0aGUgb3JpZ2luYWwgU2hlbGxTdGVwIOKAlCBpdCdzIGxpZ2h0ZXIgd2VpZ2h0IGFuZCB0aGUgZGVmYXVsdFxuICAvLyBDb2RlQnVpbGQgaW1hZ2UgaXMgZmluZS5cbiAgaWYgKHBsdWdpbi5wbHVnaW5UeXBlID09PSBQbHVnaW5UeXBlLlNIRUxMX1NURVApIHtcbiAgICBpZiAoIXBsdWdpbkJ1aWxkSW1hZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgU2hlbGxTdGVwKGlkLCB7XG4gICAgICAgIC4uLnByb2dyYW1tYXRpYyxcbiAgICAgICAgZW52OiB7IC4uLmVudiwgLi4uYWN0aW9uRW52IH0sXG4gICAgICAgIC4uLm1ldGFkYXRhRm9yU2hlbGxTdGVwKG1lcmdlZCksXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBbQ3JlYXRlQ29kZUJ1aWxkU3RlcF0gU0hFTExfU1RFUCBwbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGhhcyBpbWFnZVRhZyDigJQgcHJvbW90aW5nIHRvIENvZGVCdWlsZFN0ZXAgc28gdGhlIHBsdWdpbiBpbWFnZSBpcyBhY3R1YWxseSB1c2VkYCk7XG4gICAgLy8gRmFsbCB0aHJvdWdoIHRvIHRoZSBDb2RlQnVpbGRTdGVwIHBhdGggYmVsb3cuXG4gIH1cblxuICBjb25zdCBjb21wdXRlVHlwZSA9IGdldENvbXB1dGVUeXBlKFxuICAgIHBsdWdpbi5jb21wdXRlVHlwZSA/PyBvcHRpb25zLmRlZmF1bHRDb21wdXRlVHlwZSA/PyAnU01BTEwnLFxuICApO1xuXG4gIGNvbnN0IG5ldHdvcmtQcm9wcyA9IG5ldHdvcmtcbiAgICA/IHJlc29sdmVOZXR3b3JrKHNjb3BlLCBvcHRpb25zLnVuaXF1ZUlkLCBuZXR3b3JrKVxuICAgIDoge307XG5cbiAgLy8gTWV0YWRhdGEgc3ByZWFkIGxhc3Qgc28gaXQgY2FuIG92ZXJyaWRlIHByb2dyYW1tYXRpYyBkZWZhdWx0cy5cbiAgLy8gTk9URTogQ2FjaGluZyBpcyBzdXBwb3J0ZWQgdmlhIHR3byBtZXRhZGF0YSBwYXRoczpcbiAgLy8gICAxLiBNZXRhZGF0YUtleXMuQ0FDSEUgKCdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmNhY2hlJykg4oCUIHBhc3NlZCBkaXJlY3RseVxuICAvLyAgICAgIGFzIHRoZSBDb2RlQnVpbGRTdGVwIGBjYWNoZWAgcHJvcCAoZXhwZWN0cyBhIGNvZGVidWlsZC5DYWNoZSBvYmplY3QpLlxuICAvLyAgIDIuIE1ldGFkYXRhS2V5cy5QQVJUSUFMX0JVSUxEX1NQRUMgKCdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOnBhcnRpYWxidWlsZHNwZWMnKVxuICAvLyAgICAgIOKAlCBwYXNzZWQgYXMgYHBhcnRpYWxCdWlsZFNwZWNgLCB3aGljaCBjYW4gaW5jbHVkZSBhIGBjYWNoZTpgIHNlY3Rpb24gZm9yXG4gIC8vICAgICAgUzMgb3IgbG9jYWwgY2FjaGluZyAoZS5nLiwgQnVpbGRTcGVjLmZyb21PYmplY3QoeyBjYWNoZTogeyBwYXRoczogWy4uLl0gfSB9KSkuXG4gIGNvbnN0IHN0ZXAgPSBuZXcgQ29kZUJ1aWxkU3RlcChpZCwge1xuICAgIC4uLnByb2dyYW1tYXRpYyxcbiAgICAuLi5uZXR3b3JrUHJvcHMsXG4gICAgLi4uKGFkZGl0aW9uYWxJbnB1dHMgJiYgeyBhZGRpdGlvbmFsSW5wdXRzIH0pLFxuICAgIC4uLih0aW1lb3V0ICYmIHsgdGltZW91dDogRHVyYXRpb24ubWludXRlcyh0aW1lb3V0KSB9KSxcbiAgICBlbnY6IGFjdGlvbkVudixcbiAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeSA/PyB1bmRlZmluZWQsXG4gICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgY29tcHV0ZVR5cGUsXG4gICAgICAuLi4ocGx1Z2luQnVpbGRJbWFnZSAmJiB7IGJ1aWxkSW1hZ2U6IHBsdWdpbkJ1aWxkSW1hZ2UgfSksXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAuLi50b0NvZGVCdWlsZEVudlZhcnMoZW52KSxcbiAgICAgICAgLi4uc2VjcmV0RW52VmFycyxcbiAgICAgIH0sXG4gICAgICAuLi5tZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQobWVyZ2VkKSxcbiAgICB9LFxuICAgIC4uLm1ldGFkYXRhRm9yQ29kZUJ1aWxkU3RlcChtZXJnZWQpLFxuICB9KTtcblxuICAvLyBSZWdpc3RlciB3aXRoIGFydGlmYWN0IG1hbmFnZXIgaWYgcHJpbWFyeU91dHB1dERpcmVjdG9yeSBpcyBzZXRcbiAgaWYgKHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5ICYmIGFydGlmYWN0TWFuYWdlciAmJiBzdGFnZU5hbWUpIHtcbiAgICBjb25zdCBhcnRpZmFjdEtleTogQXJ0aWZhY3RLZXkgPSB7XG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGFnZUFsaWFzOiBzdGFnZUFsaWFzID8/IGAke3N0YWdlTmFtZX0tYWxpYXNgLFxuICAgICAgcGx1Z2luTmFtZTogcGx1Z2luLm5hbWUsXG4gICAgICBwbHVnaW5BbGlhczogcGx1Z2luQWxpYXMgPz8gYCR7cGx1Z2luLm5hbWV9LWFsaWFzYCxcbiAgICAgIG91dHB1dERpcmVjdG9yeTogcGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnksXG4gICAgfTtcbiAgICBhcnRpZmFjdE1hbmFnZXIuYWRkKGFydGlmYWN0S2V5LCBzdGVwKTtcbiAgfVxuXG4gIHJldHVybiBzdGVwO1xufVxuXG4vKipcbiAqIENvbnZlcnQgc3RyaW5nIG9yIENvbXB1dGVUeXBlIGVudW0gdG8gQ0RLIENvbXB1dGVUeXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wdXRlVHlwZShpbnB1dDogc3RyaW5nIHwgQ0RLQ29tcHV0ZVR5cGUgPSAnU01BTEwnKTogQ0RLQ29tcHV0ZVR5cGUge1xuICAvLyBJZiBhbHJlYWR5IGEgQ0RLIENvbXB1dGVUeXBlLCByZXR1cm4gYXMtaXNcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gaW5wdXQudG9VcHBlckNhc2UoKSBhcyBDb21wdXRlVHlwZTtcblxuICBjb25zdCBtYXBwaW5nOiBSZWNvcmQ8Q29tcHV0ZVR5cGUsIENES0NvbXB1dGVUeXBlPiA9IHtcbiAgICBbQ29tcHV0ZVR5cGUuU01BTExdOiBDREtDb21wdXRlVHlwZS5TTUFMTCxcbiAgICBbQ29tcHV0ZVR5cGUuTUVESVVNXTogQ0RLQ29tcHV0ZVR5cGUuTUVESVVNLFxuICAgIFtDb21wdXRlVHlwZS5MQVJHRV06IENES0NvbXB1dGVUeXBlLkxBUkdFLFxuICAgIFtDb21wdXRlVHlwZS5YMl9MQVJHRV06IENES0NvbXB1dGVUeXBlLlgyX0xBUkdFLFxuICB9O1xuXG4gIGNvbnN0IHJlc3VsdCA9IG1hcHBpbmdbbm9ybWFsaXplZF07XG4gIGlmICghcmVzdWx0KSB7XG4gICAgbG9nLndhcm4oYFVua25vd24gY29tcHV0ZSB0eXBlIFwiJHtpbnB1dH1cIiwgZmFsbGluZyBiYWNrIHRvIFNNQUxMYCk7XG4gICAgcmV0dXJuIENES0NvbXB1dGVUeXBlLlNNQUxMO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGxldHRlcnMgb3IgbnVtYmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWVcbiAqIEBwYXJhbSBpbnB1dCAtIFRoZSBzdHJpbmcgdG8gcHJvY2Vzc1xuICogQHBhcmFtIHJlcGxhY2VWYWx1ZSAtIFRoZSBjaGFyYWN0ZXIocykgdG8gcmVwbGFjZSBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCAoZGVmYXVsdDogJ18nKVxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyByZXBsYWNlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU5vbkFscGhhbnVtZXJpYyhpbnB1dDogc3RyaW5nLCByZXBsYWNlVmFsdWU6IHN0cmluZyA9ICdfJyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgcmVwbGFjZVZhbHVlKTtcbn1cblxuLyoqXG4gKiBVbndyYXAgYSBTZWNyZXRWYWx1ZSB8IHN0cmluZyBpbnRvIGEgcGxhaW4gc3RyaW5nLlxuICogV2hlbiBhIFNlY3JldFZhbHVlIGlzIHByb3ZpZGVkIChlLmcuIGZyb20gU2VjcmV0cyBNYW5hZ2VyKSwgY2FsbHMgdW5zYWZlVW53cmFwKClcbiAqIHRvIGV4dHJhY3QgdGhlIHVuZGVybHlpbmcgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBTZWNyZXQodmFsdWU6IFNlY3JldFZhbHVlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHZhbHVlLnVuc2FmZVVud3JhcCgpO1xufVxuIl19
package/package.json CHANGED
@@ -25,8 +25,8 @@
25
25
  "typescript": "5.9.3"
26
26
  },
27
27
  "dependencies": {
28
- "@pipeline-builder/api-core": "3.3.31",
29
- "@pipeline-builder/pipeline-data": "3.3.30",
28
+ "@pipeline-builder/api-core": "3.3.33",
29
+ "@pipeline-builder/pipeline-data": "3.3.32",
30
30
  "aws-cdk-lib": "2.251.0",
31
31
  "axios": "1.13.5",
32
32
  "constructs": "10.5.1",
@@ -75,7 +75,7 @@
75
75
  "access": "public",
76
76
  "registry": "https://registry.npmjs.org/"
77
77
  },
78
- "version": "3.3.33",
78
+ "version": "3.3.35",
79
79
  "bugs": {
80
80
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
81
81
  },