@churchillliving/se-ui-toolkit 6.54.684 → 6.54.685
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.
|
@@ -355,7 +355,7 @@ export class FormService {
|
|
|
355
355
|
const link = originalUrl;
|
|
356
356
|
if (originalUrl && params) {
|
|
357
357
|
Object.keys(params).forEach((key) => {
|
|
358
|
-
if (originalUrl.includes('{{' + key + '}}') &&
|
|
358
|
+
if (originalUrl.includes('{{' + key + '}}') && !params[key].toString()?.includes('{')) {
|
|
359
359
|
originalUrl = originalUrl.replace('{{' + key + '}}', params[key]);
|
|
360
360
|
}
|
|
361
361
|
});
|
|
@@ -625,4 +625,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
625
625
|
providedIn: 'root',
|
|
626
626
|
}]
|
|
627
627
|
}], ctorParameters: () => [{ type: i1.HyperlinkService }, { type: i2.DropdownService }, { type: i3.AlertService }, { type: i4.RequestService }, { type: i5.Router }, { type: i0.NgZone }] });
|
|
628
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQU9aLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBS3JFLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFHakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBS3RDLE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxNQUFjO1FBTGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmpCLG9CQUFlLEdBQVcsS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQVFyQyxDQUFDO0lBQ0wsVUFBVTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTthQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQ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LENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFZLEVBQUUsRUFBRTtZQUMxRyxJQUFHLFFBQVEsRUFBRSxNQUFNLEVBQUMsQ0FBQztnQkFDbkIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQkFDcEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQztZQUFBLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7a0lBM3FCVSxXQUFXO3NJQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRVZhbGlkYXRvcixcbiAgSUZvcm1GaWVsZCxcbiAgRUZvcm1Db250cm9sLFxuICBBZGRGb3JtRmllbGQsXG4gIElTZXRGaWx0ZXIsXG4gIElEcm9wRG93blJlcXVlc3QsXG4gIElMaXN0RmlsdGVyLFxuICBJUmVwb3J0QnRuLFxuICBJRHluYW1pY0Zvcm0sXG4gIEVIeXBlcmxpbmssXG59IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcbmltcG9ydCB7IEVHcmlkU29ydERpcmVjdGlvbiwgSUdyaWRTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQubW9kZWwnO1xuaW1wb3J0IHsgSHlwZXJsaW5rU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2h5cGVybGluay5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4vYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBEcm9wZG93blNlcnZpY2UgfSBmcm9tICcuL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZGVscy9jb21tb24ubW9kZWwnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtU2VydmljZSB7XG4gIHB1YmxpYyBmaWVsZEZvY3VzZWRPdXQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNDb21wb25lbnRFeGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh5cGVybGlua1NlcnZpY2U6IEh5cGVybGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVxdWVzdFNlcnZpY2U6IFJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7IH1cbiAgc2V0VG9vbHRpcCgpIHtcbiAgICB0aGlzLm5nWm9uZS5vblN0YWJsZVxuICAgIC5waXBlKHRha2UoMSkpIC8vIEVtaXQgb25seSBvbmNlIHdoZW4gdGhlIHpvbmUgYmVjb21lcyBzdGFibGVcbiAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKVxuICAgIH0pO1xufVxuXG4gIGdldE1hdGNoZWRSb3V0ZUJhc2VkT25Db21wb25lbnQoY29tcG9uZW50OiBhbnkpIHtcbiAgICBsZXQgcm91dGU6IGFueSA9IHt9O1xuICAgIHRoaXMucm91dGVyLmNvbmZpZy5mb3JFYWNoKChwYXJlbnRSb3V0ZSkgPT4ge1xuICAgICAgaWYgKHBhcmVudFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgIHJvdXRlID0gcGFyZW50Um91dGU7XG4gICAgICB9IGVsc2UgaWYgKHBhcmVudFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIHBhcmVudFJvdXRlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkUm91dGUpID0+IHtcbiAgICAgICAgICBpZiAoY2hpbGRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICAgICAgcm91dGUgPSBjaGlsZFJvdXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbnNldFRvb2x0aXBFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCBzaG93VG9vbHRpcENvbmRpdGlvbmFsbHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRTZWxlY3RvciA9IHRoaXMuZ2V0QXR0cmlidXRlKFwiZGF0YS10aXRsZS1lbGVtZW50XCIpO1xuICAgICAgICBsZXQgdG9vbHRpcEVsZW1lbnRzID0gW11cbiAgICAgICAgaWYgKGVsZW1lbnRTZWxlY3RvciA9PSAnc2VsZicpIHtcbiAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50cy5wdXNoKHRoaXMpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMgPSB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoZWxlbWVudFNlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICB0b29sdGlwRWxlbWVudHMuZm9yRWFjaCh0b29sdGlwRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERpc3BsYXkgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0b29sdGlwRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShcImRpc3BsYXlcIik7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxEaXNwbGF5LmluY2x1ZGVzKCdpbmxpbmUnKSkge1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50Lm9ubW91c2VsZWF2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBvcmlnaW5hbERpc3BsYXk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdGl0bGVFbGVtZW50ID0gdG9vbHRpcEVsZW1lbnQubm9kZU5hbWUgPT0gXCJJTlBVVFwiIHx8IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiVEVYVEFSRUFcIiA/IHRvb2x0aXBFbGVtZW50LnBhcmVudEVsZW1lbnQgOiB0b29sdGlwRWxlbWVudDtcbiAgICAgICAgICAgIGlmICh0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCA+IHRvb2x0aXBFbGVtZW50LmNsaWVudFdpZHRoICYmIHRvb2x0aXBFbGVtZW50LnNjcm9sbFdpZHRoICE9PSB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCArIDEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSAnJ1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdG9vbHRpcEVsZW1lbnQudmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRpdGxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnLCB0aXRsZSk7XG4gICAgICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBmdW5jdGlvbigpIHsgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpIH0sIHtvbmNlIDogdHJ1ZX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXRpdGxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS10aXRsZS1lbGVtZW50XTpub3QoW2RhdGEtdGl0bGVdKVwiKTtcbiAgICBBcnJheS5mcm9tKGVsZW1lbnRzKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHNob3dUb29sdGlwQ29uZGl0aW9uYWxseSlcbiAgICB9KTtcbn1cblxuICBjaGVja1ZhbGlkaXR5KGZvcm1GaWVsZHM6IElGb3JtRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGZvcm1GaWVsZHMubWFwKChpdGVtOiBJRm9ybUZpZWxkKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWxpZGF0aW9ucyAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICBsZXQgaXRlbVZhbHVlID1cbiAgICAgICAgICBpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQgJiZcbiAgICAgICAgICBpdGVtLnZhbHVlICYmXG4gICAgICAgICAgdHlwZW9mIGl0ZW0udmFsdWUgPT09ICdvYmplY3QnXG4gICAgICAgICAgICA/IGl0ZW0udmFsdWUudmFsdWVcbiAgICAgICAgICAgIDogaXRlbS52YWx1ZTtcbiAgICAgICAgLy8gaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmIGl0ZW0udmFsdWUgICYmIHR5cGVvZihpdGVtLnZhbHVlKSA9PT0gJ29iamVjdCcpe1xuICAgICAgICAvLyAgIGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlLnZhbHVlO1xuICAgICAgICAvLyAgfVxuICAgICAgICBpdGVtLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBpdGVtLmlzdmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0udmFsaWRhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBtaW5NYXhWYWxpZERhdGUgPSB1dGlsaXRpZXMuY2FsZW5kYXJNaW5NYXhWYWx1ZShpdGVtLCBpdGVtVmFsdWUsIGkpO1xuICAgICAgICAgIGNvbnN0IHZhbGlkID1cbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnMgJiYgdHlwZW9mIGl0ZW0ubGFiZWwgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgID8gaXRlbS5sYWJlbC5uYW1lXG4gICAgICAgICAgICAgIDogaXRlbS5sYWJlbDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5SRVFVSVJFRCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgIWl0ZW0uaGlkZGVuICYmXG4gICAgICAgICAgICB2YWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9IGl0ZW1WYWx1ZVxuICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgJHt2YWxpZH0gaXMgcmVxdWlyZWRgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1JTkxFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUFYTEVOR1RIICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn0gY2hhcmFjdGVyc2BcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5JTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdtaW5pbXVtJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNaW5pbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWElNVU0gJiZcbiAgICAgICAgICAgIGlzVmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkNBTEVOREFSKXtcbiAgICAgICAgICAgICAgaXNWYWxpZCA9IG1pbk1heFZhbGlkRGF0ZSA9PT0gJ2dyZWF0ZXInID8gdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YCkgOiB0cnVlO1xuICAgICAgICAgICAgfWVsc2UgaWYoaXRlbVZhbHVlID4gaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUEFUVEVSTiAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaChpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5OVU1FUklDICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oMHxbLSgpMS05XVxcZCopJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8WzEtOV1cXGQqKSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyICR7aXRlbS52YWxpZGF0aW9uc1tpXS50eXBlfSBmb3IgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBIT05FICYmXG4gICAgICAgICAgICAhaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUudG9TdHJpbmcoKS5tYXRjaCgvXig/PS4qWzAtOV0pWy0oKTAtOVxccyt4XSskLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuREVDSU1BTCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZT8udG9TdHJpbmcoKT8ubWF0Y2goL14oMHxbLSgpMS05XVxcZCopKFxcLlxcZCspPyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKC9eKDB8WzEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5FTUFJTCAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS5tYXRjaCgvXlthLXpBLVowLTkuXy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsNn0kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSAmJiBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGU9PUVWYWxpZGF0b3IuTUFYT1BUSU9OUyAmJiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgdmFyIG1heE9wdGlvbnM9aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uO1xuICAgICAgICAgICAgaXNWYWxpZD1pdGVtVmFsdWUubGVuZ3RoPm1heE9wdGlvbnM/dGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYE1heGltdW0gdmFsdWVzIGZvciAke3ZhbGlkfSBpcyAke21heE9wdGlvbnN9YCk6dHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgc2V0RXJyb3JNZXNzYWdlKGl0ZW06IElGb3JtRmllbGQsIGVycm9yTWVzc2FnZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaXRlbS5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XG4gICAgaXRlbS5pc3ZhbGlkID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYWRkRm9ybUZpZWxkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGlmICghZmllbGRJbmZvLmxhYmVsKSB7XG4gICAgICBmaWVsZEluZm8ubGFiZWwgPSBmaWVsZEluZm8uZmllbGQ7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1GaWVsZDogYW55ID0ge1xuICAgICAgbGFiZWw6IGZpZWxkSW5mby5sYWJlbCxcbiAgICAgIGZpZWxkOiBmaWVsZEluZm8uZmllbGQsXG4gICAgICBkaXNwbGF5RmllbGQ6IGZpZWxkSW5mby5kaXNwbGF5RmllbGQsXG4gICAgICBjb250cm9sOiBmaWVsZEluZm8uY29udHJvbCxcbiAgICAgIHNob3dPcHRpb246IGZpZWxkSW5mby5zaG93T3B0aW9uLFxuICAgICAgY29sdW1uOiBmaWVsZEluZm8uY29sdW1uLFxuICAgICAgcm93OiBmaWVsZEluZm8ucm93LFxuICAgICAgbWludXRlc0ludGVydmFsOiBmaWVsZEluZm8ubWludXRlc0ludGVydmFsLFxuICAgICAgdmFsdWU6IGZpZWxkSW5mby52YWx1ZSxcbiAgICAgIGZvcm1hdDogZmllbGRJbmZvLmZvcm1hdCxcbiAgICAgIGhpZGRlbjogZmllbGRJbmZvLmhpZGRlbixcbiAgICAgIHBlcm1pc3Npb25zOiBmaWVsZEluZm8ucGVybWlzc2lvbnMsXG4gICAgICB2YWxpZGF0aW9uczogZmllbGRJbmZvLnZhbGlkYXRpb25zLFxuICAgICAgaWQ6IGZpZWxkSW5mby5pZCxcbiAgICAgIGh5cGVybGluazogZmllbGRJbmZvLmh5cGVybGluayxcbiAgICAgIGRhdGE6IGZpZWxkSW5mby5kYXRhLFxuICAgICAgbG9va3VwQ29udHJvbDogZmllbGRJbmZvLmxvb2t1cENvbnRyb2wsXG4gICAgICBjb21wb25lbnRDb250cm9sOiBmaWVsZEluZm8uY29tcG9uZW50Q29udHJvbCxcbiAgICAgIG9wdGlvbkxhYmVsOiBmaWVsZEluZm8ub3B0aW9uTGFiZWwsXG4gICAgICBvcHRpb25WYWx1ZTogZmllbGRJbmZvLm9wdGlvblZhbHVlLFxuICAgICAgc2F2ZUFzU3RyaW5nOiBmaWVsZEluZm8uc2F2ZUFzU3RyaW5nLFxuICAgICAgc2hvd0FsbFZhbHVlOiBmaWVsZEluZm8uc2hvd0FsbFZhbHVlLFxuICAgICAgb25DbGljazogZmllbGRJbmZvLm9uQ2xpY2ssXG4gICAgICBvblJldHVybjogZmllbGRJbmZvLm9uUmV0dXJuLFxuICAgICAgb25Gb2N1c091dDogZmllbGRJbmZvLm9uRm9jdXNPdXQsXG4gICAgICBvbkNoYW5nZTogZmllbGRJbmZvLm9uQ2hhbmdlLFxuICAgICAgdGFibGVzOiBmaWVsZEluZm8udGFibGVzLFxuICAgICAgZGlzYWJsZWQ6IGZpZWxkSW5mby5kaXNhYmxlZCxcbiAgICAgIGRpc2FibGVkVGV4dDogZmllbGRJbmZvLmRpc2FibGVkVGV4dCxcbiAgICAgIHRpbWVPbmx5OiBmaWVsZEluZm8udGltZU9ubHksXG4gICAgICBpc1Bhc3N3b3JkOiBmaWVsZEluZm8uaXNQYXNzd29yZCxcbiAgICAgIHRleHRUeXBlOiBmaWVsZEluZm8udGV4dFR5cGUsXG4gICAgICBtb250aE9ubHk6IGZpZWxkSW5mby5tb250aE9ubHksXG4gICAgIG1pbkRhdGU6ZmllbGRJbmZvLm1pbkRhdGUsIFxuICAgICBtYXhEYXRlOmZpZWxkSW5mby5tYXhEYXRlLFxuICAgICAgc2hvd1RpbWU6IGZpZWxkSW5mby5zaG93VGltZSwgLy8gdG8gc2hvdyB0aW1lIGFzIHdlbGwgaW4gY2FsZW5kYXIgZm9ybSBmaWVsZFxuICAgICAgaGVpZ2h0OiBmaWVsZEluZm8uaGVpZ2h0LFxuICAgICAgc2hvd0JvdHRvbUJvcmRlcjogZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIsXG4gICAgICBhbGxvd1NlYXJjaDogZmllbGRJbmZvLmFsbG93U2VhcmNoLFxuICAgICAgc2VsZWN0TXVsdGlwbGVGaWxlczogZmllbGRJbmZvLnNlbGVjdE11bHRpcGxlRmlsZXMsXG4gICAgICBTZXRmaWxlVHlwZXM6IGZpZWxkSW5mby5TZXRmaWxlVHlwZXMsXG4gICAgICBpY29uOiBmaWVsZEluZm8uaWNvbixcbiAgICAgIGNvbG9yOiBmaWVsZEluZm8uY29sb3IsXG4gICAgICBjYXJkOiBmaWVsZEluZm8uY2FyZCxcbiAgICAgIHVuaXF1ZUtleTogZmllbGRJbmZvLnVuaXF1ZUtleSxcbiAgICAgIHBhdGhTeXN0ZW1Db25maWc6IGZpZWxkSW5mby5wYXRoU3lzdGVtQ29uZmlnLFxuICAgICAgYXp1cmVDb250YWluZXI6IGZpZWxkSW5mby5henVyZUNvbnRhaW5lcixcbiAgICAgIGNsYXNzOiBmaWVsZEluZm8uY2xhc3MsXG4gICAgICBob3ZlckRhdGE6IGZpZWxkSW5mby5ob3ZlckRhdGEsXG4gICAgICBvcGVuSW5OZXdUYWI6IGZpZWxkSW5mby5vcGVuSW5OZXdUYWIsXG4gICAgICBpc0F6dXJlVXBsb2FkOiBmaWVsZEluZm8uaXNBenVyZVVwbG9hZCxcbiAgICAgIGNvbG9yRm9udDogZmllbGRJbmZvLmNvbG9yRm9udFxuICAgIH07XG5cbiAgICByZXR1cm4gZm9ybUZpZWxkO1xuICB9XG5cbiAgYWRkQ2hlY2tib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DSEVDS0JPWDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5JTlBVVDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRFZGl0b3IoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5URVhUX0VESVRPUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZERpc3BsYXlGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLklOUFVUO1xuICAgIGZpZWxkSW5mby5kaXNhYmxlZCA9IHRydWU7XG4gICAgZmllbGRJbmZvLnNob3dCb3R0b21Cb3JkZXIgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTnVtZXJpY1RleHRib3goZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OVU1FUklDO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkU3BhY2VGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU1BBQ0VSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkTmV3TGluZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQlJFQUtfTElORTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFRleHRBcmVhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVEFSRUE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgXG4gICAvLyBBZGRpbmcgUmVwb3J0IGJ1dHRvbiBmb3IgRHluYW1pY0Zvcm1cbiAgIGFkZFJlcG9ydEJ0bihmaWVsZEluZm86IElSZXBvcnRCdG4pIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5SRVBPUlQ7XG4gICAgcmV0dXJuIGZpZWxkSW5mbztcbiAgfVxuXG4gIGFkZE5vdGVGaWVsZChmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk5PVEVfRklFTEQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkU2VsZWN0QnV0dG9ucyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFTEVDVEJVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuICAvLyByZWNlaXZlIExpbmtJZCBhbmQgUGFyYW1zXG4gIGdldEh5cGVybGlua1VybChcbiAgICBsaW5rSWQ6IHN0cmluZyxcbiAgICBwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZm9ybUZpZWxkOiBJRm9ybUZpZWxkID0ge1xuICAgICAgaHlwZXJsaW5rOiB7IGxpbmtJZDogbGlua0lkLCBwYXJhbXM6IHBhcmFtcyB9LFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYWRkSHlwZXJsaW5rKGZvcm1GaWVsZCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmh5cGVybGluaz8ubGluaztcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEh5cGVybGluayhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IGFueSB7XG4gICAgY29uc3QgdXNlclNldHRpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlVzZXJTZXR0aW5nXCIpO1xuICAgIGlmICh1c2VyU2V0dGluZykge1xuICAgICAgY29uc3QgcGFyc2VTZXR0aW5nID0gSlNPTi5wYXJzZSh1c2VyU2V0dGluZyk7XG5cbiAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy50YXJnZXRVc2VVc2VyUHJlZikge1xuICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLnRhcmdldCA9IHBhcnNlU2V0dGluZz8udmFsdWUgPT09IFwib3BlbkxpbmtJbkN1cnJlbnRUYWJcIiA/IEVIeXBlcmxpbmsuU0VMRiA6IEVIeXBlcmxpbmsuQkxBTks7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkSW5mby5oeXBlcmxpbmsgJiYgZmllbGRJbmZvLmh5cGVybGluay5jb21wb25lbnQpIHtcbiAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oeXBlcmxpbmtTZXJ2aWNlLmJ1aWxkVXJsKFxuICAgICAgICBmaWVsZEluZm8/Lmh5cGVybGluaz8ubGlua0lkXG4gICAgICApLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGZpZWxkSW5mbz8uaHlwZXJsaW5rPy5wYXJhbXM7XG4gICAgICAgIGxldCBvcmlnaW5hbFVybCA9IHRoaXMuaHlwZXJsaW5rU2VydmljZS5zZXRVcmwocGFyYW1zLCByZXNbMF0pO1xuICAgICAgICBjb25zdCBsaW5rID0gb3JpZ2luYWxVcmw7XG4gICAgICAgIGlmIChvcmlnaW5hbFVybCAmJiBwYXJhbXMpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJsLmluY2x1ZGVzKCd7eycgKyBrZXkgKyAnfX0nKSAmJiBwYXJhbXNba2V5XSAhPSBudWxsICYmICFwYXJhbXNba2V5XS50b1N0cmluZygpPy5pbmNsdWRlcygneycpKSB7XG4gICAgICAgICAgICAgIG9yaWdpbmFsVXJsID0gb3JpZ2luYWxVcmwucmVwbGFjZSgne3snICsga2V5ICsgJ319JywgcGFyYW1zW2tleV0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGRJbmZvLmh5cGVybGluaz8ubGlua0lkICYmIGZpZWxkSW5mby5oeXBlcmxpbmsubGlua0lkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmaWVsZEluZm8uaHlwZXJsaW5rLmxpbmsgPSBvcmlnaW5hbFVybDtcbiAgICAgICAgfVxuICAgICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICAgIGxldCBvYmo6IGFueSA9IHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICAgIG9ialsnb3JpZ25hbExpbmsnXSA9IGxpbms7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRDYWxlbmRhcihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBTEVOREFSO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gYWRkIEF1dG9Db21wbGV0ZSBmb3IgRm9ybVxuICBhZGRBdXRvQ29tcGxldGUoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5BVVRPQ09NUExFVEU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBTZWFyY2ggQXV0b0NvbXBsZXRlIERhdGEgZm9yIGZvcm1cbiAgZ2V0QXV0b0NvbXBsZXRlRGF0YShmb3JtRmllbGQ/OiBhbnksIHVuaXF1ZUtleT86IHN0cmluZywgZmlsdGVycz86IGFueVtdLCBzZWFyY2g6IHN0cmluZyA9ICcnKTogYW55IHtcbiAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlLmdldDxhbnlbXSwgYW55PignL0RhdGEvRmV0Y2gnLCB7IHVuaXF1ZUtleTogdW5pcXVlS2V5LCBmaWx0ZXJzfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KT0+e1xuICAgICAgaWYoc2VhcmNoKXtcbiAgICAgICBsZXQgZXhpc3RJblJlY29yZDogYm9vbGVhbiA9IHJlc3BvbnNlLnJlY29yZHMuc29tZSgocmVjb3JkOiBhbnkpPT4gcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdICYmIHJlY29yZFtmb3JtRmllbGQuZGlzcGxheUZpZWxkXT8udG9TdHJpbmcoKT8udG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoPy50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgaWYoIWV4aXN0SW5SZWNvcmQpe1xuICAgICAgICAgIHJlc3BvbnNlLnJlY29yZHMudW5zaGlmdCAoe1tmb3JtRmllbGQuZGlzcGxheUZpZWxkXTogc2VhcmNofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGZvcm1GaWVsZC5vcHRpb25MYWJlbCAmJiBmb3JtRmllbGQub3B0aW9uVmFsdWUpIHtcbiAgICAgICAgZm9ybUZpZWxkLmRhdGEgPSByZXNwb25zZS5yZWNvcmRzPy5tYXAoKHJlY29yZDogYW55KSA9PiAoe1xuICAgICAgICAgIGlkOiByZWNvcmRbZm9ybUZpZWxkPy5vcHRpb25WYWx1ZV0sXG4gICAgICAgICAgbGFiZWw6IHJlY29yZFtmb3JtRmllbGQ/Lm9wdGlvbkxhYmVsXVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtRmllbGQuZGF0YSA9IFsuLi5yZXNwb25zZS5yZWNvcmRzXVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkRHJvcGRvd24oZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkRST1BET1dOO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGxldCBzb3J0czpJR3JpZFNvcnRbXSA9IGRyb3BEb3duUHJvcC5zb3J0c1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMsIHNvcnRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkLCB1bmlxdWVLZXk6IHN0cmluZywgdmFsdWVQcm9wOiBzdHJpbmcsIGxhYmVsUHJvcDogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSwgc29ydHM6YW55W109W10pIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93blNlcnZpY2VcbiAgICAgIC5zZXREcm9wRG93bkxpc3QoXG4gICAgICAgIHVuaXF1ZUtleSxcbiAgICAgICAgdmFsdWVQcm9wLFxuICAgICAgICBsYWJlbFByb3AsXG4gICAgICAgIGZpbHRlcnMsIFxuICAgICAgICBzb3J0c1xuICAgICAgKVxuICAgICAgLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIGZpZWxkSW5mby5kYXRhID0gcmVzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkTG9va1VwKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZEhvdmVyRGF0YShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGR7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSE9WRVJEQVRBO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZERpYWxvZyhmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIHJldHVybiB0aGlzLmFkZExvb2tVcChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkQ29tcG9uZW50KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkSGVhZGVyKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNFQ1RJT05fSEVBREVSO1xuICAgIGZpZWxkSW5mby5jbGFzcyA9ICdmb3JtLWhlYWRlcic7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRNdWx0aVNlbGVjdChmaWVsZEluZm86IElGb3JtRmllbGQsIGRyb3BEb3duUHJvcD86IElEcm9wRG93blJlcXVlc3QpOiBhbnkge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLk1VTFRJU0VMRUNUO1xuICAgIGlmIChkcm9wRG93blByb3ApIHtcbiAgICAgIGxldCB1bmlxdWVLZXkgPSBkcm9wRG93blByb3AudW5pcXVlS2V5O1xuICAgICAgbGV0IHZhbHVlUHJvcCA9IGRyb3BEb3duUHJvcC52YWx1ZVByb3A7XG4gICAgICBsZXQgbGFiZWxQcm9wID0gZHJvcERvd25Qcm9wLmxhYmVsUHJvcDtcbiAgICAgIGxldCBmaWx0ZXJzOiBJU2V0RmlsdGVyW10gPSBkcm9wRG93blByb3AuZmlsdGVycyAmJiBkcm9wRG93blByb3AuZmlsdGVycy5sZW5ndGggPiAwID8gZHJvcERvd25Qcm9wLmZpbHRlcnMgOiBbXTtcbiAgICAgIGlmICh1bmlxdWVLZXkgJiYgdmFsdWVQcm9wICYmIGxhYmVsUHJvcCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcm9wZG93bkRhdGEoZmllbGRJbmZvLCB1bmlxdWVLZXksIHZhbHVlUHJvcCwgbGFiZWxQcm9wLCBmaWx0ZXJzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRJbmZvLm9wdGlvbkxhYmVsID0gZmllbGRJbmZvLm9wdGlvbkxhYmVsID8gZmllbGRJbmZvLm9wdGlvbkxhYmVsIDogJ2xhYmVsJztcbiAgICAgIGZpZWxkSW5mby5vcHRpb25WYWx1ZSA9IGZpZWxkSW5mby5vcHRpb25WYWx1ZSA/IGZpZWxkSW5mby5vcHRpb25WYWx1ZSA6ICd2YWx1ZSc7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBhZGRGaWxlVXBsb2FkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkZJTEVfVVBMT0FEO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgYWRkRGlzcGxheUZpbGUoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRElTUExBWV9GSUxFO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gQWRkaW5nIE9uQ2xpY2sgQnV0dG9uIEZ1bmN0aW9uIGZvciBEeW5hbWljRm9ybVxuICBhZGRCdXR0b24oZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQUREX0JVVFRPTjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIEFkZGluZyBTd2l0Y2ggRnVuY3Rpb24gZm9yIER5bmFtaWNGb3JtXG4gIGFkZFN3aXRjaChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TV0lUQ0g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBzdGFydCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuICBhZGRDYXJkKGZpZWxkSW5mbzogSUZvcm1GaWVsZCwgY2FyZERhdGE/OiBJTGlzdEZpbHRlcik6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkNBUkQ7XG4gICAgaWYgKGNhcmREYXRhICYmIGNhcmREYXRhLnVuaXF1ZUtleSkge1xuICAgICAgaWYoY2FyZERhdGEuc29ydHM/Lmxlbmd0aCA+IDApe1xuICAgICAgICBjYXJkRGF0YS5zb3J0cy5mb3JFYWNoKChyZXMpID0+e1xuICAgICAgICByZXMuZGlyZWN0aW9uID0gcmVzLmRpcmVjdGlvbiA/IHJlcy5kaXJlY3Rpb24gOiBFR3JpZFNvcnREaXJlY3Rpb24uQVNDO1xuICAgICAgICB9KTtcbiAgICAgIH0gICBcbiAgICAgIHJldHVybiB0aGlzLmdldENhcmREYXRhKGZpZWxkSW5mbywgY2FyZERhdGEudW5pcXVlS2V5LCBjYXJkRGF0YS5maWx0ZXJzLCBjYXJkRGF0YS5zb3J0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGdldENhcmREYXRhKGZpZWxkSW5mbzogYW55LCB1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldENhcmRMaXN0KHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMpXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmNhcmQuZGF0YSA9IHJlcy5yZWNvcmRzO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFwaUVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIGxvYWQgY29tcG9uZW50IG9uIGZvcm1cbiAgc2V0QWRkQ29tcG9uZW50RGF0YSh7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sIGlkOiBzdHJpbmcsIHZhbHVlOiBhbnksIGxvYWRDb21wb25lbnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ09NUE9ORU5UICYmIGZpZWxkLmNvbXBvbmVudENvbnRyb2wgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbD8uaWQgPT09IGlkKSB7XG4gICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmNvbXBvbmVudENvbnRyb2wuZGF0YSA9IHsgLi4uZmllbGQuY29tcG9uZW50Q29udHJvbD8uZGF0YSwgW2tleV06IHZhbHVlW2tleV0gfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1dGlsaXRpZXMuY2hhbmdlRHluYW1pY0Zvcm1TdGF0ZShpZCwgZmllbGQuY29tcG9uZW50Q29udHJvbC5kYXRhLCBsb2FkQ29tcG9uZW50KTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCB2YWx1ZVxuICAvLyBzZXRGb3JtRmllbGRWYWx1ZShcbiAgLy8gICB7IGZvcm1TZWN0aW9ucyB9OiBJRHluYW1pY0Zvcm0sXG4gIC8vICAgZmllbGQ6IHN0cmluZyxcbiAgLy8gICB2YWx1ZTogYW55LFxuICAvLyAgIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSAnJ1xuICAvLyApIHtcbiAgLy8gICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgLy8gICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZvcm1GaWVsZCkgPT4ge1xuICAvLyAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAvLyAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gIC8vICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9KTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHNldEZvcm1GaWVsZFZhbHVlKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnXG4gICkge1xuICAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlRmllbGRWYWx1ZSA9IChmb3JtRmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgIGlmIChkaXNwbGF5VGV4dCAmJiBkaXNwbGF5VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB7IHRleHQ6IGRpc3BsYXlUZXh0LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybUZpZWxkLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzZWN0aW9uLmZpZWxkcz8uZm9yRWFjaCh1cGRhdGVGaWVsZFZhbHVlKTtcbiAgICAgIHNlY3Rpb24uaGVhZGVyRmllbGRzPy5mb3JFYWNoKHVwZGF0ZUZpZWxkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc2V0IGZvcm1maWVsZCBwcm9wZXJ0eVxuICBzZXRGb3JtRmllbGRQcm9wKFxuICAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgICBmaWVsZDogc3RyaW5nLFxuICAgIHByb3BzOiBJRGljdGlvbmFyeVtdXG4gICkge1xuICAgIHJldHVybiBmb3JtU2VjdGlvbnM/Lm1hcCgoc2VjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXR1cm4gc2VjdGlvbi5maWVsZHMubWFwKChmb3JtRmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZm9ybUZpZWxkLmZpZWxkPy50b0xvd2VyQ2FzZSgpID09PSBmaWVsZD8udG9Mb3dlckNhc2UoKSkgfHxcbiAgICAgICAgICAoZm9ybUZpZWxkLmxhYmVsICYmIGZvcm1GaWVsZC5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gcHJvcHMubWFwKChwcm9wOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRmllbGQuaGFzT3duUHJvcGVydHkocHJvcC5uYW1lKSkge1xuICAgICAgICAgICAgICBpZiAocHJvcC5uYW1lID09PSAnbGFiZWwnICYmIHR5cGVvZiBmb3JtRmllbGQubGFiZWwgPT09ICdvYmplY3QnICYmICFwcm9wLm92ZXJyaWRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3A/LnZhbHVlPy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdLm5hbWUgPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gKGZvcm1GaWVsZFtwcm9wLm5hbWVdID0gcHJvcC52YWx1ZSk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXJkTGlzdCh1bmlxdWVLZXk6IHN0cmluZywgZmlsdGVyczogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0U2VydmljZVxuICAgICAgICAuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnMsIHNvcnRzIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoeyBlcnJvciB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG4gIFxuICAvLyBFbmQgYWRkIG5ldyBjYXJkIGZ1bmN0aW9uYWxpdHlcbiAgZ2V0UGFnZVNlY3Rpb25PcmRlcnMoKXtcbiAgICBjb25zdCB1c2VySW5mbzphbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiQ3VycmVudFVzZXJJbmZvXCIpKTtcbiAgICBjb25zdCByb2xlcyA9IHVzZXJJbmZvPy5yb2xlcz8ubWFwKChyb2xlKT0+IChyb2xlLm5hbWUpKTtcbiAgICBsZXQgcGFnZVVybCA9IHRoaXMucm91dGVyLnVybD8uc3Vic3RyaW5nKDEpO1xuICAgIGlmIChwYWdlVXJsLmluY2x1ZGVzKCc/JykpIHtcbiAgICAgIHBhZ2VVcmwgPSBwYWdlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgfVxuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UucG9zdChcIi9TZWN0aW9uQ29uZmlnL0J5UGFnZVwiLCB7cGFnZTogcGFnZVVybCwgcm9sZXM6IHJvbGVzfSkuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgIGlmKHJlc3BvbnNlPy5sZW5ndGgpe1xuICAgICAgICB1c2VySW5mb1sncGFnZVNlY3Rpb25zJ10gPSByZXNwb25zZTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJDdXJyZW50VXNlckluZm9cIiwgSlNPTi5zdHJpbmdpZnkodXNlckluZm8pKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
628
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL3NlcnZpY2VzL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxVQUFVLEVBRVYsWUFBWSxFQU9aLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBS3JFLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFHakQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBS3RDLE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ1UsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxNQUFjO1FBTGQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmpCLG9CQUFlLEdBQVcsS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQVFyQyxDQUFDO0lBQ0wsVUFBVTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTthQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDO2FBQzVELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQ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TyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBWSxFQUFFLEVBQUU7WUFDMUcsSUFBRyxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2tJQTNxQlUsV0FBVztzSUFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVWYWxpZGF0b3IsXG4gIElGb3JtRmllbGQsXG4gIEVGb3JtQ29udHJvbCxcbiAgQWRkRm9ybUZpZWxkLFxuICBJU2V0RmlsdGVyLFxuICBJRHJvcERvd25SZXF1ZXN0LFxuICBJTGlzdEZpbHRlcixcbiAgSVJlcG9ydEJ0bixcbiAgSUR5bmFtaWNGb3JtLFxuICBFSHlwZXJsaW5rLFxufSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBFR3JpZFNvcnREaXJlY3Rpb24sIElHcmlkU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEh5cGVybGlua1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9oeXBlcmxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgdXRpbGl0aWVzIGZyb20gJy4vdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVNlcnZpY2Uge1xuICBwdWJsaWMgZmllbGRGb2N1c2VkT3V0OmJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzQ29tcG9uZW50RXhpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBoeXBlcmxpbmtTZXJ2aWNlOiBIeXBlcmxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlcXVlc3RTZXJ2aWNlOiBSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkgeyB9XG4gIHNldFRvb2x0aXAoKSB7XG4gICAgdGhpcy5uZ1pvbmUub25TdGFibGVcbiAgICAucGlwZSh0YWtlKDEpKSAvLyBFbWl0IG9ubHkgb25jZSB3aGVuIHRoZSB6b25lIGJlY29tZXMgc3RhYmxlXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0VG9vbHRpcEV2ZW50TGlzdGVuZXJzKClcbiAgICB9KTtcbn1cblxuICBnZXRNYXRjaGVkUm91dGVCYXNlZE9uQ29tcG9uZW50KGNvbXBvbmVudDogYW55KSB7XG4gICAgbGV0IHJvdXRlOiBhbnkgPSB7fTtcbiAgICB0aGlzLnJvdXRlci5jb25maWcuZm9yRWFjaCgocGFyZW50Um91dGUpID0+IHtcbiAgICAgIGlmIChwYXJlbnRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgICByb3V0ZSA9IHBhcmVudFJvdXRlO1xuICAgICAgfSBlbHNlIGlmIChwYXJlbnRSb3V0ZS5jaGlsZHJlbikge1xuICAgICAgICBwYXJlbnRSb3V0ZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdXRlKSA9PiB7XG4gICAgICAgICAgaWYgKGNoaWxkUm91dGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJvdXRlID0gY2hpbGRSb3V0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG5zZXRUb29sdGlwRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3Qgc2hvd1Rvb2x0aXBDb25kaXRpb25hbGx5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBlbGVtZW50U2VsZWN0b3IgPSB0aGlzLmdldEF0dHJpYnV0ZShcImRhdGEtdGl0bGUtZWxlbWVudFwiKTtcbiAgICAgICAgbGV0IHRvb2x0aXBFbGVtZW50cyA9IFtdXG4gICAgICAgIGlmIChlbGVtZW50U2VsZWN0b3IgPT0gJ3NlbGYnKSB7XG4gICAgICAgICAgICB0b29sdGlwRWxlbWVudHMucHVzaCh0aGlzKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnRzID0gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGVsZW1lbnRTZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgdG9vbHRpcEVsZW1lbnRzLmZvckVhY2godG9vbHRpcEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEaXNwbGF5ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodG9vbHRpcEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJkaXNwbGF5XCIpO1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsRGlzcGxheS5pbmNsdWRlcygnaW5saW5lJykpIHtcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgICB0b29sdGlwRWxlbWVudC5vbm1vdXNlbGVhdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gb3JpZ2luYWxEaXNwbGF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlRWxlbWVudCA9IHRvb2x0aXBFbGVtZW50Lm5vZGVOYW1lID09IFwiSU5QVVRcIiB8fCB0b29sdGlwRWxlbWVudC5ub2RlTmFtZSA9PSBcIlRFWFRBUkVBXCIgPyB0b29sdGlwRWxlbWVudC5wYXJlbnRFbGVtZW50IDogdG9vbHRpcEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAodG9vbHRpcEVsZW1lbnQuc2Nyb2xsV2lkdGggPiB0b29sdGlwRWxlbWVudC5jbGllbnRXaWR0aCAmJiB0b29sdGlwRWxlbWVudC5zY3JvbGxXaWR0aCAhPT0gdG9vbHRpcEVsZW1lbnQuY2xpZW50V2lkdGggKyAxKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gJydcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRvb2x0aXBFbGVtZW50LmlubmVyVGV4dDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHRvb2x0aXBFbGVtZW50LnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRpdGxlJywgdGl0bGUpO1xuICAgICAgICAgICAgICAgIHRvb2x0aXBFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZnVuY3Rpb24oKSB7IHRpdGxlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnKSB9LCB7b25jZSA6IHRydWV9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGl0bGVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aXRsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2RhdGEtdGl0bGUtZWxlbWVudF06bm90KFtkYXRhLXRpdGxlXSlcIik7XG4gICAgQXJyYXkuZnJvbShlbGVtZW50cykuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBzaG93VG9vbHRpcENvbmRpdGlvbmFsbHkpXG4gICAgfSk7XG59XG5cbiAgY2hlY2tWYWxpZGl0eShmb3JtRmllbGRzOiBJRm9ybUZpZWxkW10pOiBib29sZWFuIHtcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBmb3JtRmllbGRzLm1hcCgoaXRlbTogSUZvcm1GaWVsZCkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsaWRhdGlvbnMgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgbGV0IGl0ZW1WYWx1ZSA9XG4gICAgICAgICAgaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuTE9PS1VQX0lOUFVUICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAmJlxuICAgICAgICAgIHR5cGVvZiBpdGVtLnZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBpdGVtLnZhbHVlLnZhbHVlXG4gICAgICAgICAgICA6IGl0ZW0udmFsdWU7XG4gICAgICAgIC8vIGlmKGl0ZW0uY29udHJvbCA9PT0gRUZvcm1Db250cm9sLkxPT0tVUF9JTlBVVCAmJiBpdGVtLnZhbHVlICAmJiB0eXBlb2YoaXRlbS52YWx1ZSkgPT09ICdvYmplY3QnKXtcbiAgICAgICAgLy8gICBpdGVtLnZhbHVlID0gaXRlbS52YWx1ZS52YWx1ZTtcbiAgICAgICAgLy8gIH1cbiAgICAgICAgaXRlbS5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgaXRlbS5pc3ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLnZhbGlkYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbWluTWF4VmFsaWREYXRlID0gdXRpbGl0aWVzLmNhbGVuZGFyTWluTWF4VmFsdWUoaXRlbSwgaXRlbVZhbHVlLCBpKTtcbiAgICAgICAgICBjb25zdCB2YWxpZCA9XG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zICYmIHR5cGVvZiBpdGVtLmxhYmVsID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICA/IGl0ZW0ubGFiZWwubmFtZVxuICAgICAgICAgICAgICA6IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuUkVRVUlSRUQgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgICFpdGVtLmhpZGRlbiAmJlxuICAgICAgICAgICAgdmFsaWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPSBpdGVtVmFsdWVcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYCR7dmFsaWR9IGlzIHJlcXVpcmVkYCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NSU5MRU5HVEggJiZcbiAgICAgICAgICAgIGl0ZW1WYWx1ZS5sZW5ndGggPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5sZW5ndGggPiBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBgJHtpdGVtLmxhYmVsfSBNaW5pbXVtICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufSBjaGFyYWN0ZXJzYFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLk1BWExFTkdUSCAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA8IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1heGltdW0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259IGNoYXJhY3RlcnNgXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTUlOSU1VTSAmJlxuICAgICAgICAgICAgaXNWYWxpZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYoaXRlbS5jb250cm9sID09PSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVIpe1xuICAgICAgICAgICAgICBpc1ZhbGlkID0gbWluTWF4VmFsaWREYXRlID09PSAnbWluaW11bScgPyB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgTWluaW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gKSA6IHRydWU7XG4gICAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgPCBpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb24pe1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLmxlbmd0aCA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGAke2l0ZW0ubGFiZWx9IE1pbmltdW0gJHt2YWxpZH0gJHtpdGVtLnZhbGlkYXRpb25zW2ldLmV4cHJlc3Npb259YFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5NQVhJTVVNICYmXG4gICAgICAgICAgICBpc1ZhbGlkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZihpdGVtLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DQUxFTkRBUil7XG4gICAgICAgICAgICAgIGlzVmFsaWQgPSBtaW5NYXhWYWxpZERhdGUgPT09ICdncmVhdGVyJyA/IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtICR7dmFsaWR9ICR7aXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9ufWApIDogdHJ1ZTtcbiAgICAgICAgICAgIH1lbHNlIGlmKGl0ZW1WYWx1ZSA+IGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbil7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJiBpdGVtVmFsdWUubGVuZ3RoIDwgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShcbiAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYCR7aXRlbS5sYWJlbH0gTWF4aW11bSAke3ZhbGlkfSAke2l0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbn1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLlBBVFRFUk4gJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLm1hdGNoKGl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciB2YWxpZCAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuTlVNRVJJQyAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKSQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlPy50b1N0cmluZygpPy5tYXRjaCgvXigwfFsxLTldXFxkKikkLylcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBFbnRlciAke2l0ZW0udmFsaWRhdGlvbnNbaV0udHlwZX0gZm9yICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaXRlbVZhbHVlICYmXG4gICAgICAgICAgICBpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGUgPT0gRVZhbGlkYXRvci5QSE9ORSAmJlxuICAgICAgICAgICAgIWl0ZW1WYWx1ZS50b1N0cmluZygpLm1hdGNoKC9eKD89LipbMC05XSlbLSgpMC05XFxzK3hdKyQvKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaXNWYWxpZCA9XG4gICAgICAgICAgICBpdGVtVmFsdWUgJiYgaXRlbVZhbHVlLnRvU3RyaW5nKCkubWF0Y2goL14oPz0uKlswLTldKVstKCkwLTlcXHMreF0rJC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgdmFsaWQgJHt2YWxpZH1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBpdGVtVmFsdWUgJiZcbiAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbnNbaV0udHlwZSA9PSBFVmFsaWRhdG9yLkRFQ0lNQUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWU/LnRvU3RyaW5nKCk/Lm1hdGNoKC9eKDB8Wy0oKTEtOV1cXGQqKShcXC5cXGQrKT8kLylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlzVmFsaWQgPVxuICAgICAgICAgICAgaXRlbVZhbHVlICYmIGl0ZW1WYWx1ZS5tYXRjaCgvXigwfFsxLTldXFxkKikoXFwuXFxkKyk/JC8pXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNldEVycm9yTWVzc2FnZShpdGVtLCBgRW50ZXIgJHtpdGVtLnZhbGlkYXRpb25zW2ldLnR5cGV9IGZvciAke3ZhbGlkfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlID09IEVWYWxpZGF0b3IuRU1BSUwgJiZcbiAgICAgICAgICAgICFpdGVtVmFsdWUubWF0Y2goL15bYS16QS1aMC05Ll8tXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLDZ9JC8pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc1ZhbGlkID1cbiAgICAgICAgICAgIGl0ZW1WYWx1ZSAmJlxuICAgICAgICAgICAgaXRlbVZhbHVlLm1hdGNoKC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw2fSQvKVxuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zZXRFcnJvck1lc3NhZ2UoaXRlbSwgYEVudGVyIHZhbGlkICR7dmFsaWR9YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9ZWxzZSBpZihpdGVtVmFsdWUgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS50eXBlPT1FVmFsaWRhdG9yLk1BWE9QVElPTlMgJiYgaXRlbS52YWxpZGF0aW9uc1tpXS5leHByZXNzaW9uKXtcbiAgICAgICAgICAgIHZhciBtYXhPcHRpb25zPWl0ZW0udmFsaWRhdGlvbnNbaV0uZXhwcmVzc2lvbjtcbiAgICAgICAgICAgIGlzVmFsaWQ9aXRlbVZhbHVlLmxlbmd0aD5tYXhPcHRpb25zP3RoaXMuc2V0RXJyb3JNZXNzYWdlKGl0ZW0sIGBNYXhpbXVtIHZhbHVlcyBmb3IgJHt2YWxpZH0gaXMgJHttYXhPcHRpb25zfWApOnRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIHNldEVycm9yTWVzc2FnZShpdGVtOiBJRm9ybUZpZWxkLCBlcnJvck1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGl0ZW0uZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgIGl0ZW0uaXN2YWxpZCA9IGZhbHNlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFkZEZvcm1GaWVsZChmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBpZiAoIWZpZWxkSW5mby5sYWJlbCkge1xuICAgICAgZmllbGRJbmZvLmxhYmVsID0gZmllbGRJbmZvLmZpZWxkO1xuICAgIH1cbiAgICBjb25zdCBmb3JtRmllbGQ6IGFueSA9IHtcbiAgICAgIGxhYmVsOiBmaWVsZEluZm8ubGFiZWwsXG4gICAgICBmaWVsZDogZmllbGRJbmZvLmZpZWxkLFxuICAgICAgZGlzcGxheUZpZWxkOiBmaWVsZEluZm8uZGlzcGxheUZpZWxkLFxuICAgICAgY29udHJvbDogZmllbGRJbmZvLmNvbnRyb2wsXG4gICAgICBzaG93T3B0aW9uOiBmaWVsZEluZm8uc2hvd09wdGlvbixcbiAgICAgIGNvbHVtbjogZmllbGRJbmZvLmNvbHVtbixcbiAgICAgIHJvdzogZmllbGRJbmZvLnJvdyxcbiAgICAgIG1pbnV0ZXNJbnRlcnZhbDogZmllbGRJbmZvLm1pbnV0ZXNJbnRlcnZhbCxcbiAgICAgIHZhbHVlOiBmaWVsZEluZm8udmFsdWUsXG4gICAgICBmb3JtYXQ6IGZpZWxkSW5mby5mb3JtYXQsXG4gICAgICBoaWRkZW46IGZpZWxkSW5mby5oaWRkZW4sXG4gICAgICBwZXJtaXNzaW9uczogZmllbGRJbmZvLnBlcm1pc3Npb25zLFxuICAgICAgdmFsaWRhdGlvbnM6IGZpZWxkSW5mby52YWxpZGF0aW9ucyxcbiAgICAgIGlkOiBmaWVsZEluZm8uaWQsXG4gICAgICBoeXBlcmxpbms6IGZpZWxkSW5mby5oeXBlcmxpbmssXG4gICAgICBkYXRhOiBmaWVsZEluZm8uZGF0YSxcbiAgICAgIGxvb2t1cENvbnRyb2w6IGZpZWxkSW5mby5sb29rdXBDb250cm9sLFxuICAgICAgY29tcG9uZW50Q29udHJvbDogZmllbGRJbmZvLmNvbXBvbmVudENvbnRyb2wsXG4gICAgICBvcHRpb25MYWJlbDogZmllbGRJbmZvLm9wdGlvbkxhYmVsLFxuICAgICAgb3B0aW9uVmFsdWU6IGZpZWxkSW5mby5vcHRpb25WYWx1ZSxcbiAgICAgIHNhdmVBc1N0cmluZzogZmllbGRJbmZvLnNhdmVBc1N0cmluZyxcbiAgICAgIHNob3dBbGxWYWx1ZTogZmllbGRJbmZvLnNob3dBbGxWYWx1ZSxcbiAgICAgIG9uQ2xpY2s6IGZpZWxkSW5mby5vbkNsaWNrLFxuICAgICAgb25SZXR1cm46IGZpZWxkSW5mby5vblJldHVybixcbiAgICAgIG9uRm9jdXNPdXQ6IGZpZWxkSW5mby5vbkZvY3VzT3V0LFxuICAgICAgb25DaGFuZ2U6IGZpZWxkSW5mby5vbkNoYW5nZSxcbiAgICAgIHRhYmxlczogZmllbGRJbmZvLnRhYmxlcyxcbiAgICAgIGRpc2FibGVkOiBmaWVsZEluZm8uZGlzYWJsZWQsXG4gICAgICBkaXNhYmxlZFRleHQ6IGZpZWxkSW5mby5kaXNhYmxlZFRleHQsXG4gICAgICB0aW1lT25seTogZmllbGRJbmZvLnRpbWVPbmx5LFxuICAgICAgaXNQYXNzd29yZDogZmllbGRJbmZvLmlzUGFzc3dvcmQsXG4gICAgICB0ZXh0VHlwZTogZmllbGRJbmZvLnRleHRUeXBlLFxuICAgICAgbW9udGhPbmx5OiBmaWVsZEluZm8ubW9udGhPbmx5LFxuICAgICBtaW5EYXRlOmZpZWxkSW5mby5taW5EYXRlLCBcbiAgICAgbWF4RGF0ZTpmaWVsZEluZm8ubWF4RGF0ZSxcbiAgICAgIHNob3dUaW1lOiBmaWVsZEluZm8uc2hvd1RpbWUsIC8vIHRvIHNob3cgdGltZSBhcyB3ZWxsIGluIGNhbGVuZGFyIGZvcm0gZmllbGRcbiAgICAgIGhlaWdodDogZmllbGRJbmZvLmhlaWdodCxcbiAgICAgIHNob3dCb3R0b21Cb3JkZXI6IGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyLFxuICAgICAgYWxsb3dTZWFyY2g6IGZpZWxkSW5mby5hbGxvd1NlYXJjaCxcbiAgICAgIHNlbGVjdE11bHRpcGxlRmlsZXM6IGZpZWxkSW5mby5zZWxlY3RNdWx0aXBsZUZpbGVzLFxuICAgICAgU2V0ZmlsZVR5cGVzOiBmaWVsZEluZm8uU2V0ZmlsZVR5cGVzLFxuICAgICAgaWNvbjogZmllbGRJbmZvLmljb24sXG4gICAgICBjb2xvcjogZmllbGRJbmZvLmNvbG9yLFxuICAgICAgY2FyZDogZmllbGRJbmZvLmNhcmQsXG4gICAgICB1bmlxdWVLZXk6IGZpZWxkSW5mby51bmlxdWVLZXksXG4gICAgICBwYXRoU3lzdGVtQ29uZmlnOiBmaWVsZEluZm8ucGF0aFN5c3RlbUNvbmZpZyxcbiAgICAgIGF6dXJlQ29udGFpbmVyOiBmaWVsZEluZm8uYXp1cmVDb250YWluZXIsXG4gICAgICBjbGFzczogZmllbGRJbmZvLmNsYXNzLFxuICAgICAgaG92ZXJEYXRhOiBmaWVsZEluZm8uaG92ZXJEYXRhLFxuICAgICAgb3BlbkluTmV3VGFiOiBmaWVsZEluZm8ub3BlbkluTmV3VGFiLFxuICAgICAgaXNBenVyZVVwbG9hZDogZmllbGRJbmZvLmlzQXp1cmVVcGxvYWQsXG4gICAgICBjb2xvckZvbnQ6IGZpZWxkSW5mby5jb2xvckZvbnRcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZvcm1GaWVsZDtcbiAgfVxuXG4gIGFkZENoZWNrYm94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0hFQ0tCT1g7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0Ym94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0RWRpdG9yKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuVEVYVF9FRElUT1I7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaXNwbGF5RmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5JTlBVVDtcbiAgICBmaWVsZEluZm8uZGlzYWJsZWQgPSB0cnVlO1xuICAgIGZpZWxkSW5mby5zaG93Qm90dG9tQm9yZGVyID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZE51bWVyaWNUZXh0Ym94KGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTlVNRVJJQztcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZFNwYWNlRmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxke1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNQQUNFUjtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZE5ld0xpbmUoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxke1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkJSRUFLX0xJTkU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRUZXh0QXJlYShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlRFWFRBUkVBO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIFxuICAgLy8gQWRkaW5nIFJlcG9ydCBidXR0b24gZm9yIER5bmFtaWNGb3JtXG4gICBhZGRSZXBvcnRCdG4oZmllbGRJbmZvOiBJUmVwb3J0QnRuKSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuUkVQT1JUO1xuICAgIHJldHVybiBmaWVsZEluZm87XG4gIH1cblxuICBhZGROb3RlRmllbGQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5OT1RFX0ZJRUxEO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG4gIGFkZFNlbGVjdEJ1dHRvbnMoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5TRUxFQ1RCVVRUT047XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgLy8gcmVjZWl2ZSBMaW5rSWQgYW5kIFBhcmFtc1xuICBnZXRIeXBlcmxpbmtVcmwoXG4gICAgbGlua0lkOiBzdHJpbmcsXG4gICAgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvcm1GaWVsZDogSUZvcm1GaWVsZCA9IHtcbiAgICAgIGh5cGVybGluazogeyBsaW5rSWQ6IGxpbmtJZCwgcGFyYW1zOiBwYXJhbXMgfSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFkZEh5cGVybGluayhmb3JtRmllbGQpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiByZXNwb25zZS5oeXBlcmxpbms/Lmxpbms7XG4gICAgfSk7XG4gIH1cblxuICBhZGRIeXBlcmxpbmsoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBhbnkge1xuICAgIGNvbnN0IHVzZXJTZXR0aW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJVc2VyU2V0dGluZ1wiKTtcbiAgICBpZiAodXNlclNldHRpbmcpIHtcbiAgICAgIGNvbnN0IHBhcnNlU2V0dGluZyA9IEpTT04ucGFyc2UodXNlclNldHRpbmcpO1xuXG4gICAgICBpZiAoZmllbGRJbmZvLmh5cGVybGluaz8udGFyZ2V0VXNlVXNlclByZWYpIHtcbiAgICAgICAgZmllbGRJbmZvLmh5cGVybGluay50YXJnZXQgPSBwYXJzZVNldHRpbmc/LnZhbHVlID09PSBcIm9wZW5MaW5rSW5DdXJyZW50VGFiXCIgPyBFSHlwZXJsaW5rLlNFTEYgOiBFSHlwZXJsaW5rLkJMQU5LO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rICYmIGZpZWxkSW5mby5oeXBlcmxpbmsuY29tcG9uZW50KSB7XG4gICAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IWVBFUkxJTks7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHlwZXJsaW5rU2VydmljZS5idWlsZFVybChcbiAgICAgICAgZmllbGRJbmZvPy5oeXBlcmxpbms/LmxpbmtJZFxuICAgICAgKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBmaWVsZEluZm8/Lmh5cGVybGluaz8ucGFyYW1zO1xuICAgICAgICBsZXQgb3JpZ2luYWxVcmwgPSB0aGlzLmh5cGVybGlua1NlcnZpY2Uuc2V0VXJsKHBhcmFtcywgcmVzWzBdKTtcbiAgICAgICAgY29uc3QgbGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICBpZiAob3JpZ2luYWxVcmwgJiYgcGFyYW1zKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbFVybC5pbmNsdWRlcygne3snICsga2V5ICsgJ319JykgJiYgIXBhcmFtc1trZXldLnRvU3RyaW5nKCk/LmluY2x1ZGVzKCd7JykpIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxVcmwgPSBvcmlnaW5hbFVybC5yZXBsYWNlKCd7eycgKyBrZXkgKyAnfX0nLCBwYXJhbXNba2V5XSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWVsZEluZm8uaHlwZXJsaW5rPy5saW5rSWQgJiYgZmllbGRJbmZvLmh5cGVybGluay5saW5rSWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZpZWxkSW5mby5oeXBlcmxpbmsubGluayA9IG9yaWdpbmFsVXJsO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkhZUEVSTElOSztcbiAgICAgICAgbGV0IG9iajogYW55ID0gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgICAgb2JqWydvcmlnbmFsTGluayddID0gbGluaztcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZENhbGVuZGFyKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FMRU5EQVI7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBhZGQgQXV0b0NvbXBsZXRlIGZvciBGb3JtXG4gIGFkZEF1dG9Db21wbGV0ZShmaWVsZEluZm86IEFkZEZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLkFVVE9DT01QTEVURTtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBBdXRvQ29tcGxldGUgRGF0YSBmb3IgZm9ybVxuICBnZXRBdXRvQ29tcGxldGVEYXRhKGZvcm1GaWVsZD86IGFueSwgdW5pcXVlS2V5Pzogc3RyaW5nLCBmaWx0ZXJzPzogYW55W10sIHNlYXJjaDogc3RyaW5nID0gJycpOiBhbnkge1xuICAgIHRoaXMucmVxdWVzdFNlcnZpY2UuZ2V0PGFueVtdLCBhbnk+KCcvRGF0YS9GZXRjaCcsIHsgdW5pcXVlS2V5OiB1bmlxdWVLZXksIGZpbHRlcnN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpPT57XG4gICAgICBpZihzZWFyY2gpe1xuICAgICAgIGxldCBleGlzdEluUmVjb3JkOiBib29sZWFuID0gcmVzcG9uc2UucmVjb3Jkcy5zb21lKChyZWNvcmQ6IGFueSk9PiByZWNvcmRbZm9ybUZpZWxkLmRpc3BsYXlGaWVsZF0gJiYgcmVjb3JkW2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2g/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZighZXhpc3RJblJlY29yZCl7XG4gICAgICAgICAgcmVzcG9uc2UucmVjb3Jkcy51bnNoaWZ0ICh7W2Zvcm1GaWVsZC5kaXNwbGF5RmllbGRdOiBzZWFyY2h9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoZm9ybUZpZWxkLm9wdGlvbkxhYmVsICYmIGZvcm1GaWVsZC5vcHRpb25WYWx1ZSkge1xuICAgICAgICBmb3JtRmllbGQuZGF0YSA9IHJlc3BvbnNlLnJlY29yZHM/Lm1hcCgocmVjb3JkOiBhbnkpID0+ICh7XG4gICAgICAgICAgaWQ6IHJlY29yZFtmb3JtRmllbGQ/Lm9wdGlvblZhbHVlXSxcbiAgICAgICAgICBsYWJlbDogcmVjb3JkW2Zvcm1GaWVsZD8ub3B0aW9uTGFiZWxdXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvcm1GaWVsZC5kYXRhID0gWy4uLnJlc3BvbnNlLnJlY29yZHNdXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGREcm9wZG93bihmaWVsZEluZm86IEFkZEZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRFJPUERPV047XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgbGV0IHNvcnRzOklHcmlkU29ydFtdID0gZHJvcERvd25Qcm9wLnNvcnRzXG4gICAgICBpZiAodW5pcXVlS2V5ICYmIHZhbHVlUHJvcCAmJiBsYWJlbFByb3ApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RHJvcGRvd25EYXRhKGZpZWxkSW5mbywgdW5pcXVlS2V5LCB2YWx1ZVByb3AsIGxhYmVsUHJvcCwgZmlsdGVycywgc29ydHMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICB9XG4gIH1cblxuICBnZXREcm9wZG93bkRhdGEoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQsIHVuaXF1ZUtleTogc3RyaW5nLCB2YWx1ZVByb3A6IHN0cmluZywgbGFiZWxQcm9wOiBzdHJpbmcsIGZpbHRlcnM6IGFueVtdLCBzb3J0czphbnlbXT1bXSkge1xuICAgIHJldHVybiB0aGlzLmRyb3Bkb3duU2VydmljZVxuICAgICAgLnNldERyb3BEb3duTGlzdChcbiAgICAgICAgdW5pcXVlS2V5LFxuICAgICAgICB2YWx1ZVByb3AsXG4gICAgICAgIGxhYmVsUHJvcCxcbiAgICAgICAgZmlsdGVycywgXG4gICAgICAgIHNvcnRzXG4gICAgICApXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgZmllbGRJbmZvLmRhdGEgPSByZXM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRMb29rVXAoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5MT09LVVBfSU5QVVQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkSG92ZXJEYXRhKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5IT1ZFUkRBVEE7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cbiAgYWRkRGlhbG9nKGZpZWxkSW5mbzogQWRkRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuYWRkTG9va1VwKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRDb21wb25lbnQoZmllbGRJbmZvOiBBZGRGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5DT01QT05FTlQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGRIZWFkZXIoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuU0VDVElPTl9IRUFERVI7XG4gICAgZmllbGRJbmZvLmNsYXNzID0gJ2Zvcm0taGVhZGVyJztcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIGFkZE11bHRpU2VsZWN0KGZpZWxkSW5mbzogSUZvcm1GaWVsZCwgZHJvcERvd25Qcm9wPzogSURyb3BEb3duUmVxdWVzdCk6IGFueSB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuTVVMVElTRUxFQ1Q7XG4gICAgaWYgKGRyb3BEb3duUHJvcCkge1xuICAgICAgbGV0IHVuaXF1ZUtleSA9IGRyb3BEb3duUHJvcC51bmlxdWVLZXk7XG4gICAgICBsZXQgdmFsdWVQcm9wID0gZHJvcERvd25Qcm9wLnZhbHVlUHJvcDtcbiAgICAgIGxldCBsYWJlbFByb3AgPSBkcm9wRG93blByb3AubGFiZWxQcm9wO1xuICAgICAgbGV0IGZpbHRlcnM6IElTZXRGaWx0ZXJbXSA9IGRyb3BEb3duUHJvcC5maWx0ZXJzICYmIGRyb3BEb3duUHJvcC5maWx0ZXJzLmxlbmd0aCA+IDAgPyBkcm9wRG93blByb3AuZmlsdGVycyA6IFtdO1xuICAgICAgaWYgKHVuaXF1ZUtleSAmJiB2YWx1ZVByb3AgJiYgbGFiZWxQcm9wKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERyb3Bkb3duRGF0YShmaWVsZEluZm8sIHVuaXF1ZUtleSwgdmFsdWVQcm9wLCBsYWJlbFByb3AsIGZpbHRlcnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEluZm8ub3B0aW9uTGFiZWwgPSBmaWVsZEluZm8ub3B0aW9uTGFiZWwgPyBmaWVsZEluZm8ub3B0aW9uTGFiZWwgOiAnbGFiZWwnO1xuICAgICAgZmllbGRJbmZvLm9wdGlvblZhbHVlID0gZmllbGRJbmZvLm9wdGlvblZhbHVlID8gZmllbGRJbmZvLm9wdGlvblZhbHVlIDogJ3ZhbHVlJztcbiAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZpbGVVcGxvYWQoZmllbGRJbmZvOiBJRm9ybUZpZWxkKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuRklMRV9VUExPQUQ7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICBhZGREaXNwbGF5RmlsZShmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5ESVNQTEFZX0ZJTEU7XG4gICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gIH1cblxuICAvLyBBZGRpbmcgT25DbGljayBCdXR0b24gRnVuY3Rpb24gZm9yIER5bmFtaWNGb3JtXG4gIGFkZEJ1dHRvbihmaWVsZEluZm86IElGb3JtRmllbGQpOiBJRm9ybUZpZWxkIHtcbiAgICBmaWVsZEluZm8uY29udHJvbCA9IEVGb3JtQ29udHJvbC5BRERfQlVUVE9OO1xuICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICB9XG5cbiAgLy8gQWRkaW5nIFN3aXRjaCBGdW5jdGlvbiBmb3IgRHluYW1pY0Zvcm1cbiAgYWRkU3dpdGNoKGZpZWxkSW5mbzogSUZvcm1GaWVsZCk6IElGb3JtRmllbGQge1xuICAgIGZpZWxkSW5mby5jb250cm9sID0gRUZvcm1Db250cm9sLlNXSVRDSDtcbiAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgfVxuXG4gIC8vIHN0YXJ0IGFkZCBuZXcgY2FyZCBmdW5jdGlvbmFsaXR5XG4gIGFkZENhcmQoZmllbGRJbmZvOiBJRm9ybUZpZWxkLCBjYXJkRGF0YT86IElMaXN0RmlsdGVyKTogSUZvcm1GaWVsZCB7XG4gICAgZmllbGRJbmZvLmNvbnRyb2wgPSBFRm9ybUNvbnRyb2wuQ0FSRDtcbiAgICBpZiAoY2FyZERhdGEgJiYgY2FyZERhdGEudW5pcXVlS2V5KSB7XG4gICAgICBpZihjYXJkRGF0YS5zb3J0cz8ubGVuZ3RoID4gMCl7XG4gICAgICAgIGNhcmREYXRhLnNvcnRzLmZvckVhY2goKHJlcykgPT57XG4gICAgICAgIHJlcy5kaXJlY3Rpb24gPSByZXMuZGlyZWN0aW9uID8gcmVzLmRpcmVjdGlvbiA6IEVHcmlkU29ydERpcmVjdGlvbi5BU0M7XG4gICAgICAgIH0pO1xuICAgICAgfSAgIFxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FyZERhdGEoZmllbGRJbmZvLCBjYXJkRGF0YS51bmlxdWVLZXksIGNhcmREYXRhLmZpbHRlcnMsIGNhcmREYXRhLnNvcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYWRkRm9ybUZpZWxkKGZpZWxkSW5mbyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2FyZERhdGEoZmllbGRJbmZvOiBhbnksIHVuaXF1ZUtleTogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSA9IFtdLCBzb3J0czogYW55W10gPSBbXSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FyZExpc3QodW5pcXVlS2V5LCBmaWx0ZXJzLCBzb3J0cylcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBmaWVsZEluZm8uY2FyZC5kYXRhID0gcmVzLnJlY29yZHM7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZvcm1GaWVsZChmaWVsZEluZm8pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYXBpRXJyb3IoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGb3JtRmllbGQoZmllbGRJbmZvKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gbG9hZCBjb21wb25lbnQgb24gZm9ybVxuICBzZXRBZGRDb21wb25lbnREYXRhKHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSwgaWQ6IHN0cmluZywgdmFsdWU6IGFueSwgbG9hZENvbXBvbmVudDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBmb3JtU2VjdGlvbnM/LmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLmNvbnRyb2wgPT09IEVGb3JtQ29udHJvbC5DT01QT05FTlQgJiYgZmllbGQuY29tcG9uZW50Q29udHJvbCAmJiBmaWVsZC5jb21wb25lbnRDb250cm9sPy5pZCA9PT0gaWQpIHtcbiAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgZmllbGQuY29tcG9uZW50Q29udHJvbC5kYXRhID0geyAuLi5maWVsZC5jb21wb25lbnRDb250cm9sPy5kYXRhLCBba2V5XTogdmFsdWVba2V5XSB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHV0aWxpdGllcy5jaGFuZ2VEeW5hbWljRm9ybVN0YXRlKGlkLCBmaWVsZC5jb21wb25lbnRDb250cm9sLmRhdGEsIGxvYWRDb21wb25lbnQpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzZXQgZm9ybWZpZWxkIHZhbHVlXG4gIC8vIHNldEZvcm1GaWVsZFZhbHVlKFxuICAvLyAgIHsgZm9ybVNlY3Rpb25zIH06IElEeW5hbWljRm9ybSxcbiAgLy8gICBmaWVsZDogc3RyaW5nLFxuICAvLyAgIHZhbHVlOiBhbnksXG4gIC8vICAgZGlzcGxheVRleHQ6IHN0cmluZyA9ICcnXG4gIC8vICkge1xuICAvLyAgIGZvcm1TZWN0aW9ucz8uZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAvLyAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaCgoZm9ybUZpZWxkKSA9PiB7XG4gIC8vICAgICAgIGlmIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB7XG4gIC8vICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICYmIGRpc3BsYXlUZXh0Lmxlbmd0aCA+IDApIHtcbiAgLy8gICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHsgdGV4dDogZGlzcGxheVRleHQsIHZhbHVlOiB2YWx1ZSB9O1xuICAvLyAgICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0pO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgc2V0Rm9ybUZpZWxkVmFsdWUoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSxcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nID0gJydcbiAgKSB7XG4gICAgZm9ybVNlY3Rpb25zPy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVGaWVsZFZhbHVlID0gKGZvcm1GaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICYmIGRpc3BsYXlUZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvcm1GaWVsZC52YWx1ZSA9IHsgdGV4dDogZGlzcGxheVRleHQsIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRmllbGQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNlY3Rpb24uZmllbGRzPy5mb3JFYWNoKHVwZGF0ZUZpZWxkVmFsdWUpO1xuICAgICAgc2VjdGlvbi5oZWFkZXJGaWVsZHM/LmZvckVhY2godXBkYXRlRmllbGRWYWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBzZXQgZm9ybWZpZWxkIHByb3BlcnR5XG4gIHNldEZvcm1GaWVsZFByb3AoXG4gICAgeyBmb3JtU2VjdGlvbnMgfTogSUR5bmFtaWNGb3JtLFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElEaWN0aW9uYXJ5W11cbiAgKSB7XG4gICAgcmV0dXJuIGZvcm1TZWN0aW9ucz8ubWFwKChzZWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzZWN0aW9uLmZpZWxkcy5tYXAoKGZvcm1GaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmb3JtRmllbGQuZmllbGQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICAgIChmb3JtRmllbGQubGFiZWwgJiYgZm9ybUZpZWxkLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5tYXAoKHByb3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGZvcm1GaWVsZC5oYXNPd25Qcm9wZXJ0eShwcm9wLm5hbWUpKSB7XG4gICAgICAgICAgICAgIGlmIChwcm9wLm5hbWUgPT09ICdsYWJlbCcgJiYgdHlwZW9mIGZvcm1GaWVsZC5sYWJlbCA9PT0gJ29iamVjdCcgJiYgIXByb3Aub3ZlcnJpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcD8udmFsdWU/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0ubmFtZSA9IHByb3AudmFsdWUubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0ubmFtZSA9IHByb3AudmFsdWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0gPSBwcm9wLnZhbHVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiAoZm9ybUZpZWxkW3Byb3AubmFtZV0gPSBwcm9wLnZhbHVlKTtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENhcmRMaXN0KHVuaXF1ZUtleTogc3RyaW5nLCBmaWx0ZXJzOiBhbnlbXSA9IFtdLCBzb3J0czogYW55W10gPSBbXSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3RTZXJ2aWNlXG4gICAgICAgIC5nZXQ8YW55W10sIGFueT4oJy9EYXRhL0ZldGNoJywgeyB1bmlxdWVLZXk6IHVuaXF1ZUtleSwgZmlsdGVycywgc29ydHMgfSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgICh7IGVycm9yIH06IGFueSkgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgXG4gIC8vIEVuZCBhZGQgbmV3IGNhcmQgZnVuY3Rpb25hbGl0eVxuICBnZXRQYWdlU2VjdGlvbk9yZGVycygpe1xuICAgIGNvbnN0IHVzZXJJbmZvOmFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJDdXJyZW50VXNlckluZm9cIikpO1xuICAgIGNvbnN0IHJvbGVzID0gdXNlckluZm8/LnJvbGVzPy5tYXAoKHJvbGUpPT4gKHJvbGUubmFtZSkpO1xuICAgIGxldCBwYWdlVXJsID0gdGhpcy5yb3V0ZXIudXJsPy5zdWJzdHJpbmcoMSk7XG4gICAgaWYgKHBhZ2VVcmwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgcGFnZVVybCA9IHBhZ2VVcmwuc3BsaXQoJz8nKVswXTtcbiAgICB9XG4gICAgdGhpcy5yZXF1ZXN0U2VydmljZS5wb3N0KFwiL1NlY3Rpb25Db25maWcvQnlQYWdlXCIsIHtwYWdlOiBwYWdlVXJsLCByb2xlczogcm9sZXN9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOmFueSkgPT4ge1xuICAgICAgaWYocmVzcG9uc2U/Lmxlbmd0aCl7XG4gICAgICAgIHVzZXJJbmZvWydwYWdlU2VjdGlvbnMnXSA9IHJlc3BvbnNlO1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIkN1cnJlbnRVc2VySW5mb1wiLCBKU09OLnN0cmluZ2lmeSh1c2VySW5mbykpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -2449,7 +2449,7 @@ class FormService {
|
|
|
2449
2449
|
const link = originalUrl;
|
|
2450
2450
|
if (originalUrl && params) {
|
|
2451
2451
|
Object.keys(params).forEach((key) => {
|
|
2452
|
-
if (originalUrl.includes('{{' + key + '}}') &&
|
|
2452
|
+
if (originalUrl.includes('{{' + key + '}}') && !params[key].toString()?.includes('{')) {
|
|
2453
2453
|
originalUrl = originalUrl.replace('{{' + key + '}}', params[key]);
|
|
2454
2454
|
}
|
|
2455
2455
|
});
|