fabrikantencore 2.2.2 → 2.2.5

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 (26) hide show
  1. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.mjs +3 -3
  2. package/esm2020/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.mjs +3 -3
  3. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.mjs +81 -0
  4. package/esm2020/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.mjs +6 -3
  5. package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.mjs +4 -7
  6. package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.mjs +33 -0
  7. package/esm2020/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.mjs +5 -4
  8. package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.mjs +10 -7
  9. package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.mjs +33 -0
  10. package/esm2020/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +16 -3
  11. package/esm2020/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +20 -7
  12. package/esm2020/src/app/modules/fabrikantencore/services/translate.service.mjs +35 -1
  13. package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +23 -1
  14. package/fesm2015/fabrikantencore.mjs +301 -96
  15. package/fesm2015/fabrikantencore.mjs.map +1 -1
  16. package/fesm2020/fabrikantencore.mjs +301 -96
  17. package/fesm2020/fabrikantencore.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.d.ts +26 -0
  20. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.d.ts +2 -3
  21. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.d.ts +18 -0
  22. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.d.ts +1 -1
  23. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.d.ts +18 -0
  24. package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +30 -26
  25. package/src/app/modules/fabrikantencore/services/translate.service.d.ts +4 -0
  26. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +21 -1
@@ -107,6 +107,12 @@ export class TranslateService {
107
107
  }
108
108
  return "";
109
109
  }
110
+ GetActiveValueCategoryDescription(catId) {
111
+ if (this.ActiveLanguage != null) {
112
+ return this.GetValueCategoryDescription(this.ActiveLanguage, catId);
113
+ }
114
+ return "";
115
+ }
110
116
  GetValueCategory(language, catId) {
111
117
  var catarray = language.categoryEntries;
112
118
  if (catarray != null) {
@@ -118,6 +124,17 @@ export class TranslateService {
118
124
  }
119
125
  return "";
120
126
  }
127
+ GetValueCategoryDescription(language, catId) {
128
+ var catarray = language.categoryEntries;
129
+ if (catarray != null) {
130
+ for (var i = 0; i < catarray.length; i++) {
131
+ if (catarray[i].categoryId == catId) {
132
+ return catarray[i].description;
133
+ }
134
+ }
135
+ }
136
+ return "";
137
+ }
121
138
  GetActiveValueBCBEigenschapToebehoren(bcbEigenschapToebehorenId) {
122
139
  if (this.ActiveLanguage != null) {
123
140
  return this.GetValueBCBEigenschapToebehoren(this.ActiveLanguage, bcbEigenschapToebehorenId);
@@ -152,6 +169,23 @@ export class TranslateService {
152
169
  }
153
170
  return "";
154
171
  }
172
+ GetActiveValueProductDescription(productId) {
173
+ if (this.ActiveLanguage != null) {
174
+ return this.GetValueProductDescription(this.ActiveLanguage, productId);
175
+ }
176
+ return "";
177
+ }
178
+ GetValueProductDescription(language, productId) {
179
+ var prodarray = language.productEntries;
180
+ if (prodarray != null) {
181
+ for (var i = 0; i < prodarray.length; i++) {
182
+ if (prodarray[i].productId == productId) {
183
+ return prodarray[i].description;
184
+ }
185
+ }
186
+ }
187
+ return "";
188
+ }
155
189
  GetActiveValueRangeInput(rangeInputId) {
156
190
  if (this.ActiveLanguage != null) {
157
191
  return this.GetValueRangeInput(this.ActiveLanguage, rangeInputId);
@@ -282,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
282
316
  type: Injectable,
283
317
  args: [{ providedIn: 'root' }]
284
318
  }], ctorParameters: function () { return [{ type: i1.TranslateApiClient }, { type: i2.NavigateService }]; } });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0IsWUFBb0Isa0JBQXNDLEVBQVMsZUFBZ0M7UUFBL0UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVozRixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXZCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFJdkIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBR2pDLHFCQUFnQixHQUFXLFFBQVEsQ0FBQztRQUl6QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQTJCLEVBQUUsaUJBQW9DO1FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBOEI7UUFDckQsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztZQUN0QyxJQUFJ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NUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBMYW5ndWFnZXNWaWV3TW9kZWwsIExhbmd1YWdlVmlld01vZGVsLCBUcmFuc2xhdGVBcGlDbGllbnQsIFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGVLZXlWaWV3TW9kZWwgfSBmcm9tICcuLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0ZVNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIEluaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgTGFuZ3VhZ2VzVmlld01vZGVsOiBMYW5ndWFnZXNWaWV3TW9kZWw7XHJcblxyXG4gIHByaXZhdGUgRGVzaXJlZENvdW50cnlDb2RlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHB1YmxpYyBBY3RpdmVMYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWw7XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RlZENhdGVnb3J5OiBzdHJpbmcgPSBcIkNvbW1vblwiO1xyXG4gIHB1YmxpYyBDYXRlZ29yaWVzOiBBcnJheTxzdHJpbmc+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LCBwdWJsaWMgTmF2aWdhdGVTZXJ2aWNlOiBOYXZpZ2F0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuTmF2aWdhdGVTZXJ2aWNlLlRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdExhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZSA9IGxhbmd1YWdlLmNvdW50cnlDb2RlICsgXCJcIjtcclxuICAgIHRoaXMuUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpO1xyXG5cclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQcm9jZXNzUGFyYW1ldGVycyhBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpOiB2b2lkIHtcclxuICAgIHZhciBjb3VudHJ5Y29kZSA9IEFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcImxhbmd1YWdlXCIpO1xyXG5cclxuICAgIGlmIChjb3VudHJ5Y29kZSAhPSBudWxsICYmIGNvdW50cnljb2RlICE9IFwiXCIgJiYgdGhpcy5EZXNpcmVkQ291bnRyeUNvZGUgIT0gY291bnRyeWNvZGUpIHtcclxuICAgICAgdGhpcy5EZXNpcmVkQ291bnRyeUNvZGUgPSBjb3VudHJ5Y29kZTtcclxuICAgICAgdGhpcy5Qcm9jZXNzRGVzaXJlZENvdW50cnlDb2RlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFRyYW5zbGF0aW9ucyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5Jbml0KSB7XHJcbiAgICAgIHRoaXMuSW5pdCA9IHRydWU7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmdldExhbmd1YWdlc1ZpZXdNb2RlbCgpLnN1YnNjcmliZSgobW9kZWw6IExhbmd1YWdlc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIHZhciBjYXRzID0gdGhpcy5HZXRDYXRlZ29yaWVzKCk7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChjYXRzW2ldLm5hbWUgYXMgc3RyaW5nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiQ2F0ZWdvcmllc1wiKTtcclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChcIlByb2R1Y3RzXCIpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiRGVzY3JpcHRpb25cIik7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goXCJBZmJlZWxkaW5nXCIpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiRmlsdGVyXCIpO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5Qcm9jZXNzRGVzaXJlZENvdW50cnlDb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuTmF2aWdhdGVTZXJ2aWNlLlJlZnJlc2hQYWdlKCk7XHJcblxyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NwZWNpZmljYXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkFjdGl2ZUxhbmd1YWdlLnNob3dTcGVjaWZpY2F0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuTG9hZGluZykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZShjYXRlZ29yeTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGNhdGVnb3J5LCBrZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgY2F0ZWdvcnk6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdmFyIGNhdGFycmF5ID0gbGFuZ3VhZ2UuY2F0ZWdvcmllcztcclxuICAgIGlmIChjYXRhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0YXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY2F0YXJyYXlbaV0ubmFtZT8udG9Mb3dlckNhc2UoKSA9PSBjYXRlZ29yeS50b0xvd2VyQ2FzZSgpKSB7XHJcblxyXG4gICAgICAgICAgdmFyIGtleXNhcnJheSA9IGNhdGFycmF5W2ldLmtleXNcclxuICAgICAgICAgIGlmIChrZXlzYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXNhcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGlmIChrZXlzYXJyYXlbal0ubmFtZT8udG9Mb3dlckNhc2UoKSA9PSBrZXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudHJpZXNhcnJheSA9IGtleXNhcnJheVtqXS5lbnRyaWVzO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzYXJyYXkgIT0gbnVsbCAmJiBlbnRyaWVzYXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZW50cmllc2FycmF5WzBdLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2F0ZWdvcnkgKyBcIi1cIiArIGtleTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUNhdGVnb3J5KGNhdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUNhdGVnb3J5KHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGNhdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZUNhdGVnb3J5KGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgY2F0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgY2F0YXJyYXkgPSBsYW5ndWFnZS5jYXRlZ29yeUVudHJpZXM7XHJcbiAgICBpZiAoY2F0YXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGNhdGFycmF5W2ldLmNhdGVnb3J5SWQgPT0gY2F0SWQpIHtcclxuICAgICAgICAgIHJldHVybiBjYXRhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVCQ0JFaWdlbnNjaGFwVG9lYmVob3JlbihiY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUJDQkVpZ2Vuc2NoYXBUb2ViZWhvcmVuKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlQkNCRWlnZW5zY2hhcFRvZWJlaG9yZW4obGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBiY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgdmFyIGJjYmVpZ2Vuc2NoYXBhcnJheSA9IGxhbmd1YWdlLmJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuRW50cmllcztcclxuICAgIGlmIChiY2JlaWdlbnNjaGFwYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJjYmVpZ2Vuc2NoYXBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChiY2JlaWdlbnNjaGFwYXJyYXlbaV0uYmNiRWlnZW5zY2hhcFRvZWJlaG9yZW5JZCA9PSBiY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYmNiZWlnZW5zY2hhcGFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZVByb2R1Y3QocHJvZHVjdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZVByb2R1Y3QodGhpcy5BY3RpdmVMYW5ndWFnZSwgcHJvZHVjdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZVByb2R1Y3QobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBwcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgcHJvZGFycmF5ID0gbGFuZ3VhZ2UucHJvZHVjdEVudHJpZXM7XHJcbiAgICBpZiAocHJvZGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9kYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocHJvZGFycmF5W2ldLnByb2R1Y3RJZCA9PSBwcm9kdWN0SWQpIHtcclxuICAgICAgICAgIHJldHVybiBwcm9kYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlUmFuZ2VJbnB1dChyYW5nZUlucHV0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlUmFuZ2VJbnB1dCh0aGlzLkFjdGl2ZUxhbmd1YWdlLCByYW5nZUlucHV0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlUmFuZ2VJbnB1dChsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIHJhbmdlSW5wdXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciByYW5nZWFycmF5ID0gbGFuZ3VhZ2UucmFuZ2VJbnB1dEVudHJpZXM7XHJcbiAgICBpZiAocmFuZ2VhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChyYW5nZWFycmF5W2ldLnJhbmdlSW5wdXRJZCA9PSByYW5nZUlucHV0SWQpIHtcclxuICAgICAgICAgIHJldHVybiByYW5nZWFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUZpbHRlcihmaWx0ZXJJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVGaWx0ZXIodGhpcy5BY3RpdmVMYW5ndWFnZSwgZmlsdGVySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRmlsdGVyKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgZmlsdGVySWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZmlsdGVyYXJyYXkgPSBsYW5ndWFnZS5maWx0ZXJFbnRyaWVzO1xyXG4gICAgaWYgKGZpbHRlcmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChmaWx0ZXJhcnJheVtpXS5maWx0ZXJJZCA9PSBmaWx0ZXJJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUZpbHRlck9wdGlvbihmaWx0ZXJPcHRpb25JZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVGaWx0ZXJPcHRpb24odGhpcy5BY3RpdmVMYW5ndWFnZSwgZmlsdGVyT3B0aW9uSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRmlsdGVyT3B0aW9uKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgZmlsdGVyT3B0aW9uSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZmlsdGVyYXJyYXkgPSBsYW5ndWFnZS5maWx0ZXJPcHRpb25FbnRyaWVzO1xyXG4gICAgaWYgKGZpbHRlcmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChmaWx0ZXJhcnJheVtpXS5maWx0ZXJPcHRpb25JZCA9PSBmaWx0ZXJPcHRpb25JZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZURlc2NyaXB0aW9uKGJjYlByb2R1Y3RJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVEZXNjcmlwdGlvbih0aGlzLkFjdGl2ZUxhbmd1YWdlLCBiY2JQcm9kdWN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlRGVzY3JpcHRpb24obGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBiY2JQcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgZGVzY3JpcHRpb25hcnJheSA9IGxhbmd1YWdlLmRlc2NyaXB0aW9uRW50cmllcztcclxuICAgIGlmIChkZXNjcmlwdGlvbmFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXNjcmlwdGlvbmFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uYXJyYXlbaV0uYmNiUHJvZHVjdElkID09IGJjYlByb2R1Y3RJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlQWZiZWVsZGluZyhiY2JQcm9kdWN0QWZiZWVsZGluZ0lkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUFmYmVlbGRpbmcodGhpcy5BY3RpdmVMYW5ndWFnZSwgYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmFsdWVBZmJlZWxkaW5nKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgYmNiUHJvZHVjdEFmYmVlbGRpbmdJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBhZmJlZWxkaW5nYXJyYXkgPSBsYW5ndWFnZS5hZmJlZWxkaW5nRW50cmllcztcclxuICAgIGlmIChhZmJlZWxkaW5nYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFmYmVlbGRpbmdhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhZmJlZWxkaW5nYXJyYXlbaV0uYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCA9PSBiY2JQcm9kdWN0QWZiZWVsZGluZ0lkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYWZiZWVsZGluZ2FycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRDYXRlZ29yaWVzKCk6IEFycmF5PFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsPiB7XHJcblxyXG4gICAgaWYgKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCAmJiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoID4gMCAmJiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcmllcyAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcmllcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5PFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsPigpOztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVDYXRlZ29yaWUoKTogVHJhbnNsYXRlS2V5Q2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsIHtcclxuICAgIHZhciBjYXRzID0gdGhpcy5HZXRDYXRlZ29yaWVzKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChjYXRzW2ldLm5hbWUgPT0gdGhpcy5TZWxlY3RlZENhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIGNhdHNbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRGVzaXJlZENvdW50cnlDb2RlID09IFwiXCIpIHtcclxuICAgICAgICB0aGlzLlNldEFjdGl2ZUxhbmd1YWdlKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbaV0uY291bnRyeUNvZGU/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PSB0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuU2V0QWN0aXZlTGFuZ3VhZ2UodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0QWN0aXZlTGFuZ3VhZ2UobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBsYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLkFjdGl2ZUxhbmd1YWdlID0gbGFuZ3VhZ2U7XHJcblxyXG4gICAgICB0aGlzLk5hdmlnYXRlU2VydmljZS5SZWZyZXNoUGFnZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFjM0IsWUFBb0Isa0JBQXNDLEVBQVMsZUFBZ0M7UUFBL0UsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVozRixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXZCLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFJdkIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBR2pDLHFCQUFnQixHQUFXLFFBQVEsQ0FBQztRQUl6QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRU0sY0FBYyxDQUFDLFFBQTJCLEVBQUUsaUJBQW9DO1FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBOEI7UUFDckQsSUFBSSxXQUFXLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztZQUN0QyxJQUFJ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RS9CLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDOzs2R0FqWVUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VzVmlld01vZGVsLCBMYW5ndWFnZVZpZXdNb2RlbCwgVHJhbnNsYXRlQXBpQ2xpZW50LCBUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbCwgVHJhbnNsYXRlS2V5Vmlld01vZGVsIH0gZnJvbSAnLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgTmF2aWdhdGVTZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBJbml0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIExhbmd1YWdlc1ZpZXdNb2RlbDogTGFuZ3VhZ2VzVmlld01vZGVsO1xyXG5cclxuICBwcml2YXRlIERlc2lyZWRDb3VudHJ5Q29kZTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgQWN0aXZlTGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsO1xyXG5cclxuICBwdWJsaWMgU2VsZWN0ZWRDYXRlZ29yeTogc3RyaW5nID0gXCJDb21tb25cIjtcclxuICBwdWJsaWMgQ2F0ZWdvcmllczogQXJyYXk8c3RyaW5nPjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBUcmFuc2xhdGVBcGlDbGllbnQ6IFRyYW5zbGF0ZUFwaUNsaWVudCwgcHVibGljIE5hdmlnYXRlU2VydmljZTogTmF2aWdhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLk5hdmlnYXRlU2VydmljZS5UcmFuc2xhdGVTZXJ2aWNlID0gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RMYW5ndWFnZShsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5EZXNpcmVkQ291bnRyeUNvZGUgPSBsYW5ndWFnZS5jb3VudHJ5Q29kZSArIFwiXCI7XHJcbiAgICB0aGlzLlByb2Nlc3NEZXNpcmVkQ291bnRyeUNvZGUoKTtcclxuXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUHJvY2Vzc1BhcmFtZXRlcnMoQWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKTogdm9pZCB7XHJcbiAgICB2YXIgY291bnRyeWNvZGUgPSBBY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJsYW5ndWFnZVwiKTtcclxuXHJcbiAgICBpZiAoY291bnRyeWNvZGUgIT0gbnVsbCAmJiBjb3VudHJ5Y29kZSAhPSBcIlwiICYmIHRoaXMuRGVzaXJlZENvdW50cnlDb2RlICE9IGNvdW50cnljb2RlKSB7XHJcbiAgICAgIHRoaXMuRGVzaXJlZENvdW50cnlDb2RlID0gY291bnRyeWNvZGU7XHJcbiAgICAgIHRoaXMuUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRUcmFuc2xhdGlvbnMoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuSW5pdCkge1xyXG4gICAgICB0aGlzLkluaXQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5nZXRMYW5ndWFnZXNWaWV3TW9kZWwoKS5zdWJzY3JpYmUoKG1vZGVsOiBMYW5ndWFnZXNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgICB0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgICB2YXIgY2F0cyA9IHRoaXMuR2V0Q2F0ZWdvcmllcygpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goY2F0c1tpXS5uYW1lIGFzIHN0cmluZyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChcIkNhdGVnb3JpZXNcIik7XHJcbiAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2goXCJQcm9kdWN0c1wiKTtcclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChcIkRlc2NyaXB0aW9uXCIpO1xyXG4gICAgICAgIHRoaXMuQ2F0ZWdvcmllcy5wdXNoKFwiQWZiZWVsZGluZ1wiKTtcclxuICAgICAgICB0aGlzLkNhdGVnb3JpZXMucHVzaChcIkZpbHRlclwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuUHJvY2Vzc0Rlc2lyZWRDb3VudHJ5Q29kZSgpO1xyXG5cclxuICAgICAgICB0aGlzLk5hdmlnYXRlU2VydmljZS5SZWZyZXNoUGFnZSgpO1xyXG5cclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dTcGVjaWZpY2F0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5BY3RpdmVMYW5ndWFnZS5zaG93U3BlY2lmaWNhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvdygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcy5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWUoY2F0ZWdvcnk6IHN0cmluZywga2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZSh0aGlzLkFjdGl2ZUxhbmd1YWdlLCBjYXRlZ29yeSwga2V5KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZShsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIGNhdGVnb3J5OiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHZhciBjYXRhcnJheSA9IGxhbmd1YWdlLmNhdGVnb3JpZXM7XHJcbiAgICBpZiAoY2F0YXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGNhdGFycmF5W2ldLm5hbWU/LnRvTG93ZXJDYXNlKCkgPT0gY2F0ZWdvcnkudG9Mb3dlckNhc2UoKSkge1xyXG5cclxuICAgICAgICAgIHZhciBrZXlzYXJyYXkgPSBjYXRhcnJheVtpXS5rZXlzXHJcbiAgICAgICAgICBpZiAoa2V5c2FycmF5ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXlzYXJyYXkubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBpZiAoa2V5c2FycmF5W2pdLm5hbWU/LnRvTG93ZXJDYXNlKCkgPT0ga2V5LnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRyaWVzYXJyYXkgPSBrZXlzYXJyYXlbal0uZW50cmllcztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZW50cmllc2FycmF5ICE9IG51bGwgJiYgZW50cmllc2FycmF5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJpZXNhcnJheVswXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNhdGVnb3J5ICsgXCItXCIgKyBrZXk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVDYXRlZ29yeShjYXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVDYXRlZ29yeSh0aGlzLkFjdGl2ZUxhbmd1YWdlLCBjYXRJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVDYXRlZ29yeURlc2NyaXB0aW9uKGNhdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZUNhdGVnb3J5RGVzY3JpcHRpb24odGhpcy5BY3RpdmVMYW5ndWFnZSwgY2F0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlQ2F0ZWdvcnkobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBjYXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBjYXRhcnJheSA9IGxhbmd1YWdlLmNhdGVnb3J5RW50cmllcztcclxuICAgIGlmIChjYXRhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0YXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY2F0YXJyYXlbaV0uY2F0ZWdvcnlJZCA9PSBjYXRJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNhdGFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZUNhdGVnb3J5RGVzY3JpcHRpb24obGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCBjYXRJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBjYXRhcnJheSA9IGxhbmd1YWdlLmNhdGVnb3J5RW50cmllcztcclxuICAgIGlmIChjYXRhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0YXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoY2F0YXJyYXlbaV0uY2F0ZWdvcnlJZCA9PSBjYXRJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNhdGFycmF5W2ldLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUJDQkVpZ2Vuc2NoYXBUb2ViZWhvcmVuKGJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlQkNCRWlnZW5zY2hhcFRvZWJlaG9yZW4odGhpcy5BY3RpdmVMYW5ndWFnZSwgYmNiRWlnZW5zY2hhcFRvZWJlaG9yZW5JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VmFsdWVCQ0JFaWdlbnNjaGFwVG9lYmVob3JlbihsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIGJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgYmNiZWlnZW5zY2hhcGFycmF5ID0gbGFuZ3VhZ2UuYmNiRWlnZW5zY2hhcFRvZWJlaG9yZW5FbnRyaWVzO1xyXG4gICAgaWYgKGJjYmVpZ2Vuc2NoYXBhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmNiZWlnZW5zY2hhcGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGJjYmVpZ2Vuc2NoYXBhcnJheVtpXS5iY2JFaWdlbnNjaGFwVG9lYmVob3JlbklkID09IGJjYkVpZ2Vuc2NoYXBUb2ViZWhvcmVuSWQpIHtcclxuICAgICAgICAgIHJldHVybiBiY2JlaWdlbnNjaGFwYXJyYXlbaV0udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEFjdGl2ZVZhbHVlUHJvZHVjdChwcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlUHJvZHVjdCh0aGlzLkFjdGl2ZUxhbmd1YWdlLCBwcm9kdWN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlUHJvZHVjdChsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIHByb2R1Y3RJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHZhciBwcm9kYXJyYXkgPSBsYW5ndWFnZS5wcm9kdWN0RW50cmllcztcclxuICAgIGlmIChwcm9kYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2RhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChwcm9kYXJyYXlbaV0ucHJvZHVjdElkID09IHByb2R1Y3RJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHByb2RhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVQcm9kdWN0RGVzY3JpcHRpb24ocHJvZHVjdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZVByb2R1Y3REZXNjcmlwdGlvbih0aGlzLkFjdGl2ZUxhbmd1YWdlLCBwcm9kdWN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlUHJvZHVjdERlc2NyaXB0aW9uKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgcHJvZHVjdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgdmFyIHByb2RhcnJheSA9IGxhbmd1YWdlLnByb2R1Y3RFbnRyaWVzO1xyXG4gICAgaWYgKHByb2RhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvZGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHByb2RhcnJheVtpXS5wcm9kdWN0SWQgPT0gcHJvZHVjdElkKSB7XHJcbiAgICAgICAgICByZXR1cm4gcHJvZGFycmF5W2ldLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZVJhbmdlSW5wdXQocmFuZ2VJbnB1dElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5HZXRWYWx1ZVJhbmdlSW5wdXQodGhpcy5BY3RpdmVMYW5ndWFnZSwgcmFuZ2VJbnB1dElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZVJhbmdlSW5wdXQobGFuZ3VhZ2U6IExhbmd1YWdlVmlld01vZGVsLCByYW5nZUlucHV0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgcmFuZ2VhcnJheSA9IGxhbmd1YWdlLnJhbmdlSW5wdXRFbnRyaWVzO1xyXG4gICAgaWYgKHJhbmdlYXJyYXkgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAocmFuZ2VhcnJheVtpXS5yYW5nZUlucHV0SWQgPT0gcmFuZ2VJbnB1dElkKSB7XHJcbiAgICAgICAgICByZXR1cm4gcmFuZ2VhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVGaWx0ZXIoZmlsdGVySWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlRmlsdGVyKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGZpbHRlcklkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZUZpbHRlcihsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIGZpbHRlcklkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgdmFyIGZpbHRlcmFycmF5ID0gbGFuZ3VhZ2UuZmlsdGVyRW50cmllcztcclxuICAgIGlmIChmaWx0ZXJhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZmlsdGVyYXJyYXlbaV0uZmlsdGVySWQgPT0gZmlsdGVySWQpIHtcclxuICAgICAgICAgIHJldHVybiBmaWx0ZXJhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVGaWx0ZXJPcHRpb24oZmlsdGVyT3B0aW9uSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlRmlsdGVyT3B0aW9uKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGZpbHRlck9wdGlvbklkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZUZpbHRlck9wdGlvbihsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIGZpbHRlck9wdGlvbklkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgdmFyIGZpbHRlcmFycmF5ID0gbGFuZ3VhZ2UuZmlsdGVyT3B0aW9uRW50cmllcztcclxuICAgIGlmIChmaWx0ZXJhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsdGVyYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZmlsdGVyYXJyYXlbaV0uZmlsdGVyT3B0aW9uSWQgPT0gZmlsdGVyT3B0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiBmaWx0ZXJhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlVmFsdWVEZXNjcmlwdGlvbihiY2JQcm9kdWN0SWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5BY3RpdmVMYW5ndWFnZSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLkdldFZhbHVlRGVzY3JpcHRpb24odGhpcy5BY3RpdmVMYW5ndWFnZSwgYmNiUHJvZHVjdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRWYWx1ZURlc2NyaXB0aW9uKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCwgYmNiUHJvZHVjdElkOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgdmFyIGRlc2NyaXB0aW9uYXJyYXkgPSBsYW5ndWFnZS5kZXNjcmlwdGlvbkVudHJpZXM7XHJcbiAgICBpZiAoZGVzY3JpcHRpb25hcnJheSAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVzY3JpcHRpb25hcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbmFycmF5W2ldLmJjYlByb2R1Y3RJZCA9PSBiY2JQcm9kdWN0SWQpIHtcclxuICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbmFycmF5W2ldLnZhbHVlIGFzIHN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBY3RpdmVWYWx1ZUFmYmVlbGRpbmcoYmNiUHJvZHVjdEFmYmVlbGRpbmdJZDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLkFjdGl2ZUxhbmd1YWdlICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuR2V0VmFsdWVBZmJlZWxkaW5nKHRoaXMuQWN0aXZlTGFuZ3VhZ2UsIGJjYlByb2R1Y3RBZmJlZWxkaW5nSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFZhbHVlQWZiZWVsZGluZyhsYW5ndWFnZTogTGFuZ3VhZ2VWaWV3TW9kZWwsIGJjYlByb2R1Y3RBZmJlZWxkaW5nSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICB2YXIgYWZiZWVsZGluZ2FycmF5ID0gbGFuZ3VhZ2UuYWZiZWVsZGluZ0VudHJpZXM7XHJcbiAgICBpZiAoYWZiZWVsZGluZ2FycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZmJlZWxkaW5nYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoYWZiZWVsZGluZ2FycmF5W2ldLmJjYlByb2R1Y3RBZmJlZWxkaW5nSWQgPT0gYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGFmYmVlbGRpbmdhcnJheVtpXS52YWx1ZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0Q2F0ZWdvcmllcygpOiBBcnJheTxUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbD4ge1xyXG5cclxuICAgIGlmICh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwgJiYgdGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzLmxlbmd0aCA+IDAgJiYgdGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLmNhdGVnb3JpZXMgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLmNhdGVnb3JpZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheTxUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbD4oKTs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0QWN0aXZlQ2F0ZWdvcmllKCk6IFRyYW5zbGF0ZUtleUNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCB7XHJcbiAgICB2YXIgY2F0cyA9IHRoaXMuR2V0Q2F0ZWdvcmllcygpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoY2F0c1tpXS5uYW1lID09IHRoaXMuU2VsZWN0ZWRDYXRlZ29yeSkge1xyXG4gICAgICAgIHJldHVybiBjYXRzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFByb2Nlc3NEZXNpcmVkQ291bnRyeUNvZGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWw/Lmxhbmd1YWdlcyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLkRlc2lyZWRDb3VudHJ5Q29kZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy5TZXRBY3RpdmVMYW5ndWFnZSh0aGlzLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzW2ldLmNvdW50cnlDb2RlPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5EZXNpcmVkQ291bnRyeUNvZGUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLlNldEFjdGl2ZUxhbmd1YWdlKHRoaXMuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1tpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNldEFjdGl2ZUxhbmd1YWdlKGxhbmd1YWdlOiBMYW5ndWFnZVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuQWN0aXZlTGFuZ3VhZ2UgIT0gbGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy5BY3RpdmVMYW5ndWFnZSA9IGxhbmd1YWdlO1xyXG5cclxuICAgICAgdGhpcy5OYXZpZ2F0ZVNlcnZpY2UuUmVmcmVzaFBhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19