@veloceapps/api 9.0.0-15 → 9.0.0-17
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/esm2020/lib/services/document-templates-api.service.mjs +2 -7
- package/fesm2015/veloceapps-api.mjs +2 -6
- package/fesm2015/veloceapps-api.mjs.map +1 -1
- package/fesm2020/veloceapps-api.mjs +1 -6
- package/fesm2020/veloceapps-api.mjs.map +1 -1
- package/lib/services/document-templates-api.service.d.ts +0 -6
- package/package.json +1 -1
@@ -120,9 +120,6 @@ export class DocumentTemplatesApiService {
|
|
120
120
|
this.fileDownloadService.processDownload(response);
|
121
121
|
}), map(response => response.body || response));
|
122
122
|
}
|
123
|
-
/**
|
124
|
-
* @deprecated
|
125
|
-
*/
|
126
123
|
mergeDocuments(document, attachments) {
|
127
124
|
const body = new FormData();
|
128
125
|
attachments.forEach(attachment => {
|
@@ -134,6 +131,7 @@ export class DocumentTemplatesApiService {
|
|
134
131
|
});
|
135
132
|
}
|
136
133
|
generateDocumentV2(body, quoteId, isAsync) {
|
134
|
+
body['docgenURL'] = window.VELO_DOCGEN_API ?? '';
|
137
135
|
const params = {};
|
138
136
|
if (isAsync) {
|
139
137
|
params['async'] = 'true';
|
@@ -183,9 +181,6 @@ export class DocumentTemplatesApiService {
|
|
183
181
|
...templateProperties,
|
184
182
|
});
|
185
183
|
}
|
186
|
-
/**
|
187
|
-
* @deprecated
|
188
|
-
*/
|
189
184
|
generateDocument(template, object, params = {}) {
|
190
185
|
const documentData$ = this.generateDocumentData(template, object, { ...params, shouldPreventDownload: true });
|
191
186
|
return zip(this.getTemplateFile(template.id), documentData$, this.resolveAttachments$(template)).pipe(switchMap(([templateFile, data, attachments]) => {
|
@@ -325,4 +320,4 @@ DocumentTemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "1
|
|
325
320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DocumentTemplatesApiService, decorators: [{
|
326
321
|
type: Injectable
|
327
322
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i2.SalesforceApiService }, { type: i1.FileDownloadService }, { type: i3.DocumentAttachmentApiService }, { type: i4.HttpClient }]; } });
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy9kb2N1bWVudC10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUtMLGFBQWEsRUFHYix3QkFBd0IsRUFDeEIsVUFBVSxFQUVWLFdBQVcsR0FJWixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFhckUsTUFBTSxPQUFPLDJCQUEyQjtJQU10QyxZQUNVLE9BQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFDeEMseUJBQXVELEVBQ3ZELElBQWdCO1FBSmhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQThCO1FBQ3ZELFNBQUksR0FBSixJQUFJLENBQVk7UUFWVCxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUM1QixlQUFVLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsU0FBUyxDQUFDO1FBdVc1RCxxQkFBZ0IsR0FBRyxDQUFJLEtBQWEsRUFBRSxFQUFFLENBQzlDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNuQixPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUM7YUFDeEM7WUFFRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7Z0JBQ2YsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkI7WUFFRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVHLDBCQUFxQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO2dCQUNyQixPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFwWEEsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUMzQzthQUFNO1lBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztZQUNoRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFTSxZQUFZLENBQUMsR0FBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3RCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDMUIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUU7Z0JBQ04sR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3BCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxFQUFVO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDdEIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUU7WUFDaEMsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUNuQixRQUEwQixFQUMxQixJQUFXLEVBQ1gsY0FBd0I7UUFFeEIsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUUxQyxJQUFJLElBQUksRUFBRTtZQUNSLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7UUFDRCxRQUFRLENBQUMsTUFBTSxDQUNiLFVBQVUsRUFDVixJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRTtZQUNuQyxJQUFJLEVBQUUsa0JBQWtCO1NBQ3pCLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ2YsR0FBRyxJQUFJLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQzFCO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN6QixHQUFHO1lBQ0gsSUFBSSxFQUFFLFFBQVE7WUFDZCxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3BDLGNBQWM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEVBQVU7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN0QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUNoQyxNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLEVBQVU7UUFDL0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN0QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsVUFBVTtZQUN4QyxNQUFNLEVBQUUsT0FBTztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUNsQixFQUFVLEVBQ1YsdUJBQWtELEVBQUU7UUFFcEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN0QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxVQUFVLEVBQUUsRUFBRTtZQUN0QyxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRTtnQkFDSixFQUFFO2dCQUNGLG9CQUFvQjthQUNyQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ3RCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLE9BQU87WUFDckMsWUFBWSxFQUFFLGFBQWE7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEVBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixHQUFHLENBQUM7WUFDSCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsT0FBTztZQUNyQyxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxRQUFjLEVBQUUsV0FBMEI7UUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUU1QixXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLGtCQUFrQixFQUFFLElBQUksRUFBRTtZQUNqRSxZQUFZLEVBQUUsYUFBYTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsSUFBNkIsRUFBRSxPQUFlLEVBQUUsT0FBaUI7UUFDekYsTUFBTSxNQUFNLEdBQXVCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDMUI7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLEdBQUcsQ0FBQztZQUNILE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLFdBQVcsT0FBTyxXQUFXO1lBQ2xDLElBQUk7WUFDSixNQUFNO1lBQ04sWUFBWSxFQUFFLGFBQWE7U0FDNUIsQ0FBQzthQUNELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxpQkFBaUIsQ0FBQztZQUUxRSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3hHO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVNLGNBQWMsQ0FBQyxhQUE4QztRQUNsRSxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQVU7UUFDakMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsSUFBVyxFQUFFLGNBQXdCO1FBQ25GLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEVBQVU7UUFDaEMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVNLG9CQUFvQixDQUN6QixRQUEwQixFQUMxQixNQUFXLEVBQ1gsU0FBbUMsRUFBRTtRQUVyQyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUNwRCxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFDakYsRUFBRSxDQUNILENBQUM7UUFFRjs7Ozs7VUFLRTtRQUNGLE9BQU8sRUFBRSxDQUFDO1lBQ1IsR0FBRyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3JELEdBQUcsa0JBQWtCO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUNyQixRQUEwQixFQUMxQixNQUFXLEVBQ1gsU0FBbUMsRUFBRTtRQUVyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFOUcsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkcsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsTUFBTSxVQUFVLEdBQXlCLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxJQUFJLE1BQU0sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ2pHLE1BQU0sWUFBWSxHQUNoQixRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsRUFBRSxLQUFLO2dCQUN2RSxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDO1lBRWhCLE1BQU0sY0FBYyxHQUNsQixNQUFNLENBQUMsY0FBYyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUM5RixJQUFJLGNBQWMsS0FBSyxNQUFNLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUVqRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNyQjtZQUVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNwRCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxZQUFZLE1BQU0sQ0FBQyxDQUFDO29CQUNwRCxPQUFPLElBQUksQ0FBQyx5QkFBeUI7eUJBQ2xDLGdCQUFnQixDQUNmO3dCQUNFLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTzt3QkFDOUIsUUFBUSxFQUFFLFlBQVk7d0JBQ3RCLGFBQWEsRUFBRSxLQUFLO3dCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7cUJBQ3RCLEVBQ0QsSUFBSSxDQUNMO3lCQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDekI7Z0JBRUQsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRTtvQkFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxZQUFZLE1BQU0sQ0FBQyxDQUFDO2lCQUN2RTtnQkFFRCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQixDQUNoQyxRQUEwQixFQUMxQixNQUFXLEVBQ1gsU0FBbUMsRUFBRTtRQUVyQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMzRCxNQUFNLFVBQVUsR0FBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sVUFBVSxHQUF5QixNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsSUFBSSxNQUFNLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUNqRyxNQUFNLFNBQVMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QyxJQUFJLFNBQVMsRUFBRTtZQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsU0FBUyxFQUFFLG1CQUFtQjtnQkFDOUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLGdCQUFnQixFQUFFLFNBQVM7Z0JBQzNCLFNBQVMsRUFBRSxRQUFRLFNBQVMsR0FBRztnQkFDL0IsTUFBTSxFQUFFLEVBQUU7YUFDWCxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksTUFBTSxFQUFFO1lBQ1YsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxTQUFTLEVBQUUsZ0JBQWdCO2dCQUMzQixVQUFVLEVBQUUsTUFBTTtnQkFDbEIsZ0JBQWdCLEVBQUUsT0FBTztnQkFDekIsU0FBUyxFQUFFLFFBQVEsTUFBTSxHQUFHO2dCQUM1QixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUMsQ0FBQztTQUNKO1FBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV2RixPQUFPLFFBQVEsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hDLGNBQWMsQ0FBQyxFQUFXLENBQUMsRUFDM0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1osTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7aUJBQ25DLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7aUJBQ3pCO2dCQUVELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDTCxLQUFLLEVBQUUsQ0FBQztZQUVYLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUN4RixPQUFPO29CQUNMLEdBQUcsS0FBSztvQkFDUixDQUFDLElBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFZLENBQUM7aUJBQzNELENBQUM7WUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFUCxNQUFNLElBQUksR0FBRztnQkFDWCxHQUFHLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3JELEdBQUcsYUFBYTtnQkFDaEIsR0FBRyxrQkFBa0I7YUFDdEIsQ0FBQztZQUVGLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtnQkFDcEQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDO2dCQUM1RyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsRUFBRSxLQUFLLElBQUksWUFBWSxDQUFDO2dCQUN6RyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO29CQUNuQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUMxRCxDQUFDLENBQUM7Z0JBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsVUFBVSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUM7b0JBQ2hDLEdBQUcsSUFBSTtvQkFDUCxLQUFLLEVBQUU7d0JBQ0wsTUFBTSxFQUFFLENBQUM7d0JBQ1QsUUFBUSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDO3dCQUNyRyxJQUFJLEVBQUUsVUFBVTtxQkFDakI7b0JBQ0QsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFTLENBQUM7aUJBQ3JDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMscUJBQXFCLEVBQUU7b0JBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2lCQUM3RDtnQkFDRCxPQUFPLGVBQWUsQ0FBQzthQUN4QjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUEwQjtRQUNwRCxNQUFNLGFBQWEsR0FBSSxRQUFRLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQWMsSUFBSSxFQUFFLENBQUM7UUFFcEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZjtRQUVELE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBMkJPLFdBQVcsQ0FDakIsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBaUIsRUFDbEUsRUFBRSxVQUFVLEVBQXFCO1FBRWpDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO1FBQ3hDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksU0FBUyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0MsTUFBTSxRQUFRLEdBQUcsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqRixJQUFJLFFBQVEsRUFBRTtnQkFDWixLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDdkM7WUFDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFFRCxNQUFNLGlCQUFpQixHQUFHLFNBQVM7WUFDakMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDO1lBQzNFLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLGFBQWEsR0FBRztZQUNwQixJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssRUFBRSxLQUFLO1lBQ1osWUFBWSxFQUFFLGlCQUFpQjtZQUMvQixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDaEMsQ0FBQztRQUVuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDcEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUM1QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDOUMsQ0FBQztJQUNKLENBQUM7O3dIQWhhVSwyQkFBMkI7NEhBQTNCLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBbnlXaXRoUHJvcGVydGllcyxcbiAgQXR0YWNobWVudCxcbiAgQmFzZUh0dHBTZXJ2aWNlLFxuICBEb2N1bWVudFRlbXBsYXRlLFxuICBEb2N4VGVtcGxhdGVyLFxuICBGaWxlRG93bmxvYWRTZXJ2aWNlLFxuICBHZW5lcmF0ZURvY3VtZW50UGF5bG9hZCxcbiAgaXNMZWdhY3lEb2N1bWVudFRlbXBsYXRlLFxuICBRdW90ZURyYWZ0LFxuICBTZWFyY2hSZXF1ZXN0LFxuICBTdHJpbmdVdGlscyxcbiAgVGVtcGxhdGVBdHRhY2htZW50U2VhcmNoUmVxdWVzdCxcbiAgVGVtcGxhdGVRdWVyeSxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVmYXVsdElmRW1wdHksIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2N1bWVudEF0dGFjaG1lbnRBcGlTZXJ2aWNlIH0gZnJvbSAnLi9kb2N1bWVudC1hdHRhY2htZW50LWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzZm9yY2VBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zYWxlc2ZvcmNlLWFwaS5zZXJ2aWNlJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IFZsV2luZG93O1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50R2VuZXJhdGlvblBhcmFtcyB7XG4gIGF0dGFjaFRvUXVvdGU/OiBib29sZWFuO1xuICBkb2N1bWVudEZvcm1hdD86ICdET0NYJztcbiAgc2hvdWxkUHJldmVudERvd25sb2FkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvY3VtZW50VGVtcGxhdGVzQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgU0VSVklDRV9VUkwgPSAnL3RlbXBsYXRlcyc7XG4gIHB1YmxpYyByZWFkb25seSBET0NHRU5fVEFHID0gJ2RvY2dlbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgRE9DX0dFTl9VUkxfRkFMTEJBQ0sgPSBgJHt3aW5kb3cuVkVMT19BUEl9L2RvY2dlbmA7XG4gIHByaXZhdGUgcmVhZG9ubHkgRE9DX0dFTl9VUkw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBCYXNlSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc2ZvcmNlQXBpU2VydmljZTogU2FsZXNmb3JjZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlRG93bmxvYWRTZXJ2aWNlOiBGaWxlRG93bmxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRBdHRhY2htZW50U2VydmljZTogRG9jdW1lbnRBdHRhY2htZW50QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICkge1xuICAgIGlmICh3aW5kb3cuVkVMT19ET0NHRU5fQVBJKSB7XG4gICAgICB0aGlzLkRPQ19HRU5fVVJMID0gd2luZG93LlZFTE9fRE9DR0VOX0FQSTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHdpbmRvdy5WRUxPX0RPQ0dFTl9BUEkgbm90IHNldCwgd2lsbCB1c2UgZmFsbGJhY2sgXCIke3RoaXMuRE9DX0dFTl9VUkxfRkFMTEJBQ0t9XCJgKTtcbiAgICAgIHRoaXMuRE9DX0dFTl9VUkwgPSB0aGlzLkRPQ19HRU5fVVJMX0ZBTExCQUNLO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZXModGFnPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEb2N1bWVudFRlbXBsYXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9YCxcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgLi4uKHRhZyAmJiB7IHRhZyB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH1gLFxuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnRUZW1wbGF0ZShcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBmaWxlPzogRmlsZSxcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XG4gICAgfVxuICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICd0ZW1wbGF0ZScsXG4gICAgICBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpXSwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgbGV0IHVybCA9IGAke3RoaXMuU0VSVklDRV9VUkx9YDtcbiAgICBpZiAodGVtcGxhdGUuaWQpIHtcbiAgICAgIHVybCArPSBgLyR7dGVtcGxhdGUuaWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnVwbG9hZCh7XG4gICAgICB1cmwsXG4gICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgIG1ldGhvZDogdGVtcGxhdGUuaWQgPyAncHV0JyA6ICdwb3N0JyxcbiAgICAgIHJlcG9ydFByb2dyZXNzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVRlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9YCxcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzdG9yZVRlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9L3Jlc3RvcmVgLFxuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsb25lVGVtcGxhdGUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzVG9PdmVycmlkZTogUGFydGlhbDxEb2N1bWVudFRlbXBsYXRlPiA9IHt9LFxuICApOiBPYnNlcnZhYmxlPHsgY2xvbmVkUmVjb3JkSWQ6IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS9jbG9uZS8ke2lkfWAsXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIHByb3BlcnRpZXNUb092ZXJyaWRlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZUZpbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS8ke2lkfS9maWxlYCxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZFRlbXBsYXRlRmlsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH0vZmlsZWAsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkU2VydmljZS5wcm9jZXNzRG93bmxvYWQocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJvZHkgfHwgcmVzcG9uc2UpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIG1lcmdlRG9jdW1lbnRzKGRvY3VtZW50OiBCbG9iLCBhdHRhY2htZW50czogQXJyYXlCdWZmZXJbXSk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+IHtcbiAgICBjb25zdCBib2R5ID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICBhdHRhY2htZW50cy5mb3JFYWNoKGF0dGFjaG1lbnQgPT4ge1xuICAgICAgYm9keS5hcHBlbmQoJ2F0dGFjaG1lbnRzJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRdKSk7XG4gICAgfSk7XG5cbiAgICBib2R5LmFwcGVuZCgnb3JkZXJmb3JtJywgZG9jdW1lbnQpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuRE9DX0dFTl9VUkx9L2RvY3VtZW50cy9tZXJnZWAsIGJvZHksIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZURvY3VtZW50VjIoYm9keTogR2VuZXJhdGVEb2N1bWVudFBheWxvYWQsIHF1b3RlSWQ6IHN0cmluZywgaXNBc3luYz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEJsb2I+IHtcbiAgICBjb25zdCBwYXJhbXM6IERpY3Rpb25hcnk8c3RyaW5nPiA9IHt9O1xuICAgIGlmIChpc0FzeW5jKSB7XG4gICAgICBwYXJhbXNbJ2FzeW5jJ10gPSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICB1cmw6IGAvZG9jZ2VuLyR7cXVvdGVJZH0vZ2VuZXJhdGVgLFxuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHBkZiA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtwZGZdKTtcblxuICAgICAgICAgIGNvbnN0IGRvY3VtZW50TmFtZSA9IGJvZHkucGFyYW1ldGVyc1snZG9jdW1lbnROYW1lJ10gPz8gJ1ZlbG9jZSBQcm9wb3NhbCc7XG5cbiAgICAgICAgICBpZiAoIWlzQXN5bmMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkU2VydmljZS5wcm9jZXNzRG93bmxvYWQoYmxvYiwgYCR7ZG9jdW1lbnROYW1lfS4ke2JvZHkuZG9jdW1lbnRGb3JtYXQudG9Mb3dlckNhc2UoKX1gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEF0dGFjaG1lbnRzKHNlYXJjaFJlcXVlc3Q6IFRlbXBsYXRlQXR0YWNobWVudFNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2UuZ2V0QXR0YWNobWVudHMoc2VhcmNoUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXR0YWNobWVudEZpbGUoaWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5nZXRBdHRhY2htZW50RmlsZShpZCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50LCBmaWxlPzogRmlsZSwgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5jcmVhdGVBdHRhY2htZW50KGF0dGFjaG1lbnQsIGZpbGUsIHJlcG9ydFByb2dyZXNzKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBdHRhY2htZW50KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlLnJlbW92ZUF0dGFjaG1lbnQoaWQpO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlRG9jdW1lbnREYXRhKFxuICAgIHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHBhcmFtczogRG9jdW1lbnRHZW5lcmF0aW9uUGFyYW1zID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKGlzTGVnYWN5RG9jdW1lbnRUZW1wbGF0ZSh0ZW1wbGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRG9jdW1lbnREYXRhTGVnYWN5KHRlbXBsYXRlLCBvYmplY3QsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcGxhdGVQcm9wZXJ0aWVzID0gdGVtcGxhdGUucHJvcGVydGllcz8ucmVkdWNlKFxuICAgICAgKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdGhpcy5tYXBCb29sZWFuSWZBcGxpY2FibGUodmFsdWUpIH0pLFxuICAgICAge30sXG4gICAgKTtcblxuICAgIC8qXG4gICAgICBSZXNvbHZlIHF1b3RlIGFuZCB0ZW1wbGF0ZSBwcm9wZXJ0aWVzIGZvciBub3dcbiAgICAgIFdoZW4gcHJvY2VkdXJlcyBhcmUgcmVhZHksIHdoZXkgd2lsbCByZXBsYWNlIHRlbXBsYXRlIHNjcmlwdHMuXG5cbiAgICAgIFRPRE86IHJ1biBwcm9jZWR1cmUgdG8gcmVzb2x2ZSBkb2N1bWVudCBkYXRhXG4gICAgKi9cbiAgICByZXR1cm4gb2Yoe1xuICAgICAgLi4uKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnID8gb2JqZWN0IDogeyBvYmplY3QgfSksXG4gICAgICAuLi50ZW1wbGF0ZVByb3BlcnRpZXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZURvY3VtZW50KFxuICAgIHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHBhcmFtczogRG9jdW1lbnRHZW5lcmF0aW9uUGFyYW1zID0ge30sXG4gICk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIGNvbnN0IGRvY3VtZW50RGF0YSQgPSB0aGlzLmdlbmVyYXRlRG9jdW1lbnREYXRhKHRlbXBsYXRlLCBvYmplY3QsIHsgLi4ucGFyYW1zLCBzaG91bGRQcmV2ZW50RG93bmxvYWQ6IHRydWUgfSk7XG5cbiAgICByZXR1cm4gemlwKHRoaXMuZ2V0VGVtcGxhdGVGaWxlKHRlbXBsYXRlLmlkKSwgZG9jdW1lbnREYXRhJCwgdGhpcy5yZXNvbHZlQXR0YWNobWVudHMkKHRlbXBsYXRlKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW3RlbXBsYXRlRmlsZSwgZGF0YSwgYXR0YWNobWVudHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9jeFRlbXBsYXRlci5nZW5lcmF0ZSh0ZW1wbGF0ZUZpbGUsIGRhdGEpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzOiBfLkRpY3Rpb25hcnk8c3RyaW5nPiA9IG9iamVjdD8uY29udGV4dD8ucHJvcGVydGllcyA/PyBvYmplY3Q/LnByb3BlcnRpZXMgPz8ge307XG4gICAgICAgIGNvbnN0IGRvY3VtZW50TmFtZSA9XG4gICAgICAgICAgdGVtcGxhdGUucHJvcGVydGllcz8uZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdkb2N1bWVudE5hbWUnKT8udmFsdWUgfHxcbiAgICAgICAgICBwcm9wZXJ0aWVzWydOYW1lJ10gfHxcbiAgICAgICAgICB0ZW1wbGF0ZS5uYW1lO1xuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Rm9ybWF0ID1cbiAgICAgICAgICBwYXJhbXMuZG9jdW1lbnRGb3JtYXQgPz8gdGVtcGxhdGUucHJvcGVydGllcz8uZmluZChwID0+IHAubmFtZSA9PT0gJ2RvY3VtZW50Rm9ybWF0Jyk/LnZhbHVlO1xuICAgICAgICBpZiAoZG9jdW1lbnRGb3JtYXQgPT09ICdET0NYJykge1xuICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkU2VydmljZS5wcm9jZXNzRG93bmxvYWQoZG9jdW1lbnQsIGRvY3VtZW50TmFtZSk7XG5cbiAgICAgICAgICByZXR1cm4gb2YoZG9jdW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWVyZ2VEb2N1bWVudHMoZG9jdW1lbnQsIGF0dGFjaG1lbnRzKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChwZGYgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmFtcy5hdHRhY2hUb1F1b3RlICYmIFF1b3RlRHJhZnQuaXNRdW90ZShvYmplY3QpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbcGRmXSwgYCR7ZG9jdW1lbnROYW1lfS5wZGZgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZVxuICAgICAgICAgICAgICAgIC5jcmVhdGVBdHRhY2htZW50KFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsaW5rZWRFbnRpdHlJZDogb2JqZWN0LnF1b3RlSWQsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBkb2N1bWVudE5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVFeHRlbnNpb246ICdwZGYnLFxuICAgICAgICAgICAgICAgICAgICB0YWdzOiB0aGlzLkRPQ0dFTl9UQUcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKCgpID0+IHBkZikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb2YocGRmKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAocGRmID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcGRmXSk7XG5cbiAgICAgICAgICAgIGlmICghcGFyYW1zLnNob3VsZFByZXZlbnREb3dubG9hZCkge1xuICAgICAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKGJsb2IsIGAke2RvY3VtZW50TmFtZX0ucGRmYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVEb2N1bWVudERhdGFMZWdhY3koXG4gICAgdGVtcGxhdGU6IERvY3VtZW50VGVtcGxhdGUsXG4gICAgb2JqZWN0OiBhbnksXG4gICAgcGFyYW1zOiBEb2N1bWVudEdlbmVyYXRpb25QYXJhbXMgPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzaG91bGRQcmV2ZW50RG93bmxvYWQgPSBwYXJhbXMuc2hvdWxkUHJldmVudERvd25sb2FkO1xuICAgIGNvbnN0IGFsbFF1ZXJpZXM6IFRlbXBsYXRlUXVlcnlbXSA9IFsuLi4odGVtcGxhdGU/LnF1ZXJpZXMgPz8gW10pXTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBfLkRpY3Rpb25hcnk8c3RyaW5nPiA9IG9iamVjdD8uY29udGV4dD8ucHJvcGVydGllcyA/PyBvYmplY3Q/LnByb3BlcnRpZXMgPz8ge307XG4gICAgY29uc3QgYWNjb3VudElkID0gcHJvcGVydGllcz8uWydBY2NvdW50SWQnXTtcbiAgICBjb25zdCB1c2VySWQgPSBwcm9wZXJ0aWVzPy5bJ1VzZXJJZCddO1xuXG4gICAgaWYgKGFjY291bnRJZCkge1xuICAgICAgYWxsUXVlcmllcy5wdXNoKHtcbiAgICAgICAgcXVlcnlOYW1lOiAnUXVvdGVBY2NvdW50UXVlcnknLFxuICAgICAgICBvYmplY3ROYW1lOiAnQWNjb3VudCcsXG4gICAgICAgIHJlc3VsdE9iamVjdE5hbWU6ICdhY2NvdW50JyxcbiAgICAgICAgc3RhdGVtZW50OiBgSWQgPScke2FjY291bnRJZH0nYCxcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodXNlcklkKSB7XG4gICAgICBhbGxRdWVyaWVzLnB1c2goe1xuICAgICAgICBxdWVyeU5hbWU6ICdRdW90ZVVzZXJRdWVyeScsXG4gICAgICAgIG9iamVjdE5hbWU6ICdVc2VyJyxcbiAgICAgICAgcmVzdWx0T2JqZWN0TmFtZTogJ2FnZW50JyxcbiAgICAgICAgc3RhdGVtZW50OiBgSWQgPScke3VzZXJJZH0nYCxcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJpZXMgPSBhbGxRdWVyaWVzLm1hcChxdWVyeSA9PiB0aGlzLnF1ZXJ5T2JqZWN0KHF1ZXJ5LCB7IHByb3BlcnRpZXMgfSkpIHx8IFtdO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKFsuLi5xdWVyaWVzXSkucGlwZShcbiAgICAgIGRlZmF1bHRJZkVtcHR5KFtdIGFzIGFueVtdKSxcbiAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgY29uc3QgcXVlcmllc1Jlc3VsdCA9IF8uY2hhaW4ocmVzdWx0cylcbiAgICAgICAgICAucmVkdWNlKChhY2MsIHIpID0+IHtcbiAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uciB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgIC52YWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUHJvcGVydGllcyA9ICh0ZW1wbGF0ZT8ucHJvcGVydGllcyB8fCBbXSkucmVkdWNlKCh0cnVuaywgeyBuYW1lLCB2YWx1ZSB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRydW5rLFxuICAgICAgICAgICAgW25hbWUgYXMgc3RyaW5nXTogdGhpcy5tYXBCb29sZWFuSWZBcGxpY2FibGUodmFsdWUgYXMgYW55KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgICAuLi4odHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgPyBvYmplY3QgOiB7IG9iamVjdCB9KSxcbiAgICAgICAgICAuLi5xdWVyaWVzUmVzdWx0LFxuICAgICAgICAgIC4uLnRlbXBsYXRlUHJvcGVydGllcyxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGVtcGxhdGUuc2NyaXB0ICYmIHRlbXBsYXRlLnNjcmlwdC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVuY3lGb3JtYXQgPSB0ZW1wbGF0ZS5wcm9wZXJ0aWVzPy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2N1cnJlbmN5Rm9ybWF0Jyk/LnZhbHVlIHx8ICcxLjItMic7XG4gICAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRlbXBsYXRlLnByb3BlcnRpZXM/LmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnZGF0ZUZvcm1hdCcpPy52YWx1ZSB8fCAnRC9NTU0vWVlZWSc7XG4gICAgICAgICAgY29uc3QgZm9ybWF0RGF0ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPyBtb21lbnQodmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KSA6IHZhbHVlO1xuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IEZ1bmN0aW9uKGByZXR1cm4gJHt0ZW1wbGF0ZS5zY3JpcHR9YCkoKTtcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGEgPSB0cmFuc2Zvcm0oe1xuICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgIHV0aWxzOiB7XG4gICAgICAgICAgICAgIGxvZGFzaDogXyxcbiAgICAgICAgICAgICAgY3VycmVuY3k6ICh2YWx1ZTogYW55KSA9PiBuZXcgQ3VycmVuY3lQaXBlKCdlbi1VUycpLnRyYW5zZm9ybSh2YWx1ZSwgJ1VTRCcsICdzeW1ib2wnLCBjdXJyZW5jeUZvcm1hdCksXG4gICAgICAgICAgICAgIGRhdGU6IGZvcm1hdERhdGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVG9EYXk6IGZvcm1hdERhdGUoRGF0ZS5ub3coKSBhcyBhbnkpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghc2hvdWxkUHJldmVudERvd25sb2FkKSB7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHRyYW5zZm9ybWVkRGF0YSldKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkU2VydmljZS5wcm9jZXNzRG93bmxvYWQoYmxvYiwgJ2RhdGEuanNvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUF0dGFjaG1lbnRzJCh0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXJbXT4ge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRJZHMgPSAodGVtcGxhdGUuYXR0YWNobWVudHM/Lm1hcCgoeyBpZCB9KSA9PiBpZCkuZmlsdGVyKEJvb2xlYW4pIGFzIHN0cmluZ1tdKSA/PyBbXTtcblxuICAgIGlmICghYXR0YWNobWVudElkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKGF0dGFjaG1lbnRJZHMubWFwKGlkID0+IHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5nZXRBdHRhY2htZW50RmlsZShpZCwgdHJ1ZSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2ZRdWVyeVJlc3VsdCA9IDxUPihsaW1pdDogbnVtYmVyKSA9PlxuICAgIG1hcCgocmVjb3JkczogVFtdKSA9PiB7XG4gICAgICBpZiAoIXJlY29yZHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7IF9yZXN1bHQ6ICdObyBSZWNvcmRzIEZvdW5kJyB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobGltaXQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHJlY29yZHNbMF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWNvcmRzO1xuICAgIH0pO1xuXG4gIHByaXZhdGUgbWFwQm9vbGVhbklmQXBsaWNhYmxlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAodmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIHByaXZhdGUgcXVlcnlPYmplY3QoXG4gICAgeyBvYmplY3ROYW1lLCByZXN1bHRPYmplY3ROYW1lLCBmaWVsZHMsIHN0YXRlbWVudCB9OiBUZW1wbGF0ZVF1ZXJ5LFxuICAgIHsgcHJvcGVydGllcyB9OiBBbnlXaXRoUHJvcGVydGllcyxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXR0ZXJuTGltaXQgPSAvKFxccypsaW1pdFxcc1xcZCopL2k7XG4gICAgbGV0IGxpbWl0ID0gMTtcbiAgICBpZiAoc3RhdGVtZW50ICYmIHBhdHRlcm5MaW1pdC50ZXN0KHN0YXRlbWVudCkpIHtcbiAgICAgIGNvbnN0IGxpbWl0U3RyID0gc3RhdGVtZW50Py5tYXRjaChwYXR0ZXJuTGltaXQpPy5bMV0/LnRyaW0oKS5zdWJzdHJpbmcoNSkudHJpbSgpO1xuICAgICAgaWYgKGxpbWl0U3RyKSB7XG4gICAgICAgIGxpbWl0ID0gTnVtYmVyLnBhcnNlSW50KGxpbWl0U3RyLCAxMCk7XG4gICAgICB9XG4gICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQucmVwbGFjZShwYXR0ZXJuTGltaXQsICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHZlZFN0YXRlbWVudCA9IHN0YXRlbWVudFxuICAgICAgPyBTdHJpbmdVdGlscy5maWxsUGxhY2Vob2xkZXJzKHN0YXRlbWVudCwgcHJvcGVydGllcywgLzpcXHMqKFxcd1tcXHdcXGRfLl0rKS9pKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBzZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgc2tpcDogMCxcbiAgICAgIGNvdW50OiBsaW1pdCxcbiAgICAgIHJhd0NvbmRpdGlvbjogcmVzb2x2ZWRTdGF0ZW1lbnQsXG4gICAgICAuLi4oZmllbGRzPy5sZW5ndGggJiYgISFmaWVsZHNbMF0gJiYgeyBmaWVsZHMgfSksXG4gICAgfSBhcyBTZWFyY2hSZXF1ZXN0O1xuXG4gICAgcmV0dXJuIHRoaXMuc2FsZXNmb3JjZUFwaVNlcnZpY2UucXVlcnkoc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkucGlwZShcbiAgICAgIHRoaXMubWFwU2ZRdWVyeVJlc3VsdChsaW1pdCksXG4gICAgICBtYXAodmFsdWUgPT4gKHsgW3Jlc3VsdE9iamVjdE5hbWVdOiB2YWx1ZSB9KSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy9kb2N1bWVudC10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUtMLGFBQWEsRUFHYix3QkFBd0IsRUFDeEIsVUFBVSxFQUVWLFdBQVcsR0FJWixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFhckUsTUFBTSxPQUFPLDJCQUEyQjtJQU10QyxZQUNVLE9BQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFDeEMseUJBQXVELEVBQ3ZELElBQWdCO1FBSmhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQThCO1FBQ3ZELFNBQUksR0FBSixJQUFJLENBQVk7UUFWVCxnQkFBVyxHQUFHLFlBQVksQ0FBQztRQUM1QixlQUFVLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsU0FBUyxDQUFDO1FBbVc1RCxx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M0IsMkJBQTJCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBbnlXaXRoUHJvcGVydGllcyxcbiAgQXR0YWNobWVudCxcbiAgQmFzZUh0dHBTZXJ2aWNlLFxuICBEb2N1bWVudFRlbXBsYXRlLFxuICBEb2N4VGVtcGxhdGVyLFxuICBGaWxlRG93bmxvYWRTZXJ2aWNlLFxuICBHZW5lcmF0ZURvY3VtZW50UGF5bG9hZCxcbiAgaXNMZWdhY3lEb2N1bWVudFRlbXBsYXRlLFxuICBRdW90ZURyYWZ0LFxuICBTZWFyY2hSZXF1ZXN0LFxuICBTdHJpbmdVdGlscyxcbiAgVGVtcGxhdGVBdHRhY2htZW50U2VhcmNoUmVxdWVzdCxcbiAgVGVtcGxhdGVRdWVyeSxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVmYXVsdElmRW1wdHksIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2N1bWVudEF0dGFjaG1lbnRBcGlTZXJ2aWNlIH0gZnJvbSAnLi9kb2N1bWVudC1hdHRhY2htZW50LWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzZm9yY2VBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zYWxlc2ZvcmNlLWFwaS5zZXJ2aWNlJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IFZsV2luZG93O1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50R2VuZXJhdGlvblBhcmFtcyB7XG4gIGF0dGFjaFRvUXVvdGU/OiBib29sZWFuO1xuICBkb2N1bWVudEZvcm1hdD86ICdET0NYJztcbiAgc2hvdWxkUHJldmVudERvd25sb2FkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvY3VtZW50VGVtcGxhdGVzQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgU0VSVklDRV9VUkwgPSAnL3RlbXBsYXRlcyc7XG4gIHB1YmxpYyByZWFkb25seSBET0NHRU5fVEFHID0gJ2RvY2dlbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgRE9DX0dFTl9VUkxfRkFMTEJBQ0sgPSBgJHt3aW5kb3cuVkVMT19BUEl9L2RvY2dlbmA7XG4gIHByaXZhdGUgcmVhZG9ubHkgRE9DX0dFTl9VUkw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBCYXNlSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc2ZvcmNlQXBpU2VydmljZTogU2FsZXNmb3JjZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlRG93bmxvYWRTZXJ2aWNlOiBGaWxlRG93bmxvYWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9jdW1lbnRBdHRhY2htZW50U2VydmljZTogRG9jdW1lbnRBdHRhY2htZW50QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICkge1xuICAgIGlmICh3aW5kb3cuVkVMT19ET0NHRU5fQVBJKSB7XG4gICAgICB0aGlzLkRPQ19HRU5fVVJMID0gd2luZG93LlZFTE9fRE9DR0VOX0FQSTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHdpbmRvdy5WRUxPX0RPQ0dFTl9BUEkgbm90IHNldCwgd2lsbCB1c2UgZmFsbGJhY2sgXCIke3RoaXMuRE9DX0dFTl9VUkxfRkFMTEJBQ0t9XCJgKTtcbiAgICAgIHRoaXMuRE9DX0dFTl9VUkwgPSB0aGlzLkRPQ19HRU5fVVJMX0ZBTExCQUNLO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZXModGFnPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEb2N1bWVudFRlbXBsYXRlW10+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9YCxcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgLi4uKHRhZyAmJiB7IHRhZyB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH1gLFxuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cHNlcnRUZW1wbGF0ZShcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBmaWxlPzogRmlsZSxcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XG4gICAgfVxuICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICd0ZW1wbGF0ZScsXG4gICAgICBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpXSwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgbGV0IHVybCA9IGAke3RoaXMuU0VSVklDRV9VUkx9YDtcbiAgICBpZiAodGVtcGxhdGUuaWQpIHtcbiAgICAgIHVybCArPSBgLyR7dGVtcGxhdGUuaWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnVwbG9hZCh7XG4gICAgICB1cmwsXG4gICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgIG1ldGhvZDogdGVtcGxhdGUuaWQgPyAncHV0JyA6ICdwb3N0JyxcbiAgICAgIHJlcG9ydFByb2dyZXNzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVRlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9YCxcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzdG9yZVRlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9L3Jlc3RvcmVgLFxuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNsb25lVGVtcGxhdGUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzVG9PdmVycmlkZTogUGFydGlhbDxEb2N1bWVudFRlbXBsYXRlPiA9IHt9LFxuICApOiBPYnNlcnZhYmxlPHsgY2xvbmVkUmVjb3JkSWQ6IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS9jbG9uZS8ke2lkfWAsXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIHByb3BlcnRpZXNUb092ZXJyaWRlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZUZpbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS8ke2lkfS9maWxlYCxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZFRlbXBsYXRlRmlsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH0vZmlsZWAsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkU2VydmljZS5wcm9jZXNzRG93bmxvYWQocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJvZHkgfHwgcmVzcG9uc2UpLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtZXJnZURvY3VtZW50cyhkb2N1bWVudDogQmxvYiwgYXR0YWNobWVudHM6IEFycmF5QnVmZmVyW10pOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPiB7XG4gICAgY29uc3QgYm9keSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgYXR0YWNobWVudHMuZm9yRWFjaChhdHRhY2htZW50ID0+IHtcbiAgICAgIGJvZHkuYXBwZW5kKCdhdHRhY2htZW50cycsIG5ldyBCbG9iKFthdHRhY2htZW50XSkpO1xuICAgIH0pO1xuXG4gICAgYm9keS5hcHBlbmQoJ29yZGVyZm9ybScsIGRvY3VtZW50KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLkRPQ19HRU5fVVJMfS9kb2N1bWVudHMvbWVyZ2VgLCBib2R5LCB7XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEb2N1bWVudFYyKGJvZHk6IEdlbmVyYXRlRG9jdW1lbnRQYXlsb2FkLCBxdW90ZUlkOiBzdHJpbmcsIGlzQXN5bmM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgYm9keVsnZG9jZ2VuVVJMJ10gPSB3aW5kb3cuVkVMT19ET0NHRU5fQVBJID8/ICcnO1xuXG4gICAgY29uc3QgcGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4gPSB7fTtcbiAgICBpZiAoaXNBc3luYykge1xuICAgICAgcGFyYW1zWydhc3luYyddID0gJ3RydWUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgdXJsOiBgL2RvY2dlbi8ke3F1b3RlSWR9L2dlbmVyYXRlYCxcbiAgICAgICAgYm9keSxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChwZGYgPT4ge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcGRmXSk7XG5cbiAgICAgICAgICBjb25zdCBkb2N1bWVudE5hbWUgPSBib2R5LnBhcmFtZXRlcnNbJ2RvY3VtZW50TmFtZSddID8/ICdWZWxvY2UgUHJvcG9zYWwnO1xuXG4gICAgICAgICAgaWYgKCFpc0FzeW5jKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKGJsb2IsIGAke2RvY3VtZW50TmFtZX0uJHtib2R5LmRvY3VtZW50Rm9ybWF0LnRvTG93ZXJDYXNlKCl9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdHRhY2htZW50cyhzZWFyY2hSZXF1ZXN0OiBUZW1wbGF0ZUF0dGFjaG1lbnRTZWFyY2hSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlLmdldEF0dGFjaG1lbnRzKHNlYXJjaFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIGdldEF0dGFjaG1lbnRGaWxlKGlkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2UuZ2V0QXR0YWNobWVudEZpbGUoaWQpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUF0dGFjaG1lbnQoYXR0YWNobWVudDogQXR0YWNobWVudCwgZmlsZT86IEZpbGUsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8QXR0YWNobWVudD4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2UuY3JlYXRlQXR0YWNobWVudChhdHRhY2htZW50LCBmaWxlLCByZXBvcnRQcm9ncmVzcyk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQXR0YWNobWVudChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5yZW1vdmVBdHRhY2htZW50KGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZURvY3VtZW50RGF0YShcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBvYmplY3Q6IGFueSxcbiAgICBwYXJhbXM6IERvY3VtZW50R2VuZXJhdGlvblBhcmFtcyA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChpc0xlZ2FjeURvY3VtZW50VGVtcGxhdGUodGVtcGxhdGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURvY3VtZW50RGF0YUxlZ2FjeSh0ZW1wbGF0ZSwgb2JqZWN0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHRlbXBsYXRlUHJvcGVydGllcyA9IHRlbXBsYXRlLnByb3BlcnRpZXM/LnJlZHVjZShcbiAgICAgIChhY2MsIHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgLi4uYWNjLCBbbmFtZV06IHRoaXMubWFwQm9vbGVhbklmQXBsaWNhYmxlKHZhbHVlKSB9KSxcbiAgICAgIHt9LFxuICAgICk7XG5cbiAgICAvKlxuICAgICAgUmVzb2x2ZSBxdW90ZSBhbmQgdGVtcGxhdGUgcHJvcGVydGllcyBmb3Igbm93XG4gICAgICBXaGVuIHByb2NlZHVyZXMgYXJlIHJlYWR5LCB3aGV5IHdpbGwgcmVwbGFjZSB0ZW1wbGF0ZSBzY3JpcHRzLlxuXG4gICAgICBUT0RPOiBydW4gcHJvY2VkdXJlIHRvIHJlc29sdmUgZG9jdW1lbnQgZGF0YVxuICAgICovXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIC4uLih0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyA/IG9iamVjdCA6IHsgb2JqZWN0IH0pLFxuICAgICAgLi4udGVtcGxhdGVQcm9wZXJ0aWVzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlRG9jdW1lbnQoXG4gICAgdGVtcGxhdGU6IERvY3VtZW50VGVtcGxhdGUsXG4gICAgb2JqZWN0OiBhbnksXG4gICAgcGFyYW1zOiBEb2N1bWVudEdlbmVyYXRpb25QYXJhbXMgPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgY29uc3QgZG9jdW1lbnREYXRhJCA9IHRoaXMuZ2VuZXJhdGVEb2N1bWVudERhdGEodGVtcGxhdGUsIG9iamVjdCwgeyAuLi5wYXJhbXMsIHNob3VsZFByZXZlbnREb3dubG9hZDogdHJ1ZSB9KTtcblxuICAgIHJldHVybiB6aXAodGhpcy5nZXRUZW1wbGF0ZUZpbGUodGVtcGxhdGUuaWQpLCBkb2N1bWVudERhdGEkLCB0aGlzLnJlc29sdmVBdHRhY2htZW50cyQodGVtcGxhdGUpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbdGVtcGxhdGVGaWxlLCBkYXRhLCBhdHRhY2htZW50c10pID0+IHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb2N4VGVtcGxhdGVyLmdlbmVyYXRlKHRlbXBsYXRlRmlsZSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IF8uRGljdGlvbmFyeTxzdHJpbmc+ID0gb2JqZWN0Py5jb250ZXh0Py5wcm9wZXJ0aWVzID8/IG9iamVjdD8ucHJvcGVydGllcyA/PyB7fTtcbiAgICAgICAgY29uc3QgZG9jdW1lbnROYW1lID1cbiAgICAgICAgICB0ZW1wbGF0ZS5wcm9wZXJ0aWVzPy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ2RvY3VtZW50TmFtZScpPy52YWx1ZSB8fFxuICAgICAgICAgIHByb3BlcnRpZXNbJ05hbWUnXSB8fFxuICAgICAgICAgIHRlbXBsYXRlLm5hbWU7XG5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGb3JtYXQgPVxuICAgICAgICAgIHBhcmFtcy5kb2N1bWVudEZvcm1hdCA/PyB0ZW1wbGF0ZS5wcm9wZXJ0aWVzPy5maW5kKHAgPT4gcC5uYW1lID09PSAnZG9jdW1lbnRGb3JtYXQnKT8udmFsdWU7XG4gICAgICAgIGlmIChkb2N1bWVudEZvcm1hdCA9PT0gJ0RPQ1gnKSB7XG4gICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChkb2N1bWVudCwgZG9jdW1lbnROYW1lKTtcblxuICAgICAgICAgIHJldHVybiBvZihkb2N1bWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZURvY3VtZW50cyhkb2N1bWVudCwgYXR0YWNobWVudHMpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHBkZiA9PiB7XG4gICAgICAgICAgICBpZiAocGFyYW1zLmF0dGFjaFRvUXVvdGUgJiYgUXVvdGVEcmFmdC5pc1F1b3RlKG9iamVjdCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtwZGZdLCBgJHtkb2N1bWVudE5hbWV9LnBkZmApO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmNyZWF0ZUF0dGFjaG1lbnQoXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmtlZEVudGl0eUlkOiBvYmplY3QucXVvdGVJZCxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IGRvY3VtZW50TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZUV4dGVuc2lvbjogJ3BkZicsXG4gICAgICAgICAgICAgICAgICAgIHRhZ3M6IHRoaXMuRE9DR0VOX1RBRyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZShtYXAoKCkgPT4gcGRmKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvZihwZGYpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcChwZGYgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtwZGZdKTtcblxuICAgICAgICAgICAgaWYgKCFwYXJhbXMuc2hvdWxkUHJldmVudERvd25sb2FkKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsZURvd25sb2FkU2VydmljZS5wcm9jZXNzRG93bmxvYWQoYmxvYiwgYCR7ZG9jdW1lbnROYW1lfS5wZGZgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURvY3VtZW50RGF0YUxlZ2FjeShcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBvYmplY3Q6IGFueSxcbiAgICBwYXJhbXM6IERvY3VtZW50R2VuZXJhdGlvblBhcmFtcyA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNob3VsZFByZXZlbnREb3dubG9hZCA9IHBhcmFtcy5zaG91bGRQcmV2ZW50RG93bmxvYWQ7XG4gICAgY29uc3QgYWxsUXVlcmllczogVGVtcGxhdGVRdWVyeVtdID0gWy4uLih0ZW1wbGF0ZT8ucXVlcmllcyA/PyBbXSldO1xuICAgIGNvbnN0IHByb3BlcnRpZXM6IF8uRGljdGlvbmFyeTxzdHJpbmc+ID0gb2JqZWN0Py5jb250ZXh0Py5wcm9wZXJ0aWVzID8/IG9iamVjdD8ucHJvcGVydGllcyA/PyB7fTtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBwcm9wZXJ0aWVzPy5bJ0FjY291bnRJZCddO1xuICAgIGNvbnN0IHVzZXJJZCA9IHByb3BlcnRpZXM/LlsnVXNlcklkJ107XG5cbiAgICBpZiAoYWNjb3VudElkKSB7XG4gICAgICBhbGxRdWVyaWVzLnB1c2goe1xuICAgICAgICBxdWVyeU5hbWU6ICdRdW90ZUFjY291bnRRdWVyeScsXG4gICAgICAgIG9iamVjdE5hbWU6ICdBY2NvdW50JyxcbiAgICAgICAgcmVzdWx0T2JqZWN0TmFtZTogJ2FjY291bnQnLFxuICAgICAgICBzdGF0ZW1lbnQ6IGBJZCA9JyR7YWNjb3VudElkfSdgLFxuICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh1c2VySWQpIHtcbiAgICAgIGFsbFF1ZXJpZXMucHVzaCh7XG4gICAgICAgIHF1ZXJ5TmFtZTogJ1F1b3RlVXNlclF1ZXJ5JyxcbiAgICAgICAgb2JqZWN0TmFtZTogJ1VzZXInLFxuICAgICAgICByZXN1bHRPYmplY3ROYW1lOiAnYWdlbnQnLFxuICAgICAgICBzdGF0ZW1lbnQ6IGBJZCA9JyR7dXNlcklkfSdgLFxuICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcmllcyA9IGFsbFF1ZXJpZXMubWFwKHF1ZXJ5ID0+IHRoaXMucXVlcnlPYmplY3QocXVlcnksIHsgcHJvcGVydGllcyB9KSkgfHwgW107XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oWy4uLnF1ZXJpZXNdKS5waXBlKFxuICAgICAgZGVmYXVsdElmRW1wdHkoW10gYXMgYW55W10pLFxuICAgICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICBjb25zdCBxdWVyaWVzUmVzdWx0ID0gXy5jaGFpbihyZXN1bHRzKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgcikgPT4ge1xuICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5yIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgICAgLnZhbHVlKCk7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVQcm9wZXJ0aWVzID0gKHRlbXBsYXRlPy5wcm9wZXJ0aWVzIHx8IFtdKS5yZWR1Y2UoKHRydW5rLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgICBbbmFtZSBhcyBzdHJpbmddOiB0aGlzLm1hcEJvb2xlYW5JZkFwbGljYWJsZSh2YWx1ZSBhcyBhbnkpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgIC4uLih0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyA/IG9iamVjdCA6IHsgb2JqZWN0IH0pLFxuICAgICAgICAgIC4uLnF1ZXJpZXNSZXN1bHQsXG4gICAgICAgICAgLi4udGVtcGxhdGVQcm9wZXJ0aWVzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0ZW1wbGF0ZS5zY3JpcHQgJiYgdGVtcGxhdGUuc2NyaXB0LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW5jeUZvcm1hdCA9IHRlbXBsYXRlLnByb3BlcnRpZXM/LmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnY3VycmVuY3lGb3JtYXQnKT8udmFsdWUgfHwgJzEuMi0yJztcbiAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGVtcGxhdGUucHJvcGVydGllcz8uZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdkYXRlRm9ybWF0Jyk/LnZhbHVlIHx8ICdEL01NTS9ZWVlZJztcbiAgICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG1vbWVudCh2YWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpIDogdmFsdWU7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgRnVuY3Rpb24oYHJldHVybiAke3RlbXBsYXRlLnNjcmlwdH1gKSgpO1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IHRyYW5zZm9ybSh7XG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgdXRpbHM6IHtcbiAgICAgICAgICAgICAgbG9kYXNoOiBfLFxuICAgICAgICAgICAgICBjdXJyZW5jeTogKHZhbHVlOiBhbnkpID0+IG5ldyBDdXJyZW5jeVBpcGUoJ2VuLVVTJykudHJhbnNmb3JtKHZhbHVlLCAnVVNEJywgJ3N5bWJvbCcsIGN1cnJlbmN5Rm9ybWF0KSxcbiAgICAgICAgICAgICAgZGF0ZTogZm9ybWF0RGF0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUb0RheTogZm9ybWF0RGF0ZShEYXRlLm5vdygpIGFzIGFueSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCFzaG91bGRQcmV2ZW50RG93bmxvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkodHJhbnNmb3JtZWREYXRhKV0pO1xuICAgICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChibG9iLCAnZGF0YS5qc29uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQXR0YWNobWVudHMkKHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcltdPiB7XG4gICAgY29uc3QgYXR0YWNobWVudElkcyA9ICh0ZW1wbGF0ZS5hdHRhY2htZW50cz8ubWFwKCh7IGlkIH0pID0+IGlkKS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW10pID8/IFtdO1xuXG4gICAgaWYgKCFhdHRhY2htZW50SWRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oYXR0YWNobWVudElkcy5tYXAoaWQgPT4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlLmdldEF0dGFjaG1lbnRGaWxlKGlkLCB0cnVlKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZlF1ZXJ5UmVzdWx0ID0gPFQ+KGxpbWl0OiBudW1iZXIpID0+XG4gICAgbWFwKChyZWNvcmRzOiBUW10pID0+IHtcbiAgICAgIGlmICghcmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHsgX3Jlc3VsdDogJ05vIFJlY29yZHMgRm91bmQnIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChsaW1pdCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcmVjb3Jkc1swXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgfSk7XG5cbiAgcHJpdmF0ZSBtYXBCb29sZWFuSWZBcGxpY2FibGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG5cbiAgcHJpdmF0ZSBxdWVyeU9iamVjdChcbiAgICB7IG9iamVjdE5hbWUsIHJlc3VsdE9iamVjdE5hbWUsIGZpZWxkcywgc3RhdGVtZW50IH06IFRlbXBsYXRlUXVlcnksXG4gICAgeyBwcm9wZXJ0aWVzIH06IEFueVdpdGhQcm9wZXJ0aWVzLFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHBhdHRlcm5MaW1pdCA9IC8oXFxzKmxpbWl0XFxzXFxkKikvaTtcbiAgICBsZXQgbGltaXQgPSAxO1xuICAgIGlmIChzdGF0ZW1lbnQgJiYgcGF0dGVybkxpbWl0LnRlc3Qoc3RhdGVtZW50KSkge1xuICAgICAgY29uc3QgbGltaXRTdHIgPSBzdGF0ZW1lbnQ/Lm1hdGNoKHBhdHRlcm5MaW1pdCk/LlsxXT8udHJpbSgpLnN1YnN0cmluZyg1KS50cmltKCk7XG4gICAgICBpZiAobGltaXRTdHIpIHtcbiAgICAgICAgbGltaXQgPSBOdW1iZXIucGFyc2VJbnQobGltaXRTdHIsIDEwKTtcbiAgICAgIH1cbiAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC5yZXBsYWNlKHBhdHRlcm5MaW1pdCwgJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdmVkU3RhdGVtZW50ID0gc3RhdGVtZW50XG4gICAgICA/IFN0cmluZ1V0aWxzLmZpbGxQbGFjZWhvbGRlcnMoc3RhdGVtZW50LCBwcm9wZXJ0aWVzLCAvOlxccyooXFx3W1xcd1xcZF8uXSspL2kpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHNlYXJjaFJlcXVlc3QgPSB7XG4gICAgICBza2lwOiAwLFxuICAgICAgY291bnQ6IGxpbWl0LFxuICAgICAgcmF3Q29uZGl0aW9uOiByZXNvbHZlZFN0YXRlbWVudCxcbiAgICAgIC4uLihmaWVsZHM/Lmxlbmd0aCAmJiAhIWZpZWxkc1swXSAmJiB7IGZpZWxkcyB9KSxcbiAgICB9IGFzIFNlYXJjaFJlcXVlc3Q7XG5cbiAgICByZXR1cm4gdGhpcy5zYWxlc2ZvcmNlQXBpU2VydmljZS5xdWVyeShzZWFyY2hSZXF1ZXN0LCBvYmplY3ROYW1lKS5waXBlKFxuICAgICAgdGhpcy5tYXBTZlF1ZXJ5UmVzdWx0KGxpbWl0KSxcbiAgICAgIG1hcCh2YWx1ZSA9PiAoeyBbcmVzdWx0T2JqZWN0TmFtZV06IHZhbHVlIH0pKSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
@@ -871,9 +871,6 @@ class DocumentTemplatesApiService {
|
|
871
871
|
this.fileDownloadService.processDownload(response);
|
872
872
|
}), map(response => response.body || response));
|
873
873
|
}
|
874
|
-
/**
|
875
|
-
* @deprecated
|
876
|
-
*/
|
877
874
|
mergeDocuments(document, attachments) {
|
878
875
|
const body = new FormData();
|
879
876
|
attachments.forEach(attachment => {
|
@@ -885,6 +882,8 @@ class DocumentTemplatesApiService {
|
|
885
882
|
});
|
886
883
|
}
|
887
884
|
generateDocumentV2(body, quoteId, isAsync) {
|
885
|
+
var _a;
|
886
|
+
body['docgenURL'] = (_a = window.VELO_DOCGEN_API) !== null && _a !== void 0 ? _a : '';
|
888
887
|
const params = {};
|
889
888
|
if (isAsync) {
|
890
889
|
params['async'] = 'true';
|
@@ -933,9 +932,6 @@ class DocumentTemplatesApiService {
|
|
933
932
|
*/
|
934
933
|
return of(Object.assign(Object.assign({}, (typeof object === 'object' ? object : { object })), templateProperties));
|
935
934
|
}
|
936
|
-
/**
|
937
|
-
* @deprecated
|
938
|
-
*/
|
939
935
|
generateDocument(template, object, params = {}) {
|
940
936
|
const documentData$ = this.generateDocumentData(template, object, Object.assign(Object.assign({}, params), { shouldPreventDownload: true }));
|
941
937
|
return zip(this.getTemplateFile(template.id), documentData$, this.resolveAttachments$(template)).pipe(switchMap(([templateFile, data, attachments]) => {
|