@bnsights/bbsf-controls 1.0.46 → 1.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/bnsights-bbsf-controls-1.0.47.tgz +0 -0
- package/bundles/bnsights-bbsf-controls.umd.js +7 -1
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/lib/Shared/Models/PagingOptions.js +3 -1
- package/esm2015/lib/controls/Paging/Paging.component.js +7 -3
- package/fesm2015/bnsights-bbsf-controls.js +7 -1
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/lib/Shared/Models/PagingOptions.d.ts +2 -0
- package/package.json +1 -1
- package/bnsights-bbsf-controls-1.0.46.tgz +0 -0
|
@@ -40,6 +40,8 @@ export class PagingOptions {
|
|
|
40
40
|
this.ForceDirection = ForceDirection.English;
|
|
41
41
|
/** Clear Filter button selector */
|
|
42
42
|
this.ResetFilterButtonName = null;
|
|
43
|
+
this.DisableBlockUI = false;
|
|
44
|
+
this.StartPagingCallback = null;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5nT3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9TaGFyZWQvTW9kZWxzL1BhZ2luZ09wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXhELE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ0Usb0RBQW9EO1FBQ3BELGtCQUFhLEdBQVcsRUFBRSxDQUFBO1FBQzFCLG9CQUFlLEdBQVcsSUFBSSxDQUFBO1FBQzlCO2tKQUMwSTtRQUMxSSxZQUFPLEdBQWlCLEVBQUUsQ0FBQTtRQUMxQixxREFBcUQ7UUFDckQsZUFBVSxHQUFXLENBQUMsQ0FBQTtRQUN0Qjs7VUFFRTtRQUNGLGFBQVEsR0FBVyxFQUFFLENBQUE7UUFDckIsb0hBQW9IO1FBQ3BILGdDQUEyQixHQUFhLEVBQUUsQ0FBQTtRQUMxQywySUFBMkk7UUFDM0ksZ0NBQTJCLEdBQWEsRUFBRSxDQUFBO1FBQzFDLHVKQUF1SjtRQUN2Siw0Q0FBdUMsR0FBYSxFQUFFLENBQUE7UUFDdEQsd0lBQXdJO1FBQ3hJLCtCQUEwQixHQUFhLEVBQUUsQ0FBQTtRQUN6QyxrSkFBa0o7UUFDbEosa0NBQTZCLEdBQWEsRUFBRSxDQUFBO1FBTzVDLHlEQUF5RDtRQUN6RCx1QkFBa0IsR0FBWSxLQUFLLENBQUE7UUFHbkMscUVBQXFFO1FBQ3JFLHVCQUFrQixHQUFZLElBQUksQ0FBQTtRQUNsQyw4Q0FBOEM7UUFDOUMsdUNBQWtDLEdBQVksSUFBSSxDQUFBO1FBQ2xELHlCQUF5QjtRQUN6QixxQkFBZ0IsR0FBWSxJQUFJLENBQUE7UUFDaEMsNENBQTRDO1FBQzVDLHNCQUFpQixHQUFZLEtBQUssQ0FBQTtRQUNsQyx3Q0FBd0M7UUFDeEMscUJBQWdCLEdBQVksS0FBSyxDQUFBO1FBR2pDLHFMQUFxTDtRQUNyTCxpQkFBWSxHQUFZLElBQUksQ0FBQTtRQUM1QixtQkFBYyxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFBO1FBRXZELG9DQUFvQztRQUNwQywwQkFBcUIsR0FBVyxJQUFJLENBQUM7UUFDckMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsd0JBQW1CLEdBQWEsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlckl0ZW0gfSBmcm9tICcuL0ZpbHRlckl0ZW0nXHJcbmltcG9ydCB7IEZvcmNlRGlyZWN0aW9uIH0gZnJvbSAnLi4vRW51bXMvRm9yY2VEaXJlY3Rpb24nXHJcblxyXG5leHBvcnQgY2xhc3MgUGFnaW5nT3B0aW9uczxUID0gYW55PntcclxuICAvKipVUkwgb2YgdGhlIGFjdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uIHVwZGF0ZSovXHJcbiAgQWN0aW9uUG9zdFVSTDogc3RyaW5nID0gXCJcIlxyXG4gIFZhbGlkYXRpb25Ub2tlbjogc3RyaW5nID0gbnVsbFxyXG4gIC8qKiBDb21tYSBzZXBhcmF0ZXIgbGlzdCBvZiBwYXJhbWV0ZXJzIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIHVwZGF0ZWQgZnVuY3Rpb24sIHRoZSBwYXJhbWV0ZXIgbmFtZSBtdXN0IGJlIHRoZSBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBvZiB0aGUgZmlsdGVyLlxyXG4gICAgICogIGV4IFwic2VhcmNoVGV4dCxmcm9tRGF0ZVRpbWVQaWNrZXJcIiB3ZSBzaG91bGQgaGF2ZSBub3cgYW4gaW5wdXQgd2l0aCBpZCBzZWFyY2hUZXh0IGFuZCBhIGRhdGV0aW1lIHBpY2tlciB3aXRoIGlkIGZyb21EYXRlVGltZVBpY2tlciovXHJcbiAgRmlsdGVyczogRmlsdGVySXRlbVtdID0gW11cclxuICAvKipUaGUgdG90YWwgY291bnQgZm9yIHRoZSBpdGVtcyBpbiB0aGUgZGF0YXNvdXJjZSAqL1xyXG4gIFRvdGFsQ291bnQ6IG51bWJlciA9IDBcclxuICAvKiogTm8gb2YgaXRlbXMgaW4gb25lIHBhZ2UgXHJcbiAgICogRGVmYXVsdCBpcyAxMFxyXG4gICovXHJcbiAgUGFnZVNpemU6IG51bWJlciA9IDEwXHJcbiAgLyoqVHlwZWFoZWFkIHNlYXJjaCBpbnB1dCwgdXNlZCB0byBhdHRhY2ggb24gY2hhbmdlIGV2ZW50cyB0byB0aGUgc2VhcmNoIGlucHV0IHRvIHJlZnJlc2ggdGhlIHBhZ2luZyBhZnRlciBjaGFuZ2UgKi9cclxuICBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXM6IHN0cmluZ1tdID0gW11cclxuICAvKipDb21tYSBzZXBhcmF0ZXIgbGlzdCBvZiBEcm9wZG93bnMgZmlsdGVycyAsIHVzZWQgdG8gYXR0YWNoIG9uIGNoYW5nZSBldmVudHMgdG8gdGhlIGRyb3Bkb3duIGZpbHRlciB0byByZWZyZXNoIHRoZSBwYWdpbmcgYWZ0ZXIgY2hhbmdlICovXHJcbiAgRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzOiBzdHJpbmdbXSA9IFtdXHJcbiAgLyoqQ29tbWEgc2VwYXJhdGVyIGxpc3Qgb2YgQm9vdHN0cmFwIGRhdGVwaWNrZXIgZmlsdGVycywgdXNlZCB0byBhdHRhY2ggb24gY2hhbmdlIGV2ZW50cyB0byB0aGUgZGF0ZXBpY2tlciBmaWx0ZXIgdG8gcmVmcmVzaCB0aGUgcGFnaW5nIGFmdGVyIGNoYW5nZSAqL1xyXG4gIEJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lczogc3RyaW5nW10gPSBbXVxyXG4gIC8qKkNvbW1hIHNlcGFyYXRlciBsaXN0IG9mIGFueSBidXR0b24vZWxlbWVudCBmaWx0ZXJzIHRvIGF0dGFjaCBvbiBjbGljayBldmVudCwgdGhpcyB3aWxsIHJlZnJlc2ggdGhlIHBhZ2luZyBhZnRlciB0aGUgZXZlbnQgaXMgZmlyZWQgKi9cclxuICBPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lczogc3RyaW5nW10gPSBbXVxyXG4gIC8qKiBDb21tYSBzZXBhcmF0ZXIgbGlzdCBvZiBhbnkgYnV0dG9uL2VsZW1lbnQgZmlsdGVycyB0byBhdHRhY2ggb24ga2V5cHJlc3MvRW50ZXIgZXZlbnQsIHRoaXMgd2lsbCByZWZyZXNoIHRoZSBwYWdpbmcgYWZ0ZXIgdGhlIGV2ZW50IGlzIGZpcmVkICovXHJcbiAgT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXM6IHN0cmluZ1tdID0gW11cclxuICAvKiogVGhlIGpzIGZ1bmN0aW9uIG5hbWUgdG8gYmUgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgcGFnaW5nIHRvdGFsIGNvdW50IGFuZCBrZWVwIHRoZSBjdXJyZW50IHBhZ2UgYXMgaXMsIGhhdmUgdG8gcGFzcyB0aGUgbmV3IHRvdGFsIGNvdW50IG9mIHRoZSBkYXRhc291cmNlIGl0ZW1zXHJcbiAgICAgICogRGVmYXVsdCB2YWx1ZSBpcyBQYWdpbmdfVXBkYXRlIGZpbGwgdGhpcyBwYXJhbWV0ZXIgaW4gY2FzZSB0aGVyZSBhcmUgbXVsdGlwbGUgcGFnaW5nIGNvbnRyb2xzICovXHJcbiAgVXBkYXRlRnVuY3Rpb25OYW1lOiBzdHJpbmdcclxuICAvKiogIFRoZSBqcyBmdW5jdGlvbiBuYW1lIHRvIGJlIGNhbGxlZCB0byByZWluaXRpYWxpemUgdGhlIHBhZ2luZyBjb21wb25lbnQgd2l0aCBhIG5ldyBpdGVtcyBjb3VudCBhbmQgcmVzZXQgdGhlIGN1cmVudCBwYWdlIHRvIDEsIHlvdSBtdXN0IHBhc3MgdGhlIG5ldyB0b3RhbCBjb3VudCBvZiB0aGUgZGF0YXNvdXJjZSBpdGVtc1xyXG4gICAgICAqIERlZmF1bHQgdmFsdWUgaXMgUGFnaW5nX1JlaW5pdGlhbGl6ZSBmaWxsIHRoaXMgcGFyYW1ldGVyIGluIGNhc2UgdGhlcmUgYXJlIG11bHRpcGxlIHBhZ2luZyBjb250cm9scyovXHJcbiAgUmVpbml0aWFsaXplRnVuY3Rpb25OYW1lOiBzdHJpbmdcclxuICAvKipTaG93IGEgZHJvcGRvd24gdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIHBhZ2Ugc2l6ZSAgKi9cclxuICBTaG93UGFnZVNpemVPcHRpb246IGJvb2xlYW4gPSBmYWxzZVxyXG4gIC8qKmpzIGZ1bmN0aW9uIG5hbWUgdG8gYmUgY2FsbGVkIHdoZW4gYSBwYWdlIGlzIHVwZGF0ZWQgKi9cclxuICBPblN1Y2Nlc3NDYWxsQmFja0pTRnVuY3Rpb246IHN0cmluZ1xyXG4gIC8qKiBib29sIHRvIHNldCBibG9jayB1aSBieSBjb250YWluZXIgcmF0aGVyIHRoYW4gdGhlIHdob2xlIHdpbmRvdyAqL1xyXG4gIEJsb2NrVUlCeUNvbnRhaW5lcjogYm9vbGVhbiA9IHRydWVcclxuICAvKipoaWRlIFBhZ2luYXRpb24gV2hlbiBQYWdlIFNpemUgRXF1YWwgT25lICovXHJcbiAgSGlkZVBhZ2luYXRpb25XaGVuUGFnZVNpemVFcXVhbE9uZTogYm9vbGVhbiA9IHRydWVcclxuICAvKipTaG93IEZpcnN0IEFuZCBMYXN0ICovXHJcbiAgU2hvd0ZpcnN0QW5kTGFzdDogYm9vbGVhbiA9IHRydWVcclxuICAvKipTaG93IExvYWQgTW9yZSBCdXR0b24gIEFuZCBIaWRlIFBhZ2luZyAqL1xyXG4gIElzTG9hZE1vcmVDb250cm9sOiBib29sZWFuID0gZmFsc2VcclxuICAvKiogTG9hZCBNb3JlIGl0ZW1zICBXaGlsZSBTY3JvbGxpbmcgICovXHJcbiAgSXNJbmZpbml0ZVNjcm9sbDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgLyoqc2hvdWxkIGdldCBhIGh0bWwgZWxlbWVudCBvciBjc3Mgc2VsZWN0b3IgZm9yIGEgc2Nyb2xsYWJsZSBlbGVtZW50OyB3aW5kb3cgb3IgY3VycmVudCBlbGVtZW50IHdpbGwgYmUgdXNlZCBpZiB0aGlzIGF0dHJpYnV0ZSBpcyBlbXB0eS4gKi9cclxuICBJbmZpbml0ZVNjcm9sbENvbnRhaW5lclxyXG4gIC8qKmxpc3RlbnMgdG8gdGhlIHdpbmRvdyBzY3JvbGwgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGVsZW1lbnQgc2Nyb2xsLiB0aGlzIGFsbG93cyB0byBpbnZva2UgYSBjYWxsYmFjayBmdW5jdGlvbiBpbiB0aGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQgd2hpbGUgbGlzdGVubmluZyB0byB0aGUgd2luZG93IHNjcm9sbC4gKi9cclxuICBTY3JvbGxXaW5kb3c6IGJvb2xlYW4gPSB0cnVlXHJcbiAgRm9yY2VEaXJlY3Rpb246IEZvcmNlRGlyZWN0aW9uID0gRm9yY2VEaXJlY3Rpb24uRW5nbGlzaFxyXG4gIFR5cGVPZlJlc3BvbnNlPzogbmV3ICgpID0+IFRcclxuICAvKiogQ2xlYXIgRmlsdGVyIGJ1dHRvbiBzZWxlY3RvciAgKi9cclxuICBSZXNldEZpbHRlckJ1dHRvbk5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgRGlzYWJsZUJsb2NrVUk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBTdGFydFBhZ2luZ0NhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGw7XHJcbn1cclxuIl19
|
|
@@ -4,7 +4,7 @@ import { HttpClient } from '@angular/common/http';
|
|
|
4
4
|
import { PagingDTO } from '../../Shared/Models/PagingDTO';
|
|
5
5
|
import { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';
|
|
6
6
|
import { FilterType } from '../../Shared/Enums/FilterType';
|
|
7
|
-
import { RequestHandlerService, UtilityService } from '@bnsights/bbsf-utilities';
|
|
7
|
+
import { RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';
|
|
8
8
|
import { plainToClass } from 'class-transformer';
|
|
9
9
|
// tslint:disable-next-line: no-conflicting-lifecycle
|
|
10
10
|
export class PagingComponent {
|
|
@@ -151,6 +151,8 @@ export class PagingComponent {
|
|
|
151
151
|
this.getItemList(this.CurrentPage, true);
|
|
152
152
|
}
|
|
153
153
|
getItemList(page, IsFilterUpdated = false) {
|
|
154
|
+
if (this.options.StartPagingCallback)
|
|
155
|
+
this.options.StartPagingCallback.call(null);
|
|
154
156
|
let pagingDTO = new PagingDTO();
|
|
155
157
|
let size = Number.parseInt(this.options.PageSize.toString());
|
|
156
158
|
if (this.options.IsLoadMoreControl)
|
|
@@ -167,7 +169,9 @@ export class PagingComponent {
|
|
|
167
169
|
PagingDTO: pagingDTO,
|
|
168
170
|
Filters: filters
|
|
169
171
|
};
|
|
170
|
-
|
|
172
|
+
let requestOptions = new RequestOptionsModel();
|
|
173
|
+
requestOptions.disableBlockUI = this.options.DisableBlockUI;
|
|
174
|
+
this.requestHandlerService.post(this.options.ActionPostURL, this.options.Filters && this.options.Filters.length > 0 ? filtersDTO : pagingDTO, null, null, requestOptions)
|
|
171
175
|
.subscribe((responseData) => {
|
|
172
176
|
this.result = responseData.items; //this.castItems(responseData.items);
|
|
173
177
|
let castedResult = plainToClass(this.options.TypeOfResponse, this.result, { excludeExtraneousValues: true });
|
|
@@ -301,4 +305,4 @@ PagingComponent.propDecorators = {
|
|
|
301
305
|
options: [{ type: Input }],
|
|
302
306
|
group: [{ type: Input }]
|
|
303
307
|
};
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvUGFnaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBOEMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHakQscURBQXFEO0FBTXJELE1BQU0sT0FBTyxlQUFlO0lBMEIxQixZQUFtQixjQUE4QixFQUFVLElBQWdCLEVBQVUsTUFBYyxFQUFVLGVBQTZDLEVBQVUscUJBQTRDO1FBQTdMLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXhCaE4sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBUSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFRLENBQUMs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LHFCQUFxQjs7O29CQWdDM0IsTUFBTTtzQkFDTixLQUFLO29CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUGFnaW5nRFRPIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9QYWdpbmdEVE8nO1xyXG5pbXBvcnQgeyBQYWdpbmdPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9QYWdpbmdPcHRpb25zJztcclxuaW1wb3J0IHsgUmVxdWVzdE9wdGlvbnMsIFJlc3BvbnNlQ29udGVudFR5cGUsIEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9uUGFnaW5nRmlsdGVyc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvT25QYWdpbmdGaWx0ZXJzQ2hhbmdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL0ZpbHRlclR5cGUnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xyXG5pbXBvcnQgeyBQYWdpbmdQYXlsb2FkIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9QYWdpbmdQYXlsb2FkJztcclxuXHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1QYWdpbmcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9QYWdpbmcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL1BhZ2luZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmdDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBpdGVtcyA9IFtdO1xyXG4gIHBhZ2VPZkl0ZW1zOiBBcnJheTxhbnk+O1xyXG4gIHJlc3VsdDogVFtdID0gW107XHJcbiAgcGFnZXJDb25maWc6IGFueSA9IG51bGw7XHJcbiAgdG90YWxSb3c6IGFueSA9IDA7XHJcbiAgcGFnZVNpemU6IGFueSA9IDEwXHJcbiAgUGFnZXM6IGFueSA9IDBcclxuICBwYWdlc1RleHQgOiBzdHJpbmc7XHJcbiAgaXRlbXNUZXh0IDogc3RyaW5nO1xyXG4gIEN1cnJlbnRQYWdlOiBhbnkgPSAxXHJcbiAgU2hvd1BhZ2VTaXplT3B0aW9uID0gdHJ1ZTtcclxuICBTaG93Rmlyc3RBbmRMYXN0ID0gdHJ1ZTtcclxuICBoaWRlUGFnaW5hdGlvbldoZW5QYWdlU2l6ZUVxdWFsT25lID0gdHJ1ZVxyXG4gIFN1bSA9IDA7XHJcbiAgVGhyb3R0bGUgPSAzMDA7XHJcbiAgU2Nyb2xsRGlzdGFuY2UgPSAxO1xyXG4gIFNjcm9sbFVwRGlzdGFuY2UgPSAyO1xyXG4gIGRpcmVjdGlvbiA9ICcnO1xyXG4gIEhlYWRlcnM6IEh0dHBIZWFkZXJzO1xyXG4gIElzRmlyc3RDYWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgSXRlbXM6IEV2ZW50RW1pdHRlcjxUW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQElucHV0KCkgb3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNMb2FkTW9yZUNvbnRyb2wpXHJcbiAgICAgIHRoaXMuU3VtID0gdGhpcy5vcHRpb25zLlBhZ2VTaXplO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IERyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5Ecm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkdldFZhbHVlKCkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSA9PSB2YWx1ZSlcclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5Cb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBCb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gPT0gdmFsdWUpXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lID0gT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWUpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcztcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IE9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWUgPSBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lc1tpbmRleF07XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSAoPGFueT50aGlzLmdyb3VwLmdldChPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lKSkubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGUua2V5ID09IFwiRW50ZXJcIikge1xyXG4gICAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL0FkZCBjbGljayBldmVudCBvbiBSZXNldCBGaWx0ZXIgYnV0dG9uXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlJlc2V0RmlsdGVyQnV0dG9uTmFtZSAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHRoaXMub3B0aW9ucy5SZXNldEZpbHRlckJ1dHRvbk5hbWUpWzBdO1xyXG4gICAgICBpZiAoYnV0dG9uICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gYnV0dG9uIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5UeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLlR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcztcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZSA9IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lc1tpbmRleF07XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWUpLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGUua2V5ID09IFwiRW50ZXJcIikge1xyXG4gICAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZmFsc2UpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRHJvcERvd25DaGFuZ2UocmVzdWx0KSB7XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlUGFnZShQYWdlKSB7XHJcbiAgICBpZiAoUGFnZSA9PSAwKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBpZiAoUGFnZSA+IDApIHtcclxuICAgICAgaWYgKHRoaXMuSXNGaXJzdENhbGwpIHtcclxuICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSBQYWdlO1xyXG4gICAgICB0aGlzLmdldEl0ZW1MaXN0KFBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VQYWdlU2l6ZShlKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuUGFnZVNpemUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgb25TY3JvbGxEb3duKCkge1xyXG4gICAgdGhpcy5TdW0gKz0gdGhpcy5vcHRpb25zLlBhZ2VTaXplXHJcbiAgICB0aGlzLkN1cnJlbnRQYWdlID0gMVxyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9ICdkb3duJztcclxuICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldEl0ZW1MaXN0KHBhZ2UsIElzRmlsdGVyVXBkYXRlZCA9IGZhbHNlKSB7XHJcbiAgICBsZXQgcGFnaW5nRFRPID0gbmV3IFBhZ2luZ0RUTygpO1xyXG4gICAgbGV0IHNpemUgPSBOdW1iZXIucGFyc2VJbnQodGhpcy5vcHRpb25zLlBhZ2VTaXplLnRvU3RyaW5nKCkpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0xvYWRNb3JlQ29udHJvbClcclxuICAgICAgcGFnaW5nRFRPLlBhZ2VDb3VudCA9IHRoaXMuU3VtO1xyXG4gICAgZWxzZVxyXG4gICAgICBwYWdpbmdEVE8uUGFnZUNvdW50ID0gc2l6ZTtcclxuICAgIHBhZ2luZ0RUTy5DdXJyZW50UGFnZU51bWJlciA9IHBhZ2U7XHJcbiAgICBwYWdpbmdEVE8uVG90YWxDb3VudCA9IHRoaXMudG90YWxSb3c7XHJcbiAgICBwYWdpbmdEVE8uSXNGaWx0ZXJVcGRhdGVkID0gSXNGaWx0ZXJVcGRhdGVkO1xyXG4gICAgbGV0IGZpbHRlcnMgPSB7fTtcclxuICAgIGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNWYWx1ZSgpO1xyXG5cclxuICAgIC8vU2V0IEZpbHRlcnMgb2JqZWN0IHRoYXQgc2VudCB0byBhY3Rpb24gVVJMXHJcbiAgICBsZXQgZmlsdGVyc0RUTzogUGFnaW5nUGF5bG9hZCA9IHtcclxuICAgICAgUGFnaW5nRFRPOiBwYWdpbmdEVE8sXHJcbiAgICAgIEZpbHRlcnM6IGZpbHRlcnNcclxuICAgIH07XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5wb3N0KHRoaXMub3B0aW9ucy5BY3Rpb25Qb3N0VVJMLCB0aGlzLm9wdGlvbnMuRmlsdGVycyAmJiB0aGlzLm9wdGlvbnMuRmlsdGVycy5sZW5ndGggPiAwID8gZmlsdGVyc0RUTyA6IHBhZ2luZ0RUTylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3BvbnNlRGF0YS5pdGVtcyAvL3RoaXMuY2FzdEl0ZW1zKHJlc3BvbnNlRGF0YS5pdGVtcyk7XHJcbiAgICAgICAgbGV0IGNhc3RlZFJlc3VsdCA9IHBsYWluVG9DbGFzcyh0aGlzLm9wdGlvbnMuVHlwZU9mUmVzcG9uc2UsIHRoaXMucmVzdWx0LCB7IGV4Y2x1ZGVFeHRyYW5lb3VzVmFsdWVzOiB0cnVlIH0pXHJcbiAgICAgICAgdGhpcy5JdGVtcy5lbWl0KGNhc3RlZFJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy50b3RhbFJvdyA9IHJlc3BvbnNlRGF0YS50b3RhbENvdW50O1xyXG5cclxuICAgICAgICBpZiAoSXNGaWx0ZXJVcGRhdGVkKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICAgICAgICB0aGlzLlBhZ2VzID0gTWF0aC5jZWlsKCh0aGlzLnRvdGFsUm93IC8gdGhpcy5vcHRpb25zLlBhZ2VTaXplKSk7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gQXJyYXkodGhpcy50b3RhbFJvdyk7XHJcblxyXG4gICAgICAgICAgdGhpcy5zZXRUZXh0KHRoaXMuUGFnZXMsIHRoaXMudG90YWxSb3cpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSlcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9BZG1pbi9hY2NvdW50L2xvZ2luXCJdKVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIFJlaW5pdGlhbGl6ZVBhZ2luZyA9ICgpID0+IHtcclxuICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRJdGVtTGlzdCgxLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIFVwZGF0ZVBhZ2luZyA9ICgpID0+IHtcclxuICAgIC8vdGhpcy5Jc0ZpcnN0Q2FsbD10cnVlO1xyXG4gICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlKTtcclxuICB9XHJcblxyXG4gIGNhc3RJdGVtcyhvYmplY3RBcnI6IGFueVtdKTogVFtdIHtcclxuICAgIGxldCBvcmlnaW5hbEFycmF5OiBUW10gPSBbXVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG9iamVjdEFyci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IG9iamVjdEFycltpbmRleF07XHJcbiAgICAgIGxldCBrZXksIGtleXMgPSBPYmplY3Qua2V5cyhlbGVtZW50KTtcclxuICAgICAgbGV0IG4gPSBrZXlzLmxlbmd0aDtcclxuICAgICAgbGV0IG5ld09iamVjdCA9IHt9XHJcbiAgICAgIHdoaWxlIChuLS0pIHtcclxuICAgICAgICBrZXkgPSBrZXlzW25dO1xyXG4gICAgICAgIGxldCBPa2V5ID0ga2V5XHJcbiAgICAgICAgbmV3T2JqZWN0W2tleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIE9rZXkuc2xpY2UoMSldID0gZWxlbWVudFtrZXldO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBmaW5hbE9iamVjdCA9IG5ld09iamVjdCBhcyBUXHJcbiAgICAgIG9yaWdpbmFsQXJyYXkucHVzaChmaW5hbE9iamVjdClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3JpZ2luYWxBcnJheTtcclxuICB9XHJcblxyXG4gIHNldFRleHQocGFnZXNOdW1iZXI6IG51bWJlciwgaXRlbXNOdW1iZXI6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMudXRpbGl0eVNlcnZpY2UuaXNDdXJyZW50TGFuZ3VhZ2VBcmFiaWMoKSkge1xyXG4gICAgICAvL1NldCBwYWdlcyB0ZXh0XHJcbiAgICAgIGlmIChwYWdlc051bWJlciA8IDMgfHwgcGFnZXNOdW1iZXIgPiAxMClcclxuICAgICAgICB0aGlzLnBhZ2VzVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhZ2VcIik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBhZ2VzVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhZ2VzXCIpO1xyXG4gICAgICAvL1NldCBpdGVtcyB0ZXh0XHJcbiAgICAgIGlmIChpdGVtc051bWJlciA8IDMgfHwgaXRlbXNOdW1iZXIgPiAxMClcclxuICAgICAgICB0aGlzLml0ZW1zVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkl0ZW1cIik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLml0ZW1zVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkl0ZW1zXCIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vU2V0IHBhZ2VzIHRleHRcclxuICAgICAgaWYgKHBhZ2VzTnVtYmVyID4gMSlcclxuICAgICAgICB0aGlzLnBhZ2VzVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhZ2VzXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5wYWdlc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYWdlXCIpO1xyXG4gICAgICAvL1NldCBpdGVtcyB0ZXh0XHJcbiAgICAgIGlmIChpdGVtc051bWJlciA+IDEpXHJcbiAgICAgICAgdGhpcy5pdGVtc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJdGVtc1wiKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuaXRlbXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSXRlbVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVycygpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVycyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IFtdKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuRmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgY29uc3QgRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbRm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5SZWluaXRpYWxpemVQYWdpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZpbHRlcnNWYWx1ZSgpIHtcclxuICAgIGxldCBmaWx0ZXJzID0ge307XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRmlsdGVycyAhPSBbXSkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLkZpbHRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWUgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lICE9IFwiXCIpIHtcclxuICAgICAgICAgIGNvbnN0IEZvcm1Db250cm9sTmFtZSA9IHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWU7XHJcbiAgICAgICAgICBsZXQgQ29udHJvbFZhbHVlID0gdGhpcy5ncm91cC5jb250cm9sc1tGb3JtQ29udHJvbE5hbWVdLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKENvbnRyb2xWYWx1ZSAhPSB1bmRlZmluZWQgJiYgQ29udHJvbFZhbHVlICE9IG51bGwgJiYgQ29udHJvbFZhbHVlICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5GaWx0ZXJUeXBlID09IEZpbHRlclR5cGUuRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KENvbnRyb2xWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgPSAwOyBlbGVtZW50IDwgQ29udHJvbFZhbHVlLmxlbmd0aDsgZWxlbWVudCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gQ29udHJvbFZhbHVlW2VsZW1lbnRdO1xyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcnNbdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWVdID0gQ29udHJvbFZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZpbHRlclR5cGUgPT0gRmlsdGVyVHlwZS5BdXRvY29tcGxldGVUZXh0Qm94KVxyXG4gICAgICAgICAgICAgICAgQ29udHJvbFZhbHVlID0gSlNPTi5zdHJpbmdpZnkoQ29udHJvbFZhbHVlKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZpbHRlclR5cGUgPT0gRmlsdGVyVHlwZS5UYWdJbnB1dClcclxuICAgICAgICAgICAgICAgIENvbnRyb2xWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KENvbnRyb2xWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIGZpbHRlcnNbdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWVdID0gQ29udHJvbFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IEVsZW1lbnRqUXVlcnlTZWxlY3RvciA9IHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5qUXVlcnlTZWxlY3RvcjtcclxuICAgICAgICAgIGxldCBFbGVtZW50VmFsdWUgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihFbGVtZW50alF1ZXJ5U2VsZWN0b3IpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKEVsZW1lbnRWYWx1ZSAhPSB1bmRlZmluZWQgJiYgRWxlbWVudFZhbHVlICE9IG51bGwpXHJcbiAgICAgICAgICAgIGZpbHRlcnNbdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWVdID0gRWxlbWVudFZhbHVlO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsdGVycztcclxuICB9XHJcbn1cclxuIl19
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvUGFnaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBOEMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHakQscURBQXFEO0FBTXJELE1BQU0sT0FBTyxlQUFlO0lBMEIxQixZQUFtQixjQUE4QixFQUFVLElBQWdCLEVBQVUsTUFBYyxFQUFVLGVBQTZDLEVBQVUscUJBQTRDO1FBQTdMLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXhCaE4sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBUSxJQUFJLENBQUM7UUFDeEIsYUFB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T0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNuRTthQUNGO1NBQ0Y7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzs7WUEzVEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixrMURBQXNDOzthQUV2Qzs7O1lBVG9ELGNBQWM7WUFSMUQsVUFBVTtZQURWLE1BQU07WUFPTiw0QkFBNEI7WUFFNUIscUJBQXFCOzs7b0JBZ0MzQixNQUFNO3NCQUNOLEtBQUs7b0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQYWdpbmdEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ0RUTyc7XHJcbmltcG9ydCB7IFBhZ2luZ09wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ09wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgUmVzcG9uc2VDb250ZW50VHlwZSwgSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvRmlsdGVyVHlwZSc7XHJcbmltcG9ydCB7IFJlcXVlc3RIYW5kbGVyU2VydmljZSwgUmVxdWVzdE9wdGlvbnNNb2RlbCwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XHJcbmltcG9ydCB7IFBhZ2luZ1BheWxvYWQgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ1BheWxvYWQnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25mbGljdGluZy1saWZlY3ljbGVcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLVBhZ2luZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL1BhZ2luZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vUGFnaW5nLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luZ0NvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGl0ZW1zID0gW107XHJcbiAgcGFnZU9mSXRlbXM6IEFycmF5PGFueT47XHJcbiAgcmVzdWx0OiBUW10gPSBbXTtcclxuICBwYWdlckNvbmZpZzogYW55ID0gbnVsbDtcclxuICB0b3RhbFJvdzogYW55ID0gMDtcclxuICBwYWdlU2l6ZTogYW55ID0gMTBcclxuICBQYWdlczogYW55ID0gMFxyXG4gIHBhZ2VzVGV4dDogc3RyaW5nO1xyXG4gIGl0ZW1zVGV4dDogc3RyaW5nO1xyXG4gIEN1cnJlbnRQYWdlOiBhbnkgPSAxXHJcbiAgU2hvd1BhZ2VTaXplT3B0aW9uID0gdHJ1ZTtcclxuICBTaG93Rmlyc3RBbmRMYXN0ID0gdHJ1ZTtcclxuICBoaWRlUGFnaW5hdGlvbldoZW5QYWdlU2l6ZUVxdWFsT25lID0gdHJ1ZVxyXG4gIFN1bSA9IDA7XHJcbiAgVGhyb3R0bGUgPSAzMDA7XHJcbiAgU2Nyb2xsRGlzdGFuY2UgPSAxO1xyXG4gIFNjcm9sbFVwRGlzdGFuY2UgPSAyO1xyXG4gIGRpcmVjdGlvbiA9ICcnO1xyXG4gIEhlYWRlcnM6IEh0dHBIZWFkZXJzO1xyXG4gIElzRmlyc3RDYWxsOiBib29sZWFuID0gdHJ1ZTtcclxuICBAT3V0cHV0KCkgSXRlbXM6IEV2ZW50RW1pdHRlcjxUW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XHJcbiAgQElucHV0KCkgb3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNMb2FkTW9yZUNvbnRyb2wpXHJcbiAgICAgIHRoaXMuU3VtID0gdGhpcy5vcHRpb25zLlBhZ2VTaXplO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IERyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5Ecm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkdldFZhbHVlKCkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSA9PSB2YWx1ZSlcclxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5Cb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBCb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gPT0gdmFsdWUpXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lID0gT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWUpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcztcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IE9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IE9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWUgPSBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lc1tpbmRleF07XHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSAoPGFueT50aGlzLmdyb3VwLmdldChPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lKSkubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGUua2V5ID09IFwiRW50ZXJcIikge1xyXG4gICAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvL0FkZCBjbGljayBldmVudCBvbiBSZXNldCBGaWx0ZXIgYnV0dG9uXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlJlc2V0RmlsdGVyQnV0dG9uTmFtZSAhPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHRoaXMub3B0aW9ucy5SZXNldEZpbHRlckJ1dHRvbk5hbWUpWzBdO1xyXG4gICAgICBpZiAoYnV0dG9uICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gYnV0dG9uIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5UeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLlR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcztcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZSA9IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lc1tpbmRleF07XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWUpLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGUua2V5ID09IFwiRW50ZXJcIikge1xyXG4gICAgICAgICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZmFsc2UpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRHJvcERvd25DaGFuZ2UocmVzdWx0KSB7XHJcbiAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlUGFnZShQYWdlKSB7XHJcbiAgICBpZiAoUGFnZSA9PSAwKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBpZiAoUGFnZSA+IDApIHtcclxuICAgICAgaWYgKHRoaXMuSXNGaXJzdENhbGwpIHtcclxuICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSBQYWdlO1xyXG4gICAgICB0aGlzLmdldEl0ZW1MaXN0KFBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGFuZ2VQYWdlU2l6ZShlKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuUGFnZVNpemUgPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgb25TY3JvbGxEb3duKCkge1xyXG4gICAgdGhpcy5TdW0gKz0gdGhpcy5vcHRpb25zLlBhZ2VTaXplXHJcbiAgICB0aGlzLkN1cnJlbnRQYWdlID0gMVxyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9ICdkb3duJztcclxuICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldEl0ZW1MaXN0KHBhZ2UsIElzRmlsdGVyVXBkYXRlZCA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlN0YXJ0UGFnaW5nQ2FsbGJhY2spXHJcbiAgICAgIHRoaXMub3B0aW9ucy5TdGFydFBhZ2luZ0NhbGxiYWNrLmNhbGwobnVsbCk7XHJcblxyXG4gICAgbGV0IHBhZ2luZ0RUTyA9IG5ldyBQYWdpbmdEVE8oKTtcclxuICAgIGxldCBzaXplID0gTnVtYmVyLnBhcnNlSW50KHRoaXMub3B0aW9ucy5QYWdlU2l6ZS50b1N0cmluZygpKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNMb2FkTW9yZUNvbnRyb2wpXHJcbiAgICAgIHBhZ2luZ0RUTy5QYWdlQ291bnQgPSB0aGlzLlN1bTtcclxuICAgIGVsc2VcclxuICAgICAgcGFnaW5nRFRPLlBhZ2VDb3VudCA9IHNpemU7XHJcblxyXG4gICAgcGFnaW5nRFRPLkN1cnJlbnRQYWdlTnVtYmVyID0gcGFnZTtcclxuICAgIHBhZ2luZ0RUTy5Ub3RhbENvdW50ID0gdGhpcy50b3RhbFJvdztcclxuICAgIHBhZ2luZ0RUTy5Jc0ZpbHRlclVwZGF0ZWQgPSBJc0ZpbHRlclVwZGF0ZWQ7XHJcbiAgICBsZXQgZmlsdGVycyA9IHt9O1xyXG4gICAgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyc1ZhbHVlKCk7XHJcblxyXG4gICAgLy9TZXQgRmlsdGVycyBvYmplY3QgdGhhdCBzZW50IHRvIGFjdGlvbiBVUkxcclxuICAgIGxldCBmaWx0ZXJzRFRPOiBQYWdpbmdQYXlsb2FkID0ge1xyXG4gICAgICBQYWdpbmdEVE86IHBhZ2luZ0RUTyxcclxuICAgICAgRmlsdGVyczogZmlsdGVyc1xyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgcmVxdWVzdE9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG4gICAgcmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkgPSB0aGlzLm9wdGlvbnMuRGlzYWJsZUJsb2NrVUk7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5wb3N0KHRoaXMub3B0aW9ucy5BY3Rpb25Qb3N0VVJMLCB0aGlzLm9wdGlvbnMuRmlsdGVycyAmJiB0aGlzLm9wdGlvbnMuRmlsdGVycy5sZW5ndGggPiAwID8gZmlsdGVyc0RUTyA6IHBhZ2luZ0RUTywgbnVsbCwgbnVsbCwgcmVxdWVzdE9wdGlvbnMpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQgPSByZXNwb25zZURhdGEuaXRlbXMgLy90aGlzLmNhc3RJdGVtcyhyZXNwb25zZURhdGEuaXRlbXMpO1xyXG4gICAgICAgIGxldCBjYXN0ZWRSZXN1bHQgPSBwbGFpblRvQ2xhc3ModGhpcy5vcHRpb25zLlR5cGVPZlJlc3BvbnNlLCB0aGlzLnJlc3VsdCwgeyBleGNsdWRlRXh0cmFuZW91c1ZhbHVlczogdHJ1ZSB9KVxyXG4gICAgICAgIHRoaXMuSXRlbXMuZW1pdChjYXN0ZWRSZXN1bHQpO1xyXG4gICAgICAgIHRoaXMudG90YWxSb3cgPSByZXNwb25zZURhdGEudG90YWxDb3VudDtcclxuXHJcbiAgICAgICAgaWYgKElzRmlsdGVyVXBkYXRlZCkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5QYWdlcyA9IE1hdGguY2VpbCgodGhpcy50b3RhbFJvdyAvIHRoaXMub3B0aW9ucy5QYWdlU2l6ZSkpO1xyXG4gICAgICAgICAgdGhpcy5pdGVtcyA9IEFycmF5KHRoaXMudG90YWxSb3cpO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2V0VGV4dCh0aGlzLlBhZ2VzLCB0aGlzLnRvdGFsUm93KTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvQWRtaW4vYWNjb3VudC9sb2dpblwiXSlcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBSZWluaXRpYWxpemVQYWdpbmcgPSAoKSA9PiB7XHJcbiAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0SXRlbUxpc3QoMSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBVcGRhdGVQYWdpbmcgPSAoKSA9PiB7XHJcbiAgICAvL3RoaXMuSXNGaXJzdENhbGw9dHJ1ZTtcclxuICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSk7XHJcbiAgfVxyXG5cclxuICBjYXN0SXRlbXMob2JqZWN0QXJyOiBhbnlbXSk6IFRbXSB7XHJcbiAgICBsZXQgb3JpZ2luYWxBcnJheTogVFtdID0gW11cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBvYmplY3RBcnIubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBvYmplY3RBcnJbaW5kZXhdO1xyXG4gICAgICBsZXQga2V5LCBrZXlzID0gT2JqZWN0LmtleXMoZWxlbWVudCk7XHJcbiAgICAgIGxldCBuID0ga2V5cy5sZW5ndGg7XHJcbiAgICAgIGxldCBuZXdPYmplY3QgPSB7fVxyXG4gICAgICB3aGlsZSAobi0tKSB7XHJcbiAgICAgICAga2V5ID0ga2V5c1tuXTtcclxuICAgICAgICBsZXQgT2tleSA9IGtleVxyXG4gICAgICAgIG5ld09iamVjdFtrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBPa2V5LnNsaWNlKDEpXSA9IGVsZW1lbnRba2V5XTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZmluYWxPYmplY3QgPSBuZXdPYmplY3QgYXMgVFxyXG4gICAgICBvcmlnaW5hbEFycmF5LnB1c2goZmluYWxPYmplY3QpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9yaWdpbmFsQXJyYXk7XHJcbiAgfVxyXG5cclxuICBzZXRUZXh0KHBhZ2VzTnVtYmVyOiBudW1iZXIsIGl0ZW1zTnVtYmVyOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnV0aWxpdHlTZXJ2aWNlLmlzQ3VycmVudExhbmd1YWdlQXJhYmljKCkpIHtcclxuICAgICAgLy9TZXQgcGFnZXMgdGV4dFxyXG4gICAgICBpZiAocGFnZXNOdW1iZXIgPCAzIHx8IHBhZ2VzTnVtYmVyID4gMTApXHJcbiAgICAgICAgdGhpcy5wYWdlc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYWdlXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5wYWdlc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYWdlc1wiKTtcclxuICAgICAgLy9TZXQgaXRlbXMgdGV4dFxyXG4gICAgICBpZiAoaXRlbXNOdW1iZXIgPCAzIHx8IGl0ZW1zTnVtYmVyID4gMTApXHJcbiAgICAgICAgdGhpcy5pdGVtc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJdGVtXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5pdGVtc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJdGVtc1wiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvL1NldCBwYWdlcyB0ZXh0XHJcbiAgICAgIGlmIChwYWdlc051bWJlciA+IDEpXHJcbiAgICAgICAgdGhpcy5wYWdlc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYWdlc1wiKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZVwiKTtcclxuICAgICAgLy9TZXQgaXRlbXMgdGV4dFxyXG4gICAgICBpZiAoaXRlbXNOdW1iZXIgPiAxKVxyXG4gICAgICAgIHRoaXMuaXRlbXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSXRlbXNcIik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLml0ZW1zVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkl0ZW1cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcnMoKSB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRmlsdGVycyAhPSBbXSkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLkZpbHRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWUgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lICE9IFwiXCIpIHtcclxuICAgICAgICAgIGNvbnN0IEZvcm1Db250cm9sTmFtZSA9IHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWU7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW0Zvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRGaWx0ZXJzVmFsdWUoKSB7XHJcbiAgICBsZXQgZmlsdGVycyA9IHt9O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnMgIT0gW10pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICBjb25zdCBGb3JtQ29udHJvbE5hbWUgPSB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgICAgICAgbGV0IENvbnRyb2xWYWx1ZSA9IHRoaXMuZ3JvdXAuY29udHJvbHNbRm9ybUNvbnRyb2xOYW1lXS52YWx1ZTtcclxuICAgICAgICAgIGlmIChDb250cm9sVmFsdWUgIT0gdW5kZWZpbmVkICYmIENvbnRyb2xWYWx1ZSAhPSBudWxsICYmIENvbnRyb2xWYWx1ZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRmlsdGVyVHlwZSA9PSBGaWx0ZXJUeXBlLkRhdGVQaWNrZXIpIHtcclxuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShDb250cm9sVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBlbGVtZW50ID0gMDsgZWxlbWVudCA8IENvbnRyb2xWYWx1ZS5sZW5ndGg7IGVsZW1lbnQrKykge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IENvbnRyb2xWYWx1ZVtlbGVtZW50XTtcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IENvbnRyb2xWYWx1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5GaWx0ZXJUeXBlID09IEZpbHRlclR5cGUuQXV0b2NvbXBsZXRlVGV4dEJveClcclxuICAgICAgICAgICAgICAgIENvbnRyb2xWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KENvbnRyb2xWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5GaWx0ZXJUeXBlID09IEZpbHRlclR5cGUuVGFnSW5wdXQpXHJcbiAgICAgICAgICAgICAgICBDb250cm9sVmFsdWUgPSBKU09OLnN0cmluZ2lmeShDb250cm9sVmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IENvbnRyb2xWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbHRlcnNbdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWVdID0gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBFbGVtZW50alF1ZXJ5U2VsZWN0b3IgPSB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0ualF1ZXJ5U2VsZWN0b3I7XHJcbiAgICAgICAgICBsZXQgRWxlbWVudFZhbHVlID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoRWxlbWVudGpRdWVyeVNlbGVjdG9yKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgICAgICAgIGlmIChFbGVtZW50VmFsdWUgIT0gdW5kZWZpbmVkICYmIEVsZW1lbnRWYWx1ZSAhPSBudWxsKVxyXG4gICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IEVsZW1lbnRWYWx1ZTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbHRlcnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -4311,6 +4311,8 @@ class PagingComponent {
|
|
|
4311
4311
|
this.getItemList(this.CurrentPage, true);
|
|
4312
4312
|
}
|
|
4313
4313
|
getItemList(page, IsFilterUpdated = false) {
|
|
4314
|
+
if (this.options.StartPagingCallback)
|
|
4315
|
+
this.options.StartPagingCallback.call(null);
|
|
4314
4316
|
let pagingDTO = new PagingDTO();
|
|
4315
4317
|
let size = Number.parseInt(this.options.PageSize.toString());
|
|
4316
4318
|
if (this.options.IsLoadMoreControl)
|
|
@@ -4327,7 +4329,9 @@ class PagingComponent {
|
|
|
4327
4329
|
PagingDTO: pagingDTO,
|
|
4328
4330
|
Filters: filters
|
|
4329
4331
|
};
|
|
4330
|
-
|
|
4332
|
+
let requestOptions = new RequestOptionsModel();
|
|
4333
|
+
requestOptions.disableBlockUI = this.options.DisableBlockUI;
|
|
4334
|
+
this.requestHandlerService.post(this.options.ActionPostURL, this.options.Filters && this.options.Filters.length > 0 ? filtersDTO : pagingDTO, null, null, requestOptions)
|
|
4331
4335
|
.subscribe((responseData) => {
|
|
4332
4336
|
this.result = responseData.items; //this.castItems(responseData.items);
|
|
4333
4337
|
let castedResult = plainToClass(this.options.TypeOfResponse, this.result, { excludeExtraneousValues: true });
|
|
@@ -7256,6 +7260,8 @@ class PagingOptions {
|
|
|
7256
7260
|
this.ForceDirection = ForceDirection.English;
|
|
7257
7261
|
/** Clear Filter button selector */
|
|
7258
7262
|
this.ResetFilterButtonName = null;
|
|
7263
|
+
this.DisableBlockUI = false;
|
|
7264
|
+
this.StartPagingCallback = null;
|
|
7259
7265
|
}
|
|
7260
7266
|
}
|
|
7261
7267
|
|