@decohere/scaffold 0.0.1-dev.84 → 0.0.1-dev.85
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/commonjs/src/models/dev-container.model.js +14 -3
- package/commonjs/src/webapi/create-api.js +13 -5
- package/es6/src/models/dev-container.model.js +14 -3
- package/es6/src/webapi/create-api.js +14 -6
- package/package.json +3 -3
- package/types/src/models/dev-container.model.d.ts +5 -1
- package/types/src/webapi/create-api.d.ts +1 -1
|
@@ -15,6 +15,7 @@ class DevContainer {
|
|
|
15
15
|
_ports = [];
|
|
16
16
|
_portAttributes = new Map();
|
|
17
17
|
_mounts;
|
|
18
|
+
_workspaceFolder = "/workspace";
|
|
18
19
|
_postCreateCommand;
|
|
19
20
|
_updateContentCommand;
|
|
20
21
|
_postStartCommand;
|
|
@@ -23,9 +24,19 @@ class DevContainer {
|
|
|
23
24
|
_useCompose = false;
|
|
24
25
|
constructor(){
|
|
25
26
|
this._mounts = [
|
|
26
|
-
|
|
27
|
+
this.bindMount(this._workspaceFolder)
|
|
27
28
|
];
|
|
28
29
|
}
|
|
30
|
+
/** In-container path Cursor/VS Code opens (Agents window uses the basename). */ setWorkspaceFolder(folder) {
|
|
31
|
+
this._workspaceFolder = folder;
|
|
32
|
+
this._mounts = [
|
|
33
|
+
this.bindMount(folder)
|
|
34
|
+
];
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
bindMount(target) {
|
|
38
|
+
return `source=..,target=${target},type=bind,consistency=cached`;
|
|
39
|
+
}
|
|
29
40
|
addExtension(...ids) {
|
|
30
41
|
this._extensions.push(...ids);
|
|
31
42
|
return this;
|
|
@@ -67,7 +78,7 @@ class DevContainer {
|
|
|
67
78
|
if (this._useCompose) {
|
|
68
79
|
config.dockerComposeFile = "docker-compose.yml";
|
|
69
80
|
config.service = "devcontainer";
|
|
70
|
-
config.workspaceFolder =
|
|
81
|
+
config.workspaceFolder = this._workspaceFolder;
|
|
71
82
|
}
|
|
72
83
|
if (this._initializeCommand) {
|
|
73
84
|
config.initializeCommand = this._initializeCommand;
|
|
@@ -113,4 +124,4 @@ class DevContainer {
|
|
|
113
124
|
}
|
|
114
125
|
}
|
|
115
126
|
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy9tb2RlbHMvZGV2LWNvbnRhaW5lci5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKlxuICogTW9kZWwgZm9yIGAuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uYC5cbiAqXG4gKiBGZWF0dXJlcyBjYWxsIGJ1aWxkZXIgbWV0aG9kcyAoYGFkZEV4dGVuc2lvbmAsIGBmb3J3YXJkUG9ydGAsIGV0Yy4pIGR1cmluZ1xuICogdGhlaXIgY29uZmlndXJlIHBoYXNlLiBgTW9ub1JlcG9TY2FmZm9sZGAgY2FsbHMgYGZpbGVzKClgIGF0IHJlbmRlciB0aW1lLlxuICovXG5cbmV4cG9ydCB0eXBlIFBvcnRBdHRyaWJ1dGVzID0ge1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIFdoZW4gdHJ1ZSwgaG9zdCBwb3J0IG11c3QgbWF0Y2ggdGhlIGNvbnRhaW5lciBwb3J0IChubyByYW5kb20gcmVtYXApLiAqL1xuXHRyZXF1aXJlTG9jYWxQb3J0PzogYm9vbGVhbjtcblx0b25BdXRvRm9yd2FyZD86IFwibm90aWZ5XCIgfCBcIm9wZW5Ccm93c2VyXCIgfCBcIm9wZW5QcmV2aWV3XCIgfCBcInNpbGVudFwiIHwgXCJpZ25vcmVcIjtcbn07XG5cbmV4cG9ydCBjbGFzcyBEZXZDb250YWluZXIgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuREVWQ09OVEFJTkVSX0pTT047XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BvcnRzOiBudW1iZXJbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wb3J0QXR0cmlidXRlcyA9IG5ldyBNYXA8bnVtYmVyLCBQb3J0QXR0cmlidXRlcz4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfbW91bnRzOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBfcG9zdENyZWF0ZUNvbW1hbmQ/OiBzdHJpbmc7XG5cdHByaXZhdGUgX3VwZGF0ZUNvbnRlbnRDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF9wb3N0U3RhcnRDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF9pbml0aWFsaXplQ29tbWFuZD86IHN0cmluZztcblx0cHJpdmF0ZSBfcmVtb3RlVXNlciA9IFwibm9kZVwiO1xuXHRwcml2YXRlIF91c2VDb21wb3NlID0gZmFsc2U7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuX21vdW50cyA9IFtcInNvdXJjZT0uLix0YXJnZXQ9L3dvcmtzcGFjZSx0eXBlPWJpbmQsY29uc2lzdGVuY3k9Y2FjaGVkXCJdO1xuXHR9XG5cblx0cHVibGljIGFkZEV4dGVuc2lvbiguLi5pZHM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fZXh0ZW5zaW9ucy5wdXNoKC4uLmlkcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZm9yd2FyZFBvcnQoLi4ucG9ydHM6IG51bWJlcltdKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9ydHMucHVzaCguLi5wb3J0cyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0UG9ydEF0dHJpYnV0ZXMocG9ydDogbnVtYmVyLCBhdHRyczogUG9ydEF0dHJpYnV0ZXMpOiB0aGlzIHtcblx0XHR0aGlzLl9wb3J0QXR0cmlidXRlcy5zZXQocG9ydCwgYXR0cnMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFBvc3RDcmVhdGVDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdENyZWF0ZUNvbW1hbmQgPSBjbWQ7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0VXBkYXRlQ29udGVudENvbW1hbmQoY21kOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl91cGRhdGVDb250ZW50Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRQb3N0U3RhcnRDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdFN0YXJ0Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsaXplQ29tbWFuZChjbWQ6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2luaXRpYWxpemVDb21tYW5kID0gY21kO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFJlbW90ZVVzZXIodXNlcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcmVtb3RlVXNlciA9IHVzZXI7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgdXNlQ29tcG9zZSgpOiB0aGlzIHtcblx0XHR0aGlzLl91c2VDb21wb3NlID0gdHJ1ZTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRcdGlmICh0aGlzLl91c2VDb21wb3NlKSB7XG5cdFx0XHRjb25maWcuZG9ja2VyQ29tcG9zZUZpbGUgPSBcImRvY2tlci1jb21wb3NlLnltbFwiO1xuXHRcdFx0Y29uZmlnLnNlcnZpY2UgPSBcImRldmNvbnRhaW5lclwiO1xuXHRcdFx0Y29uZmlnLndvcmtzcGFjZUZvbGRlciA9IFwiL3dvcmtzcGFjZVwiO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9pbml0aWFsaXplQ29tbWFuZCkge1xuXHRcdFx0Y29uZmlnLmluaXRpYWxpemVDb21tYW5kID0gdGhpcy5faW5pdGlhbGl6ZUNvbW1hbmQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX21vdW50cykge1xuXHRcdFx0Y29uZmlnLm1vdW50cyA9IHRoaXMuX21vdW50cztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fZXh0ZW5zaW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25maWcuY3VzdG9taXphdGlvbnMgPSB7IHZzY29kZTogeyBleHRlbnNpb25zOiB0aGlzLl9leHRlbnNpb25zIH0gfTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9ydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uZmlnLmZvcndhcmRQb3J0cyA9IHRoaXMuX3BvcnRzO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9wb3J0QXR0cmlidXRlcy5zaXplID4gMCkge1xuXHRcdFx0Y29uc3QgcG9ydHNBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBQb3J0QXR0cmlidXRlcz4gPSB7fTtcblx0XHRcdGZvciAoY29uc3QgW3BvcnQsIGF0dHJzXSBvZiB0aGlzLl9wb3J0QXR0cmlidXRlcykge1xuXHRcdFx0XHRwb3J0c0F0dHJpYnV0ZXNbU3RyaW5nKHBvcnQpXSA9IGF0dHJzO1xuXHRcdFx0fVxuXHRcdFx0Y29uZmlnLnBvcnRzQXR0cmlidXRlcyA9IHBvcnRzQXR0cmlidXRlcztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9zdENyZWF0ZUNvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5wb3N0Q3JlYXRlQ29tbWFuZCA9IHRoaXMuX3Bvc3RDcmVhdGVDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl91cGRhdGVDb250ZW50Q29tbWFuZCkge1xuXHRcdFx0Y29uZmlnLnVwZGF0ZUNvbnRlbnRDb21tYW5kID0gdGhpcy5fdXBkYXRlQ29udGVudENvbW1hbmQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3Bvc3RTdGFydENvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5wb3N0U3RhcnRDb21tYW5kID0gdGhpcy5fcG9zdFN0YXJ0Q29tbWFuZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcmVtb3RlVXNlcikge1xuXHRcdFx0Y29uZmlnLnJlbW90ZVVzZXIgPSB0aGlzLl9yZW1vdGVVc2VyO1xuXHRcdH1cblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5kZXZjb250YWluZXIvZGV2Y29udGFpbmVyLmpzb25cIixcblx0XHRcdFx0Y29udGVudDogSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIkRldkNvbnRhaW5lciIsImtleSIsIldFTExfS05PV05fRklMRVMiLCJERVZDT05UQUlORVJfSlNPTiIsIl9leHRlbnNpb25zIiwiX3BvcnRzIiwiX3BvcnRBdHRyaWJ1dGVzIiwiTWFwIiwiX21vdW50cyIsIl9wb3N0Q3JlYXRlQ29tbWFuZCIsIl91cGRhdGVDb250ZW50Q29tbWFuZCIsIl9wb3N0U3RhcnRDb21tYW5kIiwiX2luaXRpYWxpemVDb21tYW5kIiwiX3JlbW90ZVVzZXIiLCJfdXNlQ29tcG9zZSIsImFkZEV4dGVuc2lvbiIsImlkcyIsInB1c2giLCJmb3J3YXJkUG9ydCIsInBvcnRzIiwic2V0UG9ydEF0dHJpYnV0ZXMiLCJwb3J0IiwiYXR0cnMiLCJzZXQiLCJzZXRQb3N0Q3JlYXRlQ29tbWFuZCIsImNtZCIsInNldFVwZGF0ZUNvbnRlbnRDb21tYW5kIiwic2V0UG9zdFN0YXJ0Q29tbWFuZCIsInNldEluaXRpYWxpemVDb21tYW5kIiwic2V0UmVtb3RlVXNlciIsInVzZXIiLCJ1c2VDb21wb3NlIiwiZmlsZXMiLCJjb25maWciLCJkb2NrZXJDb21wb3NlRmlsZSIsInNlcnZpY2UiLCJ3b3Jrc3BhY2VGb2xkZXIiLCJpbml0aWFsaXplQ29tbWFuZCIsIm1vdW50cyIsImxlbmd0aCIsImN1c3RvbWl6YXRpb25zIiwidnNjb2RlIiwiZXh0ZW5zaW9ucyIsImZvcndhcmRQb3J0cyIsInNpemUiLCJwb3J0c0F0dHJpYnV0ZXMiLCJTdHJpbmciLCJwb3N0Q3JlYXRlQ29tbWFuZCIsInVwZGF0ZUNvbnRlbnRDb21tYW5kIiwicG9zdFN0YXJ0Q29tbWFuZCIsInJlbW90ZVVzZXIiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiOzs7OytCQWlCYUE7OztlQUFBQTs7O3VCQWpCb0I7QUFpQjFCLE1BQU1BO0lBQ0lDLE1BQU1DLHVCQUFnQixDQUFDQyxpQkFBaUIsQ0FBQztJQUN4Q0MsY0FBd0IsRUFBRSxDQUFDO0lBQzNCQyxTQUFtQixFQUFFLENBQUM7SUFDdEJDLGtCQUFrQixJQUFJQyxNQUE4QjtJQUNwREMsUUFBa0I7SUFDM0JDLG1CQUE0QjtJQUM1QkMsc0JBQStCO0lBQy9CQyxrQkFBMkI7SUFDM0JDLG1CQUE0QjtJQUM1QkMsY0FBYyxPQUFPO0lBQ3JCQyxjQUFjLE1BQU07SUFFNUIsYUFBcUI7UUFDcEIsSUFBSSxDQUFDTixPQUFPLEdBQUc7WUFBQztTQUEyRDtJQUM1RTtJQUVPTyxhQUFhLEdBQUdDLEdBQWEsRUFBUTtRQUMzQyxJQUFJLENBQUNaLFdBQVcsQ0FBQ2EsSUFBSSxJQUFJRDtRQUN6QixPQUFPLElBQUk7SUFDWjtJQUVPRSxZQUFZLEdBQUdDLEtBQWUsRUFBUTtRQUM1QyxJQUFJLENBQUNkLE1BQU0sQ0FBQ1ksSUFBSSxJQUFJRTtRQUNwQixPQUFPLElBQUk7SUFDWjtJQUVPQyxrQkFBa0JDLElBQVksRUFBRUMsS0FBcUIsRUFBUTtRQUNuRSxJQUFJLENBQUNoQixlQUFlLENBQUNpQixHQUFHLENBQUNGLE1BQU1DO1FBQy9CLE9BQU8sSUFBSTtJQUNaO0lBRU9FLHFCQUFxQkMsR0FBVyxFQUFRO1FBQzlDLElBQUksQ0FBQ2hCLGtCQUFrQixHQUFHZ0I7UUFDMUIsT0FBTyxJQUFJO0lBQ1o7SUFFT0Msd0JBQXdCRCxHQUFXLEVBQVE7UUFDakQsSUFBSSxDQUFDZixxQkFBcUIsR0FBR2U7UUFDN0IsT0FBTyxJQUFJO0lBQ1o7SUFFT0Usb0JBQW9CRixHQUFXLEVBQVE7UUFDN0MsSUFBSSxDQUFDZCxpQkFBaUIsR0FBR2M7UUFDekIsT0FBTyxJQUFJO0lBQ1o7SUFFT0cscUJBQXFCSCxHQUFXLEVBQVE7UUFDOUMsSUFBSSxDQUFDYixrQkFBa0IsR0FBR2E7UUFDMUIsT0FBTyxJQUFJO0lBQ1o7SUFFT0ksY0FBY0MsSUFBWSxFQUFRO1FBQ3hDLElBQUksQ0FBQ2pCLFdBQVcsR0FBR2lCO1FBQ25CLE9BQU8sSUFBSTtJQUNaO0lBRU9DLGFBQW1CO1FBQ3pCLElBQUksQ0FBQ2pCLFdBQVcsR0FBRztRQUNuQixPQUFPLElBQUk7SUFDWjtJQUVPa0IsUUFBc0I7UUFDNUIsTUFBTUMsU0FBa0MsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQ25CLFdBQVcsRUFBRTtZQUNyQm1CLE9BQU9DLGlCQUFpQixHQUFHO1lBQzNCRCxPQUFPRSxPQUFPLEdBQUc7WUFDakJGLE9BQU9HLGVBQWUsR0FBRztRQUMxQjtRQUVBLElBQUksSUFBSSxDQUFDeEIsa0JBQWtCLEVBQUU7WUFDNUJxQixPQUFPSSxpQkFBaUIsR0FBRyxJQUFJLENBQUN6QixrQkFBa0I7UUFDbkQ7UUFFQSxJQUFJLElBQUksQ0FBQ0osT0FBTyxFQUFFO1lBQ2pCeUIsT0FBT0ssTUFBTSxHQUFHLElBQUksQ0FBQzlCLE9BQU87UUFDN0I7UUFFQSxJQUFJLElBQUksQ0FBQ0osV0FBVyxDQUFDbUMsTUFBTSxHQUFHLEdBQUc7WUFDaENOLE9BQU9PLGNBQWMsR0FBRztnQkFBRUMsUUFBUTtvQkFBRUMsWUFBWSxJQUFJLENBQUN0QyxXQUFXO2dCQUFDO1lBQUU7UUFDcEU7UUFFQSxJQUFJLElBQUksQ0FBQ0MsTUFBTSxDQUFDa0MsTUFBTSxHQUFHLEdBQUc7WUFDM0JOLE9BQU9VLFlBQVksR0FBRyxJQUFJLENBQUN0QyxNQUFNO1FBQ2xDO1FBRUEsSUFBSSxJQUFJLENBQUNDLGVBQWUsQ0FBQ3NDLElBQUksR0FBRyxHQUFHO1lBQ2xDLE1BQU1DLGtCQUFrRCxDQUFDO1lBQ3pELEtBQUssTUFBTSxDQUFDeEIsTUFBTUMsTUFBTSxJQUFJLElBQUksQ0FBQ2hCLGVBQWUsQ0FBRTtnQkFDakR1QyxlQUFlLENBQUNDLE9BQU96QixNQUFNLEdBQUdDO1lBQ2pDO1lBQ0FXLE9BQU9ZLGVBQWUsR0FBR0E7UUFDMUI7UUFFQSxJQUFJLElBQUksQ0FBQ3BDLGtCQUFrQixFQUFFO1lBQzVCd0IsT0FBT2MsaUJBQWlCLEdBQUcsSUFBSSxDQUFDdEMsa0JBQWtCO1FBQ25EO1FBRUEsSUFBSSxJQUFJLENBQUNDLHFCQUFxQixFQUFFO1lBQy9CdUIsT0FBT2Usb0JBQW9CLEdBQUcsSUFBSSxDQUFDdEMscUJBQXFCO1FBQ3pEO1FBRUEsSUFBSSxJQUFJLENBQUNDLGlCQUFpQixFQUFFO1lBQzNCc0IsT0FBT2dCLGdCQUFnQixHQUFHLElBQUksQ0FBQ3RDLGlCQUFpQjtRQUNqRDtRQUVBLElBQUksSUFBSSxDQUFDRSxXQUFXLEVBQUU7WUFDckJvQixPQUFPaUIsVUFBVSxHQUFHLElBQUksQ0FBQ3JDLFdBQVc7UUFDckM7UUFFQSxPQUFPO1lBQ047Z0JBQ0NzQyxVQUFVO2dCQUNWQyxTQUFTQyxLQUFLQyxTQUFTLENBQUNyQixRQUFRLE1BQU07WUFDdkM7U0FDQTtJQUNGO0FBQ0QifQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy9tb2RlbHMvZGV2LWNvbnRhaW5lci5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKlxuICogTW9kZWwgZm9yIGAuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uYC5cbiAqXG4gKiBGZWF0dXJlcyBjYWxsIGJ1aWxkZXIgbWV0aG9kcyAoYGFkZEV4dGVuc2lvbmAsIGBmb3J3YXJkUG9ydGAsIGV0Yy4pIGR1cmluZ1xuICogdGhlaXIgY29uZmlndXJlIHBoYXNlLiBgTW9ub1JlcG9TY2FmZm9sZGAgY2FsbHMgYGZpbGVzKClgIGF0IHJlbmRlciB0aW1lLlxuICovXG5cbmV4cG9ydCB0eXBlIFBvcnRBdHRyaWJ1dGVzID0ge1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIFdoZW4gdHJ1ZSwgaG9zdCBwb3J0IG11c3QgbWF0Y2ggdGhlIGNvbnRhaW5lciBwb3J0IChubyByYW5kb20gcmVtYXApLiAqL1xuXHRyZXF1aXJlTG9jYWxQb3J0PzogYm9vbGVhbjtcblx0b25BdXRvRm9yd2FyZD86IFwibm90aWZ5XCIgfCBcIm9wZW5Ccm93c2VyXCIgfCBcIm9wZW5QcmV2aWV3XCIgfCBcInNpbGVudFwiIHwgXCJpZ25vcmVcIjtcbn07XG5cbmV4cG9ydCBjbGFzcyBEZXZDb250YWluZXIgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuREVWQ09OVEFJTkVSX0pTT047XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BvcnRzOiBudW1iZXJbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wb3J0QXR0cmlidXRlcyA9IG5ldyBNYXA8bnVtYmVyLCBQb3J0QXR0cmlidXRlcz4oKTtcblx0cHJpdmF0ZSBfbW91bnRzOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBfd29ya3NwYWNlRm9sZGVyID0gXCIvd29ya3NwYWNlXCI7XG5cdHByaXZhdGUgX3Bvc3RDcmVhdGVDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF91cGRhdGVDb250ZW50Q29tbWFuZD86IHN0cmluZztcblx0cHJpdmF0ZSBfcG9zdFN0YXJ0Q29tbWFuZD86IHN0cmluZztcblx0cHJpdmF0ZSBfaW5pdGlhbGl6ZUNvbW1hbmQ/OiBzdHJpbmc7XG5cdHByaXZhdGUgX3JlbW90ZVVzZXIgPSBcIm5vZGVcIjtcblx0cHJpdmF0ZSBfdXNlQ29tcG9zZSA9IGZhbHNlO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLl9tb3VudHMgPSBbdGhpcy5iaW5kTW91bnQodGhpcy5fd29ya3NwYWNlRm9sZGVyKV07XG5cdH1cblxuXHQvKiogSW4tY29udGFpbmVyIHBhdGggQ3Vyc29yL1ZTIENvZGUgb3BlbnMgKEFnZW50cyB3aW5kb3cgdXNlcyB0aGUgYmFzZW5hbWUpLiAqL1xuXHRwdWJsaWMgc2V0V29ya3NwYWNlRm9sZGVyKGZvbGRlcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fd29ya3NwYWNlRm9sZGVyID0gZm9sZGVyO1xuXHRcdHRoaXMuX21vdW50cyA9IFt0aGlzLmJpbmRNb3VudChmb2xkZXIpXTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHByaXZhdGUgYmluZE1vdW50KHRhcmdldDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYHNvdXJjZT0uLix0YXJnZXQ9JHt0YXJnZXR9LHR5cGU9YmluZCxjb25zaXN0ZW5jeT1jYWNoZWRgO1xuXHR9XG5cblx0cHVibGljIGFkZEV4dGVuc2lvbiguLi5pZHM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fZXh0ZW5zaW9ucy5wdXNoKC4uLmlkcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZm9yd2FyZFBvcnQoLi4ucG9ydHM6IG51bWJlcltdKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9ydHMucHVzaCguLi5wb3J0cyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0UG9ydEF0dHJpYnV0ZXMocG9ydDogbnVtYmVyLCBhdHRyczogUG9ydEF0dHJpYnV0ZXMpOiB0aGlzIHtcblx0XHR0aGlzLl9wb3J0QXR0cmlidXRlcy5zZXQocG9ydCwgYXR0cnMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFBvc3RDcmVhdGVDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdENyZWF0ZUNvbW1hbmQgPSBjbWQ7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0VXBkYXRlQ29udGVudENvbW1hbmQoY21kOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl91cGRhdGVDb250ZW50Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRQb3N0U3RhcnRDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdFN0YXJ0Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsaXplQ29tbWFuZChjbWQ6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2luaXRpYWxpemVDb21tYW5kID0gY21kO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFJlbW90ZVVzZXIodXNlcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcmVtb3RlVXNlciA9IHVzZXI7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgdXNlQ29tcG9zZSgpOiB0aGlzIHtcblx0XHR0aGlzLl91c2VDb21wb3NlID0gdHJ1ZTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRcdGlmICh0aGlzLl91c2VDb21wb3NlKSB7XG5cdFx0XHRjb25maWcuZG9ja2VyQ29tcG9zZUZpbGUgPSBcImRvY2tlci1jb21wb3NlLnltbFwiO1xuXHRcdFx0Y29uZmlnLnNlcnZpY2UgPSBcImRldmNvbnRhaW5lclwiO1xuXHRcdFx0Y29uZmlnLndvcmtzcGFjZUZvbGRlciA9IHRoaXMuX3dvcmtzcGFjZUZvbGRlcjtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5faW5pdGlhbGl6ZUNvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5pbml0aWFsaXplQ29tbWFuZCA9IHRoaXMuX2luaXRpYWxpemVDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9tb3VudHMpIHtcblx0XHRcdGNvbmZpZy5tb3VudHMgPSB0aGlzLl9tb3VudHM7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2V4dGVuc2lvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uZmlnLmN1c3RvbWl6YXRpb25zID0geyB2c2NvZGU6IHsgZXh0ZW5zaW9uczogdGhpcy5fZXh0ZW5zaW9ucyB9IH07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3BvcnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbmZpZy5mb3J3YXJkUG9ydHMgPSB0aGlzLl9wb3J0cztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9ydEF0dHJpYnV0ZXMuc2l6ZSA+IDApIHtcblx0XHRcdGNvbnN0IHBvcnRzQXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgUG9ydEF0dHJpYnV0ZXM+ID0ge307XG5cdFx0XHRmb3IgKGNvbnN0IFtwb3J0LCBhdHRyc10gb2YgdGhpcy5fcG9ydEF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0cG9ydHNBdHRyaWJ1dGVzW1N0cmluZyhwb3J0KV0gPSBhdHRycztcblx0XHRcdH1cblx0XHRcdGNvbmZpZy5wb3J0c0F0dHJpYnV0ZXMgPSBwb3J0c0F0dHJpYnV0ZXM7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3Bvc3RDcmVhdGVDb21tYW5kKSB7XG5cdFx0XHRjb25maWcucG9zdENyZWF0ZUNvbW1hbmQgPSB0aGlzLl9wb3N0Q3JlYXRlQ29tbWFuZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fdXBkYXRlQ29udGVudENvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy51cGRhdGVDb250ZW50Q29tbWFuZCA9IHRoaXMuX3VwZGF0ZUNvbnRlbnRDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9wb3N0U3RhcnRDb21tYW5kKSB7XG5cdFx0XHRjb25maWcucG9zdFN0YXJ0Q29tbWFuZCA9IHRoaXMuX3Bvc3RTdGFydENvbW1hbmQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3JlbW90ZVVzZXIpIHtcblx0XHRcdGNvbmZpZy5yZW1vdGVVc2VyID0gdGhpcy5fcmVtb3RlVXNlcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJEZXZDb250YWluZXIiLCJrZXkiLCJXRUxMX0tOT1dOX0ZJTEVTIiwiREVWQ09OVEFJTkVSX0pTT04iLCJfZXh0ZW5zaW9ucyIsIl9wb3J0cyIsIl9wb3J0QXR0cmlidXRlcyIsIk1hcCIsIl9tb3VudHMiLCJfd29ya3NwYWNlRm9sZGVyIiwiX3Bvc3RDcmVhdGVDb21tYW5kIiwiX3VwZGF0ZUNvbnRlbnRDb21tYW5kIiwiX3Bvc3RTdGFydENvbW1hbmQiLCJfaW5pdGlhbGl6ZUNvbW1hbmQiLCJfcmVtb3RlVXNlciIsIl91c2VDb21wb3NlIiwiYmluZE1vdW50Iiwic2V0V29ya3NwYWNlRm9sZGVyIiwiZm9sZGVyIiwidGFyZ2V0IiwiYWRkRXh0ZW5zaW9uIiwiaWRzIiwicHVzaCIsImZvcndhcmRQb3J0IiwicG9ydHMiLCJzZXRQb3J0QXR0cmlidXRlcyIsInBvcnQiLCJhdHRycyIsInNldCIsInNldFBvc3RDcmVhdGVDb21tYW5kIiwiY21kIiwic2V0VXBkYXRlQ29udGVudENvbW1hbmQiLCJzZXRQb3N0U3RhcnRDb21tYW5kIiwic2V0SW5pdGlhbGl6ZUNvbW1hbmQiLCJzZXRSZW1vdGVVc2VyIiwidXNlciIsInVzZUNvbXBvc2UiLCJmaWxlcyIsImNvbmZpZyIsImRvY2tlckNvbXBvc2VGaWxlIiwic2VydmljZSIsIndvcmtzcGFjZUZvbGRlciIsImluaXRpYWxpemVDb21tYW5kIiwibW91bnRzIiwibGVuZ3RoIiwiY3VzdG9taXphdGlvbnMiLCJ2c2NvZGUiLCJleHRlbnNpb25zIiwiZm9yd2FyZFBvcnRzIiwic2l6ZSIsInBvcnRzQXR0cmlidXRlcyIsIlN0cmluZyIsInBvc3RDcmVhdGVDb21tYW5kIiwidXBkYXRlQ29udGVudENvbW1hbmQiLCJwb3N0U3RhcnRDb21tYW5kIiwicmVtb3RlVXNlciIsImZpbGVQYXRoIiwiY29udGVudCIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7K0JBaUJhQTs7O2VBQUFBOzs7dUJBakJvQjtBQWlCMUIsTUFBTUE7SUFDSUMsTUFBTUMsdUJBQWdCLENBQUNDLGlCQUFpQixDQUFDO0lBQ3hDQyxjQUF3QixFQUFFLENBQUM7SUFDM0JDLFNBQW1CLEVBQUUsQ0FBQztJQUN0QkMsa0JBQWtCLElBQUlDLE1BQThCO0lBQzdEQyxRQUFrQjtJQUNsQkMsbUJBQW1CLGFBQWE7SUFDaENDLG1CQUE0QjtJQUM1QkMsc0JBQStCO0lBQy9CQyxrQkFBMkI7SUFDM0JDLG1CQUE0QjtJQUM1QkMsY0FB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
|
|
@@ -70,16 +70,20 @@ function createWorkspace(targetDir, projectName, apiNames) {
|
|
|
70
70
|
monoRepo.targetDir = targetDir;
|
|
71
71
|
monoRepo.setName(projectName);
|
|
72
72
|
const name = monoRepo.name;
|
|
73
|
+
// Project-named root so Cursor Agents (and other tools) label the workspace by name.
|
|
74
|
+
const workspaceRoot = `/${name}`;
|
|
73
75
|
const compose = new _composemodel.DockerCompose().setProjectName(name).addHeaderComment("Merge .cursor/mcp.json in the service command. postStartCommand runs after Cursor's first MCP snapshot.").addNetwork(name, {
|
|
74
76
|
name: `samples-${name}`
|
|
75
77
|
}).addService("devcontainer", {
|
|
76
78
|
build: ".",
|
|
77
79
|
volumes: [
|
|
80
|
+
// Repo bind in Compose (survives CLI recreates; Cursor-only mounts do not).
|
|
81
|
+
`..:${workspaceRoot}`,
|
|
78
82
|
// Workspace-local (created by initialize.sh as the host user).
|
|
79
83
|
// Do NOT bind ${HOME}/.npm/... — Docker creates missing host paths as root.
|
|
80
84
|
"./npm-auth:/home/node/.npm-config",
|
|
81
85
|
"./gh-auth:/home/node/.config/gh",
|
|
82
|
-
|
|
86
|
+
`webapi-node-modules:${workspaceRoot}/node_modules`,
|
|
83
87
|
// Named volume (not a Cursor-only mount) so CLI recreates keep Up-arrow history.
|
|
84
88
|
`${_dockerimagemodel.commandHistory.volumeName}:${_dockerimagemodel.commandHistory.dir}`
|
|
85
89
|
],
|
|
@@ -89,13 +93,13 @@ function createWorkspace(targetDir, projectName, apiNames) {
|
|
|
89
93
|
environment: {
|
|
90
94
|
NPM_CONFIG_USERCONFIG: "/home/node/.npm-config/.npmrc"
|
|
91
95
|
},
|
|
92
|
-
command:
|
|
96
|
+
command: `'bash -c "CODEBASE_RAG_WORKSPACE=${workspaceRoot} node --experimental-strip-types ${workspaceRoot}/.devcontainer/codebase-rag-mcp.ts merge || true && exec sleep infinity"'`,
|
|
93
97
|
networks: [
|
|
94
98
|
name
|
|
95
99
|
]
|
|
96
100
|
}).addVolume("webapi-node-modules").addVolume(_dockerimagemodel.commandHistory.volumeName);
|
|
97
101
|
const installCmd = "bash .devcontainer/post-create.sh";
|
|
98
|
-
const devContainer = new _devcontainermodel.DevContainer().addExtension("biomejs.biome", "vitest.explorer").setInitializeCommand("bash .devcontainer/initialize.sh").setPostCreateCommand(installCmd).setUpdateContentCommand(installCmd).setPostStartCommand("bash .devcontainer/post-start.sh").useCompose();
|
|
102
|
+
const devContainer = new _devcontainermodel.DevContainer().setWorkspaceFolder(workspaceRoot).addExtension("biomejs.biome", "vitest.explorer").setInitializeCommand("bash .devcontainer/initialize.sh").setPostCreateCommand(installCmd).setUpdateContentCommand(installCmd).setPostStartCommand("bash .devcontainer/post-start.sh").useCompose();
|
|
99
103
|
for (const [index, apiName] of apiNames.entries()){
|
|
100
104
|
const port = (0, _const1.webapiPort)(index);
|
|
101
105
|
devContainer.forwardPort(port);
|
|
@@ -107,7 +111,11 @@ function createWorkspace(targetDir, projectName, apiNames) {
|
|
|
107
111
|
// Workspace-level models (repo root)
|
|
108
112
|
monoRepo.addModel(compose);
|
|
109
113
|
monoRepo.addModel(devContainer);
|
|
110
|
-
|
|
114
|
+
const appDevImage = new _webapiimagemodel.WebapiDevContainer();
|
|
115
|
+
appDevImage.addLayer((0, _dockerimagemodel.withWorkspaceNodeModulesOwnership)({
|
|
116
|
+
workspaceDir: workspaceRoot
|
|
117
|
+
}));
|
|
118
|
+
monoRepo.addModel(appDevImage);
|
|
111
119
|
monoRepo.addModel(new _productiondockerfilemodel.WebapiProductionDockerfile(apiNames));
|
|
112
120
|
monoRepo.addModel(new _githubcimodel.GithubCiWorkflows());
|
|
113
121
|
monoRepo.addModel(new _vscodesettingsmodel.VSCodeSettings(name));
|
|
@@ -234,4 +242,4 @@ function addApiProject(monoRepo, workspaceName, apiName) {
|
|
|
234
242
|
monoRepo.addProject(apiProject);
|
|
235
243
|
}
|
|
236
244
|
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvY3JlYXRlLWFwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgRG9ja2VyQ29tcG9zZSB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLXlhbWwubW9kZWwuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgeyBEZXZDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2Rldi1jb250YWluZXIubW9kZWwuanNcIjtcbmltcG9ydCB7IGNvbW1hbmRIaXN0b3J5IH0gZnJvbSBcIi4uL21vZGVscy9kb2NrZXItaW1hZ2UubW9kZWwuanNcIjtcbmltcG9ydCB7IEVudkZpbGUgfSBmcm9tIFwiLi4vbW9kZWxzL2Vudi1maWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBHaXRpZ25vcmUgfSBmcm9tIFwiLi4vbW9kZWxzL2dpdGlnbm9yZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgTGF1bmNoSnNvbiB9IGZyb20gXCIuLi9tb2RlbHMvbGF1bmNoLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB7IFBhY2thZ2VKc29uIH0gZnJvbSBcIi4uL21vZGVscy9wYWNrYWdlLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB7IE1vbm9SZXBvU2NhZmZvbGQsIFByb2plY3RTY2FmZm9sZCB9IGZyb20gXCIuLi9tb2RlbHMvcHJvamVjdC5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgVHNDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL3RzY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBWaXRlc3RDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL3ZpdGVzdC1jb25maWcubW9kZWwuanNcIjtcbmltcG9ydCB7IFZTQ29kZVNldHRpbmdzIH0gZnJvbSBcIi4uL21vZGVscy92c2NvZGUtc2V0dGluZ3MubW9kZWwuanNcIjtcbmltcG9ydCB7IFNjYWZmb2xkU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQge1xuXHRDcmVhdGVDbGlFcnJvcixcblx0aXNEZWNvaGVyZVdvcmtzcGFjZSxcblx0bGlzdEV4aXN0aW5nQXBpTmFtZXMsXG5cdHBhcnNlQXBpTmFtZXMsXG59IGZyb20gXCIuL2FwaS1uYW1lLmpzXCI7XG5pbXBvcnQge1xuXHRERUZBVUxUX1dFQkFQSV9OQU1FLFxuXHR3ZWJhcGlQYWNrYWdlTmFtZSxcblx0d2ViYXBpUG9ydCxcblx0d2ViYXBpUHJvamVjdERpcixcblx0d2ViYXBpUmVsZWFzZUVudHJ5LFxufSBmcm9tIFwiLi9jb25zdC5qc1wiO1xuaW1wb3J0IHsgRGV2Q29udGFpbmVySG9zdFNjcmlwdHMgfSBmcm9tIFwiLi9kZXZjb250YWluZXIvaG9zdC1zY3JpcHRzLmpzXCI7XG5pbXBvcnQgeyBBdXRoRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL2F1dGguZmVhdHVyZS5qc1wiO1xuaW1wb3J0IHsgRGF0YWJhc2VGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvZGF0YWJhc2UuZmVhdHVyZS5qc1wiO1xuaW1wb3J0IHsgRmluYWxpemVGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvZmluYWxpemUuZmVhdHVyZS5qc1wiO1xuaW1wb3J0IHsgUG9zdG1hbkZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9wb3N0bWFuLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IEFwaVBhY2thZ2VKc29uIH0gZnJvbSBcIi4vbW9kZWxzL2FwaS1wYWNrYWdlLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB7IENvbnRyb2xsZXJTb3VyY2VGaWxlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbnRyb2xsZXItc291cmNlLWZpbGUubW9kZWwuanNcIjtcbmltcG9ydCB7IEdpdGh1YkNpV29ya2Zsb3dzIH0gZnJvbSBcIi4vbW9kZWxzL2dpdGh1Yi1jaS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgTWFpblNvdXJjZUZpbGUgfSBmcm9tIFwiLi9tb2RlbHMvbWFpbi1zb3VyY2UtZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgV2ViYXBpUHJvZHVjdGlvbkRvY2tlcmZpbGUgfSBmcm9tIFwiLi9tb2RlbHMvcHJvZHVjdGlvbi1kb2NrZXJmaWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBTYW1wbGVDb25maWdNb2RlbCwgU2FtcGxlU2VydmljZU1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL3NhbXBsZS1maWxlcy5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgV2ViYXBpRGV2Q29udGFpbmVyIH0gZnJvbSBcIi4vbW9kZWxzL3dlYmFwaS1pbWFnZS5tb2RlbC5qc1wiO1xuXG5leHBvcnQgeyBXRUJBUElfUFJPSkVDVF9ESVIsIFdFQkFQSV9SRUxFQVNFX0VOVFJZIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcblxuZXhwb3J0IHR5cGUgQXBpT3B0aW9ucyA9IHtcblx0ZD86IHN0cmluZztcblx0LyoqIEhvc3QgcHJvamVjdCBuYW1lIChkaXJlY3RvcnkgYmFzZW5hbWUpLiBSZXF1aXJlZCB3aGVuIHNjYWZmb2xkaW5nIGludG8gYC93b3Jrc3BhY2VgLiAqL1xuXHRwcm9qZWN0TmFtZT86IHN0cmluZztcblx0LyoqIEFQSSBzbHVncyB1bmRlciBgcHJvamVjdHMvYC4gRGVmYXVsdCBgW1wiYXBpXCJdYC4gUmVwZWF0YWJsZSBgLS1uYW1lYC4gKi9cblx0bmFtZXM/OiBzdHJpbmdbXTtcblx0LyoqIEFkZCBBUElzIHRvIGFuIGV4aXN0aW5nIERlY29oZXJlIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4gKi9cblx0YWRkPzogYm9vbGVhbjtcblx0YXV0aFByb3ZpZGVyPzogXCJhdXRoMFwiIHwgXCJub25lXCI7XG5cdGRhdGFiYXNlUHJvdmlkZXI/OiBcIm5vbmVcIiB8IFwicG9zdGdyZXMvdHlwZW9ybVwiO1xuXHRwb3N0bWFuUHJvdmlkZXI/OiBcImFwaVwiIHwgXCJsb2NhbFwiIHwgXCJub25lXCI7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xufTtcblxuY29uc3QgZmVhdHVyZXMgPSBbRGF0YWJhc2VGZWF0dXJlLCBBdXRoRmVhdHVyZSwgUG9zdG1hbkZlYXR1cmUsIEZpbmFsaXplRmVhdHVyZV07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzY2FmZm9sZEFwaShjbGlPcHRpb25zOiBBcGlPcHRpb25zKSB7XG5cdGNvbnN0IHRhcmdldERpciA9IHJlc29sdmUoY2xpT3B0aW9ucy5kID8/IFwiLlwiKTtcblx0Y29uc3QgcHJvamVjdE5hbWUgPVxuXHRcdGNsaU9wdGlvbnMucHJvamVjdE5hbWU/LnRyaW0oKSB8fFxuXHRcdHByb2Nlc3MuZW52LkRFQ09IRVJFX1BST0pFQ1RfTkFNRT8udHJpbSgpIHx8XG5cdFx0YmFzZW5hbWUodGFyZ2V0RGlyKTtcblx0Y29uc3QgbmFtZXMgPSBwYXJzZUFwaU5hbWVzKGNsaU9wdGlvbnMubmFtZXMpO1xuXHRjb25zdCB3b3Jrc3BhY2UgPSBjbGlPcHRpb25zLmFkZFxuXHRcdD8gY3JlYXRlQWRkV29ya3NwYWNlKHRhcmdldERpciwgcHJvamVjdE5hbWUsIG5hbWVzKVxuXHRcdDogY3JlYXRlV29ya3NwYWNlKHRhcmdldERpciwgcHJvamVjdE5hbWUsIG5hbWVzKTtcblx0YXdhaXQgU2NhZmZvbGRTZXJ2aWNlLnNjYWZmb2xkKHdvcmtzcGFjZSwgeyAuLi5jbGlPcHRpb25zLCBuYW1lcyB9LCBmZWF0dXJlcyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdvcmtzcGFjZShcblx0dGFyZ2V0RGlyOiBzdHJpbmcsXG5cdHByb2plY3ROYW1lOiBzdHJpbmcsXG5cdGFwaU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IE1vbm9SZXBvU2NhZmZvbGQge1xuXHRjb25zdCBtb25vUmVwbyA9IG5ldyBNb25vUmVwb1NjYWZmb2xkKCk7XG5cdG1vbm9SZXBvLnRhcmdldERpciA9IHRhcmdldERpcjtcblx0bW9ub1JlcG8uc2V0TmFtZShwcm9qZWN0TmFtZSk7XG5cdGNvbnN0IG5hbWUgPSBtb25vUmVwby5uYW1lO1xuXG5cdGNvbnN0IGNvbXBvc2UgPSBuZXcgRG9ja2VyQ29tcG9zZSgpXG5cdFx0LnNldFByb2plY3ROYW1lKG5hbWUpXG5cdFx0LmFkZEhlYWRlckNvbW1lbnQoXG5cdFx0XHRcIk1lcmdlIC5jdXJzb3IvbWNwLmpzb24gaW4gdGhlIHNlcnZpY2UgY29tbWFuZC4gcG9zdFN0YXJ0Q29tbWFuZCBydW5zIGFmdGVyIEN1cnNvcidzIGZpcnN0IE1DUCBzbmFwc2hvdC5cIixcblx0XHQpXG5cdFx0LmFkZE5ldHdvcmsobmFtZSwgeyBuYW1lOiBgc2FtcGxlcy0ke25hbWV9YCB9KVxuXHRcdC5hZGRTZXJ2aWNlKFwiZGV2Y29udGFpbmVyXCIsIHtcblx0XHRcdGJ1aWxkOiBcIi5cIixcblx0XHRcdHZvbHVtZXM6IFtcblx0XHRcdFx0Ly8gV29ya3NwYWNlLWxvY2FsIChjcmVhdGVkIGJ5IGluaXRpYWxpemUuc2ggYXMgdGhlIGhvc3QgdXNlcikuXG5cdFx0XHRcdC8vIERvIE5PVCBiaW5kICR7SE9NRX0vLm5wbS8uLi4g4oCUIERvY2tlciBjcmVhdGVzIG1pc3NpbmcgaG9zdCBwYXRocyBhcyByb290LlxuXHRcdFx0XHRcIi4vbnBtLWF1dGg6L2hvbWUvbm9kZS8ubnBtLWNvbmZpZ1wiLFxuXHRcdFx0XHRcIi4vZ2gtYXV0aDovaG9tZS9ub2RlLy5jb25maWcvZ2hcIixcblx0XHRcdFx0XCJ3ZWJhcGktbm9kZS1tb2R1bGVzOi93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzXCIsXG5cdFx0XHRcdC8vIE5hbWVkIHZvbHVtZSAobm90IGEgQ3Vyc29yLW9ubHkgbW91bnQpIHNvIENMSSByZWNyZWF0ZXMga2VlcCBVcC1hcnJvdyBoaXN0b3J5LlxuXHRcdFx0XHRgJHtjb21tYW5kSGlzdG9yeS52b2x1bWVOYW1lfToke2NvbW1hbmRIaXN0b3J5LmRpcn1gLFxuXHRcdFx0XSxcblx0XHRcdGVudl9maWxlOiBbXCIuL2doLmVudlwiXSxcblx0XHRcdGVudmlyb25tZW50OiB7IE5QTV9DT05GSUdfVVNFUkNPTkZJRzogXCIvaG9tZS9ub2RlLy5ucG0tY29uZmlnLy5ucG1yY1wiIH0sXG5cdFx0XHRjb21tYW5kOlxuXHRcdFx0XHRcIidiYXNoIC1jIFxcXCJDT0RFQkFTRV9SQUdfV09SS1NQQUNFPS93b3Jrc3BhY2Ugbm9kZSAtLWV4cGVyaW1lbnRhbC1zdHJpcC10eXBlcyAvd29ya3NwYWNlLy5kZXZjb250YWluZXIvY29kZWJhc2UtcmFnLW1jcC50cyBtZXJnZSB8fCB0cnVlICYmIGV4ZWMgc2xlZXAgaW5maW5pdHlcXFwiJ1wiLFxuXHRcdFx0bmV0d29ya3M6IFtuYW1lXSxcblx0XHR9KVxuXHRcdC5hZGRWb2x1bWUoXCJ3ZWJhcGktbm9kZS1tb2R1bGVzXCIpXG5cdFx0LmFkZFZvbHVtZShjb21tYW5kSGlzdG9yeS52b2x1bWVOYW1lKTtcblxuXHRjb25zdCBpbnN0YWxsQ21kID0gXCJiYXNoIC5kZXZjb250YWluZXIvcG9zdC1jcmVhdGUuc2hcIjtcblx0Y29uc3QgZGV2Q29udGFpbmVyID0gbmV3IERldkNvbnRhaW5lcigpXG5cdFx0LmFkZEV4dGVuc2lvbihcImJpb21lanMuYmlvbWVcIiwgXCJ2aXRlc3QuZXhwbG9yZXJcIilcblx0XHQuc2V0SW5pdGlhbGl6ZUNvbW1hbmQoXCJiYXNoIC5kZXZjb250YWluZXIvaW5pdGlhbGl6ZS5zaFwiKVxuXHRcdC5zZXRQb3N0Q3JlYXRlQ29tbWFuZChpbnN0YWxsQ21kKVxuXHRcdC5zZXRVcGRhdGVDb250ZW50Q29tbWFuZChpbnN0YWxsQ21kKVxuXHRcdC5zZXRQb3N0U3RhcnRDb21tYW5kKFwiYmFzaCAuZGV2Y29udGFpbmVyL3Bvc3Qtc3RhcnQuc2hcIilcblx0XHQudXNlQ29tcG9zZSgpO1xuXG5cdGZvciAoY29uc3QgW2luZGV4LCBhcGlOYW1lXSBvZiBhcGlOYW1lcy5lbnRyaWVzKCkpIHtcblx0XHRjb25zdCBwb3J0ID0gd2ViYXBpUG9ydChpbmRleCk7XG5cdFx0ZGV2Q29udGFpbmVyLmZvcndhcmRQb3J0KHBvcnQpO1xuXHRcdGRldkNvbnRhaW5lci5zZXRQb3J0QXR0cmlidXRlcyhwb3J0LCB7XG5cdFx0XHRsYWJlbDogYXBpTmFtZSA9PT0gREVGQVVMVF9XRUJBUElfTkFNRSA/IFwiQVBJXCIgOiBhcGlOYW1lLFxuXHRcdFx0cmVxdWlyZUxvY2FsUG9ydDogdHJ1ZSxcblx0XHR9KTtcblx0fVxuXG5cdC8vIFdvcmtzcGFjZS1sZXZlbCBtb2RlbHMgKHJlcG8gcm9vdClcblx0bW9ub1JlcG8uYWRkTW9kZWwoY29tcG9zZSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKGRldkNvbnRhaW5lcik7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBXZWJhcGlEZXZDb250YWluZXIoKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBXZWJhcGlQcm9kdWN0aW9uRG9ja2VyZmlsZShhcGlOYW1lcykpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgR2l0aHViQ2lXb3JrZmxvd3MoKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBWU0NvZGVTZXR0aW5ncyhuYW1lKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBMYXVuY2hKc29uKGFwaU5hbWVzKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBUc0NvbmZpZygpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFZpdGVzdENvbmZpZygpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFBhY2thZ2VKc29uKGAke25hbWV9LmFwaWAsIHsgYXBpTmFtZXMsIHdvcmtzcGFjZU5hbWU6IG5hbWUgfSkpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgQ29uZmlnWWFtbChXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ZQU1MLCBcImNvbmZpZy9jb25maWcueWFtbFwiLCBcIlwiKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKFxuXHRcdG5ldyBDb25maWdZYW1sKFdFTExfS05PV05fRklMRVMuQ09ORklHX0RFVl9ZQU1MLCBcImNvbmZpZy9jb25maWcuZGV2LnlhbWxcIiwgXCJcIiksXG5cdCk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBHaXRpZ25vcmUoKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBFbnZGaWxlKCkpO1xuXHRtb25vUmVwby5hZGRGaWxlKG5ldyBEZXZDb250YWluZXJIb3N0U2NyaXB0cygpKTtcblxuXHQvLyBCaW9tZSBmb3JtYXR0ZXIvbGludGVyIGNvbmZpZ1xuXHRtb25vUmVwby5hZGRGaWxlKHtcblx0XHRmaWxlczogKCkgPT4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCJiaW9tZS5qc29uXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdCRzY2hlbWE6IFwiaHR0cHM6Ly9iaW9tZWpzLmRldi9zY2hlbWFzLzIuMC4wL3NjaGVtYS5qc29uXCIsXG5cdFx0XHRcdFx0XHRmaWxlczoge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlczogW1wiKiovKi50c1wiLCBcIioqLyouanNcIiwgXCIqKi8qLmpzb25cIiwgXCIqKi8qLnltbFwiLCBcIioqLyoueWFtbFwiXSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhc3Npc3Q6IHsgYWN0aW9uczogeyBzb3VyY2U6IHsgb3JnYW5pemVJbXBvcnRzOiBcIm9uXCIgfSB9IH0sXG5cdFx0XHRcdFx0XHR2Y3M6IHsgZW5hYmxlZDogdHJ1ZSwgY2xpZW50S2luZDogXCJnaXRcIiwgdXNlSWdub3JlRmlsZTogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0Zm9ybWF0dGVyOiB7XG5cdFx0XHRcdFx0XHRcdGVuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFdpdGhFcnJvcnM6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGluZGVudFN0eWxlOiBcInRhYlwiLFxuXHRcdFx0XHRcdFx0XHRsaW5lV2lkdGg6IDk1LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGphdmFzY3JpcHQ6IHsgcGFyc2VyOiB7IHVuc2FmZVBhcmFtZXRlckRlY29yYXRvcnNFbmFibGVkOiB0cnVlIH0gfSxcblx0XHRcdFx0XHRcdGxpbnRlcjoge1xuXHRcdFx0XHRcdFx0XHRydWxlczoge1xuXHRcdFx0XHRcdFx0XHRcdHN0eWxlOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VDb25zaXN0ZW50TWVtYmVyQWNjZXNzaWJpbGl0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXZlbDogXCJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zOiB7IGFjY2Vzc2liaWxpdHk6IFwiZXhwbGljaXRcIiB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG92ZXJyaWRlczogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZXM6IFtcIioqLyouanNvblwiXSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHsgaW5kZW50U3R5bGU6IFwic3BhY2VcIiwgaW5kZW50V2lkdGg6IDIgfSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdDIsXG5cdFx0XHRcdCksXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0pO1xuXG5cdGZvciAoY29uc3QgYXBpTmFtZSBvZiBhcGlOYW1lcykge1xuXHRcdGFkZEFwaVByb2plY3QobW9ub1JlcG8sIG5hbWUsIGFwaU5hbWUpO1xuXHR9XG5cblx0cmV0dXJuIG1vbm9SZXBvO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGRXb3Jrc3BhY2UoXG5cdHRhcmdldERpcjogc3RyaW5nLFxuXHRwcm9qZWN0TmFtZTogc3RyaW5nLFxuXHRhcGlOYW1lczogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBNb25vUmVwb1NjYWZmb2xkIHtcblx0aWYgKCFpc0RlY29oZXJlV29ya3NwYWNlKHRhcmdldERpcikpIHtcblx0XHR0aHJvdyBuZXcgQ3JlYXRlQ2xpRXJyb3IoXG5cdFx0XHRgTm90IGEgRGVjb2hlcmUgd29ya3NwYWNlOiAke3RhcmdldERpcn0uIFNjYWZmb2xkIG9uZSBmaXJzdCB3aXRoIFxcYG5weCBAZGVjb2hlcmUvY3JlYXRlIHdlYmFwaVxcYC5gLFxuXHRcdCk7XG5cdH1cblxuXHRjb25zdCBleGlzdGluZyA9IGxpc3RFeGlzdGluZ0FwaU5hbWVzKHRhcmdldERpcik7XG5cdGZvciAoY29uc3QgYXBpTmFtZSBvZiBhcGlOYW1lcykge1xuXHRcdGlmIChleGlzdGluZy5pbmNsdWRlcyhhcGlOYW1lKSkge1xuXHRcdFx0dGhyb3cgbmV3IENyZWF0ZUNsaUVycm9yKFxuXHRcdFx0XHRgQVBJIFwiJHthcGlOYW1lfVwiIGFscmVhZHkgZXhpc3RzIGF0ICR7d2ViYXBpUHJvamVjdERpcihhcGlOYW1lKX0uYCxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgbW9ub1JlcG8gPSBuZXcgTW9ub1JlcG9TY2FmZm9sZCgpO1xuXHRtb25vUmVwby50YXJnZXREaXIgPSB0YXJnZXREaXI7XG5cdG1vbm9SZXBvLnNldE5hbWUocHJvamVjdE5hbWUpO1xuXHRjb25zdCBuYW1lID0gbW9ub1JlcG8ubmFtZTtcblxuXHRjb25zdCBwa2cgPSBQYWNrYWdlSnNvbi5mcm9tRmlsZShqb2luKHRhcmdldERpciwgXCJwYWNrYWdlLmpzb25cIikpO1xuXHRtb25vUmVwby5hZGRNb2RlbChwa2cpO1xuXHRtb25vUmVwby5hZGRNb2RlbChcblx0XHRleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcIi5lbnZcIikpXG5cdFx0XHQ/IEVudkZpbGUuZnJvbUZpbGUoam9pbih0YXJnZXREaXIsIFwiLmVudlwiKSlcblx0XHRcdDogbmV3IEVudkZpbGUoKSxcblx0KTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoXG5cdFx0ZXhpc3RzU3luYyhqb2luKHRhcmdldERpciwgXCJjb25maWcvY29uZmlnLnlhbWxcIikpXG5cdFx0XHQ/IENvbmZpZ1lhbWwuZnJvbUZpbGUoXG5cdFx0XHRcdFx0V0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfWUFNTCxcblx0XHRcdFx0XHRcImNvbmZpZy9jb25maWcueWFtbFwiLFxuXHRcdFx0XHRcdGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcueWFtbFwiKSxcblx0XHRcdFx0KVxuXHRcdFx0OiBuZXcgQ29uZmlnWWFtbChXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ZQU1MLCBcImNvbmZpZy9jb25maWcueWFtbFwiLCBcIlwiKSxcblx0KTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoXG5cdFx0ZXhpc3RzU3luYyhqb2luKHRhcmdldERpciwgXCJjb25maWcvY29uZmlnLmRldi55YW1sXCIpKVxuXHRcdFx0PyBDb25maWdZYW1sLmZyb21GaWxlKFxuXHRcdFx0XHRcdFdFTExfS05PV05fRklMRVMuQ09ORklHX0RFVl9ZQU1MLFxuXHRcdFx0XHRcdFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiLFxuXHRcdFx0XHRcdGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcuZGV2LnlhbWxcIiksXG5cdFx0XHRcdClcblx0XHRcdDogbmV3IENvbmZpZ1lhbWwoV0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfREVWX1lBTUwsIFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiLCBcIlwiKSxcblx0KTtcblxuXHRmb3IgKGNvbnN0IFtvZmZzZXQsIGFwaU5hbWVdIG9mIGFwaU5hbWVzLmVudHJpZXMoKSkge1xuXHRcdGNvbnN0IHBvcnQgPSB3ZWJhcGlQb3J0KGV4aXN0aW5nLmxlbmd0aCArIG9mZnNldCk7XG5cdFx0cGtnLmFkZFNjcmlwdChgc3RhcnQ6JHthcGlOYW1lfWAsIGBub2RlICR7d2ViYXBpUmVsZWFzZUVudHJ5KGFwaU5hbWUpfWApO1xuXHRcdHBrZy5hZGRTY3JpcHQoXG5cdFx0XHRgZGV2OiR7YXBpTmFtZX1gLFxuXHRcdFx0YFBPUlQ9JHtwb3J0fSBmbHV4IHNlcnZlIC0tcHJvamVjdCAke3dlYmFwaVBhY2thZ2VOYW1lKG5hbWUsIGFwaU5hbWUpfWAsXG5cdFx0KTtcblx0XHRhZGRBcGlQcm9qZWN0KG1vbm9SZXBvLCBuYW1lLCBhcGlOYW1lKTtcblx0fVxuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgV2ViYXBpUHJvZHVjdGlvbkRvY2tlcmZpbGUoYXBpTmFtZXMsIHsgbmFtZWRPbmx5OiB0cnVlIH0pKTtcblxuXHRyZXR1cm4gbW9ub1JlcG87XG59XG5cbmZ1bmN0aW9uIGFkZEFwaVByb2plY3QoXG5cdG1vbm9SZXBvOiBNb25vUmVwb1NjYWZmb2xkLFxuXHR3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsXG5cdGFwaU5hbWU6IHN0cmluZyxcbik6IHZvaWQge1xuXHRjb25zdCBhcGlQcm9qZWN0ID0gbmV3IFByb2plY3RTY2FmZm9sZCh3ZWJhcGlQcm9qZWN0RGlyKGFwaU5hbWUpKTtcblx0YXBpUHJvamVjdC5hZGRNb2RlbChuZXcgQXBpUGFja2FnZUpzb24od29ya3NwYWNlTmFtZSwgYXBpTmFtZSkpO1xuXHRhcGlQcm9qZWN0LmFkZE1vZGVsKG5ldyBNYWluU291cmNlRmlsZShgJHt3b3Jrc3BhY2VOYW1lfS4ke2FwaU5hbWV9YCkpO1xuXHRhcGlQcm9qZWN0LmFkZE1vZGVsKG5ldyBDb250cm9sbGVyU291cmNlRmlsZSgpKTtcblx0YXBpUHJvamVjdC5hZGRGaWxlKG5ldyBTYW1wbGVDb25maWdNb2RlbCgpKTtcblx0YXBpUHJvamVjdC5hZGRGaWxlKG5ldyBTYW1wbGVTZXJ2aWNlTW9kZWwoKSk7XG5cdG1vbm9SZXBvLmFkZFByb2plY3QoYXBpUHJvamVjdCk7XG59XG4iXSwibmFtZXMiOlsiV0VCQVBJX1BST0pFQ1RfRElSIiwiV0VCQVBJX1JFTEVBU0VfRU5UUlkiLCJzY2FmZm9sZEFwaSIsImZlYXR1cmVzIiwiRGF0YWJhc2VGZWF0dXJlIiwiQXV0aEZlYXR1cmUiLCJQb3N0bWFuRmVhdHVyZSIsIkZpbmFsaXplRmVhdHVyZSIsImNsaU9wdGlvbnMiLCJ0YXJnZXREaXIiLCJyZXNvbHZlIiwiZCIsInByb2plY3ROYW1lIiwidHJpbSIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9QUk9KRUNUX05BTUUiLCJiYXNlbmFtZSIsIm5hbWVzIiwicGFyc2VBcGlOYW1lcyIsIndvcmtzcGFjZSIsImFkZCIsImNyZWF0ZUFkZFdvcmtzcGFjZSIsImNyZWF0ZVdvcmtzcGFjZSIsIlNjYWZmb2xkU2VydmljZSIsInNjYWZmb2xkIiwiYXBpTmFtZXMiLCJtb25vUmVwbyIsIk1vbm9SZXBvU2NhZmZvbGQiLCJzZXROYW1lIiwibmFtZSIsImNvbXBvc2UiLCJEb2NrZXJDb21wb3NlIiwic2V0UHJvamVjdE5hbWUiLCJhZGRIZWFkZXJDb21tZW50IiwiYWRkTmV0d29yayIsImFkZFNlcnZpY2UiLCJidWlsZCIsInZvbHVtZXMiLCJjb21tYW5kSGlzdG9yeSIsInZvbHVtZU5hbWUiLCJkaXIiLCJlbnZfZmlsZSIsImVudmlyb25tZW50IiwiTlBNX0NPTkZJR19VU0VSQ09ORklHIiwiY29tbWFuZCIsIm5ldHdvcmtzIiwiYWRkVm9sdW1lIiwiaW5zdGFsbENtZCIsImRldkNvbnRhaW5lciIsIkRldkNvbnRhaW5lciIsImFkZEV4dGVuc2lvbiIsInNldEluaXRpYWxpemVDb21tYW5kIiwic2V0UG9zdENyZWF0ZUNvbW1hbmQiLCJzZXRVcGRhdGVDb250ZW50Q29tbWFuZCIsInNldFBvc3RTdGFydENvbW1hbmQiLCJ1c2VDb21wb3NlIiwiaW5kZXgiLCJhcGlOYW1lIiwiZW50cmllcyIsInBvcnQiLCJ3ZWJhcGlQb3J0IiwiZm9yd2FyZFBvcnQiLCJzZXRQb3J0QXR0cmlidXRlcyIsImxhYmVsIiwiREVGQVVMVF9XRUJBUElfTkFNRSIsInJlcXVpcmVMb2NhbFBvcnQiLCJhZGRNb2RlbCIsIldlYmFwaURldkNvbnRhaW5lciIsIldlYmFwaVByb2R1Y3Rpb25Eb2NrZXJmaWxlIiwiR2l0aHViQ2lXb3JrZmxvd3MiLCJWU0NvZGVTZXR0aW5ncyIsIkxhdW5jaEpzb24iLCJUc0NvbmZpZyIsIlZpdGVzdENvbmZpZyIsIlBhY2thZ2VKc29uIiwid29ya3NwYWNlTmFtZSIsIkNvbmZpZ1lhbWwiLCJXRUxMX0tOT1dOX0ZJTEVTIiwiQ09ORklHX1lBTUwiLCJDT05GSUdfREVWX1lBTUwiLCJHaXRpZ25vcmUiLCJFbnZGaWxlIiwiYWRkRmlsZSIsIkRldkNvbnRhaW5lckhvc3RTY3JpcHRzIiwiZmlsZXMiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiJHNjaGVtYSIsImluY2x1ZGVzIiwiYXNzaXN0IiwiYWN0aW9ucyIsInNvdXJjZSIsIm9yZ2FuaXplSW1wb3J0cyIsInZjcyIsImVuYWJsZWQiLCJjbGllbnRLaW5kIiwidXNlSWdub3JlRmlsZSIsImZvcm1hdHRlciIsImZvcm1hdFdpdGhFcnJvcnMiLCJpbmRlbnRTdHlsZSIsImxpbmVXaWR0aCIsImphdmFzY3JpcHQiLCJwYXJzZXIiLCJ1bnNhZmVQYXJhbWV0ZXJEZWNvcmF0b3JzRW5hYmxlZCIsImxpbnRlciIsInJ1bGVzIiwic3R5bGUiLCJ1c2VDb25zaXN0ZW50TWVtYmVyQWNjZXNzaWJpbGl0eSIsImxldmVsIiwib3B0aW9ucyIsImFjY2Vzc2liaWxpdHkiLCJvdmVycmlkZXMiLCJpbmRlbnRXaWR0aCIsImFkZEFwaVByb2plY3QiLCJpc0RlY29oZXJlV29ya3NwYWNlIiwiQ3JlYXRlQ2xpRXJyb3IiLCJleGlzdGluZyIsImxpc3RFeGlzdGluZ0FwaU5hbWVzIiwid2ViYXBpUHJvamVjdERpciIsInBrZyIsImZyb21GaWxlIiwiam9pbiIsImV4aXN0c1N5bmMiLCJvZmZzZXQiLCJsZW5ndGgiLCJhZGRTY3JpcHQiLCJ3ZWJhcGlSZWxlYXNlRW50cnkiLCJ3ZWJhcGlQYWNrYWdlTmFtZSIsIm5hbWVkT25seSIsImFwaVByb2plY3QiLCJQcm9qZWN0U2NhZmZvbGQiLCJBcGlQYWNrYWdlSnNvbiIsIk1haW5Tb3VyY2VGaWxlIiwiQ29udHJvbGxlclNvdXJjZUZpbGUiLCJTYW1wbGVDb25maWdNb2RlbCIsIlNhbXBsZVNlcnZpY2VNb2RlbCIsImFkZFByb2plY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBMENTQTtlQUFBQSwwQkFBa0I7O1FBQUVDO2VBQUFBLDRCQUFvQjs7UUFrQjNCQztlQUFBQTs7O3dCQTVESzswQkFDYTs4QkFDVjtpQ0FDSDt1QkFDTTttQ0FDSjtrQ0FDRTs4QkFDUDtnQ0FDRTtpQ0FDQztrQ0FDQzs4QkFDc0I7K0JBQ3pCO21DQUNJO3FDQUNFO2lDQUNDO3lCQU16Qjt3QkFPQTs2QkFDaUM7NkJBQ1o7aUNBQ0k7aUNBQ0E7Z0NBQ0Q7cUNBQ0E7MkNBQ007K0JBQ0g7cUNBQ0g7MkNBQ1k7a0NBQ1c7a0NBQ25CO0FBa0JuQyxNQUFNQyxXQUFXO0lBQUNDLGdDQUFlO0lBQUVDLHdCQUFXO0lBQUVDLDhCQUFjO0lBQUVDLGdDQUFlO0NBQUM7QUFFekUsZUFBZUwsWUFBWU0sVUFBc0I7SUFDdkQsTUFBTUMsWUFBWUMsSUFBQUEsaUJBQU8sRUFBQ0YsV0FBV0csQ0FBQyxJQUFJO0lBQzFDLE1BQU1DLGNBQ0xKLFdBQVdJLFdBQVcsRUFBRUMsVUFDeEJDLFFBQVFDLEdBQUcsQ0FBQ0MscUJBQXFCLEVBQUVILFVBQ25DSSxJQUFBQSxrQkFBUSxFQUFDUjtJQUNWLE1BQU1TLFFBQVFDLElBQUFBLHNCQUFhLEVBQUNYLFdBQVdVLEtBQUs7SUFDNUMsTUFBTUUsWUFBWVosV0FBV2EsR0FBRyxHQUM3QkMsbUJBQW1CYixXQUFXRyxhQUFhTSxTQUMzQ0ssZ0JBQWdCZCxXQUFXRyxhQUFhTTtJQUMzQyxNQUFNTSxnQ0FBZSxDQUFDQyxRQUFRLENBQUNMLFdB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
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvY3JlYXRlLWFwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgRG9ja2VyQ29tcG9zZSB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLXlhbWwubW9kZWwuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgeyBEZXZDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2Rldi1jb250YWluZXIubW9kZWwuanNcIjtcbmltcG9ydCB7XG5cdGNvbW1hbmRIaXN0b3J5LFxuXHR3aXRoV29ya3NwYWNlTm9kZU1vZHVsZXNPd25lcnNoaXAsXG59IGZyb20gXCIuLi9tb2RlbHMvZG9ja2VyLWltYWdlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBFbnZGaWxlIH0gZnJvbSBcIi4uL21vZGVscy9lbnYtZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgR2l0aWdub3JlIH0gZnJvbSBcIi4uL21vZGVscy9naXRpZ25vcmUubW9kZWwuanNcIjtcbmltcG9ydCB7IExhdW5jaEpzb24gfSBmcm9tIFwiLi4vbW9kZWxzL2xhdW5jaC1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBQYWNrYWdlSnNvbiB9IGZyb20gXCIuLi9tb2RlbHMvcGFja2FnZS1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBNb25vUmVwb1NjYWZmb2xkLCBQcm9qZWN0U2NhZmZvbGQgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB7IFRzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy90c2NvbmZpZy5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgVml0ZXN0Q29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy92aXRlc3QtY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBWU0NvZGVTZXR0aW5ncyB9IGZyb20gXCIuLi9tb2RlbHMvdnNjb2RlLXNldHRpbmdzLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBTY2FmZm9sZFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc2NhZmZvbGQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHtcblx0Q3JlYXRlQ2xpRXJyb3IsXG5cdGlzRGVjb2hlcmVXb3Jrc3BhY2UsXG5cdGxpc3RFeGlzdGluZ0FwaU5hbWVzLFxuXHRwYXJzZUFwaU5hbWVzLFxufSBmcm9tIFwiLi9hcGktbmFtZS5qc1wiO1xuaW1wb3J0IHtcblx0REVGQVVMVF9XRUJBUElfTkFNRSxcblx0d2ViYXBpUGFja2FnZU5hbWUsXG5cdHdlYmFwaVBvcnQsXG5cdHdlYmFwaVByb2plY3REaXIsXG5cdHdlYmFwaVJlbGVhc2VFbnRyeSxcbn0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB7IERldkNvbnRhaW5lckhvc3RTY3JpcHRzIH0gZnJvbSBcIi4vZGV2Y29udGFpbmVyL2hvc3Qtc2NyaXB0cy5qc1wiO1xuaW1wb3J0IHsgQXV0aEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9hdXRoLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IERhdGFiYXNlRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL2RhdGFiYXNlLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IEZpbmFsaXplRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IFBvc3RtYW5GZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvcG9zdG1hbi5mZWF0dXJlLmpzXCI7XG5pbXBvcnQgeyBBcGlQYWNrYWdlSnNvbiB9IGZyb20gXCIuL21vZGVscy9hcGktcGFja2FnZS1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBDb250cm9sbGVyU291cmNlRmlsZSB9IGZyb20gXCIuL21vZGVscy9jb250cm9sbGVyLXNvdXJjZS1maWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBHaXRodWJDaVdvcmtmbG93cyB9IGZyb20gXCIuL21vZGVscy9naXRodWItY2kubW9kZWwuanNcIjtcbmltcG9ydCB7IE1haW5Tb3VyY2VGaWxlIH0gZnJvbSBcIi4vbW9kZWxzL21haW4tc291cmNlLWZpbGUubW9kZWwuanNcIjtcbmltcG9ydCB7IFdlYmFwaVByb2R1Y3Rpb25Eb2NrZXJmaWxlIH0gZnJvbSBcIi4vbW9kZWxzL3Byb2R1Y3Rpb24tZG9ja2VyZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgU2FtcGxlQ29uZmlnTW9kZWwsIFNhbXBsZVNlcnZpY2VNb2RlbCB9IGZyb20gXCIuL21vZGVscy9zYW1wbGUtZmlsZXMubW9kZWwuanNcIjtcbmltcG9ydCB7IFdlYmFwaURldkNvbnRhaW5lciB9IGZyb20gXCIuL21vZGVscy93ZWJhcGktaW1hZ2UubW9kZWwuanNcIjtcblxuZXhwb3J0IHsgV0VCQVBJX1BST0pFQ1RfRElSLCBXRUJBUElfUkVMRUFTRV9FTlRSWSB9IGZyb20gXCIuL2NvbnN0LmpzXCI7XG5cbmV4cG9ydCB0eXBlIEFwaU9wdGlvbnMgPSB7XG5cdGQ/OiBzdHJpbmc7XG5cdC8qKiBIb3N0IHByb2plY3QgbmFtZSAoZGlyZWN0b3J5IGJhc2VuYW1lKS4gUmVxdWlyZWQgd2hlbiBzY2FmZm9sZGluZyBpbnRvIHRoZSBjcmVhdGUtYnVpbGRlciBgL3dvcmtzcGFjZWAgbW91bnQuICovXG5cdHByb2plY3ROYW1lPzogc3RyaW5nO1xuXHQvKiogQVBJIHNsdWdzIHVuZGVyIGBwcm9qZWN0cy9gLiBEZWZhdWx0IGBbXCJhcGlcIl1gLiBSZXBlYXRhYmxlIGAtLW5hbWVgLiAqL1xuXHRuYW1lcz86IHN0cmluZ1tdO1xuXHQvKiogQWRkIEFQSXMgdG8gYW4gZXhpc3RpbmcgRGVjb2hlcmUgd29ya3NwYWNlIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLiAqL1xuXHRhZGQ/OiBib29sZWFuO1xuXHRhdXRoUHJvdmlkZXI/OiBcImF1dGgwXCIgfCBcIm5vbmVcIjtcblx0ZGF0YWJhc2VQcm92aWRlcj86IFwibm9uZVwiIHwgXCJwb3N0Z3Jlcy90eXBlb3JtXCI7XG5cdHBvc3RtYW5Qcm92aWRlcj86IFwiYXBpXCIgfCBcImxvY2FsXCIgfCBcIm5vbmVcIjtcblx0aW5zdGFsbERlcGVuZGVuY2llcz86IFwieWVzXCIgfCBcIm5vXCI7XG59O1xuXG5jb25zdCBmZWF0dXJlcyA9IFtEYXRhYmFzZUZlYXR1cmUsIEF1dGhGZWF0dXJlLCBQb3N0bWFuRmVhdHVyZSwgRmluYWxpemVGZWF0dXJlXTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNjYWZmb2xkQXBpKGNsaU9wdGlvbnM6IEFwaU9wdGlvbnMpIHtcblx0Y29uc3QgdGFyZ2V0RGlyID0gcmVzb2x2ZShjbGlPcHRpb25zLmQgPz8gXCIuXCIpO1xuXHRjb25zdCBwcm9qZWN0TmFtZSA9XG5cdFx0Y2xpT3B0aW9ucy5wcm9qZWN0TmFtZT8udHJpbSgpIHx8XG5cdFx0cHJvY2Vzcy5lbnYuREVDT0hFUkVfUFJPSkVDVF9OQU1FPy50cmltKCkgfHxcblx0XHRiYXNlbmFtZSh0YXJnZXREaXIpO1xuXHRjb25zdCBuYW1lcyA9IHBhcnNlQXBpTmFtZXMoY2xpT3B0aW9ucy5uYW1lcyk7XG5cdGNvbnN0IHdvcmtzcGFjZSA9IGNsaU9wdGlvbnMuYWRkXG5cdFx0PyBjcmVhdGVBZGRXb3Jrc3BhY2UodGFyZ2V0RGlyLCBwcm9qZWN0TmFtZSwgbmFtZXMpXG5cdFx0OiBjcmVhdGVXb3Jrc3BhY2UodGFyZ2V0RGlyLCBwcm9qZWN0TmFtZSwgbmFtZXMpO1xuXHRhd2FpdCBTY2FmZm9sZFNlcnZpY2Uuc2NhZmZvbGQod29ya3NwYWNlLCB7IC4uLmNsaU9wdGlvbnMsIG5hbWVzIH0sIGZlYXR1cmVzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlV29ya3NwYWNlKFxuXHR0YXJnZXREaXI6IHN0cmluZyxcblx0cHJvamVjdE5hbWU6IHN0cmluZyxcblx0YXBpTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogTW9ub1JlcG9TY2FmZm9sZCB7XG5cdGNvbnN0IG1vbm9SZXBvID0gbmV3IE1vbm9SZXBvU2NhZmZvbGQoKTtcblx0bW9ub1JlcG8udGFyZ2V0RGlyID0gdGFyZ2V0RGlyO1xuXHRtb25vUmVwby5zZXROYW1lKHByb2plY3ROYW1lKTtcblx0Y29uc3QgbmFtZSA9IG1vbm9SZXBvLm5hbWU7XG5cdC8vIFByb2plY3QtbmFtZWQgcm9vdCBzbyBDdXJzb3IgQWdlbnRzIChhbmQgb3RoZXIgdG9vbHMpIGxhYmVsIHRoZSB3b3Jrc3BhY2UgYnkgbmFtZS5cblx0Y29uc3Qgd29ya3NwYWNlUm9vdCA9IGAvJHtuYW1lfWA7XG5cblx0Y29uc3QgY29tcG9zZSA9IG5ldyBEb2NrZXJDb21wb3NlKClcblx0XHQuc2V0UHJvamVjdE5hbWUobmFtZSlcblx0XHQuYWRkSGVhZGVyQ29tbWVudChcblx0XHRcdFwiTWVyZ2UgLmN1cnNvci9tY3AuanNvbiBpbiB0aGUgc2VydmljZSBjb21tYW5kLiBwb3N0U3RhcnRDb21tYW5kIHJ1bnMgYWZ0ZXIgQ3Vyc29yJ3MgZmlyc3QgTUNQIHNuYXBzaG90LlwiLFxuXHRcdClcblx0XHQuYWRkTmV0d29yayhuYW1lLCB7IG5hbWU6IGBzYW1wbGVzLSR7bmFtZX1gIH0pXG5cdFx0LmFkZFNlcnZpY2UoXCJkZXZjb250YWluZXJcIiwge1xuXHRcdFx0YnVpbGQ6IFwiLlwiLFxuXHRcdFx0dm9sdW1lczogW1xuXHRcdFx0XHQvLyBSZXBvIGJpbmQgaW4gQ29tcG9zZSAoc3Vydml2ZXMgQ0xJIHJlY3JlYXRlczsgQ3Vyc29yLW9ubHkgbW91bnRzIGRvIG5vdCkuXG5cdFx0XHRcdGAuLjoke3dvcmtzcGFjZVJvb3R9YCxcblx0XHRcdFx0Ly8gV29ya3NwYWNlLWxvY2FsIChjcmVhdGVkIGJ5IGluaXRpYWxpemUuc2ggYXMgdGhlIGhvc3QgdXNlcikuXG5cdFx0XHRcdC8vIERvIE5PVCBiaW5kICR7SE9NRX0vLm5wbS8uLi4g4oCUIERvY2tlciBjcmVhdGVzIG1pc3NpbmcgaG9zdCBwYXRocyBhcyByb290LlxuXHRcdFx0XHRcIi4vbnBtLWF1dGg6L2hvbWUvbm9kZS8ubnBtLWNvbmZpZ1wiLFxuXHRcdFx0XHRcIi4vZ2gtYXV0aDovaG9tZS9ub2RlLy5jb25maWcvZ2hcIixcblx0XHRcdFx0YHdlYmFwaS1ub2RlLW1vZHVsZXM6JHt3b3Jrc3BhY2VSb290fS9ub2RlX21vZHVsZXNgLFxuXHRcdFx0XHQvLyBOYW1lZCB2b2x1bWUgKG5vdCBhIEN1cnNvci1vbmx5IG1vdW50KSBzbyBDTEkgcmVjcmVhdGVzIGtlZXAgVXAtYXJyb3cgaGlzdG9yeS5cblx0XHRcdFx0YCR7Y29tbWFuZEhpc3Rvcnkudm9sdW1lTmFtZX06JHtjb21tYW5kSGlzdG9yeS5kaXJ9YCxcblx0XHRcdF0sXG5cdFx0XHRlbnZfZmlsZTogW1wiLi9naC5lbnZcIl0sXG5cdFx0XHRlbnZpcm9ubWVudDogeyBOUE1fQ09ORklHX1VTRVJDT05GSUc6IFwiL2hvbWUvbm9kZS8ubnBtLWNvbmZpZy8ubnBtcmNcIiB9LFxuXHRcdFx0Y29tbWFuZDogYCdiYXNoIC1jIFwiQ09ERUJBU0VfUkFHX1dPUktTUEFDRT0ke3dvcmtzcGFjZVJvb3R9IG5vZGUgLS1leHBlcmltZW50YWwtc3RyaXAtdHlwZXMgJHt3b3Jrc3BhY2VSb290fS8uZGV2Y29udGFpbmVyL2NvZGViYXNlLXJhZy1tY3AudHMgbWVyZ2UgfHwgdHJ1ZSAmJiBleGVjIHNsZWVwIGluZmluaXR5XCInYCxcblx0XHRcdG5ldHdvcmtzOiBbbmFtZV0sXG5cdFx0fSlcblx0XHQuYWRkVm9sdW1lKFwid2ViYXBpLW5vZGUtbW9kdWxlc1wiKVxuXHRcdC5hZGRWb2x1bWUoY29tbWFuZEhpc3Rvcnkudm9sdW1lTmFtZSk7XG5cblx0Y29uc3QgaW5zdGFsbENtZCA9IFwiYmFzaCAuZGV2Y29udGFpbmVyL3Bvc3QtY3JlYXRlLnNoXCI7XG5cdGNvbnN0IGRldkNvbnRhaW5lciA9IG5ldyBEZXZDb250YWluZXIoKVxuXHRcdC5zZXRXb3Jrc3BhY2VGb2xkZXIod29ya3NwYWNlUm9vdClcblx0XHQuYWRkRXh0ZW5zaW9uKFwiYmlvbWVqcy5iaW9tZVwiLCBcInZpdGVzdC5leHBsb3JlclwiKVxuXHRcdC5zZXRJbml0aWFsaXplQ29tbWFuZChcImJhc2ggLmRldmNvbnRhaW5lci9pbml0aWFsaXplLnNoXCIpXG5cdFx0LnNldFBvc3RDcmVhdGVDb21tYW5kKGluc3RhbGxDbWQpXG5cdFx0LnNldFVwZGF0ZUNvbnRlbnRDb21tYW5kKGluc3RhbGxDbWQpXG5cdFx0LnNldFBvc3RTdGFydENvbW1hbmQoXCJiYXNoIC5kZXZjb250YWluZXIvcG9zdC1zdGFydC5zaFwiKVxuXHRcdC51c2VDb21wb3NlKCk7XG5cblx0Zm9yIChjb25zdCBbaW5kZXgsIGFwaU5hbWVdIG9mIGFwaU5hbWVzLmVudHJpZXMoKSkge1xuXHRcdGNvbnN0IHBvcnQgPSB3ZWJhcGlQb3J0KGluZGV4KTtcblx0XHRkZXZDb250YWluZXIuZm9yd2FyZFBvcnQocG9ydCk7XG5cdFx0ZGV2Q29udGFpbmVyLnNldFBvcnRBdHRyaWJ1dGVzKHBvcnQsIHtcblx0XHRcdGxhYmVsOiBhcGlOYW1lID09PSBERUZBVUxUX1dFQkFQSV9OQU1FID8gXCJBUElcIiA6IGFwaU5hbWUsXG5cdFx0XHRyZXF1aXJlTG9jYWxQb3J0OiB0cnVlLFxuXHRcdH0pO1xuXHR9XG5cblx0Ly8gV29ya3NwYWNlLWxldmVsIG1vZGVscyAocmVwbyByb290KVxuXHRtb25vUmVwby5hZGRNb2RlbChjb21wb3NlKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoZGV2Q29udGFpbmVyKTtcblx0Y29uc3QgYXBwRGV2SW1hZ2UgPSBuZXcgV2ViYXBpRGV2Q29udGFpbmVyKCk7XG5cdGFwcERldkltYWdlLmFkZExheWVyKHdpdGhXb3Jrc3BhY2VOb2RlTW9kdWxlc093bmVyc2hpcCh7IHdvcmtzcGFjZURpcjogd29ya3NwYWNlUm9vdCB9KSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKGFwcERldkltYWdlKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFdlYmFwaVByb2R1Y3Rpb25Eb2NrZXJmaWxlKGFwaU5hbWVzKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBHaXRodWJDaVdvcmtmbG93cygpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFZTQ29kZVNldHRpbmdzKG5hbWUpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IExhdW5jaEpzb24oYXBpTmFtZXMpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFRzQ29uZmlnKCkpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgVml0ZXN0Q29uZmlnKCkpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgUGFja2FnZUpzb24oYCR7bmFtZX0uYXBpYCwgeyBhcGlOYW1lcywgd29ya3NwYWNlTmFtZTogbmFtZSB9KSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBDb25maWdZYW1sKFdFTExfS05PV05fRklMRVMuQ09ORklHX1lBTUwsIFwiY29uZmlnL2NvbmZpZy55YW1sXCIsIFwiXCIpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoXG5cdFx0bmV3IENvbmZpZ1lhbWwoV0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfREVWX1lBTUwsIFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiLCBcIlwiKSxcblx0KTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IEdpdGlnbm9yZSgpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IEVudkZpbGUoKSk7XG5cdG1vbm9SZXBvLmFkZEZpbGUobmV3IERldkNvbnRhaW5lckhvc3RTY3JpcHRzKCkpO1xuXG5cdC8vIEJpb21lIGZvcm1hdHRlci9saW50ZXIgY29uZmlnXG5cdG1vbm9SZXBvLmFkZEZpbGUoe1xuXHRcdGZpbGVzOiAoKSA9PiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcImJpb21lLmpzb25cIixcblx0XHRcdFx0Y29udGVudDogSlNPTi5zdHJpbmdpZnkoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0JHNjaGVtYTogXCJodHRwczovL2Jpb21lanMuZGV2L3NjaGVtYXMvMi4wLjAvc2NoZW1hLmpzb25cIixcblx0XHRcdFx0XHRcdGZpbGVzOiB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVzOiBbXCIqKi8qLnRzXCIsIFwiKiovKi5qc1wiLCBcIioqLyouanNvblwiLCBcIioqLyoueW1sXCIsIFwiKiovKi55YW1sXCJdLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFzc2lzdDogeyBhY3Rpb25zOiB7IHNvdXJjZTogeyBvcmdhbml6ZUltcG9ydHM6IFwib25cIiB9IH0gfSxcblx0XHRcdFx0XHRcdHZjczogeyBlbmFibGVkOiB0cnVlLCBjbGllbnRLaW5kOiBcImdpdFwiLCB1c2VJZ25vcmVGaWxlOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHtcblx0XHRcdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0Zm9ybWF0V2l0aEVycm9yczogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0aW5kZW50U3R5bGU6IFwidGFiXCIsXG5cdFx0XHRcdFx0XHRcdGxpbmVXaWR0aDogOTUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0amF2YXNjcmlwdDogeyBwYXJzZXI6IHsgdW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQ6IHRydWUgfSB9LFxuXHRcdFx0XHRcdFx0bGludGVyOiB7XG5cdFx0XHRcdFx0XHRcdHJ1bGVzOiB7XG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU6IHtcblx0XHRcdFx0XHRcdFx0XHRcdHVzZUNvbnNpc3RlbnRNZW1iZXJBY2Nlc3NpYmlsaXR5OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldmVsOiBcImVycm9yXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM6IHsgYWNjZXNzaWJpbGl0eTogXCJleHBsaWNpdFwiIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b3ZlcnJpZGVzOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlczogW1wiKiovKi5qc29uXCJdLFxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdHRlcjogeyBpbmRlbnRTdHlsZTogXCJzcGFjZVwiLCBpbmRlbnRXaWR0aDogMiB9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0Mixcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XSxcblx0fSk7XG5cblx0Zm9yIChjb25zdCBhcGlOYW1lIG9mIGFwaU5hbWVzKSB7XG5cdFx0YWRkQXBpUHJvamVjdChtb25vUmVwbywgbmFtZSwgYXBpTmFtZSk7XG5cdH1cblxuXHRyZXR1cm4gbW9ub1JlcG87XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFkZFdvcmtzcGFjZShcblx0dGFyZ2V0RGlyOiBzdHJpbmcsXG5cdHByb2plY3ROYW1lOiBzdHJpbmcsXG5cdGFwaU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IE1vbm9SZXBvU2NhZmZvbGQge1xuXHRpZiAoIWlzRGVjb2hlcmVXb3Jrc3BhY2UodGFyZ2V0RGlyKSkge1xuXHRcdHRocm93IG5ldyBDcmVhdGVDbGlFcnJvcihcblx0XHRcdGBOb3QgYSBEZWNvaGVyZSB3b3Jrc3BhY2U6ICR7dGFyZ2V0RGlyfS4gU2NhZmZvbGQgb25lIGZpcnN0IHdpdGggXFxgbnB4IEBkZWNvaGVyZS9jcmVhdGUgd2ViYXBpXFxgLmAsXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGV4aXN0aW5nID0gbGlzdEV4aXN0aW5nQXBpTmFtZXModGFyZ2V0RGlyKTtcblx0Zm9yIChjb25zdCBhcGlOYW1lIG9mIGFwaU5hbWVzKSB7XG5cdFx0aWYgKGV4aXN0aW5nLmluY2x1ZGVzKGFwaU5hbWUpKSB7XG5cdFx0XHR0aHJvdyBuZXcgQ3JlYXRlQ2xpRXJyb3IoXG5cdFx0XHRcdGBBUEkgXCIke2FwaU5hbWV9XCIgYWxyZWFkeSBleGlzdHMgYXQgJHt3ZWJhcGlQcm9qZWN0RGlyKGFwaU5hbWUpfS5gLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBtb25vUmVwbyA9IG5ldyBNb25vUmVwb1NjYWZmb2xkKCk7XG5cdG1vbm9SZXBvLnRhcmdldERpciA9IHRhcmdldERpcjtcblx0bW9ub1JlcG8uc2V0TmFtZShwcm9qZWN0TmFtZSk7XG5cdGNvbnN0IG5hbWUgPSBtb25vUmVwby5uYW1lO1xuXG5cdGNvbnN0IHBrZyA9IFBhY2thZ2VKc29uLmZyb21GaWxlKGpvaW4odGFyZ2V0RGlyLCBcInBhY2thZ2UuanNvblwiKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKHBrZyk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKFxuXHRcdGV4aXN0c1N5bmMoam9pbih0YXJnZXREaXIsIFwiLmVudlwiKSlcblx0XHRcdD8gRW52RmlsZS5mcm9tRmlsZShqb2luKHRhcmdldERpciwgXCIuZW52XCIpKVxuXHRcdFx0OiBuZXcgRW52RmlsZSgpLFxuXHQpO1xuXHRtb25vUmVwby5hZGRNb2RlbChcblx0XHRleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcueWFtbFwiKSlcblx0XHRcdD8gQ29uZmlnWWFtbC5mcm9tRmlsZShcblx0XHRcdFx0XHRXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ZQU1MLFxuXHRcdFx0XHRcdFwiY29uZmlnL2NvbmZpZy55YW1sXCIsXG5cdFx0XHRcdFx0am9pbih0YXJnZXREaXIsIFwiY29uZmlnL2NvbmZpZy55YW1sXCIpLFxuXHRcdFx0XHQpXG5cdFx0XHQ6IG5ldyBDb25maWdZYW1sKFdFTExfS05PV05fRklMRVMuQ09ORklHX1lBTUwsIFwiY29uZmlnL2NvbmZpZy55YW1sXCIsIFwiXCIpLFxuXHQpO1xuXHRtb25vUmVwby5hZGRNb2RlbChcblx0XHRleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcuZGV2LnlhbWxcIikpXG5cdFx0XHQ/IENvbmZpZ1lhbWwuZnJvbUZpbGUoXG5cdFx0XHRcdFx0V0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfREVWX1lBTUwsXG5cdFx0XHRcdFx0XCJjb25maWcvY29uZmlnLmRldi55YW1sXCIsXG5cdFx0XHRcdFx0am9pbih0YXJnZXREaXIsIFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiKSxcblx0XHRcdFx0KVxuXHRcdFx0OiBuZXcgQ29uZmlnWWFtbChXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ERVZfWUFNTCwgXCJjb25maWcvY29uZmlnLmRldi55YW1sXCIsIFwiXCIpLFxuXHQpO1xuXG5cdGZvciAoY29uc3QgW29mZnNldCwgYXBpTmFtZV0gb2YgYXBpTmFtZXMuZW50cmllcygpKSB7XG5cdFx0Y29uc3QgcG9ydCA9IHdlYmFwaVBvcnQoZXhpc3RpbmcubGVuZ3RoICsgb2Zmc2V0KTtcblx0XHRwa2cuYWRkU2NyaXB0KGBzdGFydDoke2FwaU5hbWV9YCwgYG5vZGUgJHt3ZWJhcGlSZWxlYXNlRW50cnkoYXBpTmFtZSl9YCk7XG5cdFx0cGtnLmFkZFNjcmlwdChcblx0XHRcdGBkZXY6JHthcGlOYW1lfWAsXG5cdFx0XHRgUE9SVD0ke3BvcnR9IGZsdXggc2VydmUgLS1wcm9qZWN0ICR7d2ViYXBpUGFja2FnZU5hbWUobmFtZSwgYXBpTmFtZSl9YCxcblx0XHQpO1xuXHRcdGFkZEFwaVByb2plY3QobW9ub1JlcG8sIG5hbWUsIGFwaU5hbWUpO1xuXHR9XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBXZWJhcGlQcm9kdWN0aW9uRG9ja2VyZmlsZShhcGlOYW1lcywgeyBuYW1lZE9ubHk6IHRydWUgfSkpO1xuXG5cdHJldHVybiBtb25vUmVwbztcbn1cblxuZnVuY3Rpb24gYWRkQXBpUHJvamVjdChcblx0bW9ub1JlcG86IE1vbm9SZXBvU2NhZmZvbGQsXG5cdHdvcmtzcGFjZU5hbWU6IHN0cmluZyxcblx0YXBpTmFtZTogc3RyaW5nLFxuKTogdm9pZCB7XG5cdGNvbnN0IGFwaVByb2plY3QgPSBuZXcgUHJvamVjdFNjYWZmb2xkKHdlYmFwaVByb2plY3REaXIoYXBpTmFtZSkpO1xuXHRhcGlQcm9qZWN0LmFkZE1vZGVsKG5ldyBBcGlQYWNrYWdlSnNvbih3b3Jrc3BhY2VOYW1lLCBhcGlOYW1lKSk7XG5cdGFwaVByb2plY3QuYWRkTW9kZWwobmV3IE1haW5Tb3VyY2VGaWxlKGAke3dvcmtzcGFjZU5hbWV9LiR7YXBpTmFtZX1gKSk7XG5cdGFwaVByb2plY3QuYWRkTW9kZWwobmV3IENvbnRyb2xsZXJTb3VyY2VGaWxlKCkpO1xuXHRhcGlQcm9qZWN0LmFkZEZpbGUobmV3IFNhbXBsZUNvbmZpZ01vZGVsKCkpO1xuXHRhcGlQcm9qZWN0LmFkZEZpbGUobmV3IFNhbXBsZVNlcnZpY2VNb2RlbCgpKTtcblx0bW9ub1JlcG8uYWRkUHJvamVjdChhcGlQcm9qZWN0KTtcbn1cbiJdLCJuYW1lcyI6WyJXRUJBUElfUFJPSkVDVF9ESVIiLCJXRUJBUElfUkVMRUFTRV9FTlRSWSIsInNjYWZmb2xkQXBpIiwiZmVhdHVyZXMiLCJEYXRhYmFzZUZlYXR1cmUiLCJBdXRoRmVhdHVyZSIsIlBvc3RtYW5GZWF0dXJlIiwiRmluYWxpemVGZWF0dXJlIiwiY2xpT3B0aW9ucyIsInRhcmdldERpciIsInJlc29sdmUiLCJkIiwicHJvamVjdE5hbWUiLCJ0cmltIiwicHJvY2VzcyIsImVudiIsIkRFQ09IRVJFX1BST0pFQ1RfTkFNRSIsImJhc2VuYW1lIiwibmFtZXMiLCJwYXJzZUFwaU5hbWVzIiwid29ya3NwYWNlIiwiYWRkIiwiY3JlYXRlQWRkV29ya3NwYWNlIiwiY3JlYXRlV29ya3NwYWNlIiwiU2NhZmZvbGRTZXJ2aWNlIiwic2NhZmZvbGQiLCJhcGlOYW1lcyIsIm1vbm9SZXBvIiwiTW9ub1JlcG9TY2FmZm9sZCIsInNldE5hbWUiLCJuYW1lIiwid29ya3NwYWNlUm9vdCIsImNvbXBvc2UiLCJEb2NrZXJDb21wb3NlIiwic2V0UHJvamVjdE5hbWUiLCJhZGRIZWFkZXJDb21tZW50IiwiYWRkTmV0d29yayIsImFkZFNlcnZpY2UiLCJidWlsZCIsInZvbHVtZXMiLCJjb21tYW5kSGlzdG9yeSIsInZvbHVtZU5hbWUiLCJkaXIiLCJlbnZfZmlsZSIsImVudmlyb25tZW50IiwiTlBNX0NPTkZJR19VU0VSQ09ORklHIiwiY29tbWFuZCIsIm5ldHdvcmtzIiwiYWRkVm9sdW1lIiwiaW5zdGFsbENtZCIsImRldkNvbnRhaW5lciIsIkRldkNvbnRhaW5lciIsInNldFdvcmtzcGFjZUZvbGRlciIsImFkZEV4dGVuc2lvbiIsInNldEluaXRpYWxpemVDb21tYW5kIiwic2V0UG9zdENyZWF0ZUNvbW1hbmQiLCJzZXRVcGRhdGVDb250ZW50Q29tbWFuZCIsInNldFBvc3RTdGFydENvbW1hbmQiLCJ1c2VDb21wb3NlIiwiaW5kZXgiLCJhcGlOYW1lIiwiZW50cmllcyIsInBvcnQiLCJ3ZWJhcGlQb3J0IiwiZm9yd2FyZFBvcnQiLCJzZXRQb3J0QXR0cmlidXRlcyIsImxhYmVsIiwiREVGQVVMVF9XRUJBUElfTkFNRSIsInJlcXVpcmVMb2NhbFBvcnQiLCJhZGRNb2RlbCIsImFwcERldkltYWdlIiwiV2ViYXBpRGV2Q29udGFpbmVyIiwiYWRkTGF5ZXIiLCJ3aXRoV29ya3NwYWNlTm9kZU1vZHVsZXNPd25lcnNoaXAiLCJ3b3Jrc3BhY2VEaXIiLCJXZWJhcGlQcm9kdWN0aW9uRG9ja2VyZmlsZSIsIkdpdGh1YkNpV29ya2Zsb3dzIiwiVlNDb2RlU2V0dGluZ3MiLCJMYXVuY2hKc29uIiwiVHNDb25maWciLCJWaXRlc3RDb25maWciLCJQYWNrYWdlSnNvbiIsIndvcmtzcGFjZU5hbWUiLCJDb25maWdZYW1sIiwiV0VMTF9LTk9XTl9GSUxFUyIsIkNPTkZJR19ZQU1MIiwiQ09ORklHX0RFVl9ZQU1MIiwiR2l0aWdub3JlIiwiRW52RmlsZSIsImFkZEZpbGUiLCJEZXZDb250YWluZXJIb3N0U2NyaXB0cyIsImZpbGVzIiwiZmlsZVBhdGgiLCJjb250ZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsIiRzY2hlbWEiLCJpbmNsdWRlcyIsImFzc2lzdCIsImFjdGlvbnMiLCJzb3VyY2UiLCJvcmdhbml6ZUltcG9ydHMiLCJ2Y3MiLCJlbmFibGVkIiwiY2xpZW50S2luZCIsInVzZUlnbm9yZUZpbGUiLCJmb3JtYXR0ZXIiLCJmb3JtYXRXaXRoRXJyb3JzIiwiaW5kZW50U3R5bGUiLCJsaW5lV2lkdGgiLCJqYXZhc2NyaXB0IiwicGFyc2VyIiwidW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQiLCJsaW50ZXIiLCJydWxlcyIsInN0eWxlIiwidXNlQ29uc2lzdGVudE1lbWJlckFjY2Vzc2liaWxpdHkiLCJsZXZlbCIsIm9wdGlvbnMiLCJhY2Nlc3NpYmlsaXR5Iiwib3ZlcnJpZGVzIiwiaW5kZW50V2lkdGgiLCJhZGRBcGlQcm9qZWN0IiwiaXNEZWNvaGVyZVdvcmtzcGFjZSIsIkNyZWF0ZUNsaUVycm9yIiwiZXhpc3RpbmciLCJsaXN0RXhpc3RpbmdBcGlOYW1lcyIsIndlYmFwaVByb2plY3REaXIiLCJwa2ciLCJmcm9tRmlsZSIsImpvaW4iLCJleGlzdHNTeW5jIiwib2Zmc2V0IiwibGVuZ3RoIiwiYWRkU2NyaXB0Iiwid2ViYXBpUmVsZWFzZUVudHJ5Iiwid2ViYXBpUGFja2FnZU5hbWUiLCJuYW1lZE9ubHkiLCJhcGlQcm9qZWN0IiwiUHJvamVjdFNjYWZmb2xkIiwiQXBpUGFja2FnZUpzb24iLCJNYWluU291cmNlRmlsZSIsIkNvbnRyb2xsZXJTb3VyY2VGaWxlIiwiU2FtcGxlQ29uZmlnTW9kZWwiLCJTYW1wbGVTZXJ2aWNlTW9kZWwiLCJhZGRQcm9qZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztRQTZDU0E7ZUFBQUEsMEJBQWtCOztRQUFFQztlQUFBQSw0QkFBb0I7O1FBa0IzQkM7ZUFBQUE7Ozt3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
|
|
@@ -5,6 +5,7 @@ export class DevContainer {
|
|
|
5
5
|
_ports = [];
|
|
6
6
|
_portAttributes = new Map();
|
|
7
7
|
_mounts;
|
|
8
|
+
_workspaceFolder = "/workspace";
|
|
8
9
|
_postCreateCommand;
|
|
9
10
|
_updateContentCommand;
|
|
10
11
|
_postStartCommand;
|
|
@@ -13,9 +14,19 @@ export class DevContainer {
|
|
|
13
14
|
_useCompose = false;
|
|
14
15
|
constructor(){
|
|
15
16
|
this._mounts = [
|
|
16
|
-
|
|
17
|
+
this.bindMount(this._workspaceFolder)
|
|
17
18
|
];
|
|
18
19
|
}
|
|
20
|
+
/** In-container path Cursor/VS Code opens (Agents window uses the basename). */ setWorkspaceFolder(folder) {
|
|
21
|
+
this._workspaceFolder = folder;
|
|
22
|
+
this._mounts = [
|
|
23
|
+
this.bindMount(folder)
|
|
24
|
+
];
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
bindMount(target) {
|
|
28
|
+
return `source=..,target=${target},type=bind,consistency=cached`;
|
|
29
|
+
}
|
|
19
30
|
addExtension(...ids) {
|
|
20
31
|
this._extensions.push(...ids);
|
|
21
32
|
return this;
|
|
@@ -57,7 +68,7 @@ export class DevContainer {
|
|
|
57
68
|
if (this._useCompose) {
|
|
58
69
|
config.dockerComposeFile = "docker-compose.yml";
|
|
59
70
|
config.service = "devcontainer";
|
|
60
|
-
config.workspaceFolder =
|
|
71
|
+
config.workspaceFolder = this._workspaceFolder;
|
|
61
72
|
}
|
|
62
73
|
if (this._initializeCommand) {
|
|
63
74
|
config.initializeCommand = this._initializeCommand;
|
|
@@ -103,4 +114,4 @@ export class DevContainer {
|
|
|
103
114
|
}
|
|
104
115
|
}
|
|
105
116
|
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy9tb2RlbHMvZGV2LWNvbnRhaW5lci5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKlxuICogTW9kZWwgZm9yIGAuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uYC5cbiAqXG4gKiBGZWF0dXJlcyBjYWxsIGJ1aWxkZXIgbWV0aG9kcyAoYGFkZEV4dGVuc2lvbmAsIGBmb3J3YXJkUG9ydGAsIGV0Yy4pIGR1cmluZ1xuICogdGhlaXIgY29uZmlndXJlIHBoYXNlLiBgTW9ub1JlcG9TY2FmZm9sZGAgY2FsbHMgYGZpbGVzKClgIGF0IHJlbmRlciB0aW1lLlxuICovXG5cbmV4cG9ydCB0eXBlIFBvcnRBdHRyaWJ1dGVzID0ge1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIFdoZW4gdHJ1ZSwgaG9zdCBwb3J0IG11c3QgbWF0Y2ggdGhlIGNvbnRhaW5lciBwb3J0IChubyByYW5kb20gcmVtYXApLiAqL1xuXHRyZXF1aXJlTG9jYWxQb3J0PzogYm9vbGVhbjtcblx0b25BdXRvRm9yd2FyZD86IFwibm90aWZ5XCIgfCBcIm9wZW5Ccm93c2VyXCIgfCBcIm9wZW5QcmV2aWV3XCIgfCBcInNpbGVudFwiIHwgXCJpZ25vcmVcIjtcbn07XG5cbmV4cG9ydCBjbGFzcyBEZXZDb250YWluZXIgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuREVWQ09OVEFJTkVSX0pTT047XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BvcnRzOiBudW1iZXJbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wb3J0QXR0cmlidXRlcyA9IG5ldyBNYXA8bnVtYmVyLCBQb3J0QXR0cmlidXRlcz4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfbW91bnRzOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBfcG9zdENyZWF0ZUNvbW1hbmQ/OiBzdHJpbmc7XG5cdHByaXZhdGUgX3VwZGF0ZUNvbnRlbnRDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF9wb3N0U3RhcnRDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF9pbml0aWFsaXplQ29tbWFuZD86IHN0cmluZztcblx0cHJpdmF0ZSBfcmVtb3RlVXNlciA9IFwibm9kZVwiO1xuXHRwcml2YXRlIF91c2VDb21wb3NlID0gZmFsc2U7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuX21vdW50cyA9IFtcInNvdXJjZT0uLix0YXJnZXQ9L3dvcmtzcGFjZSx0eXBlPWJpbmQsY29uc2lzdGVuY3k9Y2FjaGVkXCJdO1xuXHR9XG5cblx0cHVibGljIGFkZEV4dGVuc2lvbiguLi5pZHM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fZXh0ZW5zaW9ucy5wdXNoKC4uLmlkcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZm9yd2FyZFBvcnQoLi4ucG9ydHM6IG51bWJlcltdKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9ydHMucHVzaCguLi5wb3J0cyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0UG9ydEF0dHJpYnV0ZXMocG9ydDogbnVtYmVyLCBhdHRyczogUG9ydEF0dHJpYnV0ZXMpOiB0aGlzIHtcblx0XHR0aGlzLl9wb3J0QXR0cmlidXRlcy5zZXQocG9ydCwgYXR0cnMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFBvc3RDcmVhdGVDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdENyZWF0ZUNvbW1hbmQgPSBjbWQ7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0VXBkYXRlQ29udGVudENvbW1hbmQoY21kOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl91cGRhdGVDb250ZW50Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRQb3N0U3RhcnRDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdFN0YXJ0Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsaXplQ29tbWFuZChjbWQ6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2luaXRpYWxpemVDb21tYW5kID0gY21kO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFJlbW90ZVVzZXIodXNlcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcmVtb3RlVXNlciA9IHVzZXI7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgdXNlQ29tcG9zZSgpOiB0aGlzIHtcblx0XHR0aGlzLl91c2VDb21wb3NlID0gdHJ1ZTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRcdGlmICh0aGlzLl91c2VDb21wb3NlKSB7XG5cdFx0XHRjb25maWcuZG9ja2VyQ29tcG9zZUZpbGUgPSBcImRvY2tlci1jb21wb3NlLnltbFwiO1xuXHRcdFx0Y29uZmlnLnNlcnZpY2UgPSBcImRldmNvbnRhaW5lclwiO1xuXHRcdFx0Y29uZmlnLndvcmtzcGFjZUZvbGRlciA9IFwiL3dvcmtzcGFjZVwiO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9pbml0aWFsaXplQ29tbWFuZCkge1xuXHRcdFx0Y29uZmlnLmluaXRpYWxpemVDb21tYW5kID0gdGhpcy5faW5pdGlhbGl6ZUNvbW1hbmQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX21vdW50cykge1xuXHRcdFx0Y29uZmlnLm1vdW50cyA9IHRoaXMuX21vdW50cztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fZXh0ZW5zaW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25maWcuY3VzdG9taXphdGlvbnMgPSB7IHZzY29kZTogeyBleHRlbnNpb25zOiB0aGlzLl9leHRlbnNpb25zIH0gfTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9ydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uZmlnLmZvcndhcmRQb3J0cyA9IHRoaXMuX3BvcnRzO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9wb3J0QXR0cmlidXRlcy5zaXplID4gMCkge1xuXHRcdFx0Y29uc3QgcG9ydHNBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBQb3J0QXR0cmlidXRlcz4gPSB7fTtcblx0XHRcdGZvciAoY29uc3QgW3BvcnQsIGF0dHJzXSBvZiB0aGlzLl9wb3J0QXR0cmlidXRlcykge1xuXHRcdFx0XHRwb3J0c0F0dHJpYnV0ZXNbU3RyaW5nKHBvcnQpXSA9IGF0dHJzO1xuXHRcdFx0fVxuXHRcdFx0Y29uZmlnLnBvcnRzQXR0cmlidXRlcyA9IHBvcnRzQXR0cmlidXRlcztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9zdENyZWF0ZUNvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5wb3N0Q3JlYXRlQ29tbWFuZCA9IHRoaXMuX3Bvc3RDcmVhdGVDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl91cGRhdGVDb250ZW50Q29tbWFuZCkge1xuXHRcdFx0Y29uZmlnLnVwZGF0ZUNvbnRlbnRDb21tYW5kID0gdGhpcy5fdXBkYXRlQ29udGVudENvbW1hbmQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3Bvc3RTdGFydENvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5wb3N0U3RhcnRDb21tYW5kID0gdGhpcy5fcG9zdFN0YXJ0Q29tbWFuZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcmVtb3RlVXNlcikge1xuXHRcdFx0Y29uZmlnLnJlbW90ZVVzZXIgPSB0aGlzLl9yZW1vdGVVc2VyO1xuXHRcdH1cblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5kZXZjb250YWluZXIvZGV2Y29udGFpbmVyLmpzb25cIixcblx0XHRcdFx0Y29udGVudDogSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldFTExfS05PV05fRklMRVMiLCJEZXZDb250YWluZXIiLCJrZXkiLCJERVZDT05UQUlORVJfSlNPTiIsIl9leHRlbnNpb25zIiwiX3BvcnRzIiwiX3BvcnRBdHRyaWJ1dGVzIiwiTWFwIiwiX21vdW50cyIsIl9wb3N0Q3JlYXRlQ29tbWFuZCIsIl91cGRhdGVDb250ZW50Q29tbWFuZCIsIl9wb3N0U3RhcnRDb21tYW5kIiwiX2luaXRpYWxpemVDb21tYW5kIiwiX3JlbW90ZVVzZXIiLCJfdXNlQ29tcG9zZSIsImFkZEV4dGVuc2lvbiIsImlkcyIsInB1c2giLCJmb3J3YXJkUG9ydCIsInBvcnRzIiwic2V0UG9ydEF0dHJpYnV0ZXMiLCJwb3J0IiwiYXR0cnMiLCJzZXQiLCJzZXRQb3N0Q3JlYXRlQ29tbWFuZCIsImNtZCIsInNldFVwZGF0ZUNvbnRlbnRDb21tYW5kIiwic2V0UG9zdFN0YXJ0Q29tbWFuZCIsInNldEluaXRpYWxpemVDb21tYW5kIiwic2V0UmVtb3RlVXNlciIsInVzZXIiLCJ1c2VDb21wb3NlIiwiZmlsZXMiLCJjb25maWciLCJkb2NrZXJDb21wb3NlRmlsZSIsInNlcnZpY2UiLCJ3b3Jrc3BhY2VGb2xkZXIiLCJpbml0aWFsaXplQ29tbWFuZCIsIm1vdW50cyIsImxlbmd0aCIsImN1c3RvbWl6YXRpb25zIiwidnNjb2RlIiwiZXh0ZW5zaW9ucyIsImZvcndhcmRQb3J0cyIsInNpemUiLCJwb3J0c0F0dHJpYnV0ZXMiLCJTdHJpbmciLCJwb3N0Q3JlYXRlQ29tbWFuZCIsInVwZGF0ZUNvbnRlbnRDb21tYW5kIiwicG9zdFN0YXJ0Q29tbWFuZCIsInJlbW90ZVVzZXIiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSxhQUFhO0FBaUI5QyxPQUFPLE1BQU1DO0lBQ0lDLE1BQU1GLGlCQUFpQkcsaUJBQWlCLENBQUM7SUFDeENDLGNBQXdCLEVBQUUsQ0FBQztJQUMzQkMsU0FBbUIsRUFBRSxDQUFDO0lBQ3RCQyxrQkFBa0IsSUFBSUMsTUFBOEI7SUFDcERDLFFBQWtCO0lBQzNCQyxtQkFBNEI7SUFDNUJDLHNCQUErQjtJQUMvQkMsa0JBQTJCO0lBQzNCQyxtQkFBNEI7SUFDNUJDLGNBQWMsT0FBTztJQUNyQkMsY0FBYyxNQUFNO0lBRTVCLGFBQXFCO1FBQ3BCLElBQUksQ0FBQ04sT0FBTyxHQUFHO1lBQUM7U0FBMkQ7SUFDNUU7SUFFT08sYUFBYSxHQUFHQyxHQUFhLEVBQVE7UUFDM0MsSUFBSSxDQUFDWixXQUFXLENBQUNhLElBQUksSUFBSUQ7UUFDekIsT0FBTyxJQUFJO0lBQ1o7SUFFT0UsWUFBWSxHQUFHQyxLQUFlLEVBQVE7UUFDNUMsSUFBSSxDQUFDZCxNQUFNLENBQUNZLElBQUksSUFBSUU7UUFDcEIsT0FBTyxJQUFJO0lBQ1o7SUFFT0Msa0JBQWtCQyxJQUFZLEVBQUVDLEtBQXFCLEVBQVE7UUFDbkUsSUFBSSxDQUFDaEIsZUFBZSxDQUFDaUIsR0FBRyxDQUFDRixNQUFNQztRQUMvQixPQUFPLElBQUk7SUFDWjtJQUVPRSxxQkFBcUJDLEdBQVcsRUFBUTtRQUM5QyxJQUFJLENBQUNoQixrQkFBa0IsR0FBR2dCO1FBQzFCLE9BQU8sSUFBSTtJQUNaO0lBRU9DLHdCQUF3QkQsR0FBVyxFQUFRO1FBQ2pELElBQUksQ0FBQ2YscUJBQXFCLEdBQUdlO1FBQzdCLE9BQU8sSUFBSTtJQUNaO0lBRU9FLG9CQUFvQkYsR0FBVyxFQUFRO1FBQzdDLElBQUksQ0FBQ2QsaUJBQWlCLEdBQUdjO1FBQ3pCLE9BQU8sSUFBSTtJQUNaO0lBRU9HLHFCQUFxQkgsR0FBVyxFQUFRO1FBQzlDLElBQUksQ0FBQ2Isa0JBQWtCLEdBQUdhO1FBQzFCLE9BQU8sSUFBSTtJQUNaO0lBRU9JLGNBQWNDLElBQVksRUFBUTtRQUN4QyxJQUFJLENBQUNqQixXQUFXLEdBQUdpQjtRQUNuQixPQUFPLElBQUk7SUFDWjtJQUVPQyxhQUFtQjtRQUN6QixJQUFJLENBQUNqQixXQUFXLEdBQUc7UUFDbkIsT0FBTyxJQUFJO0lBQ1o7SUFFT2tCLFFBQXNCO1FBQzVCLE1BQU1DLFNBQWtDLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUNuQixXQUFXLEVBQUU7WUFDckJtQixPQUFPQyxpQkFBaUIsR0FBRztZQUMzQkQsT0FBT0UsT0FBTyxHQUFHO1lBQ2pCRixPQUFPRyxlQUFlLEdBQUc7UUFDMUI7UUFFQSxJQUFJLElBQUksQ0FBQ3hCLGtCQUFrQixFQUFFO1lBQzVCcUIsT0FBT0ksaUJBQWlCLEdBQUcsSUFBSSxDQUFDekIsa0JBQWtCO1FBQ25EO1FBRUEsSUFBSSxJQUFJLENBQUNKLE9BQU8sRUFBRTtZQUNqQnlCLE9BQU9LLE1BQU0sR0FBRyxJQUFJLENBQUM5QixPQUFPO1FBQzdCO1FBRUEsSUFBSSxJQUFJLENBQUNKLFdBQVcsQ0FBQ21DLE1BQU0sR0FBRyxHQUFHO1lBQ2hDTixPQUFPTyxjQUFjLEdBQUc7Z0JBQUVDLFFBQVE7b0JBQUVDLFlBQVksSUFBSSxDQUFDdEMsV0FBVztnQkFBQztZQUFFO1FBQ3BFO1FBRUEsSUFBSSxJQUFJLENBQUNDLE1BQU0sQ0FBQ2tDLE1BQU0sR0FBRyxHQUFHO1lBQzNCTixPQUFPVSxZQUFZLEdBQUcsSUFBSSxDQUFDdEMsTUFBTTtRQUNsQztRQUVBLElBQUksSUFBSSxDQUFDQyxlQUFlLENBQUNzQyxJQUFJLEdBQUcsR0FBRztZQUNsQyxNQUFNQyxrQkFBa0QsQ0FBQztZQUN6RCxLQUFLLE1BQU0sQ0FBQ3hCLE1BQU1DLE1BQU0sSUFBSSxJQUFJLENBQUNoQixlQUFlLENBQUU7Z0JBQ2pEdUMsZUFBZSxDQUFDQyxPQUFPekIsTUFBTSxHQUFHQztZQUNqQztZQUNBVyxPQUFPWSxlQUFlLEdBQUdBO1FBQzFCO1FBRUEsSUFBSSxJQUFJLENBQUNwQyxrQkFBa0IsRUFBRTtZQUM1QndCLE9BQU9jLGlCQUFpQixHQUFHLElBQUksQ0FBQ3RDLGtCQUFrQjtRQUNuRDtRQUVBLElBQUksSUFBSSxDQUFDQyxxQkFBcUIsRUFBRTtZQUMvQnVCLE9BQU9lLG9CQUFvQixHQUFHLElBQUksQ0FBQ3RDLHFCQUFxQjtRQUN6RDtRQUVBLElBQUksSUFBSSxDQUFDQyxpQkFBaUIsRUFBRTtZQUMzQnNCLE9BQU9nQixnQkFBZ0IsR0FBRyxJQUFJLENBQUN0QyxpQkFBaUI7UUFDakQ7UUFFQSxJQUFJLElBQUksQ0FBQ0UsV0FBVyxFQUFFO1lBQ3JCb0IsT0FBT2lCLFVBQVUsR0FBRyxJQUFJLENBQUNyQyxXQUFXO1FBQ3JDO1FBRUEsT0FBTztZQUNOO2dCQUNDc0MsVUFBVTtnQkFDVkMsU0FBU0MsS0FBS0MsU0FBUyxDQUFDckIsUUFBUSxNQUFNO1lBQ3ZDO1NBQ0E7SUFDRjtBQUNEIn0=
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy9tb2RlbHMvZGV2LWNvbnRhaW5lci5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbi8qKlxuICogTW9kZWwgZm9yIGAuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uYC5cbiAqXG4gKiBGZWF0dXJlcyBjYWxsIGJ1aWxkZXIgbWV0aG9kcyAoYGFkZEV4dGVuc2lvbmAsIGBmb3J3YXJkUG9ydGAsIGV0Yy4pIGR1cmluZ1xuICogdGhlaXIgY29uZmlndXJlIHBoYXNlLiBgTW9ub1JlcG9TY2FmZm9sZGAgY2FsbHMgYGZpbGVzKClgIGF0IHJlbmRlciB0aW1lLlxuICovXG5cbmV4cG9ydCB0eXBlIFBvcnRBdHRyaWJ1dGVzID0ge1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIFdoZW4gdHJ1ZSwgaG9zdCBwb3J0IG11c3QgbWF0Y2ggdGhlIGNvbnRhaW5lciBwb3J0IChubyByYW5kb20gcmVtYXApLiAqL1xuXHRyZXF1aXJlTG9jYWxQb3J0PzogYm9vbGVhbjtcblx0b25BdXRvRm9yd2FyZD86IFwibm90aWZ5XCIgfCBcIm9wZW5Ccm93c2VyXCIgfCBcIm9wZW5QcmV2aWV3XCIgfCBcInNpbGVudFwiIHwgXCJpZ25vcmVcIjtcbn07XG5cbmV4cG9ydCBjbGFzcyBEZXZDb250YWluZXIgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuREVWQ09OVEFJTkVSX0pTT047XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3BvcnRzOiBudW1iZXJbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wb3J0QXR0cmlidXRlcyA9IG5ldyBNYXA8bnVtYmVyLCBQb3J0QXR0cmlidXRlcz4oKTtcblx0cHJpdmF0ZSBfbW91bnRzOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBfd29ya3NwYWNlRm9sZGVyID0gXCIvd29ya3NwYWNlXCI7XG5cdHByaXZhdGUgX3Bvc3RDcmVhdGVDb21tYW5kPzogc3RyaW5nO1xuXHRwcml2YXRlIF91cGRhdGVDb250ZW50Q29tbWFuZD86IHN0cmluZztcblx0cHJpdmF0ZSBfcG9zdFN0YXJ0Q29tbWFuZD86IHN0cmluZztcblx0cHJpdmF0ZSBfaW5pdGlhbGl6ZUNvbW1hbmQ/OiBzdHJpbmc7XG5cdHByaXZhdGUgX3JlbW90ZVVzZXIgPSBcIm5vZGVcIjtcblx0cHJpdmF0ZSBfdXNlQ29tcG9zZSA9IGZhbHNlO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLl9tb3VudHMgPSBbdGhpcy5iaW5kTW91bnQodGhpcy5fd29ya3NwYWNlRm9sZGVyKV07XG5cdH1cblxuXHQvKiogSW4tY29udGFpbmVyIHBhdGggQ3Vyc29yL1ZTIENvZGUgb3BlbnMgKEFnZW50cyB3aW5kb3cgdXNlcyB0aGUgYmFzZW5hbWUpLiAqL1xuXHRwdWJsaWMgc2V0V29ya3NwYWNlRm9sZGVyKGZvbGRlcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fd29ya3NwYWNlRm9sZGVyID0gZm9sZGVyO1xuXHRcdHRoaXMuX21vdW50cyA9IFt0aGlzLmJpbmRNb3VudChmb2xkZXIpXTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHByaXZhdGUgYmluZE1vdW50KHRhcmdldDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYHNvdXJjZT0uLix0YXJnZXQ9JHt0YXJnZXR9LHR5cGU9YmluZCxjb25zaXN0ZW5jeT1jYWNoZWRgO1xuXHR9XG5cblx0cHVibGljIGFkZEV4dGVuc2lvbiguLi5pZHM6IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0dGhpcy5fZXh0ZW5zaW9ucy5wdXNoKC4uLmlkcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZm9yd2FyZFBvcnQoLi4ucG9ydHM6IG51bWJlcltdKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9ydHMucHVzaCguLi5wb3J0cyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0UG9ydEF0dHJpYnV0ZXMocG9ydDogbnVtYmVyLCBhdHRyczogUG9ydEF0dHJpYnV0ZXMpOiB0aGlzIHtcblx0XHR0aGlzLl9wb3J0QXR0cmlidXRlcy5zZXQocG9ydCwgYXR0cnMpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFBvc3RDcmVhdGVDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdENyZWF0ZUNvbW1hbmQgPSBjbWQ7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgc2V0VXBkYXRlQ29udGVudENvbW1hbmQoY21kOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl91cGRhdGVDb250ZW50Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRQb3N0U3RhcnRDb21tYW5kKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcG9zdFN0YXJ0Q29tbWFuZCA9IGNtZDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRJbml0aWFsaXplQ29tbWFuZChjbWQ6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2luaXRpYWxpemVDb21tYW5kID0gY21kO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHNldFJlbW90ZVVzZXIodXNlcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fcmVtb3RlVXNlciA9IHVzZXI7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgdXNlQ29tcG9zZSgpOiB0aGlzIHtcblx0XHR0aGlzLl91c2VDb21wb3NlID0gdHJ1ZTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRcdGlmICh0aGlzLl91c2VDb21wb3NlKSB7XG5cdFx0XHRjb25maWcuZG9ja2VyQ29tcG9zZUZpbGUgPSBcImRvY2tlci1jb21wb3NlLnltbFwiO1xuXHRcdFx0Y29uZmlnLnNlcnZpY2UgPSBcImRldmNvbnRhaW5lclwiO1xuXHRcdFx0Y29uZmlnLndvcmtzcGFjZUZvbGRlciA9IHRoaXMuX3dvcmtzcGFjZUZvbGRlcjtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5faW5pdGlhbGl6ZUNvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy5pbml0aWFsaXplQ29tbWFuZCA9IHRoaXMuX2luaXRpYWxpemVDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9tb3VudHMpIHtcblx0XHRcdGNvbmZpZy5tb3VudHMgPSB0aGlzLl9tb3VudHM7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2V4dGVuc2lvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uZmlnLmN1c3RvbWl6YXRpb25zID0geyB2c2NvZGU6IHsgZXh0ZW5zaW9uczogdGhpcy5fZXh0ZW5zaW9ucyB9IH07XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3BvcnRzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbmZpZy5mb3J3YXJkUG9ydHMgPSB0aGlzLl9wb3J0cztcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fcG9ydEF0dHJpYnV0ZXMuc2l6ZSA+IDApIHtcblx0XHRcdGNvbnN0IHBvcnRzQXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgUG9ydEF0dHJpYnV0ZXM+ID0ge307XG5cdFx0XHRmb3IgKGNvbnN0IFtwb3J0LCBhdHRyc10gb2YgdGhpcy5fcG9ydEF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0cG9ydHNBdHRyaWJ1dGVzW1N0cmluZyhwb3J0KV0gPSBhdHRycztcblx0XHRcdH1cblx0XHRcdGNvbmZpZy5wb3J0c0F0dHJpYnV0ZXMgPSBwb3J0c0F0dHJpYnV0ZXM7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3Bvc3RDcmVhdGVDb21tYW5kKSB7XG5cdFx0XHRjb25maWcucG9zdENyZWF0ZUNvbW1hbmQgPSB0aGlzLl9wb3N0Q3JlYXRlQ29tbWFuZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5fdXBkYXRlQ29udGVudENvbW1hbmQpIHtcblx0XHRcdGNvbmZpZy51cGRhdGVDb250ZW50Q29tbWFuZCA9IHRoaXMuX3VwZGF0ZUNvbnRlbnRDb21tYW5kO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9wb3N0U3RhcnRDb21tYW5kKSB7XG5cdFx0XHRjb25maWcucG9zdFN0YXJ0Q29tbWFuZCA9IHRoaXMuX3Bvc3RTdGFydENvbW1hbmQ7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX3JlbW90ZVVzZXIpIHtcblx0XHRcdGNvbmZpZy5yZW1vdGVVc2VyID0gdGhpcy5fcmVtb3RlVXNlcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIuZGV2Y29udGFpbmVyL2RldmNvbnRhaW5lci5qc29uXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiRGV2Q29udGFpbmVyIiwia2V5IiwiREVWQ09OVEFJTkVSX0pTT04iLCJfZXh0ZW5zaW9ucyIsIl9wb3J0cyIsIl9wb3J0QXR0cmlidXRlcyIsIk1hcCIsIl9tb3VudHMiLCJfd29ya3NwYWNlRm9sZGVyIiwiX3Bvc3RDcmVhdGVDb21tYW5kIiwiX3VwZGF0ZUNvbnRlbnRDb21tYW5kIiwiX3Bvc3RTdGFydENvbW1hbmQiLCJfaW5pdGlhbGl6ZUNvbW1hbmQiLCJfcmVtb3RlVXNlciIsIl91c2VDb21wb3NlIiwiYmluZE1vdW50Iiwic2V0V29ya3NwYWNlRm9sZGVyIiwiZm9sZGVyIiwidGFyZ2V0IiwiYWRkRXh0ZW5zaW9uIiwiaWRzIiwicHVzaCIsImZvcndhcmRQb3J0IiwicG9ydHMiLCJzZXRQb3J0QXR0cmlidXRlcyIsInBvcnQiLCJhdHRycyIsInNldCIsInNldFBvc3RDcmVhdGVDb21tYW5kIiwiY21kIiwic2V0VXBkYXRlQ29udGVudENvbW1hbmQiLCJzZXRQb3N0U3RhcnRDb21tYW5kIiwic2V0SW5pdGlhbGl6ZUNvbW1hbmQiLCJzZXRSZW1vdGVVc2VyIiwidXNlciIsInVzZUNvbXBvc2UiLCJmaWxlcyIsImNvbmZpZyIsImRvY2tlckNvbXBvc2VGaWxlIiwic2VydmljZSIsIndvcmtzcGFjZUZvbGRlciIsImluaXRpYWxpemVDb21tYW5kIiwibW91bnRzIiwibGVuZ3RoIiwiY3VzdG9taXphdGlvbnMiLCJ2c2NvZGUiLCJleHRlbnNpb25zIiwiZm9yd2FyZFBvcnRzIiwic2l6ZSIsInBvcnRzQXR0cmlidXRlcyIsIlN0cmluZyIsInBvc3RDcmVhdGVDb21tYW5kIiwidXBkYXRlQ29udGVudENvbW1hbmQiLCJwb3N0U3RhcnRDb21tYW5kIiwicmVtb3RlVXNlciIsImZpbGVQYXRoIiwiY29udGVudCIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGdCQUFnQixRQUFRLGFBQWE7QUFpQjlDLE9BQU8sTUFBTUM7SUFDSUMsTUFBTUYsaUJBQWlCRyxpQkFBaUIsQ0FBQztJQUN4Q0MsY0FBd0IsRUFBRSxDQUFDO0lBQzNCQyxTQUFtQixFQUFFLENBQUM7SUFDdEJDLGtCQUFrQixJQUFJQyxNQUE4QjtJQUM3REMsUUFBa0I7SUFDbEJDLG1CQUFtQixhQUFhO0lBQ2hDQyxtQkFBNEI7SUFDNUJDLHNCQUErQjtJQUMvQkMsa0JBQTJCO0lBQzNCQyxtQkFBNEI7SUFDNUJDLGNBQWMs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
|
|
@@ -4,7 +4,7 @@ import { DockerCompose } from "../models/compose.model.js";
|
|
|
4
4
|
import { ConfigYaml } from "../models/config-yaml.model.js";
|
|
5
5
|
import { WELL_KNOWN_FILES } from "../models/const.js";
|
|
6
6
|
import { DevContainer } from "../models/dev-container.model.js";
|
|
7
|
-
import { commandHistory } from "../models/docker-image.model.js";
|
|
7
|
+
import { commandHistory, withWorkspaceNodeModulesOwnership } from "../models/docker-image.model.js";
|
|
8
8
|
import { EnvFile } from "../models/env-file.model.js";
|
|
9
9
|
import { Gitignore } from "../models/gitignore.model.js";
|
|
10
10
|
import { LaunchJson } from "../models/launch-json.model.js";
|
|
@@ -50,16 +50,20 @@ function createWorkspace(targetDir, projectName, apiNames) {
|
|
|
50
50
|
monoRepo.targetDir = targetDir;
|
|
51
51
|
monoRepo.setName(projectName);
|
|
52
52
|
const name = monoRepo.name;
|
|
53
|
+
// Project-named root so Cursor Agents (and other tools) label the workspace by name.
|
|
54
|
+
const workspaceRoot = `/${name}`;
|
|
53
55
|
const compose = new DockerCompose().setProjectName(name).addHeaderComment("Merge .cursor/mcp.json in the service command. postStartCommand runs after Cursor's first MCP snapshot.").addNetwork(name, {
|
|
54
56
|
name: `samples-${name}`
|
|
55
57
|
}).addService("devcontainer", {
|
|
56
58
|
build: ".",
|
|
57
59
|
volumes: [
|
|
60
|
+
// Repo bind in Compose (survives CLI recreates; Cursor-only mounts do not).
|
|
61
|
+
`..:${workspaceRoot}`,
|
|
58
62
|
// Workspace-local (created by initialize.sh as the host user).
|
|
59
63
|
// Do NOT bind ${HOME}/.npm/... — Docker creates missing host paths as root.
|
|
60
64
|
"./npm-auth:/home/node/.npm-config",
|
|
61
65
|
"./gh-auth:/home/node/.config/gh",
|
|
62
|
-
|
|
66
|
+
`webapi-node-modules:${workspaceRoot}/node_modules`,
|
|
63
67
|
// Named volume (not a Cursor-only mount) so CLI recreates keep Up-arrow history.
|
|
64
68
|
`${commandHistory.volumeName}:${commandHistory.dir}`
|
|
65
69
|
],
|
|
@@ -69,13 +73,13 @@ function createWorkspace(targetDir, projectName, apiNames) {
|
|
|
69
73
|
environment: {
|
|
70
74
|
NPM_CONFIG_USERCONFIG: "/home/node/.npm-config/.npmrc"
|
|
71
75
|
},
|
|
72
|
-
command:
|
|
76
|
+
command: `'bash -c "CODEBASE_RAG_WORKSPACE=${workspaceRoot} node --experimental-strip-types ${workspaceRoot}/.devcontainer/codebase-rag-mcp.ts merge || true && exec sleep infinity"'`,
|
|
73
77
|
networks: [
|
|
74
78
|
name
|
|
75
79
|
]
|
|
76
80
|
}).addVolume("webapi-node-modules").addVolume(commandHistory.volumeName);
|
|
77
81
|
const installCmd = "bash .devcontainer/post-create.sh";
|
|
78
|
-
const devContainer = new DevContainer().addExtension("biomejs.biome", "vitest.explorer").setInitializeCommand("bash .devcontainer/initialize.sh").setPostCreateCommand(installCmd).setUpdateContentCommand(installCmd).setPostStartCommand("bash .devcontainer/post-start.sh").useCompose();
|
|
82
|
+
const devContainer = new DevContainer().setWorkspaceFolder(workspaceRoot).addExtension("biomejs.biome", "vitest.explorer").setInitializeCommand("bash .devcontainer/initialize.sh").setPostCreateCommand(installCmd).setUpdateContentCommand(installCmd).setPostStartCommand("bash .devcontainer/post-start.sh").useCompose();
|
|
79
83
|
for (const [index, apiName] of apiNames.entries()){
|
|
80
84
|
const port = webapiPort(index);
|
|
81
85
|
devContainer.forwardPort(port);
|
|
@@ -87,7 +91,11 @@ function createWorkspace(targetDir, projectName, apiNames) {
|
|
|
87
91
|
// Workspace-level models (repo root)
|
|
88
92
|
monoRepo.addModel(compose);
|
|
89
93
|
monoRepo.addModel(devContainer);
|
|
90
|
-
|
|
94
|
+
const appDevImage = new WebapiDevContainer();
|
|
95
|
+
appDevImage.addLayer(withWorkspaceNodeModulesOwnership({
|
|
96
|
+
workspaceDir: workspaceRoot
|
|
97
|
+
}));
|
|
98
|
+
monoRepo.addModel(appDevImage);
|
|
91
99
|
monoRepo.addModel(new WebapiProductionDockerfile(apiNames));
|
|
92
100
|
monoRepo.addModel(new GithubCiWorkflows());
|
|
93
101
|
monoRepo.addModel(new VSCodeSettings(name));
|
|
@@ -214,4 +222,4 @@ function addApiProject(monoRepo, workspaceName, apiName) {
|
|
|
214
222
|
monoRepo.addProject(apiProject);
|
|
215
223
|
}
|
|
216
224
|
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvY3JlYXRlLWFwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgRG9ja2VyQ29tcG9zZSB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLXlhbWwubW9kZWwuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgeyBEZXZDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2Rldi1jb250YWluZXIubW9kZWwuanNcIjtcbmltcG9ydCB7IGNvbW1hbmRIaXN0b3J5IH0gZnJvbSBcIi4uL21vZGVscy9kb2NrZXItaW1hZ2UubW9kZWwuanNcIjtcbmltcG9ydCB7IEVudkZpbGUgfSBmcm9tIFwiLi4vbW9kZWxzL2Vudi1maWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBHaXRpZ25vcmUgfSBmcm9tIFwiLi4vbW9kZWxzL2dpdGlnbm9yZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgTGF1bmNoSnNvbiB9IGZyb20gXCIuLi9tb2RlbHMvbGF1bmNoLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB7IFBhY2thZ2VKc29uIH0gZnJvbSBcIi4uL21vZGVscy9wYWNrYWdlLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB7IE1vbm9SZXBvU2NhZmZvbGQsIFByb2plY3RTY2FmZm9sZCB9IGZyb20gXCIuLi9tb2RlbHMvcHJvamVjdC5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgVHNDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL3RzY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBWaXRlc3RDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL3ZpdGVzdC1jb25maWcubW9kZWwuanNcIjtcbmltcG9ydCB7IFZTQ29kZVNldHRpbmdzIH0gZnJvbSBcIi4uL21vZGVscy92c2NvZGUtc2V0dGluZ3MubW9kZWwuanNcIjtcbmltcG9ydCB7IFNjYWZmb2xkU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQge1xuXHRDcmVhdGVDbGlFcnJvcixcblx0aXNEZWNvaGVyZVdvcmtzcGFjZSxcblx0bGlzdEV4aXN0aW5nQXBpTmFtZXMsXG5cdHBhcnNlQXBpTmFtZXMsXG59IGZyb20gXCIuL2FwaS1uYW1lLmpzXCI7XG5pbXBvcnQge1xuXHRERUZBVUxUX1dFQkFQSV9OQU1FLFxuXHR3ZWJhcGlQYWNrYWdlTmFtZSxcblx0d2ViYXBpUG9ydCxcblx0d2ViYXBpUHJvamVjdERpcixcblx0d2ViYXBpUmVsZWFzZUVudHJ5LFxufSBmcm9tIFwiLi9jb25zdC5qc1wiO1xuaW1wb3J0IHsgRGV2Q29udGFpbmVySG9zdFNjcmlwdHMgfSBmcm9tIFwiLi9kZXZjb250YWluZXIvaG9zdC1zY3JpcHRzLmpzXCI7XG5pbXBvcnQgeyBBdXRoRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL2F1dGguZmVhdHVyZS5qc1wiO1xuaW1wb3J0IHsgRGF0YWJhc2VGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvZGF0YWJhc2UuZmVhdHVyZS5qc1wiO1xuaW1wb3J0IHsgRmluYWxpemVGZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvZmluYWxpemUuZmVhdHVyZS5qc1wiO1xuaW1wb3J0IHsgUG9zdG1hbkZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9wb3N0bWFuLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IEFwaVBhY2thZ2VKc29uIH0gZnJvbSBcIi4vbW9kZWxzL2FwaS1wYWNrYWdlLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB7IENvbnRyb2xsZXJTb3VyY2VGaWxlIH0gZnJvbSBcIi4vbW9kZWxzL2NvbnRyb2xsZXItc291cmNlLWZpbGUubW9kZWwuanNcIjtcbmltcG9ydCB7IEdpdGh1YkNpV29ya2Zsb3dzIH0gZnJvbSBcIi4vbW9kZWxzL2dpdGh1Yi1jaS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgTWFpblNvdXJjZUZpbGUgfSBmcm9tIFwiLi9tb2RlbHMvbWFpbi1zb3VyY2UtZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgV2ViYXBpUHJvZHVjdGlvbkRvY2tlcmZpbGUgfSBmcm9tIFwiLi9tb2RlbHMvcHJvZHVjdGlvbi1kb2NrZXJmaWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBTYW1wbGVDb25maWdNb2RlbCwgU2FtcGxlU2VydmljZU1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL3NhbXBsZS1maWxlcy5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgV2ViYXBpRGV2Q29udGFpbmVyIH0gZnJvbSBcIi4vbW9kZWxzL3dlYmFwaS1pbWFnZS5tb2RlbC5qc1wiO1xuXG5leHBvcnQgeyBXRUJBUElfUFJPSkVDVF9ESVIsIFdFQkFQSV9SRUxFQVNFX0VOVFJZIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcblxuZXhwb3J0IHR5cGUgQXBpT3B0aW9ucyA9IHtcblx0ZD86IHN0cmluZztcblx0LyoqIEhvc3QgcHJvamVjdCBuYW1lIChkaXJlY3RvcnkgYmFzZW5hbWUpLiBSZXF1aXJlZCB3aGVuIHNjYWZmb2xkaW5nIGludG8gYC93b3Jrc3BhY2VgLiAqL1xuXHRwcm9qZWN0TmFtZT86IHN0cmluZztcblx0LyoqIEFQSSBzbHVncyB1bmRlciBgcHJvamVjdHMvYC4gRGVmYXVsdCBgW1wiYXBpXCJdYC4gUmVwZWF0YWJsZSBgLS1uYW1lYC4gKi9cblx0bmFtZXM/OiBzdHJpbmdbXTtcblx0LyoqIEFkZCBBUElzIHRvIGFuIGV4aXN0aW5nIERlY29oZXJlIHdvcmtzcGFjZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4gKi9cblx0YWRkPzogYm9vbGVhbjtcblx0YXV0aFByb3ZpZGVyPzogXCJhdXRoMFwiIHwgXCJub25lXCI7XG5cdGRhdGFiYXNlUHJvdmlkZXI/OiBcIm5vbmVcIiB8IFwicG9zdGdyZXMvdHlwZW9ybVwiO1xuXHRwb3N0bWFuUHJvdmlkZXI/OiBcImFwaVwiIHwgXCJsb2NhbFwiIHwgXCJub25lXCI7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xufTtcblxuY29uc3QgZmVhdHVyZXMgPSBbRGF0YWJhc2VGZWF0dXJlLCBBdXRoRmVhdHVyZSwgUG9zdG1hbkZlYXR1cmUsIEZpbmFsaXplRmVhdHVyZV07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzY2FmZm9sZEFwaShjbGlPcHRpb25zOiBBcGlPcHRpb25zKSB7XG5cdGNvbnN0IHRhcmdldERpciA9IHJlc29sdmUoY2xpT3B0aW9ucy5kID8/IFwiLlwiKTtcblx0Y29uc3QgcHJvamVjdE5hbWUgPVxuXHRcdGNsaU9wdGlvbnMucHJvamVjdE5hbWU/LnRyaW0oKSB8fFxuXHRcdHByb2Nlc3MuZW52LkRFQ09IRVJFX1BST0pFQ1RfTkFNRT8udHJpbSgpIHx8XG5cdFx0YmFzZW5hbWUodGFyZ2V0RGlyKTtcblx0Y29uc3QgbmFtZXMgPSBwYXJzZUFwaU5hbWVzKGNsaU9wdGlvbnMubmFtZXMpO1xuXHRjb25zdCB3b3Jrc3BhY2UgPSBjbGlPcHRpb25zLmFkZFxuXHRcdD8gY3JlYXRlQWRkV29ya3NwYWNlKHRhcmdldERpciwgcHJvamVjdE5hbWUsIG5hbWVzKVxuXHRcdDogY3JlYXRlV29ya3NwYWNlKHRhcmdldERpciwgcHJvamVjdE5hbWUsIG5hbWVzKTtcblx0YXdhaXQgU2NhZmZvbGRTZXJ2aWNlLnNjYWZmb2xkKHdvcmtzcGFjZSwgeyAuLi5jbGlPcHRpb25zLCBuYW1lcyB9LCBmZWF0dXJlcyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdvcmtzcGFjZShcblx0dGFyZ2V0RGlyOiBzdHJpbmcsXG5cdHByb2plY3ROYW1lOiBzdHJpbmcsXG5cdGFwaU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IE1vbm9SZXBvU2NhZmZvbGQge1xuXHRjb25zdCBtb25vUmVwbyA9IG5ldyBNb25vUmVwb1NjYWZmb2xkKCk7XG5cdG1vbm9SZXBvLnRhcmdldERpciA9IHRhcmdldERpcjtcblx0bW9ub1JlcG8uc2V0TmFtZShwcm9qZWN0TmFtZSk7XG5cdGNvbnN0IG5hbWUgPSBtb25vUmVwby5uYW1lO1xuXG5cdGNvbnN0IGNvbXBvc2UgPSBuZXcgRG9ja2VyQ29tcG9zZSgpXG5cdFx0LnNldFByb2plY3ROYW1lKG5hbWUpXG5cdFx0LmFkZEhlYWRlckNvbW1lbnQoXG5cdFx0XHRcIk1lcmdlIC5jdXJzb3IvbWNwLmpzb24gaW4gdGhlIHNlcnZpY2UgY29tbWFuZC4gcG9zdFN0YXJ0Q29tbWFuZCBydW5zIGFmdGVyIEN1cnNvcidzIGZpcnN0IE1DUCBzbmFwc2hvdC5cIixcblx0XHQpXG5cdFx0LmFkZE5ldHdvcmsobmFtZSwgeyBuYW1lOiBgc2FtcGxlcy0ke25hbWV9YCB9KVxuXHRcdC5hZGRTZXJ2aWNlKFwiZGV2Y29udGFpbmVyXCIsIHtcblx0XHRcdGJ1aWxkOiBcIi5cIixcblx0XHRcdHZvbHVtZXM6IFtcblx0XHRcdFx0Ly8gV29ya3NwYWNlLWxvY2FsIChjcmVhdGVkIGJ5IGluaXRpYWxpemUuc2ggYXMgdGhlIGhvc3QgdXNlcikuXG5cdFx0XHRcdC8vIERvIE5PVCBiaW5kICR7SE9NRX0vLm5wbS8uLi4g4oCUIERvY2tlciBjcmVhdGVzIG1pc3NpbmcgaG9zdCBwYXRocyBhcyByb290LlxuXHRcdFx0XHRcIi4vbnBtLWF1dGg6L2hvbWUvbm9kZS8ubnBtLWNvbmZpZ1wiLFxuXHRcdFx0XHRcIi4vZ2gtYXV0aDovaG9tZS9ub2RlLy5jb25maWcvZ2hcIixcblx0XHRcdFx0XCJ3ZWJhcGktbm9kZS1tb2R1bGVzOi93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzXCIsXG5cdFx0XHRcdC8vIE5hbWVkIHZvbHVtZSAobm90IGEgQ3Vyc29yLW9ubHkgbW91bnQpIHNvIENMSSByZWNyZWF0ZXMga2VlcCBVcC1hcnJvdyBoaXN0b3J5LlxuXHRcdFx0XHRgJHtjb21tYW5kSGlzdG9yeS52b2x1bWVOYW1lfToke2NvbW1hbmRIaXN0b3J5LmRpcn1gLFxuXHRcdFx0XSxcblx0XHRcdGVudl9maWxlOiBbXCIuL2doLmVudlwiXSxcblx0XHRcdGVudmlyb25tZW50OiB7IE5QTV9DT05GSUdfVVNFUkNPTkZJRzogXCIvaG9tZS9ub2RlLy5ucG0tY29uZmlnLy5ucG1yY1wiIH0sXG5cdFx0XHRjb21tYW5kOlxuXHRcdFx0XHRcIidiYXNoIC1jIFxcXCJDT0RFQkFTRV9SQUdfV09SS1NQQUNFPS93b3Jrc3BhY2Ugbm9kZSAtLWV4cGVyaW1lbnRhbC1zdHJpcC10eXBlcyAvd29ya3NwYWNlLy5kZXZjb250YWluZXIvY29kZWJhc2UtcmFnLW1jcC50cyBtZXJnZSB8fCB0cnVlICYmIGV4ZWMgc2xlZXAgaW5maW5pdHlcXFwiJ1wiLFxuXHRcdFx0bmV0d29ya3M6IFtuYW1lXSxcblx0XHR9KVxuXHRcdC5hZGRWb2x1bWUoXCJ3ZWJhcGktbm9kZS1tb2R1bGVzXCIpXG5cdFx0LmFkZFZvbHVtZShjb21tYW5kSGlzdG9yeS52b2x1bWVOYW1lKTtcblxuXHRjb25zdCBpbnN0YWxsQ21kID0gXCJiYXNoIC5kZXZjb250YWluZXIvcG9zdC1jcmVhdGUuc2hcIjtcblx0Y29uc3QgZGV2Q29udGFpbmVyID0gbmV3IERldkNvbnRhaW5lcigpXG5cdFx0LmFkZEV4dGVuc2lvbihcImJpb21lanMuYmlvbWVcIiwgXCJ2aXRlc3QuZXhwbG9yZXJcIilcblx0XHQuc2V0SW5pdGlhbGl6ZUNvbW1hbmQoXCJiYXNoIC5kZXZjb250YWluZXIvaW5pdGlhbGl6ZS5zaFwiKVxuXHRcdC5zZXRQb3N0Q3JlYXRlQ29tbWFuZChpbnN0YWxsQ21kKVxuXHRcdC5zZXRVcGRhdGVDb250ZW50Q29tbWFuZChpbnN0YWxsQ21kKVxuXHRcdC5zZXRQb3N0U3RhcnRDb21tYW5kKFwiYmFzaCAuZGV2Y29udGFpbmVyL3Bvc3Qtc3RhcnQuc2hcIilcblx0XHQudXNlQ29tcG9zZSgpO1xuXG5cdGZvciAoY29uc3QgW2luZGV4LCBhcGlOYW1lXSBvZiBhcGlOYW1lcy5lbnRyaWVzKCkpIHtcblx0XHRjb25zdCBwb3J0ID0gd2ViYXBpUG9ydChpbmRleCk7XG5cdFx0ZGV2Q29udGFpbmVyLmZvcndhcmRQb3J0KHBvcnQpO1xuXHRcdGRldkNvbnRhaW5lci5zZXRQb3J0QXR0cmlidXRlcyhwb3J0LCB7XG5cdFx0XHRsYWJlbDogYXBpTmFtZSA9PT0gREVGQVVMVF9XRUJBUElfTkFNRSA/IFwiQVBJXCIgOiBhcGlOYW1lLFxuXHRcdFx0cmVxdWlyZUxvY2FsUG9ydDogdHJ1ZSxcblx0XHR9KTtcblx0fVxuXG5cdC8vIFdvcmtzcGFjZS1sZXZlbCBtb2RlbHMgKHJlcG8gcm9vdClcblx0bW9ub1JlcG8uYWRkTW9kZWwoY29tcG9zZSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKGRldkNvbnRhaW5lcik7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBXZWJhcGlEZXZDb250YWluZXIoKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBXZWJhcGlQcm9kdWN0aW9uRG9ja2VyZmlsZShhcGlOYW1lcykpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgR2l0aHViQ2lXb3JrZmxvd3MoKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBWU0NvZGVTZXR0aW5ncyhuYW1lKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBMYXVuY2hKc29uKGFwaU5hbWVzKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBUc0NvbmZpZygpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFZpdGVzdENvbmZpZygpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFBhY2thZ2VKc29uKGAke25hbWV9LmFwaWAsIHsgYXBpTmFtZXMsIHdvcmtzcGFjZU5hbWU6IG5hbWUgfSkpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgQ29uZmlnWWFtbChXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ZQU1MLCBcImNvbmZpZy9jb25maWcueWFtbFwiLCBcIlwiKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKFxuXHRcdG5ldyBDb25maWdZYW1sKFdFTExfS05PV05fRklMRVMuQ09ORklHX0RFVl9ZQU1MLCBcImNvbmZpZy9jb25maWcuZGV2LnlhbWxcIiwgXCJcIiksXG5cdCk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBHaXRpZ25vcmUoKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBFbnZGaWxlKCkpO1xuXHRtb25vUmVwby5hZGRGaWxlKG5ldyBEZXZDb250YWluZXJIb3N0U2NyaXB0cygpKTtcblxuXHQvLyBCaW9tZSBmb3JtYXR0ZXIvbGludGVyIGNvbmZpZ1xuXHRtb25vUmVwby5hZGRGaWxlKHtcblx0XHRmaWxlczogKCkgPT4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCJiaW9tZS5qc29uXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdCRzY2hlbWE6IFwiaHR0cHM6Ly9iaW9tZWpzLmRldi9zY2hlbWFzLzIuMC4wL3NjaGVtYS5qc29uXCIsXG5cdFx0XHRcdFx0XHRmaWxlczoge1xuXHRcdFx0XHRcdFx0XHRpbmNsdWRlczogW1wiKiovKi50c1wiLCBcIioqLyouanNcIiwgXCIqKi8qLmpzb25cIiwgXCIqKi8qLnltbFwiLCBcIioqLyoueWFtbFwiXSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRhc3Npc3Q6IHsgYWN0aW9uczogeyBzb3VyY2U6IHsgb3JnYW5pemVJbXBvcnRzOiBcIm9uXCIgfSB9IH0sXG5cdFx0XHRcdFx0XHR2Y3M6IHsgZW5hYmxlZDogdHJ1ZSwgY2xpZW50S2luZDogXCJnaXRcIiwgdXNlSWdub3JlRmlsZTogdHJ1ZSB9LFxuXHRcdFx0XHRcdFx0Zm9ybWF0dGVyOiB7XG5cdFx0XHRcdFx0XHRcdGVuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFdpdGhFcnJvcnM6IHRydWUsXG5cdFx0XHRcdFx0XHRcdGluZGVudFN0eWxlOiBcInRhYlwiLFxuXHRcdFx0XHRcdFx0XHRsaW5lV2lkdGg6IDk1LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGphdmFzY3JpcHQ6IHsgcGFyc2VyOiB7IHVuc2FmZVBhcmFtZXRlckRlY29yYXRvcnNFbmFibGVkOiB0cnVlIH0gfSxcblx0XHRcdFx0XHRcdGxpbnRlcjoge1xuXHRcdFx0XHRcdFx0XHRydWxlczoge1xuXHRcdFx0XHRcdFx0XHRcdHN0eWxlOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VDb25zaXN0ZW50TWVtYmVyQWNjZXNzaWJpbGl0eToge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXZlbDogXCJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zOiB7IGFjY2Vzc2liaWxpdHk6IFwiZXhwbGljaXRcIiB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG92ZXJyaWRlczogW1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0aW5jbHVkZXM6IFtcIioqLyouanNvblwiXSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHsgaW5kZW50U3R5bGU6IFwic3BhY2VcIiwgaW5kZW50V2lkdGg6IDIgfSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdDIsXG5cdFx0XHRcdCksXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0pO1xuXG5cdGZvciAoY29uc3QgYXBpTmFtZSBvZiBhcGlOYW1lcykge1xuXHRcdGFkZEFwaVByb2plY3QobW9ub1JlcG8sIG5hbWUsIGFwaU5hbWUpO1xuXHR9XG5cblx0cmV0dXJuIG1vbm9SZXBvO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBZGRXb3Jrc3BhY2UoXG5cdHRhcmdldERpcjogc3RyaW5nLFxuXHRwcm9qZWN0TmFtZTogc3RyaW5nLFxuXHRhcGlOYW1lczogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBNb25vUmVwb1NjYWZmb2xkIHtcblx0aWYgKCFpc0RlY29oZXJlV29ya3NwYWNlKHRhcmdldERpcikpIHtcblx0XHR0aHJvdyBuZXcgQ3JlYXRlQ2xpRXJyb3IoXG5cdFx0XHRgTm90IGEgRGVjb2hlcmUgd29ya3NwYWNlOiAke3RhcmdldERpcn0uIFNjYWZmb2xkIG9uZSBmaXJzdCB3aXRoIFxcYG5weCBAZGVjb2hlcmUvY3JlYXRlIHdlYmFwaVxcYC5gLFxuXHRcdCk7XG5cdH1cblxuXHRjb25zdCBleGlzdGluZyA9IGxpc3RFeGlzdGluZ0FwaU5hbWVzKHRhcmdldERpcik7XG5cdGZvciAoY29uc3QgYXBpTmFtZSBvZiBhcGlOYW1lcykge1xuXHRcdGlmIChleGlzdGluZy5pbmNsdWRlcyhhcGlOYW1lKSkge1xuXHRcdFx0dGhyb3cgbmV3IENyZWF0ZUNsaUVycm9yKFxuXHRcdFx0XHRgQVBJIFwiJHthcGlOYW1lfVwiIGFscmVhZHkgZXhpc3RzIGF0ICR7d2ViYXBpUHJvamVjdERpcihhcGlOYW1lKX0uYCxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgbW9ub1JlcG8gPSBuZXcgTW9ub1JlcG9TY2FmZm9sZCgpO1xuXHRtb25vUmVwby50YXJnZXREaXIgPSB0YXJnZXREaXI7XG5cdG1vbm9SZXBvLnNldE5hbWUocHJvamVjdE5hbWUpO1xuXHRjb25zdCBuYW1lID0gbW9ub1JlcG8ubmFtZTtcblxuXHRjb25zdCBwa2cgPSBQYWNrYWdlSnNvbi5mcm9tRmlsZShqb2luKHRhcmdldERpciwgXCJwYWNrYWdlLmpzb25cIikpO1xuXHRtb25vUmVwby5hZGRNb2RlbChwa2cpO1xuXHRtb25vUmVwby5hZGRNb2RlbChcblx0XHRleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcIi5lbnZcIikpXG5cdFx0XHQ/IEVudkZpbGUuZnJvbUZpbGUoam9pbih0YXJnZXREaXIsIFwiLmVudlwiKSlcblx0XHRcdDogbmV3IEVudkZpbGUoKSxcblx0KTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoXG5cdFx0ZXhpc3RzU3luYyhqb2luKHRhcmdldERpciwgXCJjb25maWcvY29uZmlnLnlhbWxcIikpXG5cdFx0XHQ/IENvbmZpZ1lhbWwuZnJvbUZpbGUoXG5cdFx0XHRcdFx0V0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfWUFNTCxcblx0XHRcdFx0XHRcImNvbmZpZy9jb25maWcueWFtbFwiLFxuXHRcdFx0XHRcdGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcueWFtbFwiKSxcblx0XHRcdFx0KVxuXHRcdFx0OiBuZXcgQ29uZmlnWWFtbChXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ZQU1MLCBcImNvbmZpZy9jb25maWcueWFtbFwiLCBcIlwiKSxcblx0KTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoXG5cdFx0ZXhpc3RzU3luYyhqb2luKHRhcmdldERpciwgXCJjb25maWcvY29uZmlnLmRldi55YW1sXCIpKVxuXHRcdFx0PyBDb25maWdZYW1sLmZyb21GaWxlKFxuXHRcdFx0XHRcdFdFTExfS05PV05fRklMRVMuQ09ORklHX0RFVl9ZQU1MLFxuXHRcdFx0XHRcdFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiLFxuXHRcdFx0XHRcdGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcuZGV2LnlhbWxcIiksXG5cdFx0XHRcdClcblx0XHRcdDogbmV3IENvbmZpZ1lhbWwoV0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfREVWX1lBTUwsIFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiLCBcIlwiKSxcblx0KTtcblxuXHRmb3IgKGNvbnN0IFtvZmZzZXQsIGFwaU5hbWVdIG9mIGFwaU5hbWVzLmVudHJpZXMoKSkge1xuXHRcdGNvbnN0IHBvcnQgPSB3ZWJhcGlQb3J0KGV4aXN0aW5nLmxlbmd0aCArIG9mZnNldCk7XG5cdFx0cGtnLmFkZFNjcmlwdChgc3RhcnQ6JHthcGlOYW1lfWAsIGBub2RlICR7d2ViYXBpUmVsZWFzZUVudHJ5KGFwaU5hbWUpfWApO1xuXHRcdHBrZy5hZGRTY3JpcHQoXG5cdFx0XHRgZGV2OiR7YXBpTmFtZX1gLFxuXHRcdFx0YFBPUlQ9JHtwb3J0fSBmbHV4IHNlcnZlIC0tcHJvamVjdCAke3dlYmFwaVBhY2thZ2VOYW1lKG5hbWUsIGFwaU5hbWUpfWAsXG5cdFx0KTtcblx0XHRhZGRBcGlQcm9qZWN0KG1vbm9SZXBvLCBuYW1lLCBhcGlOYW1lKTtcblx0fVxuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgV2ViYXBpUHJvZHVjdGlvbkRvY2tlcmZpbGUoYXBpTmFtZXMsIHsgbmFtZWRPbmx5OiB0cnVlIH0pKTtcblxuXHRyZXR1cm4gbW9ub1JlcG87XG59XG5cbmZ1bmN0aW9uIGFkZEFwaVByb2plY3QoXG5cdG1vbm9SZXBvOiBNb25vUmVwb1NjYWZmb2xkLFxuXHR3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsXG5cdGFwaU5hbWU6IHN0cmluZyxcbik6IHZvaWQge1xuXHRjb25zdCBhcGlQcm9qZWN0ID0gbmV3IFByb2plY3RTY2FmZm9sZCh3ZWJhcGlQcm9qZWN0RGlyKGFwaU5hbWUpKTtcblx0YXBpUHJvamVjdC5hZGRNb2RlbChuZXcgQXBpUGFja2FnZUpzb24od29ya3NwYWNlTmFtZSwgYXBpTmFtZSkpO1xuXHRhcGlQcm9qZWN0LmFkZE1vZGVsKG5ldyBNYWluU291cmNlRmlsZShgJHt3b3Jrc3BhY2VOYW1lfS4ke2FwaU5hbWV9YCkpO1xuXHRhcGlQcm9qZWN0LmFkZE1vZGVsKG5ldyBDb250cm9sbGVyU291cmNlRmlsZSgpKTtcblx0YXBpUHJvamVjdC5hZGRGaWxlKG5ldyBTYW1wbGVDb25maWdNb2RlbCgpKTtcblx0YXBpUHJvamVjdC5hZGRGaWxlKG5ldyBTYW1wbGVTZXJ2aWNlTW9kZWwoKSk7XG5cdG1vbm9SZXBvLmFkZFByb2plY3QoYXBpUHJvamVjdCk7XG59XG4iXSwibmFtZXMiOlsiZXhpc3RzU3luYyIsImJhc2VuYW1lIiwiam9pbiIsInJlc29sdmUiLCJEb2NrZXJDb21wb3NlIiwiQ29uZmlnWWFtbCIsIldFTExfS05PV05fRklMRVMiLCJEZXZDb250YWluZXIiLCJjb21tYW5kSGlzdG9yeSIsIkVudkZpbGUiLCJHaXRpZ25vcmUiLCJMYXVuY2hKc29uIiwiUGFja2FnZUpzb24iLCJNb25vUmVwb1NjYWZmb2xkIiwiUHJvamVjdFNjYWZmb2xkIiwiVHNDb25maWciLCJWaXRlc3RDb25maWciLCJWU0NvZGVTZXR0aW5ncyIsIlNjYWZmb2xkU2VydmljZSIsIkNyZWF0ZUNsaUVycm9yIiwiaXNEZWNvaGVyZVdvcmtzcGFjZSIsImxpc3RFeGlzdGluZ0FwaU5hbWVzIiwicGFyc2VBcGlOYW1lcyIsIkRFRkFVTFRfV0VCQVBJX05BTUUiLCJ3ZWJhcGlQYWNrYWdlTmFtZSIsIndlYmFwaVBvcnQiLCJ3ZWJhcGlQcm9qZWN0RGlyIiwid2ViYXBpUmVsZWFzZUVudHJ5IiwiRGV2Q29udGFpbmVySG9zdFNjcmlwdHMiLCJBdXRoRmVhdHVyZSIsIkRhdGFiYXNlRmVhdHVyZSIsIkZpbmFsaXplRmVhdHVyZSIsIlBvc3RtYW5GZWF0dXJlIiwiQXBpUGFja2FnZUpzb24iLCJDb250cm9sbGVyU291cmNlRmlsZSIsIkdpdGh1YkNpV29ya2Zsb3dzIiwiTWFpblNvdXJjZUZpbGUiLCJXZWJhcGlQcm9kdWN0aW9uRG9ja2VyZmlsZSIsIlNhbXBsZUNvbmZpZ01vZGVsIiwiU2FtcGxlU2VydmljZU1vZGVsIiwiV2ViYXBpRGV2Q29udGFpbmVyIiwiV0VCQVBJX1BST0pFQ1RfRElSIiwiV0VCQVBJX1JFTEVBU0VfRU5UUlkiLCJmZWF0dXJlcyIsInNjYWZmb2xkQXBpIiwiY2xpT3B0aW9ucyIsInRhcmdldERpciIsImQiLCJwcm9qZWN0TmFtZSIsInRyaW0iLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfUFJPSkVDVF9OQU1FIiwibmFtZXMiLCJ3b3Jrc3BhY2UiLCJhZGQiLCJjcmVhdGVBZGRXb3Jrc3BhY2UiLCJjcmVhdGVXb3Jrc3BhY2UiLCJzY2FmZm9sZCIsImFwaU5hbWVzIiwibW9ub1JlcG8iLCJzZXROYW1lIiwibmFtZSIsImNvbXBvc2UiLCJzZXRQcm9qZWN0TmFtZSIsImFkZEhlYWRlckNvbW1lbnQiLCJhZGROZXR3b3JrIiwiYWRkU2VydmljZSIsImJ1aWxkIiwidm9sdW1lcyIsInZvbHVtZU5hbWUiLCJkaXIiLCJlbnZfZmlsZSIsImVudmlyb25tZW50IiwiTlBNX0NPTkZJR19VU0VSQ09ORklHIiwiY29tbWFuZCIsIm5ldHdvcmtzIiwiYWRkVm9sdW1lIiwiaW5zdGFsbENtZCIsImRldkNvbnRhaW5lciIsImFkZEV4dGVuc2lvbiIsInNldEluaXRpYWxpemVDb21tYW5kIiwic2V0UG9zdENyZWF0ZUNvbW1hbmQiLCJzZXRVcGRhdGVDb250ZW50Q29tbWFuZCIsInNldFBvc3RTdGFydENvbW1hbmQiLCJ1c2VDb21wb3NlIiwiaW5kZXgiLCJhcGlOYW1lIiwiZW50cmllcyIsInBvcnQiLCJmb3J3YXJkUG9ydCIsInNldFBvcnRBdHRyaWJ1dGVzIiwibGFiZWwiLCJyZXF1aXJlTG9jYWxQb3J0IiwiYWRkTW9kZWwiLCJ3b3Jrc3BhY2VOYW1lIiwiQ09ORklHX1lBTUwiLCJDT05GSUdfREVWX1lBTUwiLCJhZGRGaWxlIiwiZmlsZXMiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5IiwiJHNjaGVtYSIsImluY2x1ZGVzIiwiYXNzaXN0IiwiYWN0aW9ucyIsInNvdXJjZSIsIm9yZ2FuaXplSW1wb3J0cyIsInZjcyIsImVuYWJsZWQiLCJjbGllbnRLaW5kIiwidXNlSWdub3JlRmlsZSIsImZvcm1hdHRlciIsImZvcm1hdFdpdGhFcnJvcnMiLCJpbmRlbnRTdHlsZSIsImxpbmVXaWR0aCIsImphdmFzY3JpcHQiLCJwYXJzZXIiLCJ1bnNhZmVQYXJhbWV0ZXJEZWNvcmF0b3JzRW5hYmxlZCIsImxpbnRlciIsInJ1bGVzIiwic3R5bGUiLCJ1c2VDb25zaXN0ZW50TWVtYmVyQWNjZXNzaWJpbGl0eSIsImxldmVsIiwib3B0aW9ucyIsImFjY2Vzc2liaWxpdHkiLCJvdmVycmlkZXMiLCJpbmRlbnRXaWR0aCIsImFkZEFwaVByb2plY3QiLCJleGlzdGluZyIsInBrZyIsImZyb21GaWxlIiwib2Zmc2V0IiwibGVuZ3RoIiwiYWRkU2NyaXB0IiwibmFtZWRPbmx5IiwiYXBpUHJvamVjdCIsImFkZFByb2plY3QiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxVQUFVO0FBQ3JDLFNBQVNDLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxPQUFPLFFBQVEsWUFBWTtBQUNwRCxTQUFTQyxhQUFhLFFBQVEsNkJBQTZCO0FBQzNELFNBQVNDLFVBQVUsUUFBUSxpQ0FBaUM7QUFDNUQsU0FBU0MsZ0JBQWdCLFFBQVEscUJBQXFCO0FBQ3RELFNBQVNDLFlBQVksUUFBUSxtQ0FBbUM7QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGtDQUFrQztBQUNqRSxTQUFTQyxPQUFPLFFBQVEsOEJBQThCO0FBQ3RELFNBQVNDLFNBQVMsUUFBUSwrQkFBK0I7QUFDekQsU0FBU0MsVUFBVSxRQUFRLGlDQUFpQztBQUM1RCxTQUFTQyxXQUFXLFFBQVEsa0NBQWtDO0FBQzlELFNBQVNDLGdCQUFnQixFQUFFQyxlQUFlLFFBQVEsNkJBQTZCO0FBQy9FLFNBQVNDLFFBQVEsUUFBUSw4QkFBOEI7QUFDdkQsU0FBU0MsWUFBWSxRQUFRLG1DQUFtQztBQUNoRSxTQUFTQyxjQUFjLFFBQVEscUNBQXFDO0FBQ3BFLFNBQVNDLGVBQWUsUUFBUSxrQ0FBa0M7QUFDbEUsU0FDQ0MsY0FBYyxFQUNkQyxtQkFBbUIsRUFDbkJDLG9CQUFvQixFQUNwQkMsYUFBYSxRQUNQLGdCQUFnQjtBQUN2QixTQUNDQyxtQkFBbUIsRUFDbkJDLGlCQUFpQixFQUNqQkMsVUFBVSxFQUNWQyxnQkFBZ0IsRUFDaEJDLGtCQUFrQixRQUNaLGFBQWE7QUFDcEIsU0FBU0MsdUJBQXVC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
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvY3JlYXRlLWFwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgRG9ja2VyQ29tcG9zZSB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgQ29uZmlnWWFtbCB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnLXlhbWwubW9kZWwuanNcIjtcbmltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgeyBEZXZDb250YWluZXIgfSBmcm9tIFwiLi4vbW9kZWxzL2Rldi1jb250YWluZXIubW9kZWwuanNcIjtcbmltcG9ydCB7XG5cdGNvbW1hbmRIaXN0b3J5LFxuXHR3aXRoV29ya3NwYWNlTm9kZU1vZHVsZXNPd25lcnNoaXAsXG59IGZyb20gXCIuLi9tb2RlbHMvZG9ja2VyLWltYWdlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBFbnZGaWxlIH0gZnJvbSBcIi4uL21vZGVscy9lbnYtZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgR2l0aWdub3JlIH0gZnJvbSBcIi4uL21vZGVscy9naXRpZ25vcmUubW9kZWwuanNcIjtcbmltcG9ydCB7IExhdW5jaEpzb24gfSBmcm9tIFwiLi4vbW9kZWxzL2xhdW5jaC1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBQYWNrYWdlSnNvbiB9IGZyb20gXCIuLi9tb2RlbHMvcGFja2FnZS1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBNb25vUmVwb1NjYWZmb2xkLCBQcm9qZWN0U2NhZmZvbGQgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB7IFRzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy90c2NvbmZpZy5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgVml0ZXN0Q29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy92aXRlc3QtY29uZmlnLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBWU0NvZGVTZXR0aW5ncyB9IGZyb20gXCIuLi9tb2RlbHMvdnNjb2RlLXNldHRpbmdzLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBTY2FmZm9sZFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvc2NhZmZvbGQuc2VydmljZS5qc1wiO1xuaW1wb3J0IHtcblx0Q3JlYXRlQ2xpRXJyb3IsXG5cdGlzRGVjb2hlcmVXb3Jrc3BhY2UsXG5cdGxpc3RFeGlzdGluZ0FwaU5hbWVzLFxuXHRwYXJzZUFwaU5hbWVzLFxufSBmcm9tIFwiLi9hcGktbmFtZS5qc1wiO1xuaW1wb3J0IHtcblx0REVGQVVMVF9XRUJBUElfTkFNRSxcblx0d2ViYXBpUGFja2FnZU5hbWUsXG5cdHdlYmFwaVBvcnQsXG5cdHdlYmFwaVByb2plY3REaXIsXG5cdHdlYmFwaVJlbGVhc2VFbnRyeSxcbn0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB7IERldkNvbnRhaW5lckhvc3RTY3JpcHRzIH0gZnJvbSBcIi4vZGV2Y29udGFpbmVyL2hvc3Qtc2NyaXB0cy5qc1wiO1xuaW1wb3J0IHsgQXV0aEZlYXR1cmUgfSBmcm9tIFwiLi9mZWF0dXJlcy9hdXRoLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IERhdGFiYXNlRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL2RhdGFiYXNlLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IEZpbmFsaXplRmVhdHVyZSB9IGZyb20gXCIuL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUuanNcIjtcbmltcG9ydCB7IFBvc3RtYW5GZWF0dXJlIH0gZnJvbSBcIi4vZmVhdHVyZXMvcG9zdG1hbi5mZWF0dXJlLmpzXCI7XG5pbXBvcnQgeyBBcGlQYWNrYWdlSnNvbiB9IGZyb20gXCIuL21vZGVscy9hcGktcGFja2FnZS1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBDb250cm9sbGVyU291cmNlRmlsZSB9IGZyb20gXCIuL21vZGVscy9jb250cm9sbGVyLXNvdXJjZS1maWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgeyBHaXRodWJDaVdvcmtmbG93cyB9IGZyb20gXCIuL21vZGVscy9naXRodWItY2kubW9kZWwuanNcIjtcbmltcG9ydCB7IE1haW5Tb3VyY2VGaWxlIH0gZnJvbSBcIi4vbW9kZWxzL21haW4tc291cmNlLWZpbGUubW9kZWwuanNcIjtcbmltcG9ydCB7IFdlYmFwaVByb2R1Y3Rpb25Eb2NrZXJmaWxlIH0gZnJvbSBcIi4vbW9kZWxzL3Byb2R1Y3Rpb24tZG9ja2VyZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgU2FtcGxlQ29uZmlnTW9kZWwsIFNhbXBsZVNlcnZpY2VNb2RlbCB9IGZyb20gXCIuL21vZGVscy9zYW1wbGUtZmlsZXMubW9kZWwuanNcIjtcbmltcG9ydCB7IFdlYmFwaURldkNvbnRhaW5lciB9IGZyb20gXCIuL21vZGVscy93ZWJhcGktaW1hZ2UubW9kZWwuanNcIjtcblxuZXhwb3J0IHsgV0VCQVBJX1BST0pFQ1RfRElSLCBXRUJBUElfUkVMRUFTRV9FTlRSWSB9IGZyb20gXCIuL2NvbnN0LmpzXCI7XG5cbmV4cG9ydCB0eXBlIEFwaU9wdGlvbnMgPSB7XG5cdGQ/OiBzdHJpbmc7XG5cdC8qKiBIb3N0IHByb2plY3QgbmFtZSAoZGlyZWN0b3J5IGJhc2VuYW1lKS4gUmVxdWlyZWQgd2hlbiBzY2FmZm9sZGluZyBpbnRvIHRoZSBjcmVhdGUtYnVpbGRlciBgL3dvcmtzcGFjZWAgbW91bnQuICovXG5cdHByb2plY3ROYW1lPzogc3RyaW5nO1xuXHQvKiogQVBJIHNsdWdzIHVuZGVyIGBwcm9qZWN0cy9gLiBEZWZhdWx0IGBbXCJhcGlcIl1gLiBSZXBlYXRhYmxlIGAtLW5hbWVgLiAqL1xuXHRuYW1lcz86IHN0cmluZ1tdO1xuXHQvKiogQWRkIEFQSXMgdG8gYW4gZXhpc3RpbmcgRGVjb2hlcmUgd29ya3NwYWNlIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLiAqL1xuXHRhZGQ/OiBib29sZWFuO1xuXHRhdXRoUHJvdmlkZXI/OiBcImF1dGgwXCIgfCBcIm5vbmVcIjtcblx0ZGF0YWJhc2VQcm92aWRlcj86IFwibm9uZVwiIHwgXCJwb3N0Z3Jlcy90eXBlb3JtXCI7XG5cdHBvc3RtYW5Qcm92aWRlcj86IFwiYXBpXCIgfCBcImxvY2FsXCIgfCBcIm5vbmVcIjtcblx0aW5zdGFsbERlcGVuZGVuY2llcz86IFwieWVzXCIgfCBcIm5vXCI7XG59O1xuXG5jb25zdCBmZWF0dXJlcyA9IFtEYXRhYmFzZUZlYXR1cmUsIEF1dGhGZWF0dXJlLCBQb3N0bWFuRmVhdHVyZSwgRmluYWxpemVGZWF0dXJlXTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNjYWZmb2xkQXBpKGNsaU9wdGlvbnM6IEFwaU9wdGlvbnMpIHtcblx0Y29uc3QgdGFyZ2V0RGlyID0gcmVzb2x2ZShjbGlPcHRpb25zLmQgPz8gXCIuXCIpO1xuXHRjb25zdCBwcm9qZWN0TmFtZSA9XG5cdFx0Y2xpT3B0aW9ucy5wcm9qZWN0TmFtZT8udHJpbSgpIHx8XG5cdFx0cHJvY2Vzcy5lbnYuREVDT0hFUkVfUFJPSkVDVF9OQU1FPy50cmltKCkgfHxcblx0XHRiYXNlbmFtZSh0YXJnZXREaXIpO1xuXHRjb25zdCBuYW1lcyA9IHBhcnNlQXBpTmFtZXMoY2xpT3B0aW9ucy5uYW1lcyk7XG5cdGNvbnN0IHdvcmtzcGFjZSA9IGNsaU9wdGlvbnMuYWRkXG5cdFx0PyBjcmVhdGVBZGRXb3Jrc3BhY2UodGFyZ2V0RGlyLCBwcm9qZWN0TmFtZSwgbmFtZXMpXG5cdFx0OiBjcmVhdGVXb3Jrc3BhY2UodGFyZ2V0RGlyLCBwcm9qZWN0TmFtZSwgbmFtZXMpO1xuXHRhd2FpdCBTY2FmZm9sZFNlcnZpY2Uuc2NhZmZvbGQod29ya3NwYWNlLCB7IC4uLmNsaU9wdGlvbnMsIG5hbWVzIH0sIGZlYXR1cmVzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlV29ya3NwYWNlKFxuXHR0YXJnZXREaXI6IHN0cmluZyxcblx0cHJvamVjdE5hbWU6IHN0cmluZyxcblx0YXBpTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogTW9ub1JlcG9TY2FmZm9sZCB7XG5cdGNvbnN0IG1vbm9SZXBvID0gbmV3IE1vbm9SZXBvU2NhZmZvbGQoKTtcblx0bW9ub1JlcG8udGFyZ2V0RGlyID0gdGFyZ2V0RGlyO1xuXHRtb25vUmVwby5zZXROYW1lKHByb2plY3ROYW1lKTtcblx0Y29uc3QgbmFtZSA9IG1vbm9SZXBvLm5hbWU7XG5cdC8vIFByb2plY3QtbmFtZWQgcm9vdCBzbyBDdXJzb3IgQWdlbnRzIChhbmQgb3RoZXIgdG9vbHMpIGxhYmVsIHRoZSB3b3Jrc3BhY2UgYnkgbmFtZS5cblx0Y29uc3Qgd29ya3NwYWNlUm9vdCA9IGAvJHtuYW1lfWA7XG5cblx0Y29uc3QgY29tcG9zZSA9IG5ldyBEb2NrZXJDb21wb3NlKClcblx0XHQuc2V0UHJvamVjdE5hbWUobmFtZSlcblx0XHQuYWRkSGVhZGVyQ29tbWVudChcblx0XHRcdFwiTWVyZ2UgLmN1cnNvci9tY3AuanNvbiBpbiB0aGUgc2VydmljZSBjb21tYW5kLiBwb3N0U3RhcnRDb21tYW5kIHJ1bnMgYWZ0ZXIgQ3Vyc29yJ3MgZmlyc3QgTUNQIHNuYXBzaG90LlwiLFxuXHRcdClcblx0XHQuYWRkTmV0d29yayhuYW1lLCB7IG5hbWU6IGBzYW1wbGVzLSR7bmFtZX1gIH0pXG5cdFx0LmFkZFNlcnZpY2UoXCJkZXZjb250YWluZXJcIiwge1xuXHRcdFx0YnVpbGQ6IFwiLlwiLFxuXHRcdFx0dm9sdW1lczogW1xuXHRcdFx0XHQvLyBSZXBvIGJpbmQgaW4gQ29tcG9zZSAoc3Vydml2ZXMgQ0xJIHJlY3JlYXRlczsgQ3Vyc29yLW9ubHkgbW91bnRzIGRvIG5vdCkuXG5cdFx0XHRcdGAuLjoke3dvcmtzcGFjZVJvb3R9YCxcblx0XHRcdFx0Ly8gV29ya3NwYWNlLWxvY2FsIChjcmVhdGVkIGJ5IGluaXRpYWxpemUuc2ggYXMgdGhlIGhvc3QgdXNlcikuXG5cdFx0XHRcdC8vIERvIE5PVCBiaW5kICR7SE9NRX0vLm5wbS8uLi4g4oCUIERvY2tlciBjcmVhdGVzIG1pc3NpbmcgaG9zdCBwYXRocyBhcyByb290LlxuXHRcdFx0XHRcIi4vbnBtLWF1dGg6L2hvbWUvbm9kZS8ubnBtLWNvbmZpZ1wiLFxuXHRcdFx0XHRcIi4vZ2gtYXV0aDovaG9tZS9ub2RlLy5jb25maWcvZ2hcIixcblx0XHRcdFx0YHdlYmFwaS1ub2RlLW1vZHVsZXM6JHt3b3Jrc3BhY2VSb290fS9ub2RlX21vZHVsZXNgLFxuXHRcdFx0XHQvLyBOYW1lZCB2b2x1bWUgKG5vdCBhIEN1cnNvci1vbmx5IG1vdW50KSBzbyBDTEkgcmVjcmVhdGVzIGtlZXAgVXAtYXJyb3cgaGlzdG9yeS5cblx0XHRcdFx0YCR7Y29tbWFuZEhpc3Rvcnkudm9sdW1lTmFtZX06JHtjb21tYW5kSGlzdG9yeS5kaXJ9YCxcblx0XHRcdF0sXG5cdFx0XHRlbnZfZmlsZTogW1wiLi9naC5lbnZcIl0sXG5cdFx0XHRlbnZpcm9ubWVudDogeyBOUE1fQ09ORklHX1VTRVJDT05GSUc6IFwiL2hvbWUvbm9kZS8ubnBtLWNvbmZpZy8ubnBtcmNcIiB9LFxuXHRcdFx0Y29tbWFuZDogYCdiYXNoIC1jIFwiQ09ERUJBU0VfUkFHX1dPUktTUEFDRT0ke3dvcmtzcGFjZVJvb3R9IG5vZGUgLS1leHBlcmltZW50YWwtc3RyaXAtdHlwZXMgJHt3b3Jrc3BhY2VSb290fS8uZGV2Y29udGFpbmVyL2NvZGViYXNlLXJhZy1tY3AudHMgbWVyZ2UgfHwgdHJ1ZSAmJiBleGVjIHNsZWVwIGluZmluaXR5XCInYCxcblx0XHRcdG5ldHdvcmtzOiBbbmFtZV0sXG5cdFx0fSlcblx0XHQuYWRkVm9sdW1lKFwid2ViYXBpLW5vZGUtbW9kdWxlc1wiKVxuXHRcdC5hZGRWb2x1bWUoY29tbWFuZEhpc3Rvcnkudm9sdW1lTmFtZSk7XG5cblx0Y29uc3QgaW5zdGFsbENtZCA9IFwiYmFzaCAuZGV2Y29udGFpbmVyL3Bvc3QtY3JlYXRlLnNoXCI7XG5cdGNvbnN0IGRldkNvbnRhaW5lciA9IG5ldyBEZXZDb250YWluZXIoKVxuXHRcdC5zZXRXb3Jrc3BhY2VGb2xkZXIod29ya3NwYWNlUm9vdClcblx0XHQuYWRkRXh0ZW5zaW9uKFwiYmlvbWVqcy5iaW9tZVwiLCBcInZpdGVzdC5leHBsb3JlclwiKVxuXHRcdC5zZXRJbml0aWFsaXplQ29tbWFuZChcImJhc2ggLmRldmNvbnRhaW5lci9pbml0aWFsaXplLnNoXCIpXG5cdFx0LnNldFBvc3RDcmVhdGVDb21tYW5kKGluc3RhbGxDbWQpXG5cdFx0LnNldFVwZGF0ZUNvbnRlbnRDb21tYW5kKGluc3RhbGxDbWQpXG5cdFx0LnNldFBvc3RTdGFydENvbW1hbmQoXCJiYXNoIC5kZXZjb250YWluZXIvcG9zdC1zdGFydC5zaFwiKVxuXHRcdC51c2VDb21wb3NlKCk7XG5cblx0Zm9yIChjb25zdCBbaW5kZXgsIGFwaU5hbWVdIG9mIGFwaU5hbWVzLmVudHJpZXMoKSkge1xuXHRcdGNvbnN0IHBvcnQgPSB3ZWJhcGlQb3J0KGluZGV4KTtcblx0XHRkZXZDb250YWluZXIuZm9yd2FyZFBvcnQocG9ydCk7XG5cdFx0ZGV2Q29udGFpbmVyLnNldFBvcnRBdHRyaWJ1dGVzKHBvcnQsIHtcblx0XHRcdGxhYmVsOiBhcGlOYW1lID09PSBERUZBVUxUX1dFQkFQSV9OQU1FID8gXCJBUElcIiA6IGFwaU5hbWUsXG5cdFx0XHRyZXF1aXJlTG9jYWxQb3J0OiB0cnVlLFxuXHRcdH0pO1xuXHR9XG5cblx0Ly8gV29ya3NwYWNlLWxldmVsIG1vZGVscyAocmVwbyByb290KVxuXHRtb25vUmVwby5hZGRNb2RlbChjb21wb3NlKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoZGV2Q29udGFpbmVyKTtcblx0Y29uc3QgYXBwRGV2SW1hZ2UgPSBuZXcgV2ViYXBpRGV2Q29udGFpbmVyKCk7XG5cdGFwcERldkltYWdlLmFkZExheWVyKHdpdGhXb3Jrc3BhY2VOb2RlTW9kdWxlc093bmVyc2hpcCh7IHdvcmtzcGFjZURpcjogd29ya3NwYWNlUm9vdCB9KSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKGFwcERldkltYWdlKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFdlYmFwaVByb2R1Y3Rpb25Eb2NrZXJmaWxlKGFwaU5hbWVzKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBHaXRodWJDaVdvcmtmbG93cygpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFZTQ29kZVNldHRpbmdzKG5hbWUpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IExhdW5jaEpzb24oYXBpTmFtZXMpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IFRzQ29uZmlnKCkpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgVml0ZXN0Q29uZmlnKCkpO1xuXHRtb25vUmVwby5hZGRNb2RlbChuZXcgUGFja2FnZUpzb24oYCR7bmFtZX0uYXBpYCwgeyBhcGlOYW1lcywgd29ya3NwYWNlTmFtZTogbmFtZSB9KSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBDb25maWdZYW1sKFdFTExfS05PV05fRklMRVMuQ09ORklHX1lBTUwsIFwiY29uZmlnL2NvbmZpZy55YW1sXCIsIFwiXCIpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwoXG5cdFx0bmV3IENvbmZpZ1lhbWwoV0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfREVWX1lBTUwsIFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiLCBcIlwiKSxcblx0KTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IEdpdGlnbm9yZSgpKTtcblx0bW9ub1JlcG8uYWRkTW9kZWwobmV3IEVudkZpbGUoKSk7XG5cdG1vbm9SZXBvLmFkZEZpbGUobmV3IERldkNvbnRhaW5lckhvc3RTY3JpcHRzKCkpO1xuXG5cdC8vIEJpb21lIGZvcm1hdHRlci9saW50ZXIgY29uZmlnXG5cdG1vbm9SZXBvLmFkZEZpbGUoe1xuXHRcdGZpbGVzOiAoKSA9PiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcImJpb21lLmpzb25cIixcblx0XHRcdFx0Y29udGVudDogSlNPTi5zdHJpbmdpZnkoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0JHNjaGVtYTogXCJodHRwczovL2Jpb21lanMuZGV2L3NjaGVtYXMvMi4wLjAvc2NoZW1hLmpzb25cIixcblx0XHRcdFx0XHRcdGZpbGVzOiB7XG5cdFx0XHRcdFx0XHRcdGluY2x1ZGVzOiBbXCIqKi8qLnRzXCIsIFwiKiovKi5qc1wiLCBcIioqLyouanNvblwiLCBcIioqLyoueW1sXCIsIFwiKiovKi55YW1sXCJdLFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGFzc2lzdDogeyBhY3Rpb25zOiB7IHNvdXJjZTogeyBvcmdhbml6ZUltcG9ydHM6IFwib25cIiB9IH0gfSxcblx0XHRcdFx0XHRcdHZjczogeyBlbmFibGVkOiB0cnVlLCBjbGllbnRLaW5kOiBcImdpdFwiLCB1c2VJZ25vcmVGaWxlOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHtcblx0XHRcdFx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0Zm9ybWF0V2l0aEVycm9yczogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0aW5kZW50U3R5bGU6IFwidGFiXCIsXG5cdFx0XHRcdFx0XHRcdGxpbmVXaWR0aDogOTUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0amF2YXNjcmlwdDogeyBwYXJzZXI6IHsgdW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQ6IHRydWUgfSB9LFxuXHRcdFx0XHRcdFx0bGludGVyOiB7XG5cdFx0XHRcdFx0XHRcdHJ1bGVzOiB7XG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU6IHtcblx0XHRcdFx0XHRcdFx0XHRcdHVzZUNvbnNpc3RlbnRNZW1iZXJBY2Nlc3NpYmlsaXR5OiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldmVsOiBcImVycm9yXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM6IHsgYWNjZXNzaWJpbGl0eTogXCJleHBsaWNpdFwiIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0b3ZlcnJpZGVzOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpbmNsdWRlczogW1wiKiovKi5qc29uXCJdLFxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdHRlcjogeyBpbmRlbnRTdHlsZTogXCJzcGFjZVwiLCBpbmRlbnRXaWR0aDogMiB9LFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0Mixcblx0XHRcdFx0KSxcblx0XHRcdH0sXG5cdFx0XSxcblx0fSk7XG5cblx0Zm9yIChjb25zdCBhcGlOYW1lIG9mIGFwaU5hbWVzKSB7XG5cdFx0YWRkQXBpUHJvamVjdChtb25vUmVwbywgbmFtZSwgYXBpTmFtZSk7XG5cdH1cblxuXHRyZXR1cm4gbW9ub1JlcG87XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFkZFdvcmtzcGFjZShcblx0dGFyZ2V0RGlyOiBzdHJpbmcsXG5cdHByb2plY3ROYW1lOiBzdHJpbmcsXG5cdGFwaU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IE1vbm9SZXBvU2NhZmZvbGQge1xuXHRpZiAoIWlzRGVjb2hlcmVXb3Jrc3BhY2UodGFyZ2V0RGlyKSkge1xuXHRcdHRocm93IG5ldyBDcmVhdGVDbGlFcnJvcihcblx0XHRcdGBOb3QgYSBEZWNvaGVyZSB3b3Jrc3BhY2U6ICR7dGFyZ2V0RGlyfS4gU2NhZmZvbGQgb25lIGZpcnN0IHdpdGggXFxgbnB4IEBkZWNvaGVyZS9jcmVhdGUgd2ViYXBpXFxgLmAsXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGV4aXN0aW5nID0gbGlzdEV4aXN0aW5nQXBpTmFtZXModGFyZ2V0RGlyKTtcblx0Zm9yIChjb25zdCBhcGlOYW1lIG9mIGFwaU5hbWVzKSB7XG5cdFx0aWYgKGV4aXN0aW5nLmluY2x1ZGVzKGFwaU5hbWUpKSB7XG5cdFx0XHR0aHJvdyBuZXcgQ3JlYXRlQ2xpRXJyb3IoXG5cdFx0XHRcdGBBUEkgXCIke2FwaU5hbWV9XCIgYWxyZWFkeSBleGlzdHMgYXQgJHt3ZWJhcGlQcm9qZWN0RGlyKGFwaU5hbWUpfS5gLFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBtb25vUmVwbyA9IG5ldyBNb25vUmVwb1NjYWZmb2xkKCk7XG5cdG1vbm9SZXBvLnRhcmdldERpciA9IHRhcmdldERpcjtcblx0bW9ub1JlcG8uc2V0TmFtZShwcm9qZWN0TmFtZSk7XG5cdGNvbnN0IG5hbWUgPSBtb25vUmVwby5uYW1lO1xuXG5cdGNvbnN0IHBrZyA9IFBhY2thZ2VKc29uLmZyb21GaWxlKGpvaW4odGFyZ2V0RGlyLCBcInBhY2thZ2UuanNvblwiKSk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKHBrZyk7XG5cdG1vbm9SZXBvLmFkZE1vZGVsKFxuXHRcdGV4aXN0c1N5bmMoam9pbih0YXJnZXREaXIsIFwiLmVudlwiKSlcblx0XHRcdD8gRW52RmlsZS5mcm9tRmlsZShqb2luKHRhcmdldERpciwgXCIuZW52XCIpKVxuXHRcdFx0OiBuZXcgRW52RmlsZSgpLFxuXHQpO1xuXHRtb25vUmVwby5hZGRNb2RlbChcblx0XHRleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcueWFtbFwiKSlcblx0XHRcdD8gQ29uZmlnWWFtbC5mcm9tRmlsZShcblx0XHRcdFx0XHRXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ZQU1MLFxuXHRcdFx0XHRcdFwiY29uZmlnL2NvbmZpZy55YW1sXCIsXG5cdFx0XHRcdFx0am9pbih0YXJnZXREaXIsIFwiY29uZmlnL2NvbmZpZy55YW1sXCIpLFxuXHRcdFx0XHQpXG5cdFx0XHQ6IG5ldyBDb25maWdZYW1sKFdFTExfS05PV05fRklMRVMuQ09ORklHX1lBTUwsIFwiY29uZmlnL2NvbmZpZy55YW1sXCIsIFwiXCIpLFxuXHQpO1xuXHRtb25vUmVwby5hZGRNb2RlbChcblx0XHRleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcImNvbmZpZy9jb25maWcuZGV2LnlhbWxcIikpXG5cdFx0XHQ/IENvbmZpZ1lhbWwuZnJvbUZpbGUoXG5cdFx0XHRcdFx0V0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfREVWX1lBTUwsXG5cdFx0XHRcdFx0XCJjb25maWcvY29uZmlnLmRldi55YW1sXCIsXG5cdFx0XHRcdFx0am9pbih0YXJnZXREaXIsIFwiY29uZmlnL2NvbmZpZy5kZXYueWFtbFwiKSxcblx0XHRcdFx0KVxuXHRcdFx0OiBuZXcgQ29uZmlnWWFtbChXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ERVZfWUFNTCwgXCJjb25maWcvY29uZmlnLmRldi55YW1sXCIsIFwiXCIpLFxuXHQpO1xuXG5cdGZvciAoY29uc3QgW29mZnNldCwgYXBpTmFtZV0gb2YgYXBpTmFtZXMuZW50cmllcygpKSB7XG5cdFx0Y29uc3QgcG9ydCA9IHdlYmFwaVBvcnQoZXhpc3RpbmcubGVuZ3RoICsgb2Zmc2V0KTtcblx0XHRwa2cuYWRkU2NyaXB0KGBzdGFydDoke2FwaU5hbWV9YCwgYG5vZGUgJHt3ZWJhcGlSZWxlYXNlRW50cnkoYXBpTmFtZSl9YCk7XG5cdFx0cGtnLmFkZFNjcmlwdChcblx0XHRcdGBkZXY6JHthcGlOYW1lfWAsXG5cdFx0XHRgUE9SVD0ke3BvcnR9IGZsdXggc2VydmUgLS1wcm9qZWN0ICR7d2ViYXBpUGFja2FnZU5hbWUobmFtZSwgYXBpTmFtZSl9YCxcblx0XHQpO1xuXHRcdGFkZEFwaVByb2plY3QobW9ub1JlcG8sIG5hbWUsIGFwaU5hbWUpO1xuXHR9XG5cdG1vbm9SZXBvLmFkZE1vZGVsKG5ldyBXZWJhcGlQcm9kdWN0aW9uRG9ja2VyZmlsZShhcGlOYW1lcywgeyBuYW1lZE9ubHk6IHRydWUgfSkpO1xuXG5cdHJldHVybiBtb25vUmVwbztcbn1cblxuZnVuY3Rpb24gYWRkQXBpUHJvamVjdChcblx0bW9ub1JlcG86IE1vbm9SZXBvU2NhZmZvbGQsXG5cdHdvcmtzcGFjZU5hbWU6IHN0cmluZyxcblx0YXBpTmFtZTogc3RyaW5nLFxuKTogdm9pZCB7XG5cdGNvbnN0IGFwaVByb2plY3QgPSBuZXcgUHJvamVjdFNjYWZmb2xkKHdlYmFwaVByb2plY3REaXIoYXBpTmFtZSkpO1xuXHRhcGlQcm9qZWN0LmFkZE1vZGVsKG5ldyBBcGlQYWNrYWdlSnNvbih3b3Jrc3BhY2VOYW1lLCBhcGlOYW1lKSk7XG5cdGFwaVByb2plY3QuYWRkTW9kZWwobmV3IE1haW5Tb3VyY2VGaWxlKGAke3dvcmtzcGFjZU5hbWV9LiR7YXBpTmFtZX1gKSk7XG5cdGFwaVByb2plY3QuYWRkTW9kZWwobmV3IENvbnRyb2xsZXJTb3VyY2VGaWxlKCkpO1xuXHRhcGlQcm9qZWN0LmFkZEZpbGUobmV3IFNhbXBsZUNvbmZpZ01vZGVsKCkpO1xuXHRhcGlQcm9qZWN0LmFkZEZpbGUobmV3IFNhbXBsZVNlcnZpY2VNb2RlbCgpKTtcblx0bW9ub1JlcG8uYWRkUHJvamVjdChhcGlQcm9qZWN0KTtcbn1cbiJdLCJuYW1lcyI6WyJleGlzdHNTeW5jIiwiYmFzZW5hbWUiLCJqb2luIiwicmVzb2x2ZSIsIkRvY2tlckNvbXBvc2UiLCJDb25maWdZYW1sIiwiV0VMTF9LTk9XTl9GSUxFUyIsIkRldkNvbnRhaW5lciIsImNvbW1hbmRIaXN0b3J5Iiwid2l0aFdvcmtzcGFjZU5vZGVNb2R1bGVzT3duZXJzaGlwIiwiRW52RmlsZSIsIkdpdGlnbm9yZSIsIkxhdW5jaEpzb24iLCJQYWNrYWdlSnNvbiIsIk1vbm9SZXBvU2NhZmZvbGQiLCJQcm9qZWN0U2NhZmZvbGQiLCJUc0NvbmZpZyIsIlZpdGVzdENvbmZpZyIsIlZTQ29kZVNldHRpbmdzIiwiU2NhZmZvbGRTZXJ2aWNlIiwiQ3JlYXRlQ2xpRXJyb3IiLCJpc0RlY29oZXJlV29ya3NwYWNlIiwibGlzdEV4aXN0aW5nQXBpTmFtZXMiLCJwYXJzZUFwaU5hbWVzIiwiREVGQVVMVF9XRUJBUElfTkFNRSIsIndlYmFwaVBhY2thZ2VOYW1lIiwid2ViYXBpUG9ydCIsIndlYmFwaVByb2plY3REaXIiLCJ3ZWJhcGlSZWxlYXNlRW50cnkiLCJEZXZDb250YWluZXJIb3N0U2NyaXB0cyIsIkF1dGhGZWF0dXJlIiwiRGF0YWJhc2VGZWF0dXJlIiwiRmluYWxpemVGZWF0dXJlIiwiUG9zdG1hbkZlYXR1cmUiLCJBcGlQYWNrYWdlSnNvbiIsIkNvbnRyb2xsZXJTb3VyY2VGaWxlIiwiR2l0aHViQ2lXb3JrZmxvd3MiLCJNYWluU291cmNlRmlsZSIsIldlYmFwaVByb2R1Y3Rpb25Eb2NrZXJmaWxlIiwiU2FtcGxlQ29uZmlnTW9kZWwiLCJTYW1wbGVTZXJ2aWNlTW9kZWwiLCJXZWJhcGlEZXZDb250YWluZXIiLCJXRUJBUElfUFJPSkVDVF9ESVIiLCJXRUJBUElfUkVMRUFTRV9FTlRSWSIsImZlYXR1cmVzIiwic2NhZmZvbGRBcGkiLCJjbGlPcHRpb25zIiwidGFyZ2V0RGlyIiwiZCIsInByb2plY3ROYW1lIiwidHJpbSIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9QUk9KRUNUX05BTUUiLCJuYW1lcyIsIndvcmtzcGFjZSIsImFkZCIsImNyZWF0ZUFkZFdvcmtzcGFjZSIsImNyZWF0ZVdvcmtzcGFjZSIsInNjYWZmb2xkIiwiYXBpTmFtZXMiLCJtb25vUmVwbyIsInNldE5hbWUiLCJuYW1lIiwid29ya3NwYWNlUm9vdCIsImNvbXBvc2UiLCJzZXRQcm9qZWN0TmFtZSIsImFkZEhlYWRlckNvbW1lbnQiLCJhZGROZXR3b3JrIiwiYWRkU2VydmljZSIsImJ1aWxkIiwidm9sdW1lcyIsInZvbHVtZU5hbWUiLCJkaXIiLCJlbnZfZmlsZSIsImVudmlyb25tZW50IiwiTlBNX0NPTkZJR19VU0VSQ09ORklHIiwiY29tbWFuZCIsIm5ldHdvcmtzIiwiYWRkVm9sdW1lIiwiaW5zdGFsbENtZCIsImRldkNvbnRhaW5lciIsInNldFdvcmtzcGFjZUZvbGRlciIsImFkZEV4dGVuc2lvbiIsInNldEluaXRpYWxpemVDb21tYW5kIiwic2V0UG9zdENyZWF0ZUNvbW1hbmQiLCJzZXRVcGRhdGVDb250ZW50Q29tbWFuZCIsInNldFBvc3RTdGFydENvbW1hbmQiLCJ1c2VDb21wb3NlIiwiaW5kZXgiLCJhcGlOYW1lIiwiZW50cmllcyIsInBvcnQiLCJmb3J3YXJkUG9ydCIsInNldFBvcnRBdHRyaWJ1dGVzIiwibGFiZWwiLCJyZXF1aXJlTG9jYWxQb3J0IiwiYWRkTW9kZWwiLCJhcHBEZXZJbWFnZSIsImFkZExheWVyIiwid29ya3NwYWNlRGlyIiwid29ya3NwYWNlTmFtZSIsIkNPTkZJR19ZQU1MIiwiQ09ORklHX0RFVl9ZQU1MIiwiYWRkRmlsZSIsImZpbGVzIiwiZmlsZVBhdGgiLCJjb250ZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsIiRzY2hlbWEiLCJpbmNsdWRlcyIsImFzc2lzdCIsImFjdGlvbnMiLCJzb3VyY2UiLCJvcmdhbml6ZUltcG9ydHMiLCJ2Y3MiLCJlbmFibGVkIiwiY2xpZW50S2luZCIsInVzZUlnbm9yZUZpbGUiLCJmb3JtYXR0ZXIiLCJmb3JtYXRXaXRoRXJyb3JzIiwiaW5kZW50U3R5bGUiLCJsaW5lV2lkdGgiLCJqYXZhc2NyaXB0IiwicGFyc2VyIiwidW5zYWZlUGFyYW1ldGVyRGVjb3JhdG9yc0VuYWJsZWQiLCJsaW50ZXIiLCJydWxlcyIsInN0eWxlIiwidXNlQ29uc2lzdGVudE1lbWJlckFjY2Vzc2liaWxpdHkiLCJsZXZlbCIsIm9wdGlvbnMiLCJhY2Nlc3NpYmlsaXR5Iiwib3ZlcnJpZGVzIiwiaW5kZW50V2lkdGgiLCJhZGRBcGlQcm9qZWN0IiwiZXhpc3RpbmciLCJwa2ciLCJmcm9tRmlsZSIsIm9mZnNldCIsImxlbmd0aCIsImFkZFNjcmlwdCIsIm5hbWVkT25seSIsImFwaVByb2plY3QiLCJhZGRQcm9qZWN0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFVLFFBQVEsVUFBVTtBQUNyQyxTQUFTQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsT0FBTyxRQUFR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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decohere/scaffold",
|
|
3
|
-
"version": "0.0.1-dev.
|
|
3
|
+
"version": "0.0.1-dev.85",
|
|
4
4
|
"description": "Decohere project scaffolder (runs inside ghcr.io/typesmiths/decohere/create)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"decohere",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@decohere/crucible": "0.0.1-dev.
|
|
26
|
-
"@decohere/nexus": "0.0.1-dev.
|
|
25
|
+
"@decohere/crucible": "0.0.1-dev.85",
|
|
26
|
+
"@decohere/nexus": "0.0.1-dev.85",
|
|
27
27
|
"commander": "^13.1.0",
|
|
28
28
|
"openapi-to-postmanv2": "^5.0.0"
|
|
29
29
|
},
|
|
@@ -16,7 +16,8 @@ export declare class DevContainer implements KeyedModel {
|
|
|
16
16
|
private readonly _extensions;
|
|
17
17
|
private readonly _ports;
|
|
18
18
|
private readonly _portAttributes;
|
|
19
|
-
private
|
|
19
|
+
private _mounts;
|
|
20
|
+
private _workspaceFolder;
|
|
20
21
|
private _postCreateCommand?;
|
|
21
22
|
private _updateContentCommand?;
|
|
22
23
|
private _postStartCommand?;
|
|
@@ -24,6 +25,9 @@ export declare class DevContainer implements KeyedModel {
|
|
|
24
25
|
private _remoteUser;
|
|
25
26
|
private _useCompose;
|
|
26
27
|
constructor();
|
|
28
|
+
/** In-container path Cursor/VS Code opens (Agents window uses the basename). */
|
|
29
|
+
setWorkspaceFolder(folder: string): this;
|
|
30
|
+
private bindMount;
|
|
27
31
|
addExtension(...ids: string[]): this;
|
|
28
32
|
forwardPort(...ports: number[]): this;
|
|
29
33
|
setPortAttributes(port: number, attrs: PortAttributes): this;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { WEBAPI_PROJECT_DIR, WEBAPI_RELEASE_ENTRY } from "./const.js";
|
|
2
2
|
export type ApiOptions = {
|
|
3
3
|
d?: string;
|
|
4
|
-
/** Host project name (directory basename). Required when scaffolding into `/workspace
|
|
4
|
+
/** Host project name (directory basename). Required when scaffolding into the create-builder `/workspace` mount. */
|
|
5
5
|
projectName?: string;
|
|
6
6
|
/** API slugs under `projects/`. Default `["api"]`. Repeatable `--name`. */
|
|
7
7
|
names?: string[];
|