@sunbird-cb/toc 0.0.3-2.1 → 0.0.3-mauritius

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.
Files changed (22) hide show
  1. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +16 -6
  2. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +11 -7
  3. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +47 -3
  4. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +6 -3
  5. package/esm2022/lib/_services/viewer-route-util.mjs +2 -2
  6. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +4 -3
  7. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +7 -6
  8. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +42 -34
  9. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +5 -3
  10. package/fesm2022/sunbird-cb-toc.mjs +131 -58
  11. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  12. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +5 -3
  13. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +5 -3
  14. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +3 -1
  15. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +2 -1
  16. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +1 -0
  17. package/lib/components/app-toc-home/app-toc-home.component.d.ts +3 -2
  18. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +3 -2
  19. package/lib/components/public-survey-form/public-survey-form.component.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/sunbird-cb-toc-0.0.3-mauritius.tgz +0 -0
  22. package/sunbird-cb-toc-0.0.32.1.tgz +0 -0
@@ -147,6 +147,7 @@ export class KarmaPointsComponent {
147
147
  }
148
148
  }
149
149
  }
150
+ this.addBadgeSlide();
150
151
  }
151
152
  getKPData(btnType) {
152
153
  this.data?.forEach((item) => {
@@ -161,6 +162,47 @@ export class KarmaPointsComponent {
161
162
  }
162
163
  });
163
164
  }
165
+ addBadgeSlide() {
166
+ const badgeDetails = this.baseContentReadData?.badgeDetails_v1;
167
+ if (!badgeDetails || !badgeDetails.length) {
168
+ return;
169
+ }
170
+ const badge = badgeDetails[0];
171
+ if (!badge.badgeEarningDateEnabled) {
172
+ return;
173
+ }
174
+ const badgeTime = badge.badgeEarningDateTime;
175
+ const currentTime = Date.now();
176
+ const badgeDateIST = new Date(badgeTime).toLocaleString('en-IN', {
177
+ timeZone: 'Asia/Kolkata',
178
+ });
179
+ console.log('Badge IST Time:', badgeDateIST);
180
+ const isEligibleslide = this?.content?.completionPercentage == undefined || this?.content?.completionPercentage < 100;
181
+ const badgeSlide = {
182
+ displayButton: 'Quick Learner Badge',
183
+ textBeforeIcon: this.content.courseCategory == "Curated Program" ? badge?.criteria == "partialRandomCompletion" ? `By partially completing this program, earn Quick learner Badge (Any ${badge?.requiredCourseCompletions} course needed)` : 'By completing this course earn Quick learner Badge' : 'By completing this course earn Quick learner Badge',
184
+ points: '',
185
+ textAfterPoints: '',
186
+ toolTipText: 'quickLearnerBadgeTip',
187
+ };
188
+ const badgeExists = this.kpArray.find((item) => item.displayButton === 'Quick Learner Badge');
189
+ if (isEligibleslide) {
190
+ if (badge?.badgeEarningDateEnabled === true) {
191
+ if (badgeTime > currentTime) {
192
+ if (!badgeExists) {
193
+ this.kpArray.push(badgeSlide);
194
+ this.constructNudgeData();
195
+ }
196
+ }
197
+ }
198
+ else {
199
+ if (!badgeExists) {
200
+ this.kpArray.push(badgeSlide);
201
+ this.constructNudgeData();
202
+ }
203
+ }
204
+ }
205
+ }
164
206
  onClickOfClaim() {
165
207
  this.clickClaimKarmaPoints.emit('claim');
166
208
  this.btnCategory = '';
@@ -191,11 +233,11 @@ export class KarmaPointsComponent {
191
233
  return this.langTranslations.translateLabelWithoutspace(label, type, '');
192
234
  }
193
235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KarmaPointsComponent, deps: [{ token: i1.TranslateService }, { token: i2.MultilingualTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
194
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: KarmaPointsComponent, selector: "ws-widget-karma-points", inputs: { content: "content", data: "data", pCategory: "pCategory", condition: "condition", btnCategory: "btnCategory" }, outputs: { clickClaimKarmaPoints: "clickClaimKarmaPoints" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!disableKarmaPoints\">\n <ws-widget-sliders-dynamic [widgetData]=\"karmaPointsSlider\"></ws-widget-sliders-dynamic>\n\n <ng-container *ngIf=\"btnCategory === 'claim'\">\n <button class=\"flex flex-wrap gap-1 claim-button\" (click)=\"onClickOfClaim()\" >\n <img src=\"/assets/icons/home/karma-badge.svg\" width=\"28px\" class=\"mr-2\" alt=\"karma-points image\" />\n <div *ngIf=\"btnKPData?.textBeforeIcon\">{{ btnKPData.textBeforeIcon }}</div>\n <div *ngIf=\"btnKPData.points\">{{ btnKPData.points }} {{ translateLabels(btnKPData.textAfterPoints, 'appKarmapointsPanel') }}</div>\n <div *ngIf=\"btnKPData?.textAfterIcon\">{{ translateLabels(btnKPData.textAfterIcon, 'appKarmapointsPanel') }}</div>\n </button>\n </ng-container> \n</ng-container>", styles: [".claim-button{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;text-align:center;color:#fff!important;border-radius:64px;padding:8px 0;background-color:#ef951e;cursor:pointer;border:none;font-weight:700;width:100%;font-size:14px;margin:16px auto 0;max-width:344px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SlidersDynamicComponent, selector: "ws-widget-sliders-dynamic", inputs: ["widgetData"] }] }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: KarmaPointsComponent, selector: "ws-widget-karma-points", inputs: { content: "content", data: "data", pCategory: "pCategory", condition: "condition", baseContentReadData: "baseContentReadData", btnCategory: "btnCategory" }, outputs: { clickClaimKarmaPoints: "clickClaimKarmaPoints" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!disableKarmaPoints\">\n <ws-widget-sliders-dynamic [widgetData]=\"karmaPointsSlider\" [baseContentReadData] = \"baseContentReadData\"></ws-widget-sliders-dynamic>\n\n <ng-container *ngIf=\"btnCategory === 'claim'\">\n <button class=\"flex flex-wrap gap-1 claim-button\" (click)=\"onClickOfClaim()\" >\n <img src=\"/assets/icons/home/karma-badge.svg\" width=\"28px\" class=\"mr-2\" alt=\"karma-points image\" />\n <div *ngIf=\"btnKPData?.textBeforeIcon\">{{ btnKPData.textBeforeIcon }}</div>\n <div *ngIf=\"btnKPData.points\">{{ btnKPData.points }} {{ translateLabels(btnKPData.textAfterPoints, 'appKarmapointsPanel') }}</div>\n <div *ngIf=\"btnKPData?.textAfterIcon\">{{ translateLabels(btnKPData.textAfterIcon, 'appKarmapointsPanel') }}</div>\n </button>\n </ng-container> \n</ng-container>", styles: [".claim-button{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;text-align:center;color:#fff!important;border-radius:64px;padding:8px 0;background-color:#ef951e;cursor:pointer;border:none;font-weight:700;width:100%;font-size:14px;margin:16px auto 0;max-width:344px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SlidersDynamicComponent, selector: "ws-widget-sliders-dynamic", inputs: ["widgetData", "baseContentReadData"] }] }); }
195
237
  }
196
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KarmaPointsComponent, decorators: [{
197
239
  type: Component,
198
- args: [{ selector: 'ws-widget-karma-points', template: "<ng-container *ngIf=\"!disableKarmaPoints\">\n <ws-widget-sliders-dynamic [widgetData]=\"karmaPointsSlider\"></ws-widget-sliders-dynamic>\n\n <ng-container *ngIf=\"btnCategory === 'claim'\">\n <button class=\"flex flex-wrap gap-1 claim-button\" (click)=\"onClickOfClaim()\" >\n <img src=\"/assets/icons/home/karma-badge.svg\" width=\"28px\" class=\"mr-2\" alt=\"karma-points image\" />\n <div *ngIf=\"btnKPData?.textBeforeIcon\">{{ btnKPData.textBeforeIcon }}</div>\n <div *ngIf=\"btnKPData.points\">{{ btnKPData.points }} {{ translateLabels(btnKPData.textAfterPoints, 'appKarmapointsPanel') }}</div>\n <div *ngIf=\"btnKPData?.textAfterIcon\">{{ translateLabels(btnKPData.textAfterIcon, 'appKarmapointsPanel') }}</div>\n </button>\n </ng-container> \n</ng-container>", styles: [".claim-button{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;text-align:center;color:#fff!important;border-radius:64px;padding:8px 0;background-color:#ef951e;cursor:pointer;border:none;font-weight:700;width:100%;font-size:14px;margin:16px auto 0;max-width:344px}\n"] }]
240
+ args: [{ selector: 'ws-widget-karma-points', template: "<ng-container *ngIf=\"!disableKarmaPoints\">\n <ws-widget-sliders-dynamic [widgetData]=\"karmaPointsSlider\" [baseContentReadData] = \"baseContentReadData\"></ws-widget-sliders-dynamic>\n\n <ng-container *ngIf=\"btnCategory === 'claim'\">\n <button class=\"flex flex-wrap gap-1 claim-button\" (click)=\"onClickOfClaim()\" >\n <img src=\"/assets/icons/home/karma-badge.svg\" width=\"28px\" class=\"mr-2\" alt=\"karma-points image\" />\n <div *ngIf=\"btnKPData?.textBeforeIcon\">{{ btnKPData.textBeforeIcon }}</div>\n <div *ngIf=\"btnKPData.points\">{{ btnKPData.points }} {{ translateLabels(btnKPData.textAfterPoints, 'appKarmapointsPanel') }}</div>\n <div *ngIf=\"btnKPData?.textAfterIcon\">{{ translateLabels(btnKPData.textAfterIcon, 'appKarmapointsPanel') }}</div>\n </button>\n </ng-container> \n</ng-container>", styles: [".claim-button{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;text-align:center;color:#fff!important;border-radius:64px;padding:8px 0;background-color:#ef951e;cursor:pointer;border:none;font-weight:700;width:100%;font-size:14px;margin:16px auto 0;max-width:344px}\n"] }]
199
241
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.MultilingualTranslationsService }]; }, propDecorators: { content: [{
200
242
  type: Input
201
243
  }], data: [{
@@ -204,9 +246,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
204
246
  type: Input
205
247
  }], condition: [{
206
248
  type: Input
249
+ }], baseContentReadData: [{
250
+ type: Input
207
251
  }], clickClaimKarmaPoints: [{
208
252
  type: Output
209
253
  }], btnCategory: [{
210
254
  type: Input
211
255
  }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FybWEtcG9pbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL2thcm1hLXBvaW50cy9rYXJtYS1wb2ludHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2Mva2FybWEtcG9pbnRzL2thcm1hLXBvaW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQTtBQUd4RyxPQUFPLEVBQW1DLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7QUFRakYsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUNVLFNBQTJCLEVBQzNCLGdCQUFpRDtRQURqRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlDO1FBSDNELFlBQU8sR0FBVSxFQUFFLENBQUE7UUFZVixZQUFPLEdBQThCLElBQUksQ0FBQTtRQUN6QyxTQUFJLEdBQVEsRUFBRSxDQUFBO1FBQ2QsY0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUViLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUE7UUFFbkQsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFHekIsdUJBQWtCLEdBQUcsS0FBSyxDQUFBO1FBaEJ4QixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuQyxNQUFN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QUFHLFNBQVMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUN6QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtTQUMvRDtRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYSxFQUFFLElBQVM7UUFDdEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMxRSxDQUFDOytHQXJOVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwwUUNYakMsbTBCQVdlOzs0RkRBRixvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usd0JBQXdCO3FKQWtCekIsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0kscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVFLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbmltcG9ydCB7IE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsIE5zQ29udGVudCB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQta2FybWEtcG9pbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2thcm1hLXBvaW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2thcm1hLXBvaW50cy5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEthcm1hUG9pbnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBrcEFycmF5OiBhbnlbXSA9IFtdXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ1RyYW5zbGF0aW9uczogTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZVxuICApIHtcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dlYnNpdGVMYW5ndWFnZScpKSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZygnZW4nKVxuICAgICAgY29uc3QgbGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSFcbiAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKVxuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IFtdXG4gIEBJbnB1dCgpIHBDYXRlZ29yeSA9ICcnXG4gIEBJbnB1dCgpIGNvbmRpdGlvbjogYW55XG4gIEBPdXRwdXQoKSBjbGlja0NsYWltS2FybWFQb2ludHMgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKVxuICBrcERhdGE6IGFueVxuICBASW5wdXQoKSBidG5DYXRlZ29yeSA9ICcnXG4gIGthcm1hUG9pbnRzU2xpZGVyOiBhbnlcbiAgYnRuS1BEYXRhOiBhbnlcbiAgZGlzYWJsZUthcm1hUG9pbnRzID0gZmFsc2VcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbnN0cnVjdE51ZGdlRGF0YSgpXG5cbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5DQVNFX1NUVURZKSB7XG4gICAgICB0aGlzLmRpc2FibGVLYXJtYVBvaW50cyA9IHRydWVcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jb25kaXRpb24gPSBjaGFuZ2VzLmNvbmRpdGlvbiAmJiBjaGFuZ2VzLmNvbmRpdGlvbi5jdXJyZW50VmFsdWUgfHwgbnVsbFxuICAgIGlmICghdGhpcy5jb25kaXRpb24pIHsgcmV0dXJuIH1cbiAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgIXRoaXMuY29uZGl0aW9uLmV2ZW50KSB7XG4gICAgICAvLyBGb3IgVE9DIGthcm1hIHBvaW50c1xuICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbi5pc1Bvc3RBc3Nlc3NtZW50ICYmICh0aGlzLmNvbmRpdGlvbi5jb250ZW50ICYmIHRoaXMuY29uZGl0aW9uLmNvbnRlbnQuaGFzT3duUHJvcGVydHkoJ2NvbXBsZXRpb25QZXJjZW50YWdlJylcbiAgICAgICAgJiYgIXRoaXMuY29uZGl0aW9uLmNvbnRlbnQuY29tcGxldGlvblBlcmNlbnRhZ2VcbiAgICAgICAgfHwgKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQgJiYgdGhpcy5jb25kaXRpb24uY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZSA8IDEwMCkpXG4gICAgICAgICYmICF0aGlzLmNvbmRpdGlvbi5jZXJ0RGF0YSkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBY2JwQ2xhaW0pIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnQUNCUCcpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IHRoaXMuY29uZGl0aW9uLnByaW1hcnlDYXRlZ29yeS5DT1VSU0UpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzQWNicENsYWltICYmICF0aGlzLmNvbmRpdGlvbi5tb250aGx5Q2FwRXhjZWVkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnUmVzdW1lJylcbiAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09ICdMZWFybmluZyBQYXRod2F5JyApIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdSZXN1bWUnKVxuICAgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgIXRoaXMuY29uZGl0aW9uLmlzUG9zdEFzc2Vzc21lbnRcbiAgICAgICAgJiYgKCh0aGlzLmNvbmRpdGlvbi5jb250ZW50ICYmIHRoaXMuY29uZGl0aW9uLmNvbnRlbnQuY29tcGxldGlvblBlcmNlbnRhZ2UgPT09IDEwMClcbiAgICAgICAgICB8fCB0aGlzLmNvbmRpdGlvbi5jZXJ0RGF0YSkpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiB0aGlzLmNvbmRpdGlvbi5pc0FjYnBDbGFpbSAmJiAhdGhpcy5jb25kaXRpb24uaXNDbGFpbWVkKSB7XG4gICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ0FDQlAgQ0xBSU0nKVxuICAgICAgICAgIHRoaXMuYnRuQ2F0ZWdvcnkgPSAnY2xhaW0nXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IHRoaXMuY29uZGl0aW9uLnByaW1hcnlDYXRlZ29yeS5DT1VSU0UpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgIXRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiAhdGhpcy5jb25kaXRpb24ubW9udGhseUNhcEV4Y2VlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1N0YXJ0IGFnYWluJylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiB0aGlzLmNvbmRpdGlvbi5tb250aGx5Q2FwRXhjZWVkICYmICF0aGlzLmNvbmRpdGlvbi5pc0NvbXBsZXRlZFRoaXNNb250aCkge1xuICAgICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1N0YXJ0IGFnYWluJylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29uZGl0aW9uICYmIHRoaXMuY29uZGl0aW9uLmlzUG9zdEFzc2Vzc21lbnRcbiAgICAgICAgJiYgdGhpcy5jb25kaXRpb24uc2hvd1Rha2VBc3Nlc3NtZW50XG4gICAgICAgICYmIHRoaXMuY29uZGl0aW9uLnNob3dUYWtlQXNzZXNzbWVudC5wb3N0X2Fzc2Vzc21lbnQpIHtcbiAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1Rha2UgQXNzZXNzbWVudCcpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAodGhpcy5jb25kaXRpb24uY29udGVudFxuICAgICAgICAmJiB0aGlzLmNvbmRpdGlvbi5jb250ZW50LnByaW1hcnlDYXRlZ29yeSkgIT09IHRoaXMuY29uZGl0aW9uLnByaW1hcnlDYXRlZ29yeS5SRVNPVVJDRVxuICAgICAgICAmJiAhdGhpcy5jb25kaXRpb24uZW5yb2xsQnRuTG9hZGluZykge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBY2JwQ291cnNlKSB7XG4gICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ0FDQlAnKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbi5pc0FjYnBDb3Vyc2UgJiYgIXRoaXMuY29uZGl0aW9uLm1vbnRobHlDYXBFeGNlZWQgJiZcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbi51c2VyRW5yb2xsbWVudExpc3QgJiYgIXRoaXMuY29uZGl0aW9uLnVzZXJFbnJvbGxtZW50TGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnRW5yb2xsJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgIXRoaXMuY29uZGl0aW9uLmlzUG9zdEFzc2Vzc21lbnRcbiAgICAgICAgJiYgKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQgJiYgdGhpcy5jb25kaXRpb24uY29udGVudC5oYXNPd25Qcm9wZXJ0eSgnY29tcGxldGlvblBlcmNlbnRhZ2UnKVxuICAgICAgICAgICYmICF0aGlzLmNvbmRpdGlvbi5jb250ZW50LmNvbXBsZXRpb25QZXJjZW50YWdlXG4gICAgICAgICAgfHwgKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQgJiYgdGhpcy5jb25kaXRpb24uY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZSA8IDEwMCkpKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmlzQWNicENsYWltKSB7XG4gICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ0FDQlAnKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSB0aGlzLmNvbmRpdGlvbi5wcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbi5pc0FjYnBDbGFpbSAmJiAhdGhpcy5jb25kaXRpb24ubW9udGhseUNhcEV4Y2VlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1Jlc3VtZScpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uaXNQb3N0QXNzZXNzbWVudFxuICAgICAgICAmJiAodGhpcy5jb25kaXRpb24uY29udGVudCAmJiB0aGlzLmNvbmRpdGlvbi5jb250ZW50LmNvbXBsZXRpb25QZXJjZW50YWdlID09PSAxMDApKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5pc0FjYnBDb3Vyc2UgJiYgdGhpcy5jb25kaXRpb24uaXNBY2JwQ2xhaW0gJiYgIXRoaXMuY29uZGl0aW9uLmlzQ2xhaW1lZCkge1xuICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdBQ0JQIENMQUlNJylcbiAgICAgICAgICB0aGlzLmJ0bkNhdGVnb3J5ID0gJ2NsYWltJ1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSB0aGlzLmNvbmRpdGlvbi5wcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbi5pc0FjYnBDb3Vyc2UgJiYgIXRoaXMuY29uZGl0aW9uLm1vbnRobHlDYXBFeGNlZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdTdGFydCBhZ2FpbicpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbi5pc0FjYnBDb3Vyc2UgJiYgdGhpcy5jb25kaXRpb24ubW9udGhseUNhcEV4Y2VlZCAmJiAhdGhpcy5jb25kaXRpb24uaXNDb21wbGV0ZWRUaGlzTW9udGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdTdGFydCBhZ2FpbicpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgdGhpcy5jb25kaXRpb24uaXNQb3N0QXNzZXNzbWVudCAmJiB0aGlzLmNvbmRpdGlvbi5zaG93VGFrZUFzc2Vzc21lbnRcbiAgICAgICAgJiYgdGhpcy5jb25kaXRpb24uc2hvd1Rha2VBc3Nlc3NtZW50LnBvc3RfYXNzZXNzbWVudCkge1xuICAgICAgICB0aGlzLmdldEtQRGF0YSgnVGFrZSBBc3Nlc3NtZW50JylcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29uZGl0aW9uICYmIHRoaXMuY29uZGl0aW9uLnJlc3VtZURhdGEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbi51c2VyUmF0aW5nKSB7XG4gICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1JhdGUgdGhpcyBjb3Vyc2UnKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLnVzZXJSYXRpbmcpIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnRWRpdCByYXRpbmcnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBldmVudCBrYXJtYSBwb2ludHNcbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uY29tcGxldGVkQWZ0ZXJFeHBpcnkpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uICYmIHRoaXMuY29uZGl0aW9uLmlzRW5yb2xsZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uY3VycmVudEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnQ29tcGxldGUnKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5wYXN0RXZlbnQgJiYgdGhpcy5jb25kaXRpb24uZW5yb2xsZWRFdmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmVucm9sbGVkRXZlbnQuc3RhdHVzIDwgMikge1xuICAgICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5lbnJvbGxlZEV2ZW50LnN0YXR1cyA9PT0gMikge1xuICAgICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnY29tcGxldGVkJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgIXRoaXMuY29uZGl0aW9uLmlzRW5yb2xsZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uY3VycmVudEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnQ29tcGxldGUnKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEtQRGF0YShidG5UeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGE/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uZGlzcGxheUJ1dHRvbiA9PT0gYnRuVHlwZSAmJiBpdGVtLmRpc3BsYXlCdXR0b24gIT09ICdBQ0JQIENMQUlNJykge1xuICAgICAgICB0aGlzLmtwRGF0YSA9IGl0ZW1cbiAgICAgICAgaWYgKHRoaXMua3BBcnJheS5maW5kSW5kZXgoKF9vYmo6IGFueSkgPT4gX29iai5kaXNwbGF5QnV0dG9uID09PSBpdGVtLmRpc3BsYXlCdXR0b24pID09PSAtMSkge1xuICAgICAgICAgIHRoaXMua3BBcnJheS5wdXNoKHRoaXMua3BEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5kaXNwbGF5QnV0dG9uID09PSAnQUNCUCBDTEFJTScpIHtcbiAgICAgICAgdGhpcy5idG5LUERhdGEgPSBpdGVtXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uQ2xpY2tPZkNsYWltKCkge1xuICAgIHRoaXMuY2xpY2tDbGFpbUthcm1hUG9pbnRzLmVtaXQoJ2NsYWltJylcbiAgICB0aGlzLmJ0bkNhdGVnb3J5ID0gJydcbiAgfVxuXG4gIGNvbnN0cnVjdE51ZGdlRGF0YSgpIHtcbiAgICBjb25zdCBudWRnZURhdGE6IGFueSA9IHtcbiAgICAgIHR5cGU6ICdrYXJtYS1wb2ludHMnLFxuICAgICAgaWNvbnNEaXNwbGF5OiBmYWxzZSxcbiAgICAgIGNhcmRDbGFzczogJ3NsaWRlci1jb250YWluZXInLFxuICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICB3aWR0aDogJycsXG4gICAgICBzbGlkZXJEYXRhOiBbXSxcbiAgICAgIG5lZ2F0aXZlRGlzcGxheTogZmFsc2UsXG4gICAgICAnZG90LWRlZmF1bHQnOiAnZG90LWdyZXknLFxuICAgICAgJ2RvdC1hY3RpdmUnOiAnZG90LWFjdGl2ZScsXG4gICAgfVxuXG4gICAgbnVkZ2VEYXRhLnNsaWRlckRhdGEgPSBbXVxuICAgIG51ZGdlRGF0YS5zbGlkZXJEYXRhID0gdGhpcy5rcEFycmF5XG4gICAgdGhpcy5rYXJtYVBvaW50c1NsaWRlciA9IG51ZGdlRGF0YVxuICB9XG5cbiAgZ2V0RHluYW1pY1RleHQoaGVsVGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMucENhdGVnb3J5ICE9PSAnJykge1xuICAgICAgcmV0dXJuIGhlbFRleHQucmVwbGFjZSgnY291cnNlJywgdGhpcy5wQ2F0ZWdvcnkudG9Mb3dlckNhc2UoKSlcbiAgICB9XG4gICAgcmV0dXJuIGhlbFRleHRcbiAgfVxuXG4gIHRyYW5zbGF0ZUxhYmVscyhsYWJlbDogc3RyaW5nLCB0eXBlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5sYW5nVHJhbnNsYXRpb25zLnRyYW5zbGF0ZUxhYmVsV2l0aG91dHNwYWNlKGxhYmVsLCB0eXBlLCAnJylcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc2FibGVLYXJtYVBvaW50c1wiPlxuICAgIDx3cy13aWRnZXQtc2xpZGVycy1keW5hbWljIFt3aWRnZXREYXRhXT1cImthcm1hUG9pbnRzU2xpZGVyXCI+PC93cy13aWRnZXQtc2xpZGVycy1keW5hbWljPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ0bkNhdGVnb3J5ID09PSAnY2xhaW0nXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMSBjbGFpbS1idXR0b25cIiAoY2xpY2spPVwib25DbGlja09mQ2xhaW0oKVwiID5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9ob21lL2thcm1hLWJhZGdlLnN2Z1wiIHdpZHRoPVwiMjhweFwiIGNsYXNzPVwibXItMlwiIGFsdD1cImthcm1hLXBvaW50cyBpbWFnZVwiIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYnRuS1BEYXRhPy50ZXh0QmVmb3JlSWNvblwiPnt7IGJ0bktQRGF0YS50ZXh0QmVmb3JlSWNvbiB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImJ0bktQRGF0YS5wb2ludHNcIj57eyBidG5LUERhdGEucG9pbnRzIH19IHt7IHRyYW5zbGF0ZUxhYmVscyhidG5LUERhdGEudGV4dEFmdGVyUG9pbnRzLCAnYXBwS2FybWFwb2ludHNQYW5lbCcpIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYnRuS1BEYXRhPy50ZXh0QWZ0ZXJJY29uXCI+e3sgdHJhbnNsYXRlTGFiZWxzKGJ0bktQRGF0YS50ZXh0QWZ0ZXJJY29uLCAnYXBwS2FybWFwb2ludHNQYW5lbCcpIH19PC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPiBcbjwvbmctY29udGFpbmVyPiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FybWEtcG9pbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtdG9jL2thcm1hLXBvaW50cy9rYXJtYS1wb2ludHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2Mva2FybWEtcG9pbnRzL2thcm1hLXBvaW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQTtBQUd4RyxPQUFPLEVBQW1DLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7QUFRakYsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUNVLFNBQTJCLEVBQzNCLGdCQUFpRDtRQURqRCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlDO1FBSDNELFlBQU8sR0FBVSxFQUFFLENBQUE7UUFZVixZQUFPLEdBQThCLElBQUksQ0FBQTtRQUN6QyxTQUFJLEdBQVEsRUFBRSxDQUFBO1FBQ2QsY0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUdiLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUE7UUFFbkQsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFHekIsdUJBQWtCLEdBQUcsS0FBSyxDQUFBO1FBakJ4QixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuQyxNQUFN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d0JBQXdCO3FKQWtCekIsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFFRSxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuXG5pbXBvcnQgeyBNdWx0aWxpbmd1YWxUcmFuc2xhdGlvbnNTZXJ2aWNlLCBOc0NvbnRlbnQgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3Mtd2lkZ2V0LWthcm1hLXBvaW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9rYXJtYS1wb2ludHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9rYXJtYS1wb2ludHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBLYXJtYVBvaW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAga3BBcnJheTogYW55W10gPSBbXVxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmdUcmFuc2xhdGlvbnM6IE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ2VuJylcbiAgICAgIGNvbnN0IGxhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykhXG4gICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZylcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSBbXVxuICBASW5wdXQoKSBwQ2F0ZWdvcnkgPSAnJ1xuICBASW5wdXQoKSBjb25kaXRpb246IGFueVxuICBASW5wdXQoKSBiYXNlQ29udGVudFJlYWREYXRhOiBhbnlcbiAgQE91dHB1dCgpIGNsaWNrQ2xhaW1LYXJtYVBvaW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIGtwRGF0YTogYW55XG4gIEBJbnB1dCgpIGJ0bkNhdGVnb3J5ID0gJydcbiAga2FybWFQb2ludHNTbGlkZXI6IGFueVxuICBidG5LUERhdGE6IGFueVxuICBkaXNhYmxlS2FybWFQb2ludHMgPSBmYWxzZVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uc3RydWN0TnVkZ2VEYXRhKClcblxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkNBU0VfU1RVRFkpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUthcm1hUG9pbnRzID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmRpdGlvbiA9IGNoYW5nZXMuY29uZGl0aW9uICYmIGNoYW5nZXMuY29uZGl0aW9uLmN1cnJlbnRWYWx1ZSB8fCBudWxsXG4gICAgaWYgKCF0aGlzLmNvbmRpdGlvbikgeyByZXR1cm4gfVxuICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uZXZlbnQpIHtcbiAgICAgIC8vIEZvciBUT0Mga2FybWEgcG9pbnRzXG4gICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzUG9zdEFzc2Vzc21lbnQgJiYgKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQgJiYgdGhpcy5jb25kaXRpb24uY29udGVudC5oYXNPd25Qcm9wZXJ0eSgnY29tcGxldGlvblBlcmNlbnRhZ2UnKVxuICAgICAgICAmJiAhdGhpcy5jb25kaXRpb24uY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZVxuICAgICAgICB8fCAodGhpcy5jb25kaXRpb24uY29udGVudCAmJiB0aGlzLmNvbmRpdGlvbi5jb250ZW50LmNvbXBsZXRpb25QZXJjZW50YWdlIDwgMTAwKSlcbiAgICAgICAgJiYgIXRoaXMuY29uZGl0aW9uLmNlcnREYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5pc0FjYnBDbGFpbSkge1xuICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdBQ0JQJylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gdGhpcy5jb25kaXRpb24ucHJpbWFyeUNhdGVnb3J5LkNPVVJTRSkge1xuICAgICAgICAgIGlmICghdGhpcy5jb25kaXRpb24uaXNBY2JwQ2xhaW0gJiYgIXRoaXMuY29uZGl0aW9uLm1vbnRobHlDYXBFeGNlZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdSZXN1bWUnKVxuICAgICAgICAgIH0gZWxzZSBpZiAoIHRoaXMuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gJ0xlYXJuaW5nIFBhdGh3YXknICkge1xuICAgICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1Jlc3VtZScpXG4gICAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uaXNQb3N0QXNzZXNzbWVudFxuICAgICAgICAmJiAoKHRoaXMuY29uZGl0aW9uLmNvbnRlbnQgJiYgdGhpcy5jb25kaXRpb24uY29udGVudC5jb21wbGV0aW9uUGVyY2VudGFnZSA9PT0gMTAwKVxuICAgICAgICAgIHx8IHRoaXMuY29uZGl0aW9uLmNlcnREYXRhKSkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBY2JwQ291cnNlICYmIHRoaXMuY29uZGl0aW9uLmlzQWNicENsYWltICYmICF0aGlzLmNvbmRpdGlvbi5pc0NsYWltZWQpIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnQUNCUCBDTEFJTScpXG4gICAgICAgICAgdGhpcy5idG5DYXRlZ29yeSA9ICdjbGFpbSdcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gdGhpcy5jb25kaXRpb24ucHJpbWFyeUNhdGVnb3J5LkNPVVJTRSkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uaXNBY2JwQ291cnNlICYmICF0aGlzLmNvbmRpdGlvbi5tb250aGx5Q2FwRXhjZWVkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnU3RhcnQgYWdhaW4nKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5jb25kaXRpb24uaXNBY2JwQ291cnNlICYmIHRoaXMuY29uZGl0aW9uLm1vbnRobHlDYXBFeGNlZWQgJiYgIXRoaXMuY29uZGl0aW9uLmlzQ29tcGxldGVkVGhpc01vbnRoKSB7XG4gICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnU3RhcnQgYWdhaW4nKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgdGhpcy5jb25kaXRpb24uaXNQb3N0QXNzZXNzbWVudFxuICAgICAgICAmJiB0aGlzLmNvbmRpdGlvbi5zaG93VGFrZUFzc2Vzc21lbnRcbiAgICAgICAgJiYgdGhpcy5jb25kaXRpb24uc2hvd1Rha2VBc3Nlc3NtZW50LnBvc3RfYXNzZXNzbWVudCkge1xuICAgICAgICB0aGlzLmdldEtQRGF0YSgnVGFrZSBBc3Nlc3NtZW50JylcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29uZGl0aW9uICYmICh0aGlzLmNvbmRpdGlvbi5jb250ZW50XG4gICAgICAgICYmIHRoaXMuY29uZGl0aW9uLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5KSAhPT0gdGhpcy5jb25kaXRpb24ucHJpbWFyeUNhdGVnb3J5LlJFU09VUkNFXG4gICAgICAgICYmICF0aGlzLmNvbmRpdGlvbi5lbnJvbGxCdG5Mb2FkaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5pc0FjYnBDb3Vyc2UpIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnQUNCUCcpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiAhdGhpcy5jb25kaXRpb24ubW9udGhseUNhcEV4Y2VlZCAmJlxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uLnVzZXJFbnJvbGxtZW50TGlzdCAmJiAhdGhpcy5jb25kaXRpb24udXNlckVucm9sbG1lbnRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdFbnJvbGwnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uaXNQb3N0QXNzZXNzbWVudFxuICAgICAgICAmJiAodGhpcy5jb25kaXRpb24uY29udGVudCAmJiB0aGlzLmNvbmRpdGlvbi5jb250ZW50Lmhhc093blByb3BlcnR5KCdjb21wbGV0aW9uUGVyY2VudGFnZScpXG4gICAgICAgICAgJiYgIXRoaXMuY29uZGl0aW9uLmNvbnRlbnQuY29tcGxldGlvblBlcmNlbnRhZ2VcbiAgICAgICAgICB8fCAodGhpcy5jb25kaXRpb24uY29udGVudCAmJiB0aGlzLmNvbmRpdGlvbi5jb250ZW50LmNvbXBsZXRpb25QZXJjZW50YWdlIDwgMTAwKSkpIHtcblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uaXNBY2JwQ2xhaW0pIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnQUNCUCcpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IHRoaXMuY29uZGl0aW9uLnByaW1hcnlDYXRlZ29yeS5DT1VSU0UpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzQWNicENsYWltICYmICF0aGlzLmNvbmRpdGlvbi5tb250aGx5Q2FwRXhjZWVkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnUmVzdW1lJylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29uZGl0aW9uICYmICF0aGlzLmNvbmRpdGlvbi5pc1Bvc3RBc3Nlc3NtZW50XG4gICAgICAgICYmICh0aGlzLmNvbmRpdGlvbi5jb250ZW50ICYmIHRoaXMuY29uZGl0aW9uLmNvbnRlbnQuY29tcGxldGlvblBlcmNlbnRhZ2UgPT09IDEwMCkpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiB0aGlzLmNvbmRpdGlvbi5pc0FjYnBDbGFpbSAmJiAhdGhpcy5jb25kaXRpb24uaXNDbGFpbWVkKSB7XG4gICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ0FDQlAgQ0xBSU0nKVxuICAgICAgICAgIHRoaXMuYnRuQ2F0ZWdvcnkgPSAnY2xhaW0nXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IHRoaXMuY29uZGl0aW9uLnByaW1hcnlDYXRlZ29yeS5DT1VSU0UpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiAhdGhpcy5jb25kaXRpb24ubW9udGhseUNhcEV4Y2VlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1N0YXJ0IGFnYWluJylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLmlzQWNicENvdXJzZSAmJiB0aGlzLmNvbmRpdGlvbi5tb250aGx5Q2FwRXhjZWVkICYmICF0aGlzLmNvbmRpdGlvbi5pc0NvbXBsZXRlZFRoaXNNb250aCkge1xuICAgICAgICAgICAgdGhpcy5nZXRLUERhdGEoJ1N0YXJ0IGFnYWluJylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiB0aGlzLmNvbmRpdGlvbi5pc1Bvc3RBc3Nlc3NtZW50ICYmIHRoaXMuY29uZGl0aW9uLnNob3dUYWtlQXNzZXNzbWVudFxuICAgICAgICAmJiB0aGlzLmNvbmRpdGlvbi5zaG93VGFrZUFzc2Vzc21lbnQucG9zdF9hc3Nlc3NtZW50KSB7XG4gICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdUYWtlIEFzc2Vzc21lbnQnKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgdGhpcy5jb25kaXRpb24ucmVzdW1lRGF0YSkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uLnVzZXJSYXRpbmcpIHtcbiAgICAgICAgICB0aGlzLmdldEtQRGF0YSgnUmF0ZSB0aGlzIGNvdXJzZScpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24udXNlclJhdGluZykge1xuICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdFZGl0IHJhdGluZycpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIGV2ZW50IGthcm1hIHBvaW50c1xuICAgICAgaWYgKHRoaXMuY29uZGl0aW9uICYmICF0aGlzLmNvbmRpdGlvbi5jb21wbGV0ZWRBZnRlckV4cGlyeSkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb24gJiYgdGhpcy5jb25kaXRpb24uaXNFbnJvbGxlZCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5jdXJyZW50RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdDb21wbGV0ZScpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLnBhc3RFdmVudCAmJiB0aGlzLmNvbmRpdGlvbi5lbnJvbGxlZEV2ZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb24uZW5yb2xsZWRFdmVudC5zdGF0dXMgPCAyKSB7XG4gICAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uLmVucm9sbGVkRXZlbnQuc3RhdHVzID09PSAyKSB7XG4gICAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdjb21wbGV0ZWQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbiAmJiAhdGhpcy5jb25kaXRpb24uaXNFbnJvbGxlZCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbi5jdXJyZW50RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0S1BEYXRhKCdDb21wbGV0ZScpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWRkQmFkZ2VTbGlkZSgpXG4gIH1cblxuICBnZXRLUERhdGEoYnRuVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtLmRpc3BsYXlCdXR0b24gPT09IGJ0blR5cGUgJiYgaXRlbS5kaXNwbGF5QnV0dG9uICE9PSAnQUNCUCBDTEFJTScpIHtcbiAgICAgICAgdGhpcy5rcERhdGEgPSBpdGVtXG4gICAgICAgIGlmICh0aGlzLmtwQXJyYXkuZmluZEluZGV4KChfb2JqOiBhbnkpID0+IF9vYmouZGlzcGxheUJ1dHRvbiA9PT0gaXRlbS5kaXNwbGF5QnV0dG9uKSA9PT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmtwQXJyYXkucHVzaCh0aGlzLmtwRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uZGlzcGxheUJ1dHRvbiA9PT0gJ0FDQlAgQ0xBSU0nKSB7XG4gICAgICAgIHRoaXMuYnRuS1BEYXRhID0gaXRlbVxuICAgICAgfVxuICAgIH0pXG4gIH1cbmFkZEJhZGdlU2xpZGUoKSB7XG5cbiAgY29uc3QgYmFkZ2VEZXRhaWxzID0gdGhpcy5iYXNlQ29udGVudFJlYWREYXRhPy5iYWRnZURldGFpbHNfdjFcblxuICBpZiAoIWJhZGdlRGV0YWlscyB8fCAhYmFkZ2VEZXRhaWxzLmxlbmd0aCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgYmFkZ2UgPSBiYWRnZURldGFpbHNbMF1cblxuICBpZiAoIWJhZGdlLmJhZGdlRWFybmluZ0RhdGVFbmFibGVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBiYWRnZVRpbWUgPSBiYWRnZS5iYWRnZUVhcm5pbmdEYXRlVGltZVxuICBjb25zdCBjdXJyZW50VGltZSA9IERhdGUubm93KClcblxuICBjb25zdCBiYWRnZURhdGVJU1QgPSBuZXcgRGF0ZShiYWRnZVRpbWUpLnRvTG9jYWxlU3RyaW5nKCdlbi1JTicsIHtcbiAgICB0aW1lWm9uZTogJ0FzaWEvS29sa2F0YScsXG4gIH0pXG5cbiAgY29uc29sZS5sb2coJ0JhZGdlIElTVCBUaW1lOicsIGJhZGdlRGF0ZUlTVClcbiAgY29uc3QgaXNFbGlnaWJsZXNsaWRlID0gdGhpcz8uY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2UgPT0gdW5kZWZpbmVkIHx8ICB0aGlzPy5jb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZSA8IDEwMFxuICBjb25zdCBiYWRnZVNsaWRlID0ge1xuICAgIGRpc3BsYXlCdXR0b246ICdRdWljayBMZWFybmVyIEJhZGdlJyxcbiAgICB0ZXh0QmVmb3JlSWNvbjogdGhpcy5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09IFwiQ3VyYXRlZCBQcm9ncmFtXCIgPyBiYWRnZT8uY3JpdGVyaWEgPT0gXCJwYXJ0aWFsUmFuZG9tQ29tcGxldGlvblwiID8gYEJ5IHBhcnRpYWxseSBjb21wbGV0aW5nIHRoaXMgcHJvZ3JhbSwgZWFybiBRdWljayBsZWFybmVyIEJhZGdlIChBbnkgJHtiYWRnZT8ucmVxdWlyZWRDb3Vyc2VDb21wbGV0aW9uc30gY291cnNlIG5lZWRlZClgIDogJ0J5IGNvbXBsZXRpbmcgdGhpcyBjb3Vyc2UgZWFybiBRdWljayBsZWFybmVyIEJhZGdlJyA6ICdCeSBjb21wbGV0aW5nIHRoaXMgY291cnNlIGVhcm4gUXVpY2sgbGVhcm5lciBCYWRnZScsXG4gICAgcG9pbnRzOiAnJyxcbiAgICB0ZXh0QWZ0ZXJQb2ludHM6ICcnLFxuICAgIHRvb2xUaXBUZXh0OiAncXVpY2tMZWFybmVyQmFkZ2VUaXAnLFxuICB9XG5cbmNvbnN0IGJhZGdlRXhpc3RzID0gdGhpcy5rcEFycmF5LmZpbmQoXG4gIChpdGVtOiBhbnkpID0+IGl0ZW0uZGlzcGxheUJ1dHRvbiA9PT0gJ1F1aWNrIExlYXJuZXIgQmFkZ2UnXG4pXG5cbiAgaWYgKGlzRWxpZ2libGVzbGlkZSkge1xuICAgIGlmIChiYWRnZT8uYmFkZ2VFYXJuaW5nRGF0ZUVuYWJsZWQgPT09IHRydWUgKSB7XG4gICAgaWYgKGJhZGdlVGltZSA+IGN1cnJlbnRUaW1lKSB7XG4gICAgICBpZiAoIWJhZGdlRXhpc3RzKSB7XG4gICAgICAgIHRoaXMua3BBcnJheS5wdXNoKGJhZGdlU2xpZGUpXG4gICAgICAgIHRoaXMuY29uc3RydWN0TnVkZ2VEYXRhKClcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFiYWRnZUV4aXN0cykge1xuICAgICAgdGhpcy5rcEFycmF5LnB1c2goYmFkZ2VTbGlkZSlcbiAgICAgIHRoaXMuY29uc3RydWN0TnVkZ2VEYXRhKClcbiAgICB9XG4gIH1cbiAgfVxuICBcbn1cbiAgb25DbGlja09mQ2xhaW0oKSB7XG4gICAgdGhpcy5jbGlja0NsYWltS2FybWFQb2ludHMuZW1pdCgnY2xhaW0nKVxuICAgIHRoaXMuYnRuQ2F0ZWdvcnkgPSAnJ1xuICB9XG5cbiAgY29uc3RydWN0TnVkZ2VEYXRhKCkge1xuICAgIGNvbnN0IG51ZGdlRGF0YTogYW55ID0ge1xuICAgICAgdHlwZTogJ2thcm1hLXBvaW50cycsXG4gICAgICBpY29uc0Rpc3BsYXk6IGZhbHNlLFxuICAgICAgY2FyZENsYXNzOiAnc2xpZGVyLWNvbnRhaW5lcicsXG4gICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgIHdpZHRoOiAnJyxcbiAgICAgIHNsaWRlckRhdGE6IFtdLFxuICAgICAgbmVnYXRpdmVEaXNwbGF5OiBmYWxzZSxcbiAgICAgICdkb3QtZGVmYXVsdCc6ICdkb3QtZ3JleScsXG4gICAgICAnZG90LWFjdGl2ZSc6ICdkb3QtYWN0aXZlJyxcbiAgICB9XG5cbiAgICBudWRnZURhdGEuc2xpZGVyRGF0YSA9IFtdXG4gICAgbnVkZ2VEYXRhLnNsaWRlckRhdGEgPSB0aGlzLmtwQXJyYXlcbiAgICB0aGlzLmthcm1hUG9pbnRzU2xpZGVyID0gbnVkZ2VEYXRhXG4gIH1cblxuICBnZXREeW5hbWljVGV4dChoZWxUZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5wQ2F0ZWdvcnkgIT09ICcnKSB7XG4gICAgICByZXR1cm4gaGVsVGV4dC5yZXBsYWNlKCdjb3Vyc2UnLCB0aGlzLnBDYXRlZ29yeS50b0xvd2VyQ2FzZSgpKVxuICAgIH1cbiAgICByZXR1cm4gaGVsVGV4dFxuICB9XG5cbiAgdHJhbnNsYXRlTGFiZWxzKGxhYmVsOiBzdHJpbmcsIHR5cGU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmxhbmdUcmFuc2xhdGlvbnMudHJhbnNsYXRlTGFiZWxXaXRob3V0c3BhY2UobGFiZWwsIHR5cGUsICcnKVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZUthcm1hUG9pbnRzXCI+XG4gICAgPHdzLXdpZGdldC1zbGlkZXJzLWR5bmFtaWMgW3dpZGdldERhdGFdPVwia2FybWFQb2ludHNTbGlkZXJcIiBbYmFzZUNvbnRlbnRSZWFkRGF0YV0gPSBcImJhc2VDb250ZW50UmVhZERhdGFcIj48L3dzLXdpZGdldC1zbGlkZXJzLWR5bmFtaWM+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnRuQ2F0ZWdvcnkgPT09ICdjbGFpbSdcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0xIGNsYWltLWJ1dHRvblwiIChjbGljayk9XCJvbkNsaWNrT2ZDbGFpbSgpXCIgPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2hvbWUva2FybWEtYmFkZ2Uuc3ZnXCIgd2lkdGg9XCIyOHB4XCIgY2xhc3M9XCJtci0yXCIgYWx0PVwia2FybWEtcG9pbnRzIGltYWdlXCIgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJidG5LUERhdGE/LnRleHRCZWZvcmVJY29uXCI+e3sgYnRuS1BEYXRhLnRleHRCZWZvcmVJY29uIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYnRuS1BEYXRhLnBvaW50c1wiPnt7IGJ0bktQRGF0YS5wb2ludHMgfX0ge3sgdHJhbnNsYXRlTGFiZWxzKGJ0bktQRGF0YS50ZXh0QWZ0ZXJQb2ludHMsICdhcHBLYXJtYXBvaW50c1BhbmVsJykgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJidG5LUERhdGE/LnRleHRBZnRlckljb25cIj57eyB0cmFuc2xhdGVMYWJlbHMoYnRuS1BEYXRhLnRleHRBZnRlckljb24sICdhcHBLYXJtYXBvaW50c1BhbmVsJykgfX08L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+IFxuPC9uZy1jb250YWluZXI+Il19
@@ -23,6 +23,7 @@ export class SlidersDynamicComponent {
23
23
  }
24
24
  }
25
25
  ngOnInit() {
26
+ console.log('widgetData', this.widgetData, this?.baseContentReadData);
26
27
  this.reInitiateSlideInterval();
27
28
  }
28
29
  reInitiateSlideInterval() {
@@ -98,15 +99,17 @@ export class SlidersDynamicComponent {
98
99
  return this.langTranslations.translateLabelWithoutspace(label, type, '');
99
100
  }
100
101
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SlidersDynamicComponent, deps: [{ token: i1.EventService }, { token: i2.TranslateService }, { token: i1.MultilingualTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SlidersDynamicComponent, selector: "ws-widget-sliders-dynamic", inputs: { widgetData: "widgetData" }, host: { properties: { "id": "this.id" } }, ngImport: i0, template: "<div class=\"banner-container\" (swipeleft)=\"slideTo(currentIndex + 1)\" [ngClass]=\"widgetData?.cardClass\" (swiperight)=\"slideTo(currentIndex - 1)\" [ngStyle]=\"{'min-height': widgetData?.height}\" *ngIf=\"widgetData?.sliderData?.length > 0\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a (click)=\"raiseTelemetry(widgetData.sliderData[currentIndex].redirectUrl)\"\n [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-overlay\"\n [ngClass]=\"{'cursor-auto': !widgetData.sliderData[currentIndex].redirectUrl}\">\n <div class=\"banner WidgetInstanceId\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <img i18n-alt alt=\"Page Banner\" [src]=\"slide.banners\" wsUtilsImageResponsive class=\"banner-image\" />\n </div>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'data'\">\n <div class=\"banner WidgetInstanceId flex margin-bottom-xs\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m \">\n {{ widgetData.sliderData[currentIndex].title }}\n </div>\n <div class=\"flex data-analysis flex-middle\" [ngClass]=\"widgetData.sliderData[currentIndex].colorData\" *ngIf=\"widgetData.sliderData[currentIndex].data\">\n <mat-icon class=\"icon-stats\">{{ widgetData.sliderData[currentIndex].icon }}</mat-icon>\n <p class=\"margin-remove text-no-wrap\">{{ widgetData.sliderData[currentIndex].data }}</p>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData?.type === 'tips'\">\n <ng-container *ngFor=\"let slide of widgetData?.sliderData; let i = index\">\n <div class=\"tips banner WidgetInstanceId flex margin-bottom-xs\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m\">\n {{i + 1}}. {{ slide }}\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'karma-points'\">\n <div class=\"flex flex-row items-center gap-2 mb-4\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <img src=\"/assets/icons/home/karma-badge.svg\" width=\"28px\" alt=\"karma-points image\" />\n <div class=\"text-xs\">\n <span *ngIf=\"slide?.textBeforeIcon\">{{ translateLabels(slide?.textBeforeIcon, 'appKarmapointsPanel') }}</span>&nbsp;\n <span *ngIf=\"slide?.points\" class=\"font-bold\">{{ slide?.points }} {{ translateLabels(slide?.textAfterPoints,\n 'appKarmapointsPanel') }}</span>&nbsp;\n <span *ngIf=\"slide?.textAfterIcon\">{{ translateLabels(slide?.textAfterIcon, 'appKarmapointsPanel') }}</span>\n </div>\n <mat-icon class=\"cursor-pointer ws-mat-black60-text info-icon\" [matTooltip]=\"translateLabels(slide?.toolTipText, 'appKarmapointsPanel')\"\n *ngIf=\"slide?.toolTipText\">info_outline</mat-icon>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"banner-meta\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-title text-truncate\"\n *ngIf=\"widgetData.sliderData[currentIndex].title\" [title]=\"widgetData.sliderData[currentIndex].title\">\n {{ widgetData.sliderData[currentIndex].title }}\n </a>\n </ng-container>\n\n <div class=\"dots-container\" *ngIf=\"widgetData.sliderData?.length > 1\">\n <span class=\"dot\" [ngClass]=\"{ active: j === currentIndex, 'dot-active': j === currentIndex, 'dot-grey': j !== currentIndex }\" *ngFor=\"let slide of widgetData.sliderData; let j = index\" (click)=\"slideTo(j)\"></span>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.iconsDisplay\">\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"prev\" (click)=\"slideTo(currentIndex - 1)\">&#10094;</a>\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"next\" (click)=\"slideTo(currentIndex + 1)\">&#10095;</a>\n </ng-container>\n\n</div>\n", styles: [".banner-container{min-height:243px;overflow:hidden;position:relative;margin:auto;border-radius:12px}.banner-overlay{z-index:1;top:0;left:0;width:100%;height:100%;background:linear-gradient(to left,#00000040,#0000 15% 85%,#00000040)}.banner{-webkit-animation-name:fade;-webkit-animation-duration:1.5s;animation-name:fade;animation-duration:1.5s;min-height:50px}.banner .banner-image{width:100%;min-height:243px;display:block;border-radius:12px}.tips{min-height:30px}.banner-meta{text-align:center;z-index:2;padding:4px 8px;position:absolute;bottom:0;left:50%;border-radius:12px;transform:translate(-50%);box-sizing:border-box}.banner-meta .banner-title{color:#f2f2f2;margin-bottom:4px;font-size:1.1rem}.banner-meta .dots-container{padding:4px;display:flex;align-items:center;justify-content:center}.banner-meta .dots-container .dot{cursor:pointer;height:4px;width:4px;margin:0 6px;background-color:#d3d3d3;box-shadow:1px 1px 4px #0009;border-radius:50%;display:inline-block;transition:background-color .5s ease!important}.banner-meta .dots-container .dot.active{background-color:#f0f0f0;height:5px;width:5px}@keyframes fade{0%{opacity:.25}to{opacity:1}}.prev,.next{cursor:pointer;position:absolute;top:50%;transform:translateY(-50%);padding:16px;color:#fff;font-weight:700;font-size:24px;z-index:2;border-radius:0 3px 3px 0}.next{right:0;border-radius:3px 0 0 3px}.banner-container-solo{overflow:hidden;margin:auto;border-radius:12px}.banner-image-solo{width:100%;display:block;border-radius:12px}.banner-data{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.color-green{color:#1d8923}.color-red{color:#c41112}.data-analysis{opacity:1;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.21px;text-align:left;line-height:16px}.data-analysis mat-icon{width:18px;height:18px;font-size:1.2rem}.dot-grey{opacity:.2;background-color:#1b2133!important;width:4px!important;height:4px!important;box-shadow:unset!important}.dot-active{width:8px!important;height:4px!important;border-radius:2px!important;opacity:1;background-color:#f3962f!important;box-shadow:unset!important}.slider-container{background:#ef951e29!important;padding:16px}.text-no-wrap{text-wrap:nowrap;margin-top:4px!important}.icon-stats{margin-right:4px}.info-icon{width:16px;height:16px;font-size:16px}.cursor-auto{cursor:auto}.flex{display:flex}.flex-middle{align-items:center}.flex-row{flex-direction:row}.items-center{align-items:center}.gap-2{gap:.5rem}.mb-4{margin-bottom:1rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.margin-bottom-xs{margin-bottom:4px}.margin-right-m{margin-right:16px}.margin-remove{margin:0}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cursor-pointer{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.ImageResponsiveDirective, selector: "[wsUtilsImageResponsive]", inputs: ["src"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SlidersDynamicComponent, selector: "ws-widget-sliders-dynamic", inputs: { widgetData: "widgetData", baseContentReadData: "baseContentReadData" }, host: { properties: { "id": "this.id" } }, ngImport: i0, template: "<div class=\"banner-container\" (swipeleft)=\"slideTo(currentIndex + 1)\" [ngClass]=\"widgetData?.cardClass\" (swiperight)=\"slideTo(currentIndex - 1)\" [ngStyle]=\"{'min-height': widgetData?.height}\" *ngIf=\"widgetData?.sliderData?.length > 0\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a (click)=\"raiseTelemetry(widgetData.sliderData[currentIndex].redirectUrl)\"\n [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-overlay\"\n [ngClass]=\"{'cursor-auto': !widgetData.sliderData[currentIndex].redirectUrl}\">\n <div class=\"banner WidgetInstanceId\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <img i18n-alt alt=\"Page Banner\" [src]=\"slide.banners\" wsUtilsImageResponsive class=\"banner-image\" />\n </div>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'data'\">\n <div class=\"banner WidgetInstanceId flex margin-bottom-xs\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m \">\n {{ widgetData.sliderData[currentIndex].title }}\n </div>\n <div class=\"flex data-analysis flex-middle\" [ngClass]=\"widgetData.sliderData[currentIndex].colorData\" *ngIf=\"widgetData.sliderData[currentIndex].data\">\n <mat-icon class=\"icon-stats\">{{ widgetData.sliderData[currentIndex].icon }}</mat-icon>\n <p class=\"margin-remove text-no-wrap\">{{ widgetData.sliderData[currentIndex].data }}</p>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData?.type === 'tips'\">\n <ng-container *ngFor=\"let slide of widgetData?.sliderData; let i = index\">\n <div class=\"tips banner WidgetInstanceId flex margin-bottom-xs\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m\">\n {{i + 1}}. {{ slide }}\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'karma-points'\">\n <div class=\"flex flex-row items-center gap-2 mb-4\" *ngFor=\"let slide of widgetData.sliderData; let i = index\"\n [hidden]=\"i !== currentIndex\">\n <img [src]=\"slide?.displayButton === 'Quick Learner Badge'\n ? '/assets/icons/badges/Medal.svg'\n : '/assets/icons/home/karma-badge.svg'\" width=\"28px\" alt=\"karma-points image\" />\n <div class=\"text-xs\">\n <span *ngIf=\"slide?.textBeforeIcon\">\n {{\n slide?.displayButton === 'Quick Learner Badge'\n ? slide?.textBeforeIcon\n : translateLabels(slide?.textBeforeIcon, 'appKarmapointsPanel')\n }}\n </span>&nbsp;\n <span *ngIf=\"slide?.points\" class=\"font-bold\">{{ slide?.points }} {{ translateLabels(slide?.textAfterPoints,\n 'appKarmapointsPanel') }}</span>&nbsp;\n <span *ngIf=\"slide?.textAfterIcon\">{{ translateLabels(slide?.textAfterIcon, 'appKarmapointsPanel') }}</span>\n </div>\n <mat-icon class=\"cursor-pointer ws-mat-black60-text info-icon\" [matTooltip]=\"translateLabels(slide?.toolTipText, 'appKarmapointsPanel')\"\n *ngIf=\"slide?.toolTipText && slide?.displayButton !== 'Quick Learner Badge'\">info_outline</mat-icon>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"banner-meta\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-title text-truncate\"\n *ngIf=\"widgetData.sliderData[currentIndex].title\" [title]=\"widgetData.sliderData[currentIndex].title\">\n {{ widgetData.sliderData[currentIndex].title }}\n </a>\n </ng-container>\n\n <div class=\"dots-container\" *ngIf=\"widgetData.sliderData?.length > 1\">\n <span class=\"dot\" [ngClass]=\"{ active: j === currentIndex, 'dot-active': j === currentIndex, 'dot-grey': j !== currentIndex }\" *ngFor=\"let slide of widgetData.sliderData; let j = index\" (click)=\"slideTo(j)\"></span>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.iconsDisplay\">\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"prev\" (click)=\"slideTo(currentIndex - 1)\">&#10094;</a>\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"next\" (click)=\"slideTo(currentIndex + 1)\">&#10095;</a>\n </ng-container>\n\n</div>\n", styles: [".banner-container{min-height:243px;overflow:hidden;position:relative;margin:auto;border-radius:12px}.banner-overlay{z-index:1;top:0;left:0;width:100%;height:100%;background:linear-gradient(to left,#00000040,#0000 15% 85%,#00000040)}.banner{-webkit-animation-name:fade;-webkit-animation-duration:1.5s;animation-name:fade;animation-duration:1.5s;min-height:50px}.banner .banner-image{width:100%;min-height:243px;display:block;border-radius:12px}.tips{min-height:30px}.banner-meta{text-align:center;z-index:2;padding:4px 8px;position:absolute;bottom:0;left:50%;border-radius:12px;transform:translate(-50%);box-sizing:border-box}.banner-meta .banner-title{color:#f2f2f2;margin-bottom:4px;font-size:1.1rem}.banner-meta .dots-container{padding:4px;display:flex;align-items:center;justify-content:center}.banner-meta .dots-container .dot{cursor:pointer;height:4px;width:4px;margin:0 6px;background-color:#d3d3d3;box-shadow:1px 1px 4px #0009;border-radius:50%;display:inline-block;transition:background-color .5s ease!important}.banner-meta .dots-container .dot.active{background-color:#f0f0f0;height:5px;width:5px}@keyframes fade{0%{opacity:.25}to{opacity:1}}.prev,.next{cursor:pointer;position:absolute;top:50%;transform:translateY(-50%);padding:16px;color:#fff;font-weight:700;font-size:24px;z-index:2;border-radius:0 3px 3px 0}.next{right:0;border-radius:3px 0 0 3px}.banner-container-solo{overflow:hidden;margin:auto;border-radius:12px}.banner-image-solo{width:100%;display:block;border-radius:12px}.banner-data{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.color-green{color:#1d8923}.color-red{color:#c41112}.data-analysis{opacity:1;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.21px;text-align:left;line-height:16px}.data-analysis mat-icon{width:18px;height:18px;font-size:1.2rem}.dot-grey{opacity:.2;background-color:#1b2133!important;width:4px!important;height:4px!important;box-shadow:unset!important}.dot-active{width:8px!important;height:4px!important;border-radius:2px!important;opacity:1;background-color:#f3962f!important;box-shadow:unset!important}.slider-container{background:#ef951e29!important;padding:16px}.text-no-wrap{text-wrap:nowrap;margin-top:4px!important}.icon-stats{margin-right:4px}.info-icon{width:16px;height:16px;font-size:16px}.cursor-auto{cursor:auto}.flex{display:flex}.flex-middle{align-items:center}.flex-row{flex-direction:row}.items-center{align-items:center}.gap-2{gap:.5rem}.mb-4{margin-bottom:1rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.margin-bottom-xs{margin-bottom:4px}.margin-right-m{margin-right:16px}.margin-remove{margin:0}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cursor-pointer{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.ImageResponsiveDirective, selector: "[wsUtilsImageResponsive]", inputs: ["src"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
102
103
  }
103
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SlidersDynamicComponent, decorators: [{
104
105
  type: Component,
105
- args: [{ selector: 'ws-widget-sliders-dynamic', template: "<div class=\"banner-container\" (swipeleft)=\"slideTo(currentIndex + 1)\" [ngClass]=\"widgetData?.cardClass\" (swiperight)=\"slideTo(currentIndex - 1)\" [ngStyle]=\"{'min-height': widgetData?.height}\" *ngIf=\"widgetData?.sliderData?.length > 0\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a (click)=\"raiseTelemetry(widgetData.sliderData[currentIndex].redirectUrl)\"\n [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-overlay\"\n [ngClass]=\"{'cursor-auto': !widgetData.sliderData[currentIndex].redirectUrl}\">\n <div class=\"banner WidgetInstanceId\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <img i18n-alt alt=\"Page Banner\" [src]=\"slide.banners\" wsUtilsImageResponsive class=\"banner-image\" />\n </div>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'data'\">\n <div class=\"banner WidgetInstanceId flex margin-bottom-xs\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m \">\n {{ widgetData.sliderData[currentIndex].title }}\n </div>\n <div class=\"flex data-analysis flex-middle\" [ngClass]=\"widgetData.sliderData[currentIndex].colorData\" *ngIf=\"widgetData.sliderData[currentIndex].data\">\n <mat-icon class=\"icon-stats\">{{ widgetData.sliderData[currentIndex].icon }}</mat-icon>\n <p class=\"margin-remove text-no-wrap\">{{ widgetData.sliderData[currentIndex].data }}</p>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData?.type === 'tips'\">\n <ng-container *ngFor=\"let slide of widgetData?.sliderData; let i = index\">\n <div class=\"tips banner WidgetInstanceId flex margin-bottom-xs\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m\">\n {{i + 1}}. {{ slide }}\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'karma-points'\">\n <div class=\"flex flex-row items-center gap-2 mb-4\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <img src=\"/assets/icons/home/karma-badge.svg\" width=\"28px\" alt=\"karma-points image\" />\n <div class=\"text-xs\">\n <span *ngIf=\"slide?.textBeforeIcon\">{{ translateLabels(slide?.textBeforeIcon, 'appKarmapointsPanel') }}</span>&nbsp;\n <span *ngIf=\"slide?.points\" class=\"font-bold\">{{ slide?.points }} {{ translateLabels(slide?.textAfterPoints,\n 'appKarmapointsPanel') }}</span>&nbsp;\n <span *ngIf=\"slide?.textAfterIcon\">{{ translateLabels(slide?.textAfterIcon, 'appKarmapointsPanel') }}</span>\n </div>\n <mat-icon class=\"cursor-pointer ws-mat-black60-text info-icon\" [matTooltip]=\"translateLabels(slide?.toolTipText, 'appKarmapointsPanel')\"\n *ngIf=\"slide?.toolTipText\">info_outline</mat-icon>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"banner-meta\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-title text-truncate\"\n *ngIf=\"widgetData.sliderData[currentIndex].title\" [title]=\"widgetData.sliderData[currentIndex].title\">\n {{ widgetData.sliderData[currentIndex].title }}\n </a>\n </ng-container>\n\n <div class=\"dots-container\" *ngIf=\"widgetData.sliderData?.length > 1\">\n <span class=\"dot\" [ngClass]=\"{ active: j === currentIndex, 'dot-active': j === currentIndex, 'dot-grey': j !== currentIndex }\" *ngFor=\"let slide of widgetData.sliderData; let j = index\" (click)=\"slideTo(j)\"></span>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.iconsDisplay\">\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"prev\" (click)=\"slideTo(currentIndex - 1)\">&#10094;</a>\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"next\" (click)=\"slideTo(currentIndex + 1)\">&#10095;</a>\n </ng-container>\n\n</div>\n", styles: [".banner-container{min-height:243px;overflow:hidden;position:relative;margin:auto;border-radius:12px}.banner-overlay{z-index:1;top:0;left:0;width:100%;height:100%;background:linear-gradient(to left,#00000040,#0000 15% 85%,#00000040)}.banner{-webkit-animation-name:fade;-webkit-animation-duration:1.5s;animation-name:fade;animation-duration:1.5s;min-height:50px}.banner .banner-image{width:100%;min-height:243px;display:block;border-radius:12px}.tips{min-height:30px}.banner-meta{text-align:center;z-index:2;padding:4px 8px;position:absolute;bottom:0;left:50%;border-radius:12px;transform:translate(-50%);box-sizing:border-box}.banner-meta .banner-title{color:#f2f2f2;margin-bottom:4px;font-size:1.1rem}.banner-meta .dots-container{padding:4px;display:flex;align-items:center;justify-content:center}.banner-meta .dots-container .dot{cursor:pointer;height:4px;width:4px;margin:0 6px;background-color:#d3d3d3;box-shadow:1px 1px 4px #0009;border-radius:50%;display:inline-block;transition:background-color .5s ease!important}.banner-meta .dots-container .dot.active{background-color:#f0f0f0;height:5px;width:5px}@keyframes fade{0%{opacity:.25}to{opacity:1}}.prev,.next{cursor:pointer;position:absolute;top:50%;transform:translateY(-50%);padding:16px;color:#fff;font-weight:700;font-size:24px;z-index:2;border-radius:0 3px 3px 0}.next{right:0;border-radius:3px 0 0 3px}.banner-container-solo{overflow:hidden;margin:auto;border-radius:12px}.banner-image-solo{width:100%;display:block;border-radius:12px}.banner-data{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.color-green{color:#1d8923}.color-red{color:#c41112}.data-analysis{opacity:1;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.21px;text-align:left;line-height:16px}.data-analysis mat-icon{width:18px;height:18px;font-size:1.2rem}.dot-grey{opacity:.2;background-color:#1b2133!important;width:4px!important;height:4px!important;box-shadow:unset!important}.dot-active{width:8px!important;height:4px!important;border-radius:2px!important;opacity:1;background-color:#f3962f!important;box-shadow:unset!important}.slider-container{background:#ef951e29!important;padding:16px}.text-no-wrap{text-wrap:nowrap;margin-top:4px!important}.icon-stats{margin-right:4px}.info-icon{width:16px;height:16px;font-size:16px}.cursor-auto{cursor:auto}.flex{display:flex}.flex-middle{align-items:center}.flex-row{flex-direction:row}.items-center{align-items:center}.gap-2{gap:.5rem}.mb-4{margin-bottom:1rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.margin-bottom-xs{margin-bottom:4px}.margin-right-m{margin-right:16px}.margin-remove{margin:0}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cursor-pointer{cursor:pointer}\n"] }]
106
+ args: [{ selector: 'ws-widget-sliders-dynamic', template: "<div class=\"banner-container\" (swipeleft)=\"slideTo(currentIndex + 1)\" [ngClass]=\"widgetData?.cardClass\" (swiperight)=\"slideTo(currentIndex - 1)\" [ngStyle]=\"{'min-height': widgetData?.height}\" *ngIf=\"widgetData?.sliderData?.length > 0\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a (click)=\"raiseTelemetry(widgetData.sliderData[currentIndex].redirectUrl)\"\n [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-overlay\"\n [ngClass]=\"{'cursor-auto': !widgetData.sliderData[currentIndex].redirectUrl}\">\n <div class=\"banner WidgetInstanceId\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <img i18n-alt alt=\"Page Banner\" [src]=\"slide.banners\" wsUtilsImageResponsive class=\"banner-image\" />\n </div>\n </a>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'data'\">\n <div class=\"banner WidgetInstanceId flex margin-bottom-xs\" *ngFor=\"let slide of widgetData.sliderData; let i = index\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m \">\n {{ widgetData.sliderData[currentIndex].title }}\n </div>\n <div class=\"flex data-analysis flex-middle\" [ngClass]=\"widgetData.sliderData[currentIndex].colorData\" *ngIf=\"widgetData.sliderData[currentIndex].data\">\n <mat-icon class=\"icon-stats\">{{ widgetData.sliderData[currentIndex].icon }}</mat-icon>\n <p class=\"margin-remove text-no-wrap\">{{ widgetData.sliderData[currentIndex].data }}</p>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData?.type === 'tips'\">\n <ng-container *ngFor=\"let slide of widgetData?.sliderData; let i = index\">\n <div class=\"tips banner WidgetInstanceId flex margin-bottom-xs\" [hidden]=\"i !== currentIndex\">\n <div class=\"banner-data flex margin-right-m\">\n {{i + 1}}. {{ slide }}\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.type === 'karma-points'\">\n <div class=\"flex flex-row items-center gap-2 mb-4\" *ngFor=\"let slide of widgetData.sliderData; let i = index\"\n [hidden]=\"i !== currentIndex\">\n <img [src]=\"slide?.displayButton === 'Quick Learner Badge'\n ? '/assets/icons/badges/Medal.svg'\n : '/assets/icons/home/karma-badge.svg'\" width=\"28px\" alt=\"karma-points image\" />\n <div class=\"text-xs\">\n <span *ngIf=\"slide?.textBeforeIcon\">\n {{\n slide?.displayButton === 'Quick Learner Badge'\n ? slide?.textBeforeIcon\n : translateLabels(slide?.textBeforeIcon, 'appKarmapointsPanel')\n }}\n </span>&nbsp;\n <span *ngIf=\"slide?.points\" class=\"font-bold\">{{ slide?.points }} {{ translateLabels(slide?.textAfterPoints,\n 'appKarmapointsPanel') }}</span>&nbsp;\n <span *ngIf=\"slide?.textAfterIcon\">{{ translateLabels(slide?.textAfterIcon, 'appKarmapointsPanel') }}</span>\n </div>\n <mat-icon class=\"cursor-pointer ws-mat-black60-text info-icon\" [matTooltip]=\"translateLabels(slide?.toolTipText, 'appKarmapointsPanel')\"\n *ngIf=\"slide?.toolTipText && slide?.displayButton !== 'Quick Learner Badge'\">info_outline</mat-icon>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"banner-meta\">\n <ng-container *ngIf=\"widgetData.type === 'image'\">\n <a [routerLink]=\" !isOpenInNewTab ? widgetData.sliderData[currentIndex].redirectUrl : './'\" class=\"banner-title text-truncate\"\n *ngIf=\"widgetData.sliderData[currentIndex].title\" [title]=\"widgetData.sliderData[currentIndex].title\">\n {{ widgetData.sliderData[currentIndex].title }}\n </a>\n </ng-container>\n\n <div class=\"dots-container\" *ngIf=\"widgetData.sliderData?.length > 1\">\n <span class=\"dot\" [ngClass]=\"{ active: j === currentIndex, 'dot-active': j === currentIndex, 'dot-grey': j !== currentIndex }\" *ngFor=\"let slide of widgetData.sliderData; let j = index\" (click)=\"slideTo(j)\"></span>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"widgetData.iconsDisplay\">\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"prev\" (click)=\"slideTo(currentIndex - 1)\">&#10094;</a>\n <a *ngIf=\"widgetData.sliderData?.length > 1\" role=\"button\" class=\"next\" (click)=\"slideTo(currentIndex + 1)\">&#10095;</a>\n </ng-container>\n\n</div>\n", styles: [".banner-container{min-height:243px;overflow:hidden;position:relative;margin:auto;border-radius:12px}.banner-overlay{z-index:1;top:0;left:0;width:100%;height:100%;background:linear-gradient(to left,#00000040,#0000 15% 85%,#00000040)}.banner{-webkit-animation-name:fade;-webkit-animation-duration:1.5s;animation-name:fade;animation-duration:1.5s;min-height:50px}.banner .banner-image{width:100%;min-height:243px;display:block;border-radius:12px}.tips{min-height:30px}.banner-meta{text-align:center;z-index:2;padding:4px 8px;position:absolute;bottom:0;left:50%;border-radius:12px;transform:translate(-50%);box-sizing:border-box}.banner-meta .banner-title{color:#f2f2f2;margin-bottom:4px;font-size:1.1rem}.banner-meta .dots-container{padding:4px;display:flex;align-items:center;justify-content:center}.banner-meta .dots-container .dot{cursor:pointer;height:4px;width:4px;margin:0 6px;background-color:#d3d3d3;box-shadow:1px 1px 4px #0009;border-radius:50%;display:inline-block;transition:background-color .5s ease!important}.banner-meta .dots-container .dot.active{background-color:#f0f0f0;height:5px;width:5px}@keyframes fade{0%{opacity:.25}to{opacity:1}}.prev,.next{cursor:pointer;position:absolute;top:50%;transform:translateY(-50%);padding:16px;color:#fff;font-weight:700;font-size:24px;z-index:2;border-radius:0 3px 3px 0}.next{right:0;border-radius:3px 0 0 3px}.banner-container-solo{overflow:hidden;margin:auto;border-radius:12px}.banner-image-solo{width:100%;display:block;border-radius:12px}.banner-data{opacity:1;color:#000000de;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.color-green{color:#1d8923}.color-red{color:#c41112}.data-analysis{opacity:1;font-family:Lato-Regular;font-size:.75rem;font-weight:400;font-style:normal;letter-spacing:.21px;text-align:left;line-height:16px}.data-analysis mat-icon{width:18px;height:18px;font-size:1.2rem}.dot-grey{opacity:.2;background-color:#1b2133!important;width:4px!important;height:4px!important;box-shadow:unset!important}.dot-active{width:8px!important;height:4px!important;border-radius:2px!important;opacity:1;background-color:#f3962f!important;box-shadow:unset!important}.slider-container{background:#ef951e29!important;padding:16px}.text-no-wrap{text-wrap:nowrap;margin-top:4px!important}.icon-stats{margin-right:4px}.info-icon{width:16px;height:16px;font-size:16px}.cursor-auto{cursor:auto}.flex{display:flex}.flex-middle{align-items:center}.flex-row{flex-direction:row}.items-center{align-items:center}.gap-2{gap:.5rem}.mb-4{margin-bottom:1rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.margin-bottom-xs{margin-bottom:4px}.margin-right-m{margin-right:16px}.margin-remove{margin:0}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cursor-pointer{cursor:pointer}\n"] }]
106
107
  }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.TranslateService }, { type: i1.MultilingualTranslationsService }]; }, propDecorators: { widgetData: [{
107
108
  type: Input
109
+ }], baseContentReadData: [{
110
+ type: Input
108
111
  }], id: [{
109
112
  type: HostBinding,
110
113
  args: ['id']
111
114
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVycy1keW5hbWljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9zbGlkZXJzLWR5bmFtaWMvc2xpZGVycy1keW5hbWljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9zbGlkZXJzLWR5bmFtaWMvc2xpZGVycy1keW5hbWljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUVyRSxPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxPQUFPLEVBQWlELFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7OztBQU85RixNQUFNLE9BQU8sdUJBQXVCO0lBT2xDLFlBQ1UsTUFBb0IsRUFDcEIsU0FBMkIsRUFDM0IsZ0JBQWlEO1FBRmpELFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQVBwRCxPQUFFLEdBQUcsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtRQUNyQyxpQkFBWSxHQUFHLENBQUMsQ0FBQTtRQUNoQixrQkFBYSxHQUF3QixJQUFJLENBQUE7UUFNdkMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBRSxDQUFBO1lBQ3JELElB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VyxDQUFDLENBQUE7YUFDckM7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsU0FBNkI7UUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ25CLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBO1FBRXpDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQ2hDO1lBQ0UsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsUUFBUTtTQUNsQixFQUNEO1lBQ0UsT0FBTyxFQUFFLEdBQUc7WUFDWixpQkFBaUIsRUFBRSxTQUFTO1NBQzdCLEVBQ0Q7WUFDRSxTQUFTLEVBQUUsUUFBUTtZQUNuQixNQUFNLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU87U0FDaEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUN0QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7K0dBakdVLHVCQUF1QjttR0FBdkIsdUJBQXVCLGtKQ1hwQyw4cElBb0VBOzs0RkR6RGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLDJCQUEyQjtnTEFLNUIsVUFBVTtzQkFBbEIsS0FBSztnQkFFQyxFQUFFO3NCQURSLFdBQVc7dUJBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgSUNhcm91c2VsIH0gZnJvbSAnLi9zbGlkZXJzLWR5bmFtaWMubW9kZWwnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGludGVydmFsIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtc2xpZGVycy1keW5hbWljJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlcnMtZHluYW1pYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NsaWRlcnMtZHluYW1pYy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJzRHluYW1pY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHdpZGdldERhdGEhOiBJQ2Fyb3VzZWxcbiAgQEhvc3RCaW5kaW5nKCdpZCcpXG4gIHB1YmxpYyBpZCA9IGBiYW5uZXJfJHtNYXRoLnJhbmRvbSgpfWBcbiAgY3VycmVudEluZGV4ID0gMFxuICBzbGlkZUludGVydmFsOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5nVHJhbnNsYXRpb25zOiBNdWx0aWxpbmd1YWxUcmFuc2xhdGlvbnNTZXJ2aWNlKSB7XG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ2VuJylcbiAgICAgIGNvbnN0IGxhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykhXG4gICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZylcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlSW5pdGlhdGVTbGlkZUludGVydmFsKClcbiAgfVxuXG4gIHJlSW5pdGlhdGVTbGlkZUludGVydmFsKCkge1xuICAgIGlmICh0aGlzLndpZGdldERhdGEgJiYgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGEgJiYgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGEubGVuZ3RoID4gMSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVJbnRlcnZhbCkge1xuICAgICAgICAgIHRoaXMuc2xpZGVJbnRlcnZhbC51bnN1YnNjcmliZSgpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuc2xpZGVJbnRlcnZhbCA9IGludGVydmFsKDgwMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4ID09PSB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDBcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggKz0gMVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzbGlkZVRvKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy53aWRnZXREYXRhICYmIHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhKSB7XG4gICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4XG4gICAgICB9IGVsc2UgaWYgKGluZGV4ID09PSB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSAwXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhLmxlbmd0aCArIGluZGV4XG4gICAgICB9XG4gICAgICB0aGlzLnJlSW5pdGlhdGVTbGlkZUludGVydmFsKClcbiAgICB9XG4gIH1cblxuICBnZXQgaXNPcGVuSW5OZXdUYWIoKSB7XG4gICAgaWYgKHRoaXMud2lkZ2V0RGF0YSAmJiB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YSkge1xuICAgICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YVt0aGlzLmN1cnJlbnRJbmRleF1cbiAgICAgIGlmIChjdXJyZW50RGF0YSAmJiBjdXJyZW50RGF0YS5yZWRpcmVjdFVybCAmJiBjdXJyZW50RGF0YS5yZWRpcmVjdFVybC5pbmNsdWRlcygnbWFpbHRvJykgfHxcbiAgICAgICB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YVt0aGlzLmN1cnJlbnRJbmRleF0/Lm9wZW5Jbk5ld1RhYikge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIG9wZW5Jbk5ld1RhYigpIHtcbiAgICBpZiAodGhpcy53aWRnZXREYXRhICYmIHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhKSB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhW3RoaXMuY3VycmVudEluZGV4XVxuICAgICAgaWYgKGN1cnJlbnREYXRhICYmIGN1cnJlbnREYXRhLnJlZGlyZWN0VXJsICYmIGN1cnJlbnREYXRhLnJlZGlyZWN0VXJsLmluY2x1ZGVzKCdtYWlsdG8nKSB8fFxuICAgICAgIHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhW3RoaXMuY3VycmVudEluZGV4XT8ub3BlbkluTmV3VGFiKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKGN1cnJlbnREYXRhLnJlZGlyZWN0VXJsKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJhaXNlVGVsZW1ldHJ5KGJhbm5lclVybDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5vcGVuSW5OZXdUYWIoKVxuICAgIGNvbnN0IHBhdGggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgnLycsICcnKVxuICAgIGNvbnN0IHVybCA9IHBhdGggKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoXG5cbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiAnY2xpY2snLFxuICAgICAgICBzdWJUeXBlOiAnYmFubmVyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhZ2VVcmw6IHVybCxcbiAgICAgICAgYmFubmVyUmVkaXJlY3RVcmw6IGJhbm5lclVybCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHBhZ2VJZEV4dDogJ2Jhbm5lcicsXG4gICAgICAgIG1vZHVsZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeW1vZHVsZXMuQ09OVEVOVCxcbiAgICB9KVxuICB9XG5cbiAgdHJhbnNsYXRlTGFiZWxzKGxhYmVsOiBzdHJpbmcsIHR5cGU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmxhbmdUcmFuc2xhdGlvbnMudHJhbnNsYXRlTGFiZWxXaXRob3V0c3BhY2UobGFiZWwsIHR5cGUsICcnKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYmFubmVyLWNvbnRhaW5lclwiIChzd2lwZWxlZnQpPVwic2xpZGVUbyhjdXJyZW50SW5kZXggKyAxKVwiIFtuZ0NsYXNzXT1cIndpZGdldERhdGE/LmNhcmRDbGFzc1wiIChzd2lwZXJpZ2h0KT1cInNsaWRlVG8oY3VycmVudEluZGV4IC0gMSlcIiBbbmdTdHlsZV09XCJ7J21pbi1oZWlnaHQnOiB3aWRnZXREYXRhPy5oZWlnaHR9XCIgKm5nSWY9XCJ3aWRnZXREYXRhPy5zbGlkZXJEYXRhPy5sZW5ndGggPiAwXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXREYXRhLnR5cGUgPT09ICdpbWFnZSdcIj5cbiAgICA8YSAoY2xpY2spPVwicmFpc2VUZWxlbWV0cnkod2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0ucmVkaXJlY3RVcmwpXCJcbiAgICBbcm91dGVyTGlua109XCIgIWlzT3BlbkluTmV3VGFiID8gd2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0ucmVkaXJlY3RVcmwgOiAnLi8nXCIgY2xhc3M9XCJiYW5uZXItb3ZlcmxheVwiXG4gICAgW25nQ2xhc3NdPVwieydjdXJzb3ItYXV0byc6ICF3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS5yZWRpcmVjdFVybH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXIgV2lkZ2V0SW5zdGFuY2VJZFwiICpuZ0Zvcj1cImxldCBzbGlkZSBvZiB3aWRnZXREYXRhLnNsaWRlckRhdGE7IGxldCBpID0gaW5kZXhcIiBbaGlkZGVuXT1cImkgIT09IGN1cnJlbnRJbmRleFwiPlxuICAgICAgICA8aW1nIGkxOG4tYWx0IGFsdD1cIlBhZ2UgQmFubmVyXCIgW3NyY109XCJzbGlkZS5iYW5uZXJzXCIgd3NVdGlsc0ltYWdlUmVzcG9uc2l2ZSBjbGFzcz1cImJhbm5lci1pbWFnZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2E+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXREYXRhLnR5cGUgPT09ICdkYXRhJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJiYW5uZXIgV2lkZ2V0SW5zdGFuY2VJZCBmbGV4IG1hcmdpbi1ib3R0b20teHNcIiAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygd2lkZ2V0RGF0YS5zbGlkZXJEYXRhOyBsZXQgaSA9IGluZGV4XCIgW2hpZGRlbl09XCJpICE9PSBjdXJyZW50SW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXItZGF0YSBmbGV4IG1hcmdpbi1yaWdodC1tIFwiPlxuICAgICAgICB7eyB3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBkYXRhLWFuYWx5c2lzIGZsZXgtbWlkZGxlXCIgW25nQ2xhc3NdPVwid2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0uY29sb3JEYXRhXCIgKm5nSWY9XCJ3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS5kYXRhXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc3RhdHNcIj57eyB3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgPHAgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlIHRleHQtbm8td3JhcFwiPnt7IHdpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLmRhdGEgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldERhdGE/LnR5cGUgPT09ICd0aXBzJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHdpZGdldERhdGE/LnNsaWRlckRhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0aXBzIGJhbm5lciBXaWRnZXRJbnN0YW5jZUlkIGZsZXggbWFyZ2luLWJvdHRvbS14c1wiIFtoaWRkZW5dPVwiaSAhPT0gY3VycmVudEluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXItZGF0YSBmbGV4IG1hcmdpbi1yaWdodC1tXCI+XG4gICAgICAgICAge3tpICsgMX19LiB7eyBzbGlkZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwid2lkZ2V0RGF0YS50eXBlID09PSAna2FybWEtcG9pbnRzJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi00XCIgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHdpZGdldERhdGEuc2xpZGVyRGF0YTsgbGV0IGkgPSBpbmRleFwiIFtoaWRkZW5dPVwiaSAhPT0gY3VycmVudEluZGV4XCI+XG4gICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvaG9tZS9rYXJtYS1iYWRnZS5zdmdcIiB3aWR0aD1cIjI4cHhcIiBhbHQ9XCJrYXJtYS1wb2ludHMgaW1hZ2VcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzbGlkZT8udGV4dEJlZm9yZUljb25cIj57eyB0cmFuc2xhdGVMYWJlbHMoc2xpZGU/LnRleHRCZWZvcmVJY29uLCAnYXBwS2FybWFwb2ludHNQYW5lbCcpIH19PC9zcGFuPiZuYnNwO1xuICAgICAgICA8c3BhbiAqbmdJZj1cInNsaWRlPy5wb2ludHNcIiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHNsaWRlPy5wb2ludHMgfX0ge3sgdHJhbnNsYXRlTGFiZWxzKHNsaWRlPy50ZXh0QWZ0ZXJQb2ludHMsXG4gICAgICAgICdhcHBLYXJtYXBvaW50c1BhbmVsJykgfX08L3NwYW4+Jm5ic3A7XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2xpZGU/LnRleHRBZnRlckljb25cIj57eyB0cmFuc2xhdGVMYWJlbHMoc2xpZGU/LnRleHRBZnRlckljb24sICdhcHBLYXJtYXBvaW50c1BhbmVsJykgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHdzLW1hdC1ibGFjazYwLXRleHQgaW5mby1pY29uXCIgW21hdFRvb2x0aXBdPVwidHJhbnNsYXRlTGFiZWxzKHNsaWRlPy50b29sVGlwVGV4dCwgJ2FwcEthcm1hcG9pbnRzUGFuZWwnKVwiXG4gICAgICAgICpuZ0lmPVwic2xpZGU/LnRvb2xUaXBUZXh0XCI+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiYmFubmVyLW1ldGFcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXREYXRhLnR5cGUgPT09ICdpbWFnZSdcIj5cbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiICFpc09wZW5Jbk5ld1RhYiA/IHdpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLnJlZGlyZWN0VXJsIDogJy4vJ1wiIGNsYXNzPVwiYmFubmVyLXRpdGxlIHRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAqbmdJZj1cIndpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLnRpdGxlXCIgW3RpdGxlXT1cIndpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLnRpdGxlXCI+XG4gICAgICAgICAge3sgd2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0udGl0bGUgfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkb3RzLWNvbnRhaW5lclwiICpuZ0lmPVwid2lkZ2V0RGF0YS5zbGlkZXJEYXRhPy5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGogPT09IGN1cnJlbnRJbmRleCwgJ2RvdC1hY3RpdmUnOiBqID09PSBjdXJyZW50SW5kZXgsICdkb3QtZ3JleSc6IGogIT09IGN1cnJlbnRJbmRleCB9XCIgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHdpZGdldERhdGEuc2xpZGVyRGF0YTsgbGV0IGogPSBpbmRleFwiIChjbGljayk9XCJzbGlkZVRvKGopXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXREYXRhLmljb25zRGlzcGxheVwiPlxuICAgIDxhICpuZ0lmPVwid2lkZ2V0RGF0YS5zbGlkZXJEYXRhPy5sZW5ndGggPiAxXCIgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwicHJldlwiIChjbGljayk9XCJzbGlkZVRvKGN1cnJlbnRJbmRleCAtIDEpXCI+JiMxMDA5NDs8L2E+XG4gICAgPGEgKm5nSWY9XCJ3aWRnZXREYXRhLnNsaWRlckRhdGE/Lmxlbmd0aCA+IDFcIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJuZXh0XCIgKGNsaWNrKT1cInNsaWRlVG8oY3VycmVudEluZGV4ICsgMSlcIj4mIzEwMDk1OzwvYT5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVycy1keW5hbWljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9zbGlkZXJzLWR5bmFtaWMvc2xpZGVycy1keW5hbWljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9zbGlkZXJzLWR5bmFtaWMvc2xpZGVycy1keW5hbWljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUVyRSxPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUU3QyxPQUFPLEVBQWlELFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFBOzs7Ozs7OztBQU85RixNQUFNLE9BQU8sdUJBQXVCO0lBUWxDLFlBQ1UsTUFBb0IsRUFDcEIsU0FBMkIsRUFDM0IsZ0JBQWlEO1FBRmpELFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQVBwRCxPQUFFLEdBQUcsVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtRQUNyQyxpQkFBWSxHQUFHLENBQUMsQ0FBQTtRQUNoQixrQkFBYSxHQUF3QixJQUFJLENBQUE7UUFNdkMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBRSxDQUFBO1lBQ3JELElB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fSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgSUNhcm91c2VsIH0gZnJvbSAnLi9zbGlkZXJzLWR5bmFtaWMubW9kZWwnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGludGVydmFsIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtc2xpZGVycy1keW5hbWljJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlcnMtZHluYW1pYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NsaWRlcnMtZHluYW1pYy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJzRHluYW1pY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHdpZGdldERhdGEhOiBJQ2Fyb3VzZWxcbiAgQElucHV0KCkgYmFzZUNvbnRlbnRSZWFkRGF0YSA6IGFueTtcbiAgQEhvc3RCaW5kaW5nKCdpZCcpXG4gIHB1YmxpYyBpZCA9IGBiYW5uZXJfJHtNYXRoLnJhbmRvbSgpfWBcbiAgY3VycmVudEluZGV4ID0gMFxuICBzbGlkZUludGVydmFsOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5nVHJhbnNsYXRpb25zOiBNdWx0aWxpbmd1YWxUcmFuc2xhdGlvbnNTZXJ2aWNlKSB7XG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ2VuJylcbiAgICAgIGNvbnN0IGxhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykhXG4gICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZylcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZygnd2lkZ2V0RGF0YScsIHRoaXMud2lkZ2V0RGF0YSx0aGlzPy5iYXNlQ29udGVudFJlYWREYXRhKVxuICAgIHRoaXMucmVJbml0aWF0ZVNsaWRlSW50ZXJ2YWwoKVxuICB9XG5cbiAgcmVJbml0aWF0ZVNsaWRlSW50ZXJ2YWwoKSB7XG4gICAgaWYgKHRoaXMud2lkZ2V0RGF0YSAmJiB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YSAmJiB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YS5sZW5ndGggPiAxKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5zbGlkZUludGVydmFsKSB7XG4gICAgICAgICAgdGhpcy5zbGlkZUludGVydmFsLnVuc3Vic2NyaWJlKClcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5zbGlkZUludGVydmFsID0gaW50ZXJ2YWwoODAwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPT09IHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gMFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCArPSAxXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNsaWRlVG8oaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLndpZGdldERhdGEgJiYgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGEpIHtcbiAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGEubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gaW5kZXhcbiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGEubGVuZ3RoICsgaW5kZXhcbiAgICAgIH1cbiAgICAgIHRoaXMucmVJbml0aWF0ZVNsaWRlSW50ZXJ2YWwoKVxuICAgIH1cbiAgfVxuXG4gIGdldCBpc09wZW5Jbk5ld1RhYigpIHtcbiAgICBpZiAodGhpcy53aWRnZXREYXRhICYmIHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhKSB7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhW3RoaXMuY3VycmVudEluZGV4XVxuICAgICAgaWYgKGN1cnJlbnREYXRhICYmIGN1cnJlbnREYXRhLnJlZGlyZWN0VXJsICYmIGN1cnJlbnREYXRhLnJlZGlyZWN0VXJsLmluY2x1ZGVzKCdtYWlsdG8nKSB8fFxuICAgICAgIHRoaXMud2lkZ2V0RGF0YS5zbGlkZXJEYXRhW3RoaXMuY3VycmVudEluZGV4XT8ub3BlbkluTmV3VGFiKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgb3BlbkluTmV3VGFiKCkge1xuICAgIGlmICh0aGlzLndpZGdldERhdGEgJiYgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGEpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGFbdGhpcy5jdXJyZW50SW5kZXhdXG4gICAgICBpZiAoY3VycmVudERhdGEgJiYgY3VycmVudERhdGEucmVkaXJlY3RVcmwgJiYgY3VycmVudERhdGEucmVkaXJlY3RVcmwuaW5jbHVkZXMoJ21haWx0bycpIHx8XG4gICAgICAgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGFbdGhpcy5jdXJyZW50SW5kZXhdPy5vcGVuSW5OZXdUYWIpIHtcbiAgICAgICAgd2luZG93Lm9wZW4oY3VycmVudERhdGEucmVkaXJlY3RVcmwpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmFpc2VUZWxlbWV0cnkoYmFubmVyVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9wZW5Jbk5ld1RhYigpXG4gICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKCcvJywgJycpXG4gICAgY29uc3QgdXJsID0gcGF0aCArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcblxuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdjbGljaycsXG4gICAgICAgIHN1YlR5cGU6ICdiYW5uZXInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGFnZVVybDogdXJsLFxuICAgICAgICBiYW5uZXJSZWRpcmVjdFVybDogYmFubmVyVXJsLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGFnZUlkRXh0OiAnYmFubmVyJyxcbiAgICAgICAgbW9kdWxlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5bW9kdWxlcy5DT05URU5ULFxuICAgIH0pXG4gIH1cblxuICB0cmFuc2xhdGVMYWJlbHMobGFiZWw6IHN0cmluZywgdHlwZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ1RyYW5zbGF0aW9ucy50cmFuc2xhdGVMYWJlbFdpdGhvdXRzcGFjZShsYWJlbCwgdHlwZSwgJycpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJiYW5uZXItY29udGFpbmVyXCIgKHN3aXBlbGVmdCk9XCJzbGlkZVRvKGN1cnJlbnRJbmRleCArIDEpXCIgW25nQ2xhc3NdPVwid2lkZ2V0RGF0YT8uY2FyZENsYXNzXCIgKHN3aXBlcmlnaHQpPVwic2xpZGVUbyhjdXJyZW50SW5kZXggLSAxKVwiIFtuZ1N0eWxlXT1cInsnbWluLWhlaWdodCc6IHdpZGdldERhdGE/LmhlaWdodH1cIiAqbmdJZj1cIndpZGdldERhdGE/LnNsaWRlckRhdGE/Lmxlbmd0aCA+IDBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldERhdGEudHlwZSA9PT0gJ2ltYWdlJ1wiPlxuICAgIDxhIChjbGljayk9XCJyYWlzZVRlbGVtZXRyeSh3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS5yZWRpcmVjdFVybClcIlxuICAgIFtyb3V0ZXJMaW5rXT1cIiAhaXNPcGVuSW5OZXdUYWIgPyB3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS5yZWRpcmVjdFVybCA6ICcuLydcIiBjbGFzcz1cImJhbm5lci1vdmVybGF5XCJcbiAgICBbbmdDbGFzc109XCJ7J2N1cnNvci1hdXRvJzogIXdpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLnJlZGlyZWN0VXJsfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJhbm5lciBXaWRnZXRJbnN0YW5jZUlkXCIgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHdpZGdldERhdGEuc2xpZGVyRGF0YTsgbGV0IGkgPSBpbmRleFwiIFtoaWRkZW5dPVwiaSAhPT0gY3VycmVudEluZGV4XCI+XG4gICAgICAgIDxpbWcgaTE4bi1hbHQgYWx0PVwiUGFnZSBCYW5uZXJcIiBbc3JjXT1cInNsaWRlLmJhbm5lcnNcIiB3c1V0aWxzSW1hZ2VSZXNwb25zaXZlIGNsYXNzPVwiYmFubmVyLWltYWdlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvYT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldERhdGEudHlwZSA9PT0gJ2RhdGEnXCI+XG4gICAgPGRpdiBjbGFzcz1cImJhbm5lciBXaWRnZXRJbnN0YW5jZUlkIGZsZXggbWFyZ2luLWJvdHRvbS14c1wiICpuZ0Zvcj1cImxldCBzbGlkZSBvZiB3aWRnZXREYXRhLnNsaWRlckRhdGE7IGxldCBpID0gaW5kZXhcIiBbaGlkZGVuXT1cImkgIT09IGN1cnJlbnRJbmRleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJhbm5lci1kYXRhIGZsZXggbWFyZ2luLXJpZ2h0LW0gXCI+XG4gICAgICAgIHt7IHdpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLnRpdGxlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGRhdGEtYW5hbHlzaXMgZmxleC1taWRkbGVcIiBbbmdDbGFzc109XCJ3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS5jb2xvckRhdGFcIiAqbmdJZj1cIndpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLmRhdGFcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zdGF0c1wiPnt7IHdpZGdldERhdGEuc2xpZGVyRGF0YVtjdXJyZW50SW5kZXhdLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC1uby13cmFwXCI+e3sgd2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0uZGF0YSB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwid2lkZ2V0RGF0YT8udHlwZSA9PT0gJ3RpcHMnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygd2lkZ2V0RGF0YT8uc2xpZGVyRGF0YTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRpcHMgYmFubmVyIFdpZGdldEluc3RhbmNlSWQgZmxleCBtYXJnaW4tYm90dG9tLXhzXCIgW2hpZGRlbl09XCJpICE9PSBjdXJyZW50SW5kZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lci1kYXRhIGZsZXggbWFyZ2luLXJpZ2h0LW1cIj5cbiAgICAgICAgICB7e2kgKyAxfX0uIHt7IHNsaWRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3aWRnZXREYXRhLnR5cGUgPT09ICdrYXJtYS1wb2ludHMnXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIG1iLTRcIiAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygd2lkZ2V0RGF0YS5zbGlkZXJEYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIFtoaWRkZW5dPVwiaSAhPT0gY3VycmVudEluZGV4XCI+XG4gICAgICA8aW1nIFtzcmNdPVwic2xpZGU/LmRpc3BsYXlCdXR0b24gPT09ICdRdWljayBMZWFybmVyIEJhZGdlJ1xuICAgID8gJy9hc3NldHMvaWNvbnMvYmFkZ2VzL01lZGFsLnN2ZydcbiAgICA6ICcvYXNzZXRzL2ljb25zL2hvbWUva2FybWEtYmFkZ2Uuc3ZnJ1wiIHdpZHRoPVwiMjhweFwiIGFsdD1cImthcm1hLXBvaW50cyBpbWFnZVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC14c1wiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInNsaWRlPy50ZXh0QmVmb3JlSWNvblwiPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgc2xpZGU/LmRpc3BsYXlCdXR0b24gPT09ICdRdWljayBMZWFybmVyIEJhZGdlJ1xuICAgICAgICAgID8gc2xpZGU/LnRleHRCZWZvcmVJY29uXG4gICAgICAgICAgOiB0cmFuc2xhdGVMYWJlbHMoc2xpZGU/LnRleHRCZWZvcmVJY29uLCAnYXBwS2FybWFwb2ludHNQYW5lbCcpXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9zcGFuPiZuYnNwO1xuICAgICAgICA8c3BhbiAqbmdJZj1cInNsaWRlPy5wb2ludHNcIiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHNsaWRlPy5wb2ludHMgfX0ge3sgdHJhbnNsYXRlTGFiZWxzKHNsaWRlPy50ZXh0QWZ0ZXJQb2ludHMsXG4gICAgICAgICdhcHBLYXJtYXBvaW50c1BhbmVsJykgfX08L3NwYW4+Jm5ic3A7XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2xpZGU/LnRleHRBZnRlckljb25cIj57eyB0cmFuc2xhdGVMYWJlbHMoc2xpZGU/LnRleHRBZnRlckljb24sICdhcHBLYXJtYXBvaW50c1BhbmVsJykgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHdzLW1hdC1ibGFjazYwLXRleHQgaW5mby1pY29uXCIgW21hdFRvb2x0aXBdPVwidHJhbnNsYXRlTGFiZWxzKHNsaWRlPy50b29sVGlwVGV4dCwgJ2FwcEthcm1hcG9pbnRzUGFuZWwnKVwiXG4gICAgICAgICpuZ0lmPVwic2xpZGU/LnRvb2xUaXBUZXh0ICYmIHNsaWRlPy5kaXNwbGF5QnV0dG9uICE9PSAnUXVpY2sgTGVhcm5lciBCYWRnZSdcIj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJiYW5uZXItbWV0YVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldERhdGEudHlwZSA9PT0gJ2ltYWdlJ1wiPlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCIgIWlzT3BlbkluTmV3VGFiID8gd2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0ucmVkaXJlY3RVcmwgOiAnLi8nXCIgY2xhc3M9XCJiYW5uZXItdGl0bGUgdGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICpuZ0lmPVwid2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0udGl0bGVcIiBbdGl0bGVdPVwid2lkZ2V0RGF0YS5zbGlkZXJEYXRhW2N1cnJlbnRJbmRleF0udGl0bGVcIj5cbiAgICAgICAgICB7eyB3aWRnZXREYXRhLnNsaWRlckRhdGFbY3VycmVudEluZGV4XS50aXRsZSB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cImRvdHMtY29udGFpbmVyXCIgKm5nSWY9XCJ3aWRnZXREYXRhLnNsaWRlckRhdGE/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaiA9PT0gY3VycmVudEluZGV4LCAnZG90LWFjdGl2ZSc6IGogPT09IGN1cnJlbnRJbmRleCwgJ2RvdC1ncmV5JzogaiAhPT0gY3VycmVudEluZGV4IH1cIiAqbmdGb3I9XCJsZXQgc2xpZGUgb2Ygd2lkZ2V0RGF0YS5zbGlkZXJEYXRhOyBsZXQgaiA9IGluZGV4XCIgKGNsaWNrKT1cInNsaWRlVG8oailcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndpZGdldERhdGEuaWNvbnNEaXNwbGF5XCI+XG4gICAgPGEgKm5nSWY9XCJ3aWRnZXREYXRhLnNsaWRlckRhdGE/Lmxlbmd0aCA+IDFcIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJwcmV2XCIgKGNsaWNrKT1cInNsaWRlVG8oY3VycmVudEluZGV4IC0gMSlcIj4mIzEwMDk0OzwvYT5cbiAgICA8YSAqbmdJZj1cIndpZGdldERhdGEuc2xpZGVyRGF0YT8ubGVuZ3RoID4gMVwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cIm5leHRcIiAoY2xpY2spPVwic2xpZGVUbyhjdXJyZW50SW5kZXggKyAxKVwiPiYjMTAwOTU7PC9hPlxuICA8L25nLWNvbnRhaW5lcj5cblxuPC9kaXY+XG4iXX0=
@@ -89,7 +89,7 @@ export function viewerRouteGenerator(id, mimeType, collectionId, collectionType,
89
89
  if (forPreview) {
90
90
  queryParams = { ...queryParams, preview: true };
91
91
  }
92
- if (forcreator) {
92
+ if (forcreator || forPreview) {
93
93
  queryParams = { ...queryParams, editMode: true };
94
94
  }
95
95
  if (ML && MLId) {
@@ -100,4 +100,4 @@ export function viewerRouteGenerator(id, mimeType, collectionId, collectionType,
100
100
  url,
101
101
  };
102
102
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLXJvdXRlLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX3NlcnZpY2VzL3ZpZXdlci1yb3V0ZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVsRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFFBQThCLEVBQUUsRUFBRTtJQUN2RSxRQUFRLFFBQVEsRUFBRTtRQUNoQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUMzQixPQUFPLE9BQU8sQ0FBQTtRQUNoQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUMzQixPQUFPLGNBQWMsQ0FBQTtRQUN2QixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVTtZQUNsQyxPQUFPLE1BQU0sQ0FBQTtRQUNmLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDbEMsa0NBQWtDO1FBQ2xDLHFCQUFxQjtRQUNyQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYTtZQUNyQyxPQUFPLGVBQWUsQ0FBQTtRQUN4QixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3BDLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0IsS0FBSyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDM0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ2hELE9BQU8sYUFBYSxDQUFBO2FBQ3JCO1lBQ0QsT0FBTyxNQUFNLENBQUE7UUFDZixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUTtZQUNoQyxPQUFPLFNBQVMsQ0FBQTtRQUNsQixLQUFLLFNBQVMsQ0FBQyxVQUFV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QUcsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0tBQzFDO0lBQ0QsSUFBSSxVQUFVLEVBQUU7UUFDZCxXQUFXLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQTtLQUM3QztJQUNELElBQUksVUFBVSxFQUFFO1FBQ2QsV0FBVyxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFBO0tBQ2hEO0lBQ0QsSUFBSSxVQUFVLEVBQUU7UUFDZCxXQUFXLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7S0FDakQ7SUFDRCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7UUFDZCxXQUFXLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7S0FDM0M7SUFDRCxPQUFPO1FBQ0wsV0FBVztRQUNYLEdBQUc7S0FDSixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbnRlbnQubW9kZWwnXG5cbmV4cG9ydCBjb25zdCBWSUVXRVJfUk9VVEVfRlJPTV9NSU1FID0gKG1pbWVUeXBlOiBOc0NvbnRlbnQuRU1pbWVUeXBlcykgPT4ge1xuICBzd2l0Y2ggKG1pbWVUeXBlKSB7XG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5NUDM6XG4gICAgICByZXR1cm4gJ2F1ZGlvJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTTRBOlxuICAgICAgcmV0dXJuICdhdWRpby1uYXRpdmUnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5DT0xMRUNUSU9OOlxuICAgICAgcmV0dXJuICdodG1sJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuQ0hBTk5FTDpcbiAgICAvLyBjYXNlICdhcHBsaWNhdGlvbi9qc29uJyBhcyBhbnk6XG4gICAgLy8gICByZXR1cm4gJ2NoYW5uZWwnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5DRVJUSUZJQ0FUSU9OOlxuICAgICAgcmV0dXJuICdjZXJ0aWZpY2F0aW9uJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSFRNTF9URVhUOlxuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSFRNTDpcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlpJUDpcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnbW9iaWxlL2h0bWwnKSkge1xuICAgICAgICByZXR1cm4gJ21vYmlsZS9odG1sJ1xuICAgICAgfVxuICAgICAgcmV0dXJuICdodG1sJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuVEVYVF9XRUI6XG4gICAgICByZXR1cm4gJ3lvdXR1YmUnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5TVVJWRVk6XG4gICAgICByZXR1cm4gJ3N1cnZleSdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLklBUDpcbiAgICAgIHJldHVybiAnaWFwJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSUxQX0ZQOlxuICAgICAgcmV0dXJuICdpbHAtZnAnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QREY6XG4gICAgICByZXR1cm4gJ3BkZidcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk1QNDpcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk0zVTg6XG4gICAgICByZXR1cm4gJ3ZpZGVvJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuWU9VVFVCRTpcbiAgICAgIHJldHVybiAneW91dHViZSdcbiAgICAvLyByZXR1cm4gJ2h0bWwnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5XRUJfTU9EVUxFOlxuICAgICAgcmV0dXJuICd3ZWItbW9kdWxlJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuV0VCX01PRFVMRV9FWEVSQ0lTRTpcbiAgICAgIHJldHVybiAnd2ViLW1vZHVsZSdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkNMQVNTX0RJQUdSQU06XG4gICAgICByZXR1cm4gJ2NsYXNzLWRpYWdyYW0nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IQU5EU19PTjpcbiAgICAgIHJldHVybiAnaGFuZHMtb24nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5SREJNU19IQU5EU19PTjpcbiAgICAgIHJldHVybiAncmRibXMtaGFuZHMtb24nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MX1BJQ0tFUjpcbiAgICAgIHJldHVybiAnaHRtbC1waWNrZXInXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5RVUlaOlxuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuQVBQTElDQVRJT05fSlNPTjpcbiAgICAgIHJldHVybiAncXVpeidcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlBSQUNUSUNFX1JFU09VUkNFOlxuICAgICAgcmV0dXJuICdwcmFjdGljZSdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkNPTExFQ1RJT05fUkVTT1VSQ0U6XG4gICAgICByZXR1cm4gJ3Jlc291cmNlLWNvbGxlY3Rpb24nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5PRkZMSU5FX1NFU1NJT046XG4gICAgICByZXR1cm4gJ29mZmxpbmUtc2Vzc2lvbidcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdodG1sJ1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aWV3ZXJSb3V0ZUdlbmVyYXRvcihcbiAgaWQ6IHN0cmluZyxcbiAgbWltZVR5cGU6IE5zQ29udGVudC5FTWltZVR5cGVzLFxuICBjb2xsZWN0aW9uSWQ/OiBzdHJpbmcsXG4gIGNvbGxlY3Rpb25UeXBlPzogc3RyaW5nLFxuICBmb3JQcmV2aWV3ID0gZmFsc2UsXG4gIHByaW1hcnlDYXRlZ29yeT86IHN0cmluZyxcbiAgYmF0Y2hJZD86IHN0cmluZyxcbiAgY291cnNlTmFtZT86IHN0cmluZyxcbiAgTUw/OiBzdHJpbmcsXG4gIE1MSWQ/OiBzdHJpbmcsXG4pOiB7IHVybDogc3RyaW5nOyBxdWVyeVBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB9IHtcbiAgbGV0IGNvbGxJZCA9IGNvbGxlY3Rpb25JZFxuICBsZXQgY29sbFR5cGUgPSBjb2xsZWN0aW9uVHlwZVxuICBpZiAoY29sbFR5cGUgJiYgIU5zQ29udGVudC5QTEFZRVJfU1VQUE9SVEVEX0NPTExFQ1RJT05fVFlQRVMuaW5jbHVkZXMoY29sbFR5cGUpKSB7XG4gICAgY29sbElkID0gdW5kZWZpbmVkXG4gICAgY29sbFR5cGUgPSB1bmRlZmluZWRcbiAgfVxuICBjb25zdCB1cmwgPSBgL3ZpZXdlci8ke1ZJRVdFUl9ST1VURV9GUk9NX01JTUUobWltZVR5cGUpfS8ke2lkfWBcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gIC8vIGNvbnNvbGUubG9nKHVybCwnPT09PT09PT0+Um91dGUgZnJvbSBNSU1FIFRZUEU8PT09PT09PT09PScpXG4gIGNvbnN0IGZvcmNyZWF0b3IgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpXG4gIGxldCBxdWVyeVBhcmFtcyA9IHt9XG4gIGlmIChwcmltYXJ5Q2F0ZWdvcnkpIHtcbiAgICBxdWVyeVBhcmFtcyA9IHtcbiAgICAgIHByaW1hcnlDYXRlZ29yeSxcbiAgICB9XG4gIH1cbiAgaWYgKGNvbGxlY3Rpb25JZCAmJiBjb2xsZWN0aW9uVHlwZSkge1xuICAgIHF1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcywgY29sbGVjdGlvbklkOiBjb2xsSWQsIGNvbGxlY3Rpb25UeXBlOiBjb2xsVHlwZSB9XG4gIH1cbiAgaWYgKGJhdGNoSWQpIHtcbiAgICBxdWVyeVBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMsIGJhdGNoSWQgfVxuICB9XG4gIGlmIChjb3Vyc2VOYW1lKSB7XG4gICAgcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zLCBjb3Vyc2VOYW1lIH1cbiAgfVxuICBpZiAoZm9yUHJldmlldykge1xuICAgIHF1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcywgcHJldmlldzogdHJ1ZSB9XG4gIH1cbiAgaWYgKGZvcmNyZWF0b3IpIHtcbiAgICBxdWVyeVBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMsIGVkaXRNb2RlOiB0cnVlIH1cbiAgfVxuICBpZiggTUwgJiYgTUxJZCkge1xuICAgIHF1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcywgTUwsIE1MSWQgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcXVlcnlQYXJhbXMsXG4gICAgdXJsLFxuICB9XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLXJvdXRlLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX3NlcnZpY2VzL3ZpZXdlci1yb3V0ZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVsRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFFBQThCLEVBQUUsRUFBRTtJQUN2RSxRQUFRLFFBQVEsRUFBRTtRQUNoQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUMzQixPQUFPLE9BQU8sQ0FBQTtRQUNoQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUMzQixPQUFPLGNBQWMsQ0FBQTtRQUN2QixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVTtZQUNsQyxPQUFPLE1BQU0sQ0FBQTtRQUNmLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDbEMsa0NBQWtDO1FBQ2xDLHFCQUFxQjtRQUNyQixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYTtZQUNyQyxPQUFPLGVBQWUsQ0FBQTtRQUN4QixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQ3BDLEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0IsS0FBSyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDM0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ2hELE9BQU8sYUFBYSxDQUFBO2FBQ3JCO1lBQ0QsT0FBTyxNQUFNLENBQUE7UUFDZixLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUTtZQUNoQyxPQUFPLFNBQVMsQ0FBQTtRQUNsQixLQUFLLFNBQVMsQ0FBQyxVQUFV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QUcsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFBO0tBQzFDO0lBQ0QsSUFBSSxVQUFVLEVBQUU7UUFDZCxXQUFXLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQTtLQUM3QztJQUNELElBQUksVUFBVSxFQUFFO1FBQ2QsV0FBVyxHQUFHLEVBQUUsR0FBRyxXQUFXLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFBO0tBQ2hEO0lBQ0QsSUFBSSxVQUFVLElBQUksVUFBVSxFQUFFO1FBQzVCLFdBQVcsR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtLQUNqRDtJQUNELElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNkLFdBQVcsR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtLQUMzQztJQUNELE9BQU87UUFDTCxXQUFXO1FBQ1gsR0FBRztLQUNKLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi93aWRnZXQtY29udGVudC5tb2RlbCdcblxuZXhwb3J0IGNvbnN0IFZJRVdFUl9ST1VURV9GUk9NX01JTUUgPSAobWltZVR5cGU6IE5zQ29udGVudC5FTWltZVR5cGVzKSA9PiB7XG4gIHN3aXRjaCAobWltZVR5cGUpIHtcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk1QMzpcbiAgICAgIHJldHVybiAnYXVkaW8nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5NNEE6XG4gICAgICByZXR1cm4gJ2F1ZGlvLW5hdGl2ZSdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkNPTExFQ1RJT046XG4gICAgICByZXR1cm4gJ2h0bWwnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5DSEFOTkVMOlxuICAgIC8vIGNhc2UgJ2FwcGxpY2F0aW9uL2pzb24nIGFzIGFueTpcbiAgICAvLyAgIHJldHVybiAnY2hhbm5lbCdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkNFUlRJRklDQVRJT046XG4gICAgICByZXR1cm4gJ2NlcnRpZmljYXRpb24nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MX1RFWFQ6XG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MOlxuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuWklQOlxuICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdtb2JpbGUvaHRtbCcpKSB7XG4gICAgICAgIHJldHVybiAnbW9iaWxlL2h0bWwnXG4gICAgICB9XG4gICAgICByZXR1cm4gJ2h0bWwnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5URVhUX1dFQjpcbiAgICAgIHJldHVybiAneW91dHViZSdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlNVUlZFWTpcbiAgICAgIHJldHVybiAnc3VydmV5J1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSUFQOlxuICAgICAgcmV0dXJuICdpYXAnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5JTFBfRlA6XG4gICAgICByZXR1cm4gJ2lscC1mcCdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlBERjpcbiAgICAgIHJldHVybiAncGRmJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTVA0OlxuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTTNVODpcbiAgICAgIHJldHVybiAndmlkZW8nXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5ZT1VUVUJFOlxuICAgICAgcmV0dXJuICd5b3V0dWJlJ1xuICAgIC8vIHJldHVybiAnaHRtbCdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLldFQl9NT0RVTEU6XG4gICAgICByZXR1cm4gJ3dlYi1tb2R1bGUnXG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5XRUJfTU9EVUxFX0VYRVJDSVNFOlxuICAgICAgcmV0dXJuICd3ZWItbW9kdWxlJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuQ0xBU1NfRElBR1JBTTpcbiAgICAgIHJldHVybiAnY2xhc3MtZGlhZ3JhbSdcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkhBTkRTX09OOlxuICAgICAgcmV0dXJuICdoYW5kcy1vbidcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlJEQk1TX0hBTkRTX09OOlxuICAgICAgcmV0dXJuICdyZGJtcy1oYW5kcy1vbidcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkhUTUxfUElDS0VSOlxuICAgICAgcmV0dXJuICdodG1sLXBpY2tlcidcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlFVSVo6XG4gICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5BUFBMSUNBVElPTl9KU09OOlxuICAgICAgcmV0dXJuICdxdWl6J1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUFJBQ1RJQ0VfUkVTT1VSQ0U6XG4gICAgICByZXR1cm4gJ3ByYWN0aWNlJ1xuICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuQ09MTEVDVElPTl9SRVNPVVJDRTpcbiAgICAgIHJldHVybiAncmVzb3VyY2UtY29sbGVjdGlvbidcbiAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk9GRkxJTkVfU0VTU0lPTjpcbiAgICAgIHJldHVybiAnb2ZmbGluZS1zZXNzaW9uJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ2h0bWwnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICBpZDogc3RyaW5nLFxuICBtaW1lVHlwZTogTnNDb250ZW50LkVNaW1lVHlwZXMsXG4gIGNvbGxlY3Rpb25JZD86IHN0cmluZyxcbiAgY29sbGVjdGlvblR5cGU/OiBzdHJpbmcsXG4gIGZvclByZXZpZXcgPSBmYWxzZSxcbiAgcHJpbWFyeUNhdGVnb3J5Pzogc3RyaW5nLFxuICBiYXRjaElkPzogc3RyaW5nLFxuICBjb3Vyc2VOYW1lPzogc3RyaW5nLFxuICBNTD86IHN0cmluZyxcbiAgTUxJZD86IHN0cmluZyxcbik6IHsgdXJsOiBzdHJpbmc7IHF1ZXJ5UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH0ge1xuICBsZXQgY29sbElkID0gY29sbGVjdGlvbklkXG4gIGxldCBjb2xsVHlwZSA9IGNvbGxlY3Rpb25UeXBlXG4gIGlmIChjb2xsVHlwZSAmJiAhTnNDb250ZW50LlBMQVlFUl9TVVBQT1JURURfQ09MTEVDVElPTl9UWVBFUy5pbmNsdWRlcyhjb2xsVHlwZSkpIHtcbiAgICBjb2xsSWQgPSB1bmRlZmluZWRcbiAgICBjb2xsVHlwZSA9IHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IHVybCA9IGAvdmlld2VyLyR7VklFV0VSX1JPVVRFX0ZST01fTUlNRShtaW1lVHlwZSl9LyR7aWR9YFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gY29uc29sZS5sb2codXJsLCc9PT09PT09PT5Sb3V0ZSBmcm9tIE1JTUUgVFlQRTw9PT09PT09PT09JylcbiAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJylcbiAgbGV0IHF1ZXJ5UGFyYW1zID0ge31cbiAgaWYgKHByaW1hcnlDYXRlZ29yeSkge1xuICAgIHF1ZXJ5UGFyYW1zID0ge1xuICAgICAgcHJpbWFyeUNhdGVnb3J5LFxuICAgIH1cbiAgfVxuICBpZiAoY29sbGVjdGlvbklkICYmIGNvbGxlY3Rpb25UeXBlKSB7XG4gICAgcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zLCBjb2xsZWN0aW9uSWQ6IGNvbGxJZCwgY29sbGVjdGlvblR5cGU6IGNvbGxUeXBlIH1cbiAgfVxuICBpZiAoYmF0Y2hJZCkge1xuICAgIHF1ZXJ5UGFyYW1zID0geyAuLi5xdWVyeVBhcmFtcywgYmF0Y2hJZCB9XG4gIH1cbiAgaWYgKGNvdXJzZU5hbWUpIHtcbiAgICBxdWVyeVBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMsIGNvdXJzZU5hbWUgfVxuICB9XG4gIGlmIChmb3JQcmV2aWV3KSB7XG4gICAgcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zLCBwcmV2aWV3OiB0cnVlIH1cbiAgfVxuICBpZiAoZm9yY3JlYXRvciB8fCBmb3JQcmV2aWV3KSB7XG4gICAgcXVlcnlQYXJhbXMgPSB7IC4uLnF1ZXJ5UGFyYW1zLCBlZGl0TW9kZTogdHJ1ZSB9XG4gIH1cbiAgaWYoIE1MICYmIE1MSWQpIHtcbiAgICBxdWVyeVBhcmFtcyA9IHsgLi4ucXVlcnlQYXJhbXMsIE1MLCBNTElkIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHF1ZXJ5UGFyYW1zLFxuICAgIHVybCxcbiAgfVxufVxuIl19