@dollhousemcp/mcp-server 1.9.13 → 1.9.15
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 +48 -0
- package/README.github.md +54 -0
- package/README.md.backup +1241 -49
- package/dist/cache/CollectionCache.js +2 -2
- package/dist/collection/CollectionIndexManager.js +3 -3
- package/dist/config/ConfigWizard.js +3 -3
- package/dist/config/indicator-config.js +2 -2
- package/dist/config/portfolio-constants.js +12 -12
- package/dist/elements/BaseElement.js +7 -7
- package/dist/elements/FeedbackProcessor.d.ts +7 -0
- package/dist/elements/FeedbackProcessor.d.ts.map +1 -1
- package/dist/elements/FeedbackProcessor.js +67 -14
- package/dist/elements/agents/AgentManager.js +6 -6
- package/dist/elements/memories/Memory.js +4 -4
- package/dist/elements/memories/MemoryManager.js +3 -3
- package/dist/elements/memories/utils.js +3 -3
- package/dist/elements/skills/Skill.js +2 -2
- package/dist/elements/skills/SkillManager.js +2 -2
- package/dist/elements/templates/Template.d.ts.map +1 -1
- package/dist/elements/templates/Template.js +38 -14
- package/dist/elements/templates/TemplateManager.js +2 -2
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/ConfigHandler.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -16
- package/dist/persona/PersonaElementManager.js +3 -3
- package/dist/persona/PersonaManager.js +2 -2
- package/dist/persona/export-import/PersonaImporter.js +3 -3
- package/dist/portfolio/DefaultElementProvider.d.ts +12 -0
- package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
- package/dist/portfolio/DefaultElementProvider.js +23 -6
- package/dist/portfolio/GitHubPortfolioIndexer.js +2 -2
- package/dist/portfolio/MigrationManager.js +2 -2
- package/dist/portfolio/NLPScoringManager.js +2 -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/portfolio/PortfolioRepoManager.js +2 -2
- package/dist/portfolio/PortfolioSyncManager.js +5 -5
- package/dist/portfolio/RelationshipManager.js +4 -4
- package/dist/portfolio/UnifiedIndexManager.js +4 -4
- package/dist/portfolio/types/RelationshipTypes.js +2 -2
- package/dist/security/InputValidator.d.ts +12 -0
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +38 -18
- package/dist/security/audit/config/suppressions.js +10 -10
- package/dist/security/commandValidator.js +2 -2
- package/dist/security/dosProtection.d.ts +123 -0
- package/dist/security/dosProtection.d.ts.map +1 -0
- package/dist/security/dosProtection.js +392 -0
- package/dist/security/pathValidator.js +2 -2
- package/dist/security/secureYamlParser.d.ts.map +1 -1
- package/dist/security/secureYamlParser.js +4 -3
- package/dist/security/tokenManager.js +10 -10
- package/dist/security/validators/unicodeValidator.js +2 -2
- package/dist/security/yamlValidator.js +3 -3
- package/dist/sync/PortfolioDownloader.js +2 -2
- package/dist/sync/PortfolioSyncComparer.js +2 -2
- package/dist/tools/portfolio/PortfolioElementAdapter.js +3 -3
- package/dist/tools/portfolio/submitToPortfolioTool.js +14 -14
- package/dist/utils/EarlyTerminationSearch.d.ts +1 -1
- package/dist/utils/EarlyTerminationSearch.d.ts.map +1 -1
- package/dist/utils/EarlyTerminationSearch.js +3 -3
- 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/dist/utils/GitHubRateLimiter.d.ts +6 -0
- package/dist/utils/GitHubRateLimiter.d.ts.map +1 -1
- package/dist/utils/GitHubRateLimiter.js +20 -5
- package/dist/utils/RateLimiter.js +2 -2
- package/dist/utils/SecureDownloader.js +2 -2
- package/dist/utils/fileOperations.d.ts +6 -1
- package/dist/utils/fileOperations.d.ts.map +1 -1
- package/dist/utils/fileOperations.js +29 -5
- package/dist/utils/filesystem.js +6 -6
- package/dist/utils/searchUtils.js +2 -2
- package/dist/utils/version.js +3 -3
- package/package.json +1 -1
|
@@ -148,8 +148,8 @@ export class YamlValidator {
|
|
|
148
148
|
}
|
|
149
149
|
// Remove null bytes and normalize whitespace
|
|
150
150
|
sanitized = sanitized
|
|
151
|
-
.
|
|
152
|
-
.
|
|
151
|
+
.replaceAll(/\u0000/g, '') // NOSONAR - Remove null bytes for security
|
|
152
|
+
.replaceAll(/[\r\n]+/g, ' ') // Replace newlines with spaces
|
|
153
153
|
.trim();
|
|
154
154
|
return sanitized;
|
|
155
155
|
}
|
|
@@ -161,4 +161,4 @@ export class YamlValidator {
|
|
|
161
161
|
this.purify = null;
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS95YW1sVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN4QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDckMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDeEQsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLEVB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RixDQUFDLENBQUM7UUFFSCwyREFBMkQ7UUFDM0Qsa0RBQWtEO1FBQ2xELE1BQU0sd0JBQXdCLEdBQUc7WUFDL0IsaUJBQWlCLEVBQVksdUJBQXVCO1lBQ3BELHFCQUFxQixFQUFRLHVCQUF1QjtZQUNwRCxxQkFBcUIsRUFBUSxxQkFBcUI7WUFDbEQsb0JBQW9CLEVBQVMsY0FBYztZQUMzQyxvQkFBb0IsRUFBUyxrQkFBa0I7WUFDL0MsZUFBZSxDQUFjLGdCQUFnQjtTQUM5QyxDQUFDO1FBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQy9DLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLFNBQVMsR0FBRyxTQUFTO2FBQ2xCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQVUsMkNBQTJDO2FBQzNFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQU0sK0JBQStCO2FBQzdELElBQUksRUFBRSxDQUFDO1FBRVYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0IHsgSlNET00gfSBmcm9tICdqc2RvbSc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4vcmVnZXhWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU0VDVVJJVFlfTElNSVRTIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG5jb25zdCBQZXJzb25hTWV0YWRhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCgxMDApLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5taW4oMSkubWF4KDEwMDApLFxuICB1bmlxdWVfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYXV0aG9yOiB6LnN0cmluZygpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgdHJpZ2dlcnM6IHouYXJyYXkoei5zdHJpbmcoKS5tYXgoNTApKS5tYXgoMjApLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkucmVnZXgoL15cXGQrXFwuXFxkK1xcLlxcZCskLykub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouZW51bShbJ2NyZWF0aXZlJywgJ3Byb2Zlc3Npb25hbCcsICdlZHVjYXRpb25hbCcsICdnYW1pbmcnLCAncGVyc29uYWwnXSkub3B0aW9uYWwoKSxcbiAgYWdlX3JhdGluZzogei5lbnVtKFsnYWxsJywgJzEzKycsICcxOCsnXSkub3B0aW9uYWwoKSxcbiAgY29udGVudF9mbGFnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBhaV9nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGdlbmVyYXRpb25fbWV0aG9kOiB6LnN0cmluZygpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgcHJpY2U6IHouc3RyaW5nKCkubWF4KDIwKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm1heCgxMDApLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfZGF0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcblxuLy8gVHlwZSBkZWNsYXJhdGlvbnMgZm9yIGJldHRlciB0eXBlIHNhZmV0eVxudHlwZSBET01QdXJpZnlJbnN0YW5jZSA9IFJldHVyblR5cGU8dHlwZW9mIERPTVB1cmlmeT47XG5cbmV4cG9ydCBjbGFzcyBZYW1sVmFsaWRhdG9yIHtcbiAgLy8gWUFNTCBib21iIGRldGVjdGlvbiBsaW1pdHMgLSBleHRyYWN0ZWQgZnJvbSBJc3N1ZSAjMTY0IHJldmlldyBmZWVkYmFja1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBZQU1MX0JPTUJfTElNSVRTID0ge1xuICAgIE1BWF9BTkNIT1JTOiAxMCwgICAgICAgIC8vIE1heGltdW0gYWxsb3dlZCBhbmNob3IgZGVmaW5pdGlvbnMgKCZuYW1lKVxuICAgIE1BWF9BTElBU0VTOiAyMCwgICAgICAgIC8vIE1heGltdW0gYWxsb3dlZCBhbGlhcyByZWZlcmVuY2VzICgqbmFtZSlcbiAgICBNQVhfTUVSR0VfS0VZUzogNSwgICAgICAvLyBNYXhpbXVtIGFsbG93ZWQgbWVyZ2Uga2V5IG9wZXJhdGlvbnMgKDw8OilcbiAgICBNQVhfRE9DVU1FTlRTOiAzICAgICAgICAvLyBNYXhpbXVtIGFsbG93ZWQgZG9jdW1lbnRzIGluIGEgc2luZ2xlIFlBTUxcbiAgfTtcblxuICAvLyBTdGF0aWMgY2FjaGUgZm9yIERPTVB1cmlmeSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG4gIHByaXZhdGUgc3RhdGljIHB1cmlmeVdpbmRvdzogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgcHVyaWZ5OiBET01QdXJpZnlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuXG4gIHN0YXRpYyBwYXJzZVBlcnNvbmFNZXRhZGF0YVNhZmVseSh5YW1sQ29udGVudDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIXlhbWxDb250ZW50IHx8IHR5cGVvZiB5YW1sQ29udGVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWUFNTCBjb250ZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFNpemUgY2hlY2tcbiAgICBpZiAoeWFtbENvbnRlbnQubGVuZ3RoID4gU0VDVVJJVFlfTElNSVRTLk1BWF9ZQU1MX0xFTkdUSCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZQU1MIGNvbnRlbnQgdG9vIGxhcmdlOiAke3lhbWxDb250ZW50Lmxlbmd0aH0gYnl0ZXMgKG1heDogJHtTRUNVUklUWV9MSU1JVFMuTUFYX1lBTUxfTEVOR1RIfSlgKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIGRhbmdlcm91cyB0YWdzIC0gZXhwYW5kZWQgZnJvbSBJc3N1ZSAjMTY0XG4gICAgY29uc3QgZGFuZ2Vyb3VzVGFncyA9IFtcbiAgICAgICchIWpzLycsICchIXB5dGhvbi8nLCAnISFydWJ5LycsICchIXBlcmwvJywgJyEhcGhwLycsXG4gICAgICAnISFqYXZhJywgJyEhamF2YXgnLCAnISFjb20uc3VuJyxcbiAgICAgICchIWV4ZWMnLCAnISFldmFsJywgJyEhbmV3JywgJyEhY29uc3RydWN0JywgJyEhYXBwbHknLFxuICAgICAgJyEhY2FsbCcsICchIWludm9rZScsICchIWJpbmFyeScsICchIW1lcmdlJ1xuICAgIF07XG4gICAgXG4gICAgZm9yIChjb25zdCB0YWcgb2YgZGFuZ2Vyb3VzVGFncykge1xuICAgICAgaWYgKHlhbWxDb250ZW50LmluY2x1ZGVzKHRhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYW5nZXJvdXMgWUFNTCB0YWcgZGV0ZWN0ZWQ6ICR7dGFnfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBFbmhhbmNlZCBZQU1MIGJvbWIgcHJvdGVjdGlvbiAtIElzc3VlICMxNjRcbiAgICBjb25zdCBhbmNob3JDb3VudCA9ICh5YW1sQ29udGVudC5tYXRjaCgvJlxcdysvZykgfHwgW10pLmxlbmd0aDtcbiAgICBjb25zdCBhbGlhc0NvdW50ID0gKHlhbWxDb250ZW50Lm1hdGNoKC9cXCpcXHcrL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgY29uc3QgbWVyZ2VLZXlDb3VudCA9ICh5YW1sQ29udGVudC5tYXRjaCgvPDw6L2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgY29uc3QgZG9jdW1lbnRDb3VudCA9ICh5YW1sQ29udGVudC5tYXRjaCgvXi0tLS9nbSkgfHwgW10pLmxlbmd0aDtcbiAgICBcbiAgICBpZiAoYW5jaG9yQ291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX0FOQ0hPUlMgfHwgXG4gICAgICAgIGFsaWFzQ291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX0FMSUFTRVMgfHwgXG4gICAgICAgIG1lcmdlS2V5Q291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX01FUkdFX0tFWVMgfHwgXG4gICAgICAgIGRvY3VtZW50Q291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX0RPQ1VNRU5UUykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb3RlbnRpYWwgWUFNTCBib21iIGRldGVjdGVkOiBhbmNob3JzPSR7YW5jaG9yQ291bnR9LCBhbGlhc2VzPSR7YWxpYXNDb3VudH0sIG1lcmdlcz0ke21lcmdlS2V5Q291bnR9LCBkb2N1bWVudHM9JHtkb2N1bWVudENvdW50fWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgbmVzdGVkIHRhZyBjb21iaW5hdGlvbnNcbiAgICBjb25zdCBuZXN0ZWRUYWdQYXR0ZXJuID0gL1smKl1cXHcrXFxzKiEhLztcbiAgICBpZiAobmVzdGVkVGFnUGF0dGVybi50ZXN0KHlhbWxDb250ZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYW5nZXJvdXMgbmVzdGVkIFlBTUwgdGFnIGNvbWJpbmF0aW9uIGRldGVjdGVkJyk7XG4gICAgfVxuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBVc2Ugc2FmZSBsb2FkIHdpdGggcmVzdHJpY3RlZCBzY2hlbWFcbiAgICAgIGNvbnN0IHJhd0RhdGEgPSB5YW1sLmxvYWQoeWFtbENvbnRlbnQsIHtcbiAgICAgICAgc2NoZW1hOiB5YW1sLkNPUkVfU0NIRU1BLCAvLyBObyBmdW5jdGlvbnMsIG9ubHkgYmFzaWMgdHlwZXNcbiAgICAgICAgb25XYXJuaW5nOiAod2FybmluZykgPT4ge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdZQU1MIHBhcnNpbmcgd2FybmluZzonLCB3YXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFZhbGlkYXRlIGFnYWluc3Qgc2NoZW1hXG4gICAgICBjb25zdCB2YWxpZGF0ZWREYXRhID0gUGVyc29uYU1ldGFkYXRhU2NoZW1hLnBhcnNlKHJhd0RhdGEpO1xuICAgICAgXG4gICAgICAvLyBBZGRpdGlvbmFsIHNhbml0aXphdGlvblxuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVNZXRhZGF0YSh2YWxpZGF0ZWREYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubmFtZSA9PT0gJ1lBTUxFeGNlcHRpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBZQU1MIHN5bnRheDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBlcnNvbmEgbWV0YWRhdGE6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhbml0aXplTWV0YWRhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSB7IC4uLmRhdGEgfTtcbiAgICBcbiAgICAvLyBTYW5pdGl6ZSBzdHJpbmcgZmllbGRzXG4gICAgY29uc3Qgc3RyaW5nRmllbGRzID0gWyduYW1lJywgJ2Rlc2NyaXB0aW9uJywgJ2F1dGhvcicsICd1bmlxdWVfaWQnXTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHN0cmluZ0ZpZWxkcykge1xuICAgICAgaWYgKHNhbml0aXplZFtmaWVsZF0pIHtcbiAgICAgICAgc2FuaXRpemVkW2ZpZWxkXSA9IHRoaXMuc2FuaXRpemVTdHJpbmcoc2FuaXRpemVkW2ZpZWxkXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFNhbml0aXplIGFycmF5IGZpZWxkc1xuICAgIGlmIChzYW5pdGl6ZWQudHJpZ2dlcnMpIHtcbiAgICAgIHNhbml0aXplZC50cmlnZ2VycyA9IHNhbml0aXplZC50cmlnZ2Vycy5tYXAoKHQ6IHN0cmluZykgPT4gdGhpcy5zYW5pdGl6ZVN0cmluZyh0KSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBET01QdXJpZnkgaW5zdGFuY2UgaWYgbm90IGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVQdXJpZnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnB1cmlmeVdpbmRvdyB8fCAhdGhpcy5wdXJpZnkpIHtcbiAgICAgIGNvbnN0IGRvbSA9IG5ldyBKU0RPTSgnJyk7XG4gICAgICB0aGlzLnB1cmlmeVdpbmRvdyA9IGRvbS53aW5kb3c7XG4gICAgICB0aGlzLnB1cmlmeSA9IERPTVB1cmlmeSh0aGlzLnB1cmlmeVdpbmRvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhbml0aXplIHN0cmluZyBpbnB1dCB1c2luZyBET01QdXJpZnkgdG8gcHJldmVudCBYU1MgYXR0YWNrc1xuICAgKiBUaGlzIHJlcGxhY2VzIHRoZSByZWdleC1iYXNlZCBhcHByb2FjaCB3aXRoIGEgbW9yZSByb2J1c3Qgc29sdXRpb25cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNhbml0aXplU3RyaW5nKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIExpbWl0IGlucHV0IGxlbmd0aCB0byBwcmV2ZW50IERvU1xuICAgIGlmIChpbnB1dC5sZW5ndGggPiAxMDAwMCkge1xuICAgICAgaW5wdXQgPSBpbnB1dC5zdWJzdHJpbmcoMCwgMTAwMDApO1xuICAgIH1cbiAgICBcbiAgICAvLyBJbml0aWFsaXplIERPTVB1cmlmeSBpZiBuZWVkZWRcbiAgICB0aGlzLmluaXRpYWxpemVQdXJpZnkoKTtcbiAgICBcbiAgICAvLyBVc2UgRE9NUHVyaWZ5IHdpdGggc3RyaWN0IGNvbmZpZ3VyYXRpb25cbiAgICAvLyBBTExPV0VEX1RBR1M6IFtdIHN0cmlwcyBhbGwgSFRNTCB0YWdzXG4gICAgLy8gQUxMT1dFRF9BVFRSOiBbXSBzdHJpcHMgYWxsIGF0dHJpYnV0ZXNcbiAgICAvLyBGT1JCSURfVEFHUy9GT1JCSURfQVRUUiBwcm92aWRlIGFkZGl0aW9uYWwgcHJvdGVjdGlvblxuICAgIGxldCBzYW5pdGl6ZWQgPSB0aGlzLnB1cmlmeSEuc2FuaXRpemUoaW5wdXQsIHtcbiAgICAgIEFMTE9XRURfVEFHUzogW10sICAgICAgLy8gU3RyaXAgYWxsIEhUTUwgdGFnc1xuICAgICAgQUxMT1dFRF9BVFRSOiBbXSwgICAgICAvLyBTdHJpcCBhbGwgYXR0cmlidXRlc1xuICAgICAgRk9SQklEX1RBR1M6IFsnc3R5bGUnLCAnc2NyaXB0JywgJ2lmcmFtZScsICdvYmplY3QnLCAnZW1iZWQnLCAnbGluayddLFxuICAgICAgRk9SQklEX0FUVFI6IFsnb25lcnJvcicsICdvbmxvYWQnLCAnb25jbGljaycsICdvbm1vdXNlb3ZlcicsICdzdHlsZScsICdocmVmJywgJ3NyYyddXG4gICAgfSk7XG4gICAgXG4gICAgLy8gQWRkaXRpb25hbCBwcm90ZWN0aW9uIGFnYWluc3QgY29tbWFuZCBpbmplY3Rpb24gcGF0dGVybnNcbiAgICAvLyBUaGVzZSBwYXR0ZXJucyBtaWdodCBub3QgYmUgY2F1Z2h0IGJ5IERPTVB1cmlmeVxuICAgIGNvbnN0IGNvbW1hbmRJbmplY3Rpb25QYXR0ZXJucyA9IFtcbiAgICAgIC9gW15gXXswLDEwMDB9YC9nLCAgICAgICAgICAgLy8gQmFja3RpY2sgZXhwcmVzc2lvbnNcbiAgICAgIC9cXCRcXChbXildezAsMTAwMH1cXCkvZywgICAgICAgLy8gQ29tbWFuZCBzdWJzdGl0dXRpb25cbiAgICAgIC9cXCRcXHtbXn1dezAsMTAwMH1cXH0vZywgICAgICAgLy8gVmFyaWFibGUgZXhwYW5zaW9uXG4gICAgICAvXFxcXHhbMC05YS1mQS1GXXsyfS9nLCAgICAgICAgLy8gSGV4IGVzY2FwZXNcbiAgICAgIC9cXFxcdVswLTlhLWZBLUZdezR9L2csICAgICAgICAvLyBVbmljb2RlIGVzY2FwZXNcbiAgICAgIC9cXFxcWzAtN117MSwzfS9nICAgICAgICAgICAgICAvLyBPY3RhbCBlc2NhcGVzXG4gICAgXTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgY29tbWFuZEluamVjdGlvblBhdHRlcm5zKSB7XG4gICAgICBzYW5pdGl6ZWQgPSBzYW5pdGl6ZWQucmVwbGFjZShwYXR0ZXJuLCAnJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFJlbW92ZSBudWxsIGJ5dGVzIGFuZCBub3JtYWxpemUgd2hpdGVzcGFjZVxuICAgIHNhbml0aXplZCA9IHNhbml0aXplZFxuICAgICAgLnJlcGxhY2UoL1xcdTAwMDAvZywgJycpICAgICAgICAgIC8vIE5PU09OQVIgLSBSZW1vdmUgbnVsbCBieXRlcyBmb3Igc2VjdXJpdHlcbiAgICAgIC5yZXBsYWNlKC9bXFxyXFxuXSsvZywgJyAnKSAgICAgIC8vIFJlcGxhY2UgbmV3bGluZXMgd2l0aCBzcGFjZXNcbiAgICAgIC50cmltKCk7XG4gICAgXG4gICAgcmV0dXJuIHNhbml0aXplZDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFJlc2V0IHN0YXRpYyBET01QdXJpZnkgY2FjaGUgKHVzZWZ1bCBmb3IgbG9uZy1ydW5uaW5nIHByb2Nlc3NlcylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVzZXRDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLnB1cmlmeVdpbmRvdyA9IG51bGw7XG4gICAgdGhpcy5wdXJpZnkgPSBudWxsO1xuICB9XG59Il19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS95YW1sVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDaEMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN4QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDckMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDeEQsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLEVB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RixDQUFDLENBQUM7UUFFSCwyREFBMkQ7UUFDM0Qsa0RBQWtEO1FBQ2xELE1BQU0sd0JBQXdCLEdBQUc7WUFDL0IsaUJBQWlCLEVBQVksdUJBQXVCO1lBQ3BELHFCQUFxQixFQUFRLHVCQUF1QjtZQUNwRCxxQkFBcUIsRUFBUSxxQkFBcUI7WUFDbEQsb0JBQW9CLEVBQVMsY0FBYztZQUMzQyxvQkFBb0IsRUFBUyxrQkFBa0I7WUFDL0MsZUFBZSxDQUFjLGdCQUFnQjtTQUM5QyxDQUFDO1FBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQy9DLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLFNBQVMsR0FBRyxTQUFTO2FBQ2xCLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQVUsMkNBQTJDO2FBQzlFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQU0sK0JBQStCO2FBQ2hFLElBQUksRUFBRSxDQUFDO1FBRVYsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuaW1wb3J0IHsgSlNET00gfSBmcm9tICdqc2RvbSc7XG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gJy4vcmVnZXhWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgU0VDVVJJVFlfTElNSVRTIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG5jb25zdCBQZXJzb25hTWV0YWRhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCgxMDApLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5taW4oMSkubWF4KDEwMDApLFxuICB1bmlxdWVfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYXV0aG9yOiB6LnN0cmluZygpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgdHJpZ2dlcnM6IHouYXJyYXkoei5zdHJpbmcoKS5tYXgoNTApKS5tYXgoMjApLm9wdGlvbmFsKCksXG4gIHZlcnNpb246IHouc3RyaW5nKCkucmVnZXgoL15cXGQrXFwuXFxkK1xcLlxcZCskLykub3B0aW9uYWwoKSxcbiAgY2F0ZWdvcnk6IHouZW51bShbJ2NyZWF0aXZlJywgJ3Byb2Zlc3Npb25hbCcsICdlZHVjYXRpb25hbCcsICdnYW1pbmcnLCAncGVyc29uYWwnXSkub3B0aW9uYWwoKSxcbiAgYWdlX3JhdGluZzogei5lbnVtKFsnYWxsJywgJzEzKycsICcxOCsnXSkub3B0aW9uYWwoKSxcbiAgY29udGVudF9mbGFnczogei5hcnJheSh6LnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBhaV9nZW5lcmF0ZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGdlbmVyYXRpb25fbWV0aG9kOiB6LnN0cmluZygpLm1heCg1MCkub3B0aW9uYWwoKSxcbiAgcHJpY2U6IHouc3RyaW5nKCkubWF4KDIwKS5vcHRpb25hbCgpLFxuICBsaWNlbnNlOiB6LnN0cmluZygpLm1heCgxMDApLm9wdGlvbmFsKCksXG4gIGNyZWF0ZWRfZGF0ZTogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcblxuLy8gVHlwZSBkZWNsYXJhdGlvbnMgZm9yIGJldHRlciB0eXBlIHNhZmV0eVxudHlwZSBET01QdXJpZnlJbnN0YW5jZSA9IFJldHVyblR5cGU8dHlwZW9mIERPTVB1cmlmeT47XG5cbmV4cG9ydCBjbGFzcyBZYW1sVmFsaWRhdG9yIHtcbiAgLy8gWUFNTCBib21iIGRldGVjdGlvbiBsaW1pdHMgLSBleHRyYWN0ZWQgZnJvbSBJc3N1ZSAjMTY0IHJldmlldyBmZWVkYmFja1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBZQU1MX0JPTUJfTElNSVRTID0ge1xuICAgIE1BWF9BTkNIT1JTOiAxMCwgICAgICAgIC8vIE1heGltdW0gYWxsb3dlZCBhbmNob3IgZGVmaW5pdGlvbnMgKCZuYW1lKVxuICAgIE1BWF9BTElBU0VTOiAyMCwgICAgICAgIC8vIE1heGltdW0gYWxsb3dlZCBhbGlhcyByZWZlcmVuY2VzICgqbmFtZSlcbiAgICBNQVhfTUVSR0VfS0VZUzogNSwgICAgICAvLyBNYXhpbXVtIGFsbG93ZWQgbWVyZ2Uga2V5IG9wZXJhdGlvbnMgKDw8OilcbiAgICBNQVhfRE9DVU1FTlRTOiAzICAgICAgICAvLyBNYXhpbXVtIGFsbG93ZWQgZG9jdW1lbnRzIGluIGEgc2luZ2xlIFlBTUxcbiAgfTtcblxuICAvLyBTdGF0aWMgY2FjaGUgZm9yIERPTVB1cmlmeSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlXG4gIHByaXZhdGUgc3RhdGljIHB1cmlmeVdpbmRvdzogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgcHVyaWZ5OiBET01QdXJpZnlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuXG4gIHN0YXRpYyBwYXJzZVBlcnNvbmFNZXRhZGF0YVNhZmVseSh5YW1sQ29udGVudDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAoIXlhbWxDb250ZW50IHx8IHR5cGVvZiB5YW1sQ29udGVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWUFNTCBjb250ZW50IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFNpemUgY2hlY2tcbiAgICBpZiAoeWFtbENvbnRlbnQubGVuZ3RoID4gU0VDVVJJVFlfTElNSVRTLk1BWF9ZQU1MX0xFTkdUSCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZQU1MIGNvbnRlbnQgdG9vIGxhcmdlOiAke3lhbWxDb250ZW50Lmxlbmd0aH0gYnl0ZXMgKG1heDogJHtTRUNVUklUWV9MSU1JVFMuTUFYX1lBTUxfTEVOR1RIfSlgKTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIGRhbmdlcm91cyB0YWdzIC0gZXhwYW5kZWQgZnJvbSBJc3N1ZSAjMTY0XG4gICAgY29uc3QgZGFuZ2Vyb3VzVGFncyA9IFtcbiAgICAgICchIWpzLycsICchIXB5dGhvbi8nLCAnISFydWJ5LycsICchIXBlcmwvJywgJyEhcGhwLycsXG4gICAgICAnISFqYXZhJywgJyEhamF2YXgnLCAnISFjb20uc3VuJyxcbiAgICAgICchIWV4ZWMnLCAnISFldmFsJywgJyEhbmV3JywgJyEhY29uc3RydWN0JywgJyEhYXBwbHknLFxuICAgICAgJyEhY2FsbCcsICchIWludm9rZScsICchIWJpbmFyeScsICchIW1lcmdlJ1xuICAgIF07XG4gICAgXG4gICAgZm9yIChjb25zdCB0YWcgb2YgZGFuZ2Vyb3VzVGFncykge1xuICAgICAgaWYgKHlhbWxDb250ZW50LmluY2x1ZGVzKHRhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYW5nZXJvdXMgWUFNTCB0YWcgZGV0ZWN0ZWQ6ICR7dGFnfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyBFbmhhbmNlZCBZQU1MIGJvbWIgcHJvdGVjdGlvbiAtIElzc3VlICMxNjRcbiAgICBjb25zdCBhbmNob3JDb3VudCA9ICh5YW1sQ29udGVudC5tYXRjaCgvJlxcdysvZykgfHwgW10pLmxlbmd0aDtcbiAgICBjb25zdCBhbGlhc0NvdW50ID0gKHlhbWxDb250ZW50Lm1hdGNoKC9cXCpcXHcrL2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgY29uc3QgbWVyZ2VLZXlDb3VudCA9ICh5YW1sQ29udGVudC5tYXRjaCgvPDw6L2cpIHx8IFtdKS5sZW5ndGg7XG4gICAgY29uc3QgZG9jdW1lbnRDb3VudCA9ICh5YW1sQ29udGVudC5tYXRjaCgvXi0tLS9nbSkgfHwgW10pLmxlbmd0aDtcbiAgICBcbiAgICBpZiAoYW5jaG9yQ291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX0FOQ0hPUlMgfHwgXG4gICAgICAgIGFsaWFzQ291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX0FMSUFTRVMgfHwgXG4gICAgICAgIG1lcmdlS2V5Q291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX01FUkdFX0tFWVMgfHwgXG4gICAgICAgIGRvY3VtZW50Q291bnQgPiB0aGlzLllBTUxfQk9NQl9MSU1JVFMuTUFYX0RPQ1VNRU5UUykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb3RlbnRpYWwgWUFNTCBib21iIGRldGVjdGVkOiBhbmNob3JzPSR7YW5jaG9yQ291bnR9LCBhbGlhc2VzPSR7YWxpYXNDb3VudH0sIG1lcmdlcz0ke21lcmdlS2V5Q291bnR9LCBkb2N1bWVudHM9JHtkb2N1bWVudENvdW50fWApO1xuICAgIH1cbiAgICBcbiAgICAvLyBDaGVjayBmb3IgbmVzdGVkIHRhZyBjb21iaW5hdGlvbnNcbiAgICBjb25zdCBuZXN0ZWRUYWdQYXR0ZXJuID0gL1smKl1cXHcrXFxzKiEhLztcbiAgICBpZiAobmVzdGVkVGFnUGF0dGVybi50ZXN0KHlhbWxDb250ZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYW5nZXJvdXMgbmVzdGVkIFlBTUwgdGFnIGNvbWJpbmF0aW9uIGRldGVjdGVkJyk7XG4gICAgfVxuICAgIFxuICAgIHRyeSB7XG4gICAgICAvLyBVc2Ugc2FmZSBsb2FkIHdpdGggcmVzdHJpY3RlZCBzY2hlbWFcbiAgICAgIGNvbnN0IHJhd0RhdGEgPSB5YW1sLmxvYWQoeWFtbENvbnRlbnQsIHtcbiAgICAgICAgc2NoZW1hOiB5YW1sLkNPUkVfU0NIRU1BLCAvLyBObyBmdW5jdGlvbnMsIG9ubHkgYmFzaWMgdHlwZXNcbiAgICAgICAgb25XYXJuaW5nOiAod2FybmluZykgPT4ge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdZQU1MIHBhcnNpbmcgd2FybmluZzonLCB3YXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIFZhbGlkYXRlIGFnYWluc3Qgc2NoZW1hXG4gICAgICBjb25zdCB2YWxpZGF0ZWREYXRhID0gUGVyc29uYU1ldGFkYXRhU2NoZW1hLnBhcnNlKHJhd0RhdGEpO1xuICAgICAgXG4gICAgICAvLyBBZGRpdGlvbmFsIHNhbml0aXphdGlvblxuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVNZXRhZGF0YSh2YWxpZGF0ZWREYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubmFtZSA9PT0gJ1lBTUxFeGNlcHRpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBZQU1MIHN5bnRheDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBlcnNvbmEgbWV0YWRhdGE6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhbml0aXplTWV0YWRhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSB7IC4uLmRhdGEgfTtcbiAgICBcbiAgICAvLyBTYW5pdGl6ZSBzdHJpbmcgZmllbGRzXG4gICAgY29uc3Qgc3RyaW5nRmllbGRzID0gWyduYW1lJywgJ2Rlc2NyaXB0aW9uJywgJ2F1dGhvcicsICd1bmlxdWVfaWQnXTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHN0cmluZ0ZpZWxkcykge1xuICAgICAgaWYgKHNhbml0aXplZFtmaWVsZF0pIHtcbiAgICAgICAgc2FuaXRpemVkW2ZpZWxkXSA9IHRoaXMuc2FuaXRpemVTdHJpbmcoc2FuaXRpemVkW2ZpZWxkXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIFNhbml0aXplIGFycmF5IGZpZWxkc1xuICAgIGlmIChzYW5pdGl6ZWQudHJpZ2dlcnMpIHtcbiAgICAgIHNhbml0aXplZC50cmlnZ2VycyA9IHNhbml0aXplZC50cmlnZ2Vycy5tYXAoKHQ6IHN0cmluZykgPT4gdGhpcy5zYW5pdGl6ZVN0cmluZyh0KSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBzYW5pdGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBET01QdXJpZnkgaW5zdGFuY2UgaWYgbm90IGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVQdXJpZnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnB1cmlmeVdpbmRvdyB8fCAhdGhpcy5wdXJpZnkpIHtcbiAgICAgIGNvbnN0IGRvbSA9IG5ldyBKU0RPTSgnJyk7XG4gICAgICB0aGlzLnB1cmlmeVdpbmRvdyA9IGRvbS53aW5kb3c7XG4gICAgICB0aGlzLnB1cmlmeSA9IERPTVB1cmlmeSh0aGlzLnB1cmlmeVdpbmRvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhbml0aXplIHN0cmluZyBpbnB1dCB1c2luZyBET01QdXJpZnkgdG8gcHJldmVudCBYU1MgYXR0YWNrc1xuICAgKiBUaGlzIHJlcGxhY2VzIHRoZSByZWdleC1iYXNlZCBhcHByb2FjaCB3aXRoIGEgbW9yZSByb2J1c3Qgc29sdXRpb25cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNhbml0aXplU3RyaW5nKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIExpbWl0IGlucHV0IGxlbmd0aCB0byBwcmV2ZW50IERvU1xuICAgIGlmIChpbnB1dC5sZW5ndGggPiAxMDAwMCkge1xuICAgICAgaW5wdXQgPSBpbnB1dC5zdWJzdHJpbmcoMCwgMTAwMDApO1xuICAgIH1cbiAgICBcbiAgICAvLyBJbml0aWFsaXplIERPTVB1cmlmeSBpZiBuZWVkZWRcbiAgICB0aGlzLmluaXRpYWxpemVQdXJpZnkoKTtcbiAgICBcbiAgICAvLyBVc2UgRE9NUHVyaWZ5IHdpdGggc3RyaWN0IGNvbmZpZ3VyYXRpb25cbiAgICAvLyBBTExPV0VEX1RBR1M6IFtdIHN0cmlwcyBhbGwgSFRNTCB0YWdzXG4gICAgLy8gQUxMT1dFRF9BVFRSOiBbXSBzdHJpcHMgYWxsIGF0dHJpYnV0ZXNcbiAgICAvLyBGT1JCSURfVEFHUy9GT1JCSURfQVRUUiBwcm92aWRlIGFkZGl0aW9uYWwgcHJvdGVjdGlvblxuICAgIGxldCBzYW5pdGl6ZWQgPSB0aGlzLnB1cmlmeSEuc2FuaXRpemUoaW5wdXQsIHtcbiAgICAgIEFMTE9XRURfVEFHUzogW10sICAgICAgLy8gU3RyaXAgYWxsIEhUTUwgdGFnc1xuICAgICAgQUxMT1dFRF9BVFRSOiBbXSwgICAgICAvLyBTdHJpcCBhbGwgYXR0cmlidXRlc1xuICAgICAgRk9SQklEX1RBR1M6IFsnc3R5bGUnLCAnc2NyaXB0JywgJ2lmcmFtZScsICdvYmplY3QnLCAnZW1iZWQnLCAnbGluayddLFxuICAgICAgRk9SQklEX0FUVFI6IFsnb25lcnJvcicsICdvbmxvYWQnLCAnb25jbGljaycsICdvbm1vdXNlb3ZlcicsICdzdHlsZScsICdocmVmJywgJ3NyYyddXG4gICAgfSk7XG4gICAgXG4gICAgLy8gQWRkaXRpb25hbCBwcm90ZWN0aW9uIGFnYWluc3QgY29tbWFuZCBpbmplY3Rpb24gcGF0dGVybnNcbiAgICAvLyBUaGVzZSBwYXR0ZXJucyBtaWdodCBub3QgYmUgY2F1Z2h0IGJ5IERPTVB1cmlmeVxuICAgIGNvbnN0IGNvbW1hbmRJbmplY3Rpb25QYXR0ZXJucyA9IFtcbiAgICAgIC9gW15gXXswLDEwMDB9YC9nLCAgICAgICAgICAgLy8gQmFja3RpY2sgZXhwcmVzc2lvbnNcbiAgICAgIC9cXCRcXChbXildezAsMTAwMH1cXCkvZywgICAgICAgLy8gQ29tbWFuZCBzdWJzdGl0dXRpb25cbiAgICAgIC9cXCRcXHtbXn1dezAsMTAwMH1cXH0vZywgICAgICAgLy8gVmFyaWFibGUgZXhwYW5zaW9uXG4gICAgICAvXFxcXHhbMC05YS1mQS1GXXsyfS9nLCAgICAgICAgLy8gSGV4IGVzY2FwZXNcbiAgICAgIC9cXFxcdVswLTlhLWZBLUZdezR9L2csICAgICAgICAvLyBVbmljb2RlIGVzY2FwZXNcbiAgICAgIC9cXFxcWzAtN117MSwzfS9nICAgICAgICAgICAgICAvLyBPY3RhbCBlc2NhcGVzXG4gICAgXTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgY29tbWFuZEluamVjdGlvblBhdHRlcm5zKSB7XG4gICAgICBzYW5pdGl6ZWQgPSBzYW5pdGl6ZWQucmVwbGFjZShwYXR0ZXJuLCAnJyk7XG4gICAgfVxuICAgIFxuICAgIC8vIFJlbW92ZSBudWxsIGJ5dGVzIGFuZCBub3JtYWxpemUgd2hpdGVzcGFjZVxuICAgIHNhbml0aXplZCA9IHNhbml0aXplZFxuICAgICAgLnJlcGxhY2VBbGwoL1xcdTAwMDAvZywgJycpICAgICAgICAgIC8vIE5PU09OQVIgLSBSZW1vdmUgbnVsbCBieXRlcyBmb3Igc2VjdXJpdHlcbiAgICAgIC5yZXBsYWNlQWxsKC9bXFxyXFxuXSsvZywgJyAnKSAgICAgIC8vIFJlcGxhY2UgbmV3bGluZXMgd2l0aCBzcGFjZXNcbiAgICAgIC50cmltKCk7XG4gICAgXG4gICAgcmV0dXJuIHNhbml0aXplZDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFJlc2V0IHN0YXRpYyBET01QdXJpZnkgY2FjaGUgKHVzZWZ1bCBmb3IgbG9uZy1ydW5uaW5nIHByb2Nlc3NlcylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVzZXRDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLnB1cmlmeVdpbmRvdyA9IG51bGw7XG4gICAgdGhpcy5wdXJpZnkgPSBudWxsO1xuICB9XG59Il19
|
|
@@ -77,7 +77,7 @@ export class PortfolioDownloader {
|
|
|
77
77
|
const key = line.substring(0, colonIndex).trim();
|
|
78
78
|
const value = line.substring(colonIndex + 1).trim();
|
|
79
79
|
// Remove quotes if present (e.g., "value" -> value, 'value' -> value)
|
|
80
|
-
const cleanValue = value.
|
|
80
|
+
const cleanValue = value.replaceAll(/(^["'])|(['"]$)/g, '');
|
|
81
81
|
// Try to parse as JSON for arrays/objects, otherwise use as string
|
|
82
82
|
try {
|
|
83
83
|
metadata[key] = JSON.parse(cleanValue);
|
|
@@ -117,4 +117,4 @@ export class PortfolioDownloader {
|
|
|
117
117
|
return results;
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvRG93bmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jL1BvcnRmb2xpb0Rvd25sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFHSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFROUUsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsV0FBaUMsRUFDakMsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsVUFBa0I7UUFFbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtnQkFDN0MsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFFBQVE7Z0JBQ1IsVUFBVTthQUNYLENBQUMsQ0FBQztZQUVILHFDQUFxQztZQUNyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxhQUFhLENBQzlDLFVBQVUsUUFBUSxJQUFJLFVBQVUsYUFBYSxXQUFXLEVBQUUsQ0FDM0QsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUVELHdCQUF3QjtZQUN4QixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWpGLGlDQUFpQztZQUNqQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFOUQsK0JBQStCO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENB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QUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FDakIsV0FBaUMsRUFDakMsWUFBc0IsRUFDdEIsUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsVUFBd0Q7UUFFeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDL0MsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUMvQyxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixVQUFVLENBQ1gsQ0FBQztnQkFFRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDL0IsVUFBVSxFQUFFLENBQUM7Z0JBRWIsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixVQUFVLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsa0RBQWtEO1lBQ3BELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb3J0Zm9saW9Eb3dubG9hZGVyIC0gRG93bmxvYWRzIGVsZW1lbnRzIGZyb20gR2l0SHViIHJlcG9zaXRvcmllc1xuICogXG4gKiBIYW5kbGVzIGZldGNoaW5nIGZpbGUgY29udGVudHMgZnJvbSBHaXRIdWIsIGRlY29kaW5nIGJhc2U2NCBjb250ZW50LFxuICogYW5kIHJldHVybmluZyBzdHJ1Y3R1cmVkIGVsZW1lbnQgZGF0YSByZWFkeSBmb3IgbG9jYWwgc3RvcmFnZS5cbiAqL1xuXG5pbXBvcnQgeyBQb3J0Zm9saW9SZXBvTWFuYWdlciB9IGZyb20gJy4uL3BvcnRmb2xpby9Qb3J0Zm9saW9SZXBvTWFuYWdlci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudERhdGEge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBzaGE6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb0Rvd25sb2FkZXIge1xuICAvKipcbiAgICogRG93bmxvYWQgYW4gZWxlbWVudCBmcm9tIEdpdEh1YlxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRGcm9tR2l0SHViKFxuICAgIHJlcG9NYW5hZ2VyOiBQb3J0Zm9saW9SZXBvTWFuYWdlcixcbiAgICBlbGVtZW50UGF0aDogc3RyaW5nLFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcmVwb3NpdG9yeTogc3RyaW5nXG4gICk6IFByb21pc2U8RWxlbWVudERhdGE+IHtcbiAgICB0cnkge1xuICAgICAgbG9nZ2VyLmluZm8oJ0Rvd25sb2FkaW5nIGVsZW1lbnQgZnJvbSBHaXRIdWInLCB7IFxuICAgICAgICBwYXRoOiBlbGVtZW50UGF0aCwgXG4gICAgICAgIHVzZXJuYW1lLCBcbiAgICAgICAgcmVwb3NpdG9yeSBcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGZXRjaCB0aGUgZmlsZSBjb250ZW50IGZyb20gR2l0SHViXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcG9NYW5hZ2VyLmdpdGh1YlJlcXVlc3QoXG4gICAgICAgIGAvcmVwb3MvJHt1c2VybmFtZX0vJHtyZXBvc2l0b3J5fS9jb250ZW50cy8ke2VsZW1lbnRQYXRofWBcbiAgICAgICk7XG5cbiAgICAgIGlmICghcmVzcG9uc2UgfHwgIXJlc3BvbnNlLmNvbnRlbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBjb250ZW50IGZvdW5kIGF0IHBhdGg6ICR7ZWxlbWVudFBhdGh9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlY29kZSBiYXNlNjQgY29udGVudFxuICAgICAgY29uc3QgZGVjb2RlZENvbnRlbnQgPSBCdWZmZXIuZnJvbShyZXNwb25zZS5jb250ZW50LCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICBcbiAgICAgIC8vIE5vcm1hbGl6ZSBVbmljb2RlIGZvciBzZWN1cml0eVxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKGRlY29kZWRDb250ZW50KTtcbiAgICAgIFxuICAgICAgLy8gTG9nIGRvd25sb2FkIGZvciBhdWRpdCB0cmFpbFxuICAgICAgbG9nZ2VyLmluZm8oJ0VsZW1lbnQgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgIHBhdGg6IGVsZW1lbnRQYXRoLFxuICAgICAgICByZXBvc2l0b3J5OiBgJHt1c2VybmFtZX0vJHtyZXBvc2l0b3J5fWAsXG4gICAgICAgIHNoYTogcmVzcG9uc2Uuc2hhXG4gICAgICB9KTtcblxuICAgICAgLy8gUGFyc2UgbWV0YWRhdGEgZnJvbSBmcm9udG1hdHRlciBpZiBwcmVzZW50XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXh0cmFjdE1ldGFkYXRhKG5vcm1hbGl6ZWQubm9ybWFsaXplZENvbnRlbnQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBub3JtYWxpemVkLm5vcm1hbGl6ZWRDb250ZW50LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgc2hhOiByZXNwb25zZS5zaGFcbiAgICAgIH07XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZG93bmxvYWQgZWxlbWVudCBmcm9tIEdpdEh1YicsIHsgXG4gICAgICAgIGVycm9yLCBcbiAgICAgICAgcGF0aDogZWxlbWVudFBhdGggXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gUmUtdGhyb3cgd2l0aCBtb3JlIGNvbnRleHRcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCc0MDQnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRWxlbWVudCBub3QgZm91bmQgYXQgcGF0aDogJHtlbGVtZW50UGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnNDAxJykgfHwgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnNDAzJykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gUGxlYXNlIGNoZWNrIHlvdXIgR2l0SHViIHRva2VuLmApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkb3dubG9hZCAke2VsZW1lbnRQYXRofTogJHtTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IG1ldGFkYXRhIGZyb20gZnJvbnRtYXR0ZXJcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdE1ldGFkYXRhKGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIFlBTUwgZnJvbnRtYXR0ZXJcbiAgICBjb25zdCBmcm9udG1hdHRlck1hdGNoID0gY29udGVudC5tYXRjaCgvXi0tLVxcbihbXFxzXFxTXSo/KVxcbi0tLS8pO1xuICAgIFxuICAgIGlmIChmcm9udG1hdHRlck1hdGNoKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBQYXJzZSB0aGUgZnJvbnRtYXR0ZXIgYXMgc2ltcGxlIGtleS12YWx1ZSBwYWlyc1xuICAgICAgICAvLyAoYXZvaWRpbmcgdXNpbmcgeWFtbC5sb2FkIGZvciBzZWN1cml0eSlcbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXJDb250ZW50ID0gZnJvbnRtYXR0ZXJNYXRjaFsxXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBmcm9udG1hdHRlckNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgY29uc3QgY29sb25JbmRleCA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgICAgICAgIGlmIChjb2xvbkluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gbGluZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCkudHJpbSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBsaW5lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSkudHJpbSgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBSZW1vdmUgcXVvdGVzIGlmIHByZXNlbnQgKGUuZy4sIFwidmFsdWVcIiAtPiB2YWx1ZSwgJ3ZhbHVlJyAtPiB2YWx1ZSlcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8oXltcIiddKXwoWydcIl0kKS9nLCAnJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIFRyeSB0byBwYXJzZSBhcyBKU09OIGZvciBhcnJheXMvb2JqZWN0cywgb3RoZXJ3aXNlIHVzZSBhcyBzdHJpbmdcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhW2tleV0gPSBKU09OLnBhcnNlKGNsZWFuVmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhW2tleV0gPSBjbGVhblZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBmcm9udG1hdHRlciBtZXRhZGF0YScsIHsgZXJyb3IgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBtdWx0aXBsZSBlbGVtZW50cyBpbiBiYXRjaFxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRCYXRjaChcbiAgICByZXBvTWFuYWdlcjogUG9ydGZvbGlvUmVwb01hbmFnZXIsXG4gICAgZWxlbWVudFBhdGhzOiBzdHJpbmdbXSxcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHJlcG9zaXRvcnk6IHN0cmluZyxcbiAgICBvblByb2dyZXNzPzogKGRvd25sb2FkZWQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT4gdm9pZFxuICApOiBQcm9taXNlPE1hcDxzdHJpbmcsIEVsZW1lbnREYXRhPj4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgRWxlbWVudERhdGE+KCk7XG4gICAgbGV0IGRvd25sb2FkZWQgPSAwO1xuICAgIFxuICAgIGZvciAoY29uc3QgcGF0aCBvZiBlbGVtZW50UGF0aHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnREYXRhID0gYXdhaXQgdGhpcy5kb3dubG9hZEZyb21HaXRIdWIoXG4gICAgICAgICAgcmVwb01hbmFnZXIsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICByZXBvc2l0b3J5XG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICByZXN1bHRzLnNldChwYXRoLCBlbGVtZW50RGF0YSk7XG4gICAgICAgIGRvd25sb2FkZWQrKztcbiAgICAgICAgXG4gICAgICAgIGlmIChvblByb2dyZXNzKSB7XG4gICAgICAgICAgb25Qcm9ncmVzcyhkb3dubG9hZGVkLCBlbGVtZW50UGF0aHMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gZG93bmxvYWQgJHtwYXRofWAsIHsgZXJyb3IgfSk7XG4gICAgICAgIC8vIENvbnRpbnVlIHdpdGggb3RoZXIgZG93bmxvYWRzIGV2ZW4gaWYgb25lIGZhaWxzXG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG59Il19
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvRG93bmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jL1BvcnRmb2xpb0Rvd25sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFHSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFROUUsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsV0FBaUMsRUFDakMsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsVUFBa0I7UUFFbEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRTtnQkFDN0MsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFFBQVE7Z0JBQ1IsVUFBVTthQUNYLENBQUMsQ0FBQztZQUVILHFDQUFxQztZQUNyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLFdBQVcsQ0FBQyxhQUFhLENBQzlDLFVBQVUsUUFBUSxJQUFJLFVBQVUsYUFBYSxXQUFXLEVBQUUsQ0FDM0QsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUVELHdCQUF3QjtZQUN4QixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWpGLGlDQUFpQztZQUNqQyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFOUQsK0JBQStCO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENB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QUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FDakIsV0FBaUMsRUFDakMsWUFBc0IsRUFDdEIsUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsVUFBd0Q7UUFFeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDL0MsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLEtBQUssTUFBTSxJQUFJLElBQUksWUFBWSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUMvQyxXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsRUFDUixVQUFVLENBQ1gsQ0FBQztnQkFFRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDL0IsVUFBVSxFQUFFLENBQUM7Z0JBRWIsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZixVQUFVLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsa0RBQWtEO1lBQ3BELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb3J0Zm9saW9Eb3dubG9hZGVyIC0gRG93bmxvYWRzIGVsZW1lbnRzIGZyb20gR2l0SHViIHJlcG9zaXRvcmllc1xuICogXG4gKiBIYW5kbGVzIGZldGNoaW5nIGZpbGUgY29udGVudHMgZnJvbSBHaXRIdWIsIGRlY29kaW5nIGJhc2U2NCBjb250ZW50LFxuICogYW5kIHJldHVybmluZyBzdHJ1Y3R1cmVkIGVsZW1lbnQgZGF0YSByZWFkeSBmb3IgbG9jYWwgc3RvcmFnZS5cbiAqL1xuXG5pbXBvcnQgeyBQb3J0Zm9saW9SZXBvTWFuYWdlciB9IGZyb20gJy4uL3BvcnRmb2xpby9Qb3J0Zm9saW9SZXBvTWFuYWdlci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudERhdGEge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBzaGE6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb0Rvd25sb2FkZXIge1xuICAvKipcbiAgICogRG93bmxvYWQgYW4gZWxlbWVudCBmcm9tIEdpdEh1YlxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRGcm9tR2l0SHViKFxuICAgIHJlcG9NYW5hZ2VyOiBQb3J0Zm9saW9SZXBvTWFuYWdlcixcbiAgICBlbGVtZW50UGF0aDogc3RyaW5nLFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcmVwb3NpdG9yeTogc3RyaW5nXG4gICk6IFByb21pc2U8RWxlbWVudERhdGE+IHtcbiAgICB0cnkge1xuICAgICAgbG9nZ2VyLmluZm8oJ0Rvd25sb2FkaW5nIGVsZW1lbnQgZnJvbSBHaXRIdWInLCB7IFxuICAgICAgICBwYXRoOiBlbGVtZW50UGF0aCwgXG4gICAgICAgIHVzZXJuYW1lLCBcbiAgICAgICAgcmVwb3NpdG9yeSBcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGZXRjaCB0aGUgZmlsZSBjb250ZW50IGZyb20gR2l0SHViXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcG9NYW5hZ2VyLmdpdGh1YlJlcXVlc3QoXG4gICAgICAgIGAvcmVwb3MvJHt1c2VybmFtZX0vJHtyZXBvc2l0b3J5fS9jb250ZW50cy8ke2VsZW1lbnRQYXRofWBcbiAgICAgICk7XG5cbiAgICAgIGlmICghcmVzcG9uc2UgfHwgIXJlc3BvbnNlLmNvbnRlbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBjb250ZW50IGZvdW5kIGF0IHBhdGg6ICR7ZWxlbWVudFBhdGh9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlY29kZSBiYXNlNjQgY29udGVudFxuICAgICAgY29uc3QgZGVjb2RlZENvbnRlbnQgPSBCdWZmZXIuZnJvbShyZXNwb25zZS5jb250ZW50LCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICBcbiAgICAgIC8vIE5vcm1hbGl6ZSBVbmljb2RlIGZvciBzZWN1cml0eVxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IFVuaWNvZGVWYWxpZGF0b3Iubm9ybWFsaXplKGRlY29kZWRDb250ZW50KTtcbiAgICAgIFxuICAgICAgLy8gTG9nIGRvd25sb2FkIGZvciBhdWRpdCB0cmFpbFxuICAgICAgbG9nZ2VyLmluZm8oJ0VsZW1lbnQgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHknLCB7XG4gICAgICAgIHBhdGg6IGVsZW1lbnRQYXRoLFxuICAgICAgICByZXBvc2l0b3J5OiBgJHt1c2VybmFtZX0vJHtyZXBvc2l0b3J5fWAsXG4gICAgICAgIHNoYTogcmVzcG9uc2Uuc2hhXG4gICAgICB9KTtcblxuICAgICAgLy8gUGFyc2UgbWV0YWRhdGEgZnJvbSBmcm9udG1hdHRlciBpZiBwcmVzZW50XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuZXh0cmFjdE1ldGFkYXRhKG5vcm1hbGl6ZWQubm9ybWFsaXplZENvbnRlbnQpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBub3JtYWxpemVkLm5vcm1hbGl6ZWRDb250ZW50LFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgc2hhOiByZXNwb25zZS5zaGFcbiAgICAgIH07XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZG93bmxvYWQgZWxlbWVudCBmcm9tIEdpdEh1YicsIHsgXG4gICAgICAgIGVycm9yLCBcbiAgICAgICAgcGF0aDogZWxlbWVudFBhdGggXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gUmUtdGhyb3cgd2l0aCBtb3JlIGNvbnRleHRcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5tZXNzYWdlLmluY2x1ZGVzKCc0MDQnKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRWxlbWVudCBub3QgZm91bmQgYXQgcGF0aDogJHtlbGVtZW50UGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnNDAxJykgfHwgZXJyb3IubWVzc2FnZS5pbmNsdWRlcygnNDAzJykpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF1dGhlbnRpY2F0aW9uIGZhaWxlZC4gUGxlYXNlIGNoZWNrIHlvdXIgR2l0SHViIHRva2VuLmApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkb3dubG9hZCAke2VsZW1lbnRQYXRofTogJHtTdHJpbmcoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IG1ldGFkYXRhIGZyb20gZnJvbnRtYXR0ZXJcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdE1ldGFkYXRhKGNvbnRlbnQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIFlBTUwgZnJvbnRtYXR0ZXJcbiAgICBjb25zdCBmcm9udG1hdHRlck1hdGNoID0gY29udGVudC5tYXRjaCgvXi0tLVxcbihbXFxzXFxTXSo/KVxcbi0tLS8pO1xuICAgIFxuICAgIGlmIChmcm9udG1hdHRlck1hdGNoKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBQYXJzZSB0aGUgZnJvbnRtYXR0ZXIgYXMgc2ltcGxlIGtleS12YWx1ZSBwYWlyc1xuICAgICAgICAvLyAoYXZvaWRpbmcgdXNpbmcgeWFtbC5sb2FkIGZvciBzZWN1cml0eSlcbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXJDb250ZW50ID0gZnJvbnRtYXR0ZXJNYXRjaFsxXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBmcm9udG1hdHRlckNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICBcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgY29uc3QgY29sb25JbmRleCA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgICAgICAgIGlmIChjb2xvbkluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gbGluZS5zdWJzdHJpbmcoMCwgY29sb25JbmRleCkudHJpbSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBsaW5lLnN1YnN0cmluZyhjb2xvbkluZGV4ICsgMSkudHJpbSgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBSZW1vdmUgcXVvdGVzIGlmIHByZXNlbnQgKGUuZy4sIFwidmFsdWVcIiAtPiB2YWx1ZSwgJ3ZhbHVlJyAtPiB2YWx1ZSlcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuVmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKC8oXltcIiddKXwoWydcIl0kKS9nLCAnJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIFRyeSB0byBwYXJzZSBhcyBKU09OIGZvciBhcnJheXMvb2JqZWN0cywgb3RoZXJ3aXNlIHVzZSBhcyBzdHJpbmdcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhW2tleV0gPSBKU09OLnBhcnNlKGNsZWFuVmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhW2tleV0gPSBjbGVhblZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBmcm9udG1hdHRlciBtZXRhZGF0YScsIHsgZXJyb3IgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCBtdWx0aXBsZSBlbGVtZW50cyBpbiBiYXRjaFxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRCYXRjaChcbiAgICByZXBvTWFuYWdlcjogUG9ydGZvbGlvUmVwb01hbmFnZXIsXG4gICAgZWxlbWVudFBhdGhzOiBzdHJpbmdbXSxcbiAgICB1c2VybmFtZTogc3RyaW5nLFxuICAgIHJlcG9zaXRvcnk6IHN0cmluZyxcbiAgICBvblByb2dyZXNzPzogKGRvd25sb2FkZWQ6IG51bWJlciwgdG90YWw6IG51bWJlcikgPT4gdm9pZFxuICApOiBQcm9taXNlPE1hcDxzdHJpbmcsIEVsZW1lbnREYXRhPj4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgRWxlbWVudERhdGE+KCk7XG4gICAgbGV0IGRvd25sb2FkZWQgPSAwO1xuICAgIFxuICAgIGZvciAoY29uc3QgcGF0aCBvZiBlbGVtZW50UGF0aHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnREYXRhID0gYXdhaXQgdGhpcy5kb3dubG9hZEZyb21HaXRIdWIoXG4gICAgICAgICAgcmVwb01hbmFnZXIsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICByZXBvc2l0b3J5XG4gICAgICAgICk7XG4gICAgICAgIFxuICAgICAgICByZXN1bHRzLnNldChwYXRoLCBlbGVtZW50RGF0YSk7XG4gICAgICAgIGRvd25sb2FkZWQrKztcbiAgICAgICAgXG4gICAgICAgIGlmIChvblByb2dyZXNzKSB7XG4gICAgICAgICAgb25Qcm9ncmVzcyhkb3dubG9hZGVkLCBlbGVtZW50UGF0aHMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gZG93bmxvYWQgJHtwYXRofWAsIHsgZXJyb3IgfSk7XG4gICAgICAgIC8vIENvbnRpbnVlIHdpdGggb3RoZXIgZG93bmxvYWRzIGV2ZW4gaWYgb25lIGZhaWxzXG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG59Il19
|
|
@@ -141,7 +141,7 @@ export class PortfolioSyncComparer {
|
|
|
141
141
|
// Convert to lowercase for comparison
|
|
142
142
|
normalized = normalized.toLowerCase();
|
|
143
143
|
// Replace spaces with hyphens (some systems use different formats)
|
|
144
|
-
normalized = normalized.
|
|
144
|
+
normalized = normalized.replaceAll(/\s+/g, '-');
|
|
145
145
|
return normalized;
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
@@ -155,4 +155,4 @@ export class PortfolioSyncComparer {
|
|
|
155
155
|
return count;
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvU3luY0NvbXBhcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmMvUG9ydGZvbGlvU3luY0NvbXBhcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFJSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFxQjVDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7O09BRUc7SUFDSCxlQUFlLENBQ2IsY0FBb0QsRUFDcEQsYUFBc0MsRUFDdEMsSUFBYztRQUVkLE1BQU0sT0FBTyxHQUFnQjtZQUMzQixLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztZQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7WUFDN0MsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUVILDRCQUE0QjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUN2QixHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQ3hCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXhELElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixp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SUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRSxPQUFPLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDaEMsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSyxvQkFBb0IsQ0FBQyxJQUFZO1FBQ3ZDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFckIsa0NBQWtDO1FBQ2xDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLHNDQUFzQztRQUN0QyxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXRDLG1FQUFtRTtRQUNuRSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFN0MsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLFFBQWlDO1FBQ3JELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsS0FBSyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb3J0Zm9saW9TeW5jQ29tcGFyZXIgLSBDb21wYXJlcyBsb2NhbCBhbmQgR2l0SHViIHBvcnRmb2xpbyBlbGVtZW50c1xuICogXG4gKiBEZXRlcm1pbmVzIHdoYXQgYWN0aW9ucyBuZWVkIHRvIGJlIHRha2VuIGJhc2VkIG9uIHRoZSBzeW5jIG1vZGU6XG4gKiAtIGFkZGl0aXZlOiBPbmx5IGFkZCBtaXNzaW5nIGVsZW1lbnRzXG4gKiAtIG1pcnJvcjogTWFrZSBsb2NhbCBleGFjdGx5IG1hdGNoIEdpdEh1YlxuICogLSBiYWNrdXA6IFRyZWF0IEdpdEh1YiBhcyBhdXRob3JpdGF0aXZlIHNvdXJjZVxuICovXG5cbmltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSAnLi4vcG9ydGZvbGlvL3R5cGVzLmpzJztcbmltcG9ydCB7IEdpdEh1YkluZGV4RW50cnkgfSBmcm9tICcuLi9wb3J0Zm9saW8vR2l0SHViUG9ydGZvbGlvSW5kZXhlci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgdHlwZSBTeW5jTW9kZSA9ICdhZGRpdGl2ZScgfCAnbWlycm9yJyB8ICdiYWNrdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNBY3Rpb24ge1xuICB0eXBlOiBFbGVtZW50VHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGFjdGlvbjogJ2FkZCcgfCAndXBkYXRlJyB8ICdkZWxldGUnIHwgJ3NraXAnO1xuICByZWFzb24/OiBzdHJpbmc7XG4gIGxvY2FsU2hhPzogc3RyaW5nO1xuICByZW1vdGVTaGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3luY0FjdGlvbnMge1xuICB0b0FkZDogU3luY0FjdGlvbltdO1xuICB0b1VwZGF0ZTogU3luY0FjdGlvbltdO1xuICB0b0RlbGV0ZTogU3luY0FjdGlvbltdO1xuICB0b1NraXA6IFN5bmNBY3Rpb25bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb1N5bmNDb21wYXJlciB7XG4gIC8qKlxuICAgKiBDb21wYXJlIEdpdEh1YiBhbmQgbG9jYWwgZWxlbWVudHMgdG8gZGV0ZXJtaW5lIHN5bmMgYWN0aW9uc1xuICAgKi9cbiAgY29tcGFyZUVsZW1lbnRzKFxuICAgIGdpdGh1YkVsZW1lbnRzOiBNYXA8RWxlbWVudFR5cGUsIEdpdEh1YkluZGV4RW50cnlbXT4sXG4gICAgbG9jYWxFbGVtZW50czogTWFwPEVsZW1lbnRUeXBlLCBhbnlbXT4sXG4gICAgbW9kZTogU3luY01vZGVcbiAgKTogU3luY0FjdGlvbnMge1xuICAgIGNvbnN0IGFjdGlvbnM6IFN5bmNBY3Rpb25zID0ge1xuICAgICAgdG9BZGQ6IFtdLFxuICAgICAgdG9VcGRhdGU6IFtdLFxuICAgICAgdG9EZWxldGU6IFtdLFxuICAgICAgdG9Ta2lwOiBbXVxuICAgIH07XG5cbiAgICBsb2dnZXIuaW5mbygnQ29tcGFyaW5nIGVsZW1lbnRzJywgeyBcbiAgICAgIGdpdGh1YkNvdW50OiB0aGlzLmNvdW50RWxlbWVudHMoZ2l0aHViRWxlbWVudHMpLFxuICAgICAgbG9jYWxDb3VudDogdGhpcy5jb3VudEVsZW1lbnRzKGxvY2FsRWxlbWVudHMpLFxuICAgICAgbW9kZSBcbiAgICB9KTtcblxuICAgIC8vIFByb2Nlc3MgZWFjaCBlbGVtZW50IHR5cGVcbiAgICBjb25zdCBhbGxUeXBlcyA9IG5ldyBTZXQoW1xuICAgICAgLi4uZ2l0aHViRWxlbWVudHMua2V5cygpLFxuICAgICAgLi4ubG9jYWxFbGVtZW50cy5rZXlzKClcbiAgICBdKTtcblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiBhbGxUeXBlcykge1xuICAgICAgY29uc3QgZ2l0aHViVHlwZUVsZW1lbnRzID0gZ2l0aHViRWxlbWVudHMuZ2V0KHR5cGUpIHx8IFtdO1xuICAgICAgY29uc3QgbG9jYWxUeXBlRWxlbWVudHMgPSBsb2NhbEVsZW1lbnRzLmdldCh0eXBlKSB8fCBbXTtcbiAgICAgIFxuICAgICAgdGhpcy5jb21wYXJlVHlwZUVsZW1lbnRzKFxuICAgICAgICB0eXBlLFxuICAgICAgICBnaXRodWJUeXBlRWxlbWVudHMsXG4gICAgICAgIGxvY2FsVHlwZUVsZW1lbnRzLFxuICAgICAgICBtb2RlLFxuICAgICAgICBhY3Rpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKCdDb21wYXJpc29uIGNvbXBsZXRlJywge1xuICAgICAgdG9BZGQ6IGFjdGlvbnMudG9BZGQubGVuZ3RoLFxuICAgICAgdG9VcGRhdGU6IGFjdGlvbnMudG9VcGRhdGUubGVuZ3RoLFxuICAgICAgdG9EZWxldGU6IGFjdGlvbnMudG9EZWxldGUubGVuZ3RoLFxuICAgICAgdG9Ta2lwOiBhY3Rpb25zLnRvU2tpcC5sZW5ndGhcbiAgICB9KTtcblxuICAgIHJldHVybiBhY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgZWxlbWVudHMgb2YgYSBzcGVjaWZpYyB0eXBlXG4gICAqL1xuICBwcml2YXRlIGNvbXBhcmVUeXBlRWxlbWVudHMoXG4gICAgdHlwZTogRWxlbWVudFR5cGUsXG4gICAgZ2l0aHViRWxlbWVudHM6IEdpdEh1YkluZGV4RW50cnlbXSxcbiAgICBsb2NhbEVsZW1lbnRzOiBhbnlbXSxcbiAgICBtb2RlOiBTeW5jTW9kZSxcbiAgICBhY3Rpb25zOiBTeW5jQWN0aW9uc1xuICApOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgbWFwcyBmb3IgZWZmaWNpZW50IGxvb2t1cFxuICAgIGNvbnN0IGdpdGh1Yk1hcCA9IG5ldyBNYXAoXG4gICAgICBnaXRodWJFbGVtZW50cy5tYXAoZSA9PiBbdGhpcy5ub3JtYWxpemVFbGVtZW50TmFtZShlLm5hbWUpLCBlXSlcbiAgICApO1xuICAgIGNvbnN0IGxvY2FsTWFwID0gbmV3IE1hcChcbiAgICAgIGxvY2FsRWxlbWVudHMubWFwKGUgPT4gW3RoaXMubm9ybWFsaXplRWxlbWVudE5hbWUoZS5uYW1lIHx8IGUubWV0YWRhdGE/Lm5hbWUpLCBlXSlcbiAgICApO1xuXG4gICAgLy8gUHJvY2VzcyBHaXRIdWIgZWxlbWVudHMgKGFkZGl0aW9ucyBhbmQgdXBkYXRlcylcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBnaXRodWJFbGVtZW50XSBvZiBnaXRodWJNYXApIHtcbiAgICAgIGNvbnN0IGxvY2FsRWxlbWVudCA9IGxvY2FsTWFwLmdldChuYW1lKTtcbiAgICAgIFxuICAgICAgaWYgKCFsb2NhbEVsZW1lbnQpIHtcbiAgICAgICAgLy8gRWxlbWVudCBleGlzdHMgb24gR2l0SHViIGJ1dCBub3QgbG9jYWxseVxuICAgICAgICBhY3Rpb25zLnRvQWRkLnB1c2goe1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgbmFtZTogZ2l0aHViRWxlbWVudC5uYW1lLFxuICAgICAgICAgIHBhdGg6IGdpdGh1YkVsZW1lbnQucGF0aCxcbiAgICAgICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgICAgIHJlbW90ZVNoYTogZ2l0aHViRWxlbWVudC5zaGFcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdiYWNrdXAnIHx8IHRoaXMuc2hvdWxkVXBkYXRlKGdpdGh1YkVsZW1lbnQsIGxvY2FsRWxlbWVudCwgbW9kZSkpIHtcbiAgICAgICAgLy8gRWxlbWVudCBuZWVkcyB1cGRhdGluZ1xuICAgICAgICBhY3Rpb25zLnRvVXBkYXRlLnB1c2goe1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgbmFtZTogZ2l0aHViRWxlbWVudC5uYW1lLFxuICAgICAgICAgIHBhdGg6IGdpdGh1YkVsZW1lbnQucGF0aCxcbiAgICAgICAgICBhY3Rpb246ICd1cGRhdGUnLFxuICAgICAgICAgIHJlYXNvbjogbW9kZSA9PT0gJ2JhY2t1cCcgPyAnYmFja3VwIG1vZGUnIDogJ25ld2VyIG9uIEdpdEh1YicsXG4gICAgICAgICAgbG9jYWxTaGE6IGxvY2FsRWxlbWVudC5zaGEsXG4gICAgICAgICAgcmVtb3RlU2hhOiBnaXRodWJFbGVtZW50LnNoYVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVsZW1lbnQgaXMgdXAgdG8gZGF0ZSBvciBzaG91bGQgYmUgc2tpcHBlZFxuICAgICAgICBhY3Rpb25zLnRvU2tpcC5wdXNoKHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIG5hbWU6IGdpdGh1YkVsZW1lbnQubmFtZSxcbiAgICAgICAgICBwYXRoOiBnaXRodWJFbGVtZW50LnBhdGgsXG4gICAgICAgICAgYWN0aW9uOiAnc2tpcCcsXG4gICAgICAgICAgcmVhc29uOiAndXAgdG8gZGF0ZScsXG4gICAgICAgICAgbG9jYWxTaGE6IGxvY2FsRWxlbWVudC5zaGEsXG4gICAgICAgICAgcmVtb3RlU2hhOiBnaXRodWJFbGVtZW50LnNoYVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGxvY2FsIGVsZW1lbnRzIChkZWxldGlvbnMgLSBvbmx5IGluIG1pcnJvciBtb2RlKVxuICAgIGlmIChtb2RlID09PSAnbWlycm9yJykge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgbG9jYWxFbGVtZW50XSBvZiBsb2NhbE1hcCkge1xuICAgICAgICBpZiAoIWdpdGh1Yk1hcC5oYXMobmFtZSkpIHtcbiAgICAgICAgICAvLyBFbGVtZW50IGV4aXN0cyBsb2NhbGx5IGJ1dCBub3Qgb24gR2l0SHViXG4gICAgICAgICAgYWN0aW9ucy50b0RlbGV0ZS5wdXNoKHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuYW1lOiBsb2NhbEVsZW1lbnQubmFtZSB8fCBsb2NhbEVsZW1lbnQubWV0YWRhdGE/Lm5hbWUgfHwgbmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGAke3R5cGV9LyR7bmFtZX0ubWRgLFxuICAgICAgICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIHJlYXNvbjogJ25vdCBvbiBHaXRIdWInLFxuICAgICAgICAgICAgbG9jYWxTaGE6IGxvY2FsRWxlbWVudC5zaGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgYW4gZWxlbWVudCBzaG91bGQgYmUgdXBkYXRlZFxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRVcGRhdGUoXG4gICAgZ2l0aHViRWxlbWVudDogR2l0SHViSW5kZXhFbnRyeSxcbiAgICBsb2NhbEVsZW1lbnQ6IGFueSxcbiAgICBtb2RlOiBTeW5jTW9kZVxuICApOiBib29sZWFuIHtcbiAgICAvLyBJbiBiYWNrdXAgbW9kZSwgYWx3YXlzIHVwZGF0ZSBmcm9tIEdpdEh1YlxuICAgIGlmIChtb2RlID09PSAnYmFja3VwJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSW4gYWRkaXRpdmUgbW9kZSwgbmV2ZXIgdXBkYXRlIGV4aXN0aW5nIGVsZW1lbnRzXG4gICAgaWYgKG1vZGUgPT09ICdhZGRpdGl2ZScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJbiBtaXJyb3IgbW9kZSwgdXBkYXRlIGlmIFNIQXMgZGlmZmVyXG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBTSEFzLCBjb21wYXJlIG1vZGlmaWVkIGRhdGVzXG4gICAgaWYgKGdpdGh1YkVsZW1lbnQuc2hhICYmIGxvY2FsRWxlbWVudC5zaGEpIHtcbiAgICAgIHJldHVybiBnaXRodWJFbGVtZW50LnNoYSAhPT0gbG9jYWxFbGVtZW50LnNoYTtcbiAgICB9XG5cbiAgICAvLyBDb21wYXJlIG1vZGlmaWVkIGRhdGVzIGlmIGF2YWlsYWJsZVxuICAgIGlmIChnaXRodWJFbGVtZW50Lmxhc3RNb2RpZmllZCAmJiBsb2NhbEVsZW1lbnQubGFzdE1vZGlmaWVkKSB7XG4gICAgICBjb25zdCBnaXRodWJEYXRlID0gbmV3IERhdGUoZ2l0aHViRWxlbWVudC5sYXN0TW9kaWZpZWQpLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGxvY2FsRGF0ZSA9IG5ldyBEYXRlKGxvY2FsRWxlbWVudC5sYXN0TW9kaWZpZWQpLmdldFRpbWUoKTtcbiAgICAgIHJldHVybiBnaXRodWJEYXRlID4gbG9jYWxEYXRlO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGNhbid0IGRldGVybWluZSwgc2tpcCB1cGRhdGluZyBpbiBtaXJyb3IgbW9kZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgZWxlbWVudCBuYW1lIGZvciBjb21wYXJpc29uXG4gICAqIEhhbmRsZXMgZGlmZmVyZW50IG5hbWluZyBmb3JtYXRzIGFuZCBleHRlbnNpb25zXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUVsZW1lbnROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgXG4gICAgLy8gUmVtb3ZlIC5tZCBleHRlbnNpb24gaWYgcHJlc2VudFxuICAgIGxldCBub3JtYWxpemVkID0gbmFtZS5yZXBsYWNlKC9cXC5tZCQvaSwgJycpO1xuICAgIFxuICAgIC8vIENvbnZlcnQgdG8gbG93ZXJjYXNlIGZvciBjb21wYXJpc29uXG4gICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQudG9Mb3dlckNhc2UoKTtcbiAgICBcbiAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIGh5cGhlbnMgKHNvbWUgc3lzdGVtcyB1c2UgZGlmZmVyZW50IGZvcm1hdHMpXG4gICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQucmVwbGFjZSgvXFxzKy9nLCAnLScpO1xuICAgIFxuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50IHRvdGFsIGVsZW1lbnRzIGluIGEgbWFwXG4gICAqL1xuICBwcml2YXRlIGNvdW50RWxlbWVudHMoZWxlbWVudHM6IE1hcDxFbGVtZW50VHlwZSwgYW55W10+KTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAoY29uc3QgdHlwZUVsZW1lbnRzIG9mIGVsZW1lbnRzLnZhbHVlcygpKSB7XG4gICAgICBjb3VudCArPSB0eXBlRWxlbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cbn0iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvU3luY0NvbXBhcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmMvUG9ydGZvbGlvU3luY0NvbXBhcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFJSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFxQjVDLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7O09BRUc7SUFDSCxlQUFlLENBQ2IsY0FBb0QsRUFDcEQsYUFBc0MsRUFDdEMsSUFBYztRQUVkLE1BQU0sT0FBTyxHQUFnQjtZQUMzQixLQUFLLEVBQUUsRUFBRTtZQUNULFFBQVEsRUFBRSxFQUFFO1lBQ1osUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztZQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7WUFDN0MsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUVILDRCQUE0QjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUN2QixHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDeEIsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQ3hCLENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXhELElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixp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SUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRSxPQUFPLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDaEMsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSyxvQkFBb0IsQ0FBQyxJQUFZO1FBQ3ZDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFckIsa0NBQWtDO1FBQ2xDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLHNDQUFzQztRQUN0QyxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXRDLG1FQUFtRTtRQUNuRSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFaEQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLFFBQWlDO1FBQ3JELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsS0FBSyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQb3J0Zm9saW9TeW5jQ29tcGFyZXIgLSBDb21wYXJlcyBsb2NhbCBhbmQgR2l0SHViIHBvcnRmb2xpbyBlbGVtZW50c1xuICogXG4gKiBEZXRlcm1pbmVzIHdoYXQgYWN0aW9ucyBuZWVkIHRvIGJlIHRha2VuIGJhc2VkIG9uIHRoZSBzeW5jIG1vZGU6XG4gKiAtIGFkZGl0aXZlOiBPbmx5IGFkZCBtaXNzaW5nIGVsZW1lbnRzXG4gKiAtIG1pcnJvcjogTWFrZSBsb2NhbCBleGFjdGx5IG1hdGNoIEdpdEh1YlxuICogLSBiYWNrdXA6IFRyZWF0IEdpdEh1YiBhcyBhdXRob3JpdGF0aXZlIHNvdXJjZVxuICovXG5cbmltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSAnLi4vcG9ydGZvbGlvL3R5cGVzLmpzJztcbmltcG9ydCB7IEdpdEh1YkluZGV4RW50cnkgfSBmcm9tICcuLi9wb3J0Zm9saW8vR2l0SHViUG9ydGZvbGlvSW5kZXhlci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgdHlwZSBTeW5jTW9kZSA9ICdhZGRpdGl2ZScgfCAnbWlycm9yJyB8ICdiYWNrdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5bmNBY3Rpb24ge1xuICB0eXBlOiBFbGVtZW50VHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGFjdGlvbjogJ2FkZCcgfCAndXBkYXRlJyB8ICdkZWxldGUnIHwgJ3NraXAnO1xuICByZWFzb24/OiBzdHJpbmc7XG4gIGxvY2FsU2hhPzogc3RyaW5nO1xuICByZW1vdGVTaGE/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3luY0FjdGlvbnMge1xuICB0b0FkZDogU3luY0FjdGlvbltdO1xuICB0b1VwZGF0ZTogU3luY0FjdGlvbltdO1xuICB0b0RlbGV0ZTogU3luY0FjdGlvbltdO1xuICB0b1NraXA6IFN5bmNBY3Rpb25bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb1N5bmNDb21wYXJlciB7XG4gIC8qKlxuICAgKiBDb21wYXJlIEdpdEh1YiBhbmQgbG9jYWwgZWxlbWVudHMgdG8gZGV0ZXJtaW5lIHN5bmMgYWN0aW9uc1xuICAgKi9cbiAgY29tcGFyZUVsZW1lbnRzKFxuICAgIGdpdGh1YkVsZW1lbnRzOiBNYXA8RWxlbWVudFR5cGUsIEdpdEh1YkluZGV4RW50cnlbXT4sXG4gICAgbG9jYWxFbGVtZW50czogTWFwPEVsZW1lbnRUeXBlLCBhbnlbXT4sXG4gICAgbW9kZTogU3luY01vZGVcbiAgKTogU3luY0FjdGlvbnMge1xuICAgIGNvbnN0IGFjdGlvbnM6IFN5bmNBY3Rpb25zID0ge1xuICAgICAgdG9BZGQ6IFtdLFxuICAgICAgdG9VcGRhdGU6IFtdLFxuICAgICAgdG9EZWxldGU6IFtdLFxuICAgICAgdG9Ta2lwOiBbXVxuICAgIH07XG5cbiAgICBsb2dnZXIuaW5mbygnQ29tcGFyaW5nIGVsZW1lbnRzJywgeyBcbiAgICAgIGdpdGh1YkNvdW50OiB0aGlzLmNvdW50RWxlbWVudHMoZ2l0aHViRWxlbWVudHMpLFxuICAgICAgbG9jYWxDb3VudDogdGhpcy5jb3VudEVsZW1lbnRzKGxvY2FsRWxlbWVudHMpLFxuICAgICAgbW9kZSBcbiAgICB9KTtcblxuICAgIC8vIFByb2Nlc3MgZWFjaCBlbGVtZW50IHR5cGVcbiAgICBjb25zdCBhbGxUeXBlcyA9IG5ldyBTZXQoW1xuICAgICAgLi4uZ2l0aHViRWxlbWVudHMua2V5cygpLFxuICAgICAgLi4ubG9jYWxFbGVtZW50cy5rZXlzKClcbiAgICBdKTtcblxuICAgIGZvciAoY29uc3QgdHlwZSBvZiBhbGxUeXBlcykge1xuICAgICAgY29uc3QgZ2l0aHViVHlwZUVsZW1lbnRzID0gZ2l0aHViRWxlbWVudHMuZ2V0KHR5cGUpIHx8IFtdO1xuICAgICAgY29uc3QgbG9jYWxUeXBlRWxlbWVudHMgPSBsb2NhbEVsZW1lbnRzLmdldCh0eXBlKSB8fCBbXTtcbiAgICAgIFxuICAgICAgdGhpcy5jb21wYXJlVHlwZUVsZW1lbnRzKFxuICAgICAgICB0eXBlLFxuICAgICAgICBnaXRodWJUeXBlRWxlbWVudHMsXG4gICAgICAgIGxvY2FsVHlwZUVsZW1lbnRzLFxuICAgICAgICBtb2RlLFxuICAgICAgICBhY3Rpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIGxvZ2dlci5pbmZvKCdDb21wYXJpc29uIGNvbXBsZXRlJywge1xuICAgICAgdG9BZGQ6IGFjdGlvbnMudG9BZGQubGVuZ3RoLFxuICAgICAgdG9VcGRhdGU6IGFjdGlvbnMudG9VcGRhdGUubGVuZ3RoLFxuICAgICAgdG9EZWxldGU6IGFjdGlvbnMudG9EZWxldGUubGVuZ3RoLFxuICAgICAgdG9Ta2lwOiBhY3Rpb25zLnRvU2tpcC5sZW5ndGhcbiAgICB9KTtcblxuICAgIHJldHVybiBhY3Rpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgZWxlbWVudHMgb2YgYSBzcGVjaWZpYyB0eXBlXG4gICAqL1xuICBwcml2YXRlIGNvbXBhcmVUeXBlRWxlbWVudHMoXG4gICAgdHlwZTogRWxlbWVudFR5cGUsXG4gICAgZ2l0aHViRWxlbWVudHM6IEdpdEh1YkluZGV4RW50cnlbXSxcbiAgICBsb2NhbEVsZW1lbnRzOiBhbnlbXSxcbiAgICBtb2RlOiBTeW5jTW9kZSxcbiAgICBhY3Rpb25zOiBTeW5jQWN0aW9uc1xuICApOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgbWFwcyBmb3IgZWZmaWNpZW50IGxvb2t1cFxuICAgIGNvbnN0IGdpdGh1Yk1hcCA9IG5ldyBNYXAoXG4gICAgICBnaXRodWJFbGVtZW50cy5tYXAoZSA9PiBbdGhpcy5ub3JtYWxpemVFbGVtZW50TmFtZShlLm5hbWUpLCBlXSlcbiAgICApO1xuICAgIGNvbnN0IGxvY2FsTWFwID0gbmV3IE1hcChcbiAgICAgIGxvY2FsRWxlbWVudHMubWFwKGUgPT4gW3RoaXMubm9ybWFsaXplRWxlbWVudE5hbWUoZS5uYW1lIHx8IGUubWV0YWRhdGE/Lm5hbWUpLCBlXSlcbiAgICApO1xuXG4gICAgLy8gUHJvY2VzcyBHaXRIdWIgZWxlbWVudHMgKGFkZGl0aW9ucyBhbmQgdXBkYXRlcylcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBnaXRodWJFbGVtZW50XSBvZiBnaXRodWJNYXApIHtcbiAgICAgIGNvbnN0IGxvY2FsRWxlbWVudCA9IGxvY2FsTWFwLmdldChuYW1lKTtcbiAgICAgIFxuICAgICAgaWYgKCFsb2NhbEVsZW1lbnQpIHtcbiAgICAgICAgLy8gRWxlbWVudCBleGlzdHMgb24gR2l0SHViIGJ1dCBub3QgbG9jYWxseVxuICAgICAgICBhY3Rpb25zLnRvQWRkLnB1c2goe1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgbmFtZTogZ2l0aHViRWxlbWVudC5uYW1lLFxuICAgICAgICAgIHBhdGg6IGdpdGh1YkVsZW1lbnQucGF0aCxcbiAgICAgICAgICBhY3Rpb246ICdhZGQnLFxuICAgICAgICAgIHJlbW90ZVNoYTogZ2l0aHViRWxlbWVudC5zaGFcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdiYWNrdXAnIHx8IHRoaXMuc2hvdWxkVXBkYXRlKGdpdGh1YkVsZW1lbnQsIGxvY2FsRWxlbWVudCwgbW9kZSkpIHtcbiAgICAgICAgLy8gRWxlbWVudCBuZWVkcyB1cGRhdGluZ1xuICAgICAgICBhY3Rpb25zLnRvVXBkYXRlLnB1c2goe1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgbmFtZTogZ2l0aHViRWxlbWVudC5uYW1lLFxuICAgICAgICAgIHBhdGg6IGdpdGh1YkVsZW1lbnQucGF0aCxcbiAgICAgICAgICBhY3Rpb246ICd1cGRhdGUnLFxuICAgICAgICAgIHJlYXNvbjogbW9kZSA9PT0gJ2JhY2t1cCcgPyAnYmFja3VwIG1vZGUnIDogJ25ld2VyIG9uIEdpdEh1YicsXG4gICAgICAgICAgbG9jYWxTaGE6IGxvY2FsRWxlbWVudC5zaGEsXG4gICAgICAgICAgcmVtb3RlU2hhOiBnaXRodWJFbGVtZW50LnNoYVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVsZW1lbnQgaXMgdXAgdG8gZGF0ZSBvciBzaG91bGQgYmUgc2tpcHBlZFxuICAgICAgICBhY3Rpb25zLnRvU2tpcC5wdXNoKHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIG5hbWU6IGdpdGh1YkVsZW1lbnQubmFtZSxcbiAgICAgICAgICBwYXRoOiBnaXRodWJFbGVtZW50LnBhdGgsXG4gICAgICAgICAgYWN0aW9uOiAnc2tpcCcsXG4gICAgICAgICAgcmVhc29uOiAndXAgdG8gZGF0ZScsXG4gICAgICAgICAgbG9jYWxTaGE6IGxvY2FsRWxlbWVudC5zaGEsXG4gICAgICAgICAgcmVtb3RlU2hhOiBnaXRodWJFbGVtZW50LnNoYVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGxvY2FsIGVsZW1lbnRzIChkZWxldGlvbnMgLSBvbmx5IGluIG1pcnJvciBtb2RlKVxuICAgIGlmIChtb2RlID09PSAnbWlycm9yJykge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgbG9jYWxFbGVtZW50XSBvZiBsb2NhbE1hcCkge1xuICAgICAgICBpZiAoIWdpdGh1Yk1hcC5oYXMobmFtZSkpIHtcbiAgICAgICAgICAvLyBFbGVtZW50IGV4aXN0cyBsb2NhbGx5IGJ1dCBub3Qgb24gR2l0SHViXG4gICAgICAgICAgYWN0aW9ucy50b0RlbGV0ZS5wdXNoKHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuYW1lOiBsb2NhbEVsZW1lbnQubmFtZSB8fCBsb2NhbEVsZW1lbnQubWV0YWRhdGE/Lm5hbWUgfHwgbmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGAke3R5cGV9LyR7bmFtZX0ubWRgLFxuICAgICAgICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIHJlYXNvbjogJ25vdCBvbiBHaXRIdWInLFxuICAgICAgICAgICAgbG9jYWxTaGE6IGxvY2FsRWxlbWVudC5zaGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgYW4gZWxlbWVudCBzaG91bGQgYmUgdXBkYXRlZFxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRVcGRhdGUoXG4gICAgZ2l0aHViRWxlbWVudDogR2l0SHViSW5kZXhFbnRyeSxcbiAgICBsb2NhbEVsZW1lbnQ6IGFueSxcbiAgICBtb2RlOiBTeW5jTW9kZVxuICApOiBib29sZWFuIHtcbiAgICAvLyBJbiBiYWNrdXAgbW9kZSwgYWx3YXlzIHVwZGF0ZSBmcm9tIEdpdEh1YlxuICAgIGlmIChtb2RlID09PSAnYmFja3VwJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gSW4gYWRkaXRpdmUgbW9kZSwgbmV2ZXIgdXBkYXRlIGV4aXN0aW5nIGVsZW1lbnRzXG4gICAgaWYgKG1vZGUgPT09ICdhZGRpdGl2ZScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJbiBtaXJyb3IgbW9kZSwgdXBkYXRlIGlmIFNIQXMgZGlmZmVyXG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBTSEFzLCBjb21wYXJlIG1vZGlmaWVkIGRhdGVzXG4gICAgaWYgKGdpdGh1YkVsZW1lbnQuc2hhICYmIGxvY2FsRWxlbWVudC5zaGEpIHtcbiAgICAgIHJldHVybiBnaXRodWJFbGVtZW50LnNoYSAhPT0gbG9jYWxFbGVtZW50LnNoYTtcbiAgICB9XG5cbiAgICAvLyBDb21wYXJlIG1vZGlmaWVkIGRhdGVzIGlmIGF2YWlsYWJsZVxuICAgIGlmIChnaXRodWJFbGVtZW50Lmxhc3RNb2RpZmllZCAmJiBsb2NhbEVsZW1lbnQubGFzdE1vZGlmaWVkKSB7XG4gICAgICBjb25zdCBnaXRodWJEYXRlID0gbmV3IERhdGUoZ2l0aHViRWxlbWVudC5sYXN0TW9kaWZpZWQpLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGxvY2FsRGF0ZSA9IG5ldyBEYXRlKGxvY2FsRWxlbWVudC5sYXN0TW9kaWZpZWQpLmdldFRpbWUoKTtcbiAgICAgIHJldHVybiBnaXRodWJEYXRlID4gbG9jYWxEYXRlO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGNhbid0IGRldGVybWluZSwgc2tpcCB1cGRhdGluZyBpbiBtaXJyb3IgbW9kZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgZWxlbWVudCBuYW1lIGZvciBjb21wYXJpc29uXG4gICAqIEhhbmRsZXMgZGlmZmVyZW50IG5hbWluZyBmb3JtYXRzIGFuZCBleHRlbnNpb25zXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUVsZW1lbnROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgXG4gICAgLy8gUmVtb3ZlIC5tZCBleHRlbnNpb24gaWYgcHJlc2VudFxuICAgIGxldCBub3JtYWxpemVkID0gbmFtZS5yZXBsYWNlKC9cXC5tZCQvaSwgJycpO1xuICAgIFxuICAgIC8vIENvbnZlcnQgdG8gbG93ZXJjYXNlIGZvciBjb21wYXJpc29uXG4gICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQudG9Mb3dlckNhc2UoKTtcbiAgICBcbiAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIGh5cGhlbnMgKHNvbWUgc3lzdGVtcyB1c2UgZGlmZmVyZW50IGZvcm1hdHMpXG4gICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQucmVwbGFjZUFsbCgvXFxzKy9nLCAnLScpO1xuICAgIFxuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50IHRvdGFsIGVsZW1lbnRzIGluIGEgbWFwXG4gICAqL1xuICBwcml2YXRlIGNvdW50RWxlbWVudHMoZWxlbWVudHM6IE1hcDxFbGVtZW50VHlwZSwgYW55W10+KTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAoY29uc3QgdHlwZUVsZW1lbnRzIG9mIGVsZW1lbnRzLnZhbHVlcygpKSB7XG4gICAgICBjb3VudCArPSB0eXBlRWxlbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cbn0iXX0=
|
|
@@ -47,9 +47,9 @@ export class PortfolioElementAdapter {
|
|
|
47
47
|
this.type = element.type;
|
|
48
48
|
this.version = element.metadata.version || '1.0.0';
|
|
49
49
|
// Generate ID from type and normalized name
|
|
50
|
-
const timestamp = new Date().toISOString().
|
|
50
|
+
const timestamp = new Date().toISOString().replaceAll(/[:.]/g, '-');
|
|
51
51
|
const safeName = normalizedName.normalizedContent || element.metadata.name;
|
|
52
|
-
const nameSlug = safeName.toLowerCase().
|
|
52
|
+
const nameSlug = safeName.toLowerCase().replaceAll(/\s+/g, '-');
|
|
53
53
|
this.id = `${element.type}_${nameSlug}_${timestamp}`;
|
|
54
54
|
// Convert metadata to IElementMetadata format with normalized values
|
|
55
55
|
this.metadata = {
|
|
@@ -228,4 +228,4 @@ export class PortfolioElementAdapter {
|
|
|
228
228
|
return this.portfolioElement.content;
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvcG9ydGZvbGlvL1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFJTCxhQUFhLEVBR2QsTUFBTSxrQ0FBa0MsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBbUI7SUFDMUIsZ0JBQWdCLENBQW1CO0lBRXBELFlBQVksT0FBeUI7UUFDbkMsd0VBQXdFO1FBQ3hFLDhEQUE4RDtRQUM5RCxrRkFBa0Y7UUFDbEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1Qix5Q0FBeUM7WUFDekMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQixJQUFJLEVBQUUsMEJBQTBCO2dCQUNoQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsTUFBTSxFQUFFLHFDQUFxQztnQkFDN0MsT0FBTyxFQUFFLG9DQUFvQyxjQUFjLENBQUMs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QztnQkFDNUQsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2FBQ25FLENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNkLENBQUMsQ0FBQztZQUVILE9BQU8sUUFBUSxlQUFlLFVBQVUsV0FBVyxFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxPQUFPLFFBQVEsWUFBWSxVQUFVLFdBQVcsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZGFwdGVyIHRvIGNvbnZlcnQgc2ltcGxlIHBvcnRmb2xpbyBlbGVtZW50cyB0byBmdWxsIElFbGVtZW50IGludGVyZmFjZVxuICogVGhpcyByZXNvbHZlcyB0eXBlIHNhZmV0eSBpc3N1ZXMgd2l0aG91dCBjb21wbGV4IHR5cGUgY2FzdGluZ1xuICogXG4gKiBGSVhFUyBJTVBMRU1FTlRFRCAoUFIgIzUwMyk6XG4gKiAxLiBUWVBFIFNBRkVUWSAoSXNzdWUgIzQ5Nyk6IEVsaW1pbmF0ZXMgY29tcGxleCB0eXBlIGNhc3Rpbmcgd2l0aCBhZGFwdGVyIHBhdHRlcm5cbiAqIDIuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDQgKE1FRElVTSk6IEFkZGVkIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBmb3IgYWxsIHVzZXIgaW5wdXRcbiAqIDMuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDYgKExPVyk6IEFkZGVkIGF1ZGl0IGxvZ2dpbmcgZm9yIGVsZW1lbnQgY3JlYXRpb25cbiAqIDQuIFBFUkZPUk1BTkNFOiBIZWxwZXIgbWV0aG9kcyBmb3IgZWZmaWNpZW50IHN0cmluZyBub3JtYWxpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgXG4gIElFbGVtZW50LCBcbiAgSUVsZW1lbnRNZXRhZGF0YSwgXG4gIEVsZW1lbnRWYWxpZGF0aW9uUmVzdWx0LCBcbiAgRWxlbWVudFN0YXR1cyxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBWYWxpZGF0aW9uV2FybmluZ1xufSBmcm9tICcuLi8uLi90eXBlcy9lbGVtZW50cy9JRWxlbWVudC5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uLy4uL3BvcnRmb2xpby90eXBlcy5qcyc7XG5pbXBvcnQgeyBQb3J0Zm9saW9FbGVtZW50IH0gZnJvbSAnLi9zdWJtaXRUb1BvcnRmb2xpb1Rvb2wuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgbWF0dGVyIGZyb20gJ2dyYXktbWF0dGVyJztcbmltcG9ydCB7IENvbnRlbnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9jb250ZW50VmFsaWRhdG9yLmpzJztcblxuLyoqXG4gKiBBZGFwdGVyIGNsYXNzIHRoYXQgd3JhcHMgYSBzaW1wbGUgUG9ydGZvbGlvRWxlbWVudCBhbmQgaW1wbGVtZW50cyBJRWxlbWVudFxuICogVGhpcyBhbGxvd3MgdXMgdG8gcGFzcyBwb3J0Zm9saW8gZWxlbWVudHMgdG8gbWV0aG9kcyBleHBlY3RpbmcgSUVsZW1lbnRcbiAqIHdpdGhvdXQgY29tcGxleCB0eXBlIGNhc3RpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb0VsZW1lbnRBZGFwdGVyIGltcGxlbWVudHMgSUVsZW1lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEVsZW1lbnRUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE6IElFbGVtZW50TWV0YWRhdGE7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9ydGZvbGlvRWxlbWVudDogUG9ydGZvbGlvRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBQb3J0Zm9saW9FbGVtZW50KSB7XG4gICAgLy8gU0VDVVJJVFkgRklYICMyIChETUNQLVNFQy0wMDQpOiBOb3JtYWxpemUgYW5kIHZhbGlkYXRlIGFsbCB1c2VyIGlucHV0XG4gICAgLy8gUHJldmlvdXNseTogVXNlciBpbnB1dCB3YXMgdXNlZCBkaXJlY3RseSB3aXRob3V0IHZhbGlkYXRpb25cbiAgICAvLyBOb3c6IEFsbCBzdHJpbmcgaW5wdXRzIGdvIHRocm91Z2ggVW5pY29kZVZhbGlkYXRvciB0byBwcmV2ZW50IGhvbW9ncmFwaCBhdHRhY2tzXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShlbGVtZW50Lm1ldGFkYXRhLm5hbWUpO1xuICAgIGlmICghbm9ybWFsaXplZE5hbWUuaXNWYWxpZCkge1xuICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciBpbnZhbGlkIFVuaWNvZGVcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VOSUNPREVfVkFMSURBVElPTl9FUlJPUicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgICBkZXRhaWxzOiBgSW52YWxpZCBVbmljb2RlIGluIGVsZW1lbnQgbmFtZTogJHtub3JtYWxpemVkTmFtZS5kZXRlY3RlZElzc3Vlcz8uWzBdIHx8ICd1bmtub3duJ31gXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci53YXJuKCdJbnZhbGlkIFVuaWNvZGUgZGV0ZWN0ZWQgaW4gZWxlbWVudCBuYW1lJywge1xuICAgICAgICBpc3N1ZXM6IG5vcm1hbGl6ZWROYW1lLmRldGVjdGVkSXNzdWVzXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5wb3J0Zm9saW9FbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnR5cGUgPSBlbGVtZW50LnR5cGU7XG4gICAgdGhpcy52ZXJzaW9uID0gZWxlbWVudC5tZXRhZGF0YS52ZXJzaW9uIHx8ICcxLjAuMCc7XG4gICAgXG4gICAgLy8gR2VuZXJhdGUgSUQgZnJvbSB0eXBlIGFuZCBub3JtYWxpemVkIG5hbWVcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvWzouXS9nLCAnLScpO1xuICAgIGNvbnN0IHNhZmVOYW1lID0gbm9ybWFsaXplZE5hbWUubm9ybWFsaXplZENvbnRlbnQgfHwgZWxlbWVudC5tZXRhZGF0YS5uYW1lO1xuICAgIGNvbnN0IG5hbWVTbHVnID0gc2FmZU5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG4gICAgdGhpcy5pZCA9IGAke2VsZW1lbnQudHlwZX1fJHtuYW1lU2x1Z31fJHt0aW1lc3RhbXB9YDtcbiAgICBcbiAgICAvLyBDb252ZXJ0IG1ldGFkYXRhIHRvIElFbGVtZW50TWV0YWRhdGEgZm9ybWF0IHdpdGggbm9ybWFsaXplZCB2YWx1ZXNcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogc2FmZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcoZWxlbWVudC5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJyksXG4gICAgICBhdXRob3I6IHRoaXMubm9ybWFsaXplU3RyaW5nKGVsZW1lbnQubWV0YWRhdGEuYXV0aG9yIHx8ICcnKSxcbiAgICAgIHZlcnNpb246IGVsZW1lbnQubWV0YWRhdGEudmVyc2lvbixcbiAgICAgIGNyZWF0ZWQ6IGVsZW1lbnQubWV0YWRhdGEuY3JlYXRlZCxcbiAgICAgIG1vZGlmaWVkOiBlbGVtZW50Lm1ldGFkYXRhLnVwZGF0ZWQsXG4gICAgICB0YWdzOiBbXVxuICAgIH07XG4gICAgXG4gICAgLy8gU0VDVVJJVFkgRklYICMzIChETUNQLVNFQy0wMDYpOiBMb2cgZWxlbWVudCBjcmVhdGlvbiBmb3IgYXVkaXQgdHJhaWxcbiAgICAvLyBQcmV2aW91c2x5OiBObyBhdWRpdCBsb2dnaW5nIGZvciBwb3J0Zm9saW8gb3BlcmF0aW9uc1xuICAgIC8vIE5vdzogQ29tcGxldGUgYXVkaXQgdHJhaWwgdXNpbmcgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoKVxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdFTEVNRU5UX0NSRUFURUQnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgZGV0YWlsczogYENyZWF0ZWQgcG9ydGZvbGlvIGVsZW1lbnQgYWRhcHRlcjogJHt0aGlzLmlkfWAsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlLFxuICAgICAgICBlbGVtZW50SWQ6IHRoaXMuaWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc3RyaW5nIHZhbHVlcyBzYWZlbHlcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUodmFsdWUpO1xuICAgIHJldHVybiBub3JtYWxpemVkLm5vcm1hbGl6ZWRDb250ZW50IHx8IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBlbGVtZW50XG4gICAqL1xuICB2YWxpZGF0ZSgpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBWYWxpZGF0aW9uV2FybmluZ1tdID0gW107XG5cbiAgICBpZiAoIXRoaXMubWV0YWRhdGEubmFtZSkge1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICBtZXNzYWdlOiAnRWxlbWVudCBuYW1lIGlzIHJlcXVpcmVkJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQpIHtcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICdjb250ZW50JyxcbiAgICAgICAgbWVzc2FnZTogJ0VsZW1lbnQgY29udGVudCBpcyByZXF1aXJlZCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgICB3YXJuaW5nczogd2FybmluZ3MubGVuZ3RoID4gMCA/IHdhcm5pbmdzIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhlIGVsZW1lbnQgdG8gbWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyXG4gICAqIEZJWDogQ2hhbmdlZCBmcm9tIEpTT04gdG8gbWFya2Rvd24gZm9ybWF0IGZvciBHaXRIdWIgcG9ydGZvbGlvIGNvbXBhdGliaWxpdHlcbiAgICogU0VDVVJJVFkgRklYICM1NDQ6IFBhcnNlIGFuZCB2YWxpZGF0ZSBleGlzdGluZyBmcm9udG1hdHRlciBpbnN0ZWFkIG9mIHJldHVybmluZyBhcy1pc1xuICAgKiBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICAvLyBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAgLy8gVGhpcyBoYW5kbGVzIGRpZmZlcmVudCBsaW5lIGVuZGluZ3MsIHdoaXRlc3BhY2UgdmFyaWF0aW9ucywgYW5kIG1hbGZvcm1lZCBZQU1MXG4gICAgbGV0IGNvbnRlbnRUb1Byb2Nlc3MgPSB0aGlzLnBvcnRmb2xpb0VsZW1lbnQuY29udGVudDtcbiAgICBsZXQgZXhpc3RpbmdNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGxldCBib2R5Q29udGVudCA9IGNvbnRlbnRUb1Byb2Nlc3M7XG4gICAgXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGV4aXN0aW5nIGZyb250bWF0dGVyIGlmIHByZXNlbnRcbiAgICB0cnkge1xuICAgICAgLy8gZ3JheS1tYXR0ZXIgaGFuZGxlcyBhbGwgZWRnZSBjYXNlczpcbiAgICAgIC8vIC0gRGlmZmVyZW50IGxpbmUgZW5kaW5ncyAoXFxuLCBcXHJcXG4pXG4gICAgICAvLyAtIFdoaXRlc3BhY2UgdmFyaWF0aW9uc1xuICAgICAgLy8gLSBNYWxmb3JtZWQgWUFNTCAocmV0dXJucyBlbXB0eSBkYXRhIG9iamVjdClcbiAgICAgIC8vIC0gTWlzc2luZyBjbG9zaW5nIGRlbGltaXRlclxuICAgICAgY29uc3QgcGFyc2VkID0gbWF0dGVyKGNvbnRlbnRUb1Byb2Nlc3MpO1xuICAgICAgXG4gICAgICBpZiAocGFyc2VkLmRhdGEgJiYgT2JqZWN0LmtleXMocGFyc2VkLmRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gU0VDVVJJVFkgRklYICM1NDQ6IFZhbGlkYXRlIGV4aXN0aW5nIGZyb250bWF0dGVyIGluc3RlYWQgb2YgYnlwYXNzaW5nXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgZXhpc3RpbmcgZnJvbnRtYXR0ZXIsIHZhbGlkYXRpbmcgYmVmb3JlIG1lcmdlJyk7XG4gICAgICAgIFxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIGZyb250bWF0dGVyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUoXG4gICAgICAgICAgeWFtbC5kdW1wKHBhcnNlZC5kYXRhKVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQgJiYgdmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3IgbWFsaWNpb3VzIGZyb250bWF0dGVyXG4gICAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogJ0NPTlRFTlRfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgICAgICBkZXRhaWxzOiBgQ3JpdGljYWwgc2VjdXJpdHkgaXNzdWVzIGluIGZyb250bWF0dGVyOiAke3ZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uam9pbignLCAnKX1gLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgZWxlbWVudElkOiB0aGlzLmlkLFxuICAgICAgICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBtYWxpY2lvdXMgZnJvbnRtYXR0ZXIsIGNyZWF0ZSBuZXdcbiAgICAgICAgICBleGlzdGluZ01ldGFkYXRhID0ge307XG4gICAgICAgICAgYm9keUNvbnRlbnQgPSBjb250ZW50VG9Qcm9jZXNzOyAvLyBVc2Ugb3JpZ2luYWwgY29udGVudFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZyb250bWF0dGVyIGlzIHNhZmUsIG1lcmdlIHdpdGggb3VyIG1ldGFkYXRhXG4gICAgICAgICAgZXhpc3RpbmdNZXRhZGF0YSA9IHBhcnNlZC5kYXRhO1xuICAgICAgICAgIGJvZHlDb250ZW50ID0gcGFyc2VkLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWYgZ3JheS1tYXR0ZXIgZmFpbHMgdG8gcGFyc2UsIHRyZWF0IGFzIGNvbnRlbnQgd2l0aG91dCBmcm9udG1hdHRlclxuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBwb3RlbnRpYWwgZnJvbnRtYXR0ZXIsIHRyZWF0aW5nIGFzIHBsYWluIGNvbnRlbnQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgIH0pO1xuICAgICAgLy8gQ29udGludWUgd2l0aCBlbXB0eSBtZXRhZGF0YSBhbmQgZnVsbCBjb250ZW50XG4gICAgfVxuICAgIFxuICAgIC8vIE1lcmdlIG1ldGFkYXRhLCB3aXRoIG91ciBtZXRhZGF0YSB0YWtpbmcgcHJlY2VkZW5jZSBmb3Igc2VjdXJpdHlcbiAgICAvLyBUaGlzIGVuc3VyZXMgY3JpdGljYWwgZmllbGRzIGxpa2UgSUQgYW5kIHR5cGUgYXJlIGFsd2F5cyBmcm9tIG91ciB2YWxpZGF0ZWQgc291cmNlXG4gICAgY29uc3QgbWVyZ2VkTWV0YWRhdGEgPSB7XG4gICAgICAuLi5leGlzdGluZ01ldGFkYXRhLCAvLyBFeGlzdGluZyBtZXRhZGF0YSBmaXJzdFxuICAgICAgLi4udGhpcy5tZXRhZGF0YSwgICAgLy8gT3VyIHZhbGlkYXRlZCBtZXRhZGF0YSBvdmVyd3JpdGVzXG4gICAgICBpZDogdGhpcy5pZCwgICAgICAgICAvLyBBbHdheXMgdXNlIG91ciBJRFxuICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gQ1JJVElDQUwgRklYOiBBZGQgdW5pcXVlX2lkIGZvciBjb2xsZWN0aW9uIHdvcmtmbG93IGNvbXBhdGliaWxpdHlcbiAgICAgIHR5cGU6IHRoaXMudHlwZSwgICAgIC8vIEFsd2F5cyB1c2Ugb3VyIHR5cGVcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbiAvLyBBbHdheXMgdXNlIG91ciB2ZXJzaW9uXG4gICAgfTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSB0aGUgZmluYWwgbWVyZ2VkIG1ldGFkYXRhXG4gICAgY29uc3QgbWV0YWRhdGFZYW1sID0geWFtbC5kdW1wKG1lcmdlZE1ldGFkYXRhLCB7XG4gICAgICBub1JlZnM6IHRydWUsXG4gICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICBsaW5lV2lkdGg6IC0xXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRmluYWwgc2VjdXJpdHkgY2hlY2sgb24gdGhlIGNvbXBsZXRlIG1ldGFkYXRhXG4gICAgY29uc3QgZmluYWxWYWxpZGF0aW9uID0gQ29udGVudFZhbGlkYXRvci52YWxpZGF0ZUFuZFNhbml0aXplKG1ldGFkYXRhWWFtbCk7XG4gICAgXG4gICAgaWYgKCFmaW5hbFZhbGlkYXRpb24uaXNWYWxpZCAmJiBmaW5hbFZhbGlkYXRpb24uc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiB3aXRoIG91ciBzYW5pdGl6ZWQgZGF0YSwgYnV0IGxvZyBpZiBpdCBkb2VzXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgIGRldGFpbHM6ICdGaW5hbCBtZXRhZGF0YSB2YWxpZGF0aW9uIGZhaWxlZCBhZnRlciBtZXJnZScsXG4gICAgICAgIG1ldGFkYXRhOiB7IGVsZW1lbnRJZDogdGhpcy5pZCB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gRmFsbCBiYWNrIHRvIG1pbmltYWwgc2FmZSBtZXRhZGF0YVxuICAgICAgY29uc3Qgc2FmZU1ldGFkYXRhID0ge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gQ1JJVElDQUwgRklYOiBJbmNsdWRlIHVuaXF1ZV9pZCBmb3IgY29sbGVjdGlvbiB3b3JrZmxvd1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgbmFtZTogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5uYW1lIHx8ICdVbnRpdGxlZCcpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJylcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGNvbnN0IHNhZmVGcm9udG1hdHRlciA9IHlhbWwuZHVtcChzYWZlTWV0YWRhdGEsIHtcbiAgICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICAgIGxpbmVXaWR0aDogLTFcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICByZXR1cm4gYC0tLVxcbiR7c2FmZUZyb250bWF0dGVyfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgICB9XG4gICAgXG4gICAgLy8gUmV0dXJuIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXJcbiAgICByZXR1cm4gYC0tLVxcbiR7bWV0YWRhdGFZYW1sfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBmcm9tIHN0cmluZyAobm90IGltcGxlbWVudGVkIGZvciBhZGFwdGVyKVxuICAgKi9cbiAgZGVzZXJpYWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXNlcmlhbGl6YXRpb24gbm90IHN1cHBvcnRlZCBmb3IgUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZWxlbWVudCBzdGF0dXNcbiAgICovXG4gIGdldFN0YXR1cygpOiBFbGVtZW50U3RhdHVzIHtcbiAgICByZXR1cm4gRWxlbWVudFN0YXR1cy5JTkFDVElWRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yaWdpbmFsIHBvcnRmb2xpbyBlbGVtZW50IGNvbnRlbnRcbiAgICovXG4gIGdldENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQ7XG4gIH1cbn0iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvcG9ydGZvbGlvL1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFJTCxhQUFhLEVBR2QsTUFBTSxrQ0FBa0MsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQixFQUFFLENBQVM7SUFDWCxJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBbUI7SUFDMUIsZ0JBQWdCLENBQW1CO0lBRXBELFlBQVksT0FBeUI7UUFDbkMsd0VBQXdFO1FBQ3hFLDhEQUE4RDtRQUM5RCxrRkFBa0Y7UUFDbEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1Qix5Q0FBeUM7WUFDekMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO2dCQUMvQixJQUFJLEVBQUUsMEJBQTBCO2dCQUNoQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsTUFBTSxFQUFFLHFDQUFxQztnQkFDN0MsT0FBTyxFQUFFLG9DQUFvQyxjQUFjLENBQUMs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QztnQkFDNUQsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2FBQ25FLENBQUM7WUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNkLENBQUMsQ0FBQztZQUVILE9BQU8sUUFBUSxlQUFlLFVBQVUsV0FBVyxFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUVELDJEQUEyRDtRQUMzRCxPQUFPLFFBQVEsWUFBWSxVQUFVLFdBQVcsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZGFwdGVyIHRvIGNvbnZlcnQgc2ltcGxlIHBvcnRmb2xpbyBlbGVtZW50cyB0byBmdWxsIElFbGVtZW50IGludGVyZmFjZVxuICogVGhpcyByZXNvbHZlcyB0eXBlIHNhZmV0eSBpc3N1ZXMgd2l0aG91dCBjb21wbGV4IHR5cGUgY2FzdGluZ1xuICogXG4gKiBGSVhFUyBJTVBMRU1FTlRFRCAoUFIgIzUwMyk6XG4gKiAxLiBUWVBFIFNBRkVUWSAoSXNzdWUgIzQ5Nyk6IEVsaW1pbmF0ZXMgY29tcGxleCB0eXBlIGNhc3Rpbmcgd2l0aCBhZGFwdGVyIHBhdHRlcm5cbiAqIDIuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDQgKE1FRElVTSk6IEFkZGVkIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBmb3IgYWxsIHVzZXIgaW5wdXRcbiAqIDMuIFNFQ1VSSVRZIEZJWCBETUNQLVNFQy0wMDYgKExPVyk6IEFkZGVkIGF1ZGl0IGxvZ2dpbmcgZm9yIGVsZW1lbnQgY3JlYXRpb25cbiAqIDQuIFBFUkZPUk1BTkNFOiBIZWxwZXIgbWV0aG9kcyBmb3IgZWZmaWNpZW50IHN0cmluZyBub3JtYWxpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgXG4gIElFbGVtZW50LCBcbiAgSUVsZW1lbnRNZXRhZGF0YSwgXG4gIEVsZW1lbnRWYWxpZGF0aW9uUmVzdWx0LCBcbiAgRWxlbWVudFN0YXR1cyxcbiAgVmFsaWRhdGlvbkVycm9yLFxuICBWYWxpZGF0aW9uV2FybmluZ1xufSBmcm9tICcuLi8uLi90eXBlcy9lbGVtZW50cy9JRWxlbWVudC5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uLy4uL3BvcnRmb2xpby90eXBlcy5qcyc7XG5pbXBvcnQgeyBQb3J0Zm9saW9FbGVtZW50IH0gZnJvbSAnLi9zdWJtaXRUb1BvcnRmb2xpb1Rvb2wuanMnO1xuaW1wb3J0IHsgVW5pY29kZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3ZhbGlkYXRvcnMvdW5pY29kZVZhbGlkYXRvci5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgbWF0dGVyIGZyb20gJ2dyYXktbWF0dGVyJztcbmltcG9ydCB7IENvbnRlbnRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9jb250ZW50VmFsaWRhdG9yLmpzJztcblxuLyoqXG4gKiBBZGFwdGVyIGNsYXNzIHRoYXQgd3JhcHMgYSBzaW1wbGUgUG9ydGZvbGlvRWxlbWVudCBhbmQgaW1wbGVtZW50cyBJRWxlbWVudFxuICogVGhpcyBhbGxvd3MgdXMgdG8gcGFzcyBwb3J0Zm9saW8gZWxlbWVudHMgdG8gbWV0aG9kcyBleHBlY3RpbmcgSUVsZW1lbnRcbiAqIHdpdGhvdXQgY29tcGxleCB0eXBlIGNhc3RpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIFBvcnRmb2xpb0VsZW1lbnRBZGFwdGVyIGltcGxlbWVudHMgSUVsZW1lbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IEVsZW1lbnRUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0YWRhdGE6IElFbGVtZW50TWV0YWRhdGE7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9ydGZvbGlvRWxlbWVudDogUG9ydGZvbGlvRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBQb3J0Zm9saW9FbGVtZW50KSB7XG4gICAgLy8gU0VDVVJJVFkgRklYICMyIChETUNQLVNFQy0wMDQpOiBOb3JtYWxpemUgYW5kIHZhbGlkYXRlIGFsbCB1c2VyIGlucHV0XG4gICAgLy8gUHJldmlvdXNseTogVXNlciBpbnB1dCB3YXMgdXNlZCBkaXJlY3RseSB3aXRob3V0IHZhbGlkYXRpb25cbiAgICAvLyBOb3c6IEFsbCBzdHJpbmcgaW5wdXRzIGdvIHRocm91Z2ggVW5pY29kZVZhbGlkYXRvciB0byBwcmV2ZW50IGhvbW9ncmFwaCBhdHRhY2tzXG4gICAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBVbmljb2RlVmFsaWRhdG9yLm5vcm1hbGl6ZShlbGVtZW50Lm1ldGFkYXRhLm5hbWUpO1xuICAgIGlmICghbm9ybWFsaXplZE5hbWUuaXNWYWxpZCkge1xuICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciBpbnZhbGlkIFVuaWNvZGVcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ1VOSUNPREVfVkFMSURBVElPTl9FUlJPUicsXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgICBkZXRhaWxzOiBgSW52YWxpZCBVbmljb2RlIGluIGVsZW1lbnQgbmFtZTogJHtub3JtYWxpemVkTmFtZS5kZXRlY3RlZElzc3Vlcz8uWzBdIHx8ICd1bmtub3duJ31gXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci53YXJuKCdJbnZhbGlkIFVuaWNvZGUgZGV0ZWN0ZWQgaW4gZWxlbWVudCBuYW1lJywge1xuICAgICAgICBpc3N1ZXM6IG5vcm1hbGl6ZWROYW1lLmRldGVjdGVkSXNzdWVzXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5wb3J0Zm9saW9FbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnR5cGUgPSBlbGVtZW50LnR5cGU7XG4gICAgdGhpcy52ZXJzaW9uID0gZWxlbWVudC5tZXRhZGF0YS52ZXJzaW9uIHx8ICcxLjAuMCc7XG4gICAgXG4gICAgLy8gR2VuZXJhdGUgSUQgZnJvbSB0eXBlIGFuZCBub3JtYWxpemVkIG5hbWVcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkucmVwbGFjZUFsbCgvWzouXS9nLCAnLScpO1xuICAgIGNvbnN0IHNhZmVOYW1lID0gbm9ybWFsaXplZE5hbWUubm9ybWFsaXplZENvbnRlbnQgfHwgZWxlbWVudC5tZXRhZGF0YS5uYW1lO1xuICAgIGNvbnN0IG5hbWVTbHVnID0gc2FmZU5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlQWxsKC9cXHMrL2csICctJyk7XG4gICAgdGhpcy5pZCA9IGAke2VsZW1lbnQudHlwZX1fJHtuYW1lU2x1Z31fJHt0aW1lc3RhbXB9YDtcbiAgICBcbiAgICAvLyBDb252ZXJ0IG1ldGFkYXRhIHRvIElFbGVtZW50TWV0YWRhdGEgZm9ybWF0IHdpdGggbm9ybWFsaXplZCB2YWx1ZXNcbiAgICB0aGlzLm1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogc2FmZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcoZWxlbWVudC5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJyksXG4gICAgICBhdXRob3I6IHRoaXMubm9ybWFsaXplU3RyaW5nKGVsZW1lbnQubWV0YWRhdGEuYXV0aG9yIHx8ICcnKSxcbiAgICAgIHZlcnNpb246IGVsZW1lbnQubWV0YWRhdGEudmVyc2lvbixcbiAgICAgIGNyZWF0ZWQ6IGVsZW1lbnQubWV0YWRhdGEuY3JlYXRlZCxcbiAgICAgIG1vZGlmaWVkOiBlbGVtZW50Lm1ldGFkYXRhLnVwZGF0ZWQsXG4gICAgICB0YWdzOiBbXVxuICAgIH07XG4gICAgXG4gICAgLy8gU0VDVVJJVFkgRklYICMzIChETUNQLVNFQy0wMDYpOiBMb2cgZWxlbWVudCBjcmVhdGlvbiBmb3IgYXVkaXQgdHJhaWxcbiAgICAvLyBQcmV2aW91c2x5OiBObyBhdWRpdCBsb2dnaW5nIGZvciBwb3J0Zm9saW8gb3BlcmF0aW9uc1xuICAgIC8vIE5vdzogQ29tcGxldGUgYXVkaXQgdHJhaWwgdXNpbmcgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoKVxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdFTEVNRU5UX0NSRUFURUQnLFxuICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgc291cmNlOiAnUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXIuY29uc3RydWN0b3InLFxuICAgICAgZGV0YWlsczogYENyZWF0ZWQgcG9ydGZvbGlvIGVsZW1lbnQgYWRhcHRlcjogJHt0aGlzLmlkfWAsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlLFxuICAgICAgICBlbGVtZW50SWQ6IHRoaXMuaWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhlbHBlciB0byBub3JtYWxpemUgc3RyaW5nIHZhbHVlcyBzYWZlbHlcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBub3JtYWxpemVkID0gVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUodmFsdWUpO1xuICAgIHJldHVybiBub3JtYWxpemVkLm5vcm1hbGl6ZWRDb250ZW50IHx8IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBlbGVtZW50XG4gICAqL1xuICB2YWxpZGF0ZSgpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBWYWxpZGF0aW9uV2FybmluZ1tdID0gW107XG5cbiAgICBpZiAoIXRoaXMubWV0YWRhdGEubmFtZSkge1xuICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICBtZXNzYWdlOiAnRWxlbWVudCBuYW1lIGlzIHJlcXVpcmVkJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGlmICghdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQpIHtcbiAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgZmllbGQ6ICdjb250ZW50JyxcbiAgICAgICAgbWVzc2FnZTogJ0VsZW1lbnQgY29udGVudCBpcyByZXF1aXJlZCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9yczogZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgICB3YXJuaW5nczogd2FybmluZ3MubGVuZ3RoID4gMCA/IHdhcm5pbmdzIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhlIGVsZW1lbnQgdG8gbWFya2Rvd24gd2l0aCBZQU1MIGZyb250bWF0dGVyXG4gICAqIEZJWDogQ2hhbmdlZCBmcm9tIEpTT04gdG8gbWFya2Rvd24gZm9ybWF0IGZvciBHaXRIdWIgcG9ydGZvbGlvIGNvbXBhdGliaWxpdHlcbiAgICogU0VDVVJJVFkgRklYICM1NDQ6IFBhcnNlIGFuZCB2YWxpZGF0ZSBleGlzdGluZyBmcm9udG1hdHRlciBpbnN0ZWFkIG9mIHJldHVybmluZyBhcy1pc1xuICAgKiBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICAvLyBTRUNVUklUWSBGSVggIzU0MzogVXNlIGdyYXktbWF0dGVyIGZvciByb2J1c3QgZnJvbnRtYXR0ZXIgZGV0ZWN0aW9uXG4gICAgLy8gVGhpcyBoYW5kbGVzIGRpZmZlcmVudCBsaW5lIGVuZGluZ3MsIHdoaXRlc3BhY2UgdmFyaWF0aW9ucywgYW5kIG1hbGZvcm1lZCBZQU1MXG4gICAgbGV0IGNvbnRlbnRUb1Byb2Nlc3MgPSB0aGlzLnBvcnRmb2xpb0VsZW1lbnQuY29udGVudDtcbiAgICBsZXQgZXhpc3RpbmdNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgIGxldCBib2R5Q29udGVudCA9IGNvbnRlbnRUb1Byb2Nlc3M7XG4gICAgXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGV4aXN0aW5nIGZyb250bWF0dGVyIGlmIHByZXNlbnRcbiAgICB0cnkge1xuICAgICAgLy8gZ3JheS1tYXR0ZXIgaGFuZGxlcyBhbGwgZWRnZSBjYXNlczpcbiAgICAgIC8vIC0gRGlmZmVyZW50IGxpbmUgZW5kaW5ncyAoXFxuLCBcXHJcXG4pXG4gICAgICAvLyAtIFdoaXRlc3BhY2UgdmFyaWF0aW9uc1xuICAgICAgLy8gLSBNYWxmb3JtZWQgWUFNTCAocmV0dXJucyBlbXB0eSBkYXRhIG9iamVjdClcbiAgICAgIC8vIC0gTWlzc2luZyBjbG9zaW5nIGRlbGltaXRlclxuICAgICAgY29uc3QgcGFyc2VkID0gbWF0dGVyKGNvbnRlbnRUb1Byb2Nlc3MpO1xuICAgICAgXG4gICAgICBpZiAocGFyc2VkLmRhdGEgJiYgT2JqZWN0LmtleXMocGFyc2VkLmRhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gU0VDVVJJVFkgRklYICM1NDQ6IFZhbGlkYXRlIGV4aXN0aW5nIGZyb250bWF0dGVyIGluc3RlYWQgb2YgYnlwYXNzaW5nXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgZXhpc3RpbmcgZnJvbnRtYXR0ZXIsIHZhbGlkYXRpbmcgYmVmb3JlIG1lcmdlJyk7XG4gICAgICAgIFxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgcGFyc2VkIGZyb250bWF0dGVyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBDb250ZW50VmFsaWRhdG9yLnZhbGlkYXRlQW5kU2FuaXRpemUoXG4gICAgICAgICAgeWFtbC5kdW1wKHBhcnNlZC5kYXRhKVxuICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQgJiYgdmFsaWRhdGlvblJlc3VsdC5zZXZlcml0eSA9PT0gJ2NyaXRpY2FsJykge1xuICAgICAgICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3IgbWFsaWNpb3VzIGZyb250bWF0dGVyXG4gICAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgICAgdHlwZTogJ0NPTlRFTlRfSU5KRUNUSU9OX0FUVEVNUFQnLFxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdISUdIJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgICAgICBkZXRhaWxzOiBgQ3JpdGljYWwgc2VjdXJpdHkgaXNzdWVzIGluIGZyb250bWF0dGVyOiAke3ZhbGlkYXRpb25SZXN1bHQuZGV0ZWN0ZWRQYXR0ZXJucz8uam9pbignLCAnKX1gLFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgZWxlbWVudElkOiB0aGlzLmlkLFxuICAgICAgICAgICAgICBlbGVtZW50VHlwZTogdGhpcy50eXBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gRG9uJ3QgdXNlIHRoZSBtYWxpY2lvdXMgZnJvbnRtYXR0ZXIsIGNyZWF0ZSBuZXdcbiAgICAgICAgICBleGlzdGluZ01ldGFkYXRhID0ge307XG4gICAgICAgICAgYm9keUNvbnRlbnQgPSBjb250ZW50VG9Qcm9jZXNzOyAvLyBVc2Ugb3JpZ2luYWwgY29udGVudFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZyb250bWF0dGVyIGlzIHNhZmUsIG1lcmdlIHdpdGggb3VyIG1ldGFkYXRhXG4gICAgICAgICAgZXhpc3RpbmdNZXRhZGF0YSA9IHBhcnNlZC5kYXRhO1xuICAgICAgICAgIGJvZHlDb250ZW50ID0gcGFyc2VkLmNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWYgZ3JheS1tYXR0ZXIgZmFpbHMgdG8gcGFyc2UsIHRyZWF0IGFzIGNvbnRlbnQgd2l0aG91dCBmcm9udG1hdHRlclxuICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwYXJzZSBwb3RlbnRpYWwgZnJvbnRtYXR0ZXIsIHRyZWF0aW5nIGFzIHBsYWluIGNvbnRlbnQnLCB7XG4gICAgICAgIGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgIH0pO1xuICAgICAgLy8gQ29udGludWUgd2l0aCBlbXB0eSBtZXRhZGF0YSBhbmQgZnVsbCBjb250ZW50XG4gICAgfVxuICAgIFxuICAgIC8vIE1lcmdlIG1ldGFkYXRhLCB3aXRoIG91ciBtZXRhZGF0YSB0YWtpbmcgcHJlY2VkZW5jZSBmb3Igc2VjdXJpdHlcbiAgICAvLyBUaGlzIGVuc3VyZXMgY3JpdGljYWwgZmllbGRzIGxpa2UgSUQgYW5kIHR5cGUgYXJlIGFsd2F5cyBmcm9tIG91ciB2YWxpZGF0ZWQgc291cmNlXG4gICAgY29uc3QgbWVyZ2VkTWV0YWRhdGEgPSB7XG4gICAgICAuLi5leGlzdGluZ01ldGFkYXRhLCAvLyBFeGlzdGluZyBtZXRhZGF0YSBmaXJzdFxuICAgICAgLi4udGhpcy5tZXRhZGF0YSwgICAgLy8gT3VyIHZhbGlkYXRlZCBtZXRhZGF0YSBvdmVyd3JpdGVzXG4gICAgICBpZDogdGhpcy5pZCwgICAgICAgICAvLyBBbHdheXMgdXNlIG91ciBJRFxuICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gQ1JJVElDQUwgRklYOiBBZGQgdW5pcXVlX2lkIGZvciBjb2xsZWN0aW9uIHdvcmtmbG93IGNvbXBhdGliaWxpdHlcbiAgICAgIHR5cGU6IHRoaXMudHlwZSwgICAgIC8vIEFsd2F5cyB1c2Ugb3VyIHR5cGVcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbiAvLyBBbHdheXMgdXNlIG91ciB2ZXJzaW9uXG4gICAgfTtcbiAgICBcbiAgICAvLyBWYWxpZGF0ZSB0aGUgZmluYWwgbWVyZ2VkIG1ldGFkYXRhXG4gICAgY29uc3QgbWV0YWRhdGFZYW1sID0geWFtbC5kdW1wKG1lcmdlZE1ldGFkYXRhLCB7XG4gICAgICBub1JlZnM6IHRydWUsXG4gICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICBsaW5lV2lkdGg6IC0xXG4gICAgfSk7XG4gICAgXG4gICAgLy8gRmluYWwgc2VjdXJpdHkgY2hlY2sgb24gdGhlIGNvbXBsZXRlIG1ldGFkYXRhXG4gICAgY29uc3QgZmluYWxWYWxpZGF0aW9uID0gQ29udGVudFZhbGlkYXRvci52YWxpZGF0ZUFuZFNhbml0aXplKG1ldGFkYXRhWWFtbCk7XG4gICAgXG4gICAgaWYgKCFmaW5hbFZhbGlkYXRpb24uaXNWYWxpZCAmJiBmaW5hbFZhbGlkYXRpb24uc2V2ZXJpdHkgPT09ICdjcml0aWNhbCcpIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiB3aXRoIG91ciBzYW5pdGl6ZWQgZGF0YSwgYnV0IGxvZyBpZiBpdCBkb2VzXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdVTklDT0RFX1ZBTElEQVRJT05fRVJST1InLFxuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ1BvcnRmb2xpb0VsZW1lbnRBZGFwdGVyLnNlcmlhbGl6ZScsXG4gICAgICAgIGRldGFpbHM6ICdGaW5hbCBtZXRhZGF0YSB2YWxpZGF0aW9uIGZhaWxlZCBhZnRlciBtZXJnZScsXG4gICAgICAgIG1ldGFkYXRhOiB7IGVsZW1lbnRJZDogdGhpcy5pZCB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gRmFsbCBiYWNrIHRvIG1pbmltYWwgc2FmZSBtZXRhZGF0YVxuICAgICAgY29uc3Qgc2FmZU1ldGFkYXRhID0ge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgdW5pcXVlX2lkOiB0aGlzLmlkLCAgLy8gQ1JJVElDQUwgRklYOiBJbmNsdWRlIHVuaXF1ZV9pZCBmb3IgY29sbGVjdGlvbiB3b3JrZmxvd1xuICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgbmFtZTogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5uYW1lIHx8ICdVbnRpdGxlZCcpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ub3JtYWxpemVTdHJpbmcodGhpcy5tZXRhZGF0YS5kZXNjcmlwdGlvbiB8fCAnJylcbiAgICAgIH07XG4gICAgICBcbiAgICAgIGNvbnN0IHNhZmVGcm9udG1hdHRlciA9IHlhbWwuZHVtcChzYWZlTWV0YWRhdGEsIHtcbiAgICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgICBzb3J0S2V5czogZmFsc2UsXG4gICAgICAgIGxpbmVXaWR0aDogLTFcbiAgICAgIH0pO1xuICAgICAgXG4gICAgICByZXR1cm4gYC0tLVxcbiR7c2FmZUZyb250bWF0dGVyfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgICB9XG4gICAgXG4gICAgLy8gUmV0dXJuIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIG1hcmtkb3duIHdpdGggZnJvbnRtYXR0ZXJcbiAgICByZXR1cm4gYC0tLVxcbiR7bWV0YWRhdGFZYW1sfS0tLVxcblxcbiR7Ym9keUNvbnRlbnR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBmcm9tIHN0cmluZyAobm90IGltcGxlbWVudGVkIGZvciBhZGFwdGVyKVxuICAgKi9cbiAgZGVzZXJpYWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXNlcmlhbGl6YXRpb24gbm90IHN1cHBvcnRlZCBmb3IgUG9ydGZvbGlvRWxlbWVudEFkYXB0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZWxlbWVudCBzdGF0dXNcbiAgICovXG4gIGdldFN0YXR1cygpOiBFbGVtZW50U3RhdHVzIHtcbiAgICByZXR1cm4gRWxlbWVudFN0YXR1cy5JTkFDVElWRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yaWdpbmFsIHBvcnRmb2xpbyBlbGVtZW50IGNvbnRlbnRcbiAgICovXG4gIGdldENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wb3J0Zm9saW9FbGVtZW50LmNvbnRlbnQ7XG4gIH1cbn0iXX0=
|