@dollhousemcp/mcp-server 1.9.13 → 1.9.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/README.github.md +41 -0
- package/README.md.backup +1228 -49
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/portfolio/PortfolioManager.d.ts +5 -0
- package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
- package/dist/portfolio/PortfolioManager.js +8 -1
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +3 -2
- package/dist/utils/ElementFormatter.d.ts +1 -0
- package/dist/utils/ElementFormatter.d.ts.map +1 -1
- package/dist/utils/ElementFormatter.js +21 -13
- package/package.json +1 -1
|
@@ -20,6 +20,11 @@ export declare class PortfolioManager {
|
|
|
20
20
|
* Get the directory for a specific element type
|
|
21
21
|
*/
|
|
22
22
|
getElementDir(type: ElementType): string;
|
|
23
|
+
/**
|
|
24
|
+
* Get the file extension for a specific element type
|
|
25
|
+
* FIX (#1213): Expose ELEMENT_FILE_EXTENSIONS mapping for correct extension display
|
|
26
|
+
*/
|
|
27
|
+
getFileExtension(type: ElementType): string;
|
|
23
28
|
/**
|
|
24
29
|
* Initialize the portfolio directory structure
|
|
25
30
|
* Uses locking to prevent race conditions during concurrent initialization
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortfolioManager.d.ts","sourceRoot":"","sources":["../../src/portfolio/PortfolioManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmB1D,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAS;IAC1C,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA8B;IAClE,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;WA4BO,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,gBAAgB;IAiBrE;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAI/C;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxC;;OAEG;YACW,qBAAqB;IAiDnC;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IASvC;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAgD/C;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqC/D;;OAEG;IACI,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IA0ClE;;OAEG;IACU,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjF;;OAEG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlD;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAWlE;;;OAGG;YACW,8BAA8B;CA+D7C"}
|
|
1
|
+
{"version":3,"file":"PortfolioManager.d.ts","sourceRoot":"","sources":["../../src/portfolio/PortfolioManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmB1D,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAS;IAC1C,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA8B;IAClE,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;WA4BO,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,gBAAgB;IAiBrE;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAI/C;;;OAGG;IACI,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAIlD;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxC;;OAEG;YACW,qBAAqB;IAiDnC;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IASvC;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAgD/C;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqC/D;;OAEG;IACI,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IA0ClE;;OAEG;IACU,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjF;;OAEG;IACI,oBAAoB,IAAI,MAAM;IAIrC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlD;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAWlE;;;OAGG;YACW,8BAA8B;CA+D7C"}
|
|
@@ -79,6 +79,13 @@ export class PortfolioManager {
|
|
|
79
79
|
getElementDir(type) {
|
|
80
80
|
return path.join(this.baseDir, type);
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the file extension for a specific element type
|
|
84
|
+
* FIX (#1213): Expose ELEMENT_FILE_EXTENSIONS mapping for correct extension display
|
|
85
|
+
*/
|
|
86
|
+
getFileExtension(type) {
|
|
87
|
+
return ELEMENT_FILE_EXTENSIONS[type] || DEFAULT_ELEMENT_FILE_EXTENSION;
|
|
88
|
+
}
|
|
82
89
|
/**
|
|
83
90
|
* Initialize the portfolio directory structure
|
|
84
91
|
* Uses locking to prevent race conditions during concurrent initialization
|
|
@@ -387,4 +394,4 @@ export class PortfolioManager {
|
|
|
387
394
|
}
|
|
388
395
|
}
|
|
389
396
|
}
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLFlBQVk7QUFDWixNQUFNLHVCQUF1QixHQUFnQztJQUMzRCxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLO0lBQzVCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUs7SUFDMUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztJQUM3QixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLO0lBQzFCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU87SUFDN0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztDQUM5QixDQUFDO0FBRUYsK0NBQStDO0FBQy9DLE1BQU0sOEJBQThCLEdBQUcsS0FBSyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUd2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QkFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsT0FBTyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBvcnRmb2xpbyBNYW5hZ2VyIC0gTWFuYWdlcyB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGFsbCBlbGVtZW50IHR5cGVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUsIFBvcnRmb2xpb0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgRGVmYXVsdEVsZW1lbnRQcm92aWRlciB9IGZyb20gJy4vRGVmYXVsdEVsZW1lbnRQcm92aWRlci5qcyc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXIsIEVycm9yQ2F0ZWdvcnkgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXIuanMnO1xuXG4vLyBDb25zdGFudHNcbmNvbnN0IEVMRU1FTlRfRklMRV9FWFRFTlNJT05TOiBSZWNvcmQ8RWxlbWVudFR5cGUsIHN0cmluZz4gPSB7XG4gIFtFbGVtZW50VHlwZS5QRVJTT05BXTogJy5tZCcsXG4gIFtFbGVtZW50VHlwZS5TS0lMTF06ICcubWQnLFxuICBbRWxlbWVudFR5cGUuVEVNUExBVEVdOiAnLm1kJyxcbiAgW0VsZW1lbnRUeXBlLkFHRU5UXTogJy5tZCcsXG4gIFtFbGVtZW50VHlwZS5NRU1PUlldOiAnLnlhbWwnLFxuICBbRWxlbWVudFR5cGUuRU5TRU1CTEVdOiAnLm1kJ1xufTtcblxuLy8gRGVmYXVsdCBleHRlbnNpb24gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmNvbnN0IERFRkFVTFRfRUxFTUVOVF9GSUxFX0VYVEVOU0lPTiA9ICcubWQnO1xuXG5leHBvcnQgeyBFbGVtZW50VHlwZSB9O1xuZXhwb3J0IHR5cGUgeyBQb3J0Zm9saW9Db25maWcgfTtcblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb01hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogUG9ydGZvbGlvTWFuYWdlcjtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VMb2NrID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemF0aW9uTG9jayA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBiYXNlRGlyOiBzdHJpbmc7XG4gIFxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBvcnRmb2xpb0NvbmZpZykge1xuICAgIC8vIEdldCBwb3RlbnRpYWwgZGlyZWN0b3J5IGZyb20gZW52aXJvbm1lbnQgb3IgY29uZmlnXG4gICAgY29uc3QgZW52RGlyID0gcHJvY2Vzcy5lbnYuRE9MTEhPVVNFX1BPUlRGT0xJT19ESVI7XG4gICAgY29uc3QgY29uZmlnRGlyID0gY29uZmlnPy5iYXNlRGlyO1xuICAgIGNvbnN0IGRlZmF1bHREaXIgPSBwYXRoLmpvaW4oaG9tZWRpcigpLCAnLmRvbGxob3VzZScsICdwb3J0Zm9saW8nKTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBwcm92aWRlZFxuICAgIGlmIChlbnZEaXIpIHtcbiAgICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGVudkRpcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdET0xMSE9VU0VfUE9SVEZPTElPX0RJUiBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICAgIH1cbiAgICAgIC8vIEFkZGl0aW9uYWwgdmFsaWRhdGlvbiBmb3Igc3VzcGljaW91cyBwYXRoc1xuICAgICAgaWYgKGVudkRpci5pbmNsdWRlcygnLi4nKSB8fCBlbnZEaXIuc3RhcnRzV2l0aCgnL2V0YycpIHx8IGVudkRpci5zdGFydHNXaXRoKCcvc3lzJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdET0xMSE9VU0VfUE9SVEZPTElPX0RJUiBjb250YWlucyBzdXNwaWNpb3VzIHBhdGggc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgY29uZmlnIGRpcmVjdG9yeSBpZiBwcm92aWRlZFxuICAgIGlmIChjb25maWdEaXIgJiYgIXBhdGguaXNBYnNvbHV0ZShjb25maWdEaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnRmb2xpbyBjb25maWcgYmFzZURpciBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNlIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNldCwgb3RoZXJ3aXNlIGNvbmZpZywgb3RoZXJ3aXNlIGRlZmF1bHRcbiAgICB0aGlzLmJhc2VEaXIgPSBlbnZEaXIgfHwgY29uZmlnRGlyIHx8IGRlZmF1bHREaXI7XG4gICAgXG4gICAgbG9nZ2VyLmluZm8oYFtQb3J0Zm9saW9NYW5hZ2VyXSBQb3J0Zm9saW8gYmFzZSBkaXJlY3Rvcnk6ICR7dGhpcy5iYXNlRGlyfWApO1xuICB9XG4gIFxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKGNvbmZpZz86IFBvcnRmb2xpb0NvbmZpZyk6IFBvcnRmb2xpb01hbmFnZXIge1xuICAgIGlmICghUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgYW5vdGhlciB0aHJlYWQgaXMgYWxyZWFkeSBjcmVhdGluZyB0aGUgaW5zdGFuY2VcbiAgICAgIGlmIChQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIgaW5zdGFuY2UgaXMgYmVpbmcgY3JlYXRlZCBieSBhbm90aGVyIHRocmVhZCcpO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jayA9IHRydWU7XG4gICAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2UgPSBuZXcgUG9ydGZvbGlvTWFuYWdlcihjb25maWcpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZUxvY2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgcG9ydGZvbGlvIGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIGdldEJhc2VEaXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlRGlyO1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IHRoZSBkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlXG4gICAqL1xuICBwdWJsaWMgZ2V0RWxlbWVudERpcih0eXBlOiBFbGVtZW50VHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmJhc2VEaXIsIHR5cGUpO1xuICB9XG4gIFxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAgICogVXNlcyBsb2NraW5nIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBjb25jdXJyZW50IGluaXRpYWxpemF0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBJZiBhbHJlYWR5IGluaXRpYWxpemluZywgd2FpdCBmb3IgdGhlIGV4aXN0aW5nIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlKSB7XG4gICAgICByZXR1cm4gUG9ydGZvbGlvTWFuYWdlci5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIElmIGFscmVhZHkgaW5pdGlhbGl6ZWQsIGNoZWNrIGlmIGRpcmVjdG9yaWVzIGV4aXN0XG4gICAgaWYgKGF3YWl0IHRoaXMuZXhpc3RzKCkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBhbHJlYWR5IGluaXRpYWxpemVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBpbml0aWFsaXphdGlvbiBwcm9taXNlIHRvIHByZXZlbnQgY29uY3VycmVudCBpbml0aWFsaXphdGlvblxuICAgIFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gdGhpcy5wZXJmb3JtSW5pdGlhbGl6YXRpb24oKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgYXdhaXQgUG9ydGZvbGlvTWFuYWdlci5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFyIHRoZSBwcm9taXNlIGFmdGVyIGNvbXBsZXRpb25cbiAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBhY3R1YWwgaW5pdGlhbGl6YXRpb24gLSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwZXJmb3JtSW5pdGlhbGl6YXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmluZm8oJ1tQb3J0Zm9saW9NYW5hZ2VyXSBJbml0aWFsaXppbmcgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUnKTtcbiAgICBcbiAgICAvLyBDcmVhdGUgYmFzZSBkaXJlY3RvcnlcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMubWtkaXIodGhpcy5iYXNlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgICAgLy8gSW4gcmVhZC1vbmx5IGVudmlyb25tZW50cyAobGlrZSBEb2NrZXIpLCB3ZSBjYW4ndCBjcmVhdGUgZGlyZWN0b3JpZXNcbiAgICAgIC8vIExvZyBidXQgY29udGludWUgLSB0aGUgcG9ydGZvbGlvIHdpbGwgYmUgZW1wdHkgYnV0IGZ1bmN0aW9uYWxcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBQ0NFUycgfHwgZXJyLmNvZGUgPT09ICdFUk9GUycgfHwgZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBbUG9ydGZvbGlvTWFuYWdlcl0gQ2Fubm90IGNyZWF0ZSBwb3J0Zm9saW8gZGlyZWN0b3J5IChyZWFkLW9ubHkgZW52aXJvbm1lbnQ/KTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYFtEb2xsaG91c2VNQ1BdIFJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUgLSBwb3J0Zm9saW8gZmVhdHVyZXMgZGlzYWJsZWRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBlbGVtZW50IHR5cGVcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnRUeXBlIG9mIE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBlbGVtZW50RGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgZWxlbWVudFR5cGUpO1xuICAgICAgYXdhaXQgZnMubWtkaXIoZWxlbWVudERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBsb2dnZXIuZGVidWcoYFtQb3J0Zm9saW9NYW5hZ2VyXSBDcmVhdGVkIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgc3BlY2lhbCBkaXJlY3RvcmllcyBmb3Igc3RhdGVmdWwgZWxlbWVudHNcbiAgICBjb25zdCBhZ2VudFN0YXRlRGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgRWxlbWVudFR5cGUuQUdFTlQsICcuc3RhdGUnKTtcbiAgICBhd2FpdCBmcy5ta2RpcihhZ2VudFN0YXRlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBcbiAgICBsb2dnZXIuaW5mbygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluaXRpYWxpemVkJyk7XG4gICAgXG4gICAgLy8gTWlncmF0aW9uIGZvciB2MS40LjIgdXNlcnM6IHJlbmFtZSBzaW5ndWxhciBkaXJlY3RvcmllcyB0byBwbHVyYWxcbiAgICBhd2FpdCB0aGlzLm1pZ3JhdGVGcm9tU2luZ3VsYXJEaXJlY3RvcmllcygpO1xuICAgIFxuICAgIC8vIFBvcHVsYXRlIHdpdGggZGVmYXVsdCBlbGVtZW50cyBpZiB0aGlzIGlzIGEgbmV3IGluc3RhbGxhdGlvblxuICAgIC8vIFNraXAgZHVyaW5nIHRlc3RzIHRvIGF2b2lkIGludGVyZmVyZW5jZVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UHJvdmlkZXIgPSBuZXcgRGVmYXVsdEVsZW1lbnRQcm92aWRlcigpO1xuICAgICAgICBhd2FpdCBkZWZhdWx0UHJvdmlkZXIucG9wdWxhdGVEZWZhdWx0cyh0aGlzLmJhc2VEaXIpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdbUG9ydGZvbGlvTWFuYWdlcl0gRXJyb3IgcG9wdWxhdGluZyBkZWZhdWx0IGVsZW1lbnRzOicsIGVycm9yKTtcbiAgICAgICAgLy8gTG9nIHRvIHN0ZGVyciBmb3IgQ2xhdWRlIERlc2t0b3AgdmlzaWJpbGl0eVxuICAgICAgICBsb2dnZXIuZXJyb3IoYFtQb3J0Zm9saW9NYW5hZ2VyXSBDUklUSUNBTDogRmFpbGVkIHRvIHBvcHVsYXRlIGRlZmF1bHQgZWxlbWVudHM6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgICAgICAvLyBDb250aW51ZSBhbnl3YXkgLSBlbXB0eSBwb3J0Zm9saW8gaXMgdmFsaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBwb3J0Zm9saW8gZGlyZWN0b3J5IGV4aXN0c1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHRoaXMuYmFzZURpcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGZpbGVuYW1lIGFwcGVhcnMgdG8gYmUgYSB0ZXN0IGVsZW1lbnRcbiAgICogU0FGRVRZOiBQYXR0ZXJuLWJhc2VkIGZpbHRlcmluZyBvbmx5LCBubyBjb250ZW50IHBhcnNpbmdcbiAgICovXG4gIHB1YmxpYyBpc1Rlc3RFbGVtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBEYW5nZXJvdXMgdGVzdCBwYXR0ZXJucyB0aGF0IHNob3VsZCBuZXZlciBhcHBlYXIgaW4gcHJvZHVjdGlvblxuICAgIGNvbnN0IGRhbmdlcm91c1BhdHRlcm5zID0gW1xuICAgICAgL15iaW4tc2gvaSxcbiAgICAgIC9ecm0tcmYvaSxcbiAgICAgIC9ebmMtZS1iaW4vaSxcbiAgICAgIC9ecHl0aG9uLWMtaW1wb3J0L2ksXG4gICAgICAvXmN1cmwuKmV2aWwvaSxcbiAgICAgIC9ed2dldC4qbWFsaWNpb3VzL2ksXG4gICAgICAvXmV2YWwtL2ksXG4gICAgICAvXmV4ZWMtL2ksXG4gICAgICAvXmJhc2gtYy0vaSxcbiAgICAgIC9ec2gtYy0vaSxcbiAgICAgIC9ecG93ZXJzaGVsbC0vaSxcbiAgICAgIC9eY21kLWMtL2ksXG4gICAgICAvc2hlbGwtaW5qZWN0aW9uL2lcbiAgICBdO1xuICAgIFxuICAgIC8vIENvbW1vbiB0ZXN0IHBhdHRlcm5zXG4gICAgY29uc3QgdGVzdFBhdHRlcm5zID0gW1xuICAgICAgL150ZXN0LS9pLFxuICAgICAgL15tZW1vcnktdGVzdC0vaSxcbiAgICAgIC9eeWFtbC10ZXN0L2ksXG4gICAgICAvXnBlcmYtdGVzdC0vaSxcbiAgICAgIC9ec3RhYmlsaXR5LXRlc3QtL2ksXG4gICAgICAvXnJvdW5kdHJpcC10ZXN0L2ksXG4gICAgICAvdGVzdC1wZXJzb25hL2ksXG4gICAgICAvdGVzdC1za2lsbC9pLFxuICAgICAgL3Rlc3QtdGVtcGxhdGUvaSxcbiAgICAgIC90ZXN0LWFnZW50L2ksXG4gICAgICAvXFwudGVzdFxcLi8sXG4gICAgICAvX190ZXN0X18vLFxuICAgICAgL3Rlc3QtZGF0YS8sXG4gICAgICAvcGVuZXRyYXRpb24tdGVzdC9pLFxuICAgICAgL21ldGFkYXRhLXRlc3QvaSxcbiAgICAgIC90ZXN0cGVyc29uYVxcZCsvaSAgLy8gR2VuZXJhdGVkIHRlc3QgcGVyc29uYXMgd2l0aCB0aW1lc3RhbXBzXG4gICAgXTtcbiAgICBcbiAgICAvLyBDaGVjayBkYW5nZXJvdXMgcGF0dGVybnMgZmlyc3RcbiAgICBpZiAoZGFuZ2Vyb3VzUGF0dGVybnMuc29tZShwYXR0ZXJuID0+IHBhdHRlcm4udGVzdChmaWxlbmFtZSkpKSB7XG4gICAgICBsb2dnZXIud2FybihgW1BvcnRmb2xpb01hbmFnZXJdIEZpbHRlcmVkIGRhbmdlcm91cyB0ZXN0IGVsZW1lbnQ6ICR7ZmlsZW5hbWV9YCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgY29tbW9uIHRlc3QgcGF0dGVybnNcbiAgICByZXR1cm4gdGVzdFBhdHRlcm5zLnNvbWUocGF0dGVybiA9PiBwYXR0ZXJuLnRlc3QoZmlsZW5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBlbGVtZW50cyBvZiBhIHNwZWNpZmljIHR5cGVcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsaXN0RWxlbWVudHModHlwZTogRWxlbWVudFR5cGUpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZWxlbWVudERpciA9IHRoaXMuZ2V0RWxlbWVudERpcih0eXBlKTtcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gRUxFTUVOVF9GSUxFX0VYVEVOU0lPTlNbdHlwZV0gfHwgREVGQVVMVF9FTEVNRU5UX0ZJTEVfRVhURU5TSU9OO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihlbGVtZW50RGlyKTtcbiAgICAgIC8vIEZpbHRlciBmb3IgY29ycmVjdCBmaWxlIGV4dGVuc2lvbiBiYXNlZCBvbiBlbGVtZW50IHR5cGUgYW5kIGV4Y2x1ZGUgdGVzdCBlbGVtZW50c1xuICAgICAgcmV0dXJuIGZpbGVzXG4gICAgICAgIC5maWx0ZXIoZmlsZSA9PiBmaWxlLmVuZHNXaXRoKGZpbGVFeHRlbnNpb24pKVxuICAgICAgICAuZmlsdGVyKGZpbGUgPT4gIXRoaXMuaXNUZXN0RWxlbWVudChmaWxlKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGVyciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICAgIFxuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAvLyBEaXJlY3RvcnkgZG9lc24ndCBleGlzdCB5ZXQgLSB0aGlzIGlzIGV4cGVjdGVkIGZvciBuZXcgaW5zdGFsbGF0aW9uc1xuICAgICAgICBsb2dnZXIuZGVidWcoYFtQb3J0Zm9saW9NYW5hZ2VyXSBFbGVtZW50IGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0IHlldDogJHtlbGVtZW50RGlyfWApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBQ0NFUycgfHwgZXJyLmNvZGUgPT09ICdFUEVSTScpIHtcbiAgICAgICAgLy8gUGVybWlzc2lvbiBkZW5pZWQgLSBsb2cgYnV0IHJldHVybiBlbXB0eSBhcnJheVxuICAgICAgICBFcnJvckhhbmRsZXIubG9nRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIubGlzdEVsZW1lbnRzJywgZXJyb3IsIHsgZWxlbWVudERpciB9KTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9URElSJykge1xuICAgICAgICAvLyBQYXRoIGV4aXN0cyBidXQgaXMgbm90IGEgZGlyZWN0b3J5XG4gICAgICAgIEVycm9ySGFuZGxlci5sb2dFcnJvcignUG9ydGZvbGlvTWFuYWdlci5saXN0RWxlbWVudHMnLCBlcnJvciwgeyBlbGVtZW50RGlyIH0pO1xuICAgICAgICB0aHJvdyBFcnJvckhhbmRsZXIuY3JlYXRlRXJyb3IoYFBhdGggaXMgbm90IGEgZGlyZWN0b3J5OiAke2VsZW1lbnREaXJ9YCwgRXJyb3JDYXRlZ29yeS5TWVNURU1fRVJST1IpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBGb3IgYW55IG90aGVyIGVycm9ycywgdGhyb3cgd2l0aCBjb250ZXh0XG4gICAgICBFcnJvckhhbmRsZXIubG9nRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIubGlzdEVsZW1lbnRzJywgZXJyb3IsIHsgZWxlbWVudERpciB9KTtcbiAgICAgIHRocm93IEVycm9ySGFuZGxlci53cmFwRXJyb3IoZXJyb3IsICdGYWlsZWQgdG8gbGlzdCBlbGVtZW50cycsIEVycm9yQ2F0ZWdvcnkuU1lTVEVNX0VSUk9SKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgZnVsbCBwYXRoIHRvIGFuIGVsZW1lbnQgZmlsZVxuICAgKi9cbiAgcHVibGljIGdldEVsZW1lbnRQYXRoKHR5cGU6IEVsZW1lbnRUeXBlLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBWYWxpZGF0ZSBmaWxlbmFtZSB0byBwcmV2ZW50IHBhdGggdHJhdmVyc2FsXG4gICAgaWYgKCFmaWxlbmFtZSB8fCB0eXBlb2YgZmlsZW5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICBzb3VyY2U6ICdQb3J0Zm9saW9NYW5hZ2VyLmdldEVsZW1lbnRQYXRoJyxcbiAgICAgICAgZGV0YWlsczogYEludmFsaWQgZmlsZW5hbWUgcHJvdmlkZWQ6ICR7dHlwZW9mIGZpbGVuYW1lfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IGVsZW1lbnRUeXBlOiB0eXBlLCBmaWxlbmFtZTogU3RyaW5nKGZpbGVuYW1lKSB9XG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmaWxlbmFtZTogbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIHBhdGggdHJhdmVyc2FsIGF0dGVtcHRzXG4gICAgaWYgKGZpbGVuYW1lLmluY2x1ZGVzKCcuLicpIHx8IGZpbGVuYW1lLmluY2x1ZGVzKCcvJykgfHwgZmlsZW5hbWUuaW5jbHVkZXMoJ1xcXFwnKSB8fCBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvTWFuYWdlci5nZXRFbGVtZW50UGF0aCcsXG4gICAgICAgIGRldGFpbHM6IGBQYXRoIHRyYXZlcnNhbCBhdHRlbXB0IGRldGVjdGVkIGluIGZpbGVuYW1lOiAke2ZpbGVuYW1lfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IGVsZW1lbnRUeXBlOiB0eXBlLCBmaWxlbmFtZSB9XG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWxlbmFtZTogY29udGFpbnMgcGF0aCB0cmF2ZXJzYWwgY2hhcmFjdGVyczogJHtmaWxlbmFtZX1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQWRkaXRpb25hbCB2YWxpZGF0aW9uIGZvciBoaWRkZW4gZmlsZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgIGlmIChmaWxlbmFtZS5zdGFydHNXaXRoKCcuJykgfHwgZmlsZW5hbWUuaW5jbHVkZXMoJ1xcMCcpKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICBzb3VyY2U6ICdQb3J0Zm9saW9NYW5hZ2VyLmdldEVsZW1lbnRQYXRoJyxcbiAgICAgICAgZGV0YWlsczogYEludmFsaWQgZmlsZW5hbWUgY2hhcmFjdGVycyBkZXRlY3RlZDogJHtmaWxlbmFtZX1gLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBlbGVtZW50VHlwZTogdHlwZSwgZmlsZW5hbWUsIGhhc0hpZGRlbkZpbGU6IGZpbGVuYW1lLnN0YXJ0c1dpdGgoJy4nKSwgaGFzTnVsbEJ5dGU6IGZpbGVuYW1lLmluY2x1ZGVzKCdcXDAnKSB9XG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWxlbmFtZTogY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiAke2ZpbGVuYW1lfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBFbnN1cmUgZmlsZW5hbWUgZW5kcyB3aXRoIC5tZFxuICAgIGNvbnN0IHNhZmVGaWxlbmFtZSA9IGZpbGVuYW1lLmVuZHNXaXRoKCcubWQnKSA/IGZpbGVuYW1lIDogYCR7ZmlsZW5hbWV9Lm1kYDtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuZ2V0RWxlbWVudERpcih0eXBlKSwgc2FmZUZpbGVuYW1lKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGVsZW1lbnQgZXhpc3RzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZWxlbWVudEV4aXN0cyh0eXBlOiBFbGVtZW50VHlwZSwgZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3ModGhpcy5nZXRFbGVtZW50UGF0aCh0eXBlLCBmaWxlbmFtZSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogR2V0IGxlZ2FjeSBwZXJzb25hcyBkaXJlY3RvcnkgcGF0aCAoZm9yIG1pZ3JhdGlvbilcbiAgICovXG4gIHB1YmxpYyBnZXRMZWdhY3lQZXJzb25hc0RpcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4oaG9tZWRpcigpLCAnLmRvbGxob3VzZScsICdwZXJzb25hcycpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgbGVnYWN5IHBlcnNvbmFzIGRpcmVjdG9yeSBleGlzdHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNMZWdhY3lQZXJzb25hcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHRoaXMuZ2V0TGVnYWN5UGVyc29uYXNEaXIoKSk7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIodGhpcy5nZXRMZWdhY3lQZXJzb25hc0RpcigpKTtcbiAgICAgIHJldHVybiBmaWxlcy5zb21lKGZpbGUgPT4gZmlsZS5lbmRzV2l0aCgnLm1kJykpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBwb3J0Zm9saW8gc3RhdGlzdGljc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YXRpc3RpY3MoKTogUHJvbWlzZTxSZWNvcmQ8RWxlbWVudFR5cGUsIG51bWJlcj4+IHtcbiAgICBjb25zdCBzdGF0czogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICAgIFxuICAgIGZvciAoY29uc3QgZWxlbWVudFR5cGUgb2YgT2JqZWN0LnZhbHVlcyhFbGVtZW50VHlwZSkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gYXdhaXQgdGhpcy5saXN0RWxlbWVudHMoZWxlbWVudFR5cGUpO1xuICAgICAgc3RhdHNbZWxlbWVudFR5cGVdID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gc3RhdHMgYXMgUmVjb3JkPEVsZW1lbnRUeXBlLCBudW1iZXI+O1xuICB9XG4gIFxuICAvKipcbiAgICogTWlncmF0ZSBmcm9tIHYxLjQuMiBzaW5ndWxhciBkaXJlY3RvcnkgbmFtZXMgdG8gdjEuNC4zIHBsdXJhbCBuYW1lc1xuICAgKiBUaGlzIGhhbmRsZXMgdGhlIHVwZ3JhZGUgcGF0aCBmb3IgZXhpc3RpbmcgdXNlcnNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbWlncmF0ZUZyb21TaW5ndWxhckRpcmVjdG9yaWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9sZFRvTmV3OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3BlcnNvbmEnOiAncGVyc29uYXMnLFxuICAgICAgJ3NraWxsJzogJ3NraWxscycsXG4gICAgICAndGVtcGxhdGUnOiAndGVtcGxhdGVzJyxcbiAgICAgICdhZ2VudCc6ICdhZ2VudHMnLFxuICAgICAgJ21lbW9yeSc6ICdtZW1vcmllcycsXG4gICAgICAnZW5zZW1ibGUnOiAnZW5zZW1ibGVzJ1xuICAgIH07XG4gICAgXG4gICAgZm9yIChjb25zdCBbb2xkTmFtZSwgbmV3TmFtZV0gb2YgT2JqZWN0LmVudHJpZXMob2xkVG9OZXcpKSB7XG4gICAgICAvLyBVbmljb2RlIG5vcm1hbGl6ZSB0aGUgZGlyZWN0b3J5IG5hbWVzIChldmVuIHRob3VnaCB0aGV5J3JlIGhhcmRjb2RlZCwgZm9yIHNlY3VyaXR5IGF1ZGl0KVxuICAgICAgY29uc3Qgbm9ybWFsaXplZE9sZCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKG9sZE5hbWUpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZE5ldyA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKG5ld05hbWUpO1xuICAgICAgXG4gICAgICBpZiAoIW5vcm1hbGl6ZWRPbGQuaXNWYWxpZCB8fCAhbm9ybWFsaXplZE5ldy5pc1ZhbGlkKSB7XG4gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aXRoIG91ciBoYXJkY29kZWQgdmFsdWVzLCBidXQgZm9yIGNvbXBsZXRlbmVzc1xuICAgICAgICBsb2dnZXIuZXJyb3IoYFtQb3J0Zm9saW9NYW5hZ2VyXSBJbnZhbGlkIFVuaWNvZGUgaW4gZGlyZWN0b3J5IG5hbWVzIGR1cmluZyBtaWdyYXRpb25gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IG9sZERpciA9IHBhdGguam9pbih0aGlzLmJhc2VEaXIsIG5vcm1hbGl6ZWRPbGQubm9ybWFsaXplZENvbnRlbnQpO1xuICAgICAgY29uc3QgbmV3RGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgbm9ybWFsaXplZE5ldy5ub3JtYWxpemVkQ29udGVudCk7XG4gICAgICBcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENoZWNrIGlmIG9sZCBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgIGF3YWl0IGZzLmFjY2VzcyhvbGREaXIpO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2hlY2sgaWYgbmV3IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyBjb250ZW50XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbmV3RGlyRmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKG5ld0Rpcik7XG4gICAgICAgICAgaWYgKG5ld0RpckZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgICBgW1BvcnRmb2xpb01hbmFnZXJdIEJvdGggJHtvbGROYW1lfSBhbmQgJHtuZXdOYW1lfSBkaXJlY3RvcmllcyBleGlzdC4gS2VlcGluZyAke25ld05hbWV9LCBza2lwcGluZyBtaWdyYXRpb24uYCxcbiAgICAgICAgICAgICAgeyBvbGREaXIsIG5ld0RpciwgZmlsZUNvdW50OiBuZXdEaXJGaWxlcy5sZW5ndGggfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gTmV3IGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0IG9yIGlzIGVtcHR5LCBwcm9jZWVkIHdpdGggbWlncmF0aW9uXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFBlcmZvcm0gdGhlIG1pZ3JhdGlvblxuICAgICAgICBsb2dnZXIuaW5mbyhgW1BvcnRmb2xpb01hbmFnZXJdIE1pZ3JhdGluZyAke29sZE5hbWV9IOKGkiAke25ld05hbWV9YCk7XG4gICAgICAgIGF3YWl0IGZzLnJlbmFtZShvbGREaXIsIG5ld0Rpcik7XG4gICAgICAgIFxuICAgICAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnQgZm9yIGF1ZGl0IHRyYWlsXG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnRElSRUNUT1JZX01JR1JBVElPTicsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb01hbmFnZXIubWlncmF0ZUZyb21TaW5ndWxhckRpcmVjdG9yaWVzJyxcbiAgICAgICAgICBkZXRhaWxzOiBgTWlncmF0ZWQgZGlyZWN0b3J5IGZyb20gJHtvbGROYW1lfSB0byAke25ld05hbWV9IGZvciB2MS40LjMgY29tcGF0aWJpbGl0eWAsXG4gICAgICAgICAgbWV0YWRhdGE6IHsgb2xkRGlyLCBuZXdEaXIgfVxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBPbGQgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QsIHdoaWNoIGlzIGZpbmVcbiAgICAgICAgaWYgKChlcnJvciBhcyBhbnkpLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbUG9ydGZvbGlvTWFuYWdlcl0gRXJyb3IgZHVyaW5nIG1pZ3JhdGlvbiBvZiAke29sZE5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSJdfQ==
|
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3J0Zm9saW8vUG9ydGZvbGlvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLFlBQVk7QUFDWixNQUFNLHVCQUF1QixHQUFnQztJQUMzRCxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLO0lBQzVCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUs7SUFDMUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztJQUM3QixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLO0lBQzFCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU87SUFDN0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztDQUM5QixDQUFDO0FBRUYsK0NBQStDO0FBQy9DLE1BQU0sOEJBQThCLEdBQUcsS0FBSyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUd2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WUFFTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZiw2Q0FBNkM7Z0JBQzdDLElBQUssS0FBYSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsT0FBTyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBvcnRmb2xpbyBNYW5hZ2VyIC0gTWFuYWdlcyB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGFsbCBlbGVtZW50IHR5cGVzXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgRWxlbWVudFR5cGUsIFBvcnRmb2xpb0NvbmZpZyB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgRGVmYXVsdEVsZW1lbnRQcm92aWRlciB9IGZyb20gJy4vRGVmYXVsdEVsZW1lbnRQcm92aWRlci5qcyc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXIsIEVycm9yQ2F0ZWdvcnkgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXIuanMnO1xuXG4vLyBDb25zdGFudHNcbmNvbnN0IEVMRU1FTlRfRklMRV9FWFRFTlNJT05TOiBSZWNvcmQ8RWxlbWVudFR5cGUsIHN0cmluZz4gPSB7XG4gIFtFbGVtZW50VHlwZS5QRVJTT05BXTogJy5tZCcsXG4gIFtFbGVtZW50VHlwZS5TS0lMTF06ICcubWQnLFxuICBbRWxlbWVudFR5cGUuVEVNUExBVEVdOiAnLm1kJyxcbiAgW0VsZW1lbnRUeXBlLkFHRU5UXTogJy5tZCcsXG4gIFtFbGVtZW50VHlwZS5NRU1PUlldOiAnLnlhbWwnLFxuICBbRWxlbWVudFR5cGUuRU5TRU1CTEVdOiAnLm1kJ1xufTtcblxuLy8gRGVmYXVsdCBleHRlbnNpb24gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmNvbnN0IERFRkFVTFRfRUxFTUVOVF9GSUxFX0VYVEVOU0lPTiA9ICcubWQnO1xuXG5leHBvcnQgeyBFbGVtZW50VHlwZSB9O1xuZXhwb3J0IHR5cGUgeyBQb3J0Zm9saW9Db25maWcgfTtcblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb01hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogUG9ydGZvbGlvTWFuYWdlcjtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2VMb2NrID0gZmFsc2U7XG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemF0aW9uTG9jayA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBiYXNlRGlyOiBzdHJpbmc7XG4gIFxuICBwcml2YXRlIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBvcnRmb2xpb0NvbmZpZykge1xuICAgIC8vIEdldCBwb3RlbnRpYWwgZGlyZWN0b3J5IGZyb20gZW52aXJvbm1lbnQgb3IgY29uZmlnXG4gICAgY29uc3QgZW52RGlyID0gcHJvY2Vzcy5lbnYuRE9MTEhPVVNFX1BPUlRGT0xJT19ESVI7XG4gICAgY29uc3QgY29uZmlnRGlyID0gY29uZmlnPy5iYXNlRGlyO1xuICAgIGNvbnN0IGRlZmF1bHREaXIgPSBwYXRoLmpvaW4oaG9tZWRpcigpLCAnLmRvbGxob3VzZScsICdwb3J0Zm9saW8nKTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBwcm92aWRlZFxuICAgIGlmIChlbnZEaXIpIHtcbiAgICAgIGlmICghcGF0aC5pc0Fic29sdXRlKGVudkRpcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdET0xMSE9VU0VfUE9SVEZPTElPX0RJUiBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICAgIH1cbiAgICAgIC8vIEFkZGl0aW9uYWwgdmFsaWRhdGlvbiBmb3Igc3VzcGljaW91cyBwYXRoc1xuICAgICAgaWYgKGVudkRpci5pbmNsdWRlcygnLi4nKSB8fCBlbnZEaXIuc3RhcnRzV2l0aCgnL2V0YycpIHx8IGVudkRpci5zdGFydHNXaXRoKCcvc3lzJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdET0xMSE9VU0VfUE9SVEZPTElPX0RJUiBjb250YWlucyBzdXNwaWNpb3VzIHBhdGggc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLy8gVmFsaWRhdGUgY29uZmlnIGRpcmVjdG9yeSBpZiBwcm92aWRlZFxuICAgIGlmIChjb25maWdEaXIgJiYgIXBhdGguaXNBYnNvbHV0ZShjb25maWdEaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnRmb2xpbyBjb25maWcgYmFzZURpciBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGgnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNlIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNldCwgb3RoZXJ3aXNlIGNvbmZpZywgb3RoZXJ3aXNlIGRlZmF1bHRcbiAgICB0aGlzLmJhc2VEaXIgPSBlbnZEaXIgfHwgY29uZmlnRGlyIHx8IGRlZmF1bHREaXI7XG4gICAgXG4gICAgbG9nZ2VyLmluZm8oYFtQb3J0Zm9saW9NYW5hZ2VyXSBQb3J0Zm9saW8gYmFzZSBkaXJlY3Rvcnk6ICR7dGhpcy5iYXNlRGlyfWApO1xuICB9XG4gIFxuICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKGNvbmZpZz86IFBvcnRmb2xpb0NvbmZpZyk6IFBvcnRmb2xpb01hbmFnZXIge1xuICAgIGlmICghUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgYW5vdGhlciB0aHJlYWQgaXMgYWxyZWFkeSBjcmVhdGluZyB0aGUgaW5zdGFuY2VcbiAgICAgIGlmIChQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIgaW5zdGFuY2UgaXMgYmVpbmcgY3JlYXRlZCBieSBhbm90aGVyIHRocmVhZCcpO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0cnkge1xuICAgICAgICBQb3J0Zm9saW9NYW5hZ2VyLmluc3RhbmNlTG9jayA9IHRydWU7XG4gICAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2UgPSBuZXcgUG9ydGZvbGlvTWFuYWdlcihjb25maWcpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgUG9ydGZvbGlvTWFuYWdlci5pbnN0YW5jZUxvY2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFBvcnRmb2xpb01hbmFnZXIuaW5zdGFuY2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2UgcG9ydGZvbGlvIGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIGdldEJhc2VEaXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlRGlyO1xuICB9XG4gIFxuICAvKipcbiAgICogR2V0IHRoZSBkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlXG4gICAqL1xuICBwdWJsaWMgZ2V0RWxlbWVudERpcih0eXBlOiBFbGVtZW50VHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbih0aGlzLmJhc2VEaXIsIHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZmlsZSBleHRlbnNpb24gZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlXG4gICAqIEZJWCAoIzEyMTMpOiBFeHBvc2UgRUxFTUVOVF9GSUxFX0VYVEVOU0lPTlMgbWFwcGluZyBmb3IgY29ycmVjdCBleHRlbnNpb24gZGlzcGxheVxuICAgKi9cbiAgcHVibGljIGdldEZpbGVFeHRlbnNpb24odHlwZTogRWxlbWVudFR5cGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBFTEVNRU5UX0ZJTEVfRVhURU5TSU9OU1t0eXBlXSB8fCBERUZBVUxUX0VMRU1FTlRfRklMRV9FWFRFTlNJT047XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbiAgICogVXNlcyBsb2NraW5nIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGR1cmluZyBjb25jdXJyZW50IGluaXRpYWxpemF0aW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBJZiBhbHJlYWR5IGluaXRpYWxpemluZywgd2FpdCBmb3IgdGhlIGV4aXN0aW5nIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlKSB7XG4gICAgICByZXR1cm4gUG9ydGZvbGlvTWFuYWdlci5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgfVxuICAgIFxuICAgIC8vIElmIGFscmVhZHkgaW5pdGlhbGl6ZWQsIGNoZWNrIGlmIGRpcmVjdG9yaWVzIGV4aXN0XG4gICAgaWYgKGF3YWl0IHRoaXMuZXhpc3RzKCkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBhbHJlYWR5IGluaXRpYWxpemVkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBpbml0aWFsaXphdGlvbiBwcm9taXNlIHRvIHByZXZlbnQgY29uY3VycmVudCBpbml0aWFsaXphdGlvblxuICAgIFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gdGhpcy5wZXJmb3JtSW5pdGlhbGl6YXRpb24oKTtcbiAgICBcbiAgICB0cnkge1xuICAgICAgYXdhaXQgUG9ydGZvbGlvTWFuYWdlci5pbml0aWFsaXphdGlvblByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFyIHRoZSBwcm9taXNlIGFmdGVyIGNvbXBsZXRpb25cbiAgICAgIFBvcnRmb2xpb01hbmFnZXIuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBhY3R1YWwgaW5pdGlhbGl6YXRpb24gLSBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwZXJmb3JtSW5pdGlhbGl6YXRpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nZ2VyLmluZm8oJ1tQb3J0Zm9saW9NYW5hZ2VyXSBJbml0aWFsaXppbmcgcG9ydGZvbGlvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUnKTtcbiAgICBcbiAgICAvLyBDcmVhdGUgYmFzZSBkaXJlY3RvcnlcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMubWtkaXIodGhpcy5iYXNlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyID0gZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uO1xuICAgICAgLy8gSW4gcmVhZC1vbmx5IGVudmlyb25tZW50cyAobGlrZSBEb2NrZXIpLCB3ZSBjYW4ndCBjcmVhdGUgZGlyZWN0b3JpZXNcbiAgICAgIC8vIExvZyBidXQgY29udGludWUgLSB0aGUgcG9ydGZvbGlvIHdpbGwgYmUgZW1wdHkgYnV0IGZ1bmN0aW9uYWxcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBQ0NFUycgfHwgZXJyLmNvZGUgPT09ICdFUk9GUycgfHwgZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBbUG9ydGZvbGlvTWFuYWdlcl0gQ2Fubm90IGNyZWF0ZSBwb3J0Zm9saW8gZGlyZWN0b3J5IChyZWFkLW9ubHkgZW52aXJvbm1lbnQ/KTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYFtEb2xsaG91c2VNQ1BdIFJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUgLSBwb3J0Zm9saW8gZmVhdHVyZXMgZGlzYWJsZWRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIFxuICAgIC8vIENyZWF0ZSBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBlbGVtZW50IHR5cGVcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnRUeXBlIG9mIE9iamVjdC52YWx1ZXMoRWxlbWVudFR5cGUpKSB7XG4gICAgICBjb25zdCBlbGVtZW50RGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgZWxlbWVudFR5cGUpO1xuICAgICAgYXdhaXQgZnMubWtkaXIoZWxlbWVudERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBsb2dnZXIuZGVidWcoYFtQb3J0Zm9saW9NYW5hZ2VyXSBDcmVhdGVkIGRpcmVjdG9yeTogJHtlbGVtZW50RGlyfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDcmVhdGUgc3BlY2lhbCBkaXJlY3RvcmllcyBmb3Igc3RhdGVmdWwgZWxlbWVudHNcbiAgICBjb25zdCBhZ2VudFN0YXRlRGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgRWxlbWVudFR5cGUuQUdFTlQsICcuc3RhdGUnKTtcbiAgICBhd2FpdCBmcy5ta2RpcihhZ2VudFN0YXRlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBcbiAgICBsb2dnZXIuaW5mbygnW1BvcnRmb2xpb01hbmFnZXJdIFBvcnRmb2xpbyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluaXRpYWxpemVkJyk7XG4gICAgXG4gICAgLy8gTWlncmF0aW9uIGZvciB2MS40LjIgdXNlcnM6IHJlbmFtZSBzaW5ndWxhciBkaXJlY3RvcmllcyB0byBwbHVyYWxcbiAgICBhd2FpdCB0aGlzLm1pZ3JhdGVGcm9tU2luZ3VsYXJEaXJlY3RvcmllcygpO1xuICAgIFxuICAgIC8vIFBvcHVsYXRlIHdpdGggZGVmYXVsdCBlbGVtZW50cyBpZiB0aGlzIGlzIGEgbmV3IGluc3RhbGxhdGlvblxuICAgIC8vIFNraXAgZHVyaW5nIHRlc3RzIHRvIGF2b2lkIGludGVyZmVyZW5jZVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWZhdWx0UHJvdmlkZXIgPSBuZXcgRGVmYXVsdEVsZW1lbnRQcm92aWRlcigpO1xuICAgICAgICBhd2FpdCBkZWZhdWx0UHJvdmlkZXIucG9wdWxhdGVEZWZhdWx0cyh0aGlzLmJhc2VEaXIpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdbUG9ydGZvbGlvTWFuYWdlcl0gRXJyb3IgcG9wdWxhdGluZyBkZWZhdWx0IGVsZW1lbnRzOicsIGVycm9yKTtcbiAgICAgICAgLy8gTG9nIHRvIHN0ZGVyciBmb3IgQ2xhdWRlIERlc2t0b3AgdmlzaWJpbGl0eVxuICAgICAgICBsb2dnZXIuZXJyb3IoYFtQb3J0Zm9saW9NYW5hZ2VyXSBDUklUSUNBTDogRmFpbGVkIHRvIHBvcHVsYXRlIGRlZmF1bHQgZWxlbWVudHM6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgICAgICAvLyBDb250aW51ZSBhbnl3YXkgLSBlbXB0eSBwb3J0Zm9saW8gaXMgdmFsaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBwb3J0Zm9saW8gZGlyZWN0b3J5IGV4aXN0c1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHRoaXMuYmFzZURpcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGZpbGVuYW1lIGFwcGVhcnMgdG8gYmUgYSB0ZXN0IGVsZW1lbnRcbiAgICogU0FGRVRZOiBQYXR0ZXJuLWJhc2VkIGZpbHRlcmluZyBvbmx5LCBubyBjb250ZW50IHBhcnNpbmdcbiAgICovXG4gIHB1YmxpYyBpc1Rlc3RFbGVtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBEYW5nZXJvdXMgdGVzdCBwYXR0ZXJucyB0aGF0IHNob3VsZCBuZXZlciBhcHBlYXIgaW4gcHJvZHVjdGlvblxuICAgIGNvbnN0IGRhbmdlcm91c1BhdHRlcm5zID0gW1xuICAgICAgL15iaW4tc2gvaSxcbiAgICAgIC9ecm0tcmYvaSxcbiAgICAgIC9ebmMtZS1iaW4vaSxcbiAgICAgIC9ecHl0aG9uLWMtaW1wb3J0L2ksXG4gICAgICAvXmN1cmwuKmV2aWwvaSxcbiAgICAgIC9ed2dldC4qbWFsaWNpb3VzL2ksXG4gICAgICAvXmV2YWwtL2ksXG4gICAgICAvXmV4ZWMtL2ksXG4gICAgICAvXmJhc2gtYy0vaSxcbiAgICAgIC9ec2gtYy0vaSxcbiAgICAgIC9ecG93ZXJzaGVsbC0vaSxcbiAgICAgIC9eY21kLWMtL2ksXG4gICAgICAvc2hlbGwtaW5qZWN0aW9uL2lcbiAgICBdO1xuICAgIFxuICAgIC8vIENvbW1vbiB0ZXN0IHBhdHRlcm5zXG4gICAgY29uc3QgdGVzdFBhdHRlcm5zID0gW1xuICAgICAgL150ZXN0LS9pLFxuICAgICAgL15tZW1vcnktdGVzdC0vaSxcbiAgICAgIC9eeWFtbC10ZXN0L2ksXG4gICAgICAvXnBlcmYtdGVzdC0vaSxcbiAgICAgIC9ec3RhYmlsaXR5LXRlc3QtL2ksXG4gICAgICAvXnJvdW5kdHJpcC10ZXN0L2ksXG4gICAgICAvdGVzdC1wZXJzb25hL2ksXG4gICAgICAvdGVzdC1za2lsbC9pLFxuICAgICAgL3Rlc3QtdGVtcGxhdGUvaSxcbiAgICAgIC90ZXN0LWFnZW50L2ksXG4gICAgICAvXFwudGVzdFxcLi8sXG4gICAgICAvX190ZXN0X18vLFxuICAgICAgL3Rlc3QtZGF0YS8sXG4gICAgICAvcGVuZXRyYXRpb24tdGVzdC9pLFxuICAgICAgL21ldGFkYXRhLXRlc3QvaSxcbiAgICAgIC90ZXN0cGVyc29uYVxcZCsvaSAgLy8gR2VuZXJhdGVkIHRlc3QgcGVyc29uYXMgd2l0aCB0aW1lc3RhbXBzXG4gICAgXTtcbiAgICBcbiAgICAvLyBDaGVjayBkYW5nZXJvdXMgcGF0dGVybnMgZmlyc3RcbiAgICBpZiAoZGFuZ2Vyb3VzUGF0dGVybnMuc29tZShwYXR0ZXJuID0+IHBhdHRlcm4udGVzdChmaWxlbmFtZSkpKSB7XG4gICAgICBsb2dnZXIud2FybihgW1BvcnRmb2xpb01hbmFnZXJdIEZpbHRlcmVkIGRhbmdlcm91cyB0ZXN0IGVsZW1lbnQ6ICR7ZmlsZW5hbWV9YCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgY29tbW9uIHRlc3QgcGF0dGVybnNcbiAgICByZXR1cm4gdGVzdFBhdHRlcm5zLnNvbWUocGF0dGVybiA9PiBwYXR0ZXJuLnRlc3QoZmlsZW5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBlbGVtZW50cyBvZiBhIHNwZWNpZmljIHR5cGVcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsaXN0RWxlbWVudHModHlwZTogRWxlbWVudFR5cGUpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZWxlbWVudERpciA9IHRoaXMuZ2V0RWxlbWVudERpcih0eXBlKTtcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gRUxFTUVOVF9GSUxFX0VYVEVOU0lPTlNbdHlwZV0gfHwgREVGQVVMVF9FTEVNRU5UX0ZJTEVfRVhURU5TSU9OO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihlbGVtZW50RGlyKTtcbiAgICAgIC8vIEZpbHRlciBmb3IgY29ycmVjdCBmaWxlIGV4dGVuc2lvbiBiYXNlZCBvbiBlbGVtZW50IHR5cGUgYW5kIGV4Y2x1ZGUgdGVzdCBlbGVtZW50c1xuICAgICAgcmV0dXJuIGZpbGVzXG4gICAgICAgIC5maWx0ZXIoZmlsZSA9PiBmaWxlLmVuZHNXaXRoKGZpbGVFeHRlbnNpb24pKVxuICAgICAgICAuZmlsdGVyKGZpbGUgPT4gIXRoaXMuaXNUZXN0RWxlbWVudChmaWxlKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IGVyciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbjtcbiAgICAgIFxuICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAvLyBEaXJlY3RvcnkgZG9lc24ndCBleGlzdCB5ZXQgLSB0aGlzIGlzIGV4cGVjdGVkIGZvciBuZXcgaW5zdGFsbGF0aW9uc1xuICAgICAgICBsb2dnZXIuZGVidWcoYFtQb3J0Zm9saW9NYW5hZ2VyXSBFbGVtZW50IGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0IHlldDogJHtlbGVtZW50RGlyfWApO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBQ0NFUycgfHwgZXJyLmNvZGUgPT09ICdFUEVSTScpIHtcbiAgICAgICAgLy8gUGVybWlzc2lvbiBkZW5pZWQgLSBsb2cgYnV0IHJldHVybiBlbXB0eSBhcnJheVxuICAgICAgICBFcnJvckhhbmRsZXIubG9nRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIubGlzdEVsZW1lbnRzJywgZXJyb3IsIHsgZWxlbWVudERpciB9KTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9URElSJykge1xuICAgICAgICAvLyBQYXRoIGV4aXN0cyBidXQgaXMgbm90IGEgZGlyZWN0b3J5XG4gICAgICAgIEVycm9ySGFuZGxlci5sb2dFcnJvcignUG9ydGZvbGlvTWFuYWdlci5saXN0RWxlbWVudHMnLCBlcnJvciwgeyBlbGVtZW50RGlyIH0pO1xuICAgICAgICB0aHJvdyBFcnJvckhhbmRsZXIuY3JlYXRlRXJyb3IoYFBhdGggaXMgbm90IGEgZGlyZWN0b3J5OiAke2VsZW1lbnREaXJ9YCwgRXJyb3JDYXRlZ29yeS5TWVNURU1fRVJST1IpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBGb3IgYW55IG90aGVyIGVycm9ycywgdGhyb3cgd2l0aCBjb250ZXh0XG4gICAgICBFcnJvckhhbmRsZXIubG9nRXJyb3IoJ1BvcnRmb2xpb01hbmFnZXIubGlzdEVsZW1lbnRzJywgZXJyb3IsIHsgZWxlbWVudERpciB9KTtcbiAgICAgIHRocm93IEVycm9ySGFuZGxlci53cmFwRXJyb3IoZXJyb3IsICdGYWlsZWQgdG8gbGlzdCBlbGVtZW50cycsIEVycm9yQ2F0ZWdvcnkuU1lTVEVNX0VSUk9SKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBHZXQgZnVsbCBwYXRoIHRvIGFuIGVsZW1lbnQgZmlsZVxuICAgKi9cbiAgcHVibGljIGdldEVsZW1lbnRQYXRoKHR5cGU6IEVsZW1lbnRUeXBlLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBWYWxpZGF0ZSBmaWxlbmFtZSB0byBwcmV2ZW50IHBhdGggdHJhdmVyc2FsXG4gICAgaWYgKCFmaWxlbmFtZSB8fCB0eXBlb2YgZmlsZW5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICBzb3VyY2U6ICdQb3J0Zm9saW9NYW5hZ2VyLmdldEVsZW1lbnRQYXRoJyxcbiAgICAgICAgZGV0YWlsczogYEludmFsaWQgZmlsZW5hbWUgcHJvdmlkZWQ6ICR7dHlwZW9mIGZpbGVuYW1lfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IGVsZW1lbnRUeXBlOiB0eXBlLCBmaWxlbmFtZTogU3RyaW5nKGZpbGVuYW1lKSB9XG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmaWxlbmFtZTogbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIHBhdGggdHJhdmVyc2FsIGF0dGVtcHRzXG4gICAgaWYgKGZpbGVuYW1lLmluY2x1ZGVzKCcuLicpIHx8IGZpbGVuYW1lLmluY2x1ZGVzKCcvJykgfHwgZmlsZW5hbWUuaW5jbHVkZXMoJ1xcXFwnKSB8fCBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvTWFuYWdlci5nZXRFbGVtZW50UGF0aCcsXG4gICAgICAgIGRldGFpbHM6IGBQYXRoIHRyYXZlcnNhbCBhdHRlbXB0IGRldGVjdGVkIGluIGZpbGVuYW1lOiAke2ZpbGVuYW1lfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7IGVsZW1lbnRUeXBlOiB0eXBlLCBmaWxlbmFtZSB9XG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWxlbmFtZTogY29udGFpbnMgcGF0aCB0cmF2ZXJzYWwgY2hhcmFjdGVyczogJHtmaWxlbmFtZX1gKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQWRkaXRpb25hbCB2YWxpZGF0aW9uIGZvciBoaWRkZW4gZmlsZXMgYW5kIHNwZWNpYWwgY2hhcmFjdGVyc1xuICAgIGlmIChmaWxlbmFtZS5zdGFydHNXaXRoKCcuJykgfHwgZmlsZW5hbWUuaW5jbHVkZXMoJ1xcMCcpKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdQQVRIX1RSQVZFUlNBTF9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICBzb3VyY2U6ICdQb3J0Zm9saW9NYW5hZ2VyLmdldEVsZW1lbnRQYXRoJyxcbiAgICAgICAgZGV0YWlsczogYEludmFsaWQgZmlsZW5hbWUgY2hhcmFjdGVycyBkZXRlY3RlZDogJHtmaWxlbmFtZX1gLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YTogeyBlbGVtZW50VHlwZTogdHlwZSwgZmlsZW5hbWUsIGhhc0hpZGRlbkZpbGU6IGZpbGVuYW1lLnN0YXJ0c1dpdGgoJy4nKSwgaGFzTnVsbEJ5dGU6IGZpbGVuYW1lLmluY2x1ZGVzKCdcXDAnKSB9XG4gICAgICB9KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWxlbmFtZTogY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiAke2ZpbGVuYW1lfWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBFbnN1cmUgZmlsZW5hbWUgZW5kcyB3aXRoIC5tZFxuICAgIGNvbnN0IHNhZmVGaWxlbmFtZSA9IGZpbGVuYW1lLmVuZHNXaXRoKCcubWQnKSA/IGZpbGVuYW1lIDogYCR7ZmlsZW5hbWV9Lm1kYDtcbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuZ2V0RWxlbWVudERpcih0eXBlKSwgc2FmZUZpbGVuYW1lKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGVsZW1lbnQgZXhpc3RzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZWxlbWVudEV4aXN0cyh0eXBlOiBFbGVtZW50VHlwZSwgZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3ModGhpcy5nZXRFbGVtZW50UGF0aCh0eXBlLCBmaWxlbmFtZSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogR2V0IGxlZ2FjeSBwZXJzb25hcyBkaXJlY3RvcnkgcGF0aCAoZm9yIG1pZ3JhdGlvbilcbiAgICovXG4gIHB1YmxpYyBnZXRMZWdhY3lQZXJzb25hc0RpcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4oaG9tZWRpcigpLCAnLmRvbGxob3VzZScsICdwZXJzb25hcycpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgbGVnYWN5IHBlcnNvbmFzIGRpcmVjdG9yeSBleGlzdHNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBoYXNMZWdhY3lQZXJzb25hcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKHRoaXMuZ2V0TGVnYWN5UGVyc29uYXNEaXIoKSk7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIodGhpcy5nZXRMZWdhY3lQZXJzb25hc0RpcigpKTtcbiAgICAgIHJldHVybiBmaWxlcy5zb21lKGZpbGUgPT4gZmlsZS5lbmRzV2l0aCgnLm1kJykpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIEdldCBwb3J0Zm9saW8gc3RhdGlzdGljc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFN0YXRpc3RpY3MoKTogUHJvbWlzZTxSZWNvcmQ8RWxlbWVudFR5cGUsIG51bWJlcj4+IHtcbiAgICBjb25zdCBzdGF0czogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICAgIFxuICAgIGZvciAoY29uc3QgZWxlbWVudFR5cGUgb2YgT2JqZWN0LnZhbHVlcyhFbGVtZW50VHlwZSkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gYXdhaXQgdGhpcy5saXN0RWxlbWVudHMoZWxlbWVudFR5cGUpO1xuICAgICAgc3RhdHNbZWxlbWVudFR5cGVdID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gc3RhdHMgYXMgUmVjb3JkPEVsZW1lbnRUeXBlLCBudW1iZXI+O1xuICB9XG4gIFxuICAvKipcbiAgICogTWlncmF0ZSBmcm9tIHYxLjQuMiBzaW5ndWxhciBkaXJlY3RvcnkgbmFtZXMgdG8gdjEuNC4zIHBsdXJhbCBuYW1lc1xuICAgKiBUaGlzIGhhbmRsZXMgdGhlIHVwZ3JhZGUgcGF0aCBmb3IgZXhpc3RpbmcgdXNlcnNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbWlncmF0ZUZyb21TaW5ndWxhckRpcmVjdG9yaWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG9sZFRvTmV3OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3BlcnNvbmEnOiAncGVyc29uYXMnLFxuICAgICAgJ3NraWxsJzogJ3NraWxscycsXG4gICAgICAndGVtcGxhdGUnOiAndGVtcGxhdGVzJyxcbiAgICAgICdhZ2VudCc6ICdhZ2VudHMnLFxuICAgICAgJ21lbW9yeSc6ICdtZW1vcmllcycsXG4gICAgICAnZW5zZW1ibGUnOiAnZW5zZW1ibGVzJ1xuICAgIH07XG4gICAgXG4gICAgZm9yIChjb25zdCBbb2xkTmFtZSwgbmV3TmFtZV0gb2YgT2JqZWN0LmVudHJpZXMob2xkVG9OZXcpKSB7XG4gICAgICAvLyBVbmljb2RlIG5vcm1hbGl6ZSB0aGUgZGlyZWN0b3J5IG5hbWVzIChldmVuIHRob3VnaCB0aGV5J3JlIGhhcmRjb2RlZCwgZm9yIHNlY3VyaXR5IGF1ZGl0KVxuICAgICAgY29uc3Qgbm9ybWFsaXplZE9sZCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKG9sZE5hbWUpO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZE5ldyA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKG5ld05hbWUpO1xuICAgICAgXG4gICAgICBpZiAoIW5vcm1hbGl6ZWRPbGQuaXNWYWxpZCB8fCAhbm9ybWFsaXplZE5ldy5pc1ZhbGlkKSB7XG4gICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aXRoIG91ciBoYXJkY29kZWQgdmFsdWVzLCBidXQgZm9yIGNvbXBsZXRlbmVzc1xuICAgICAgICBsb2dnZXIuZXJyb3IoYFtQb3J0Zm9saW9NYW5hZ2VyXSBJbnZhbGlkIFVuaWNvZGUgaW4gZGlyZWN0b3J5IG5hbWVzIGR1cmluZyBtaWdyYXRpb25gKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IG9sZERpciA9IHBhdGguam9pbih0aGlzLmJhc2VEaXIsIG5vcm1hbGl6ZWRPbGQubm9ybWFsaXplZENvbnRlbnQpO1xuICAgICAgY29uc3QgbmV3RGlyID0gcGF0aC5qb2luKHRoaXMuYmFzZURpciwgbm9ybWFsaXplZE5ldy5ub3JtYWxpemVkQ29udGVudCk7XG4gICAgICBcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENoZWNrIGlmIG9sZCBkaXJlY3RvcnkgZXhpc3RzXG4gICAgICAgIGF3YWl0IGZzLmFjY2VzcyhvbGREaXIpO1xuICAgICAgICBcbiAgICAgICAgLy8gQ2hlY2sgaWYgbmV3IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyBjb250ZW50XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgbmV3RGlyRmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKG5ld0Rpcik7XG4gICAgICAgICAgaWYgKG5ld0RpckZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgICBgW1BvcnRmb2xpb01hbmFnZXJdIEJvdGggJHtvbGROYW1lfSBhbmQgJHtuZXdOYW1lfSBkaXJlY3RvcmllcyBleGlzdC4gS2VlcGluZyAke25ld05hbWV9LCBza2lwcGluZyBtaWdyYXRpb24uYCxcbiAgICAgICAgICAgICAgeyBvbGREaXIsIG5ld0RpciwgZmlsZUNvdW50OiBuZXdEaXJGaWxlcy5sZW5ndGggfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gTmV3IGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0IG9yIGlzIGVtcHR5LCBwcm9jZWVkIHdpdGggbWlncmF0aW9uXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIFBlcmZvcm0gdGhlIG1pZ3JhdGlvblxuICAgICAgICBsb2dnZXIuaW5mbyhgW1BvcnRmb2xpb01hbmFnZXJdIE1pZ3JhdGluZyAke29sZE5hbWV9IOKGkiAke25ld05hbWV9YCk7XG4gICAgICAgIGF3YWl0IGZzLnJlbmFtZShvbGREaXIsIG5ld0Rpcik7XG4gICAgICAgIFxuICAgICAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnQgZm9yIGF1ZGl0IHRyYWlsXG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnRElSRUNUT1JZX01JR1JBVElPTicsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb01hbmFnZXIubWlncmF0ZUZyb21TaW5ndWxhckRpcmVjdG9yaWVzJyxcbiAgICAgICAgICBkZXRhaWxzOiBgTWlncmF0ZWQgZGlyZWN0b3J5IGZyb20gJHtvbGROYW1lfSB0byAke25ld05hbWV9IGZvciB2MS40LjMgY29tcGF0aWJpbGl0eWAsXG4gICAgICAgICAgbWV0YWRhdGE6IHsgb2xkRGlyLCBuZXdEaXIgfVxuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBPbGQgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3QsIHdoaWNoIGlzIGZpbmVcbiAgICAgICAgaWYgKChlcnJvciBhcyBhbnkpLmNvZGUgIT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbUG9ydGZvbGlvTWFuYWdlcl0gRXJyb3IgZHVyaW5nIG1pZ3JhdGlvbiBvZiAke29sZE5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secureYamlParser.d.ts","sourceRoot":"","sources":["../../src/security/secureYamlParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,MAAM,MAAM,aAAa,CAAC;AAKjC,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAKrC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAGvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAoCtC;IAEF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"secureYamlParser.d.ts","sourceRoot":"","sources":["../../src/security/secureYamlParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAGH,OAAO,MAAM,MAAM,aAAa,CAAC;AAKjC,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAKrC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAGvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAoCtC;IAEF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,aAAa;IA+G5E;;OAEG;IACH,MAAM,CAAC,wBAAwB;uBAEZ,MAAM;;;;;;6BASA,MAAM,QAAQ,GAAG;;IAoB1C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;CAgChH"}
|
|
@@ -125,7 +125,8 @@ export class SecureYamlParser {
|
|
|
125
125
|
throw new SecurityError('YAML frontmatter exceeds maximum allowed size', 'medium');
|
|
126
126
|
}
|
|
127
127
|
// 4. Pre-parse security validation
|
|
128
|
-
|
|
128
|
+
// FIX (Issue #1211): Only validate content if validateContent option is true
|
|
129
|
+
if (opts.validateContent && !ContentValidator.validateYamlContent(yamlContent)) {
|
|
129
130
|
SecurityMonitor.logSecurityEvent({
|
|
130
131
|
type: 'YAML_INJECTION_ATTEMPT',
|
|
131
132
|
severity: 'CRITICAL',
|
|
@@ -266,4 +267,4 @@ export class SecureYamlParser {
|
|
|
266
267
|
});
|
|
267
268
|
}
|
|
268
269
|
}
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlWWFtbFBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ0c7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdCdkQsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixNQUFNLENBQVUsZUFBZSxHQUF1QjtRQUM1RCxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBTyxnQkFBZ0I7UUFDN0MsY0FBYyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUcsa0JBQWtCO1FBQ2hELGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGNBQWMsRUFBRSxJQUFJLENBQVMscUNBQXFDO0tBQ25FLENBQUM7SUFFRixtR0FBbUc7SUFDM0YsTUFBTSxDQUFVLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBRXZELG9EQUFvRDtJQUM1QyxNQUFNLENBQVUsZ0JBQWdCLEdBQTRDO1FBQ2xGLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRztRQUNyRCxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUc7UUFDNUQsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxP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S0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDbEQsT0FBTyxFQUFFLENBQUM7d0JBQ1osQ0FBQzt3QkFDRCxPQUFPLE1BQWdCLENBQUM7b0JBQzFCLENBQUM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVzs0QkFDeEIsV0FBVyxFQUFFLElBQUk7NEJBQ2pCLE1BQU0sRUFBRSxJQUFJO3lCQUNiLENBQUMsQ0FBQztvQkFDTCxDQUFDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWN1cmUgWUFNTCBQYXJzZXIgZm9yIERvbGxob3VzZU1DUCAtIEZvciBNYXJrZG93biBGaWxlcyB3aXRoIFlBTUwgRnJvbnRtYXR0ZXJcbiAqIFxuICogSU1QT1JUQU5UOiBUaGlzIHBhcnNlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIE1hcmtkb3duIGZpbGVzIHdpdGggWUFNTCBmcm9udG1hdHRlclxuICogKHRoZSBmb3JtYXQgdXNlZCBieSBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIGFuZCBvdGhlciBlbGVtZW50cykuXG4gKiBcbiAqIFVTRSBUSElTIEZPUjpcbiAqIC0gUGVyc29uYSBmaWxlcyAoZS5nLiwgY3JlYXRpdmUtd3JpdGVyLm1kKVxuICogLSBTa2lsbCBmaWxlcyAoZS5nLiwgY29kZS1yZXZpZXcubWQpXG4gKiAtIFRlbXBsYXRlIGZpbGVzIChlLmcuLCBtZWV0aW5nLW5vdGVzLm1kKVxuICogLSBBbnkgTWFya2Rvd24gZmlsZSB3aXRoIFlBTUwgZnJvbnRtYXR0ZXIgYmV0d2VlbiAtLS0gbWFya2Vyc1xuICogXG4gKiBETyBOT1QgVVNFIFRISVMgRk9SOlxuICogLSBQdXJlIFlBTUwgY29uZmlndXJhdGlvbiBmaWxlcyAodXNlIGpzLXlhbWwgZGlyZWN0bHkgd2l0aCBGQUlMU0FGRV9TQ0hFTUEpXG4gKiAtIEpTT04gZmlsZXNcbiAqIC0gUGxhaW4gdGV4dCBmaWxlcyB3aXRob3V0IGZyb250bWF0dGVyXG4gKiBcbiAqIEZJTEUgRk9STUFUIEVYUEVDVEVEOlxuICogYGBgXG4gKiAtLS1cbiAqIG5hbWU6IEVsZW1lbnQgTmFtZVxuICogZGVzY3JpcHRpb246IEVsZW1lbnQgZGVzY3JpcHRpb25cbiAqIHZlcnNpb246IDEuMC4wXG4gKiAtLS1cbiAqIFxuICogIyBNYXJrZG93biBjb250ZW50IGhlcmVcbiAqIFRoZSBhY3R1YWwgY29udGVudC9pbnN0cnVjdGlvbnMgZ28gaGVyZS4uLlxuICogYGBgXG4gKiBcbiAqIFByb3ZpZGVzIHNhZmUgWUFNTCBwYXJzaW5nIHRoYXQgcHJldmVudHMgZGVzZXJpYWxpemF0aW9uIGF0dGFja3NcbiAqIGJ5IHVzaW5nIGEgcmVzdHJpY3RlZCBzY2hlbWEgYW5kIHByZS12YWxpZGF0aW9uLlxuICogXG4gKiBTZWN1cml0eTogU0VDLTAwMyAtIFlBTUwgcGFyc2luZyB2dWxuZXJhYmlsaXR5IHByb3RlY3Rpb25cbiAqL1xuXG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IG1hdHRlciBmcm9tICdncmF5LW1hdHRlcic7XG5pbXBvcnQgeyBTZWN1cml0eUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL1NlY3VyaXR5RXJyb3IuanMnO1xuaW1wb3J0IHsgQ29udGVudFZhbGlkYXRvciB9IGZyb20gJy4vY29udGVudFZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuL3NlY3VyaXR5TW9uaXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJlUGFyc2VPcHRpb25zIHtcbiAgbWF4WWFtbFNpemU/OiBudW1iZXI7XG4gIG1heENvbnRlbnRTaXplPzogbnVtYmVyO1xuICBhbGxvd2VkS2V5cz86IHN0cmluZ1tdO1xuICB2YWxpZGF0ZUNvbnRlbnQ/OiBib29sZWFuO1xuICB2YWxpZGF0ZUZpZWxkcz86IGJvb2xlYW47IC8vIFdoZXRoZXIgdG8gYXBwbHkgZmllbGQtc3BlY2lmaWMgdmFsaWRhdG9ycyAoZm9yIHBlcnNvbmEgbWV0YWRhdGEpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkQ29udGVudCB7XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgZXhjZXJwdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyZVlhbWxQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX09QVElPTlM6IFNlY3VyZVBhcnNlT3B0aW9ucyA9IHtcbiAgICBtYXhZYW1sU2l6ZTogNjQgKiAxMDI0LCAgICAgIC8vIDY0S0IgZm9yIFlBTUxcbiAgICBtYXhDb250ZW50U2l6ZTogMTAyNCAqIDEwMjQsICAvLyAxTUIgZm9yIGNvbnRlbnRcbiAgICB2YWxpZGF0ZUNvbnRlbnQ6IHRydWUsXG4gICAgdmFsaWRhdGVGaWVsZHM6IHRydWUgICAgICAgICAvLyBCeSBkZWZhdWx0LCBhcHBseSBmaWVsZCB2YWxpZGF0b3JzXG4gIH07XG5cbiAgLy8gQWxsb3dlZCBZQU1MIHR5cGVzIC0gdXNpbmcgQ09SRV9TQ0hFTUEgKHNhZmUgc3Vic2V0IHdpdGggYmFzaWMgdHlwZXMgbGlrZSBib29sZWFucyBhbmQgaW50ZWdlcnMpXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNBRkVfU0NIRU1BID0geWFtbC5DT1JFX1NDSEVNQTtcblxuICAvLyBBZGRpdGlvbmFsIHZhbGlkYXRpb24gZm9yIHNwZWNpZmljIHBlcnNvbmEgZmllbGRzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1ZBTElEQVRPUlM6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBib29sZWFuPiA9IHtcbiAgICBuYW1lOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYubGVuZ3RoIDw9IDEwMCxcbiAgICBkZXNjcmlwdGlvbjogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA8PSA1MDAsXG4gICAgYXV0aG9yOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYubGVuZ3RoIDw9IDEwMCxcbiAgICB2ZXJzaW9uOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eXFxkK1xcLlxcZCsoXFwuXFxkKyk/KC1bYS16QS1aMC05Li1dKyk/JC8udGVzdCh2KSxcbiAgICBjYXRlZ29yeTogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA8PSA1MCxcbiAgICBhZ2VfcmF0aW5nOiAodikgPT4gWydhbGwnLCAnMTMrJywgJzE4KyddLmluY2x1ZGVzKHYpLFxuICAgIHByaWNlOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmICh2ID09PSAnZnJlZScgfHwgL15cXCRcXGQrXFwuXFxkezJ9JC8udGVzdCh2KSksXG4gICAgYWlfZ2VuZXJhdGVkOiAodikgPT4gdHlwZW9mIHYgPT09ICdib29sZWFuJyB8fCB2ID09PSAndHJ1ZScgfHwgdiA9PT0gJ2ZhbHNlJyxcbiAgICBnZW5lcmF0aW9uX21ldGhvZDogKHYpID0+IFsnaHVtYW4nLCAnQ2hhdEdQVCcsICdDbGF1ZGUnLCAnaHlicmlkJ10uaW5jbHVkZXModiksXG4gICAgY3JlYXRlZF9kYXRlOiAodikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgICAgXG4gICAgICAvLyBNb3JlIGZsZXhpYmxlIGRhdGUgdmFsaWRhdGlvbiAtIGFjY2VwdCBjb21tb24gZm9ybWF0c1xuICAgICAgLy8gSVNPODYwMSwgVVMgZm9ybWF0LCBFdXJvcGVhbiBmb3JtYXQsIHNpbXBsZSBkYXRlc1xuICAgICAgY29uc3QgZGF0ZVBhdHRlcm5zID0gW1xuICAgICAgICAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8sIC8vIFlZWVktTU0tRERcbiAgICAgICAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfS8sIC8vIElTTzg2MDEgd2l0aCB0aW1lXG4gICAgICAgIC9eXFxkezEsMn1cXC9cXGR7MSwyfVxcL1xcZHs0fSQvLCAvLyBNTS9ERC9ZWVlZIG9yIE0vRC9ZWVlZXG4gICAgICAgIC9eXFxkezEsMn0tXFxkezEsMn0tXFxkezR9JC8sIC8vIE1NLURELVlZWVkgb3IgTS1ELVlZWVlcbiAgICAgICAgL15cXGR7MSwyfVxcLlxcZHsxLDJ9XFwuXFxkezR9JC8sIC8vIERELk1NLllZWVkgKEV1cm9wZWFuKVxuICAgICAgICAvXihKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylcXHMrXFxkezEsMn0sP1xccytcXGR7NH0kL2kgLy8gTW9udGggREQsIFlZWVlcbiAgICAgIF07XG4gICAgICBcbiAgICAgIC8vIENoZWNrIGlmIGl0IG1hdGNoZXMgY29tbW9uIHBhdHRlcm5zIGZpcnN0XG4gICAgICBjb25zdCBtYXRjaGVzUGF0dGVybiA9IGRhdGVQYXR0ZXJucy5zb21lKHBhdHRlcm4gPT4gcGF0dGVybi50ZXN0KHYudHJpbSgpKSk7XG4gICAgICBpZiAoIW1hdGNoZXNQYXR0ZXJuKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBEYXRlLnBhcnNlIGZvciBvdGhlciBmb3JtYXRzLCBidXQgYmUgbW9yZSBsZW5pZW50XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IERhdGUucGFyc2Uodik7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VkKSAmJiBwYXJzZWQgPiAwOyAvLyBFbnN1cmUgaXQncyBhIHZhbGlkIHBvc2l0aXZlIHRpbWVzdGFtcFxuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHRyaWdnZXJzOiAodikgPT4gQXJyYXkuaXNBcnJheSh2KSAmJiB2LmV2ZXJ5KHQgPT4gdHlwZW9mIHQgPT09ICdzdHJpbmcnICYmIHQubGVuZ3RoIDw9IDUwKSxcbiAgICBjb250ZW50X2ZsYWdzOiAodikgPT4gQXJyYXkuaXNBcnJheSh2KSAmJiB2LmV2ZXJ5KGYgPT4gdHlwZW9mIGYgPT09ICdzdHJpbmcnICYmIGYubGVuZ3RoIDw9IDUwKVxuICB9O1xuXG4gIC8qKlxuICAgKiBQYXJzZSBhIE1hcmtkb3duIGZpbGUgd2l0aCBZQU1MIGZyb250bWF0dGVyIChTZWN1cmVseSlcbiAgICogXG4gICAqIEBwYXJhbSBpbnB1dCAtIFRoZSBmdWxsIGNvbnRlbnQgb2YgYSBNYXJrZG93biBmaWxlIHdpdGggWUFNTCBmcm9udG1hdHRlclxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnNpbmcgb3B0aW9ucyBmb3Igc2VjdXJpdHkgYW5kIHZhbGlkYXRpb25cbiAgICogQHJldHVybnMgUGFyc2VkQ29udGVudCB3aXRoIHNlcGFyYXRlZCBZQU1MIGRhdGEgYW5kIE1hcmtkb3duIGNvbnRlbnRcbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRm9yIGEgcGVyc29uYSBmaWxlOlxuICAgKiBjb25zdCBwZXJzb25hRmlsZSA9IGAtLS1cbiAgICogbmFtZTogQ3JlYXRpdmUgV3JpdGVyXG4gICAqIGRlc2NyaXB0aW9uOiBBIGNyZWF0aXZlIHdyaXRpbmcgYXNzaXN0YW50XG4gICAqIC0tLVxuICAgKiBZb3UgYXJlIGEgY3JlYXRpdmUgd3JpdGVyLi4uYDtcbiAgICogXG4gICAqIGNvbnN0IHJlc3VsdCA9IFNlY3VyZVlhbWxQYXJzZXIucGFyc2UocGVyc29uYUZpbGUpO1xuICAgKiAvLyByZXN1bHQuZGF0YSA9IHsgbmFtZTogJ0NyZWF0aXZlIFdyaXRlcicsIGRlc2NyaXB0aW9uOiAnLi4uJyB9XG4gICAqIC8vIHJlc3VsdC5jb250ZW50ID0gJ1lvdSBhcmUgYSBjcmVhdGl2ZSB3cml0ZXIuLi4nXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIHBhcnNlKGlucHV0OiBzdHJpbmcsIG9wdGlvbnM6IFNlY3VyZVBhcnNlT3B0aW9ucyA9IHt9KTogUGFyc2VkQ29udGVudCB7XG4gICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcblxuICAgIC8vIDEuIFNpemUgdmFsaWRhdGlvblxuICAgIGlmIChpbnB1dC5sZW5ndGggPiAob3B0cy5tYXhDb250ZW50U2l6ZSB8fCB0aGlzLkRFRkFVTFRfT1BUSU9OUy5tYXhDb250ZW50U2l6ZSEpKSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignQ29udGVudCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBzaXplJywgJ21lZGl1bScpO1xuICAgIH1cblxuICAgIC8vIDIuIEV4dHJhY3QgZnJvbnRtYXR0ZXIgYm91bmRhcmllc1xuICAgIGNvbnN0IGZyb250bWF0dGVyTWF0Y2ggPSBpbnB1dC5tYXRjaCgvXi0tLVxcbihbXFxzXFxTXSo/KVxcbi0tLS8pO1xuICAgIGlmICghZnJvbnRtYXR0ZXJNYXRjaCkge1xuICAgICAgLy8gTm8gZnJvbnRtYXR0ZXIsIHJldHVybiBlbXB0eSBkYXRhXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgY29udGVudDogaW5wdXRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgeWFtbENvbnRlbnQgPSBmcm9udG1hdHRlck1hdGNoWzFdO1xuICAgIGNvbnN0IG1hcmtkb3duQ29udGVudCA9IGlucHV0LnN1YnN0cmluZyhmcm9udG1hdHRlck1hdGNoWzBdLmxlbmd0aCk7XG5cbiAgICAvLyAzLiBWYWxpZGF0ZSBZQU1MIHNpemVcbiAgICBpZiAoeWFtbENvbnRlbnQubGVuZ3RoID4gKG9wdHMubWF4WWFtbFNpemUgfHwgdGhpcy5ERUZBVUxUX09QVElPTlMubWF4WWFtbFNpemUhKSkge1xuICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoJ1lBTUwgZnJvbnRtYXR0ZXIgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgc2l6ZScsICdtZWRpdW0nKTtcbiAgICB9XG5cbiAgICAvLyA0LiBQcmUtcGFyc2Ugc2VjdXJpdHkgdmFsaWRhdGlvblxuICAgIGlmICghQ29udGVudFZhbGlkYXRvci52YWxpZGF0ZVlhbWxDb250ZW50KHlhbWxDb250ZW50KSkge1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnWUFNTF9JTkpFQ1RJT05fQVRURU1QVCcsXG4gICAgICAgIHNldmVyaXR5OiAnQ1JJVElDQUwnLFxuICAgICAgICBzb3VyY2U6ICdzZWN1cmVfeWFtbF9wYXJzZXInLFxuICAgICAgICBkZXRhaWxzOiAnTWFsaWNpb3VzIFlBTUwgcGF0dGVybiBkZXRlY3RlZCBkdXJpbmcgcGFyc2luZydcbiAgICAgIH0pO1xuICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoJ01hbGljaW91cyBZQU1MIGNvbnRlbnQgZGV0ZWN0ZWQnLCAnY3JpdGljYWwnKTtcbiAgICB9XG5cbiAgICAvLyA1LiBQYXJzZSB3aXRoIHNhZmUgc2NoZW1hXG4gICAgbGV0IGRhdGE6IGFueTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IHlhbWwubG9hZCh5YW1sQ29udGVudCwge1xuICAgICAgICBzY2hlbWE6IHRoaXMuU0FGRV9TQ0hFTUEsXG4gICAgICAgIGpzb246IGZhbHNlLCAgLy8gRG9uJ3QgYWxsb3cgSlNPTi1zcGVjaWZpYyB0eXBlc1xuICAgICAgICBvbldhcm5pbmc6ICh3YXJuaW5nKSA9PiB7XG4gICAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogJ1lBTUxfUEFSU0lOR19XQVJOSU5HJyxcbiAgICAgICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ3NlY3VyZV95YW1sX3BhcnNlcicsXG4gICAgICAgICAgICBkZXRhaWxzOiBgWUFNTCB3YXJuaW5nOiAke3dhcm5pbmcubWVzc2FnZX1gXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcihgWUFNTCBwYXJzaW5nIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gLCAnaGlnaCcpO1xuICAgIH1cblxuICAgIC8vIDYuIEVuc3VyZSBkYXRhIGlzIGFuIG9iamVjdFxuICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgZGF0YSA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignWUFNTCBtdXN0IGNvbnRhaW4gYW4gb2JqZWN0IGF0IHJvb3QgbGV2ZWwnLCAnbWVkaXVtJyk7XG4gICAgfVxuXG4gICAgLy8gNy4gVmFsaWRhdGUgYWxsb3dlZCBrZXlzIGlmIHNwZWNpZmllZFxuICAgIGlmIChvcHRzLmFsbG93ZWRLZXlzKSB7XG4gICAgICBjb25zdCBpbnZhbGlkS2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpLmZpbHRlcihrZXkgPT4gIW9wdHMuYWxsb3dlZEtleXMhLmluY2x1ZGVzKGtleSkpO1xuICAgICAgaWYgKGludmFsaWRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoYEludmFsaWQgWUFNTCBrZXlzIGRldGVjdGVkOiAke2ludmFsaWRLZXlzLmpvaW4oJywgJyl9YCwgJ21lZGl1bScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDguIFZhbGlkYXRlIGZpZWxkIHR5cGVzIGFuZCBjb250ZW50XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGF0YSkpIHtcbiAgICAgIC8vIENoZWNrIGZpZWxkLXNwZWNpZmljIHZhbGlkYXRvcnMgb25seSBpZiBmaWVsZCB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcbiAgICAgIGlmIChvcHRzLnZhbGlkYXRlRmllbGRzICYmIHRoaXMuRklFTERfVkFMSURBVE9SU1trZXldICYmICF0aGlzLkZJRUxEX1ZBTElEQVRPUlNba2V5XSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoYEludmFsaWQgdmFsdWUgZm9yIGZpZWxkICcke2tleX0nYCwgJ21lZGl1bScpO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBzdHJpbmcgZmllbGRzIGZvciBpbmplY3Rpb24gcGF0dGVybnNcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIG9wdHMudmFsaWRhdGVDb250ZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUodmFsdWUpO1xuICAgICAgICBpZiAoIXZhbGlkYXRpb24uaXNWYWxpZCAmJiB2YWxpZGF0aW9uLnNldmVyaXR5ID09PSAnY3JpdGljYWwnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoYFNlY3VyaXR5IHRocmVhdCBkZXRlY3RlZCBpbiBmaWVsZCAnJHtrZXl9J2AsICdjcml0aWNhbCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlcGxhY2Ugd2l0aCBzYW5pdGl6ZWQgY29udGVudFxuICAgICAgICBkYXRhW2tleV0gPSB2YWxpZGF0aW9uLnNhbml0aXplZENvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gOS4gVmFsaWRhdGUgbWFya2Rvd24gY29udGVudCBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgZmluYWxDb250ZW50ID0gbWFya2Rvd25Db250ZW50O1xuICAgIGlmIChvcHRzLnZhbGlkYXRlQ29udGVudCkge1xuICAgICAgY29uc3QgY29udGVudFZhbGlkYXRpb24gPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUobWFya2Rvd25Db250ZW50KTtcbiAgICAgIGlmICghY29udGVudFZhbGlkYXRpb24uaXNWYWxpZCAmJiBjb250ZW50VmFsaWRhdGlvbi5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignU2VjdXJpdHkgdGhyZWF0IGRldGVjdGVkIGluIGNvbnRlbnQnLCAnY3JpdGljYWwnKTtcbiAgICAgIH1cbiAgICAgIGZpbmFsQ29udGVudCA9IGNvbnRlbnRWYWxpZGF0aW9uLnNhbml0aXplZENvbnRlbnQgfHwgbWFya2Rvd25Db250ZW50O1xuICAgIH1cblxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdZQU1MX1BBUlNFX1NVQ0NFU1MnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnc2VjdXJlX3lhbWxfcGFyc2VyJyxcbiAgICAgIGRldGFpbHM6IGBTdWNjZXNzZnVsbHkgcGFyc2VkIFlBTUwgd2l0aCAke09iamVjdC5rZXlzKGRhdGEpLmxlbmd0aH0gZmllbGRzYFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZW50OiBmaW5hbENvbnRlbnRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNlY3VyZSBncmF5LW1hdHRlciBjb21wYXRpYmxlIHBhcnNlclxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVNlY3VyZU1hdHRlclBhcnNlcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucGFyc2UoaW5wdXQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgIGNvbnRlbnQ6IHJlc3VsdC5jb250ZW50LFxuICAgICAgICAgIGV4Y2VycHQ6IHJlc3VsdC5leGNlcnB0LFxuICAgICAgICAgIG9yaWc6IGlucHV0XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgc3RyaW5naWZ5OiAoY29udGVudDogc3RyaW5nLCBkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgZGF0YSBiZWZvcmUgc3RyaW5naWZ5aW5nXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlTWV0YWRhdGEoZGF0YSk7XG4gICAgICAgIGlmICghdmFsaWRhdGlvbi5pc1ZhbGlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoJ0Nhbm5vdCBzdHJpbmdpZnkgY29udGVudCB3aXRoIHNlY3VyaXR5IHRocmVhdHMnLCAnaGlnaCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIHNhZmUgWUFNTCBkdW1wXG4gICAgICAgIGNvbnN0IHlhbWxTdHIgPSB5YW1sLmR1bXAoZGF0YSwge1xuICAgICAgICAgIHNjaGVtYTogdGhpcy5TQUZFX1NDSEVNQSxcbiAgICAgICAgICBza2lwSW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICBub1JlZnM6IHRydWUsXG4gICAgICAgICAgbm9Db21wYXRNb2RlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBgLS0tXFxuJHt5YW1sU3RyfS0tLVxcbiR7Y29udGVudH1gO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU2FmZSB3cmFwcGVyIGZvciBncmF5LW1hdHRlciB3aXRoIHNlY3VyaXR5IHZhbGlkYXRpb25zXG4gICAqL1xuICBzdGF0aWMgc2FmZU1hdHRlcihpbnB1dDogc3RyaW5nLCBvcHRpb25zPzogbWF0dGVyLkdyYXlNYXR0ZXJPcHRpb248c3RyaW5nLCBhbnk+KTogbWF0dGVyLkdyYXlNYXR0ZXJGaWxlPHN0cmluZz4ge1xuICAgIC8vIEZpcnN0LCB1c2Ugb3VyIHNlY3VyZSBwYXJzZXJcbiAgICBjb25zdCBzZWN1cmVQYXJzZWQgPSB0aGlzLnBhcnNlKGlucHV0KTtcblxuICAgIC8vIFRoZW4gdXNlIGdyYXktbWF0dGVyIHdpdGggY3VzdG9tIGVuZ2luZXNcbiAgICByZXR1cm4gbWF0dGVyKGlucHV0LCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZW5naW5lczoge1xuICAgICAgICB5YW1sOiB7XG4gICAgICAgICAgcGFyc2U6IChzdHI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gVXNlIG91ciBzZWN1cmUgWUFNTCBwYXJzaW5nXG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSB5YW1sLmxvYWQoc3RyLCB7XG4gICAgICAgICAgICAgIHNjaGVtYTogdGhpcy5TQUZFX1NDSEVNQSxcbiAgICAgICAgICAgICAganNvbjogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gRW5zdXJlIGl0J3MgYW4gb2JqZWN0XG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcgfHwgcGFyc2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJzZWQgYXMgb2JqZWN0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RyaW5naWZ5OiAob2JqOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB5YW1sLmR1bXAob2JqLCB7XG4gICAgICAgICAgICAgIHNjaGVtYTogdGhpcy5TQUZFX1NDSEVNQSxcbiAgICAgICAgICAgICAgc2tpcEludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgIG5vUmVmczogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlWWFtbFBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9zZWN1cmVZYW1sUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ0c7QUFFSCxPQUFPLEtBQUssSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWdCdkQsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixNQUFNLENBQVUsZUFBZSxHQUF1QjtRQUM1RCxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBTyxnQkFBZ0I7UUFDN0MsY0FBYyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUcsa0JBQWtCO1FBQ2hELGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGNBQWMsRUFBRSxJQUFJLENBQVMscUNBQXFDO0tBQ25FLENBQUM7SUFFRixtR0FBbUc7SUFDM0YsTUFBTSxDQUFVLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBRXZELG9EQUFvRDtJQUM1QyxNQUFNLENBQVUsZ0JBQWdCLEdBQTRDO1FBQ2xGLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRztRQUNyRCxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUc7UUFDNUQsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxP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QUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDbEQsT0FBTyxFQUFFLENBQUM7d0JBQ1osQ0FBQzt3QkFDRCxPQUFPLE1BQWdCLENBQUM7b0JBQzFCLENBQUM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7NEJBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVzs0QkFDeEIsV0FBVyxFQUFFLElBQUk7NEJBQ2pCLE1BQU0sRUFBRSxJQUFJO3lCQUNiLENBQUMsQ0FBQztvQkFDTCxDQUFDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZWN1cmUgWUFNTCBQYXJzZXIgZm9yIERvbGxob3VzZU1DUCAtIEZvciBNYXJrZG93biBGaWxlcyB3aXRoIFlBTUwgRnJvbnRtYXR0ZXJcbiAqIFxuICogSU1QT1JUQU5UOiBUaGlzIHBhcnNlciBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIE1hcmtkb3duIGZpbGVzIHdpdGggWUFNTCBmcm9udG1hdHRlclxuICogKHRoZSBmb3JtYXQgdXNlZCBieSBwZXJzb25hcywgc2tpbGxzLCB0ZW1wbGF0ZXMsIGFuZCBvdGhlciBlbGVtZW50cykuXG4gKiBcbiAqIFVTRSBUSElTIEZPUjpcbiAqIC0gUGVyc29uYSBmaWxlcyAoZS5nLiwgY3JlYXRpdmUtd3JpdGVyLm1kKVxuICogLSBTa2lsbCBmaWxlcyAoZS5nLiwgY29kZS1yZXZpZXcubWQpXG4gKiAtIFRlbXBsYXRlIGZpbGVzIChlLmcuLCBtZWV0aW5nLW5vdGVzLm1kKVxuICogLSBBbnkgTWFya2Rvd24gZmlsZSB3aXRoIFlBTUwgZnJvbnRtYXR0ZXIgYmV0d2VlbiAtLS0gbWFya2Vyc1xuICogXG4gKiBETyBOT1QgVVNFIFRISVMgRk9SOlxuICogLSBQdXJlIFlBTUwgY29uZmlndXJhdGlvbiBmaWxlcyAodXNlIGpzLXlhbWwgZGlyZWN0bHkgd2l0aCBGQUlMU0FGRV9TQ0hFTUEpXG4gKiAtIEpTT04gZmlsZXNcbiAqIC0gUGxhaW4gdGV4dCBmaWxlcyB3aXRob3V0IGZyb250bWF0dGVyXG4gKiBcbiAqIEZJTEUgRk9STUFUIEVYUEVDVEVEOlxuICogYGBgXG4gKiAtLS1cbiAqIG5hbWU6IEVsZW1lbnQgTmFtZVxuICogZGVzY3JpcHRpb246IEVsZW1lbnQgZGVzY3JpcHRpb25cbiAqIHZlcnNpb246IDEuMC4wXG4gKiAtLS1cbiAqIFxuICogIyBNYXJrZG93biBjb250ZW50IGhlcmVcbiAqIFRoZSBhY3R1YWwgY29udGVudC9pbnN0cnVjdGlvbnMgZ28gaGVyZS4uLlxuICogYGBgXG4gKiBcbiAqIFByb3ZpZGVzIHNhZmUgWUFNTCBwYXJzaW5nIHRoYXQgcHJldmVudHMgZGVzZXJpYWxpemF0aW9uIGF0dGFja3NcbiAqIGJ5IHVzaW5nIGEgcmVzdHJpY3RlZCBzY2hlbWEgYW5kIHByZS12YWxpZGF0aW9uLlxuICogXG4gKiBTZWN1cml0eTogU0VDLTAwMyAtIFlBTUwgcGFyc2luZyB2dWxuZXJhYmlsaXR5IHByb3RlY3Rpb25cbiAqL1xuXG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IG1hdHRlciBmcm9tICdncmF5LW1hdHRlcic7XG5pbXBvcnQgeyBTZWN1cml0eUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL1NlY3VyaXR5RXJyb3IuanMnO1xuaW1wb3J0IHsgQ29udGVudFZhbGlkYXRvciB9IGZyb20gJy4vY29udGVudFZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuL3NlY3VyaXR5TW9uaXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJlUGFyc2VPcHRpb25zIHtcbiAgbWF4WWFtbFNpemU/OiBudW1iZXI7XG4gIG1heENvbnRlbnRTaXplPzogbnVtYmVyO1xuICBhbGxvd2VkS2V5cz86IHN0cmluZ1tdO1xuICB2YWxpZGF0ZUNvbnRlbnQ/OiBib29sZWFuO1xuICB2YWxpZGF0ZUZpZWxkcz86IGJvb2xlYW47IC8vIFdoZXRoZXIgdG8gYXBwbHkgZmllbGQtc3BlY2lmaWMgdmFsaWRhdG9ycyAoZm9yIHBlcnNvbmEgbWV0YWRhdGEpXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkQ29udGVudCB7XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgZXhjZXJwdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyZVlhbWxQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX09QVElPTlM6IFNlY3VyZVBhcnNlT3B0aW9ucyA9IHtcbiAgICBtYXhZYW1sU2l6ZTogNjQgKiAxMDI0LCAgICAgIC8vIDY0S0IgZm9yIFlBTUxcbiAgICBtYXhDb250ZW50U2l6ZTogMTAyNCAqIDEwMjQsICAvLyAxTUIgZm9yIGNvbnRlbnRcbiAgICB2YWxpZGF0ZUNvbnRlbnQ6IHRydWUsXG4gICAgdmFsaWRhdGVGaWVsZHM6IHRydWUgICAgICAgICAvLyBCeSBkZWZhdWx0LCBhcHBseSBmaWVsZCB2YWxpZGF0b3JzXG4gIH07XG5cbiAgLy8gQWxsb3dlZCBZQU1MIHR5cGVzIC0gdXNpbmcgQ09SRV9TQ0hFTUEgKHNhZmUgc3Vic2V0IHdpdGggYmFzaWMgdHlwZXMgbGlrZSBib29sZWFucyBhbmQgaW50ZWdlcnMpXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNBRkVfU0NIRU1BID0geWFtbC5DT1JFX1NDSEVNQTtcblxuICAvLyBBZGRpdGlvbmFsIHZhbGlkYXRpb24gZm9yIHNwZWNpZmljIHBlcnNvbmEgZmllbGRzXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1ZBTElEQVRPUlM6IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogYW55KSA9PiBib29sZWFuPiA9IHtcbiAgICBuYW1lOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYubGVuZ3RoIDw9IDEwMCxcbiAgICBkZXNjcmlwdGlvbjogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA8PSA1MDAsXG4gICAgYXV0aG9yOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYubGVuZ3RoIDw9IDEwMCxcbiAgICB2ZXJzaW9uOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIC9eXFxkK1xcLlxcZCsoXFwuXFxkKyk/KC1bYS16QS1aMC05Li1dKyk/JC8udGVzdCh2KSxcbiAgICBjYXRlZ29yeTogKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2Lmxlbmd0aCA8PSA1MCxcbiAgICBhZ2VfcmF0aW5nOiAodikgPT4gWydhbGwnLCAnMTMrJywgJzE4KyddLmluY2x1ZGVzKHYpLFxuICAgIHByaWNlOiAodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmICh2ID09PSAnZnJlZScgfHwgL15cXCRcXGQrXFwuXFxkezJ9JC8udGVzdCh2KSksXG4gICAgYWlfZ2VuZXJhdGVkOiAodikgPT4gdHlwZW9mIHYgPT09ICdib29sZWFuJyB8fCB2ID09PSAndHJ1ZScgfHwgdiA9PT0gJ2ZhbHNlJyxcbiAgICBnZW5lcmF0aW9uX21ldGhvZDogKHYpID0+IFsnaHVtYW4nLCAnQ2hhdEdQVCcsICdDbGF1ZGUnLCAnaHlicmlkJ10uaW5jbHVkZXModiksXG4gICAgY3JlYXRlZF9kYXRlOiAodikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuICAgICAgXG4gICAgICAvLyBNb3JlIGZsZXhpYmxlIGRhdGUgdmFsaWRhdGlvbiAtIGFjY2VwdCBjb21tb24gZm9ybWF0c1xuICAgICAgLy8gSVNPODYwMSwgVVMgZm9ybWF0LCBFdXJvcGVhbiBmb3JtYXQsIHNpbXBsZSBkYXRlc1xuICAgICAgY29uc3QgZGF0ZVBhdHRlcm5zID0gW1xuICAgICAgICAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8sIC8vIFlZWVktTU0tRERcbiAgICAgICAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfS8sIC8vIElTTzg2MDEgd2l0aCB0aW1lXG4gICAgICAgIC9eXFxkezEsMn1cXC9cXGR7MSwyfVxcL1xcZHs0fSQvLCAvLyBNTS9ERC9ZWVlZIG9yIE0vRC9ZWVlZXG4gICAgICAgIC9eXFxkezEsMn0tXFxkezEsMn0tXFxkezR9JC8sIC8vIE1NLURELVlZWVkgb3IgTS1ELVlZWVlcbiAgICAgICAgL15cXGR7MSwyfVxcLlxcZHsxLDJ9XFwuXFxkezR9JC8sIC8vIERELk1NLllZWVkgKEV1cm9wZWFuKVxuICAgICAgICAvXihKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylcXHMrXFxkezEsMn0sP1xccytcXGR7NH0kL2kgLy8gTW9udGggREQsIFlZWVlcbiAgICAgIF07XG4gICAgICBcbiAgICAgIC8vIENoZWNrIGlmIGl0IG1hdGNoZXMgY29tbW9uIHBhdHRlcm5zIGZpcnN0XG4gICAgICBjb25zdCBtYXRjaGVzUGF0dGVybiA9IGRhdGVQYXR0ZXJucy5zb21lKHBhdHRlcm4gPT4gcGF0dGVybi50ZXN0KHYudHJpbSgpKSk7XG4gICAgICBpZiAoIW1hdGNoZXNQYXR0ZXJuKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBEYXRlLnBhcnNlIGZvciBvdGhlciBmb3JtYXRzLCBidXQgYmUgbW9yZSBsZW5pZW50XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IERhdGUucGFyc2Uodik7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VkKSAmJiBwYXJzZWQgPiAwOyAvLyBFbnN1cmUgaXQncyBhIHZhbGlkIHBvc2l0aXZlIHRpbWVzdGFtcFxuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHRyaWdnZXJzOiAodikgPT4gQXJyYXkuaXNBcnJheSh2KSAmJiB2LmV2ZXJ5KHQgPT4gdHlwZW9mIHQgPT09ICdzdHJpbmcnICYmIHQubGVuZ3RoIDw9IDUwKSxcbiAgICBjb250ZW50X2ZsYWdzOiAodikgPT4gQXJyYXkuaXNBcnJheSh2KSAmJiB2LmV2ZXJ5KGYgPT4gdHlwZW9mIGYgPT09ICdzdHJpbmcnICYmIGYubGVuZ3RoIDw9IDUwKVxuICB9O1xuXG4gIC8qKlxuICAgKiBQYXJzZSBhIE1hcmtkb3duIGZpbGUgd2l0aCBZQU1MIGZyb250bWF0dGVyIChTZWN1cmVseSlcbiAgICogXG4gICAqIEBwYXJhbSBpbnB1dCAtIFRoZSBmdWxsIGNvbnRlbnQgb2YgYSBNYXJrZG93biBmaWxlIHdpdGggWUFNTCBmcm9udG1hdHRlclxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnNpbmcgb3B0aW9ucyBmb3Igc2VjdXJpdHkgYW5kIHZhbGlkYXRpb25cbiAgICogQHJldHVybnMgUGFyc2VkQ29udGVudCB3aXRoIHNlcGFyYXRlZCBZQU1MIGRhdGEgYW5kIE1hcmtkb3duIGNvbnRlbnRcbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRm9yIGEgcGVyc29uYSBmaWxlOlxuICAgKiBjb25zdCBwZXJzb25hRmlsZSA9IGAtLS1cbiAgICogbmFtZTogQ3JlYXRpdmUgV3JpdGVyXG4gICAqIGRlc2NyaXB0aW9uOiBBIGNyZWF0aXZlIHdyaXRpbmcgYXNzaXN0YW50XG4gICAqIC0tLVxuICAgKiBZb3UgYXJlIGEgY3JlYXRpdmUgd3JpdGVyLi4uYDtcbiAgICogXG4gICAqIGNvbnN0IHJlc3VsdCA9IFNlY3VyZVlhbWxQYXJzZXIucGFyc2UocGVyc29uYUZpbGUpO1xuICAgKiAvLyByZXN1bHQuZGF0YSA9IHsgbmFtZTogJ0NyZWF0aXZlIFdyaXRlcicsIGRlc2NyaXB0aW9uOiAnLi4uJyB9XG4gICAqIC8vIHJlc3VsdC5jb250ZW50ID0gJ1lvdSBhcmUgYSBjcmVhdGl2ZSB3cml0ZXIuLi4nXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIHBhcnNlKGlucHV0OiBzdHJpbmcsIG9wdGlvbnM6IFNlY3VyZVBhcnNlT3B0aW9ucyA9IHt9KTogUGFyc2VkQ29udGVudCB7XG4gICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcblxuICAgIC8vIDEuIFNpemUgdmFsaWRhdGlvblxuICAgIGlmIChpbnB1dC5sZW5ndGggPiAob3B0cy5tYXhDb250ZW50U2l6ZSB8fCB0aGlzLkRFRkFVTFRfT1BUSU9OUy5tYXhDb250ZW50U2l6ZSEpKSB7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignQ29udGVudCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBzaXplJywgJ21lZGl1bScpO1xuICAgIH1cblxuICAgIC8vIDIuIEV4dHJhY3QgZnJvbnRtYXR0ZXIgYm91bmRhcmllc1xuICAgIGNvbnN0IGZyb250bWF0dGVyTWF0Y2ggPSBpbnB1dC5tYXRjaCgvXi0tLVxcbihbXFxzXFxTXSo/KVxcbi0tLS8pO1xuICAgIGlmICghZnJvbnRtYXR0ZXJNYXRjaCkge1xuICAgICAgLy8gTm8gZnJvbnRtYXR0ZXIsIHJldHVybiBlbXB0eSBkYXRhXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgY29udGVudDogaW5wdXRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgeWFtbENvbnRlbnQgPSBmcm9udG1hdHRlck1hdGNoWzFdO1xuICAgIGNvbnN0IG1hcmtkb3duQ29udGVudCA9IGlucHV0LnN1YnN0cmluZyhmcm9udG1hdHRlck1hdGNoWzBdLmxlbmd0aCk7XG5cbiAgICAvLyAzLiBWYWxpZGF0ZSBZQU1MIHNpemVcbiAgICBpZiAoeWFtbENvbnRlbnQubGVuZ3RoID4gKG9wdHMubWF4WWFtbFNpemUgfHwgdGhpcy5ERUZBVUxUX09QVElPTlMubWF4WWFtbFNpemUhKSkge1xuICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXJyb3IoJ1lBTUwgZnJvbnRtYXR0ZXIgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgc2l6ZScsICdtZWRpdW0nKTtcbiAgICB9XG5cbiAgICAvLyA0LiBQcmUtcGFyc2Ugc2VjdXJpdHkgdmFsaWRhdGlvblxuICAgIC8vIEZJWCAoSXNzdWUgIzEyMTEpOiBPbmx5IHZhbGlkYXRlIGNvbnRlbnQgaWYgdmFsaWRhdGVDb250ZW50IG9wdGlvbiBpcyB0cnVlXG4gICAgaWYgKG9wdHMudmFsaWRhdGVDb250ZW50ICYmICFDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlWWFtbENvbnRlbnQoeWFtbENvbnRlbnQpKSB7XG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdZQU1MX0lOSkVDVElPTl9BVFRFTVBUJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdDUklUSUNBTCcsXG4gICAgICAgIHNvdXJjZTogJ3NlY3VyZV95YW1sX3BhcnNlcicsXG4gICAgICAgIGRldGFpbHM6ICdNYWxpY2lvdXMgWUFNTCBwYXR0ZXJuIGRldGVjdGVkIGR1cmluZyBwYXJzaW5nJ1xuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignTWFsaWNpb3VzIFlBTUwgY29udGVudCBkZXRlY3RlZCcsICdjcml0aWNhbCcpO1xuICAgIH1cblxuICAgIC8vIDUuIFBhcnNlIHdpdGggc2FmZSBzY2hlbWFcbiAgICBsZXQgZGF0YTogYW55O1xuICAgIHRyeSB7XG4gICAgICBkYXRhID0geWFtbC5sb2FkKHlhbWxDb250ZW50LCB7XG4gICAgICAgIHNjaGVtYTogdGhpcy5TQUZFX1NDSEVNQSxcbiAgICAgICAganNvbjogZmFsc2UsICAvLyBEb24ndCBhbGxvdyBKU09OLXNwZWNpZmljIHR5cGVzXG4gICAgICAgIG9uV2FybmluZzogKHdhcm5pbmcpID0+IHtcbiAgICAgICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiAnWUFNTF9QQVJTSU5HX1dBUk5JTkcnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgICAgICAgc291cmNlOiAnc2VjdXJlX3lhbWxfcGFyc2VyJyxcbiAgICAgICAgICAgIGRldGFpbHM6IGBZQU1MIHdhcm5pbmc6ICR7d2FybmluZy5tZXNzYWdlfWBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUVycm9yKGBZQU1MIHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWAsICdoaWdoJyk7XG4gICAgfVxuXG4gICAgLy8gNi4gRW5zdXJlIGRhdGEgaXMgYW4gb2JqZWN0XG4gICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fCBkYXRhID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBTZWN1cml0eUVycm9yKCdZQU1MIG11c3QgY29udGFpbiBhbiBvYmplY3QgYXQgcm9vdCBsZXZlbCcsICdtZWRpdW0nKTtcbiAgICB9XG5cbiAgICAvLyA3LiBWYWxpZGF0ZSBhbGxvd2VkIGtleXMgaWYgc3BlY2lmaWVkXG4gICAgaWYgKG9wdHMuYWxsb3dlZEtleXMpIHtcbiAgICAgIGNvbnN0IGludmFsaWRLZXlzID0gT2JqZWN0LmtleXMoZGF0YSkuZmlsdGVyKGtleSA9PiAhb3B0cy5hbGxvd2VkS2V5cyEuaW5jbHVkZXMoa2V5KSk7XG4gICAgICBpZiAoaW52YWxpZEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcihgSW52YWxpZCBZQU1MIGtleXMgZGV0ZWN0ZWQ6ICR7aW52YWxpZEtleXMuam9pbignLCAnKX1gLCAnbWVkaXVtJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gOC4gVmFsaWRhdGUgZmllbGQgdHlwZXMgYW5kIGNvbnRlbnRcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhKSkge1xuICAgICAgLy8gQ2hlY2sgZmllbGQtc3BlY2lmaWMgdmFsaWRhdG9ycyBvbmx5IGlmIGZpZWxkIHZhbGlkYXRpb24gaXMgZW5hYmxlZFxuICAgICAgaWYgKG9wdHMudmFsaWRhdGVGaWVsZHMgJiYgdGhpcy5GSUVMRF9WQUxJREFUT1JTW2tleV0gJiYgIXRoaXMuRklFTERfVkFMSURBVE9SU1trZXldKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcihgSW52YWxpZCB2YWx1ZSBmb3IgZmllbGQgJyR7a2V5fSdgLCAnbWVkaXVtJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHN0cmluZyBmaWVsZHMgZm9yIGluamVjdGlvbiBwYXR0ZXJuc1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgb3B0cy52YWxpZGF0ZUNvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IENvbnRlbnRWYWxpZGF0b3IudmFsaWRhdGVBbmRTYW5pdGl6ZSh2YWx1ZSk7XG4gICAgICAgIGlmICghdmFsaWRhdGlvbi5pc1ZhbGlkICYmIHZhbGlkYXRpb24uc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcihgU2VjdXJpdHkgdGhyZWF0IGRldGVjdGVkIGluIGZpZWxkICcke2tleX0nYCwgJ2NyaXRpY2FsJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVwbGFjZSB3aXRoIHNhbml0aXplZCBjb250ZW50XG4gICAgICAgIGRhdGFba2V5XSA9IHZhbGlkYXRpb24uc2FuaXRpemVkQ29udGVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA5LiBWYWxpZGF0ZSBtYXJrZG93biBjb250ZW50IGlmIHJlcXVlc3RlZFxuICAgIGxldCBmaW5hbENvbnRlbnQgPSBtYXJrZG93bkNvbnRlbnQ7XG4gICAgaWYgKG9wdHMudmFsaWRhdGVDb250ZW50KSB7XG4gICAgICBjb25zdCBjb250ZW50VmFsaWRhdGlvbiA9IENvbnRlbnRWYWxpZGF0b3IudmFsaWRhdGVBbmRTYW5pdGl6ZShtYXJrZG93bkNvbnRlbnQpO1xuICAgICAgaWYgKCFjb250ZW50VmFsaWRhdGlvbi5pc1ZhbGlkICYmIGNvbnRlbnRWYWxpZGF0aW9uLnNldmVyaXR5ID09PSAnY3JpdGljYWwnKSB7XG4gICAgICAgIHRocm93IG5ldyBTZWN1cml0eUVycm9yKCdTZWN1cml0eSB0aHJlYXQgZGV0ZWN0ZWQgaW4gY29udGVudCcsICdjcml0aWNhbCcpO1xuICAgICAgfVxuICAgICAgZmluYWxDb250ZW50ID0gY29udGVudFZhbGlkYXRpb24uc2FuaXRpemVkQ29udGVudCB8fCBtYXJrZG93bkNvbnRlbnQ7XG4gICAgfVxuXG4gICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgdHlwZTogJ1lBTUxfUEFSU0VfU1VDQ0VTUycsXG4gICAgICBzZXZlcml0eTogJ0xPVycsXG4gICAgICBzb3VyY2U6ICdzZWN1cmVfeWFtbF9wYXJzZXInLFxuICAgICAgZGV0YWlsczogYFN1Y2Nlc3NmdWxseSBwYXJzZWQgWUFNTCB3aXRoICR7T2JqZWN0LmtleXMoZGF0YSkubGVuZ3RofSBmaWVsZHNgXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGNvbnRlbnQ6IGZpbmFsQ29udGVudFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2VjdXJlIGdyYXktbWF0dGVyIGNvbXBhdGlibGUgcGFyc2VyXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlU2VjdXJlTWF0dGVyUGFyc2VyKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wYXJzZShpbnB1dCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogcmVzdWx0LmRhdGEsXG4gICAgICAgICAgY29udGVudDogcmVzdWx0LmNvbnRlbnQsXG4gICAgICAgICAgZXhjZXJwdDogcmVzdWx0LmV4Y2VycHQsXG4gICAgICAgICAgb3JpZzogaW5wdXRcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBzdHJpbmdpZnk6IChjb250ZW50OiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAvLyBWYWxpZGF0ZSBkYXRhIGJlZm9yZSBzdHJpbmdpZnlpbmdcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IENvbnRlbnRWYWxpZGF0b3IudmFsaWRhdGVNZXRhZGF0YShkYXRhKTtcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uLmlzVmFsaWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFcnJvcignQ2Fubm90IHN0cmluZ2lmeSBjb250ZW50IHdpdGggc2VjdXJpdHkgdGhyZWF0cycsICdoaWdoJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2Ugc2FmZSBZQU1MIGR1bXBcbiAgICAgICAgY29uc3QgeWFtbFN0ciA9IHlhbWwuZHVtcChkYXRhLCB7XG4gICAgICAgICAgc2NoZW1hOiB0aGlzLlNBRkVfU0NIRU1BLFxuICAgICAgICAgIHNraXBJbnZhbGlkOiB0cnVlLFxuICAgICAgICAgIG5vUmVmczogdHJ1ZSxcbiAgICAgICAgICBub0NvbXBhdE1vZGU6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGAtLS1cXG4ke3lhbWxTdHJ9LS0tXFxuJHtjb250ZW50fWA7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYWZlIHdyYXBwZXIgZm9yIGdyYXktbWF0dGVyIHdpdGggc2VjdXJpdHkgdmFsaWRhdGlvbnNcbiAgICovXG4gIHN0YXRpYyBzYWZlTWF0dGVyKGlucHV0OiBzdHJpbmcsIG9wdGlvbnM/OiBtYXR0ZXIuR3JheU1hdHRlck9wdGlvbjxzdHJpbmcsIGFueT4pOiBtYXR0ZXIuR3JheU1hdHRlckZpbGU8c3RyaW5nPiB7XG4gICAgLy8gRmlyc3QsIHVzZSBvdXIgc2VjdXJlIHBhcnNlclxuICAgIGNvbnN0IHNlY3VyZVBhcnNlZCA9IHRoaXMucGFyc2UoaW5wdXQpO1xuXG4gICAgLy8gVGhlbiB1c2UgZ3JheS1tYXR0ZXIgd2l0aCBjdXN0b20gZW5naW5lc1xuICAgIHJldHVybiBtYXR0ZXIoaW5wdXQsIHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBlbmdpbmVzOiB7XG4gICAgICAgIHlhbWw6IHtcbiAgICAgICAgICBwYXJzZTogKHN0cjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAvLyBVc2Ugb3VyIHNlY3VyZSBZQU1MIHBhcnNpbmdcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHlhbWwubG9hZChzdHIsIHtcbiAgICAgICAgICAgICAgc2NoZW1hOiB0aGlzLlNBRkVfU0NIRU1BLFxuICAgICAgICAgICAgICBqc29uOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBFbnN1cmUgaXQncyBhbiBvYmplY3RcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JyB8fCBwYXJzZWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlZCBhcyBvYmplY3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJpbmdpZnk6IChvYmo6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHlhbWwuZHVtcChvYmosIHtcbiAgICAgICAgICAgICAgc2NoZW1hOiB0aGlzLlNBRkVfU0NIRU1BLFxuICAgICAgICAgICAgICBza2lwSW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgbm9SZWZzOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufSJdfQ==
|
|
@@ -120,6 +120,7 @@ export declare class ElementFormatter {
|
|
|
120
120
|
private unescapeEntryContent;
|
|
121
121
|
/**
|
|
122
122
|
* Ensure memory has proper structure
|
|
123
|
+
* FIX (Issue #1211): Derive name from filename instead of auto-generated entry ID
|
|
123
124
|
*/
|
|
124
125
|
private ensureMemoryStructure;
|
|
125
126
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/ElementFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;gBAEhD,OAAO,GAAE,uBAA4B;IAYjD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA0C5D;;OAEG;YACW,gBAAgB;IAU9B;;OAEG;YACW,oBAAoB;IAclC;;OAEG;YACW,aAAa;IAU3B;;OAEG;YACW,wBAAwB;
|
|
1
|
+
{"version":3,"file":"ElementFormatter.d.ts","sourceRoot":"","sources":["../../src/utils/ElementFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;gBAEhD,OAAO,GAAE,uBAA4B;IAYjD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA0C5D;;OAEG;YACW,gBAAgB;IAU9B;;OAEG;YACW,oBAAoB;IAclC;;OAEG;YACW,aAAa;IAU3B;;OAEG;YACW,wBAAwB;IAiCtC;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;;OAIG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,gBAAgB,SAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAexF;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAmBnG;;OAEG;YACW,qBAAqB;IAqCnC;;OAEG;YACW,uBAAuB;IAkBrC;;;OAGG;YACW,YAAY;IAqB1B;;OAEG;YACW,kBAAkB;IAUhC;;OAEG;YACW,oBAAoB;IAgBlC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAsBpB;;OAEG;YACW,qBAAqB;IAiDnC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAmE/B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAsCtB"}
|