@ecodev/natural 61.0.0 → 61.0.2
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/esm2022/lib/classes/abstract-detail.mjs +36 -33
- package/esm2022/lib/classes/abstract-editable-list.mjs +8 -6
- package/esm2022/lib/classes/abstract-list.mjs +74 -55
- package/esm2022/lib/classes/abstract-navigable-list.mjs +9 -9
- package/esm2022/lib/classes/cumulative-changes.mjs +3 -5
- package/esm2022/lib/classes/data-source.mjs +3 -2
- package/esm2022/lib/classes/query-variable-manager.mjs +3 -3
- package/esm2022/lib/directives/http-prefix.directive.mjs +4 -6
- package/esm2022/lib/modules/alert/alert.service.mjs +9 -11
- package/esm2022/lib/modules/alert/confirm.component.mjs +6 -11
- package/esm2022/lib/modules/avatar/component/avatar.component.mjs +25 -23
- package/esm2022/lib/modules/avatar/service/avatar.service.mjs +22 -24
- package/esm2022/lib/modules/avatar/sources/source.mjs +2 -1
- package/esm2022/lib/modules/columns-picker/columns-picker.component.mjs +26 -28
- package/esm2022/lib/modules/columns-picker/public-api.mjs +1 -1
- package/esm2022/lib/modules/common/directives/background-density.directive.mjs +6 -8
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +18 -19
- package/esm2022/lib/modules/common/directives/src-density.directive.mjs +6 -8
- package/esm2022/lib/modules/common/pipes/capitalize.pipe.mjs +3 -3
- package/esm2022/lib/modules/common/pipes/ellipsis.pipe.mjs +3 -3
- package/esm2022/lib/modules/common/pipes/enum.pipe.mjs +7 -9
- package/esm2022/lib/modules/common/pipes/time-ago.pipe.mjs +4 -3
- package/esm2022/lib/modules/common/public-api.mjs +2 -2
- package/esm2022/lib/modules/common/services/memory-storage.mjs +4 -6
- package/esm2022/lib/modules/common/services/seo.service.mjs +18 -26
- package/esm2022/lib/modules/detail-header/detail-header.component.mjs +38 -33
- package/esm2022/lib/modules/dialog-trigger/dialog-trigger.component.mjs +13 -11
- package/esm2022/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +13 -12
- package/esm2022/lib/modules/dropdown-components/public-api.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +10 -13
- package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +29 -33
- package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +27 -32
- package/esm2022/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +29 -30
- package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +17 -15
- package/esm2022/lib/modules/dropdown-components/type-select/type-select.component.mjs +25 -25
- package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +15 -17
- package/esm2022/lib/modules/file/abstract-file.mjs +51 -47
- package/esm2022/lib/modules/file/component/file.component.mjs +51 -41
- package/esm2022/lib/modules/file/file-drop.directive.mjs +10 -13
- package/esm2022/lib/modules/file/file-select.directive.mjs +9 -12
- package/esm2022/lib/modules/file/file.service.mjs +15 -20
- package/esm2022/lib/modules/file/public-api.mjs +1 -1
- package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +7 -8
- package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +15 -12
- package/esm2022/lib/modules/hierarchic-selector/classes/flat-node.mjs +8 -2
- package/esm2022/lib/modules/hierarchic-selector/classes/model-node.mjs +4 -2
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +71 -55
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +18 -20
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +17 -11
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +7 -9
- package/esm2022/lib/modules/icon/icon.directive.mjs +15 -23
- package/esm2022/lib/modules/logger/error-handler.mjs +11 -25
- package/esm2022/lib/modules/logger/public-api.mjs +2 -2
- package/esm2022/lib/modules/matomo/matomo.service.mjs +15 -22
- package/esm2022/lib/modules/panels/abstract-panel.mjs +23 -19
- package/esm2022/lib/modules/panels/panels.component.mjs +10 -9
- package/esm2022/lib/modules/panels/panels.service.mjs +56 -52
- package/esm2022/lib/modules/relations/relations.component.mjs +74 -45
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container.component.mjs +21 -22
- package/esm2022/lib/modules/search/dropdown-container/dropdown-ref.mjs +4 -2
- package/esm2022/lib/modules/search/dropdown-container/dropdown.service.mjs +8 -11
- package/esm2022/lib/modules/search/facet-selector/facet-selector.component.mjs +13 -18
- package/esm2022/lib/modules/search/group/group.component.mjs +12 -11
- package/esm2022/lib/modules/search/input/input.component.mjs +86 -73
- package/esm2022/lib/modules/search/public-api.mjs +1 -1
- package/esm2022/lib/modules/search/search/search.component.mjs +37 -40
- package/esm2022/lib/modules/select/abstract-select.component.mjs +66 -39
- package/esm2022/lib/modules/select/select/select.component.mjs +51 -48
- package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +32 -22
- package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +39 -34
- package/esm2022/lib/modules/sidenav/sidenav/sidenav.component.mjs +3 -3
- package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +34 -29
- package/esm2022/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +3 -3
- package/esm2022/lib/modules/sidenav/sidenav-stack.service.mjs +13 -15
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +47 -54
- package/esm2022/lib/modules/stamp/stamp.component.mjs +4 -3
- package/esm2022/lib/modules/table-button/table-button.component.mjs +16 -13
- package/esm2022/lib/services/abstract-model.service.mjs +17 -7
- package/esm2022/lib/services/debounce.service.mjs +7 -9
- package/esm2022/lib/services/enum.service.mjs +7 -10
- package/esm2022/lib/services/link-mutation.service.mjs +11 -10
- package/esm2022/lib/services/persistence.service.mjs +9 -21
- package/esm2022/lib/services/swiss-parsing-date-adapter.service.mjs +3 -3
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/ecodev-natural.mjs +1357 -1270
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/modules/alert/alert.service.d.ts +1 -3
- package/lib/modules/alert/confirm.component.d.ts +1 -2
- package/lib/modules/avatar/component/avatar.component.d.ts +0 -2
- package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -3
- package/lib/modules/columns-picker/public-api.d.ts +1 -1
- package/lib/modules/common/directives/background-density.directive.d.ts +0 -2
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +2 -4
- package/lib/modules/common/directives/src-density.directive.d.ts +0 -2
- package/lib/modules/common/pipes/enum.pipe.d.ts +0 -2
- package/lib/modules/common/public-api.d.ts +2 -1
- package/lib/modules/common/services/seo.service.d.ts +2 -3
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -3
- package/lib/modules/dropdown-components/public-api.d.ts +9 -9
- package/lib/modules/dropdown-components/type-boolean/type-boolean.component.d.ts +1 -3
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -3
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +2 -3
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +1 -2
- package/lib/modules/dropdown-components/type-options/type-options.component.d.ts +3 -3
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +1 -2
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +1 -2
- package/lib/modules/file/component/file.component.d.ts +0 -3
- package/lib/modules/file/file.service.d.ts +0 -1
- package/lib/modules/file/public-api.d.ts +1 -1
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +1 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +2 -3
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +0 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +1 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -2
- package/lib/modules/icon/icon.directive.d.ts +3 -5
- package/lib/modules/logger/error-handler.d.ts +3 -4
- package/lib/modules/logger/public-api.d.ts +2 -1
- package/lib/modules/matomo/matomo.service.d.ts +2 -5
- package/lib/modules/panels/panels.component.d.ts +1 -3
- package/lib/modules/panels/panels.service.d.ts +2 -6
- package/lib/modules/relations/relations.component.d.ts +3 -5
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -4
- package/lib/modules/search/dropdown-container/dropdown.service.d.ts +1 -3
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -2
- package/lib/modules/search/input/input.component.d.ts +1 -3
- package/lib/modules/search/public-api.d.ts +5 -5
- package/lib/modules/search/search/search.component.d.ts +0 -2
- package/lib/modules/select/select-enum/select-enum.component.d.ts +4 -4
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +4 -4
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +0 -1
- package/lib/modules/sidenav/sidenav.service.d.ts +2 -7
- package/lib/services/enum.service.d.ts +0 -2
- package/lib/services/link-mutation.service.d.ts +0 -2
- package/lib/services/persistence.service.d.ts +2 -4
- package/package.json +1 -1
- package/public-api.d.ts +3 -2
|
@@ -18,43 +18,46 @@ function isNaturalDialogTriggerProvidedData(dialogData) {
|
|
|
18
18
|
}
|
|
19
19
|
// @dynamic
|
|
20
20
|
export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
21
|
+
key;
|
|
22
|
+
service;
|
|
23
|
+
/**
|
|
24
|
+
* Data retrieved by the server via route resolvers.
|
|
25
|
+
*
|
|
26
|
+
* The key `model` is special. It is readonly and represents the model being updated
|
|
27
|
+
* as it exists on server. The value is kept up to date when Apollo mutates it on server.
|
|
28
|
+
*
|
|
29
|
+
* The only time when `model` is not readonly is during creation. Only then can we modify the model values directly.
|
|
30
|
+
*
|
|
31
|
+
* Other keys, if present, are whatever is returned from route resolvers as-is.
|
|
32
|
+
*/
|
|
33
|
+
data;
|
|
34
|
+
/**
|
|
35
|
+
* Form that manages the data from the controller
|
|
36
|
+
*/
|
|
37
|
+
form = new UntypedFormGroup({});
|
|
38
|
+
/**
|
|
39
|
+
* Show / hides the bottom fab button (mostly to hide it when we are on other tabs where semantic of button can conflict with ...
|
|
40
|
+
* semantic of data on other tab, like relations that list other objects)
|
|
41
|
+
*/
|
|
42
|
+
showFabButton = true;
|
|
43
|
+
alertService = inject(NaturalAlertService);
|
|
44
|
+
router = inject(Router);
|
|
45
|
+
route = inject(ActivatedRoute);
|
|
46
|
+
_dialogData = inject(MAT_DIALOG_DATA, { optional: true });
|
|
47
|
+
/**
|
|
48
|
+
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
49
|
+
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
50
|
+
* model from DB (by navigating to update page).
|
|
51
|
+
*/
|
|
52
|
+
_isUpdatePage = false;
|
|
53
|
+
changes = new CumulativeChanges();
|
|
21
54
|
constructor(key, service) {
|
|
22
55
|
super();
|
|
23
56
|
this.key = key;
|
|
24
57
|
this.service = service;
|
|
25
|
-
/**
|
|
26
|
-
* Data retrieved by the server via route resolvers.
|
|
27
|
-
*
|
|
28
|
-
* The key `model` is special. It is readonly and represents the model being updated
|
|
29
|
-
* as it exists on server. The value is kept up to date when Apollo mutates it on server.
|
|
30
|
-
*
|
|
31
|
-
* The only time when `model` is not readonly is during creation. Only then can we modify the model values directly.
|
|
32
|
-
*
|
|
33
|
-
* Other keys, if present, are whatever is returned from route resolvers as-is.
|
|
34
|
-
*/
|
|
35
58
|
this.data = {
|
|
36
59
|
model: this.service.getDefaultForServer(),
|
|
37
60
|
};
|
|
38
|
-
/**
|
|
39
|
-
* Form that manages the data from the controller
|
|
40
|
-
*/
|
|
41
|
-
this.form = new UntypedFormGroup({});
|
|
42
|
-
/**
|
|
43
|
-
* Show / hides the bottom fab button (mostly to hide it when we are on other tabs where semantic of button can conflict with ...
|
|
44
|
-
* semantic of data on other tab, like relations that list other objects)
|
|
45
|
-
*/
|
|
46
|
-
this.showFabButton = true;
|
|
47
|
-
this.alertService = inject(NaturalAlertService);
|
|
48
|
-
this.router = inject(Router);
|
|
49
|
-
this.route = inject(ActivatedRoute);
|
|
50
|
-
this._dialogData = inject(MAT_DIALOG_DATA, { optional: true });
|
|
51
|
-
/**
|
|
52
|
-
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
53
|
-
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
54
|
-
* model from DB (by navigating to update page).
|
|
55
|
-
*/
|
|
56
|
-
this._isUpdatePage = false;
|
|
57
|
-
this.changes = new CumulativeChanges();
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
63
|
* You probably should not override this method. Instead, consider overriding `initForm()`.
|
|
@@ -215,11 +218,11 @@ export class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
215
218
|
this.form = this.service.getFormGroup(this.data.model);
|
|
216
219
|
this.changes.initialize(this.form.getRawValue());
|
|
217
220
|
}
|
|
218
|
-
static
|
|
219
|
-
static
|
|
221
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractDetail, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
222
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractDetail, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
220
223
|
}
|
|
221
224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractDetail, decorators: [{
|
|
222
225
|
type: Directive,
|
|
223
226
|
args: [{ standalone: true }]
|
|
224
227
|
}], ctorParameters: () => [{ type: undefined }, { type: undefined }] });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQVE5RCxTQUFTLGtDQUFrQyxDQUN2QyxVQUFtQjtJQUVuQixPQUFPLENBQ0gsQ0FBQyxDQUFDLFVBQVU7UUFDWixPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLGdCQUFnQixJQUFJLFVBQVU7UUFDOUIsVUFBVSxDQUFDLGNBQWMsWUFBWSxjQUFjLENBQ3RELENBQUM7QUFDTixDQUFDO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFlVCxTQUFRLG9CQUFvQjtJQTRDNUIsWUFDdUIsR0FBVyxFQUNkLE9BQWlCO1FBRWpDLEtBQUssRUFBRSxDQUFDO1FBSFcsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQVU7UUEzQ3JDOzs7Ozs7Ozs7V0FTRztRQUNhLFNBQUksR0FBaUM7WUFDakQsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUU7U0FDWixDQUFDO1FBRWxDOztXQUVHO1FBQ0ksU0FBSSxHQUFxQixJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpEOzs7V0FHRztRQUNJLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRVQsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUzQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhCLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakMsZ0JBQVcsR0FBWSxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFFbEY7Ozs7V0FJRztRQUNLLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ2IsWUFBTyxHQUFHLElBQUksaUJBQWlCLEVBQWdDLENBQUM7SUFPakYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxLQUFLLEdBQUcsa0NBQWtDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztnQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakIsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDTCxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQ0FBaUMsQ0FBQyxLQUFxQjtRQUNuRCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwQixLQUFLLENBQUMsSUFBSTthQUNMLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ1gscUdBQXFHLENBQ3hHLENBQUM7WUFDTixDQUFDO1lBRUQsa0dBQWtHO1lBQ2xHLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2xCLEdBQUcsQ0FBQyxDQUFDLEtBQStCLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLElBQUksR0FBRztvQkFDUixHQUFHLElBQUk7b0JBQ1AsS0FBSyxFQUFFLEtBQUs7aUJBQ2lCLENBQUM7Z0JBRWxDLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDMUIsVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDTixDQUFDLENBQUMsRUFDRixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3RDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLEVBQUUsZUFBZSxHQUFHLEtBQUs7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBRUQsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRztnQkFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7YUFDekMsQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUEsWUFBWSxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUk7UUFDekIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxPQUFPO2FBQ1AsTUFBTSxDQUFDLFNBQVMsQ0FBQzthQUNqQixJQUFJLENBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBLE1BQU0sQ0FBQyxDQUFDO1lBRXhDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQ2hDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQy9CLE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2RixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsdUJBQXVCO2dCQUNyRSxDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7Z0JBQzVFLENBQUM7WUFDTCxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsZ0JBQTRCLEVBQUUsU0FBMkM7UUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQixDQUNJLFNBQVM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDckIsU0FBUyxDQUFBLGFBQWEsRUFDdEIsU0FBUyxDQUFBLG9EQUFvRCxFQUM3RCxTQUFTLENBQUEsMEJBQTBCLENBQ3RDLENBQ0o7YUFDSSxJQUFJLENBQ0QsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVoQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBRTVDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLElBQUksQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztvQkFFMUMsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLFlBQVksR0FBRyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3RELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUU7d0JBQzVFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztxQkFDekIsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsNkRBQTZEO0lBQ25ELFVBQVUsQ0FBQyxLQUErQjtRQUNoRCxPQUFPO0lBQ1gsQ0FBQztJQUVEOzs7T0FHRztJQUNILDZEQUE2RDtJQUNuRCxVQUFVLENBQUMsS0FBK0I7UUFDaEQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxTQUFTLENBQUMsS0FBNEI7UUFDNUMsT0FBTztJQUNYLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxRQUFRO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0E3UVEscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtrZWJhYkNhc2V9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge05hdHVyYWxBbGVydFNlcnZpY2V9IGZyb20gJy4uL21vZHVsZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdFBhbmVsfSBmcm9tICcuLi9tb2R1bGVzL3BhbmVscy9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZSwgV2l0aElkfSBmcm9tICcuLi9zZXJ2aWNlcy9hYnN0cmFjdC1tb2RlbC5zZXJ2aWNlJztcbmltcG9ydCB7RXh0cmFjdFJlc29sdmUsIEV4dHJhY3RUY3JlYXRlLCBFeHRyYWN0VG9uZSwgRXh0cmFjdFR1cGRhdGUsIExpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7RU1QVFksIGVuZFdpdGgsIGZpbmFsaXplLCBsYXN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2lmVmFsaWQsIHZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcbmltcG9ydCB7UXVlcnlWYXJpYWJsZXN9IGZyb20gJy4vcXVlcnktdmFyaWFibGUtbWFuYWdlcic7XG5pbXBvcnQge0N1bXVsYXRpdmVDaGFuZ2VzfSBmcm9tICcuL2N1bXVsYXRpdmUtY2hhbmdlcyc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGF9IGZyb20gJy4uL21vZHVsZXMvZGlhbG9nLXRyaWdnZXIvZGlhbG9nLXRyaWdnZXIuY29tcG9uZW50JztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogYERhdGFgIGNvbnRhaW5zIGluIGBtb2RlbGAgZWl0aGVyIHRoZSBtb2RlbCBmZXRjaGVkIGZyb20gREIgb3IgZGVmYXVsdCB2YWx1ZXMgKHdpdGhvdXQgSUQpLiBBbmQgYmVzaWRlcyBgbW9kZWxgLFxuICogYW55IG90aGVyIGV4dHJhIGtleXMgZGVmaW5lZCBieSBFeHRyYS5cbiAqL1xudHlwZSBEYXRhPFRTZXJ2aWNlLCBFeHRyYT4gPSB7bW9kZWw6IHtpZD86IHN0cmluZ30gJiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT59ICYgRXh0cmE7XG5cbmZ1bmN0aW9uIGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEoXG4gICAgZGlhbG9nRGF0YTogdW5rbm93bixcbik6IGRpYWxvZ0RhdGEgaXMgTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGE8bmV2ZXI+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICAhIWRpYWxvZ0RhdGEgJiZcbiAgICAgICAgdHlwZW9mIGRpYWxvZ0RhdGEgPT09ICdvYmplY3QnICYmXG4gICAgICAgICdhY3RpdmF0ZWRSb3V0ZScgaW4gZGlhbG9nRGF0YSAmJlxuICAgICAgICBkaWFsb2dEYXRhLmFjdGl2YXRlZFJvdXRlIGluc3RhbmNlb2YgQWN0aXZhdGVkUm91dGVcbiAgICApO1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7c3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbEFic3RyYWN0RGV0YWlsPFxuICAgICAgICBUU2VydmljZSBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZTxcbiAgICAgICAgICAgIHtpZDogc3RyaW5nfSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIFBhZ2luYXRlZERhdGE8TGl0ZXJhbD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIGFueSxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnlcbiAgICAgICAgPixcbiAgICAgICAgRXh0cmFSZXNvbHZlIGV4dGVuZHMgTGl0ZXJhbCA9IFJlY29yZDxuZXZlciwgbmV2ZXI+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdFBhbmVsXG4gICAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgICAvKipcbiAgICAgKiBEYXRhIHJldHJpZXZlZCBieSB0aGUgc2VydmVyIHZpYSByb3V0ZSByZXNvbHZlcnMuXG4gICAgICpcbiAgICAgKiBUaGUga2V5IGBtb2RlbGAgaXMgc3BlY2lhbC4gSXQgaXMgcmVhZG9ubHkgYW5kIHJlcHJlc2VudHMgdGhlIG1vZGVsIGJlaW5nIHVwZGF0ZWRcbiAgICAgKiBhcyBpdCBleGlzdHMgb24gc2VydmVyLiBUaGUgdmFsdWUgaXMga2VwdCB1cCB0byBkYXRlIHdoZW4gQXBvbGxvIG11dGF0ZXMgaXQgb24gc2VydmVyLlxuICAgICAqXG4gICAgICogVGhlIG9ubHkgdGltZSB3aGVuIGBtb2RlbGAgaXMgbm90IHJlYWRvbmx5IGlzIGR1cmluZyBjcmVhdGlvbi4gT25seSB0aGVuIGNhbiB3ZSBtb2RpZnkgdGhlIG1vZGVsIHZhbHVlcyBkaXJlY3RseS5cbiAgICAgKlxuICAgICAqIE90aGVyIGtleXMsIGlmIHByZXNlbnQsIGFyZSB3aGF0ZXZlciBpcyByZXR1cm5lZCBmcm9tIHJvdXRlIHJlc29sdmVycyBhcy1pcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGF0YTogRGF0YTxUU2VydmljZSwgRXh0cmFSZXNvbHZlPiA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5nZXREZWZhdWx0Rm9yU2VydmVyKCksXG4gICAgfSBhcyBEYXRhPFRTZXJ2aWNlLCBFeHRyYVJlc29sdmU+O1xuXG4gICAgLyoqXG4gICAgICogRm9ybSB0aGF0IG1hbmFnZXMgdGhlIGRhdGEgZnJvbSB0aGUgY29udHJvbGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyAvIGhpZGVzIHRoZSBib3R0b20gZmFiIGJ1dHRvbiAobW9zdGx5IHRvIGhpZGUgaXQgd2hlbiB3ZSBhcmUgb24gb3RoZXIgdGFicyB3aGVyZSBzZW1hbnRpYyBvZiBidXR0b24gY2FuIGNvbmZsaWN0IHdpdGggLi4uXG4gICAgICogc2VtYW50aWMgb2YgZGF0YSBvbiBvdGhlciB0YWIsIGxpa2UgcmVsYXRpb25zIHRoYXQgbGlzdCBvdGhlciBvYmplY3RzKVxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93RmFiQnV0dG9uID0gdHJ1ZTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGVydFNlcnZpY2UgPSBpbmplY3QoTmF0dXJhbEFsZXJ0U2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlhbG9nRGF0YTogdW5rbm93biA9IGluamVjdChNQVRfRElBTE9HX0RBVEEsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgLyoqXG4gICAgICogT25jZSBzZXQsIHRoaXMgbXVzdCBub3QgY2hhbmdlIGFueW1vcmUsIGVzcGVjaWFsbHkgbm90IHJpZ2h0IGFmdGVyIHRoZSBjcmVhdGlvbiBtdXRhdGlvbixcbiAgICAgKiBzbyB0aGUgZm9ybSBkb2VzIG5vdCBzd2l0Y2ggZnJvbSBjcmVhdGlvbiBtb2RlIHRvIHVwZGF0ZSBtb2RlIHdpdGhvdXQgYW4gYWN0dWFsIHJlbG9hZCBvZlxuICAgICAqIG1vZGVsIGZyb20gREIgKGJ5IG5hdmlnYXRpbmcgdG8gdXBkYXRlIHBhZ2UpLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzVXBkYXRlUGFnZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlcyA9IG5ldyBDdW11bGF0aXZlQ2hhbmdlczx0eXBlb2YgdGhpcy5mb3JtLmdldFJhd1ZhbHVlPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBZb3UgcHJvYmFibHkgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4gSW5zdGVhZCwgY29uc2lkZXIgb3ZlcnJpZGluZyBgaW5pdEZvcm0oKWAuXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IGlzTmF0dXJhbERpYWxvZ1RyaWdnZXJQcm92aWRlZERhdGEodGhpcy5fZGlhbG9nRGF0YSlcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RpYWxvZ0RhdGEuYWN0aXZhdGVkUm91dGVcbiAgICAgICAgICAgICAgICA6IHRoaXMucm91dGU7XG4gICAgICAgICAgICB0aGlzLiNzdWJzY3JpYmVUb01vZGVsRnJvbVJlc29sdmVkRGF0YShyb3V0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zaG93RmFiQnV0dG9uID0gaW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgI3N1YnNjcmliZVRvTW9kZWxGcm9tUmVzb2x2ZWREYXRhKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgICAgICBsZXQgcHJldmlvdXNJZCA9IC0xO1xuICAgICAgICByb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGRhdGEubW9kZWwgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvbHZlZCBkYXRhIG11c3QgaW5jbHVkZSB0aGUga2V5IGBtb2RlbGAsIGFuZCBpdCBtdXN0IGJlIGFuIG9ic2VydmFibGUgKHVzdWFsbHkgb25lIGZyb20gQXBvbGxvKS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBtb2RlbCB0byBrbm93IHdoZW4gQXBvbGxvIGNhY2hlIGlzIGNoYW5nZWQsIHNvIHdlIGNhbiByZWZsZWN0IGl0IGludG8gYGRhdGEubW9kZWxgXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1vZGVsLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKG1vZGVsOiBFeHRyYWN0UmVzb2x2ZTxUU2VydmljZT4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNJZCAhPT0gbW9kZWwuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJZCA9IG1vZGVsLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGBkYXRhLm1vZGVsYCB3YXMgZmV0Y2hlZCBmcm9tIERCLCBzbyB3ZSBhcmUgb24gYW4gdXBkYXRlIHBhZ2UsIG9yIGlmIGl0IGlzIGEgbmV3IG9iamVjdFxuICAgICAqIHdpdGggKG9ubHkpIGRlZmF1bHQgdmFsdWVzLCBzbyB3ZSBhcmUgb24gYSBjcmVhdGlvbiBwYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIGNoZWNraW5nIGBkYXRhLm1vZGVsLmlkYCBkaXJlY3RseSwgaW4gb3JkZXIgdG8gdHlwZSBndWFyZCBhbmQgZ2V0IHByb3BlciB0eXBpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNVcGRhdGVQYWdlKCk6IHRoaXMgaXMge2RhdGE6IHttb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+fX0ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNVcGRhdGVQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIgd2l0aCB0aGUgdmFsdWVzIGZyb20gdGhlIGZvcm0gZmllbGRzIHRoYXQgd2VyZSBtb2RpZmllZCBzaW5jZVxuICAgICAqIHRoZSBpbml0aWFsaXphdGlvbiwgb3Igc2luY2UgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgdXBkYXRlLlxuICAgICAqXG4gICAgICogRm9ybSBmaWVsZHMgdGhhdCBhcmUgbmV2ZXIgbW9kaWZpZWQgYXJlICoqbm90Kiogc2VudCB0byB0aGUgc2VydmVyLCB1bmxlc3MgaWYgeW91IHNwZWNpZnkgYHN1Ym1pdEFsbEZpZWxkc2AuXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZShub3cgPSBmYWxzZSwgc3VibWl0QWxsRmllbGRzID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlUGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZUFsbEZvcm1Db250cm9scyh0aGlzLmZvcm0pO1xuXG4gICAgICAgIGlmVmFsaWQodGhpcy5mb3JtKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoc3VibWl0QWxsRmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VzLmluaXRpYWxpemUoe30pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b1N1Ym1pdCA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5kYXRhLm1vZGVsLmlkLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY2hhbmdlcy5kaWZmZXJlbmNlcyhuZXdWYWx1ZXMpLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gbm93ID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZU5vdyh0b1N1Ym1pdCkgOiB0aGlzLnNlcnZpY2UudXBkYXRlKHRvU3VibWl0KTtcbiAgICAgICAgICAgIHVwZGF0ZS5zdWJzY3JpYmUobW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5jb21taXQobmV3VmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBNaXMgw6Agam91cmApO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdFVwZGF0ZShtb2RlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShyZWRpcmVjdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlKG5ld1ZhbHVlcylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYENyw6nDqWApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RDcmVhdGUobW9kZWwpLnBpcGUoZW5kV2l0aChtb2RlbCksIGxhc3QoKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChtb2RlbDogV2l0aElkPG9iamVjdD4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2xkVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRVcmw6IHN0cmluZyA9IHRoaXMucGFuZWxEYXRhPy5jb25maWcucGFyYW1zLm5leHRSb3V0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdVcmwgPSBvbGRVcmwucmVwbGFjZSgnL25ldycsICcvJyArIG1vZGVsLmlkKSArIChuZXh0VXJsID8gJy8nICsgbmV4dFVybCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChuZXdVcmwpOyAvLyByZXBsYWNlIC9uZXcgYnkgLzEyM1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLicsIG1vZGVsLmlkXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmZvcm0uZW5hYmxlKCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGBjb25maXJtZXJgIGNhbiBiZSB1c2VkIHRvIG9wZW4gYSBjdXN0b20gZGlhbG9nLCBvciBhbnl0aGluZyBlbHNlLCB0byBjb25maXJtIHRoZSBkZWxldGlvbiwgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgZGlhbG9nXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShyZWRpcmVjdGlvblJvdXRlPzogdW5rbm93bltdLCBjb25maXJtZXI/OiBPYnNlcnZhYmxlPGJvb2xlYW4gfCB1bmRlZmluZWQ+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgKFxuICAgICAgICAgICAgY29uZmlybWVyID8/XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBTdXBwcmVzc2lvbmAsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFZvdWxlei12b3VzIHN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnQgY2V0IMOpbMOpbWVudCA/YCxcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJpbWVyIGTDqWZpbml0aXZlbWVudGAsXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChjb25maXJtZWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpcm1lZCB8fCAhdGhpcy5pc1VwZGF0ZVBhZ2UoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVEZWxldGUodGhpcy5kYXRhLm1vZGVsKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRlbGV0ZShbdGhpcy5kYXRhLm1vZGVsXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgU3VwcHJpbcOpYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWxTZXJ2aWNlPy5nb1RvUGVudWx0aW1hdGVQYW5lbCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0Um91dGUgPSBbJy4uLy4uLycgKyBrZWJhYkNhc2UodGhpcy5rZXkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKHJlZGlyZWN0aW9uUm91dGUgPyByZWRpcmVjdGlvblJvdXRlIDogZGVmYXVsdFJvdXRlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmZvcm0uZW5hYmxlKCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdFVwZGF0ZShtb2RlbDogRXh0cmFjdFR1cGRhdGU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIGJlIHN1YnNjcmliZWQgdG8gaW1tZWRpYXRlbHkgYW5kIHRoZVxuICAgICAqIHJlZGlyZWN0IG5hdmlnYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBhZnRlciB0aGUgb2JzZXJ2YWJsZSBjb21wbGV0ZXMuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBwb3N0Q3JlYXRlKG1vZGVsOiBFeHRyYWN0VGNyZWF0ZTxUU2VydmljZT4pOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcHJlRGVsZXRlKG1vZGVsOiBFeHRyYWN0VG9uZTxUU2VydmljZT4pOiB2b2lkIHtcbiAgICAgICAgLy8gbm9vcFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgdGhlIGZvcm0gd2hlbmV2ZXIgaXQgaXMgbmVlZGVkLlxuICAgICAqXG4gICAgICogWW91IHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCwgYW5kIG5vdCBgbmdPbkluaXQoKWAgaWYgeW91IG5lZWQgdG8gY3VzdG9taXplIHRoZSBmb3JtLiBCZWNhdXNlIHRoaXMgd2lsbFxuICAgICAqIGNvcnJlY3RseSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uZSB0aW1lIHBlciBjb21wb25lbnQgaW5zdGFuY2UgaWYgbmVlZGVkLCB3aGVuIHRoZSByb3V0ZSBjaGFuZ2VzLiBCdXQgYG5nT25Jbml0KClgXG4gICAgICogd2lsbCBpbmNvcnJlY3RseSBiZSBjYWxsZWQgZXhhY3RseSAxIHRpbWUgcGVyIGNvbXBvbmVudCBpbnN0YW5jZSwgZXZlbiBpZiB0aGUgb2JqZWN0IGNoYW5nZXMgdmlhIHJvdXRlIG5hdmlnYXRpb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1VwZGF0ZVBhZ2UgPSAhIXRoaXMuZGF0YS5tb2RlbC5pZDtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Hcm91cCh0aGlzLmRhdGEubW9kZWwpO1xuICAgICAgICB0aGlzLmNoYW5nZXMuaW5pdGlhbGl6ZSh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgfVxufVxuIl19
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDOztBQVE5RCxTQUFTLGtDQUFrQyxDQUN2QyxVQUFtQjtJQUVuQixPQUFPLENBQ0gsQ0FBQyxDQUFDLFVBQVU7UUFDWixPQUFPLFVBQVUsS0FBSyxRQUFRO1FBQzlCLGdCQUFnQixJQUFJLFVBQVU7UUFDOUIsVUFBVSxDQUFDLGNBQWMsWUFBWSxjQUFjLENBQ3RELENBQUM7QUFDTixDQUFDO0FBRUQsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFlVCxTQUFRLG9CQUFvQjtJQTJDTDtJQUNIO0lBekNwQjs7Ozs7Ozs7O09BU0c7SUFDYSxJQUFJLENBQStCO0lBRW5EOztPQUVHO0lBQ0ksSUFBSSxHQUFxQixJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXpEOzs7T0FHRztJQUNJLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFVCxZQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFM0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV4QixLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWpDLFdBQVcsR0FBWSxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFFbEY7Ozs7T0FJRztJQUNLLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDYixPQUFPLEdBQUcsSUFBSSxpQkFBaUIsRUFBZ0MsQ0FBQztJQUVqRixZQUN1QixHQUFXLEVBQ2QsT0FBaUI7UUFFakMsS0FBSyxFQUFFLENBQUM7UUFIVyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ2QsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUlqQyxJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUU7U0FDWixDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sS0FBSyxHQUFHLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzlELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7Z0JBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsaUNBQWlDLENBQUMsS0FBcUI7UUFDbkQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEIsS0FBSyxDQUFDLElBQUk7YUFDTCxJQUFJLENBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssWUFBWSxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUksS0FBSyxDQUNYLHFHQUFxRyxDQUN4RyxDQUFDO1lBQ04sQ0FBQztZQUVELGtHQUFrRztZQUNsRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNsQixHQUFHLENBQUMsQ0FBQyxLQUErQixFQUFFLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUc7b0JBQ1IsR0FBRyxJQUFJO29CQUNQLEtBQUssRUFBRSxLQUFLO2lCQUNpQixDQUFDO2dCQUVsQyxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzFCLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLFlBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLGVBQWUsR0FBRyxLQUFLO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUVELHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUc7Z0JBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO2FBQ3pDLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBLFlBQVksQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJO1FBQ3pCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsT0FBTzthQUNQLE1BQU0sQ0FBQyxTQUFTLENBQUM7YUFDakIsSUFBSSxDQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQSxNQUFNLENBQUMsQ0FBQztZQUV4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUMvQixNQUFNLE9BQU8sR0FBVyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO29CQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtnQkFDckUsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO2dCQUM1RSxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGdCQUE0QixFQUFFLFNBQTJDO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEIsQ0FDSSxTQUFTO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ3JCLFNBQVMsQ0FBQSxhQUFhLEVBQ3RCLFNBQVMsQ0FBQSxvREFBb0QsRUFDN0QsU0FBUyxDQUFBLDBCQUEwQixDQUN0QyxDQUNKO2FBQ0ksSUFBSSxDQUNELFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7b0JBRTFDLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN0RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFO3dCQUM1RSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUs7cUJBQ3pCLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxVQUFVLENBQUMsS0FBK0I7UUFDaEQsT0FBTztJQUNYLENBQUM7SUFFRDs7O09BR0c7SUFDSCw2REFBNkQ7SUFDbkQsVUFBVSxDQUFDLEtBQStCO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsU0FBUyxDQUFDLEtBQTRCO1FBQzVDLE9BQU87SUFDWCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sUUFBUTtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7dUdBL1FRLHFCQUFxQjsyRkFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTO21CQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7a2ViYWJDYXNlfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtOYXR1cmFsQWxlcnRTZXJ2aWNlfSBmcm9tICcuLi9tb2R1bGVzL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RQYW5lbH0gZnJvbSAnLi4vbW9kdWxlcy9wYW5lbHMvYWJzdHJhY3QtcGFuZWwnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2UsIFdpdGhJZH0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RSZXNvbHZlLCBFeHRyYWN0VGNyZWF0ZSwgRXh0cmFjdFRvbmUsIEV4dHJhY3RUdXBkYXRlLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge0VNUFRZLCBlbmRXaXRoLCBmaW5hbGl6ZSwgbGFzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtpZlZhbGlkLCB2YWxpZGF0ZUFsbEZvcm1Db250cm9sc30gZnJvbSAnLi92YWxpZGF0b3JzJztcbmltcG9ydCB7UGFnaW5hdGVkRGF0YX0gZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge1F1ZXJ5VmFyaWFibGVzfSBmcm9tICcuL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtDdW11bGF0aXZlQ2hhbmdlc30gZnJvbSAnLi9jdW11bGF0aXZlLWNoYW5nZXMnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEF9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge05hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhfSBmcm9tICcuLi9tb2R1bGVzL2RpYWxvZy10cmlnZ2VyL2RpYWxvZy10cmlnZ2VyLmNvbXBvbmVudCc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIGBEYXRhYCBjb250YWlucyBpbiBgbW9kZWxgIGVpdGhlciB0aGUgbW9kZWwgZmV0Y2hlZCBmcm9tIERCIG9yIGRlZmF1bHQgdmFsdWVzICh3aXRob3V0IElEKS4gQW5kIGJlc2lkZXMgYG1vZGVsYCxcbiAqIGFueSBvdGhlciBleHRyYSBrZXlzIGRlZmluZWQgYnkgRXh0cmEuXG4gKi9cbnR5cGUgRGF0YTxUU2VydmljZSwgRXh0cmE+ID0ge21vZGVsOiB7aWQ/OiBzdHJpbmd9ICYgRXh0cmFjdFJlc29sdmU8VFNlcnZpY2U+fSAmIEV4dHJhO1xuXG5mdW5jdGlvbiBpc05hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhKFxuICAgIGRpYWxvZ0RhdGE6IHVua25vd24sXG4pOiBkaWFsb2dEYXRhIGlzIE5hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhPG5ldmVyPiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgISFkaWFsb2dEYXRhICYmXG4gICAgICAgIHR5cGVvZiBkaWFsb2dEYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAnYWN0aXZhdGVkUm91dGUnIGluIGRpYWxvZ0RhdGEgJiZcbiAgICAgICAgZGlhbG9nRGF0YS5hY3RpdmF0ZWRSb3V0ZSBpbnN0YW5jZW9mIEFjdGl2YXRlZFJvdXRlXG4gICAgKTtcbn1cblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoe3N0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxBYnN0cmFjdERldGFpbDxcbiAgICAgICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgICAgICB7aWQ6IHN0cmluZ30sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBQYWdpbmF0ZWREYXRhPExpdGVyYWw+LFxuICAgICAgICAgICAgUXVlcnlWYXJpYWJsZXMsXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55XG4gICAgICAgID4sXG4gICAgICAgIEV4dHJhUmVzb2x2ZSBleHRlbmRzIExpdGVyYWwgPSBSZWNvcmQ8bmV2ZXIsIG5ldmVyPixcbiAgICA+XG4gICAgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RQYW5lbFxuICAgIGltcGxlbWVudHMgT25Jbml0XG57XG4gICAgLyoqXG4gICAgICogRGF0YSByZXRyaWV2ZWQgYnkgdGhlIHNlcnZlciB2aWEgcm91dGUgcmVzb2x2ZXJzLlxuICAgICAqXG4gICAgICogVGhlIGtleSBgbW9kZWxgIGlzIHNwZWNpYWwuIEl0IGlzIHJlYWRvbmx5IGFuZCByZXByZXNlbnRzIHRoZSBtb2RlbCBiZWluZyB1cGRhdGVkXG4gICAgICogYXMgaXQgZXhpc3RzIG9uIHNlcnZlci4gVGhlIHZhbHVlIGlzIGtlcHQgdXAgdG8gZGF0ZSB3aGVuIEFwb2xsbyBtdXRhdGVzIGl0IG9uIHNlcnZlci5cbiAgICAgKlxuICAgICAqIFRoZSBvbmx5IHRpbWUgd2hlbiBgbW9kZWxgIGlzIG5vdCByZWFkb25seSBpcyBkdXJpbmcgY3JlYXRpb24uIE9ubHkgdGhlbiBjYW4gd2UgbW9kaWZ5IHRoZSBtb2RlbCB2YWx1ZXMgZGlyZWN0bHkuXG4gICAgICpcbiAgICAgKiBPdGhlciBrZXlzLCBpZiBwcmVzZW50LCBhcmUgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgZnJvbSByb3V0ZSByZXNvbHZlcnMgYXMtaXMuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGRhdGE6IERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtIHRoYXQgbWFuYWdlcyB0aGUgZGF0YSBmcm9tIHRoZSBjb250cm9sbGVyXG4gICAgICovXG4gICAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IC8gaGlkZXMgdGhlIGJvdHRvbSBmYWIgYnV0dG9uIChtb3N0bHkgdG8gaGlkZSBpdCB3aGVuIHdlIGFyZSBvbiBvdGhlciB0YWJzIHdoZXJlIHNlbWFudGljIG9mIGJ1dHRvbiBjYW4gY29uZmxpY3Qgd2l0aCAuLi5cbiAgICAgKiBzZW1hbnRpYyBvZiBkYXRhIG9uIG90aGVyIHRhYiwgbGlrZSByZWxhdGlvbnMgdGhhdCBsaXN0IG90aGVyIG9iamVjdHMpXG4gICAgICovXG4gICAgcHVibGljIHNob3dGYWJCdXR0b24gPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0U2VydmljZSA9IGluamVjdChOYXR1cmFsQWxlcnRTZXJ2aWNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dEYXRhOiB1bmtub3duID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICAvKipcbiAgICAgKiBPbmNlIHNldCwgdGhpcyBtdXN0IG5vdCBjaGFuZ2UgYW55bW9yZSwgZXNwZWNpYWxseSBub3QgcmlnaHQgYWZ0ZXIgdGhlIGNyZWF0aW9uIG11dGF0aW9uLFxuICAgICAqIHNvIHRoZSBmb3JtIGRvZXMgbm90IHN3aXRjaCBmcm9tIGNyZWF0aW9uIG1vZGUgdG8gdXBkYXRlIG1vZGUgd2l0aG91dCBhbiBhY3R1YWwgcmVsb2FkIG9mXG4gICAgICogbW9kZWwgZnJvbSBEQiAoYnkgbmF2aWdhdGluZyB0byB1cGRhdGUgcGFnZSkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNVcGRhdGVQYWdlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VzID0gbmV3IEN1bXVsYXRpdmVDaGFuZ2VzPHR5cGVvZiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWU+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCByZWFkb25seSBrZXk6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFRTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuZGF0YSA9IHtcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UuZ2V0RGVmYXVsdEZvclNlcnZlcigpLFxuICAgICAgICB9IGFzIERhdGE8VFNlcnZpY2UsIEV4dHJhUmVzb2x2ZT47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogWW91IHByb2JhYmx5IHNob3VsZCBub3Qgb3ZlcnJpZGUgdGhpcyBtZXRob2QuIEluc3RlYWQsIGNvbnNpZGVyIG92ZXJyaWRpbmcgYGluaXRGb3JtKClgLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgcm91dGUgPSBpc05hdHVyYWxEaWFsb2dUcmlnZ2VyUHJvdmlkZWREYXRhKHRoaXMuX2RpYWxvZ0RhdGEpXG4gICAgICAgICAgICAgICAgPyB0aGlzLl9kaWFsb2dEYXRhLmFjdGl2YXRlZFJvdXRlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnJvdXRlO1xuICAgICAgICAgICAgdGhpcy4jc3Vic2NyaWJlVG9Nb2RlbEZyb21SZXNvbHZlZERhdGEocm91dGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVRhYihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0ZhYkJ1dHRvbiA9IGluZGV4ID09PSAwO1xuICAgIH1cblxuICAgICNzdWJzY3JpYmVUb01vZGVsRnJvbVJlc29sdmVkRGF0YShyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiB2b2lkIHtcbiAgICAgICAgbGV0IHByZXZpb3VzSWQgPSAtMTtcbiAgICAgICAgcm91dGUuZGF0YVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShkYXRhLm1vZGVsIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVzb2x2ZWQgZGF0YSBtdXN0IGluY2x1ZGUgdGhlIGtleSBgbW9kZWxgLCBhbmQgaXQgbXVzdCBiZSBhbiBvYnNlcnZhYmxlICh1c3VhbGx5IG9uZSBmcm9tIEFwb2xsbykuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBTdWJzY3JpYmUgdG8gbW9kZWwgdG8ga25vdyB3aGVuIEFwb2xsbyBjYWNoZSBpcyBjaGFuZ2VkLCBzbyB3ZSBjYW4gcmVmbGVjdCBpdCBpbnRvIGBkYXRhLm1vZGVsYFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5tb2RlbC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChtb2RlbDogRXh0cmFjdFJlc29sdmU8VFNlcnZpY2U+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBEYXRhPFRTZXJ2aWNlLCBFeHRyYVJlc29sdmU+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzSWQgIT09IG1vZGVsLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSWQgPSBtb2RlbC5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciBgZGF0YS5tb2RlbGAgd2FzIGZldGNoZWQgZnJvbSBEQiwgc28gd2UgYXJlIG9uIGFuIHVwZGF0ZSBwYWdlLCBvciBpZiBpdCBpcyBhIG5ldyBvYmplY3RcbiAgICAgKiB3aXRoIChvbmx5KSBkZWZhdWx0IHZhbHVlcywgc28gd2UgYXJlIG9uIGEgY3JlYXRpb24gcGFnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiBjaGVja2luZyBgZGF0YS5tb2RlbC5pZGAgZGlyZWN0bHksIGluIG9yZGVyIHRvIHR5cGUgZ3VhcmQgYW5kIGdldCBwcm9wZXIgdHlwaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzVXBkYXRlUGFnZSgpOiB0aGlzIGlzIHtkYXRhOiB7bW9kZWw6IEV4dHJhY3RUb25lPFRTZXJ2aWNlPn19IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVXBkYXRlUGFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIG9iamVjdCBvbiB0aGUgc2VydmVyIHdpdGggdGhlIHZhbHVlcyBmcm9tIHRoZSBmb3JtIGZpZWxkcyB0aGF0IHdlcmUgbW9kaWZpZWQgc2luY2VcbiAgICAgKiB0aGUgaW5pdGlhbGl6YXRpb24sIG9yIHNpbmNlIHRoZSBwcmV2aW91cyBzdWNjZXNzZnVsIHVwZGF0ZS5cbiAgICAgKlxuICAgICAqIEZvcm0gZmllbGRzIHRoYXQgYXJlIG5ldmVyIG1vZGlmaWVkIGFyZSAqKm5vdCoqIHNlbnQgdG8gdGhlIHNlcnZlciwgdW5sZXNzIGlmIHlvdSBzcGVjaWZ5IGBzdWJtaXRBbGxGaWVsZHNgLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUobm93ID0gZmFsc2UsIHN1Ym1pdEFsbEZpZWxkcyA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc1VwZGF0ZVBhZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZlZhbGlkKHRoaXMuZm9ybSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHN1Ym1pdEFsbEZpZWxkcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlcy5pbml0aWFsaXplKHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9TdWJtaXQgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5tb2RlbC5pZCxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmNoYW5nZXMuZGlmZmVyZW5jZXMobmV3VmFsdWVzKSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IG5vdyA/IHRoaXMuc2VydmljZS51cGRhdGVOb3codG9TdWJtaXQpIDogdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0b1N1Ym1pdCk7XG4gICAgICAgICAgICB1cGRhdGUuc3Vic2NyaWJlKG1vZGVsID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZXMuY29tbWl0KG5ld1ZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgTWlzIMOgIGpvdXJgKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RVcGRhdGUobW9kZWwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUocmVkaXJlY3QgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzKHRoaXMuZm9ybSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuc2VydmljZVxuICAgICAgICAgICAgLmNyZWF0ZShuZXdWYWx1ZXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAobW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKCRsb2NhbGl6ZWBDcsOpw6lgKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3N0Q3JlYXRlKG1vZGVsKS5waXBlKGVuZFdpdGgobW9kZWwpLCBsYXN0KCkpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgobW9kZWw6IFdpdGhJZDxvYmplY3Q+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWRpcmVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9sZFVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0VXJsOiBzdHJpbmcgPSB0aGlzLnBhbmVsRGF0YT8uY29uZmlnLnBhcmFtcy5uZXh0Um91dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VXJsID0gb2xkVXJsLnJlcGxhY2UoJy9uZXcnLCAnLycgKyBtb2RlbC5pZCkgKyAobmV4dFVybCA/ICcvJyArIG5leHRVcmwgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmV3VXJsKTsgLy8gcmVwbGFjZSAvbmV3IGJ5IC8xMjNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCBtb2RlbC5pZF0sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBgY29uZmlybWVyYCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgY3VzdG9tIGRpYWxvZywgb3IgYW55dGhpbmcgZWxzZSwgdG8gY29uZmlybSB0aGUgZGVsZXRpb24sIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGUocmVkaXJlY3Rpb25Sb3V0ZT86IHVua25vd25bXSwgY29uZmlybWVyPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgdW5kZWZpbmVkPik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICAgIChcbiAgICAgICAgICAgIGNvbmZpcm1lciA/P1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgU3VwcHJlc3Npb25gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBWb3VsZXotdm91cyBzdXBwcmltZXIgZMOpZmluaXRpdmVtZW50IGNldCDDqWzDqW1lbnQgP2AsXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByaW1lciBkw6lmaW5pdGl2ZW1lbnRgLFxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maXJtZWQgfHwgIXRoaXMuaXNVcGRhdGVQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKHRoaXMuZGF0YS5tb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoW3RoaXMuZGF0YS5tb2RlbF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYFN1cHByaW3DqWApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVsU2VydmljZT8uZ29Ub1BlbnVsdGltYXRlUGFuZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFJvdXRlID0gWycuLi8uLi8nICsga2ViYWJDYXNlKHRoaXMua2V5KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdGlvblJvdXRlID8gcmVkaXJlY3Rpb25Sb3V0ZSA6IGRlZmF1bHRSb3V0ZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5mb3JtLmVuYWJsZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHBvc3RVcGRhdGUobW9kZWw6IEV4dHJhY3RUdXBkYXRlPFRTZXJ2aWNlPik6IHZvaWQge1xuICAgICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgd2lsbCBiZSBzdWJzY3JpYmVkIHRvIGltbWVkaWF0ZWx5IGFuZCB0aGVcbiAgICAgKiByZWRpcmVjdCBuYXZpZ2F0aW9uIHdpbGwgb25seSBoYXBwZW4gYWZ0ZXIgdGhlIG9ic2VydmFibGUgY29tcGxldGVzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdENyZWF0ZShtb2RlbDogRXh0cmFjdFRjcmVhdGU8VFNlcnZpY2U+KTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShtb2RlbDogRXh0cmFjdFRvbmU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHRoZSBmb3JtIHdoZW5ldmVyIGl0IGlzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIGFuZCBub3QgYG5nT25Jbml0KClgIGlmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgZm9ybS4gQmVjYXVzZSB0aGlzIHdpbGxcbiAgICAgKiBjb3JyZWN0bHkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmUgdGltZSBwZXIgY29tcG9uZW50IGluc3RhbmNlIGlmIG5lZWRlZCwgd2hlbiB0aGUgcm91dGUgY2hhbmdlcy4gQnV0IGBuZ09uSW5pdCgpYFxuICAgICAqIHdpbGwgaW5jb3JyZWN0bHkgYmUgY2FsbGVkIGV4YWN0bHkgMSB0aW1lIHBlciBjb21wb25lbnQgaW5zdGFuY2UsIGV2ZW4gaWYgdGhlIG9iamVjdCBjaGFuZ2VzIHZpYSByb3V0ZSBuYXZpZ2F0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNVcGRhdGVQYWdlID0gISF0aGlzLmRhdGEubW9kZWwuaWQ7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXAodGhpcy5kYXRhLm1vZGVsKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VzLmluaXRpYWxpemUodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -26,11 +26,13 @@ import * as i0 from "@angular/core";
|
|
|
26
26
|
* @dynamic
|
|
27
27
|
*/
|
|
28
28
|
export class NaturalAbstractEditableList {
|
|
29
|
+
service;
|
|
30
|
+
form;
|
|
31
|
+
formArray = new UntypedFormArray([]);
|
|
32
|
+
variablesManager = new NaturalQueryVariablesManager();
|
|
33
|
+
dataSource = new MatTableDataSource();
|
|
29
34
|
constructor(service) {
|
|
30
35
|
this.service = service;
|
|
31
|
-
this.formArray = new UntypedFormArray([]);
|
|
32
|
-
this.variablesManager = new NaturalQueryVariablesManager();
|
|
33
|
-
this.dataSource = new MatTableDataSource();
|
|
34
36
|
// Create a form group with a line attributes that contain an array of formGroups (one by line = one by model)
|
|
35
37
|
this.form = new UntypedFormGroup({ rows: this.formArray });
|
|
36
38
|
this.dataSource.data = this.formArray.controls;
|
|
@@ -87,11 +89,11 @@ export class NaturalAbstractEditableList {
|
|
|
87
89
|
validateForm() {
|
|
88
90
|
validateAllFormControls(this.form);
|
|
89
91
|
}
|
|
90
|
-
static
|
|
91
|
-
static
|
|
92
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractEditableList, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
93
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractEditableList, isStandalone: true, ngImport: i0 });
|
|
92
94
|
}
|
|
93
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractEditableList, decorators: [{
|
|
94
96
|
type: Directive,
|
|
95
97
|
args: [{ standalone: true }]
|
|
96
98
|
}], ctorParameters: () => [{ type: undefined }] });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZWRpdGFibGUtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL2Fic3RyYWN0LWVkaXRhYmxlLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFaEMsT0FBTyxFQUFDLDRCQUE0QixFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRXRGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE1BQU0sT0FBTywyQkFBMkI7SUFzQkU7SUFMdEIsSUFBSSxDQUFtQjtJQUN2QixTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxnQkFBZ0IsR0FBRyxJQUFJLDRCQUE0QixFQUF5QixDQUFDO0lBQzdFLFVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFtQixDQUFDO0lBRXZFLFlBQXNDLE9BQWlCO1FBQWpCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDbkQsOEdBQThHO1FBQzlHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxFQUFDLFVBQVUsRUFBRSxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBQyxFQUEwQixDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUSxDQUFDLEtBQW1CO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFhO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxLQUFtQjtRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUNuRCxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVk7UUFDZix1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQzt1R0FyRlEsMkJBQTJCOzJGQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVM7bUJBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLCBRdWVyeVZhcmlhYmxlc30gZnJvbSAnLi9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7RXh0cmFjdFRhbGxPbmUsIEV4dHJhY3RWYWxsLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge3ZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhlbHBzIG1hbmFnaW5nIG5vbi1wYWdpbmF0ZWQgcm93cyBvZiBpdGVtcyB0aGF0IGNhbiBiZSBlZGl0ZWQgaW4tcGxhY2UsIHR5cGljYWxseSBpbiBhIDxtYXQtdGFibGU+LlxuICogQnV0IGl0IGRvZXMgKipub3QqKiBtdXRhdGUgYW55dGhpbmcgdG8gcGVyc2lzdCB0aGUgZWRpdHMgb24gdGhlIHNlcnZlci4gSXQgaXMgdXAgdG8gdGhlIGNvbnN1bWluZyBjb21wb25lbnQgdG8gaW1wbGVtZW50XG4gKiBjdXN0b20gbXV0YXRpb24gbWVjaGFuaXNtLlxuICpcbiAqIFRvIGFjY2VzcyBkYXRhIG9mIHRoaXMgY29tcG9uZW50IGZyb20gYSBwYXJlbnQgY29tcG9uZW50LCB1c2U6XG4gKlxuICogYGBgXG4gKiBAVmlld0NoaWxkcmVuKENvbXBvbmVudFR5cGUpIGNtcDogQ29tcG9uZW50VHlwZTtcbiAqIHRoaXMuY21wLmdldEl0ZW1zKCk7XG4gKiBgYGBcbiAqXG4gKiBUbyBhZGQgZW1wdHkgbGluZSwgY2FsbDpcbiAqXG4gKiBgYGBcbiAqIHRoaXMuY21wLmFkZEVtcHR5KCk7XG4gKiBgYGBcbiAqXG4gKiBAZHluYW1pY1xuICovXG5ARGlyZWN0aXZlKHtzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQWJzdHJhY3RFZGl0YWJsZUxpc3Q8XG4gICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgIGFueSxcbiAgICAgICAgYW55LFxuICAgICAgICBQYWdpbmF0ZWREYXRhPExpdGVyYWw+LFxuICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgYW55LFxuICAgICAgICBhbnksXG4gICAgICAgIGFueSxcbiAgICAgICAgYW55LFxuICAgICAgICBhbnksXG4gICAgICAgIGFueVxuICAgID4sXG4gICAgLy8gVGhlIExpdGVyYWwgaGVyZSBpcyBhIGJpdCB0b28gbG9vc2UuIElkZWFsbHkgd2Ugd291bGQgbGlrZSB0byBleHByZXNzXG4gICAgLy8gXCJpdCBtdXN0IGJlIGEgdW5pb24gYW5kIG9uZSBvZiB0aGUgdHlwZSBpbiB0aGUgdW5pb24gbXVzdCBiZSBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT5cIlxuICAgIFQgZXh0ZW5kcyBMaXRlcmFsID0gRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+LFxuPiB7XG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFyaWFibGVzTWFuYWdlciA9IG5ldyBOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyPEV4dHJhY3RWYWxsPFRTZXJ2aWNlPj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8QWJzdHJhY3RDb250cm9sPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBzZXJ2aWNlOiBUU2VydmljZSkge1xuICAgICAgICAvLyBDcmVhdGUgYSBmb3JtIGdyb3VwIHdpdGggYSBsaW5lIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluIGFuIGFycmF5IG9mIGZvcm1Hcm91cHMgKG9uZSBieSBsaW5lID0gb25lIGJ5IG1vZGVsKVxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7cm93czogdGhpcy5mb3JtQXJyYXl9KTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmZvcm1BcnJheS5jb250cm9scztcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgncGFnaW5hdGlvbicsIHtwYWdpbmF0aW9uOiB7cGFnZVNpemU6IDk5OSwgcGFnZUluZGV4OiAwfX0gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGxpc3Qgb2YgaXRlbXMgKG92ZXJ3cml0aW5nIHdoYXQgbWF5IGhhdmUgZXhpc3RlZClcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SXRlbXMoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5jbGVhcigpOyAvLyByZXNldCBsaXN0XG4gICAgICAgIHRoaXMuYWRkSXRlbXMoaXRlbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBnaXZlbiBpdGVtcyB0byB0aGUgbGlzdFxuICAgICAqIFJlcHJvZHVjZXMgdGhlIG1vZGVsIGRhdGEgbG9hZGluZyB0aGUgc2FtZSB3YXkgYXMgaXQgd291bGQgYmUgb24gYSBkZXRhaWwgcGFnZSAodmlhIEFic3RyYWN0RGV0YWlsIGNvbnRyb2xsZXIpIGJ1dCB3aXRob3V0IHJlc29sdmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJdGVtcyhpdGVtczogcmVhZG9ubHkgVFtdKTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRJdGVtID0gbWVyZ2UodGhpcy5zZXJ2aWNlLmdldERlZmF1bHRGb3JTZXJ2ZXIoKSwgaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lRm9ybUdyb3VwID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Hcm91cChjb21wbGV0ZWRJdGVtKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUFycmF5LnB1c2gobGluZUZvcm1Hcm91cCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5mb3JtQXJyYXkuY29udHJvbHM7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUF0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZm9ybUFycmF5LmNvbnRyb2xzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBlbXB0eSBpdGVtIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRW1wdHkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkSXRlbXMoW3t9IGFzIFRdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBsaXN0IG9mIG1vZGVscyB3aXRob3V0IGFueSB0cmVhdG1lbnQuXG4gICAgICpcbiAgICAgKiBUbyBtdXRhdGUgbW9kZWxzLCBpdCB3b3VsZCBiZSByZXF1aXJlZCB0byBtYXAgdGhlbSB1c2luZyA6XG4gICAgICogIC0gQWJzdHJhY3RNb2RlbFNlcnZpY2UuZ2V0SW5wdXQoKVxuICAgICAqICAtIEFic3RyYWN0TW9kZWxTZXJ2aWNlLmdldFBhcnRpYWxWYXJpYWJsZXNGb3JDcmVhdGlvbigpXG4gICAgICogIC0gQWJzdHJhY3RNb2RlbFNlcnZpY2UuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvclVwZGF0ZSgpXG4gICAgICogIC0gc29tZSBvdGhlciByZXF1aXJlZCB0cmVhdG1lbnQuXG4gICAgICpcbiAgICAgKiBUT0RPIHJldHVybiB0eXBlIGlzIGluY29ycmVjdCBhbmQgc2hvdWxkIGJlIGNsb3NlciB0byBgUGFydGlhbDxUPltdYCBvciBhbiBldmVuIGxvb3NlciB0eXBlLCBiZWNhdXNlIHdlIGRvbid0IHJlYWxseSBrbm93IHdoYXQgZmllbGRzIGV4aXN0cyBpbiB0aGUgZm9ybS4gV2hlbiB3ZSBmaXggdGhpcywgd2Ugc2hvdWxkIGFsc28gcmVtb3ZlIHR5cGUgY29lcmNpbmcgaW4gdW5pdCB0ZXN0cy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SXRlbXMoKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUFycmF5LmdldFJhd1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yY2UgdGhlIGZvcm0gdmFsaWRhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoZSB2YWxpZCBzdGF0ZSBjYW4gdGhlbiBiZSByZWFkIHZpYSBgdGhpcy5mb3JtLnZhbGlkYFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZUZvcm0oKTogdm9pZCB7XG4gICAgICAgIHZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzKHRoaXMuZm9ybSk7XG4gICAgfVxufVxuIl19
|