@datorama/core 22.0.1 → 22.1.1-rc.1
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/bundles/datorama-core.umd.js +85 -50
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +14 -14
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.d.ts +1 -0
- package/datorama-core.metadata.json +1 -1
- package/esm2015/datorama-core.js +2 -1
- package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +4 -2
- package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +5 -2
- package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +5 -4
- package/esm2015/lib/grid-v2/grid-settings.js +2 -2
- package/esm2015/lib/grid-v2/grid-store/grid.service.js +3 -2
- package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +13 -2
- package/esm2015/lib/rich-text/rich-text.directive.js +15 -33
- package/esm2015/lib/rich-text/rich-text.service.js +50 -0
- package/esm2015/lib/select/select.component.js +5 -10
- package/esm2015/lib/version.js +2 -2
- package/esm5/datorama-core.js +2 -1
- package/esm5/lib/breadcrumbs/breadcrumbs.component.js +4 -2
- package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
- package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +5 -2
- package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +5 -5
- package/esm5/lib/grid-v2/grid-settings.js +2 -2
- package/esm5/lib/grid-v2/grid-store/grid.service.js +3 -2
- package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +19 -2
- package/esm5/lib/rich-text/rich-text.directive.js +16 -34
- package/esm5/lib/rich-text/rich-text.service.js +51 -0
- package/esm5/lib/select/select.component.js +5 -10
- package/esm5/lib/version.js +2 -2
- package/fesm2015/datorama-core.js +77 -49
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +85 -51
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/grid-v2/grid/grid-v2.types.d.ts +1 -0
- package/lib/grid-v2/grid-settings.d.ts +2 -2
- package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +3 -0
- package/lib/rich-text/rich-text.directive.d.ts +4 -6
- package/lib/rich-text/rich-text.service.d.ts +10 -0
- package/package.json +1 -1
|
@@ -342,9 +342,8 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
342
342
|
DatoSelectComponent.prototype.writeValue = function (activeOptions) {
|
|
343
343
|
this._model = activeOptions ? coerceArray(activeOptions) : [];
|
|
344
344
|
if (this.options) {
|
|
345
|
-
var overTheLimit = this.limitSelectedTo && this.isMulti && this._model.length >= this.limitSelectedTo;
|
|
346
345
|
this.markAsActive(this._model, { deselectAll: true });
|
|
347
|
-
|
|
346
|
+
this.limitSelectedTo && this.updateDisabledState();
|
|
348
347
|
}
|
|
349
348
|
/** For later updates */
|
|
350
349
|
this.cdr.markForCheck();
|
|
@@ -381,7 +380,7 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
381
380
|
*/
|
|
382
381
|
if (this.hasValue && this._initialOpen) {
|
|
383
382
|
this.markAsActive(this._model);
|
|
384
|
-
if (this.limitSelectedTo
|
|
383
|
+
if (this.limitSelectedTo) {
|
|
385
384
|
this.updateDisabledState();
|
|
386
385
|
}
|
|
387
386
|
this._initialOpen = false;
|
|
@@ -470,7 +469,6 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
470
469
|
};
|
|
471
470
|
DatoSelectComponent.prototype.removeOption = function (option) {
|
|
472
471
|
var _this = this;
|
|
473
|
-
var updateDisabled = this.limitSelectedTo && this._model.length === this.limitSelectedTo;
|
|
474
472
|
this._model = this._model.filter(function (current) { return current[_this.idKey] !== option[_this.idKey]; });
|
|
475
473
|
var optionToRemove = this.options.find(function (datoOption) { return datoOption.option && datoOption.option[_this.idKey] === option[_this.idKey]; });
|
|
476
474
|
/**
|
|
@@ -480,7 +478,7 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
480
478
|
if (optionToRemove) {
|
|
481
479
|
optionToRemove.active = false;
|
|
482
480
|
}
|
|
483
|
-
|
|
481
|
+
this.limitSelectedTo && this.updateDisabledState();
|
|
484
482
|
this.onChange(this._model);
|
|
485
483
|
this.cdr.markForCheck();
|
|
486
484
|
if (this.datoOverlay.attached) {
|
|
@@ -830,9 +828,6 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
830
828
|
if (!datoOption) {
|
|
831
829
|
return;
|
|
832
830
|
}
|
|
833
|
-
var modelLength = this._model.length;
|
|
834
|
-
var updateDisabled = this.limitSelectedTo &&
|
|
835
|
-
(modelLength === this.limitSelectedTo || (modelLength === this.limitSelectedTo - 1 && !datoOption.active));
|
|
836
831
|
datoOption.active = !datoOption.active;
|
|
837
832
|
var rawOption = datoOption.option;
|
|
838
833
|
if (datoOption.active) {
|
|
@@ -841,7 +836,7 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
841
836
|
else {
|
|
842
837
|
this._model = this._model.filter(function (current) { return current[_this.idKey] !== rawOption[_this.idKey]; });
|
|
843
838
|
}
|
|
844
|
-
|
|
839
|
+
this.limitSelectedTo && this.updateDisabledState();
|
|
845
840
|
this.onChange(this._model);
|
|
846
841
|
this.cdr.markForCheck();
|
|
847
842
|
this.datoOverlay.scheduleUpdate();
|
|
@@ -1090,4 +1085,4 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
1090
1085
|
return DatoSelectComponent;
|
|
1091
1086
|
}(BaseCustomControl));
|
|
1092
1087
|
export { DatoSelectComponent };
|
|
1093
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEIsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxP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R2hDO1FBREMsTUFBTSxFQUFFOztzREFDMkI7SUFHcEM7UUFEQyxNQUFNLEVBQUU7O3FEQUN1QjtJQTRLaEM7UUFEQyxZQUFZLENBQUMsVUFBVSxDQUFDOzs7OzBEQUd4QjtJQSthRDtRQURDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzt5Q0FDcEIsYUFBYTs7Z0VBS3JDO0lBNXdCVSxtQkFBbUI7UUFUL0IsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLGFBQWE7WUFDdkIsMnhHQUFzQztZQUN0QyxtQkFBbUIsRUFBRSxLQUFLO1lBQzFCLFNBQVMsRUFBRSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7WUFDdkMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7WUFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsUUFBUSxFQUFFLFlBQVk7U0FDdkIsQ0FBQztRQStURyxXQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNsQixXQUFBLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNyQixXQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTt5Q0FOTixpQkFBaUI7WUFDWCxvQkFBb0I7WUFDekIsVUFBVTtZQUNILFdBQVc7T0E3VHZCLG1CQUFtQixDQTgzQi9CO0lBQUQsMEJBQUM7Q0FBQSxBQTkzQkQsQ0FBeUMsaUJBQWlCLEdBODNCekQ7U0E5M0JZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7IGRlZmF1bHRPcHRpb25zRGlzcGxheUxpbWl0LCBTZWxlY3RUeXBlIH0gZnJvbSAnLi9zZWxlY3QudHlwZXMnO1xuaW1wb3J0IHsgRGF0b09wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbnMvb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2UsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC1hY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdG9TZWxlY3RTZWFyY2hTdHJhdGVneSwgZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi9zZWFyY2guc3RyYXRlZ3knO1xuaW1wb3J0IHsgY2xvc2VzdCwgcXVlcnksIHNldFN0eWxlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgeyBEYXRvT3ZlcmxheSwgRGF0b1RlbXBsYXRlUG9ydGFsIH0gZnJvbSAnLi4vYW5ndWxhci9vdmVybGF5JztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgX3Njcm9sbFRvT3B0aW9uIH0gZnJvbSAnLi4vb3B0aW9ucy9vcHRpb25zLXV0aWxzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgbm9ybWFsaXplRGF0YSB9IGZyb20gJy4uL2ludGVybmFsL2RhdGEtbm9ybWFsaXphdGlvbic7XG5pbXBvcnQgeyBEYXRvQWNjb3JkaW9uQ29tcG9uZW50LCBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEYXRvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zL2dyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9saXN0L2xpc3QudHlwZXMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IGlzQXJyb3dVcERvd24sIGlzRW50ZXIsIGlzRXNjYXBlIH0gZnJvbSAnLi4vcngvZXZlbnRzJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IGlzU3RyaW5nLCBzaXplIH0gZnJvbSAnLi4vdXRpbHMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyB6SW5kZXhQbGVhc2UgfSBmcm9tICcuLi9pbnRlcm5hbC96LWluZGV4JztcbmltcG9ydCB7IGlzVGVzdEVudiB9IGZyb20gJy4uL2lzdGVzdC1lbnYnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi91dGlscy91c2VyLWFnZW50JztcbmltcG9ydCB7IFBvcHBlck9wdGlvbnMgfSBmcm9tICcuLi9zZXJ2aWNlcy9wb3BwZXInO1xuaW1wb3J0IHsgc2V0RGltZW5zaW9ucyB9IGZyb20gJy4uL2ludGVybmFsL2N1c3RvbS1kaW1lbnNpb25zJztcblxuY29uc3QgdmFsdWVBY2Nlc3NvciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdG9TZWxlY3RDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIHByb3ZpZGVyczogW3ZhbHVlQWNjZXNzb3IsIERhdG9PdmVybGF5XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnZGF0b1NlbGVjdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0b1NlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VDdXN0b21Db250cm9sXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgLyoqIFRoZSBkcm9wZG93biBjb250YWluZXIgZWxlbWVudCB3aGljaCBpcyB0aGUgcG9ydGFsICAqKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKVxuICBkcm9wZG93bjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVGhlIG92ZXJsYXkgb3JpZ2luIHdoaWNoIGlzIG9uZSBvZiBkYXRvLXRyaWdnZXJzICoqL1xuICBAVmlld0NoaWxkKCdvdmVybGF5T3JpZ2luJylcbiAgb3JpZ2luOiBFbGVtZW50UmVmO1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b09wdGlvbnMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvT3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIG9wdGlvbnM6IFF1ZXJ5TGlzdDxEYXRvT3B0aW9uQ29tcG9uZW50PjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9BY2NvcmRpb25Hcm91cHMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERhdG9BY2NvcmRpb25Db21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGFjY29yZGlvbjogUXVlcnlMaXN0PERhdG9BY2NvcmRpb25Db21wb25lbnQ+O1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b0dyb3VwcyBjaGlsZHJlbiAqL1xuICBAQ29udGVudENoaWxkcmVuKERhdG9Hcm91cENvbXBvbmVudClcbiAgZ3JvdXBzOiBRdWVyeUxpc3Q8RGF0b0dyb3VwQ29tcG9uZW50PjtcblxuICAvKiogQWxsb3dpbmcgY3VzdG9tIHRlbXBsYXRlIGJ5IHBhc3NpbmcgKmRhdG9BY3RpdmUgZGlyZWN0aXZlIHdoaWNoIGdldHMgdGhlIGFjdGl2ZSBhcyBjb250ZXh0ICovXG4gIEBDb250ZW50Q2hpbGQoRGF0b1NlbGVjdEFjdGl2ZURpcmVjdGl2ZSlcbiAgYWN0aXZlOiBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlO1xuXG4gIC8qKiBUaGUga2V5IHRoYXQgc3RvcmVzIHRoZSBvcHRpb24gaWQgKi9cbiAgQElucHV0KClcbiAgaWRLZXkgPSAnaWQnO1xuXG4gIC8qKiBUaGUgbG9va3VwIGtleSBmb3IgdGhlIGxhYmVsICovXG4gIEBJbnB1dCgpXG4gIGxhYmVsS2V5ID0gJ2xhYmVsJztcblxuICAvKiogQSBwbGFjZWhvbGRlciBmb3IgdGhlIHRyaWdnZXIgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnY29yZS5zZWxlY3QnO1xuXG4gIC8qKiBBIHBsYWNlaG9sZGVyIGZvciB0aGUgc2VhcmNoICovXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ2NvcmUuc2VhcmNoJztcblxuICAvKiogQ3VzdG9tIHRleHQgd2hlbiB3ZSBkb24ndCBoYXZlIHJlc3VsdHMgKi9cbiAgQElucHV0KClcbiAgc2V0IG5vSXRlbXNMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbm9JdGVtc0xhYmVsID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBJZiBkZWZpbmVkLCBpbmRpY2F0ZXMgYnkgd2hpY2gga2V5IHRoZSBkYXRhIHNob3VsZCBiZSBub3JtYWxpemVkICovXG4gIEBJbnB1dCgpXG4gIGdyb3VwQnk6IHN0cmluZztcblxuICAvKiogQWRkL3JlbW92ZXMgc2VhcmNoIGlucHV0ICovXG4gIEBJbnB1dCgpXG4gIGlzQ29tYm8gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGl0J3MgYSBncm91cCAqL1xuICBASW5wdXQoKVxuICBpc0dyb3VwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlY2lkZSB3aGV0aGVyIHRvIGZpbHRlciB0aGUgcmVzdWx0cyBpbnRlcm5hbGx5IGJhc2VkIG9uIHNlYXJjaCBxdWVyeS5cbiAgICogVXNlZnVsIGZvciBhc3luYyBmaWx0ZXJpbmcsIHdoZXJlIHdlIHNlYXJjaCB0aHJvdWdoIG1vcmUgY29tcGxleCBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgaW50ZXJuYWxTZWFyY2ggPSB0cnVlO1xuXG4gIC8qKiBEZWJvdW5jZSB0aW1lIHRvIGVtaXQgc2VhcmNoIHF1ZXJpZXMgKi9cbiAgQElucHV0KClcbiAgZGVib3VuY2VUaW1lID0gMzAwO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgbG9hZGluZyBpbmRpY2F0b3IgKi9cbiAgQElucHV0KClcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgc2VsZWN0IGFsbCBjaGVja2JveCAqL1xuICBASW5wdXQoKVxuICBhbGxvd1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHNlbGVjdCBhbGwgY2hpcC4gZW1wdHkgbWVhbnMgaXQncyBkaXNhYmxlZCAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RBbGxDaGlwVHh0ID0gJyc7XG5cbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBzZWxlY3QgKi9cbiAgQElucHV0KClcbiAgdHlwZTogU2VsZWN0VHlwZSA9IFNlbGVjdFR5cGUuU0lOR0xFO1xuXG4gIC8qKiBDbGllbnQgc2VhcmNoIHN0cmF0ZWd5ICovXG4gIEBJbnB1dCgpXG4gIHNlYXJjaFN0cmF0ZWd5OiBEYXRvU2VsZWN0U2VhcmNoU3RyYXRlZ3kgPSBkZWZhdWx0Q2xpZW50U2VhcmNoU3RyYXRlZ3k7XG5cbiAgLyoqIFRoZSBkZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biAqL1xuICBASW5wdXQoKVxuICBwbGFjZW1lbnQ6IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgQElucHV0KClcbiAgaW5maW5pdGVTY3JvbGxMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIExpbWl0IHRoZSBudW1iZXIgb2YgcmVzdWx0cyBzaG93biAqL1xuICBASW5wdXQoKVxuICBsaW1pdFRvID0gZGVmYXVsdE9wdGlvbnNEaXNwbGF5TGltaXQ7XG5cbiAgQElucHV0KCdsaW1pdFNlbGVjdGVkVG8nKVxuICBzZXQgbGltaXRTZWxlY3RlZChsaW1pdFNlbGVjdGVkVG86IG51bWJlcikge1xuICAgIHRoaXMubGltaXRTZWxlY3RlZFRvID0gbGltaXRTZWxlY3RlZFRvO1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBbGxvdyBzb3J0aW5nIG9mIHNlbGVjdGVkIG9wdGlvbnMgaW4gbXVsdGkgbW9kZSAqL1xuICBASW5wdXQoKVxuICBpc1NvcnRhYmxlID0gZmFsc2U7XG5cbiAgLyoqIEVsZW1lbnQgdG8gYXBwZW5kIHRoZSBvcHRpb25zIG92ZXJsYXkgdG8gKi9cbiAgQElucHV0KClcbiAgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgc3RyaW5nO1xuXG4gIC8qKiBUaGUgb3B0aW9ucyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93biAqL1xuICBASW5wdXQoKVxuICBzZXQgZGF0YVNldChkYXRhOiBhbnlbXSkge1xuICAgIGlmICghdGhpcy5pbml0aWFsUnVuKSB7XG4gICAgICB0aGlzLl9kYXRhID0gbm9ybWFsaXplRGF0YShkYXRhLCB0aGlzLmxhYmVsS2V5LCB0aGlzLmdyb3VwQnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiogZGF0YSBub3JtYWxpemF0aW9uLCBpZiByZXF1aXJlZCwgd2lsbCBiZSBoYW5kbGVkIGJ5IG5nT25Jbml0IGluIHRoZSBpbml0aWFsIHJ1biAqL1xuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgLyoqIElmIGl0J3MgYXN5bmMgdXBkYXRlcywgY3JlYXRlIG1pY3JvIHRhc2sgaW4gb3JkZXIgdG8gcmUtc3Vic2NyaWJlIHRvIGNsaWNrcyAqL1xuICAgIGlmICh0aGlzLl9kYXRhSXNEaXJ0eSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9PcHRpb25DbGljayh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLm1hcmtBc0FjdGl2ZSh0aGlzLl9tb2RlbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRhSXNEaXJ0eSA9IHRydWU7XG4gIH1cblxuICAvKiogU2VhcmNoIGdyb3VwcyBhcyB3ZWxsIGFzIG9wdGlvbnMgKi9cbiAgQElucHV0KClcbiAgc2VhcmNoR3JvdXBMYWJlbHMgPSB0cnVlO1xuXG4gIC8qKiBBZGQgY3VzdG9tIGNsYXNzIHRvIHRoZSBzZWxlY3QgZHJvcERvd24gKi9cbiAgQElucHV0KClcbiAgZGF0b1NlbGVjdENsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbG9hZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBzaG93IGVtcHR5IHJlc3VsdCB0ZXh0ICovXG4gIEBJbnB1dCgpXG4gIHNob3dFbXB0eVJlc3VsdHNUZXh0ID0gdHJ1ZTtcblxuICAvKipcbiAgICoga2VlcCBmb2N1cyBpbiBpbnB1dCBhZnRlciBzZWxlY3Rpbmcgb3B0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBrZWVwRm9jdXMgPSBmYWxzZTtcblxuICAvKiogRW1pdCBzZWFyY2ggdmFsdWUgd2hlbiBpbnRlcm5hbCBzZWFyY2ggaXMgZmFsc2UgKi9cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gW3dpdGhBY3Rpb25zXSBpcyB0cnVlIGFuZCB0aGUgdXNlciBjbGlja3Mgc2F2ZSAqL1xuICBAT3V0cHV0KClcbiAgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgZmV0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbGltaXRTZWxlY3RlZFRvOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgICovXG5cbiAgZ2V0IGNvbnRhaW5zR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuXG4gIHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGhhc1Jlc3VsdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1Jlc3VsdHM7XG4gIH1cblxuICBzZXQgaGFzUmVzdWx0cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc1Jlc3VsdHMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNlbGVjdFR5cGUuU0lOR0xFO1xuICB9XG5cbiAgZ2V0IGlzTXVsdGkoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2VsZWN0VHlwZS5NVUxUSTtcbiAgfVxuXG4gIGdldCBfc2hvd0VtcHR5UmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RW1wdHlSZXN1bHRzVGV4dCAmJiB0aGlzLl9kYXRhICYmICghdGhpcy5oYXNSZXN1bHRzIHx8ICF0aGlzLl9kYXRhLmxlbmd0aCkgJiYgIXRoaXMuaXNHcm91cDtcbiAgfVxuXG4gIGdldCBfY291bnQoKSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmdldFZpc2libGVPcHRpb25zKGZhbHNlKS5sZW5ndGg7XG4gICAgY29uc3QgYWN0aXZlcyA9IHRoaXMuX21vZGVsLmxlbmd0aDtcbiAgICByZXR1cm4gYCgke2FjdGl2ZXN9LyR7dG90YWx9KWA7XG4gIH1cblxuICAvKiogV2hldGhlciBhbGwgdGhlIG9wdGlvbnMgYXJlIGNoZWNrZWQgKi9cbiAgZ2V0IF9pc0FsbENoZWNrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmlzaWJsZU9wdGlvbnMoKS5ldmVyeShvcHRpb24gPT4gdGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID4gLTEpO1xuICB9XG5cbiAgZ2V0IHNob3dTZWxlY3RBbGxDaGlwKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoICYmIHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHNvbWUgdGhlIG9wdGlvbnMgYXJlIGNoZWNrZWQgKi9cbiAgZ2V0IF9pc0luZGV0ZXJtaW5hdGVseUNoZWNrZWQoKSB7XG4gICAgbGV0IHNvbWVDaGVja2VkLFxuICAgICAgc29tZU5vdENoZWNrZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHZpc2libGVPcHRpb24gb2YgdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpKSB7XG4gICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZih2aXNpYmxlT3B0aW9uKSA+IC0xKSB7XG4gICAgICAgIHNvbWVDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWVOb3RDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzb21lQ2hlY2tlZCAmJiBzb21lTm90Q2hlY2tlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEZvcm1Db250cm9sIHdoaWNoIGxpc3RlbnMgZm9yIHNlYXJjaCB2YWx1ZSBjaGFuZ2VzICovXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAvKiogRXhwb3NlIHRoZSBzZWFyY2ggdGVybSBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBoaWdobGlnaHQgZGlyZWN0aXZlICovXG4gIHNlYXJjaFRlcm0gPSAnJztcblxuICAvKipcbiAgICogUHJpdmF0ZSBQcm9wZXJ0aWVzXG4gICAqL1xuICBfbm9JdGVtc0xhYmVsID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLm5vLWl0ZW1zJyk7XG5cbiAgLyoqIFN0b3JlIHRoZSBpbml0aWFsIGRhdGEgKi9cbiAgX2RhdGEgPSBbXTtcblxuICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgd2UgYWxyZWFkeSBpbml0aWFsaXplZCB0aGUgZGF0YSxcbiAgICogIFRoaXMgaXMgb3B0aW1pemF0aW9uIGZvciBub24gYXN5bmMgY2FsbHMuXG4gICAqICovXG4gIF9kYXRhSXNEaXJ0eSA9IGZhbHNlO1xuXG4gIC8qKiBUcmlnZ2VycyB0aGUgZm9jdXMgb24gdGhlIGlucHV0ICovXG4gIF9mb2N1cyA9IGZhbHNlO1xuXG4gIC8qKiBTdG9yZSB0aGUgYWN0aXZlIG9wdGlvbnMgKi9cbiAgX21vZGVsID0gW107XG5cbiAgLyoqIEVuYWJsZS9kaXNhYmxlIHRoZSBzZWxlY3QtdHJpZ2dlciAqL1xuICBfZGlzYWJsZWQ7XG5cbiAgLyoqIFdoZXRlciB0aGUgZHJvcGRvd24gaXMgb3BlbiAqL1xuICBfb3BlbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHdlIGhhdmUgc2VhcmNoIHJlc3VsdHMgKi9cbiAgX2hhc1Jlc3VsdHMgPSB0cnVlO1xuXG4gIC8qKiBJbmRpY2F0aW9uIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIGNvbnRyb2wgdmFsdWUgYXMgYWN0aXZlcyAqL1xuICBfaW5pdGlhbE9wZW4gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGdlbmVyYXRlIGNhbmNlbC9zYXZlIGZvb3RlciAqL1xuICBfd2l0aEFjdGlvbnMgPSBmYWxzZTtcblxuICBfd2l0aEluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqIE5vdGlmeSB0aGUgbXVsdGkgdHJpZ2dlciB3aGVuIGNsaWNrIG91dHNpZGUgdG8gcmVtb3ZlIHRoZSBmb2N1cyAgKi9cbiAgX2NsaWNrT3V0c2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBEcm9wZG93biBzaXplIGNsYXNzICovXG4gIF9kcm9wZG93bkNsYXNzOiBzdHJpbmdbXTtcblxuICAvKiogdHJ1ZSB1bnRpbCBuZ09uSW5pdCAqL1xuICBwcml2YXRlIGluaXRpYWxSdW4gPSB0cnVlO1xuXG4gIC8qKiBTZWFyY2ggY29udHJvbCBzdWJzY3JpcHRpb24gKi9cbiAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb247XG5cbiAgLyoqIENsaWNrcyBvcHRpb25zIHN1YnNjcmlwdGlvbiAqL1xuICBwcml2YXRlIGNsaWNrc1N1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPERhdG9PcHRpb25Db21wb25lbnQ+O1xuXG4gIHByaXZhdGUgaW5maW5pdGVTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGRhdG9PdmVybGF5OiBEYXRvT3ZlcmxheSxcbiAgICBAQXR0cmlidXRlKCduYWtlZCcpIHB1YmxpYyBfbmFrZWQsXG4gICAgQEF0dHJpYnV0ZSgnZGF0b1NpemUnKSBwdWJsaWMgc2l6ZSxcbiAgICBAQXR0cmlidXRlKCd3aWR0aCcpIHB1YmxpYyB3aWR0aDogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zaXplID0gc2l6ZSB8fCAnbWQnO1xuICAgIHRoaXMuX2Ryb3Bkb3duQ2xhc3MgPSBbYGRhdG8tc2VsZWN0LSR7dGhpcy5zaXplfWBdO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0b1NlbGVjdENsYXNzKSB7XG4gICAgICB0aGlzLl9kcm9wZG93bkNsYXNzLnB1c2godGhpcy5kYXRvU2VsZWN0Q2xhc3MpO1xuICAgIH1cblxuICAgIHRoaXMuX3dpdGhBY3Rpb25zID0gdGhpcy5zYXZlLm9ic2VydmVycy5sZW5ndGggPT09IDE7XG4gICAgdGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsID0gdGhpcy5mZXRjaC5vYnNlcnZlcnMubGVuZ3RoID09PSAxO1xuICAgIHRoaXMubGlzdGVuVG9TZWFyY2goKTtcbiAgICB0aGlzLl9kYXRhID0gbm9ybWFsaXplRGF0YSh0aGlzLl9kYXRhLCB0aGlzLmxhYmVsS2V5LCB0aGlzLmdyb3VwQnkpO1xuICAgIHRoaXMuaW5pdGlhbFJ1biA9IGZhbHNlO1xuICAgIC8vIGhlaWdodCBpcyBiZWluZyBjb250cm9sbGVkIGJ5IHNpemUgcHJvcGVydHlcbiAgICBzZXREaW1lbnNpb25zKHRoaXMud2lkdGgsIG51bGwsIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgbWFya1RvdWNoZWQoKSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLm9uVG91Y2hlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgZHJvcGRvd25cbiAgICovXG4gIGNsb3NlKCkge1xuICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZSgnJyk7XG4gICAgdGhpcy5kYXRvT3ZlcmxheS5kZXRhY2goKTtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuX2ZvY3VzID0gZmFsc2U7XG4gICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uICYmIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uICYmIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmJsdXIuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZHJvcGRvd24gdmlzaWJpbGl0eVxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgaWYgKHRoaXMub3BlbiAmJiAodGhpcy5pc011bHRpIHx8IHRoaXMuaXNDb21ibykpIHtcbiAgICAgIHRoaXMuX2ZvY3VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShhY3RpdmVPcHRpb25zOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuX21vZGVsID0gYWN0aXZlT3B0aW9ucyA/IGNvZXJjZUFycmF5KGFjdGl2ZU9wdGlvbnMpIDogW107XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgY29uc3Qgb3ZlclRoZUxpbWl0ID0gdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy5pc011bHRpICYmIHRoaXMuX21vZGVsLmxlbmd0aCA+PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbztcbiAgICAgIHRoaXMubWFya0FzQWN0aXZlKHRoaXMuX21vZGVsLCB7IGRlc2VsZWN0QWxsOiB0cnVlIH0pO1xuICAgICAgb3ZlclRoZUxpbWl0ICYmIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cbiAgICAvKiogRm9yIGxhdGVyIHVwZGF0ZXMgKi9cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBvdmVybGF5XG4gICAqL1xuICBvcGVuRHJvcGRvd24oZXZlbnQ/KSB7XG4gICAgLyoqIENsb3NlIHRoZSBkcm9wZG93biB3aGVuIHdlIGNsaWNrIG9uIHRoZSB0cmlnZ2VyIGFuZCB3ZSBkb24ndCBoYXZlIHNlYXJjaCBvciBtdWx0aXBsZSAqL1xuICAgIGlmICh0aGlzLm9wZW4gJiYgIXRoaXMuaXNDb21ibyAmJiB0aGlzLmlzU2luZ2xlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqIERvbid0IGNsb3NlIHRoZSBkcm9wZG93biBpZiB3ZSBjbGljayBvbiB0aGUgaW5wdXQgYW5kIGl0J3Mgb3BlbiAqL1xuICAgIGlmICh0aGlzLm9wZW4gJiYgKHRoaXMuaXNNdWx0aSB8fCB0aGlzLmlzQ29tYm8pKSB7XG4gICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0Lm5vZGVOYW1lICE9PSAnSU5QVVQnKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kYXRvT3ZlcmxheS5jcmVhdGVkKSB7XG4gICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdG9PdmVybGF5LmJhY2tEcm9wQ2xpY2skLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IHRydWU7XG4gICAgICB0aGlzLm9wZW4gJiYgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRvT3ZlcmxheS5hdHRhY2goeyBwbGFjZW1lbnQ6IHRoaXMucGxhY2VtZW50IH0sIHRoaXMuX2Ryb3Bkb3duQ2xhc3MpO1xuXG4gICAgdGhpcy50b2dnbGUoKTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gd2UgZmlyc3Qgb3BlbiB0aGUgZHJvcGRvd24gd2UgbmVlZCB0byBtYXJrIHRoZVxuICAgICAqIEZvcm1Db250cm9sIHZhbHVlcyBhcyBhY3RpdmVzXG4gICAgICovXG4gICAgaWYgKHRoaXMuaGFzVmFsdWUgJiYgdGhpcy5faW5pdGlhbE9wZW4pIHtcbiAgICAgIHRoaXMubWFya0FzQWN0aXZlKHRoaXMuX21vZGVsKTtcbiAgICAgIGlmICh0aGlzLmxpbWl0U2VsZWN0ZWRUbyAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5pdGlhbE9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICB9XG5cbiAgICBzZXRTdHlsZShxdWVyeSgnLmRhdG8tb3ZlcmxheScpLCAnekluZGV4JywgekluZGV4UGxlYXNlKCkpO1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyID0gcXVlcnkoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgc2V0U3R5bGUoZHJvcGRvd25Db250YWluZXIsICd3aWR0aCcsIGAke3RoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG5cbiAgICAvKiogUHJldmVudCBzY3JvbGwgd2hpbGUgdGhlIGRyb3Bkb3duIGlzIG9wZW4gKi9cbiAgICBpZiAoaXNUZXN0RW52KCkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGlzTW9iaWxlKCkgPyAndG91Y2htb3ZlJyA6ICdzY3JvbGwnO1xuICAgICAgbGV0IHNjcm9sbEV2ZW50ID0gZnJvbUV2ZW50KHdpbmRvdywgZXZlbnROYW1lKTtcbiAgICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICAgIHNjcm9sbEV2ZW50ID0gc2Nyb2xsRXZlbnQucGlwZShmaWx0ZXIoZXZlbnQgPT4gIWRyb3Bkb3duQ29udGFpbmVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IHNjcm9sbEV2ZW50LnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShlID0+IHRoaXMuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVUb09wdGlvbkNsaWNrKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKTtcbiAgfVxuXG4gIGNoZWNrQWxsKGNoZWNrOiBib29sZWFuKSB7XG4gICAgbGV0IGNoZWNrZWQgPSBjaGVjaztcbiAgICBpZiAodGhpcy5faXNJbmRldGVybWluYXRlbHlDaGVja2VkKSB7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSBjaGVja2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpc2libGVPcHRpb25zID0gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpO1xuICAgIGNvbnN0IGlzQWxsVmlzaWJsZSA9IHZpc2libGVPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcblxuICAgIGlmIChpc0FsbFZpc2libGUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gY2hlY2tlZCA/IHZpc2libGVPcHRpb25zIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID09PSAtMSkge1xuICAgICAgICAgICAgdGVtcC5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vZGVsID0gWy4uLnRoaXMuX21vZGVsLCAuLi50ZW1wXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKG9wdGlvbiA9PiB2aXNpYmxlT3B0aW9ucy5pbmRleE9mKG9wdGlvbikgPT09IC0xKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmRhdG9PdmVybGF5LnNjaGVkdWxlVXBkYXRlKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZW9yZGVyT3B0aW9ucyhuZXdPcmRlcjogYW55W10pIHtcbiAgICB0aGlzLl9tb2RlbCA9IG5ld09yZGVyO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbW9kZWwpO1xuICB9XG5cbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbikge1xuICAgIGNvbnN0IHVwZGF0ZURpc2FibGVkID0gdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbztcbiAgICB0aGlzLl9tb2RlbCA9IHRoaXMuX21vZGVsLmZpbHRlcihjdXJyZW50ID0+IGN1cnJlbnRbdGhpcy5pZEtleV0gIT09IG9wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgY29uc3Qgb3B0aW9uVG9SZW1vdmUgPSB0aGlzLm9wdGlvbnMuZmluZChcbiAgICAgIGRhdG9PcHRpb24gPT4gZGF0b09wdGlvbi5vcHRpb24gJiYgZGF0b09wdGlvbi5vcHRpb25bdGhpcy5pZEtleV0gPT09IG9wdGlvblt0aGlzLmlkS2V5XVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBUbyBwcmV2ZW50IGNhc2VzIHdoZW4gdGhlIG9wdGlvbnMgYXJlIGxpbWl0ZWQgYW5kIGRvZXNudCBpbmNsdWRlIHRoZSBhY3RpdmUgb3B0aW9uLFxuICAgICAqIHRoYXQgY2FuIGJlIHJlYWNoZWQgb25seSBieSBzZXJ2ZXIgc2VhcmNoLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25Ub1JlbW92ZSkge1xuICAgICAgb3B0aW9uVG9SZW1vdmUuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdXBkYXRlRGlzYWJsZWQgJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICBpZiAodGhpcy5kYXRvT3ZlcmxheS5hdHRhY2hlZCkge1xuICAgICAgdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByZXZlbnRCb2R5U2Nyb2xsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzQXJyb3dVcERvd24oZXZlbnQpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgb3ZlcmxheSB0byBkaXNwbGF5IHRoZSBzZWxlY3Qgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCkge1xuICAgIGNvbnN0IHRlbXBsYXRlUG9ydGFsID0gbmV3IERhdG9UZW1wbGF0ZVBvcnRhbCh0aGlzLmRyb3Bkb3duKTtcbiAgICBsZXQgYXBwZW5kVG9FbGVtZW50O1xuICAgIGlmIChpc1N0cmluZyh0aGlzLmFwcGVuZFRvKSkge1xuICAgICAgYXBwZW5kVG9FbGVtZW50ID0gY2xvc2VzdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgdGhpcy5hcHBlbmRUbyBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBlbmRUb0VsZW1lbnQgPSB0aGlzLmFwcGVuZFRvO1xuICAgIH1cblxuICAgIHRoaXMuZGF0b092ZXJsYXkuY3JlYXRlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB0ZW1wbGF0ZVBvcnRhbCwgYXBwZW5kVG9FbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3BwZXIgZG9lc24ndCBzdXBwb3J0IHBlcmZlY3Qtc2Nyb2xsLWJhciwgc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCkge1xuICAgIGNvbnN0IHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQgPSBjbG9zZXN0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCAnLnBzJyk7XG4gICAgaWYgKHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQpIHtcbiAgICAgIGZyb21FdmVudChwZXJmZWN0U2Nyb2xsQmFyUGFyZW50LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGhyb3R0bGVUaW1lKDEwKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlT3B0aW9ucyhnZXRSYXdPcHRpb25zID0gdHJ1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKGRhdG9PcHRpb24gPT4gIWRhdG9PcHRpb24uZGlzYWJsZWQpO1xuICAgIGlmIChnZXRSYXdPcHRpb25zKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5tYXAoZGF0b09wdGlvbiA9PiBkYXRvT3B0aW9uLm9wdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIGluaXRpYWwgY29udHJvbCB2YWx1ZSBhcyBhY3RpdmVcbiAgICovXG4gIHByaXZhdGUgbWFya0FzQWN0aXZlKG1vZGVsOiBhbnlbXSwgb3B0aW9uczogeyBkZXNlbGVjdEFsbDogYm9vbGVhbiB9ID0geyBkZXNlbGVjdEFsbDogZmFsc2UgfSkge1xuICAgIGNvbnN0IGFzQXJyYXkgPSB0aGlzLm9wdGlvbnMudG9BcnJheSgpO1xuICAgIGlmIChvcHRpb25zLmRlc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG1vZGVsKSB7XG4gICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hdGNoID0gYXNBcnJheS5maW5kKGN1cnJlbnQgPT4gY3VycmVudC5vcHRpb24gJiYgY3VycmVudC5vcHRpb25bdGhpcy5pZEtleV0gPT09IG9wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0Y2guYWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBhbGwgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG93QWxsKCkge1xuICAgIGNvbnN0IGlzQWNjb3JkaW9uID0gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCk7XG4gICAgY29uc3QgZ3JvdXBDb21wb25lbnRzOiBMaXN0R3JvdXBDb21wb25lbnRbXSA9IHRoaXMuZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXBDb21wb25lbnQgb2YgZ3JvdXBDb21wb25lbnRzKSB7XG4gICAgICBncm91cENvbXBvbmVudC5faGlkZGVuID0gZmFsc2U7XG5cbiAgICAgIC8qIElmIHRoaXMgYWNjb3JkaW9uIGdyb3VwIGhhcyBiZWVuIGV4cGVuZGVkIGJ5IHRoZSBzZWFyY2ggZnVuY3Rpb24sXG4gICAgICAgICB0aGVuIGNvbGxhcHNlIGl0IHRvIHRoZSBvcmlnaW5hbCBzdGF0ZVxuICAgICAgKi9cbiAgICAgIGlmIChpc0FjY29yZGlvbikge1xuICAgICAgICBjb25zdCBhbnlHcm91cCA9IGdyb3VwQ29tcG9uZW50IGFzIGFueTtcblxuICAgICAgICBpZiAoYW55R3JvdXAuX19leHBlbmRlZCkge1xuICAgICAgICAgIGFueUdyb3VwLl9fZXhwZW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBhY2NvcmRpb25Hcm91cCA9IGFueUdyb3VwIGFzIERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudDtcbiAgICAgICAgICBhY2NvcmRpb25Hcm91cC5jb250ZW50LmRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICBhY2NvcmRpb25Hcm91cC5leHBhbmQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBvcHRpb25zIGFuZCByZXR1cm5zIGlmIHdlIGhhdmUgcmVzdWx0XG4gICAqL1xuICBwcml2YXRlIHNlYXJjaE9wdGlvbnModmFsdWU6IHN0cmluZykge1xuICAgIGxldCBoYXNSZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBncm91cENvbXBvbmVudHNBcnJheTogTGlzdEdyb3VwQ29tcG9uZW50W10gPSB0aGlzLmdldEdyb3VwQ29tcG9uZW50c0FycmF5KCk7XG4gICAgY29uc3QgaGFzR3JvdXBzID0gZ3JvdXBDb21wb25lbnRzQXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGhhc0dyb3Vwcykge1xuICAgICAgaGFzUmVzdWx0ID0gdGhpcy5zZWFyY2hJbkdyb3Vwcyhncm91cENvbXBvbmVudHNBcnJheSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYXNSZXN1bHQgPSB0aGlzLnNlYXJjaEluT3B0aW9ucyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIG1hdGNoaW5nIGdyb3VwcyBhbmQgY2hpbGRyZW4uXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluR3JvdXBzKGdyb3VwQ29tcG9uZW50c0FycmF5OiBMaXN0R3JvdXBDb21wb25lbnRbXSwgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWNjb3JkaW9uID0gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IHRoaXMuX2RhdGEubGVuZ3RoO1xuICAgIGxldCBoYXNSZXN1bHRzID0gZmFsc2U7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgY29uc3QgZ3JvdXBLZXkgPSB0aGlzLmdldEdyb3VwS2V5KGdyb3VwKTtcbiAgICAgIGNvbnN0IGdyb3VwTWF0Y2ggPSB0aGlzLnNlYXJjaEdyb3VwTGFiZWxzICYmIHRoaXMuc2VhcmNoU3RyYXRlZ3koZ3JvdXAsIHZhbHVlLCB0aGlzLmxhYmVsS2V5KTtcbiAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IGdyb3VwLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZFt0aGlzLmlkS2V5XSk7XG4gICAgICAvKiBzaG93L2hpZGUgdGhlIG9wdGlvbnMgKi9cbiAgICAgIGNvbnN0IHNob3dHcm91cCA9IHRoaXMuc2VhcmNoSW5PcHRpb25zKHZhbHVlLCBncm91cE9wdGlvbnMsIGdyb3VwTWF0Y2gpO1xuXG4gICAgICBpZiAoc2hvd0dyb3VwICYmICFoYXNSZXN1bHRzKSB7XG4gICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvKiBGaW5kIHRoZSByaWdodCBjb21wb25lbnQsIGFjY29yZGluZyB0byB0aGUgaW50ZXJuYWwga2V5IGFzc2lnbmVkIGluIHRoZSBwcmV2aW91cyBzZWFyY2guXG4gICAgICAgICBXaGVuIG5vIG1hdGNoIGlzIGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHNhbWUgaW5kZXggYXMgdGhlIGdyb3VwIG9wdGlvbi5cbiAgICAgICogIFRoZSBpbmRleCBpcyBjb25zaWRlcmVkIGxlc3Mgc2FmZSwgYmVjYXVzZSBpdCBjYW4gY2hhbmdlIGFmdGVyIHNvcnRpbmcuICovXG4gICAgICBjb25zdCBncm91cENvbXBvbmVudCA9IGdyb3VwQ29tcG9uZW50c0FycmF5LmZpbmQoKGc6IGFueSkgPT4gZy5fX2tleSA9PT0gZ3JvdXBLZXkpIHx8IGdyb3VwQ29tcG9uZW50c0FycmF5W2ldO1xuICAgICAgLyogU2hvdy9oaWRlIHRoZSBncm91cCAqL1xuICAgICAgaWYgKGdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIGdyb3VwQ29tcG9uZW50Ll9oaWRkZW4gPSAhc2hvd0dyb3VwO1xuICAgICAgICAvKiBhc3NpZ24gYW4gaW50ZXJuYWwga2V5IHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UsIHNvIHdlIGNhbiBmaW5kIGl0IGxhdGVyIChhYm92ZSkuICovXG4gICAgICAgIChncm91cENvbXBvbmVudCBhcyBhbnkpLl9fa2V5ID0gZ3JvdXBLZXk7XG4gICAgICAgIC8qIEV4cGFuZCB0aGUgYWNjb3JkaW9uIG9uIG1hdGNoaW5nIHJlc3VsdHMgKi9cbiAgICAgICAgaWYgKGlzQWNjb3JkaW9uICYmIHNob3dHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGFjY29yZGlvbkdyb3VwID0gZ3JvdXBDb21wb25lbnQgYXMgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50O1xuXG4gICAgICAgICAgaWYgKCFhY2NvcmRpb25Hcm91cC5leHBhbmRlZCkge1xuICAgICAgICAgICAgYWNjb3JkaW9uR3JvdXAuY29udGVudC5kaXNhYmxlQW5pbWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIC8qIEV4cGFuZCB0aGUgYWNjb3JkaW9uICovXG4gICAgICAgICAgICBhY2NvcmRpb25Hcm91cC5leHBhbmQodHJ1ZSk7XG4gICAgICAgICAgICAvKiBNYXJrIHRoZSBhY2NvcmRpb24gYXMgZXhwYW5kZWQsIHNvIHdlIGNhbiByZXR1cm4gdG8gdGhlIGRlZmF1bHQgc3RhdGUgbGF0ZXIgKi9cbiAgICAgICAgICAgIChncm91cENvbXBvbmVudCBhcyBhbnkpLl9fZXhwZW5kZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNSZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCB0aGUgb3B0aW9ucyB0byBzaG93IG9yIGhpZGUgZWFjaCBhbmQgcmV0dXJuIGlmIHJlc3VsdCBoYXMgYmVlbiBmb3VuZC5cbiAgICogQ29uc2lkZXIgd2UgaGF2ZSBhIGdyb3VwIHRoYXQgbWF0Y2ggd2Ugc2hvdyBhbGwgb2YgaXRzIG9wdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluT3B0aW9ucyh2YWx1ZTogc3RyaW5nLCBncm91cE9wdGlvbnMgPSBbXSwgZ3JvdXBNYXRjaCA9IGZhbHNlKSB7XG4gICAgbGV0IGhhc1Jlc3VsdHMgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBjb25zdCBvcHRpb25Jbkdyb3VwID0gZ3JvdXBPcHRpb25zLmluZGV4T2YoZGF0b09wdGlvbi5vcHRpb24gJiYgZGF0b09wdGlvbi5vcHRpb25bdGhpcy5pZEtleV0pICE9PSAtMTtcblxuICAgICAgaWYgKGdyb3VwTWF0Y2ggJiYgb3B0aW9uSW5Hcm91cCkge1xuICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZChmYWxzZSk7XG4gICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghc2l6ZShncm91cE9wdGlvbnMpIHx8IG9wdGlvbkluR3JvdXApIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLnNlYXJjaFN0cmF0ZWd5KGRhdG9PcHRpb24sIHZhbHVlLCB0aGlzLmxhYmVsS2V5KTtcblxuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQoZmFsc2UpO1xuICAgICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBrZXkgb2YgdGhlIG9wdGlvbiBncm91cC4gSXQgY2FuIGJlIHRoZSBncm91cCBJZCBpZiBleGlzdHMsIG9yIHRoZSBsYWJlbC5cbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBLZXkob3B0aW9uKSB7XG4gICAgcmV0dXJuIG9wdGlvbiAmJiAob3B0aW9uW3RoaXMuaWRLZXldIHx8IG9wdGlvblt0aGlzLmxhYmVsS2V5XSk7XG4gIH1cblxuICBwcml2YXRlIGlzRW1wdHkodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJyc7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlYXJjaCBjaGFuZ2VzIGFuZCBmaWx0ZXIgdGhlIGxpc3RcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9TZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5pc0NvbWJvICYmXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxTZWFyY2gpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93QWxsKCk7XG4gICAgICAgICAgICB0aGlzLmhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1Jlc3VsdHMgPSB0aGlzLnNlYXJjaE9wdGlvbnModmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmRhdG9PdmVybGF5ICYmIHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBvcHRpb24gY2xpY2sgYW5kIGNoYW5nZSB0aGUgc3RhdGUgYWNjb3JkaW5nbHlcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9PcHRpb25DbGljayhvcHRpb25zOiBRdWVyeUxpc3Q8RGF0b09wdGlvbkNvbXBvbmVudD4pIHtcbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgLyoqIEdhdGhlciBhbGwgdGhlIGNsaWNrcyAqL1xuICAgIGNvbnN0IGNsaWNrcyQgPSBvcHRpb25zLm1hcChvcHRpb24gPT5cbiAgICAgIG9wdGlvbi5jbGljayQucGlwZShcbiAgICAgICAgbWFwKChldmVudDogRXZlbnQpID0+ICh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgb3B0aW9uXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAvKiogQ29uc2lkZXIgY2hhbmdlIGl0IHRvIHVzZSBldmVudCBkZWxlZ2F0aW9uICovXG4gICAgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24gPSBtZXJnZSguLi5jbGlja3MkKS5zdWJzY3JpYmUoKHsgb3B0aW9uLCBldmVudCB9KSA9PiB7XG4gICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5pc1NpbmdsZSA/IHRoaXMuaGFuZGxlU2luZ2xlQ2xpY2sob3B0aW9uKSA6IHRoaXMuaGFuZGxlTXVsdGlDbGljayhvcHRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzRXNjYXBlKGV2ZW50KSAmJiB0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IHRydWU7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNFbnRlcihldmVudCkpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMub3B0aW9ucy50b0FycmF5KClbaW5kZXhdO1xuICAgICAgdGhpcy5pc1NpbmdsZSA/IHRoaXMuaGFuZGxlU2luZ2xlQ2xpY2soYWN0aXZlKSA6IHRoaXMuaGFuZGxlTXVsdGlDbGljayhhY3RpdmUpO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93VXBEb3duKGV2ZW50KSkge1xuICAgICAgdGhpcy5rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24nKTtcbiAgICAgIF9zY3JvbGxUb09wdGlvbih7XG4gICAgICAgIHNpemU6IHRoaXMuc2l6ZSxcbiAgICAgICAgcGFuZWwsXG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleDogdGhpcy5rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCxcbiAgICAgICAgZ3JvdXBzOiB0aGlzLmdyb3VwcyxcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNFc2NhcGUoZXZlbnQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEFsbCgpIHtcbiAgICBmb3IgKGNvbnN0IGRhdG9PcHRpb24gb2YgdGhpcy5vcHRpb25zLnRvQXJyYXkoKSkge1xuICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNpbmdsZUNsaWNrKGRhdG9PcHRpb246IERhdG9PcHRpb25Db21wb25lbnQpIHtcbiAgICBpZiAoIWRhdG9PcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGRhdG9PcHRpb24uYWN0aXZlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgIGRhdG9PcHRpb24uYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCByYXdPcHRpb24gPSBkYXRvT3B0aW9uLm9wdGlvbjtcbiAgICB0aGlzLl9tb2RlbCA9IFtyYXdPcHRpb25dO1xuICAgIHRoaXMub25DaGFuZ2UocmF3T3B0aW9uKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU11bHRpQ2xpY2soZGF0b09wdGlvbjogRGF0b09wdGlvbkNvbXBvbmVudCkge1xuICAgIGlmICghZGF0b09wdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtb2RlbExlbmd0aCA9IHRoaXMuX21vZGVsLmxlbmd0aDtcbiAgICBjb25zdCB1cGRhdGVEaXNhYmxlZCA9XG4gICAgICB0aGlzLmxpbWl0U2VsZWN0ZWRUbyAmJlxuICAgICAgKG1vZGVsTGVuZ3RoID09PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbyB8fCAobW9kZWxMZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvIC0gMSAmJiAhZGF0b09wdGlvbi5hY3RpdmUpKTtcbiAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9ICFkYXRvT3B0aW9uLmFjdGl2ZTtcbiAgICBjb25zdCByYXdPcHRpb24gPSBkYXRvT3B0aW9uLm9wdGlvbjtcbiAgICBpZiAoZGF0b09wdGlvbi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuY29uY2F0KHJhd09wdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKGN1cnJlbnQgPT4gY3VycmVudFt0aGlzLmlkS2V5XSAhPT0gcmF3T3B0aW9uW3RoaXMuaWRLZXldKTtcbiAgICB9XG4gICAgdXBkYXRlRGlzYWJsZWQgJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUluZmluaXRlU2Nyb2xsKCkge1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpLCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaGVpZ2h0IC0gc2Nyb2xsWTtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gMCB8fCBvZmZzZXQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZldGNoLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gJiYgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gJiYgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQgJiYgdGhpcy5kYXRvT3ZlcmxheS5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ3JvdXAgY29tcG9uZW50IGlzIEFjY29yZGlvblxuICAgKi9cbiAgcHJpdmF0ZSBpc0FjY29yZGlvbkdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmFjY29yZGlvbiAmJiB0aGlzLmFjY29yZGlvbi5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYW4gYXJyYXkgb2YgdGhlIGdyb3VwIGNvbXBvbmVudHNcbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTogTGlzdEdyb3VwQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKSA/IHRoaXMuYWNjb3JkaW9uLmZpcnN0Lmdyb3Vwcy50b0FycmF5KCkgOiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc2FibGVkU3RhdGUoKSB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvO1xuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uYWN0aXZlKSB7XG4gICAgICAgIGRhdG9PcHRpb24uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
1088
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEIsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxP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QTtRQUNsQixXQUFBLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNyQixXQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTt5Q0FOTixpQkFBaUI7WUFDWCxvQkFBb0I7WUFDekIsVUFBVTtZQUNILFdBQVc7T0E3VHZCLG1CQUFtQixDQXkzQi9CO0lBQUQsMEJBQUM7Q0FBQSxBQXozQkQsQ0FBeUMsaUJBQWlCLEdBeTNCekQ7U0F6M0JZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZUN1c3RvbUNvbnRyb2wgfSBmcm9tICcuLi9jdXN0b20tY29udHJvbC9iYXNlLWN1c3RvbS1jb250cm9sJztcbmltcG9ydCB7IGRlZmF1bHRPcHRpb25zRGlzcGxheUxpbWl0LCBTZWxlY3RUeXBlIH0gZnJvbSAnLi9zZWxlY3QudHlwZXMnO1xuaW1wb3J0IHsgRGF0b09wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbnMvb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2UsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC1hY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdG9TZWxlY3RTZWFyY2hTdHJhdGVneSwgZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi9zZWFyY2guc3RyYXRlZ3knO1xuaW1wb3J0IHsgY2xvc2VzdCwgcXVlcnksIHNldFN0eWxlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaGVscGVycyc7XG5pbXBvcnQgeyBEYXRvT3ZlcmxheSwgRGF0b1RlbXBsYXRlUG9ydGFsIH0gZnJvbSAnLi4vYW5ndWxhci9vdmVybGF5JztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgX3Njcm9sbFRvT3B0aW9uIH0gZnJvbSAnLi4vb3B0aW9ucy9vcHRpb25zLXV0aWxzJztcbmltcG9ydCB7IERhdG9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgbm9ybWFsaXplRGF0YSB9IGZyb20gJy4uL2ludGVybmFsL2RhdGEtbm9ybWFsaXphdGlvbic7XG5pbXBvcnQgeyBEYXRvQWNjb3JkaW9uQ29tcG9uZW50LCBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvcmRpb24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEYXRvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zL2dyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9saXN0L2xpc3QudHlwZXMnO1xuaW1wb3J0IHsgdW50aWxEZXN0cm95ZWQgfSBmcm9tICduZ3gtdGFrZS11bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IGlzQXJyb3dVcERvd24sIGlzRW50ZXIsIGlzRXNjYXBlIH0gZnJvbSAnLi4vcngvZXZlbnRzJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IGlzU3RyaW5nLCBzaXplIH0gZnJvbSAnLi4vdXRpbHMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyB6SW5kZXhQbGVhc2UgfSBmcm9tICcuLi9pbnRlcm5hbC96LWluZGV4JztcbmltcG9ydCB7IGlzVGVzdEVudiB9IGZyb20gJy4uL2lzdGVzdC1lbnYnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi91dGlscy91c2VyLWFnZW50JztcbmltcG9ydCB7IFBvcHBlck9wdGlvbnMgfSBmcm9tICcuLi9zZXJ2aWNlcy9wb3BwZXInO1xuaW1wb3J0IHsgc2V0RGltZW5zaW9ucyB9IGZyb20gJy4uL2ludGVybmFsL2N1c3RvbS1kaW1lbnNpb25zJztcblxuY29uc3QgdmFsdWVBY2Nlc3NvciA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdG9TZWxlY3RDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0by1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIHByb3ZpZGVyczogW3ZhbHVlQWNjZXNzb3IsIERhdG9PdmVybGF5XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnZGF0b1NlbGVjdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0b1NlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VDdXN0b21Db250cm9sXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgLyoqIFRoZSBkcm9wZG93biBjb250YWluZXIgZWxlbWVudCB3aGljaCBpcyB0aGUgcG9ydGFsICAqKi9cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKVxuICBkcm9wZG93bjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVGhlIG92ZXJsYXkgb3JpZ2luIHdoaWNoIGlzIG9uZSBvZiBkYXRvLXRyaWdnZXJzICoqL1xuICBAVmlld0NoaWxkKCdvdmVybGF5T3JpZ2luJylcbiAgb3JpZ2luOiBFbGVtZW50UmVmO1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b09wdGlvbnMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvT3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIG9wdGlvbnM6IFF1ZXJ5TGlzdDxEYXRvT3B0aW9uQ29tcG9uZW50PjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9BY2NvcmRpb25Hcm91cHMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERhdG9BY2NvcmRpb25Db21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGFjY29yZGlvbjogUXVlcnlMaXN0PERhdG9BY2NvcmRpb25Db21wb25lbnQ+O1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b0dyb3VwcyBjaGlsZHJlbiAqL1xuICBAQ29udGVudENoaWxkcmVuKERhdG9Hcm91cENvbXBvbmVudClcbiAgZ3JvdXBzOiBRdWVyeUxpc3Q8RGF0b0dyb3VwQ29tcG9uZW50PjtcblxuICAvKiogQWxsb3dpbmcgY3VzdG9tIHRlbXBsYXRlIGJ5IHBhc3NpbmcgKmRhdG9BY3RpdmUgZGlyZWN0aXZlIHdoaWNoIGdldHMgdGhlIGFjdGl2ZSBhcyBjb250ZXh0ICovXG4gIEBDb250ZW50Q2hpbGQoRGF0b1NlbGVjdEFjdGl2ZURpcmVjdGl2ZSlcbiAgYWN0aXZlOiBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlO1xuXG4gIC8qKiBUaGUga2V5IHRoYXQgc3RvcmVzIHRoZSBvcHRpb24gaWQgKi9cbiAgQElucHV0KClcbiAgaWRLZXkgPSAnaWQnO1xuXG4gIC8qKiBUaGUgbG9va3VwIGtleSBmb3IgdGhlIGxhYmVsICovXG4gIEBJbnB1dCgpXG4gIGxhYmVsS2V5ID0gJ2xhYmVsJztcblxuICAvKiogQSBwbGFjZWhvbGRlciBmb3IgdGhlIHRyaWdnZXIgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnY29yZS5zZWxlY3QnO1xuXG4gIC8qKiBBIHBsYWNlaG9sZGVyIGZvciB0aGUgc2VhcmNoICovXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyID0gJ2NvcmUuc2VhcmNoJztcblxuICAvKiogQ3VzdG9tIHRleHQgd2hlbiB3ZSBkb24ndCBoYXZlIHJlc3VsdHMgKi9cbiAgQElucHV0KClcbiAgc2V0IG5vSXRlbXNMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbm9JdGVtc0xhYmVsID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBJZiBkZWZpbmVkLCBpbmRpY2F0ZXMgYnkgd2hpY2gga2V5IHRoZSBkYXRhIHNob3VsZCBiZSBub3JtYWxpemVkICovXG4gIEBJbnB1dCgpXG4gIGdyb3VwQnk6IHN0cmluZztcblxuICAvKiogQWRkL3JlbW92ZXMgc2VhcmNoIGlucHV0ICovXG4gIEBJbnB1dCgpXG4gIGlzQ29tYm8gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGl0J3MgYSBncm91cCAqL1xuICBASW5wdXQoKVxuICBpc0dyb3VwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlY2lkZSB3aGV0aGVyIHRvIGZpbHRlciB0aGUgcmVzdWx0cyBpbnRlcm5hbGx5IGJhc2VkIG9uIHNlYXJjaCBxdWVyeS5cbiAgICogVXNlZnVsIGZvciBhc3luYyBmaWx0ZXJpbmcsIHdoZXJlIHdlIHNlYXJjaCB0aHJvdWdoIG1vcmUgY29tcGxleCBkYXRhLlxuICAgKi9cbiAgQElucHV0KClcbiAgaW50ZXJuYWxTZWFyY2ggPSB0cnVlO1xuXG4gIC8qKiBEZWJvdW5jZSB0aW1lIHRvIGVtaXQgc2VhcmNoIHF1ZXJpZXMgKi9cbiAgQElucHV0KClcbiAgZGVib3VuY2VUaW1lID0gMzAwO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgbG9hZGluZyBpbmRpY2F0b3IgKi9cbiAgQElucHV0KClcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgc2VsZWN0IGFsbCBjaGVja2JveCAqL1xuICBASW5wdXQoKVxuICBhbGxvd1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHNlbGVjdCBhbGwgY2hpcC4gZW1wdHkgbWVhbnMgaXQncyBkaXNhYmxlZCAqL1xuICBASW5wdXQoKVxuICBzZWxlY3RBbGxDaGlwVHh0ID0gJyc7XG5cbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBzZWxlY3QgKi9cbiAgQElucHV0KClcbiAgdHlwZTogU2VsZWN0VHlwZSA9IFNlbGVjdFR5cGUuU0lOR0xFO1xuXG4gIC8qKiBDbGllbnQgc2VhcmNoIHN0cmF0ZWd5ICovXG4gIEBJbnB1dCgpXG4gIHNlYXJjaFN0cmF0ZWd5OiBEYXRvU2VsZWN0U2VhcmNoU3RyYXRlZ3kgPSBkZWZhdWx0Q2xpZW50U2VhcmNoU3RyYXRlZ3k7XG5cbiAgLyoqIFRoZSBkZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSBkcm9wZG93biAqL1xuICBASW5wdXQoKVxuICBwbGFjZW1lbnQ6IFBvcHBlck9wdGlvbnNbJ3BsYWNlbWVudCddID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgQElucHV0KClcbiAgaW5maW5pdGVTY3JvbGxMb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqIExpbWl0IHRoZSBudW1iZXIgb2YgcmVzdWx0cyBzaG93biAqL1xuICBASW5wdXQoKVxuICBsaW1pdFRvID0gZGVmYXVsdE9wdGlvbnNEaXNwbGF5TGltaXQ7XG5cbiAgQElucHV0KCdsaW1pdFNlbGVjdGVkVG8nKVxuICBzZXQgbGltaXRTZWxlY3RlZChsaW1pdFNlbGVjdGVkVG86IG51bWJlcikge1xuICAgIHRoaXMubGltaXRTZWxlY3RlZFRvID0gbGltaXRTZWxlY3RlZFRvO1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBbGxvdyBzb3J0aW5nIG9mIHNlbGVjdGVkIG9wdGlvbnMgaW4gbXVsdGkgbW9kZSAqL1xuICBASW5wdXQoKVxuICBpc1NvcnRhYmxlID0gZmFsc2U7XG5cbiAgLyoqIEVsZW1lbnQgdG8gYXBwZW5kIHRoZSBvcHRpb25zIG92ZXJsYXkgdG8gKi9cbiAgQElucHV0KClcbiAgYXBwZW5kVG86IEhUTUxFbGVtZW50IHwgc3RyaW5nO1xuXG4gIC8qKiBUaGUgb3B0aW9ucyB0byBkaXNwbGF5IGluIHRoZSBkcm9wZG93biAqL1xuICBASW5wdXQoKVxuICBzZXQgZGF0YVNldChkYXRhOiBhbnlbXSkge1xuICAgIGlmICghdGhpcy5pbml0aWFsUnVuKSB7XG4gICAgICB0aGlzLl9kYXRhID0gbm9ybWFsaXplRGF0YShkYXRhLCB0aGlzLmxhYmVsS2V5LCB0aGlzLmdyb3VwQnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiogZGF0YSBub3JtYWxpemF0aW9uLCBpZiByZXF1aXJlZCwgd2lsbCBiZSBoYW5kbGVkIGJ5IG5nT25Jbml0IGluIHRoZSBpbml0aWFsIHJ1biAqL1xuICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgfVxuXG4gICAgLyoqIElmIGl0J3MgYXN5bmMgdXBkYXRlcywgY3JlYXRlIG1pY3JvIHRhc2sgaW4gb3JkZXIgdG8gcmUtc3Vic2NyaWJlIHRvIGNsaWNrcyAqL1xuICAgIGlmICh0aGlzLl9kYXRhSXNEaXJ0eSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9PcHRpb25DbGljayh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLm1hcmtBc0FjdGl2ZSh0aGlzLl9tb2RlbCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRhSXNEaXJ0eSA9IHRydWU7XG4gIH1cblxuICAvKiogU2VhcmNoIGdyb3VwcyBhcyB3ZWxsIGFzIG9wdGlvbnMgKi9cbiAgQElucHV0KClcbiAgc2VhcmNoR3JvdXBMYWJlbHMgPSB0cnVlO1xuXG4gIC8qKiBBZGQgY3VzdG9tIGNsYXNzIHRvIHRoZSBzZWxlY3QgZHJvcERvd24gKi9cbiAgQElucHV0KClcbiAgZGF0b1NlbGVjdENsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbG9hZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBzaG93IGVtcHR5IHJlc3VsdCB0ZXh0ICovXG4gIEBJbnB1dCgpXG4gIHNob3dFbXB0eVJlc3VsdHNUZXh0ID0gdHJ1ZTtcblxuICAvKipcbiAgICoga2VlcCBmb2N1cyBpbiBpbnB1dCBhZnRlciBzZWxlY3Rpbmcgb3B0aW9uXG4gICAqL1xuICBASW5wdXQoKVxuICBrZWVwRm9jdXMgPSBmYWxzZTtcblxuICAvKiogRW1pdCBzZWFyY2ggdmFsdWUgd2hlbiBpbnRlcm5hbCBzZWFyY2ggaXMgZmFsc2UgKi9cbiAgQE91dHB1dCgpXG4gIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBFbWl0IHdoZW4gW3dpdGhBY3Rpb25zXSBpcyB0cnVlIGFuZCB0aGUgdXNlciBjbGlja3Mgc2F2ZSAqL1xuICBAT3V0cHV0KClcbiAgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgZmV0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbGltaXRTZWxlY3RlZFRvOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgICovXG5cbiAgZ2V0IGNvbnRhaW5zR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuXG4gIHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGhhc1Jlc3VsdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc1Jlc3VsdHM7XG4gIH1cblxuICBzZXQgaGFzUmVzdWx0cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc1Jlc3VsdHMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNlbGVjdFR5cGUuU0lOR0xFO1xuICB9XG5cbiAgZ2V0IGlzTXVsdGkoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2VsZWN0VHlwZS5NVUxUSTtcbiAgfVxuXG4gIGdldCBfc2hvd0VtcHR5UmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93RW1wdHlSZXN1bHRzVGV4dCAmJiB0aGlzLl9kYXRhICYmICghdGhpcy5oYXNSZXN1bHRzIHx8ICF0aGlzLl9kYXRhLmxlbmd0aCkgJiYgIXRoaXMuaXNHcm91cDtcbiAgfVxuXG4gIGdldCBfY291bnQoKSB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLmdldFZpc2libGVPcHRpb25zKGZhbHNlKS5sZW5ndGg7XG4gICAgY29uc3QgYWN0aXZlcyA9IHRoaXMuX21vZGVsLmxlbmd0aDtcbiAgICByZXR1cm4gYCgke2FjdGl2ZXN9LyR7dG90YWx9KWA7XG4gIH1cblxuICAvKiogV2hldGhlciBhbGwgdGhlIG9wdGlvbnMgYXJlIGNoZWNrZWQgKi9cbiAgZ2V0IF9pc0FsbENoZWNrZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmlzaWJsZU9wdGlvbnMoKS5ldmVyeShvcHRpb24gPT4gdGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID4gLTEpO1xuICB9XG5cbiAgZ2V0IHNob3dTZWxlY3RBbGxDaGlwKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoICYmIHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHNvbWUgdGhlIG9wdGlvbnMgYXJlIGNoZWNrZWQgKi9cbiAgZ2V0IF9pc0luZGV0ZXJtaW5hdGVseUNoZWNrZWQoKSB7XG4gICAgbGV0IHNvbWVDaGVja2VkLFxuICAgICAgc29tZU5vdENoZWNrZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IHZpc2libGVPcHRpb24gb2YgdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpKSB7XG4gICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZih2aXNpYmxlT3B0aW9uKSA+IC0xKSB7XG4gICAgICAgIHNvbWVDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWVOb3RDaGVja2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzb21lQ2hlY2tlZCAmJiBzb21lTm90Q2hlY2tlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEZvcm1Db250cm9sIHdoaWNoIGxpc3RlbnMgZm9yIHNlYXJjaCB2YWx1ZSBjaGFuZ2VzICovXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAvKiogRXhwb3NlIHRoZSBzZWFyY2ggdGVybSBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBoaWdobGlnaHQgZGlyZWN0aXZlICovXG4gIHNlYXJjaFRlcm0gPSAnJztcblxuICAvKipcbiAgICogUHJpdmF0ZSBQcm9wZXJ0aWVzXG4gICAqL1xuICBfbm9JdGVtc0xhYmVsID0gdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLm5vLWl0ZW1zJyk7XG5cbiAgLyoqIFN0b3JlIHRoZSBpbml0aWFsIGRhdGEgKi9cbiAgX2RhdGEgPSBbXTtcblxuICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgd2UgYWxyZWFkeSBpbml0aWFsaXplZCB0aGUgZGF0YSxcbiAgICogIFRoaXMgaXMgb3B0aW1pemF0aW9uIGZvciBub24gYXN5bmMgY2FsbHMuXG4gICAqICovXG4gIF9kYXRhSXNEaXJ0eSA9IGZhbHNlO1xuXG4gIC8qKiBUcmlnZ2VycyB0aGUgZm9jdXMgb24gdGhlIGlucHV0ICovXG4gIF9mb2N1cyA9IGZhbHNlO1xuXG4gIC8qKiBTdG9yZSB0aGUgYWN0aXZlIG9wdGlvbnMgKi9cbiAgX21vZGVsID0gW107XG5cbiAgLyoqIEVuYWJsZS9kaXNhYmxlIHRoZSBzZWxlY3QtdHJpZ2dlciAqL1xuICBfZGlzYWJsZWQ7XG5cbiAgLyoqIFdoZXRlciB0aGUgZHJvcGRvd24gaXMgb3BlbiAqL1xuICBfb3BlbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHdlIGhhdmUgc2VhcmNoIHJlc3VsdHMgKi9cbiAgX2hhc1Jlc3VsdHMgPSB0cnVlO1xuXG4gIC8qKiBJbmRpY2F0aW9uIGlmIHdlIG5lZWQgdG8gc2V0IHRoZSBpbml0aWFsIGNvbnRyb2wgdmFsdWUgYXMgYWN0aXZlcyAqL1xuICBfaW5pdGlhbE9wZW4gPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIGdlbmVyYXRlIGNhbmNlbC9zYXZlIGZvb3RlciAqL1xuICBfd2l0aEFjdGlvbnMgPSBmYWxzZTtcblxuICBfd2l0aEluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG5cbiAgLyoqIE5vdGlmeSB0aGUgbXVsdGkgdHJpZ2dlciB3aGVuIGNsaWNrIG91dHNpZGUgdG8gcmVtb3ZlIHRoZSBmb2N1cyAgKi9cbiAgX2NsaWNrT3V0c2lkZSA9IGZhbHNlO1xuXG4gIC8qKiBEcm9wZG93biBzaXplIGNsYXNzICovXG4gIF9kcm9wZG93bkNsYXNzOiBzdHJpbmdbXTtcblxuICAvKiogdHJ1ZSB1bnRpbCBuZ09uSW5pdCAqL1xuICBwcml2YXRlIGluaXRpYWxSdW4gPSB0cnVlO1xuXG4gIC8qKiBTZWFyY2ggY29udHJvbCBzdWJzY3JpcHRpb24gKi9cbiAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb247XG5cbiAgLyoqIENsaWNrcyBvcHRpb25zIHN1YnNjcmlwdGlvbiAqL1xuICBwcml2YXRlIGNsaWNrc1N1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPERhdG9PcHRpb25Db21wb25lbnQ+O1xuXG4gIHByaXZhdGUgaW5maW5pdGVTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogRGF0b1RyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGRhdG9PdmVybGF5OiBEYXRvT3ZlcmxheSxcbiAgICBAQXR0cmlidXRlKCduYWtlZCcpIHB1YmxpYyBfbmFrZWQsXG4gICAgQEF0dHJpYnV0ZSgnZGF0b1NpemUnKSBwdWJsaWMgc2l6ZSxcbiAgICBAQXR0cmlidXRlKCd3aWR0aCcpIHB1YmxpYyB3aWR0aDogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zaXplID0gc2l6ZSB8fCAnbWQnO1xuICAgIHRoaXMuX2Ryb3Bkb3duQ2xhc3MgPSBbYGRhdG8tc2VsZWN0LSR7dGhpcy5zaXplfWBdO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZGF0b1NlbGVjdENsYXNzKSB7XG4gICAgICB0aGlzLl9kcm9wZG93bkNsYXNzLnB1c2godGhpcy5kYXRvU2VsZWN0Q2xhc3MpO1xuICAgIH1cblxuICAgIHRoaXMuX3dpdGhBY3Rpb25zID0gdGhpcy5zYXZlLm9ic2VydmVycy5sZW5ndGggPT09IDE7XG4gICAgdGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsID0gdGhpcy5mZXRjaC5vYnNlcnZlcnMubGVuZ3RoID09PSAxO1xuICAgIHRoaXMubGlzdGVuVG9TZWFyY2goKTtcbiAgICB0aGlzLl9kYXRhID0gbm9ybWFsaXplRGF0YSh0aGlzLl9kYXRhLCB0aGlzLmxhYmVsS2V5LCB0aGlzLmdyb3VwQnkpO1xuICAgIHRoaXMuaW5pdGlhbFJ1biA9IGZhbHNlO1xuICAgIC8vIGhlaWdodCBpcyBiZWluZyBjb250cm9sbGVkIGJ5IHNpemUgcHJvcGVydHlcbiAgICBzZXREaW1lbnNpb25zKHRoaXMud2lkdGgsIG51bGwsIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcbiAgbWFya1RvdWNoZWQoKSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLm9uVG91Y2hlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgZHJvcGRvd25cbiAgICovXG4gIGNsb3NlKCkge1xuICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucGF0Y2hWYWx1ZSgnJyk7XG4gICAgdGhpcy5kYXRvT3ZlcmxheS5kZXRhY2goKTtcbiAgICB0aGlzLnRvZ2dsZSgpO1xuICAgIHRoaXMuX2ZvY3VzID0gZmFsc2U7XG4gICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uICYmIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uICYmIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmJsdXIuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZHJvcGRvd24gdmlzaWJpbGl0eVxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgaWYgKHRoaXMub3BlbiAmJiAodGhpcy5pc011bHRpIHx8IHRoaXMuaXNDb21ibykpIHtcbiAgICAgIHRoaXMuX2ZvY3VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZShhY3RpdmVPcHRpb25zOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuX21vZGVsID0gYWN0aXZlT3B0aW9ucyA/IGNvZXJjZUFycmF5KGFjdGl2ZU9wdGlvbnMpIDogW107XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgdGhpcy5tYXJrQXNBY3RpdmUodGhpcy5fbW9kZWwsIHsgZGVzZWxlY3RBbGw6IHRydWUgfSk7XG4gICAgICB0aGlzLmxpbWl0U2VsZWN0ZWRUbyAmJiB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB9XG4gICAgLyoqIEZvciBsYXRlciB1cGRhdGVzICovXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgb3ZlcmxheVxuICAgKi9cbiAgb3BlbkRyb3Bkb3duKGV2ZW50Pykge1xuICAgIC8qKiBDbG9zZSB0aGUgZHJvcGRvd24gd2hlbiB3ZSBjbGljayBvbiB0aGUgdHJpZ2dlciBhbmQgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggb3IgbXVsdGlwbGUgKi9cbiAgICBpZiAodGhpcy5vcGVuICYmICF0aGlzLmlzQ29tYm8gJiYgdGhpcy5pc1NpbmdsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKiBEb24ndCBjbG9zZSB0aGUgZHJvcGRvd24gaWYgd2UgY2xpY2sgb24gdGhlIGlucHV0IGFuZCBpdCdzIG9wZW4gKi9cbiAgICBpZiAodGhpcy5vcGVuICYmICh0aGlzLmlzTXVsdGkgfHwgdGhpcy5pc0NvbWJvKSkge1xuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldC5ub2RlTmFtZSAhPT0gJ0lOUFVUJykge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGF0b092ZXJsYXkuY3JlYXRlZCkge1xuICAgICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRvT3ZlcmxheS5iYWNrRHJvcENsaWNrJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSB0cnVlO1xuICAgICAgdGhpcy5vcGVuICYmIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoKHsgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCB9LCB0aGlzLl9kcm9wZG93bkNsYXNzKTtcblxuICAgIHRoaXMudG9nZ2xlKCk7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIGZpcnN0IG9wZW4gdGhlIGRyb3Bkb3duIHdlIG5lZWQgdG8gbWFyayB0aGVcbiAgICAgKiBGb3JtQ29udHJvbCB2YWx1ZXMgYXMgYWN0aXZlc1xuICAgICAqL1xuICAgIGlmICh0aGlzLmhhc1ZhbHVlICYmIHRoaXMuX2luaXRpYWxPcGVuKSB7XG4gICAgICB0aGlzLm1hcmtBc0FjdGl2ZSh0aGlzLl9tb2RlbCk7XG4gICAgICBpZiAodGhpcy5saW1pdFNlbGVjdGVkVG8pIHtcbiAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pbml0aWFsT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl93aXRoSW5maW5pdGVTY3JvbGwpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVJbmZpbml0ZVNjcm9sbCgpO1xuICAgIH1cblxuICAgIHNldFN0eWxlKHF1ZXJ5KCcuZGF0by1vdmVybGF5JyksICd6SW5kZXgnLCB6SW5kZXhQbGVhc2UoKSk7XG4gICAgY29uc3QgZHJvcGRvd25Db250YWluZXIgPSBxdWVyeSgnLmRhdG8tc2VsZWN0X19kcm9wZG93bi1jb250YWluZXInKTtcbiAgICBzZXRTdHlsZShkcm9wZG93bkNvbnRhaW5lciwgJ3dpZHRoJywgYCR7dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcblxuICAgIC8qKiBQcmV2ZW50IHNjcm9sbCB3aGlsZSB0aGUgZHJvcGRvd24gaXMgb3BlbiAqL1xuICAgIGlmIChpc1Rlc3RFbnYoKSkge1xuICAgICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnROYW1lID0gaXNNb2JpbGUoKSA/ICd0b3VjaG1vdmUnIDogJ3Njcm9sbCc7XG4gICAgICBsZXQgc2Nyb2xsRXZlbnQgPSBmcm9tRXZlbnQod2luZG93LCBldmVudE5hbWUpO1xuICAgICAgaWYgKGlzTW9iaWxlKCkpIHtcbiAgICAgICAgc2Nyb2xsRXZlbnQgPSBzY3JvbGxFdmVudC5waXBlKGZpbHRlcihldmVudCA9PiAhZHJvcGRvd25Db250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gc2Nyb2xsRXZlbnQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKGUgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZVBlcmZlY3RTY3JvbGxCYXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZVRvT3B0aW9uQ2xpY2sodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIodGhpcy5vcHRpb25zKS53aXRoV3JhcCgpO1xuICB9XG5cbiAgY2hlY2tBbGwoY2hlY2s6IGJvb2xlYW4pIHtcbiAgICBsZXQgY2hlY2tlZCA9IGNoZWNrO1xuICAgIGlmICh0aGlzLl9pc0luZGV0ZXJtaW5hdGVseUNoZWNrZWQpIHtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGlmICghZGF0b09wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IGNoZWNrZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbnMgPSB0aGlzLmdldFZpc2libGVPcHRpb25zKCk7XG4gICAgY29uc3QgaXNBbGxWaXNpYmxlID0gdmlzaWJsZU9wdGlvbnMubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKGlzQWxsVmlzaWJsZSkge1xuICAgICAgdGhpcy5fbW9kZWwgPSBjaGVja2VkID8gdmlzaWJsZU9wdGlvbnMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB2aXNpYmxlT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLl9tb2RlbC5pbmRleE9mKG9wdGlvbikgPT09IC0xKSB7XG4gICAgICAgICAgICB0ZW1wLnB1c2gob3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9kZWwgPSBbLi4udGhpcy5fbW9kZWwsIC4uLnRlbXBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIob3B0aW9uID0+IHZpc2libGVPcHRpb25zLmluZGV4T2Yob3B0aW9uKSA9PT0gLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbW9kZWwpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlb3JkZXJPcHRpb25zKG5ld09yZGVyOiBhbnlbXSkge1xuICAgIHRoaXMuX21vZGVsID0gbmV3T3JkZXI7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gIH1cblxuICByZW1vdmVPcHRpb24ob3B0aW9uKSB7XG4gICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50W3RoaXMuaWRLZXldICE9PSBvcHRpb25bdGhpcy5pZEtleV0pO1xuICAgIGNvbnN0IG9wdGlvblRvUmVtb3ZlID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICBkYXRvT3B0aW9uID0+IGRhdG9PcHRpb24ub3B0aW9uICYmIGRhdG9PcHRpb24ub3B0aW9uW3RoaXMuaWRLZXldID09PSBvcHRpb25bdGhpcy5pZEtleV1cbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogVG8gcHJldmVudCBjYXNlcyB3aGVuIHRoZSBvcHRpb25zIGFyZSBsaW1pdGVkIGFuZCBkb2VzbnQgaW5jbHVkZSB0aGUgYWN0aXZlIG9wdGlvbixcbiAgICAgKiB0aGF0IGNhbiBiZSByZWFjaGVkIG9ubHkgYnkgc2VydmVyIHNlYXJjaC5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9uVG9SZW1vdmUpIHtcbiAgICAgIG9wdGlvblRvUmVtb3ZlLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubGltaXRTZWxlY3RlZFRvICYmIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgaWYgKHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQpIHtcbiAgICAgIHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2ZW50Qm9keVNjcm9sbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChpc0Fycm93VXBEb3duKGV2ZW50KSkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIG92ZXJsYXkgdG8gZGlzcGxheSB0aGUgc2VsZWN0IG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZVBvcnRhbCA9IG5ldyBEYXRvVGVtcGxhdGVQb3J0YWwodGhpcy5kcm9wZG93bik7XG4gICAgbGV0IGFwcGVuZFRvRWxlbWVudDtcbiAgICBpZiAoaXNTdHJpbmcodGhpcy5hcHBlbmRUbykpIHtcbiAgICAgIGFwcGVuZFRvRWxlbWVudCA9IGNsb3Nlc3QodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuYXBwZW5kVG8gYXMgc3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwZW5kVG9FbGVtZW50ID0gdGhpcy5hcHBlbmRUbztcbiAgICB9XG5cbiAgICB0aGlzLmRhdG9PdmVybGF5LmNyZWF0ZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgdGVtcGxhdGVQb3J0YWwsIGFwcGVuZFRvRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogUG9wcGVyIGRvZXNuJ3Qgc3VwcG9ydCBwZXJmZWN0LXNjcm9sbC1iYXIsIHNvIHdlIG5lZWQgdG8gZG8gaXQgbWFudWFsbHlcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlUGVyZmVjdFNjcm9sbEJhcigpIHtcbiAgICBjb25zdCBwZXJmZWN0U2Nyb2xsQmFyUGFyZW50ID0gY2xvc2VzdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgJy5wcycpO1xuICAgIGlmIChwZXJmZWN0U2Nyb2xsQmFyUGFyZW50KSB7XG4gICAgICBmcm9tRXZlbnQocGVyZmVjdFNjcm9sbEJhclBhcmVudCwgJ3Njcm9sbCcpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRocm90dGxlVGltZSgxMCksXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRhdG9PdmVybGF5LnNjaGVkdWxlVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmlzaWJsZU9wdGlvbnMoZ2V0UmF3T3B0aW9ucyA9IHRydWUpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcihkYXRvT3B0aW9uID0+ICFkYXRvT3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoZ2V0UmF3T3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubWFwKGRhdG9PcHRpb24gPT4gZGF0b09wdGlvbi5vcHRpb24pO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIHRoZSBpbml0aWFsIGNvbnRyb2wgdmFsdWUgYXMgYWN0aXZlXG4gICAqL1xuICBwcml2YXRlIG1hcmtBc0FjdGl2ZShtb2RlbDogYW55W10sIG9wdGlvbnM6IHsgZGVzZWxlY3RBbGw6IGJvb2xlYW4gfSA9IHsgZGVzZWxlY3RBbGw6IGZhbHNlIH0pIHtcbiAgICBjb25zdCBhc0FycmF5ID0gdGhpcy5vcHRpb25zLnRvQXJyYXkoKTtcbiAgICBpZiAob3B0aW9ucy5kZXNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBtb2RlbCkge1xuICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXRjaCA9IGFzQXJyYXkuZmluZChjdXJyZW50ID0+IGN1cnJlbnQub3B0aW9uICYmIGN1cnJlbnQub3B0aW9uW3RoaXMuaWRLZXldID09PSBvcHRpb25bdGhpcy5pZEtleV0pO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIG1hdGNoLmFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgYWxsIG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgc2hvd0FsbCgpIHtcbiAgICBjb25zdCBpc0FjY29yZGlvbiA9IHRoaXMuaXNBY2NvcmRpb25Hcm91cCgpO1xuICAgIGNvbnN0IGdyb3VwQ29tcG9uZW50czogTGlzdEdyb3VwQ29tcG9uZW50W10gPSB0aGlzLmdldEdyb3VwQ29tcG9uZW50c0FycmF5KCk7XG5cbiAgICBmb3IgKGNvbnN0IGdyb3VwQ29tcG9uZW50IG9mIGdyb3VwQ29tcG9uZW50cykge1xuICAgICAgZ3JvdXBDb21wb25lbnQuX2hpZGRlbiA9IGZhbHNlO1xuXG4gICAgICAvKiBJZiB0aGlzIGFjY29yZGlvbiBncm91cCBoYXMgYmVlbiBleHBlbmRlZCBieSB0aGUgc2VhcmNoIGZ1bmN0aW9uLFxuICAgICAgICAgdGhlbiBjb2xsYXBzZSBpdCB0byB0aGUgb3JpZ2luYWwgc3RhdGVcbiAgICAgICovXG4gICAgICBpZiAoaXNBY2NvcmRpb24pIHtcbiAgICAgICAgY29uc3QgYW55R3JvdXAgPSBncm91cENvbXBvbmVudCBhcyBhbnk7XG5cbiAgICAgICAgaWYgKGFueUdyb3VwLl9fZXhwZW5kZWQpIHtcbiAgICAgICAgICBhbnlHcm91cC5fX2V4cGVuZGVkID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgYWNjb3JkaW9uR3JvdXAgPSBhbnlHcm91cCBhcyBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQ7XG4gICAgICAgICAgYWNjb3JkaW9uR3JvdXAuY29udGVudC5kaXNhYmxlQW5pbWF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgYWNjb3JkaW9uR3JvdXAuZXhwYW5kKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBmb3Igb3B0aW9ucyBhbmQgcmV0dXJucyBpZiB3ZSBoYXZlIHJlc3VsdFxuICAgKi9cbiAgcHJpdmF0ZSBzZWFyY2hPcHRpb25zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBsZXQgaGFzUmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgZ3JvdXBDb21wb25lbnRzQXJyYXk6IExpc3RHcm91cENvbXBvbmVudFtdID0gdGhpcy5nZXRHcm91cENvbXBvbmVudHNBcnJheSgpO1xuICAgIGNvbnN0IGhhc0dyb3VwcyA9IGdyb3VwQ29tcG9uZW50c0FycmF5Lmxlbmd0aDtcblxuICAgIGlmIChoYXNHcm91cHMpIHtcbiAgICAgIGhhc1Jlc3VsdCA9IHRoaXMuc2VhcmNoSW5Hcm91cHMoZ3JvdXBDb21wb25lbnRzQXJyYXksIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFzUmVzdWx0ID0gdGhpcy5zZWFyY2hJbk9wdGlvbnModmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBoYXNSZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBtYXRjaGluZyBncm91cHMgYW5kIGNoaWxkcmVuLlxuICAgKi9cbiAgcHJpdmF0ZSBzZWFyY2hJbkdyb3Vwcyhncm91cENvbXBvbmVudHNBcnJheTogTGlzdEdyb3VwQ29tcG9uZW50W10sIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0FjY29yZGlvbiA9IHRoaXMuaXNBY2NvcmRpb25Hcm91cCgpO1xuICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLl9kYXRhLmxlbmd0aDtcbiAgICBsZXQgaGFzUmVzdWx0cyA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgIGNvbnN0IGdyb3VwS2V5ID0gdGhpcy5nZXRHcm91cEtleShncm91cCk7XG4gICAgICBjb25zdCBncm91cE1hdGNoID0gdGhpcy5zZWFyY2hHcm91cExhYmVscyAmJiB0aGlzLnNlYXJjaFN0cmF0ZWd5KGdyb3VwLCB2YWx1ZSwgdGhpcy5sYWJlbEtleSk7XG4gICAgICBjb25zdCBncm91cE9wdGlvbnMgPSBncm91cC5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gY2hpbGRbdGhpcy5pZEtleV0pO1xuICAgICAgLyogc2hvdy9oaWRlIHRoZSBvcHRpb25zICovXG4gICAgICBjb25zdCBzaG93R3JvdXAgPSB0aGlzLnNlYXJjaEluT3B0aW9ucyh2YWx1ZSwgZ3JvdXBPcHRpb25zLCBncm91cE1hdGNoKTtcblxuICAgICAgaWYgKHNob3dHcm91cCAmJiAhaGFzUmVzdWx0cykge1xuICAgICAgICBoYXNSZXN1bHRzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLyogRmluZCB0aGUgcmlnaHQgY29tcG9uZW50LCBhY2NvcmRpbmcgdG8gdGhlIGludGVybmFsIGtleSBhc3NpZ25lZCBpbiB0aGUgcHJldmlvdXMgc2VhcmNoLlxuICAgICAgICAgV2hlbiBubyBtYXRjaCBpcyBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIHRoZSBzYW1lIGluZGV4IGFzIHRoZSBncm91cCBvcHRpb24uXG4gICAgICAqICBUaGUgaW5kZXggaXMgY29uc2lkZXJlZCBsZXNzIHNhZmUsIGJlY2F1c2UgaXQgY2FuIGNoYW5nZSBhZnRlciBzb3J0aW5nLiAqL1xuICAgICAgY29uc3QgZ3JvdXBDb21wb25lbnQgPSBncm91cENvbXBvbmVudHNBcnJheS5maW5kKChnOiBhbnkpID0+IGcuX19rZXkgPT09IGdyb3VwS2V5KSB8fCBncm91cENvbXBvbmVudHNBcnJheVtpXTtcbiAgICAgIC8qIFNob3cvaGlkZSB0aGUgZ3JvdXAgKi9cbiAgICAgIGlmIChncm91cENvbXBvbmVudCkge1xuICAgICAgICBncm91cENvbXBvbmVudC5faGlkZGVuID0gIXNob3dHcm91cDtcbiAgICAgICAgLyogYXNzaWduIGFuIGludGVybmFsIGtleSB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlLCBzbyB3ZSBjYW4gZmluZCBpdCBsYXRlciAoYWJvdmUpLiAqL1xuICAgICAgICAoZ3JvdXBDb21wb25lbnQgYXMgYW55KS5fX2tleSA9IGdyb3VwS2V5O1xuICAgICAgICAvKiBFeHBhbmQgdGhlIGFjY29yZGlvbiBvbiBtYXRjaGluZyByZXN1bHRzICovXG4gICAgICAgIGlmIChpc0FjY29yZGlvbiAmJiBzaG93R3JvdXApIHtcbiAgICAgICAgICBjb25zdCBhY2NvcmRpb25Hcm91cCA9IGdyb3VwQ29tcG9uZW50IGFzIERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudDtcblxuICAgICAgICAgIGlmICghYWNjb3JkaW9uR3JvdXAuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmNvbnRlbnQuZGlzYWJsZUFuaW1hdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAvKiBFeHBhbmQgdGhlIGFjY29yZGlvbiAqL1xuICAgICAgICAgICAgYWNjb3JkaW9uR3JvdXAuZXhwYW5kKHRydWUpO1xuICAgICAgICAgICAgLyogTWFyayB0aGUgYWNjb3JkaW9uIGFzIGV4cGFuZGVkLCBzbyB3ZSBjYW4gcmV0dXJuIHRvIHRoZSBkZWZhdWx0IHN0YXRlIGxhdGVyICovXG4gICAgICAgICAgICAoZ3JvdXBDb21wb25lbnQgYXMgYW55KS5fX2V4cGVuZGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFzUmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggdGhlIG9wdGlvbnMgdG8gc2hvdyBvciBoaWRlIGVhY2ggYW5kIHJldHVybiBpZiByZXN1bHQgaGFzIGJlZW4gZm91bmQuXG4gICAqIENvbnNpZGVyIHdlIGhhdmUgYSBncm91cCB0aGF0IG1hdGNoIHdlIHNob3cgYWxsIG9mIGl0cyBvcHRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBzZWFyY2hJbk9wdGlvbnModmFsdWU6IHN0cmluZywgZ3JvdXBPcHRpb25zID0gW10sIGdyb3VwTWF0Y2ggPSBmYWxzZSkge1xuICAgIGxldCBoYXNSZXN1bHRzID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGRhdG9PcHRpb24gb2YgdGhpcy5vcHRpb25zLnRvQXJyYXkoKSkge1xuICAgICAgY29uc3Qgb3B0aW9uSW5Hcm91cCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKGRhdG9PcHRpb24ub3B0aW9uICYmIGRhdG9PcHRpb24ub3B0aW9uW3RoaXMuaWRLZXldKSAhPT0gLTE7XG5cbiAgICAgIGlmIChncm91cE1hdGNoICYmIG9wdGlvbkluR3JvdXApIHtcbiAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQoZmFsc2UpO1xuICAgICAgICBoYXNSZXN1bHRzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIXNpemUoZ3JvdXBPcHRpb25zKSB8fCBvcHRpb25Jbkdyb3VwKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy5zZWFyY2hTdHJhdGVneShkYXRvT3B0aW9uLCB2YWx1ZSwgdGhpcy5sYWJlbEtleSk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKGZhbHNlKTtcbiAgICAgICAgICBoYXNSZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNSZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUga2V5IG9mIHRoZSBvcHRpb24gZ3JvdXAuIEl0IGNhbiBiZSB0aGUgZ3JvdXAgSWQgaWYgZXhpc3RzLCBvciB0aGUgbGFiZWwuXG4gICAqL1xuICBwcml2YXRlIGdldEdyb3VwS2V5KG9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24gJiYgKG9wdGlvblt0aGlzLmlkS2V5XSB8fCBvcHRpb25bdGhpcy5sYWJlbEtleV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWFyY2ggY2hhbmdlcyBhbmQgZmlsdGVyIHRoZSBsaXN0XG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuaXNDb21ibyAmJlxuICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmludGVybmFsU2VhcmNoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsbCgpO1xuICAgICAgICAgICAgdGhpcy5oYXNSZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYXNSZXN1bHRzID0gdGhpcy5zZWFyY2hPcHRpb25zKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2guZW1pdCh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFRlcm0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5kYXRvT3ZlcmxheSAmJiB0aGlzLmRhdG9PdmVybGF5LnNjaGVkdWxlVXBkYXRlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gb3B0aW9uIGNsaWNrIGFuZCBjaGFuZ2UgdGhlIHN0YXRlIGFjY29yZGluZ2x5XG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvT3B0aW9uQ2xpY2sob3B0aW9uczogUXVlcnlMaXN0PERhdG9PcHRpb25Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24gJiYgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIC8qKiBHYXRoZXIgYWxsIHRoZSBjbGlja3MgKi9cbiAgICBjb25zdCBjbGlja3MkID0gb3B0aW9ucy5tYXAob3B0aW9uID0+XG4gICAgICBvcHRpb24uY2xpY2skLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQ6IEV2ZW50KSA9PiAoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIG9wdGlvblxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLyoqIENvbnNpZGVyIGNoYW5nZSBpdCB0byB1c2UgZXZlbnQgZGVsZWdhdGlvbiAqL1xuICAgIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4uY2xpY2tzJCkuc3Vic2NyaWJlKCh7IG9wdGlvbiwgZXZlbnQgfSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuaXNTaW5nbGUgPyB0aGlzLmhhbmRsZVNpbmdsZUNsaWNrKG9wdGlvbikgOiB0aGlzLmhhbmRsZU11bHRpQ2xpY2sob3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChpc0VzY2FwZShldmVudCkgJiYgdGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzRW50ZXIoZXZlbnQpKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXg7XG4gICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLm9wdGlvbnMudG9BcnJheSgpW2luZGV4XTtcbiAgICAgIHRoaXMuaXNTaW5nbGUgPyB0aGlzLmhhbmRsZVNpbmdsZUNsaWNrKGFjdGl2ZSkgOiB0aGlzLmhhbmRsZU11bHRpQ2xpY2soYWN0aXZlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd1VwRG93bihldmVudCkpIHtcbiAgICAgIHRoaXMua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJyk7XG4gICAgICBfc2Nyb2xsVG9PcHRpb24oe1xuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIHBhbmVsLFxuICAgICAgICBhY3RpdmVJdGVtSW5kZXg6IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgsXG4gICAgICAgIGdyb3VwczogdGhpcy5ncm91cHMsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9uc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRXNjYXBlKGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRBbGwoKSB7XG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGRhdG9PcHRpb24uYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTaW5nbGVDbGljayhkYXRvT3B0aW9uOiBEYXRvT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgaWYgKCFkYXRvT3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRvT3B0aW9uLmFjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3T3B0aW9uID0gZGF0b09wdGlvbi5vcHRpb247XG4gICAgdGhpcy5fbW9kZWwgPSBbcmF3T3B0aW9uXTtcbiAgICB0aGlzLm9uQ2hhbmdlKHJhd09wdGlvbik7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aUNsaWNrKGRhdG9PcHRpb246IERhdG9PcHRpb25Db21wb25lbnQpIHtcbiAgICBpZiAoIWRhdG9PcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9ICFkYXRvT3B0aW9uLmFjdGl2ZTtcbiAgICBjb25zdCByYXdPcHRpb24gPSBkYXRvT3B0aW9uLm9wdGlvbjtcbiAgICBpZiAoZGF0b09wdGlvbi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuY29uY2F0KHJhd09wdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKGN1cnJlbnQgPT4gY3VycmVudFt0aGlzLmlkS2V5XSAhPT0gcmF3T3B0aW9uW3RoaXMuaWRLZXldKTtcbiAgICB9XG4gICAgdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUluZmluaXRlU2Nyb2xsKCkge1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpLCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaGVpZ2h0IC0gc2Nyb2xsWTtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gMCB8fCBvZmZzZXQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZldGNoLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gJiYgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gJiYgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQgJiYgdGhpcy5kYXRvT3ZlcmxheS5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ3JvdXAgY29tcG9uZW50IGlzIEFjY29yZGlvblxuICAgKi9cbiAgcHJpdmF0ZSBpc0FjY29yZGlvbkdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmFjY29yZGlvbiAmJiB0aGlzLmFjY29yZGlvbi5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYW4gYXJyYXkgb2YgdGhlIGdyb3VwIGNvbXBvbmVudHNcbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTogTGlzdEdyb3VwQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKSA/IHRoaXMuYWNjb3JkaW9uLmZpcnN0Lmdyb3Vwcy50b0FycmF5KCkgOiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc2FibGVkU3RhdGUoKSB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvO1xuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uYWN0aXZlKSB7XG4gICAgICAgIGRhdG9PcHRpb24uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm5/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
window.coreVersion = '22.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
window.coreVersion = '22.1.1-rc.';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuMS4xLXJjLic7Il19
|