@gipisistemas/ng-core 1.1.5 → 1.1.7
Sign up to get free protection for your applications and to get access to all the features.
- package/bundles/gipisistemas-ng-core.umd.js +350 -191
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +8 -8
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
- package/core/guards/auth.guard.d.ts +3 -3
- package/core/guards/permission.guard.d.ts +3 -3
- package/core/guards/public.guard.d.ts +3 -3
- package/core/models/dto/confirmation.dto.d.ts +1 -1
- package/core/models/dto/dialog.dto.d.ts +4 -4
- package/core/models/dto/menu.dto.d.ts +1 -0
- package/core/services/dialog.service.d.ts +5 -1
- package/core/services/message.service.d.ts +1 -1
- package/core/services/nav.service.d.ts +1 -1
- package/core/services/svg-register.service.d.ts +7 -1
- package/esm2015/core/gipi-components/services/file.service.js +2 -4
- package/esm2015/core/guards/auth.guard.js +13 -14
- package/esm2015/core/guards/permission.guard.js +12 -13
- package/esm2015/core/guards/public.guard.js +12 -13
- package/esm2015/core/models/dto/confirmation.dto.js +1 -5
- package/esm2015/core/models/dto/dialog.dto.js +1 -1
- package/esm2015/core/models/dto/menu.dto.js +2 -1
- package/esm2015/core/services/authentication.service.js +5 -6
- package/esm2015/core/services/breakpoint-observer.service.js +2 -4
- package/esm2015/core/services/confirmation.service.js +2 -4
- package/esm2015/core/services/dialog.service.js +54 -14
- package/esm2015/core/services/message.service.js +3 -5
- package/esm2015/core/services/nav.service.js +2 -4
- package/esm2015/core/services/svg-register.service.js +16 -5
- package/esm2015/shared/components/checkbox/checkbox.component.js +15 -11
- package/esm2015/shared/components/input/input.component.js +1 -1
- package/esm2015/shared/components/input-currency/input-currency.component.js +1 -1
- package/esm2015/shared/components/input-file/input-file.component.js +1 -1
- package/esm2015/shared/components/popover/popover.service.js +6 -7
- package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +1 -1
- package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +1 -1
- package/esm2015/shared/components/select-entity/select-entity.component.js +1 -1
- package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +3 -3
- package/esm2015/shared/components/select-entity-paged/shared/default-options.js +1 -2
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -8
- package/esm2015/shared/components/select-enum/select-enum.component.js +1 -1
- package/esm2015/shared/components/select-month-period/select-month-period.component.js +1 -1
- package/esm2015/shared/components/table/table.component.js +28 -9
- package/esm2015/shared/components/textarea/textarea.component.js +1 -1
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +65 -3
- package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +3 -3
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +1 -1
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +1 -1
- package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +1 -1
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +1 -1
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +1 -1
- package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +1 -1
- package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +1 -1
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
- package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +1 -1
- package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +1 -1
- package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +2 -4
- package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +2 -4
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +3 -3
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +1 -1
- package/esm2015/shared/gipi-components/select/select.component.js +1 -1
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +33 -10
- package/esm2015/shared/gipi-components/tabs/tab/tab.component.js +13 -1
- package/esm2015/shared/gipi-components/tabs/tab-group/tab-group.component.js +18 -4
- package/esm2015/shared/gipi-components/textarea/textarea.component.js +1 -1
- package/esm5/core/gipi-components/services/file.service.js +2 -4
- package/esm5/core/guards/auth.guard.js +13 -14
- package/esm5/core/guards/permission.guard.js +12 -13
- package/esm5/core/guards/public.guard.js +12 -13
- package/esm5/core/models/dto/confirmation.dto.js +2 -4
- package/esm5/core/models/dto/dialog.dto.js +1 -1
- package/esm5/core/models/dto/menu.dto.js +2 -1
- package/esm5/core/services/authentication.service.js +5 -6
- package/esm5/core/services/breakpoint-observer.service.js +2 -4
- package/esm5/core/services/confirmation.service.js +2 -4
- package/esm5/core/services/dialog.service.js +54 -14
- package/esm5/core/services/message.service.js +3 -5
- package/esm5/core/services/nav.service.js +2 -4
- package/esm5/core/services/svg-register.service.js +16 -5
- package/esm5/shared/components/checkbox/checkbox.component.js +15 -11
- package/esm5/shared/components/input/input.component.js +1 -1
- package/esm5/shared/components/input-currency/input-currency.component.js +1 -1
- package/esm5/shared/components/input-file/input-file.component.js +1 -1
- package/esm5/shared/components/popover/popover.service.js +6 -7
- package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +1 -1
- package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +1 -1
- package/esm5/shared/components/select-entity/select-entity.component.js +1 -1
- package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +3 -3
- package/esm5/shared/components/select-entity-paged/shared/default-options.js +1 -2
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -8
- package/esm5/shared/components/select-enum/select-enum.component.js +1 -1
- package/esm5/shared/components/select-month-period/select-month-period.component.js +1 -1
- package/esm5/shared/components/table/table.component.js +28 -9
- package/esm5/shared/components/textarea/textarea.component.js +1 -1
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +66 -3
- package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +3 -3
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +1 -1
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +1 -1
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +1 -1
- package/esm5/shared/gipi-components/form-field/form-field.component.js +1 -1
- package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +1 -1
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +1 -1
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +1 -1
- package/esm5/shared/gipi-components/input-select/input-select.component.js +1 -1
- package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +1 -1
- package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +1 -1
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
- package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +1 -1
- package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +1 -1
- package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +2 -4
- package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +2 -4
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +3 -3
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +1 -1
- package/esm5/shared/gipi-components/select/select.component.js +1 -1
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +38 -10
- package/esm5/shared/gipi-components/tabs/tab/tab.component.js +13 -1
- package/esm5/shared/gipi-components/tabs/tab-group/tab-group.component.js +18 -4
- package/esm5/shared/gipi-components/textarea/textarea.component.js +1 -1
- package/fesm2015/gipisistemas-ng-core.js +344 -193
- package/fesm2015/gipisistemas-ng-core.js.map +1 -1
- package/fesm5/gipisistemas-ng-core.js +355 -196
- package/fesm5/gipisistemas-ng-core.js.map +1 -1
- package/gipisistemas-ng-core.metadata.json +1 -1
- package/package.json +1 -1
- package/shared/components/checkbox/checkbox.component.d.ts +6 -4
- package/shared/components/popover/popover.service.d.ts +1 -1
- package/shared/components/select-entity-paged/shared/default-options.d.ts +2 -2
- package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +0 -1
- package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +10 -2
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +5 -2
- package/shared/gipi-components/tabs/tab/tab.component.d.ts +3 -0
- package/shared/gipi-components/tabs/tab-group/tab-group.component.d.ts +3 -0
@@ -75,7 +75,9 @@ var TableComponent = /** @class */ (function () {
|
|
75
75
|
enumerable: false,
|
76
76
|
configurable: true
|
77
77
|
});
|
78
|
-
TableComponent.prototype.ngOnInit = function () {
|
78
|
+
TableComponent.prototype.ngOnInit = function () {
|
79
|
+
this._expandedRows = [];
|
80
|
+
};
|
79
81
|
TableComponent.prototype.ngAfterViewInit = function () {
|
80
82
|
var _this = this;
|
81
83
|
setTimeout(function () {
|
@@ -182,15 +184,32 @@ var TableComponent = /** @class */ (function () {
|
|
182
184
|
};
|
183
185
|
TableComponent.prototype.toggleExpandRow = function (row) {
|
184
186
|
var index = this._expandedRows.findIndex(function (r) { return r === row; });
|
185
|
-
if (
|
186
|
-
this.
|
187
|
+
if (index < 0) { // Se a linha não estiver expandida
|
188
|
+
if (this.expandableOneRow) {
|
189
|
+
this._expandedRows = [row];
|
190
|
+
}
|
191
|
+
else {
|
192
|
+
this._expandedRows.push(row);
|
193
|
+
}
|
187
194
|
this.rowExpanded.emit(row);
|
188
|
-
return;
|
189
195
|
}
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
196
|
+
else { // Se a linha já estiver expandida
|
197
|
+
var _expandedRowsAux = __spread(this._expandedRows);
|
198
|
+
_expandedRowsAux.splice(index, 1);
|
199
|
+
this._expandedRows = __spread(_expandedRowsAux);
|
200
|
+
this.rowExpanded.emit(null);
|
201
|
+
}
|
202
|
+
// Logica anterior, qualquer problema voltar, pois funcionava bem
|
203
|
+
// const index: number = this._expandedRows.findIndex(r => r === row);
|
204
|
+
// if (ArrayUtil.isEmpty(this._expandedRows) || (index < 0)) {
|
205
|
+
// this._expandedRows = [row];
|
206
|
+
// this.rowExpanded.emit(row);
|
207
|
+
// return;
|
208
|
+
// }
|
209
|
+
// const _expandedRowsAux: T[] = ArrayUtil.clone(this._expandedRows);
|
210
|
+
// _expandedRowsAux.splice(index, 1);
|
211
|
+
// this._expandedRows = ArrayUtil.clone(_expandedRowsAux);
|
212
|
+
// this.rowExpanded.emit(null);
|
194
213
|
};
|
195
214
|
TableComponent.prototype.sortData = function (sort) {
|
196
215
|
if (this.infiniteScroll) {
|
@@ -596,4 +615,4 @@ var TableComponent = /** @class */ (function () {
|
|
596
615
|
return TableComponent;
|
597
616
|
}());
|
598
617
|
export { TableComponent };
|
599
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SyxPQUFPLEVBQW1CLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQXVCLE1BQU0sbUJBQW1CLENBQUM7QUFDcEgsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBZ0J0RjtJQXdISSx3QkFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF0SDVCLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBRXhCLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQUNoQyxvQkFBZSxHQUFRLElBQUksQ0FBQztRQUU1QixzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFtQjVCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFXL0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUz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b0JBQ3BCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUM3RSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUN6QyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7aUJBQ3hGLENBQUM7YUFDTDs7U0FDSixDQUFDO3lDQXlIK0IsTUFBTTtPQXhIMUIsY0FBYyxDQXNjMUI7SUFBRCxxQkFBQztDQUFBLEFBdGNELElBc2NDO1NBdGNZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEhlYWRlclJvd0RlZiwgTWF0UGFnaW5hdG9yLCBNYXRTb3J0LCBNYXRUYWJsZURhdGFTb3VyY2UsIFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFycmF5VXRpbCwgT2JqZWN0VXRpbCwgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5EVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vdGFibGUtY29sdW1uLmR0byc7XG5pbXBvcnQgeyBUYWJsZUdyb3VwSGVhZGVyRFRPIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvZHRvL3RhYmxlLWdyb3VwLWhlYWRlci5kdG8nO1xuaW1wb3J0IHsgVGFibGVQYWdlRXZlbnREVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vdGFibGUtcGFnZS1ldmVudC5kdG8nO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaXRzcy10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcsIGRpc3BsYXk6ICdub25lJyB9KSksXG4gICAgICAgICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkluaXQge1xuXG4gICAgcHVibGljIF9leHBhbmRlZFJvd3M6IFRbXSA9IFtdO1xuXG4gICAgcHVibGljIF9zY3JvbGxIZWlnaHRDYWxjOiBudW1iZXIgPSA0MTA7XG4gICAgcHVibGljIF9pc1BvcG92ZXJIb3ZlcjogYW55ID0gbnVsbDtcbiAgICBwdWJsaWMgX2NvbnRleHRQb3BvdmVyOiBUO1xuICAgIHB1YmxpYyBfZGlzcGxheWVkQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgX2RhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUIHwgVGFibGVHcm91cEhlYWRlckRUTz47XG5cbiAgICBAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pIG1hdFNvcnQ6IE1hdFNvcnQ7XG4gICAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICAgIEBWaWV3Q2hpbGQoJ2Zyb250ZW5kUGFnaW5hdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1hdEZyb250ZW5kUGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gICAgQFZpZXdDaGlsZCgnYmFja2VuZFBhZ2luYXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBtYXRCYWNrZW5kUGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgICBAVmlld0NoaWxkKCdtYXRIZWFkZXJSb3cnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9tYXRIZWFkZXJSb3dSZWY6IFRlbXBsYXRlUmVmPE1hdEhlYWRlclJvd0RlZj47XG4gICAgQFZpZXdDaGlsZCgnZnJvbnRlbmRQYWdpbmF0b3InLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9tYXRGcm9udGVuZFBhZ2luYXRvclJvd1JlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdiYWNrZW5kUGFnaW5hdG9yJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfbWF0QmFja2VuZFBhZ2luYXRvclJvd1JlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2FjdGlvbnMnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWN0aW9uc1JlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKCdhY3Rpb25zUG9wb3ZlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBhY3Rpb25zUG9wb3ZlclJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKCdmb290ZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZm9vdGVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2V4cGFuZGVkJywgeyBzdGF0aWM6IGZhbHNlIH0pIGV4cGFuZGVkUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwSGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGdyb3VwSGVhZGVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2dyb3VwRm9vdGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGdyb3VwRm9vdGVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgc2hhZG93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5zOiBUYWJsZUNvbHVtbkRUT1tdID0gW107XG5cbiAgICBwcml2YXRlIF9kYXRhVmFsdWU6IChUIHwgVGFibGVHcm91cEhlYWRlckRUTylbXTtcbiAgICBASW5wdXQoKSBnZXQgZGF0YSgpOiAoVCB8IFRhYmxlR3JvdXBIZWFkZXJEVE8pW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVZhbHVlO1xuICAgIH1cbiAgICBzZXQgZGF0YShkYXRhOiAoVCB8IFRhYmxlR3JvdXBIZWFkZXJEVE8pW10pIHtcbiAgICAgICAgdGhpcy5fZGF0YVZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy5fZGF0YVZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBwYWdpbmF0b3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGJhY2tlbmRQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBhZ2VJbmRleDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvckxlbmd0aDogbnVtYmVyID0gMDtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBhZ2VTaXplOiBudW1iZXIgPSAxMDtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvclBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDIwLCAzMF07XG5cbiAgICBASW5wdXQoKSBzaG93UGFnZVNpemVPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBleHBhbmRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGNvbHVtbkluaXRpYWw6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGNvbHVtbkZpbmFsOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBoZWFkZXJTdGlja3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGdyb3VwQnlDb2x1bW46IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGdyb3VwSGVhZGVyU3RpY2t5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBncm91cFN0YXJ0RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGhpZ2hsaWdodFJvd0ZuOiAocm93OiBUIHwgVGFibGVHcm91cEhlYWRlckRUTykgPT4gYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzY3JvbGxEZWxheTogbnVtYmVyID0gMTAwMDtcblxuICAgIEBJbnB1dCgpIHNjcm9sbE9mZnNldDogbnVtYmVyID0gMTAwMDtcblxuICAgIEBJbnB1dCgpIHNjcm9sbEhlaWd0aDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgnY29sdW1uRXhwYW5kYWJsZUZpeGVkJykgc2hvd0NvbHVtbkV4cGFuZGFibGVGaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZXhwYW5kYWJsZU9uZVJvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaWdub3JlQ2hpbGRyZW5FeHBhbmRSb3c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNvcnQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNsZWFyU29ydDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNvcnRBY3RpdmU6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcblxuICAgIEBPdXRwdXQoKSByb3dFeHBhbmRlZDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBkYXRhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8KFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPKVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG4gICAgQE91dHB1dCgpIHBhZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VFdmVudERUTz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHJvd0hvdmVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBnZXQgbWF0VGFibGVIZWlndGgoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgbGV0IGhlYWRlclJvd0hlaWdodDogbnVtYmVyO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX21hdEhlYWRlclJvd1JlZikpIHtcbiAgICAgICAgICAgIGhlYWRlclJvd0hlaWdodCA9ICh0aGlzLl9tYXRIZWFkZXJSb3dSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFnaW5hdG9yUm93SGVpZ2h0OiBudW1iZXI7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRvclJlZiA9IHRoaXMuYmFja2VuZFBhZ2luYXRpb24gPyB0aGlzLl9tYXRCYWNrZW5kUGFnaW5hdG9yUm93UmVmIDogdGhpcy5fbWF0RnJvbnRlbmRQYWdpbmF0b3JSb3dSZWY7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwocGFnaW5hdG9yUmVmKSkge1xuICAgICAgICAgICAgcGFnaW5hdG9yUm93SGVpZ2h0ID0gKHBhZ2luYXRvclJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdEhlYWRlcndIZWlnaHQ6IG51bWJlciA9IGhlYWRlclJvd0hlaWdodCB8fCA2MDtcbiAgICAgICAgY29uc3QgbWF0UGFnaW5hdG9ySGVpZ2h0OiBudW1iZXIgPSBwYWdpbmF0b3JSb3dIZWlnaHQgfHwgNTc7XG5cbiAgICAgICAgY29uc3QgcGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnaW5hdG9yUGFnZVNpemUgJiYgKHRoaXMucGFnaW5hdG9yUGFnZVNpemUgPD0gMTApID8gdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSA6IDEwO1xuICAgICAgICBjb25zdCBzZXRIZWlndGg6IGJvb2xlYW4gPSB0aGlzLmhlYWRlclN0aWNreSAmJiAodGhpcy5kYXRhLmxlbmd0aCA+IHBhZ2VTaXplKTtcblxuICAgICAgICByZXR1cm4gb2Yoc2V0SGVpZ3RoID8gYCR7KCg1NyAqIHBhZ2VTaXplKSArIG1hdEhlYWRlcndIZWlnaHQgKyBtYXRQYWdpbmF0b3JIZWlnaHQpfXB4YCA6ICdhdXRvJyk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUpIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2RhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5tYXRTb3J0O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmICF0aGlzLmJhY2tlbmRQYWdpbmF0aW9uICYmICF0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRGcm9udGVuZFBhZ2luYXRvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvciAmJiAodGhpcy5iYWNrZW5kUGFnaW5hdGlvbiB8fCB0aGlzLmluZmluaXRlU2Nyb2xsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlKHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yUGFnZVNpemUsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRvclBhZ2VTaXplT3B0aW9uczogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiAwLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VJbmRleDogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYWN0aW9uc1BvcG92ZXJSZWYpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGV4dFBvcG92ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzUG9wb3ZlckhvdmVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoMCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwb3BvdmVyOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZS1wb3BvdmVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwb3BvdmVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVEYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBsZXQgY29sdW1uczogc3RyaW5nW10gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy52aXNpYmxlKS5tYXAoYyA9PiBjLnByb3BlcnR5KTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmV4cGFuZGVkUmVmKSkge1xuICAgICAgICAgICAgY29sdW1ucyA9IFsnZXhwYW5kZWRDb2x1bW4nLCAuLi5jb2x1bW5zXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYWN0aW9uc1JlZikpIHtcbiAgICAgICAgICAgIGNvbHVtbnMgPSBbLi4uY29sdW1ucywgJ2FjdGlvbnNDb2x1bW4nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zID0gY29sdW1ucztcblxuICAgICAgICBpZiAodGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgbGV0IGRhdGFBbGw6IChUIHwgVGFibGVHcm91cEhlYWRlckRUTylbXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2RhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFBbGwgPSBBcnJheVV0aWwuY2xvbmUodGhpcy5fZGF0YVNvdXJjZS5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGFBbGwucHVzaCguLi50aGlzLmRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShbXSk7XG4gICAgICAgICAgICBpZiAoIVN0cmluZ1V0aWwuaXNFbXB0eSh0aGlzLmdyb3VwQnlDb2x1bW4pICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmdyb3VwSGVhZGVyUmVmKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZ2VuZXJldGVHcm91cHNCeUNvbHVtbihkYXRhQWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kYXRhID0gZGF0YUFsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YUFsbDtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB0aGlzLmNhbGNTY3JvbGxIZWlnaHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKFtdKTtcbiAgICAgICAgICAgIGlmICghU3RyaW5nVXRpbC5pc0VtcHR5KHRoaXMuZ3JvdXBCeUNvbHVtbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZ3JvdXBIZWFkZXJSZWYpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5nZW5lcmV0ZUdyb3Vwc0J5Q29sdW1uKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZGF0YVNvdXJjZS5kYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5tYXRTb3J0O1xuICAgICAgICAgICAgdGhpcy5zZXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgIXRoaXMuYmFja2VuZFBhZ2luYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5tYXRGcm9udGVuZFBhZ2luYXRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmICghdGhpcy5ncm91cFN0YXJ0RXhwYW5kZWQgJiYgKHRoaXMuZ3JvdXBIZWFkZXJSZWYgfHwgKHRoaXMuZXhwYW5kYWJsZSAmJiB0aGlzLmV4cGFuZGVkUmVmKSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMuX2RhdGFTb3VyY2UuZGF0YSkpIHtcbiAgICAgICAgLy8gdGhpcy5fZGF0YVNvdXJjZS5kYXRhLmZvckVhY2gocm93ID0+IHRoaXMuYWRkQ29sbGFwc2Uocm93KSk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBjYWxjU2Nyb2xsSGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBpZiAoKHRoaXMuX2RhdGFTb3VyY2UgJiYgKHRoaXMuX2RhdGFTb3VyY2UuZGF0YS5sZW5ndGggPiAwKSkgJiYgKE1hdGguZmxvb3IodGhpcy5fc2Nyb2xsSGVpZ2h0Q2FsYykgPD0gNzAwKSkge1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsSGVpZ2h0Q2FsYyA9IDEzMCArICh0aGlzLl9kYXRhU291cmNlLmRhdGEubGVuZ3RoICogNDgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QYWdlKHBhZ2VFdmVudDogVGFibGVQYWdlRXZlbnREVE8pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSA9IHBhZ2VFdmVudC5wYWdlU2l6ZTtcbiAgICAgICAgcGFnZUV2ZW50LnBhZ2luYXRvclBhZ2VTaXplT3B0aW9ucyA9IEFycmF5VXRpbC5pc0VtcHR5KHBhZ2VFdmVudC5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMpID8gdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMgOiBwYWdlRXZlbnQucGFnaW5hdG9yUGFnZVNpemVPcHRpb25zO1xuICAgICAgICB0aGlzLnBhZ2UuZW1pdChwYWdlRXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0V4cGFuZGVkUm93KHJvdzogVCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZXhwYW5kZWRSb3dzKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLl9leHBhbmRlZFJvd3MuZmluZEluZGV4KHIgPT4gciA9PT0gcm93KTtcbiAgICAgICAgcmV0dXJuIG9mKGluZGV4ID49IDApO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVFeHBhbmRSb3cocm93OiBUKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLl9leHBhbmRlZFJvd3MuZmluZEluZGV4KHIgPT4gciA9PT0gcm93KTtcbiAgICAgICAgaWYgKEFycmF5VXRpbC5pc0VtcHR5KHRoaXMuX2V4cGFuZGVkUm93cykgfHwgKGluZGV4IDwgMCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkUm93cyA9IFtyb3ddO1xuICAgICAgICAgICAgdGhpcy5yb3dFeHBhbmRlZC5lbWl0KHJvdyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfZXhwYW5kZWRSb3dzQXV4OiBUW10gPSBBcnJheVV0aWwuY2xvbmUodGhpcy5fZXhwYW5kZWRSb3dzKTtcbiAgICAgICAgX2V4cGFuZGVkUm93c0F1eC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLl9leHBhbmRlZFJvd3MgPSBBcnJheVV0aWwuY2xvbmUoX2V4cGFuZGVkUm93c0F1eCk7XG4gICAgICAgIHRoaXMucm93RXhwYW5kZWQuZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBzb3J0RGF0YShzb3J0OiBTb3J0KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KFtdKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKFtdKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY1Njcm9sbEhlaWdodCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblBhZ2Uoe1xuICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yUGFnZVNpemUsXG4gICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICBsZW5ndGg6IDAsXG4gICAgICAgICAgICBwcmV2aW91c1BhZ2VJbmRleDogMCxcbiAgICAgICAgICAgIHBhZ2luYXRvclBhZ2VTaXplT3B0aW9uczogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnMsXG4gICAgICAgICAgICBzb3J0OiBzb3J0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93UG9wb3ZlcihldmVudDogTW91c2VFdmVudCwgZGF0YTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXI6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlLXBvcG92ZXInKTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwb3BvdmVyKSkge1xuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tUmVjdFBvcG92ZXIgPSBwb3BvdmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21SZWN0Um93ID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpLmNoaWxkcmVuO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb21SZWN0UG9wb3ZlciAmJiBkb21SZWN0Um93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IGAkeyhkb21SZWN0Um93LnRvcCArIGRvbVJlY3RSb3cuaGVpZ2h0KSAtIDF9cHhgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnRQb3NpdGlvbjogbnVtYmVyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbmRQb3NpdGlvbjogbnVtYmVyID0gMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uSW5pdGlhbCAmJiAodGhpcy5jb2x1bW5Jbml0aWFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsc1t0aGlzLmNvbHVtbkluaXRpYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5pdGlhbCBjb2x1bW4gdW5kZWZpbmVkIG9yIG51bGwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGNlbGxzW3RoaXMuY29sdW1uSW5pdGlhbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGRvbVJlY3RSb3cubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uRmluYWwgJiYgKHRoaXMuY29sdW1uRmluYWwgPj0gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGxzW3RoaXMuY29sdW1uRmluYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmluYWwgY29sdW1uIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gY2VsbHNbdGhpcy5jb2x1bW5GaW5hbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIGRvbVJlY3RQb3BvdmVyLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IGRvbVJlY3RSb3cucmlnaHQgLSBkb21SZWN0UG9wb3Zlci53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmNsaWVudFggPiBzdGFydFBvc2l0aW9uICsgMTUgJiYgZXZlbnQuY2xpZW50WCA8IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggLSAxNX1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYIDw9IHN0YXJ0UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gYCR7c3RhcnRQb3NpdGlvbn1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYID49IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2VuZFBvc2l0aW9ufXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucm93SG92ZXIuZW1pdChkYXRhKTtcbiAgICAgICAgdGhpcy5fY29udGV4dFBvcG92ZXIgPSBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgIHNob3dQb3BvdmVyKGV2ZW50OiBNb3VzZUV2ZW50LCBkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9wb3ZlcjogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUtcG9wb3ZlcicpO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHBvcG92ZXIpKSB7XG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21SZWN0UG9wb3ZlciA9IHBvcG92ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9tUmVjdFJvdyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZWxscyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxUYWJsZVJvd0VsZW1lbnQpLmNoaWxkcmVuO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRvbVJlY3RQb3BvdmVyICYmIGRvbVJlY3RSb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IGAkeyhkb21SZWN0Um93LnRvcCArIGRvbVJlY3RSb3cuaGVpZ2h0KSAtIDF9cHhgO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydFBvc2l0aW9uOiBudW1iZXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZW5kUG9zaXRpb246IG51bWJlciA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uSW5pdGlhbCAmJiAodGhpcy5jb2x1bW5Jbml0aWFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGxzW3RoaXMuY29sdW1uSW5pdGlhbF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luaXRpYWwgY29sdW1uIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gY2VsbHNbdGhpcy5jb2x1bW5Jbml0aWFsXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGRvbVJlY3RSb3cubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkZpbmFsICYmICh0aGlzLmNvbHVtbkZpbmFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNlbGxzW3RoaXMuY29sdW1uRmluYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaW5hbCBjb2x1bW4gdW5kZWZpbmVkIG9yIG51bGwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gY2VsbHNbdGhpcy5jb2x1bW5GaW5hbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtIGRvbVJlY3RQb3BvdmVyLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBkb21SZWN0Um93LnJpZ2h0IC0gZG9tUmVjdFBvcG92ZXIud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5jbGllbnRYID4gc3RhcnRQb3NpdGlvbiArIDE1ICYmIGV2ZW50LmNsaWVudFggPCBlbmRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggLSAxNX1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNsaWVudFggPD0gc3RhcnRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke3N0YXJ0UG9zaXRpb259cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYID49IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gYCR7ZW5kUG9zaXRpb259cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3dIb3Zlci5lbWl0KGRhdGEpO1xuICAgICAgICB0aGlzLl9jb250ZXh0UG9wb3ZlciA9IGRhdGE7XG4gICAgfVxuICAgICovXG5cbiAgICBjbG9zZVBvcG92ZXIodGltZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIG9mKG51bGwpLnBpcGUoZGVsYXkodGltZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2lzUG9wb3ZlckhvdmVyKSAmJiAhdGhpcy5faXNQb3BvdmVySG92ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2lzUG9wb3ZlckhvdmVyKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5hY3Rpb25zUG9wb3ZlclJlZikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9wb3ZlcjogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUtcG9wb3ZlcicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHBvcG92ZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb250ZXh0UG9wb3ZlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNQb3BvdmVySG92ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZGF0YTogYW55LCBzb3J0SGVhZGVySWQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGFbc29ydEhlYWRlcklkXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVtzb3J0SGVhZGVySWRdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YVtzb3J0SGVhZGVySWRdO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGdyb3VwIGhlYWRlclxuICAgIGdlbmVyZXRlR3JvdXBzQnlDb2x1bW4oZGF0YTogYW55W10pOiBUYWJsZUdyb3VwSGVhZGVyRFRPW10ge1xuICAgICAgICBjb25zdCBncm91cHM6IHt9ID0gZGF0YS5yZWR1Y2UoKGdyb3VwLCByb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFDb2x1bW46IHN0cmluZyA9IHJvd1t0aGlzLmdyb3VwQnlDb2x1bW5dLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoIWdyb3VwW2RhdGFDb2x1bW5dKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBbZGF0YUNvbHVtbl0gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwW2RhdGFDb2x1bW5dLnB1c2gocm93KTtcbiAgICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cHMpLm1hcChncm91cFZhbHVlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFibGVHcm91cEhlYWRlckRUTyhncm91cFZhbHVlLCBncm91cHNbZ3JvdXBWYWx1ZV0sIGdyb3Vwc1tncm91cFZhbHVlXS5sZW5ndGgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRIaWdobGlnaHRSb3cocm93OiBUIHwgVGFibGVHcm91cEhlYWRlckRUTyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHJvdykpIHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5oaWdobGlnaHRSb3dGbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oaWdobGlnaHRSb3dGbihyb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRJbmRleFJvdyhyb3c6IFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9kYXRhU291cmNlKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZGF0YVNvdXJjZS5kYXRhKSAmJiAhT2JqZWN0VXRpbC5pc051bGwocm93KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgociA9PiByID09PSByb3cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gaW5maW5pdGUgc2Nyb2xsXG4gICAgaGFzTW9yZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLl9kYXRhU291cmNlIHx8ICh0aGlzLl9kYXRhU291cmNlLmRhdGEubGVuZ3RoIDwgdGhpcy5wYWdpbmF0b3JMZW5ndGgpO1xuICAgIH1cblxuICAgIGhhbmRsZVNjcm9sbChzY3JvbGxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoc2Nyb2xsZWQgJiYgdGhpcy5oYXNNb3JlKCkpIHtcbiAgICAgICAgICAgIHRoaXMub25QYWdlKHtcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yUGFnZUluZGV4LFxuICAgICAgICAgICAgICAgIGxlbmd0aDogdGhpcy5wYWdpbmF0b3JMZW5ndGgsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNQYWdlSW5kZXg6IHRoaXMucGFnaW5hdG9yUGFnZUluZGV4LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yUGFnZUluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
618
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SyxPQUFPLEVBQW1CLFlBQVksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQXVCLE1BQU0sbUJBQW1CLENBQUM7QUFDcEgsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBZ0J0RjtJQXdISSx3QkFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF0SDVCLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBRXhCLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQUNoQyxvQkFBZSxHQUFRLElBQUksQ0FBQztRQUU1QixzQkFBaUIsR0FBVSxFQUFFLENBQUM7UUFtQjVCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFXL0IsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUz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RTtrQ0FBYSxZQUFZO3NEQUF1RDtJQUMvRTtRQUFULE1BQU0sRUFBRTtrQ0FBTyxZQUFZO2dEQUF5QztJQUMzRDtRQUFULE1BQU0sRUFBRTtrQ0FBVyxZQUFZO29EQUEyQjtJQWpHbEQsY0FBYztRQVoxQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsWUFBWTtZQUN0Qix5bmtCQUFxQztZQUVyQyxVQUFVLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLGNBQWMsRUFBRTtvQkFDcEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQzdFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ3pDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztpQkFDeEYsQ0FBQzthQUNMOztTQUNKLENBQUM7eUNBeUgrQixNQUFNO09BeEgxQixjQUFjLENBMGQxQjtJQUFELHFCQUFDO0NBQUEsQUExZEQsSUEwZEM7U0ExZFksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SGVhZGVyUm93RGVmLCBNYXRQYWdpbmF0b3IsIE1hdFNvcnQsIE1hdFRhYmxlRGF0YVNvdXJjZSwgU29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXJyYXlVdGlsLCBPYmplY3RVdGlsLCBTdHJpbmdVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkRUTyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2R0by90YWJsZS1jb2x1bW4uZHRvJztcbmltcG9ydCB7IFRhYmxlR3JvdXBIZWFkZXJEVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vdGFibGUtZ3JvdXAtaGVhZGVyLmR0byc7XG5pbXBvcnQgeyBUYWJsZVBhZ2VFdmVudERUTyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2R0by90YWJsZS1wYWdlLWV2ZW50LmR0byc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpdHNzLXRhYmxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJywgZGlzcGxheTogJ25vbmUnIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgX2V4cGFuZGVkUm93czogVFtdID0gW107XG5cbiAgICBwdWJsaWMgX3Njcm9sbEhlaWdodENhbGM6IG51bWJlciA9IDQxMDtcbiAgICBwdWJsaWMgX2lzUG9wb3ZlckhvdmVyOiBhbnkgPSBudWxsO1xuICAgIHB1YmxpYyBfY29udGV4dFBvcG92ZXI6IFQ7XG4gICAgcHVibGljIF9kaXNwbGF5ZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyBfZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPPjtcblxuICAgIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgbWF0U29ydDogTWF0U29ydDtcbiAgICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgbWF0UGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gICAgQFZpZXdDaGlsZCgnZnJvbnRlbmRQYWdpbmF0b3InLCB7IHN0YXRpYzogZmFsc2UgfSkgbWF0RnJvbnRlbmRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgICBAVmlld0NoaWxkKCdiYWNrZW5kUGFnaW5hdG9yJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1hdEJhY2tlbmRQYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcblxuICAgIEBWaWV3Q2hpbGQoJ21hdEhlYWRlclJvdycsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgX21hdEhlYWRlclJvd1JlZjogVGVtcGxhdGVSZWY8TWF0SGVhZGVyUm93RGVmPjtcbiAgICBAVmlld0NoaWxkKCdmcm9udGVuZFBhZ2luYXRvcicsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgX21hdEZyb250ZW5kUGFnaW5hdG9yUm93UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBWaWV3Q2hpbGQoJ2JhY2tlbmRQYWdpbmF0b3InLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIF9tYXRCYWNrZW5kUGFnaW5hdG9yUm93UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgnYWN0aW9ucycsIHsgc3RhdGljOiBmYWxzZSB9KSBhY3Rpb25zUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2FjdGlvbnNQb3BvdmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFjdGlvbnNQb3BvdmVyUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2Zvb3RlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBmb290ZXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZCgnZXhwYW5kZWQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZXhwYW5kZWRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZCgnZ3JvdXBIZWFkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZ3JvdXBIZWFkZXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZCgnZ3JvdXBGb290ZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgZ3JvdXBGb290ZXJSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBzaGFkb3c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uRFRPW10gPSBbXTtcblxuICAgIHByaXZhdGUgX2RhdGFWYWx1ZTogKFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPKVtdO1xuICAgIEBJbnB1dCgpIGdldCBkYXRhKCk6IChUIHwgVGFibGVHcm91cEhlYWRlckRUTylbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhVmFsdWU7XG4gICAgfVxuICAgIHNldCBkYXRhKGRhdGE6IChUIHwgVGFibGVHcm91cEhlYWRlckRUTylbXSkge1xuICAgICAgICB0aGlzLl9kYXRhVmFsdWUgPSBkYXRhO1xuICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLl9kYXRhVmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHBhZ2luYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgYmFja2VuZFBhZ2luYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgcGFnaW5hdG9yUGFnZUluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgcGFnaW5hdG9yTGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gICAgQElucHV0KCkgcGFnaW5hdG9yUGFnZVNpemU6IG51bWJlciA9IDEwO1xuXG4gICAgQElucHV0KCkgcGFnaW5hdG9yUGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsxMCwgMjAsIDMwXTtcblxuICAgIEBJbnB1dCgpIHNob3dQYWdlU2l6ZU9wdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGV4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sdW1uSW5pdGlhbDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgY29sdW1uRmluYWw6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGhlYWRlclN0aWNreTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZ3JvdXBCeUNvbHVtbjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgZ3JvdXBIZWFkZXJTdGlja3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGdyb3VwU3RhcnRFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgaGlnaGxpZ2h0Um93Rm46IChyb3c6IFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPKSA9PiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNjcm9sbERlbGF5OiBudW1iZXIgPSAxMDAwO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsT2Zmc2V0OiBudW1iZXIgPSAxMDAwO1xuXG4gICAgQElucHV0KCkgc2Nyb2xsSGVpZ3RoOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpc0ZpbHRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCdjb2x1bW5FeHBhbmRhYmxlRml4ZWQnKSBzaG93Q29sdW1uRXhwYW5kYWJsZUZpeGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBleHBhbmRhYmxlT25lUm93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpZ25vcmVDaGlsZHJlbkV4cGFuZFJvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgc29ydDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgY2xlYXJTb3J0OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc29ydEFjdGl2ZTogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xuXG4gICAgQE91dHB1dCgpIHJvd0V4cGFuZGVkOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGRhdGFDaGFuZ2U6IEV2ZW50RW1pdHRlcjwoVCB8IFRhYmxlR3JvdXBIZWFkZXJEVE8pW10+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTtcbiAgICBAT3V0cHV0KCkgcGFnZTogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZUV2ZW50RFRPPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcm93SG92ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIGdldCBtYXRUYWJsZUhlaWd0aCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBsZXQgaGVhZGVyUm93SGVpZ2h0OiBudW1iZXI7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fbWF0SGVhZGVyUm93UmVmKSkge1xuICAgICAgICAgICAgaGVhZGVyUm93SGVpZ2h0ID0gKHRoaXMuX21hdEhlYWRlclJvd1JlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYWdpbmF0b3JSb3dIZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgY29uc3QgcGFnaW5hdG9yUmVmID0gdGhpcy5iYWNrZW5kUGFnaW5hdGlvbiA/IHRoaXMuX21hdEJhY2tlbmRQYWdpbmF0b3JSb3dSZWYgOiB0aGlzLl9tYXRGcm9udGVuZFBhZ2luYXRvclJvd1JlZjtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwYWdpbmF0b3JSZWYpKSB7XG4gICAgICAgICAgICBwYWdpbmF0b3JSb3dIZWlnaHQgPSAocGFnaW5hdG9yUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0SGVhZGVyd0hlaWdodDogbnVtYmVyID0gaGVhZGVyUm93SGVpZ2h0IHx8IDYwO1xuICAgICAgICBjb25zdCBtYXRQYWdpbmF0b3JIZWlnaHQ6IG51bWJlciA9IHBhZ2luYXRvclJvd0hlaWdodCB8fCA1NztcblxuICAgICAgICBjb25zdCBwYWdlU2l6ZTogbnVtYmVyID0gdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSAmJiAodGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSA8PSAxMCkgPyB0aGlzLnBhZ2luYXRvclBhZ2VTaXplIDogMTA7XG4gICAgICAgIGNvbnN0IHNldEhlaWd0aDogYm9vbGVhbiA9IHRoaXMuaGVhZGVyU3RpY2t5ICYmICh0aGlzLmRhdGEubGVuZ3RoID4gcGFnZVNpemUpO1xuXG4gICAgICAgIHJldHVybiBvZihzZXRIZWlndGggPyBgJHsoKDU3ICogcGFnZVNpemUpICsgbWF0SGVhZGVyd0hlaWdodCArIG1hdFBhZ2luYXRvckhlaWdodCl9cHhgIDogJ2F1dG8nKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kZWRSb3dzID0gW107XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgIXRoaXMuYmFja2VuZFBhZ2luYXRpb24gJiYgIXRoaXMuaW5maW5pdGVTY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdEZyb250ZW5kUGFnaW5hdG9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmICh0aGlzLmJhY2tlbmRQYWdpbmF0aW9uIHx8IHRoaXMuaW5maW5pdGVTY3JvbGwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblBhZ2Uoe1xuICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3JQYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5hdG9yUGFnZVNpemVPcHRpb25zOiB0aGlzLnBhZ2luYXRvclBhZ2VTaXplT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IDAsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUGFnZUluZGV4OiAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5hY3Rpb25zUG9wb3ZlclJlZikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb250ZXh0UG9wb3ZlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNQb3BvdmVySG92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigwKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBvcG92ZXI6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlLXBvcG92ZXInKTtcbiAgICAgICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHBvcG92ZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEYXRhU291cmNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZURhdGFTb3VyY2UoKTogdm9pZCB7XG4gICAgICAgIGxldCBjb2x1bW5zOiBzdHJpbmdbXSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLnZpc2libGUpLm1hcChjID0+IGMucHJvcGVydHkpO1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZXhwYW5kZWRSZWYpKSB7XG4gICAgICAgICAgICBjb2x1bW5zID0gWydleHBhbmRlZENvbHVtbicsIC4uLmNvbHVtbnNdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5hY3Rpb25zUmVmKSkge1xuICAgICAgICAgICAgY29sdW1ucyA9IFsuLi5jb2x1bW5zLCAnYWN0aW9uc0NvbHVtbiddO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbHVtbnMgPSBjb2x1bW5zO1xuXG4gICAgICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICBsZXQgZGF0YUFsbDogKFQgfCBUYWJsZUdyb3VwSGVhZGVyRFRPKVtdID0gW107XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc0ZpbHRlcmluZykge1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUFsbCA9IEFycmF5VXRpbC5jbG9uZSh0aGlzLl9kYXRhU291cmNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZGF0YUFsbC5wdXNoKC4uLnRoaXMuZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKFtdKTtcbiAgICAgICAgICAgIGlmICghU3RyaW5nVXRpbC5pc0VtcHR5KHRoaXMuZ3JvdXBCeUNvbHVtbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZ3JvdXBIZWFkZXJSZWYpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5nZW5lcmV0ZUdyb3Vwc0J5Q29sdW1uKGRhdGFBbGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlLmRhdGEgPSBkYXRhQWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhQWxsO1xuICAgICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMuY2FsY1Njcm9sbEhlaWdodCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoW10pO1xuICAgICAgICAgICAgaWYgKCFTdHJpbmdVdGlsLmlzRW1wdHkodGhpcy5ncm91cEJ5Q29sdW1uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5ncm91cEhlYWRlclJlZikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlLmRhdGEgPSB0aGlzLmdlbmVyZXRlR3JvdXBzQnlDb2x1bW4odGhpcy5kYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLl9kYXRhU291cmNlLmRhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XG4gICAgICAgICAgICB0aGlzLnNldFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRvciAmJiAhdGhpcy5iYWNrZW5kUGFnaW5hdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdEZyb250ZW5kUGFnaW5hdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWYgKCF0aGlzLmdyb3VwU3RhcnRFeHBhbmRlZCAmJiAodGhpcy5ncm91cEhlYWRlclJlZiB8fCAodGhpcy5leHBhbmRhYmxlICYmIHRoaXMuZXhwYW5kZWRSZWYpKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5fZGF0YVNvdXJjZS5kYXRhKSkge1xuICAgICAgICAvLyB0aGlzLl9kYXRhU291cmNlLmRhdGEuZm9yRWFjaChyb3cgPT4gdGhpcy5hZGRDb2xsYXBzZShyb3cpKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIGNhbGNTY3JvbGxIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIGlmICgodGhpcy5fZGF0YVNvdXJjZSAmJiAodGhpcy5fZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA+IDApKSAmJiAoTWF0aC5mbG9vcih0aGlzLl9zY3JvbGxIZWlnaHRDYWxjKSA8PSA3MDApKSB7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxIZWlnaHRDYWxjID0gMTMwICsgKHRoaXMuX2RhdGFTb3VyY2UuZGF0YS5sZW5ndGggKiA0OCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblBhZ2UocGFnZUV2ZW50OiBUYWJsZVBhZ2VFdmVudERUTyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRvclBhZ2VTaXplID0gcGFnZUV2ZW50LnBhZ2VTaXplO1xuICAgICAgICBwYWdlRXZlbnQucGFnaW5hdG9yUGFnZVNpemVPcHRpb25zID0gQXJyYXlVdGlsLmlzRW1wdHkocGFnZUV2ZW50LnBhZ2luYXRvclBhZ2VTaXplT3B0aW9ucykgPyB0aGlzLnBhZ2luYXRvclBhZ2VTaXplT3B0aW9ucyA6IHBhZ2VFdmVudC5wYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnM7XG4gICAgICAgIHRoaXMucGFnZS5lbWl0KHBhZ2VFdmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXhwYW5kZWRSb3cocm93OiBUKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGlmIChBcnJheVV0aWwuaXNFbXB0eSh0aGlzLl9leHBhbmRlZFJvd3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuX2V4cGFuZGVkUm93cy5maW5kSW5kZXgociA9PiByID09PSByb3cpO1xuICAgICAgICByZXR1cm4gb2YoaW5kZXggPj0gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZUV4cGFuZFJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuX2V4cGFuZGVkUm93cy5maW5kSW5kZXgociA9PiByID09PSByb3cpO1xuXG4gICAgICAgIGlmIChpbmRleCA8IDApIHsgLy8gU2UgYSBsaW5oYSBuw6NvIGVzdGl2ZXIgZXhwYW5kaWRhXG4gICAgICAgICAgICBpZiAodGhpcy5leHBhbmRhYmxlT25lUm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kZWRSb3dzID0gW3Jvd107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm93RXhwYW5kZWQuZW1pdChyb3cpO1xuICAgICAgICB9IGVsc2UgeyAvLyBTZSBhIGxpbmhhIGrDoSBlc3RpdmVyIGV4cGFuZGlkYVxuICAgICAgICAgICAgY29uc3QgX2V4cGFuZGVkUm93c0F1eDogVFtdID0gWy4uLnRoaXMuX2V4cGFuZGVkUm93c107XG4gICAgICAgICAgICBfZXhwYW5kZWRSb3dzQXV4LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLl9leHBhbmRlZFJvd3MgPSBbLi4uX2V4cGFuZGVkUm93c0F1eF07XG4gICAgICAgICAgICB0aGlzLnJvd0V4cGFuZGVkLmVtaXQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMb2dpY2EgYW50ZXJpb3IsIHF1YWxxdWVyIHByb2JsZW1hIHZvbHRhciwgcG9pcyBmdW5jaW9uYXZhIGJlbVxuICAgICAgICAvLyBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5fZXhwYW5kZWRSb3dzLmZpbmRJbmRleChyID0+IHIgPT09IHJvdyk7XG4gICAgICAgIC8vIGlmIChBcnJheVV0aWwuaXNFbXB0eSh0aGlzLl9leHBhbmRlZFJvd3MpIHx8IChpbmRleCA8IDApKSB7XG4gICAgICAgIC8vICAgICB0aGlzLl9leHBhbmRlZFJvd3MgPSBbcm93XTtcbiAgICAgICAgLy8gICAgIHRoaXMucm93RXhwYW5kZWQuZW1pdChyb3cpO1xuICAgICAgICAvLyAgICAgcmV0dXJuO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgLy8gY29uc3QgX2V4cGFuZGVkUm93c0F1eDogVFtdID0gQXJyYXlVdGlsLmNsb25lKHRoaXMuX2V4cGFuZGVkUm93cyk7XG4gICAgICAgIC8vIF9leHBhbmRlZFJvd3NBdXguc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgLy8gdGhpcy5fZXhwYW5kZWRSb3dzID0gQXJyYXlVdGlsLmNsb25lKF9leHBhbmRlZFJvd3NBdXgpO1xuICAgICAgICAvLyB0aGlzLnJvd0V4cGFuZGVkLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgc29ydERhdGEoc29ydDogU29ydCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbmZpbml0ZVNjcm9sbCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdChbXSk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShbXSk7XG4gICAgICAgICAgICB0aGlzLmNhbGNTY3JvbGxIZWlnaHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25QYWdlKHtcbiAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvclBhZ2VTaXplLFxuICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgbGVuZ3RoOiAwLFxuICAgICAgICAgICAgcHJldmlvdXNQYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICBwYWdpbmF0b3JQYWdlU2l6ZU9wdGlvbnM6IHRoaXMucGFnaW5hdG9yUGFnZVNpemVPcHRpb25zLFxuICAgICAgICAgICAgc29ydDogc29ydFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd1BvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3BvdmVyOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZS1wb3BvdmVyJyk7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwocG9wb3ZlcikpIHtcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbVJlY3RQb3BvdmVyID0gcG9wb3Zlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tUmVjdFJvdyA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MVGFibGVSb3dFbGVtZW50KS5jaGlsZHJlbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZG9tUmVjdFBvcG92ZXIgJiYgZG9tUmVjdFJvdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSBgJHsoZG9tUmVjdFJvdy50b3AgKyBkb21SZWN0Um93LmhlaWdodCkgLSAxfXB4YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0UG9zaXRpb246IG51bWJlciA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW5kUG9zaXRpb246IG51bWJlciA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkluaXRpYWwgJiYgKHRoaXMuY29sdW1uSW5pdGlhbCA+PSAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2VsbHNbdGhpcy5jb2x1bW5Jbml0aWFsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luaXRpYWwgY29sdW1uIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBjZWxsc1t0aGlzLmNvbHVtbkluaXRpYWxdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBkb21SZWN0Um93LmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkZpbmFsICYmICh0aGlzLmNvbHVtbkZpbmFsID49IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsc1t0aGlzLmNvbHVtbkZpbmFsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbmFsIGNvbHVtbiB1bmRlZmluZWQgb3IgbnVsbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IGNlbGxzW3RoaXMuY29sdW1uRmluYWxdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSBkb21SZWN0UG9wb3Zlci53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBkb21SZWN0Um93LnJpZ2h0IC0gZG9tUmVjdFBvcG92ZXIud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5jbGllbnRYID4gc3RhcnRQb3NpdGlvbiArIDE1ICYmIGV2ZW50LmNsaWVudFggPCBlbmRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBgJHtldmVudC5jbGllbnRYIC0gMTV9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpZW50WCA8PSBzdGFydFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke3N0YXJ0UG9zaXRpb259cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpZW50WCA+PSBlbmRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBgJHtlbmRQb3NpdGlvbn1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvd0hvdmVyLmVtaXQoZGF0YSk7XG4gICAgICAgIHRoaXMuX2NvbnRleHRQb3BvdmVyID0gZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICBzaG93UG9wb3ZlcihldmVudDogTW91c2VFdmVudCwgZGF0YTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXI6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlLXBvcG92ZXInKTtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwb3BvdmVyKSkge1xuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9tUmVjdFBvcG92ZXIgPSBwb3BvdmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRvbVJlY3RSb3cgPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VsbHMgPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MVGFibGVSb3dFbGVtZW50KS5jaGlsZHJlbjtcblxuICAgICAgICAgICAgICAgIGlmIChkb21SZWN0UG9wb3ZlciAmJiBkb21SZWN0Um93KSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSBgJHsoZG9tUmVjdFJvdy50b3AgKyBkb21SZWN0Um93LmhlaWdodCkgLSAxfXB4YDtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnRQb3NpdGlvbjogbnVtYmVyID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVuZFBvc2l0aW9uOiBudW1iZXIgPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbkluaXRpYWwgJiYgKHRoaXMuY29sdW1uSW5pdGlhbCA+PSAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsc1t0aGlzLmNvbHVtbkluaXRpYWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbml0aWFsIGNvbHVtbiB1bmRlZmluZWQgb3IgbnVsbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IGNlbGxzW3RoaXMuY29sdW1uSW5pdGlhbF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBkb21SZWN0Um93LmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2x1bW5GaW5hbCAmJiAodGhpcy5jb2x1bW5GaW5hbCA+PSAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsc1t0aGlzLmNvbHVtbkZpbmFsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmluYWwgY29sdW1uIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IGNlbGxzW3RoaXMuY29sdW1uRmluYWxdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSBkb21SZWN0UG9wb3Zlci53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gZG9tUmVjdFJvdy5yaWdodCAtIGRvbVJlY3RQb3BvdmVyLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY2xpZW50WCA+IHN0YXJ0UG9zaXRpb24gKyAxNSAmJiBldmVudC5jbGllbnRYIDwgZW5kUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBgJHtldmVudC5jbGllbnRYIC0gMTV9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYIDw9IHN0YXJ0UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBgJHtzdGFydFBvc2l0aW9ufXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY2xpZW50WCA+PSBlbmRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGAke2VuZFBvc2l0aW9ufXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucm93SG92ZXIuZW1pdChkYXRhKTtcbiAgICAgICAgdGhpcy5fY29udGV4dFBvcG92ZXIgPSBkYXRhO1xuICAgIH1cbiAgICAqL1xuXG4gICAgY2xvc2VQb3BvdmVyKHRpbWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBvZihudWxsKS5waXBlKGRlbGF5KHRpbWUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9pc1BvcG92ZXJIb3ZlcikgJiYgIXRoaXMuX2lzUG9wb3ZlckhvdmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9pc1BvcG92ZXJIb3ZlcikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYWN0aW9uc1BvcG92ZXJSZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcG92ZXI6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlLXBvcG92ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChwb3BvdmVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGV4dFBvcG92ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzUG9wb3ZlckhvdmVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0U29ydGluZ0RhdGFBY2Nlc3NvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKGRhdGE6IGFueSwgc29ydEhlYWRlcklkOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhW3NvcnRIZWFkZXJJZF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFbc29ydEhlYWRlcklkXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRhdGFbc29ydEhlYWRlcklkXTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBncm91cCBoZWFkZXJcbiAgICBnZW5lcmV0ZUdyb3Vwc0J5Q29sdW1uKGRhdGE6IGFueVtdKTogVGFibGVHcm91cEhlYWRlckRUT1tdIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzOiB7fSA9IGRhdGEucmVkdWNlKChncm91cCwgcm93KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhQ29sdW1uOiBzdHJpbmcgPSByb3dbdGhpcy5ncm91cEJ5Q29sdW1uXS50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKCFncm91cFtkYXRhQ29sdW1uXSkge1xuICAgICAgICAgICAgICAgIGdyb3VwW2RhdGFDb2x1bW5dID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cFtkYXRhQ29sdW1uXS5wdXNoKHJvdyk7XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXBzKS5tYXAoZ3JvdXBWYWx1ZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFRhYmxlR3JvdXBIZWFkZXJEVE8oZ3JvdXBWYWx1ZSwgZ3JvdXBzW2dyb3VwVmFsdWVdLCBncm91cHNbZ3JvdXBWYWx1ZV0ubGVuZ3RoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SGlnaGxpZ2h0Um93KHJvdzogVCB8IFRhYmxlR3JvdXBIZWFkZXJEVE8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbChyb3cpKSB7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuaGlnaGxpZ2h0Um93Rm4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Um93Rm4ocm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0SW5kZXhSb3cocm93OiBUIHwgVGFibGVHcm91cEhlYWRlckRUTyk6IG51bWJlciB7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fZGF0YVNvdXJjZSkgJiYgIUFycmF5VXRpbC5pc0VtcHR5KHRoaXMuX2RhdGFTb3VyY2UuZGF0YSkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHJvdykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHIgPT4gciA9PT0gcm93KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGluZmluaXRlIHNjcm9sbFxuICAgIGhhc01vcmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fZGF0YVNvdXJjZSB8fCAodGhpcy5fZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCA8IHRoaXMucGFnaW5hdG9yTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTY3JvbGwoc2Nyb2xsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHNjcm9sbGVkICYmIHRoaXMuaGFzTW9yZSgpKSB7XG4gICAgICAgICAgICB0aGlzLm9uUGFnZSh7XG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yUGFnZVNpemUsXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLnBhZ2luYXRvclBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgICBsZW5ndGg6IHRoaXMucGFnaW5hdG9yTGVuZ3RoLFxuICAgICAgICAgICAgICAgIHByZXZpb3VzUGFnZUluZGV4OiB0aGlzLnBhZ2luYXRvclBhZ2VJbmRleCxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvclBhZ2VJbmRleCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
@@ -164,7 +164,7 @@ var TextareaComponent = /** @class */ (function () {
|
|
164
164
|
multi: true
|
165
165
|
}
|
166
166
|
],
|
167
|
-
styles: ["mat-label span{color:#f44336!important}"]
|
167
|
+
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}mat-label span{color:#f44336!important}"]
|
168
168
|
}),
|
169
169
|
__metadata("design:paramtypes", [])
|
170
170
|
], TextareaComponent);
|
@@ -1,6 +1,8 @@
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, HostBinding, Input, forwardRef } from '@angular/core';
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, HostBinding, Input, forwardRef } from '@angular/core';
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
+
import { MatDialogActions, MatDialogContent, MatDialogTitle } from '@angular/material';
|
5
|
+
import { ObjectUtil } from '../../../core/utils/object.util';
|
4
6
|
import { GIPIActionRowComponent } from '../action-row/action-row.component';
|
5
7
|
var GIPIAbstractFormComponent = /** @class */ (function () {
|
6
8
|
function GIPIAbstractFormComponent() {
|
@@ -59,6 +61,51 @@ var GIPIAbstractFormComponent = /** @class */ (function () {
|
|
59
61
|
configurable: true
|
60
62
|
});
|
61
63
|
GIPIAbstractFormComponent.prototype.ngOnInit = function () { };
|
64
|
+
GIPIAbstractFormComponent.prototype.ngAfterViewInit = function () {
|
65
|
+
var _this = this;
|
66
|
+
if (this.dialog && !ObjectUtil.isNull(this.matDialogContent)) {
|
67
|
+
var contentElement_1 = this.matDialogContent.nativeElement;
|
68
|
+
if (!ObjectUtil.isNull(contentElement_1) && this._hasScroll(contentElement_1)) {
|
69
|
+
contentElement_1.scrollTop = 0;
|
70
|
+
this.matDialogActions.nativeElement.style.boxShadow = '0px -10px 15px -3px rgba(0,0,0,0.1)';
|
71
|
+
contentElement_1.addEventListener('scroll', function () { return _this._onScroll(contentElement_1); });
|
72
|
+
}
|
73
|
+
else {
|
74
|
+
this._removeShadows();
|
75
|
+
}
|
76
|
+
}
|
77
|
+
};
|
78
|
+
GIPIAbstractFormComponent.prototype._onScroll = function (content) {
|
79
|
+
var scrollTop = content.scrollTop || 0;
|
80
|
+
var scrollHeight = (content.scrollHeight - 36) || 0; // 36 é do padding
|
81
|
+
var clientHeight = content.clientHeight || 0;
|
82
|
+
if (scrollTop === 0) {
|
83
|
+
this.matDialogTitle.nativeElement.style.boxShadow = '';
|
84
|
+
this.matDialogActions.nativeElement.style.boxShadow = '0px -10px 15px -3px rgba(0,0,0,0.1)';
|
85
|
+
}
|
86
|
+
else if ((scrollTop + clientHeight) >= scrollHeight) {
|
87
|
+
this.matDialogTitle.nativeElement.style.boxShadow = '0px 10px 15px -3px rgba(0,0,0,0.1)';
|
88
|
+
this.matDialogActions.nativeElement.style.boxShadow = '';
|
89
|
+
}
|
90
|
+
else {
|
91
|
+
this.matDialogTitle.nativeElement.style.boxShadow = '0px 10px 15px -3px rgba(0,0,0,0.1)';
|
92
|
+
this.matDialogActions.nativeElement.style.boxShadow = '0px -10px 15px -3px rgba(0,0,0,0.1)';
|
93
|
+
}
|
94
|
+
};
|
95
|
+
GIPIAbstractFormComponent.prototype._hasScroll = function (matDialogContent) {
|
96
|
+
if (ObjectUtil.isNull(matDialogContent)) {
|
97
|
+
return false;
|
98
|
+
}
|
99
|
+
return (matDialogContent.scrollHeight > matDialogContent.clientHeight);
|
100
|
+
};
|
101
|
+
GIPIAbstractFormComponent.prototype._removeShadows = function () {
|
102
|
+
if (!ObjectUtil.isNull(this.matDialogTitle)) {
|
103
|
+
this.matDialogTitle.nativeElement.style.boxShadow = '';
|
104
|
+
}
|
105
|
+
if (!ObjectUtil.isNull(this.matDialogActions)) {
|
106
|
+
this.matDialogActions.nativeElement.style.boxShadow = '';
|
107
|
+
}
|
108
|
+
};
|
62
109
|
var GIPIAbstractFormComponent_1;
|
63
110
|
__decorate([
|
64
111
|
HostBinding('attr.id'),
|
@@ -77,6 +124,18 @@ var GIPIAbstractFormComponent = /** @class */ (function () {
|
|
77
124
|
ContentChildren(GIPIActionRowComponent),
|
78
125
|
__metadata("design:type", GIPIActionRowComponent)
|
79
126
|
], GIPIAbstractFormComponent.prototype, "GIPIActionRowComponent", void 0);
|
127
|
+
__decorate([
|
128
|
+
ContentChild(MatDialogTitle, { static: false, read: ElementRef }),
|
129
|
+
__metadata("design:type", ElementRef)
|
130
|
+
], GIPIAbstractFormComponent.prototype, "matDialogTitle", void 0);
|
131
|
+
__decorate([
|
132
|
+
ContentChild(MatDialogContent, { static: false, read: ElementRef }),
|
133
|
+
__metadata("design:type", ElementRef)
|
134
|
+
], GIPIAbstractFormComponent.prototype, "matDialogContent", void 0);
|
135
|
+
__decorate([
|
136
|
+
ContentChild(MatDialogActions, { static: false, read: ElementRef }),
|
137
|
+
__metadata("design:type", ElementRef)
|
138
|
+
], GIPIAbstractFormComponent.prototype, "matDialogActions", void 0);
|
80
139
|
__decorate([
|
81
140
|
Input(),
|
82
141
|
__metadata("design:type", String),
|
@@ -115,11 +174,15 @@ var GIPIAbstractFormComponent = /** @class */ (function () {
|
|
115
174
|
Input(),
|
116
175
|
__metadata("design:type", Boolean)
|
117
176
|
], GIPIAbstractFormComponent.prototype, "loading", void 0);
|
177
|
+
__decorate([
|
178
|
+
Input(),
|
179
|
+
__metadata("design:type", String)
|
180
|
+
], GIPIAbstractFormComponent.prototype, "class", void 0);
|
118
181
|
GIPIAbstractFormComponent = GIPIAbstractFormComponent_1 = __decorate([
|
119
182
|
Component({
|
120
183
|
selector: "gipi-abstract-form",
|
121
184
|
exportAs: 'gipiAbstractForm',
|
122
|
-
template: "<div class=\"form-content\"\n [class.form-dialog]=\"dialog\"\n [class.space-bottom]=\"!dialog\"\n [style.flex-direction]=\"flexDirection\"\n [style.align-items]=\"alignItems\"\n [style.justify-content]=\"justifyContent\"\n [style.gap]=\"getGap\"\n [style.padding]=\"getPadding\">\n <ng-content> </ng-content>\n</div>\n<div class=\"form-footer\"\n [style.margin-inline]=\"getPadding\"\n *ngIf=\"GIPIActionRowComponent\">\n <ng-content select=\"gipi-action-row\"> </ng-content>\n</div>",
|
185
|
+
template: "<div [class]=\"class\"\n [class.form-content]=\"true\"\n [class.form-dialog]=\"dialog\"\n [class.space-bottom]=\"!dialog\"\n [style.flex-direction]=\"flexDirection\"\n [style.align-items]=\"alignItems\"\n [style.justify-content]=\"justifyContent\"\n [style.gap]=\"getGap\"\n [style.padding]=\"getPadding\">\n <ng-content> </ng-content>\n</div>\n<div class=\"form-footer\"\n [style.margin-inline]=\"getPadding\"\n *ngIf=\"GIPIActionRowComponent\">\n <ng-content select=\"gipi-action-row\"> </ng-content>\n</div>",
|
123
186
|
providers: [
|
124
187
|
{
|
125
188
|
provide: NG_VALUE_ACCESSOR,
|
@@ -138,4 +201,4 @@ var GIPIAbstractFormComponent = /** @class */ (function () {
|
|
138
201
|
return GIPIAbstractFormComponent;
|
139
202
|
}());
|
140
203
|
export { GIPIAbstractFormComponent };
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2Fic3RyYWN0LWZvcm0vYWJzdHJhY3QtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBbUI1RTtJQXVESTtRQTlCUyxrQkFBYSxHQUFxQixRQUFRLENBQUM7UUFFM0MsUUFBRyxHQUFvQixFQUFFLENBQUM7UUFFMUIsZUFBVSxHQUF1RSxTQUFTLENBQUM7UUFFM0YsbUJBQWMsR0FBMkgsWUFBWSxDQUFDO1FBRXRKLFlBQU8sR0FBb0IsRUFBRSxDQUFDO1FBRTlCLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFeEIsWUFBTyxHQUFZLEtBQUssQ0FBQztJQWtCbEIsQ0FBQztrQ0F2RFIseUJBQXlCO0lBT2xDLHNCQUFJLGlEQUFVO2FBQWQ7WUFDSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3hDLENBQUM7OztPQUFBO0lBSVEsc0JBQUkseUNBQUU7YUFBTixVQUFPLEtBQWE7WUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDUixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUN2QjtRQUNMLENBQUM7OztPQUFBO0lBRVEsc0JBQUksMkNBQUk7YUFBUixVQUFTLEtBQWE7WUFDM0IsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDekI7UUFDTCxDQUFDOzs7T0FBQTtJQWdCRCxzQkFBSSxpREFBVTthQUFkO1lBQ0ksSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNqRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdkI7WUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUM7OztPQUFBO0lBRUQsc0JBQUksNkNBQU07YUFBVjtZQUNJLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ25CO1lBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDOzs7T0FBQTtJQUlELDRDQUFRLEdBQVIsY0FBbUIsQ0FBQzs7SUF2REk7UUFBdkIsV0FBVyxDQUFDLFNBQVMsQ0FBQzs7NkRBQWdCO0lBRWI7UUFBekIsV0FBVyxDQUFDLFdBQVcsQ0FBQzs7K0RBQWtCO0lBRzNDO1FBREMsV0FBVyxDQUFDLGNBQWMsQ0FBQzs7OytEQUczQjtJQUV3QztRQUF4QyxlQUFlLENBQUMsc0JBQXNCLENBQUM7a0NBQXlCLHNCQUFzQjs2RUFBQztJQUUvRTtRQUFSLEtBQUssRUFBRTs7O3VEQUlQO0lBRVE7UUFBUixLQUFLLEVBQUU7Ozt5REFJUDtJQUVRO1FBQVIsS0FBSyxFQUFFOztvRUFBNEM7SUFFM0M7UUFBUixLQUFLLEVBQUU7OzBEQUEyQjtJQUUxQjtRQUFSLEtBQUssRUFBRTs7aUVBQTRGO0lBRTNGO1FBQVIsS0FBSyxFQUFFOztxRUFBdUo7SUFFdEo7UUFBUixLQUFLLEVBQUU7OzhEQUErQjtJQUU5QjtRQUFSLEtBQUssRUFBRTs7NkRBQXlCO0lBRXhCO1FBQVIsS0FBSyxFQUFFOzs4REFBMEI7SUFyQ3pCLHlCQUF5QjtRQWpCckMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLHloQkFBNkM7WUFFN0MsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBd0MsT0FBQSwyQkFBeUIsRUFBekIsQ0FBeUIsQ0FBQztvQkFDMUYsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtZQUNELElBQUksRUFBRTtnQkFDRixPQUFPLEVBQUUsb0JBQW9CO2FBQ2hDO1lBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O1NBQ2xELENBQUM7O09BQ1cseUJBQXlCLENBMkRyQztJQUFELGdDQUFDO0NBQUEsQUEzREQsSUEyREM7U0EzRFkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHSVBJQWN0aW9uUm93Q29tcG9uZW50IH0gZnJvbSAnLi4vYWN0aW9uLXJvdy9hY3Rpb24tcm93LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgZ2lwaS1hYnN0cmFjdC1mb3JtYCxcbiAgICBleHBvcnRBczogJ2dpcGlBYnN0cmFjdEZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBHSVBJQWJzdHJhY3RGb3JtQ29tcG9uZW50ID0+IEdJUElBYnN0cmFjdEZvcm1Db21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnZ2lwaS1hYnN0cmFjdC1mb3JtJyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdJUElBYnN0cmFjdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgYXR0cklkOiBzdHJpbmc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIubmFtZScpIGF0dHJOYW1lOiBzdHJpbmc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1hcmdpbicpXG4gICAgZ2V0IGF0dHJNYXJnaW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZyA/ICcwJyA6ICcwIGF1dG8nO1xuICAgIH1cblxuICAgIEBDb250ZW50Q2hpbGRyZW4oR0lQSUFjdGlvblJvd0NvbXBvbmVudCkgR0lQSUFjdGlvblJvd0NvbXBvbmVudDogR0lQSUFjdGlvblJvd0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuYXR0cklkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5hdHRyTmFtZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgZmxleERpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJyA9ICdjb2x1bW4nO1xuXG4gICAgQElucHV0KCkgZ2FwOiBzdHJpbmcgfCBudW1iZXIgPSAzMjtcblxuICAgIEBJbnB1dCgpIGFsaWduSXRlbXM6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdzdHJldGNoJyA9ICdzdHJldGNoJztcblxuICAgIEBJbnB1dCgpIGp1c3RpZnlDb250ZW50OiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyB8ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnc3BhY2UtYXJvdW5kJyB8ICdzcGFjZS1iZXR3ZWVuJyB8ICdzcGFjZS1ldmVubHknIHwgJ3N0cmV0Y2gnID0gJ2ZsZXgtc3RhcnQnO1xuXG4gICAgQElucHV0KCkgcGFkZGluZzogc3RyaW5nIHwgbnVtYmVyID0gMTY7XG5cbiAgICBASW5wdXQoKSBkaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBnZXRQYWRkaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWRkaW5nID09PSAnc3RyaW5nJyAmJiB0aGlzLnBhZGRpbmcuaW5jbHVkZXMoJ3B4JykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhZGRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wYWRkaW5nICsgJ3B4JztcbiAgICB9XG5cbiAgICBnZXQgZ2V0R2FwKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5nYXAgPT09ICdzdHJpbmcnICYmIHRoaXMuZ2FwLmluY2x1ZGVzKCdweCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nYXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nYXAgKyAncHgnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG59XG4iXX0=
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2Fic3RyYWN0LWZvcm0vYWJzdHJhY3QtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JLLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFtQjVFO0lBOERJO1FBaENTLGtCQUFhLEdBQXFCLFFBQVEsQ0FBQztRQUUzQyxRQUFHLEdBQW9CLEVBQUUsQ0FBQztRQUUxQixlQUFVLEdBQXVFLFNBQVMsQ0FBQztRQUUzRixtQkFBYyxHQUEySCxZQUFZLENBQUM7UUFFdEosWUFBTyxHQUFvQixFQUFFLENBQUM7UUFFOUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4QixZQUFPLEdBQVksS0FBSyxDQUFDO0lBb0JsQixDQUFDO2tDQTlEUix5QkFBeUI7SUFPbEMsc0JBQUksaURBQVU7YUFBZDtZQUNJLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDeEMsQ0FBQzs7O09BQUE7SUFTUSxzQkFBSSx5Q0FBRTthQUFOLFVBQU8sS0FBYTtZQUN6QixJQUFJLENBQUMsS0FBSyxF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QUUsVUFBVSxFQUFFLENBQUM7a0NBQW1CLFVBQVU7dUVBQWM7SUFDMUM7UUFBcEUsWUFBWSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUM7a0NBQW1CLFVBQVU7dUVBQWM7SUFFdEc7UUFBUixLQUFLLEVBQUU7Ozt1REFJUDtJQUVRO1FBQVIsS0FBSyxFQUFFOzs7eURBSVA7SUFFUTtRQUFSLEtBQUssRUFBRTs7b0VBQTRDO0lBRTNDO1FBQVIsS0FBSyxFQUFFOzswREFBMkI7SUFFMUI7UUFBUixLQUFLLEVBQUU7O2lFQUE0RjtJQUUzRjtRQUFSLEtBQUssRUFBRTs7cUVBQXVKO0lBRXRKO1FBQVIsS0FBSyxFQUFFOzs4REFBK0I7SUFFOUI7UUFBUixLQUFLLEVBQUU7OzZEQUF5QjtJQUV4QjtRQUFSLEtBQUssRUFBRTs7OERBQTBCO0lBRXpCO1FBQVIsS0FBSyxFQUFFOzs0REFBZTtJQTVDZCx5QkFBeUI7UUFqQnJDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsUUFBUSxFQUFFLGtCQUFrQjtZQUM1Qix3akJBQTZDO1lBRTdDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQXdDLE9BQUEsMkJBQXlCLEVBQXpCLENBQXlCLENBQUM7b0JBQzFGLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFLG9CQUFvQjthQUNoQztZQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNsRCxDQUFDOztPQUNXLHlCQUF5QixDQWlIckM7SUFBRCxnQ0FBQztDQUFBLEFBakhELElBaUhDO1NBakhZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2dBY3Rpb25zLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgR0lQSUFjdGlvblJvd0NvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1yb3cvYWN0aW9uLXJvdy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYGdpcGktYWJzdHJhY3QtZm9ybWAsXG4gICAgZXhwb3J0QXM6ICdnaXBpQWJzdHJhY3RGb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWJzdHJhY3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYWJzdHJhY3QtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpOiB0eXBlb2YgR0lQSUFic3RyYWN0Rm9ybUNvbXBvbmVudCA9PiBHSVBJQWJzdHJhY3RGb3JtQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktYWJzdHJhY3QtZm9ybScsXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHSVBJQWJzdHJhY3RGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGF0dHJJZDogc3RyaW5nO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLm5hbWUnKSBhdHRyTmFtZTogc3RyaW5nO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXJnaW4nKVxuICAgIGdldCBhdHRyTWFyZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2cgPyAnMCcgOiAnMCBhdXRvJztcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEdJUElBY3Rpb25Sb3dDb21wb25lbnQpIEdJUElBY3Rpb25Sb3dDb21wb25lbnQ6IEdJUElBY3Rpb25Sb3dDb21wb25lbnQ7XG5cbiAgICAvLyBSZWZlcsOqbmNpYXMgYW9zIGVsZW1lbnRvcyBwcm9qZXRhZG9zIChtYXQtZGlhbG9nLXRpdGxlLCBtYXQtZGlhbG9nLWNvbnRlbnQsIG1hdC1kaWFsb2ctYWN0aW9ucylcbiAgICBAQ29udGVudENoaWxkKE1hdERpYWxvZ1RpdGxlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgbWF0RGlhbG9nVGl0bGU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGQoTWF0RGlhbG9nQ29udGVudCwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pIG1hdERpYWxvZ0NvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGQoTWF0RGlhbG9nQWN0aW9ucywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pIG1hdERpYWxvZ0FjdGlvbnM6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5hdHRySWQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmF0dHJOYW1lID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBmbGV4RGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nID0gJ2NvbHVtbic7XG5cbiAgICBASW5wdXQoKSBnYXA6IHN0cmluZyB8IG51bWJlciA9IDMyO1xuXG4gICAgQElucHV0KCkgYWxpZ25JdGVtczogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCcgfCAnZmxleC1zdGFydCcgfCAnZmxleC1lbmQnIHwgJ3N0cmV0Y2gnID0gJ3N0cmV0Y2gnO1xuXG4gICAgQElucHV0KCkganVzdGlmeUNvbnRlbnQ6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdzcGFjZS1hcm91bmQnIHwgJ3NwYWNlLWJldHdlZW4nIHwgJ3NwYWNlLWV2ZW5seScgfCAnc3RyZXRjaCcgPSAnZmxleC1zdGFydCc7XG5cbiAgICBASW5wdXQoKSBwYWRkaW5nOiBzdHJpbmcgfCBudW1iZXIgPSAxNjtcblxuICAgIEBJbnB1dCgpIGRpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZztcblxuICAgIGdldCBnZXRQYWRkaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWRkaW5nID09PSAnc3RyaW5nJyAmJiB0aGlzLnBhZGRpbmcuaW5jbHVkZXMoJ3B4JykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhZGRpbmc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wYWRkaW5nICsgJ3B4JztcbiAgICB9XG5cbiAgICBnZXQgZ2V0R2FwKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5nYXAgPT09ICdzdHJpbmcnICYmIHRoaXMuZ2FwLmluY2x1ZGVzKCdweCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nYXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nYXAgKyAncHgnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2cgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMubWF0RGlhbG9nQ29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5tYXREaWFsb2dDb250ZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKGNvbnRlbnRFbGVtZW50KSAmJiB0aGlzLl9oYXNTY3JvbGwoY29udGVudEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29udGVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdERpYWxvZ0FjdGlvbnMubmF0aXZlRWxlbWVudC5zdHlsZS5ib3hTaGFkb3cgPSAnMHB4IC0xMHB4IDE1cHggLTNweCByZ2JhKDAsMCwwLDAuMSknO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHRoaXMuX29uU2Nyb2xsKGNvbnRlbnRFbGVtZW50KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZVNoYWRvd3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX29uU2Nyb2xsKGNvbnRlbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcDogbnVtYmVyID0gY29udGVudC5zY3JvbGxUb3AgfHwgMDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsSGVpZ2h0OiBudW1iZXIgPSAoY29udGVudC5zY3JvbGxIZWlnaHQgLSAzNikgfHwgMDsgLy8gMzYgw6kgZG8gcGFkZGluZ1xuICAgICAgICBjb25zdCBjbGllbnRIZWlnaHQ6IG51bWJlciA9IGNvbnRlbnQuY2xpZW50SGVpZ2h0IHx8IDA7XG5cbiAgICAgICAgaWYgKHNjcm9sbFRvcCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tYXREaWFsb2dUaXRsZS5uYXRpdmVFbGVtZW50LnN0eWxlLmJveFNoYWRvdyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5tYXREaWFsb2dBY3Rpb25zLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYm94U2hhZG93ID0gJzBweCAtMTBweCAxNXB4IC0zcHggcmdiYSgwLDAsMCwwLjEpJztcbiAgICAgICAgfSBlbHNlIGlmICgoc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0KSA+PSBzY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMubWF0RGlhbG9nVGl0bGUubmF0aXZlRWxlbWVudC5zdHlsZS5ib3hTaGFkb3cgPSAnMHB4IDEwcHggMTVweCAtM3B4IHJnYmEoMCwwLDAsMC4xKSc7XG4gICAgICAgICAgICB0aGlzLm1hdERpYWxvZ0FjdGlvbnMubmF0aXZlRWxlbWVudC5zdHlsZS5ib3hTaGFkb3cgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWF0RGlhbG9nVGl0bGUubmF0aXZlRWxlbWVudC5zdHlsZS5ib3hTaGFkb3cgPSAnMHB4IDEwcHggMTVweCAtM3B4IHJnYmEoMCwwLDAsMC4xKSc7XG4gICAgICAgICAgICB0aGlzLm1hdERpYWxvZ0FjdGlvbnMubmF0aXZlRWxlbWVudC5zdHlsZS5ib3hTaGFkb3cgPSAnMHB4IC0xMHB4IDE1cHggLTNweCByZ2JhKDAsMCwwLDAuMSknO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFzU2Nyb2xsKG1hdERpYWxvZ0NvbnRlbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChtYXREaWFsb2dDb250ZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChtYXREaWFsb2dDb250ZW50LnNjcm9sbEhlaWdodCA+IG1hdERpYWxvZ0NvbnRlbnQuY2xpZW50SGVpZ2h0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW1vdmVTaGFkb3dzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMubWF0RGlhbG9nVGl0bGUpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdERpYWxvZ1RpdGxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYm94U2hhZG93ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm1hdERpYWxvZ0FjdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdERpYWxvZ0FjdGlvbnMubmF0aXZlRWxlbWVudC5zdHlsZS5ib3hTaGFkb3cgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
|
@@ -22,7 +22,7 @@ var GIPIConfirmationDialogComponent = /** @class */ (function () {
|
|
22
22
|
Component({
|
23
23
|
selector: "gipi-confirmation-dialog",
|
24
24
|
exportAs: 'gipiConfirmationDialog',
|
25
|
-
template: "<gipi-abstract-form id=\"dialogConfirmation\"\n name=\"dialogConfirmation\"\n [dialog]=\"true\">\n
|
25
|
+
template: "<div mat-dialog-title\n class=\"dialog-title\">\n <!-- Confirmation -->\n <ng-container *ngIf=\"!confirmation.type || (confirmation?.type === 'confirmation')\">\n <svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_522_3414)\">\n <path fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12ZM15.3941 6.19196C16.0206 6.81534 16.4617 7.60056 16.668 8.45999C16.9468 9.60963 16.7901 10.8218 16.2282 11.8627C15.6663 12.9037 14.7389 13.6998 13.6248 14.0976C13.3788 14.1852 13.2048 14.4036 13.2048 14.664V15.6024C13.2048 15.9213 13.0781 16.2271 12.8526 16.4526C12.6271 16.6781 12.3213 16.8048 12.0024 16.8048C11.6835 16.8048 11.3777 16.6781 11.1522 16.4526C10.9267 16.2271 10.8 15.9213 10.8 15.6024V13.1856C10.8041 12.87 10.9323 12.5688 11.1569 12.3471C11.3815 12.1255 11.6843 12.0012 11.9998 12.0012H11.9916C13.3176 12.0012 14.3952 10.9236 14.3952 9.60119C14.3809 8.97286 14.1211 8.37512 13.6715 7.93592C13.222 7.49673 12.6183 7.25098 11.9898 7.25129C11.3613 7.25161 10.7579 7.49796 10.3088 7.9376C9.85969 8.37725 9.60052 8.97525 9.5868 9.60359C9.5844 10.2648 9.0468 10.8012 8.3844 10.8012C8.08823 10.7994 7.80337 10.6872 7.58547 10.4866C7.36757 10.286 7.23227 10.0114 7.206 9.71639L7.2 9.53999C7.2204 6.53519 9.9852 4.21679 13.1196 4.92959C13.9801 5.13153 14.7675 5.56857 15.3941 6.19196ZM13.2 19.2C13.2 19.8627 12.6627 20.4 12 20.4C11.3373 20.4 10.8 19.8627 10.8 19.2C10.8 18.5373 11.3373 18 12 18C12.6627 18 13.2 18.5373 13.2 19.2Z\"\n fill=\"#E0313E\" />\n </g>\n </svg>\n </ng-container>\n\n <!-- Warning -->\n <ng-container *ngIf=\"confirmation?.type === 'warning'\">\n <svg width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g clip-path=\"url(#clip0_522_3358)\">\n <path fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.1255 0.223975C13.4823 0.371842 13.8065 0.58857 14.0795 0.861777L23.1376 9.91952C23.411 10.1926 23.6279 10.5169 23.7759 10.8739C23.9238 11.2309 24 11.6136 24 12C24 12.3864 23.9238 12.7691 23.7759 13.1261C23.6279 13.4831 23.411 13.8074 23.1376 14.0805L14.0795 23.1382C13.8065 23.4114 13.4823 23.6282 13.1255 23.776C12.7687 23.9239 12.3862 24 12 24C11.6138 24 11.2313 23.9239 10.8745 23.776C10.5177 23.6282 10.1935 23.4114 9.92051 23.1382L0.862407 14.0805C0.589013 13.8074 0.372125 13.4831 0.224146 13.1261C0.0761672 12.7691 0 12.3864 0 12C0 11.6136 0.0761672 11.2309 0.224146 10.8739C0.372125 10.5169 0.589013 10.1926 0.862407 9.91952L9.92051 0.861777C10.1935 0.58857 10.5177 0.371842 10.8745 0.223975C11.2313 0.0761077 11.6138 0 12 0C12.3862 0 12.7687 0.0761077 13.1255 0.223975ZM10.9616 14.5066C11.237 14.782 11.6105 14.9367 12 14.9367C12.3895 14.9367 12.763 14.782 13.0384 14.5066C13.3138 14.2311 13.4686 13.8575 13.4686 13.468V6.12428C13.4686 5.73475 13.3138 5.36116 13.0384 5.08572C12.763 4.81028 12.3895 4.65554 12 4.65554C11.6105 4.65554 11.237 4.81028 10.9616 5.08572C10.6862 5.36116 10.5314 5.73475 10.5314 6.12428V13.468C10.5314 13.8575 10.6862 14.2311 10.9616 14.5066ZM10.9616 18.9128C11.237 19.1882 11.6105 19.343 12 19.343C12.3895 19.343 12.763 19.1882 13.0384 18.9128C13.3138 18.6374 13.4686 18.2638 13.4686 17.8742C13.4686 17.4847 13.3138 17.1111 13.0384 16.8357C12.763 16.5602 12.3895 16.4055 12 16.4055C11.6105 16.4055 11.237 16.5602 10.9616 16.8357C10.6862 17.1111 10.5314 17.4847 10.5314 17.8742C10.5314 18.2638 10.6862 18.6374 10.9616 18.9128Z\"\n fill=\"#E0313E\" />\n </g>\n </svg>\n </ng-container>\n\n <strong> {{ confirmation?.title }} </strong>\n</div>\n<div mat-dialog-content\n class=\"dialog-content\">\n <p *ngIf=\"confirmation?.message\">\n {{ confirmation?.message }}\n </p>\n\n <li *ngFor=\"let message of confirmation?.listMessage\">\n {{ message }}\n </li>\n</div>\n<div mat-dialog-actions\n class=\"dialog-actions\">\n <ng-container *ngIf=\"confirmation?.type !== 'warning'\">\n <button class=\"dialog-button-base cancel\"\n [mat-dialog-close]=\"false\">\n Cancelar\n </button>\n <button class=\"dialog-button-base confirm\"\n [mat-dialog-close]=\"true\">\n Confirmar\n </button>\n </ng-container>\n\n <button class=\"dialog-button-base confirm\"\n *ngIf=\"confirmation?.type === 'warning'\"\n [mat-dialog-close]=\"true\">\n Ok\n </button>\n</div>\n\n<!-- <gipi-abstract-form id=\"dialogConfirmation\"\n name=\"dialogConfirmation\"\n [dialog]=\"true\">\n <gipi-toolbar id=\"toolbarDialogConfirmation\"\n mat-dialog-title>\n {{ confirmation.title }}\n </gipi-toolbar>\n\n <div mat-dialog-content>\n <p>{{ confirmation.message }}</p>\n <li *ngFor=\"let message of confirmation.listMessage\"> {{ message }} </li>\n </div>\n\n <div mat-dialog-actions\n *ngIf=\"!confirmation.isWarningScreen\"\n class=\"screen-confirmation\"\n fxLayout=\"row\"\n fxLayoutGap=\"16px\">\n <gipi-button [label]=\"messages.BUTTON_OK_CONFIRMATION\"\n [mat-dialog-close]=\"true\"\n gipi-primary\n fxFlex=\"30\">\n </gipi-button>\n\n <gipi-button [label]=\"messages.BUTTON_CANCEL_CONFIRMATION\"\n [mat-dialog-close]=\"false\"\n gipi-secondary\n fxFlex=\"30\">\n </gipi-button>\n </div>\n\n <div mat-dialog-actions\n *ngIf=\"confirmation.isWarningScreen\"\n class=\"screen-warning\"\n fxLayout=\"row\"\n fxLayoutGap=\"16px\">\n <gipi-button label=\"OK\"\n [mat-dialog-close]=\"true\"\n gipi-primary\n fxFlex=\"30\">\n </gipi-button>\n </div>\n</gipi-abstract-form> -->",
|
26
26
|
providers: [
|
27
27
|
{
|
28
28
|
provide: NG_VALUE_ACCESSOR,
|
@@ -33,7 +33,7 @@ var GIPIConfirmationDialogComponent = /** @class */ (function () {
|
|
33
33
|
host: {
|
34
34
|
'class': 'gipi-confirmation-dialog',
|
35
35
|
},
|
36
|
-
styles: [".
|
36
|
+
styles: [":host{display:flex;flex-direction:column;gap:1.6rem;padding:2rem;height:100%}.dialog-title{display:flex;align-items:center;gap:1rem}.dialog-title>strong{color:#262626}.dialog-content{display:flex;flex-direction:column;min-height:6rem!important;height:16rem!important;max-height:16rem!important;overflow-y:auto!important;overflow-x:hidden!important}.dialog-content>p{color:#595959}.dialog-content>li{margin:1rem 0;font-size:1.4rem;color:#595959}.dialog-content>li::marker{font-size:1.6rem;color:#e0313e}.dialog-actions{display:flex;justify-content:flex-end;flex-wrap:nowrap!important;gap:1.6rem;width:100%}.dialog-actions .cancel{color:#595959}.dialog-actions .cancel:hover{border-color:#595959;background-color:#e0e1e2}.dialog-actions .confirm{background-color:#e0313e;color:#fff}.dialog-actions .confirm:hover{background-color:#cc2d38}.dialog-button-base{height:3.2rem;padding-inline:1.2rem;border-radius:4px;outline:0;border:1px solid transparent;background-color:transparent;text-align:center;font-weight:500;font-size:1.4rem;cursor:pointer;transition:.2s}.dialog-button-base:active{transform:scale(.98)}"]
|
37
37
|
}),
|
38
38
|
__param(1, Inject(MAT_DIALOG_DATA)),
|
39
39
|
__param(2, Inject(APP_MESSAGES)),
|
@@ -43,4 +43,4 @@ var GIPIConfirmationDialogComponent = /** @class */ (function () {
|
|
43
43
|
return GIPIConfirmationDialogComponent;
|
44
44
|
}());
|
45
45
|
export { GIPIConfirmationDialogComponent };
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJzaGFyZWQvZ2lwaS1jb21wb25lbnRzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFrQjVFO0lBRUkseUNBQ1csU0FBd0QsRUFDL0IsWUFBNkIsRUFDaEMsUUFBcUI7UUFGM0MsY0FBUyxHQUFULFNBQVMsQ0FBK0M7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQWE7SUFDbEQsQ0FBQzt3Q0FOSSwrQkFBK0I7SUFReEMsa0RBQVEsR0FBUixjQUFtQixDQUFDOzs7Z0JBTEUsWUFBWTtnQkFDZ0IsZUFBZSx1QkFBNUQsTUFBTSxTQUFDLGVBQWU7Z0RBQ3RCLE1BQU0sU0FBQyxZQUFZOztJQUxmLCtCQUErQjtRQWhCM0MsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLDR0TUFBbUQ7WUFFbkQsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBOEMsT0FBQSxpQ0FBK0IsRUFBL0IsQ0FBK0IsQ0FBQztvQkFDdEcsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtZQUNELElBQUksRUFBRTtnQkFDRixPQUFPLEVBQUUsMEJBQTBCO2FBQ3RDOztTQUNKLENBQUM7UUFLTyxXQUFBLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN2QixXQUFBLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTt5Q0FGSCxZQUFZO1lBQ2dCLGVBQWU7T0FKeEQsK0JBQStCLENBVTNDO0lBQUQsc0NBQUM7Q0FBQSxBQVZELElBVUM7U0FWWSwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuXG5pbXBvcnQgeyBBcHBNZXNzYWdlcyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYXBwLW1lc3NhZ2VzJztcbmltcG9ydCB7IEFQUF9NRVNTQUdFUyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYXBwLm1lc3NhZ2VzJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRUTyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2R0by9jb25maXJtYXRpb24uZHRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGBnaXBpLWNvbmZpcm1hdGlvbi1kaWFsb2dgLFxuICAgIGV4cG9ydEFzOiAnZ2lwaUNvbmZpcm1hdGlvbkRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKTogdHlwZW9mIEdJUElDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgPT4gR0lQSUNvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdnaXBpLWNvbmZpcm1hdGlvbi1kaWFsb2cnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIEdJUElDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxHSVBJQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBjb25maXJtYXRpb246IENvbmZpcm1hdGlvbkRUTyxcbiAgICAgICAgQEluamVjdChBUFBfTUVTU0FHRVMpIHB1YmxpYyBtZXNzYWdlczogQXBwTWVzc2FnZXMsXG4gICAgKSB7IH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbn1cbiJdfQ==
|
package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js
CHANGED
@@ -367,7 +367,7 @@ var DateRangePickerComponent = /** @class */ (function () {
|
|
367
367
|
host: {
|
368
368
|
'class': 'gipi-date-range-picker',
|
369
369
|
},
|
370
|
-
styles: [":host{display:block;width:100
|
370
|
+
styles: [":host{display:block;width:100%;min-width:0;max-width:100%;flex:1}.input-wrapper{display:flex;flex-direction:column;gap:.8rem;font-size:1.4rem;color:#696969}.input-wrapper .input-label{display:flex;align-items:center;gap:.4rem;color:#131313;line-height:1.6rem}.input-wrapper .input-label>span{font-size:1.6rem;line-height:1.6rem;color:#d14014}.input-wrapper .input-content{display:flex;font-family:inherit;font-size:inherit;color:inherit;height:4rem;background:#fff;border:1px solid rgba(0,0,0,.12);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.6rem}.input-wrapper .input-content .input-element{padding:.75rem .8rem;border:none;outline:0;background-color:transparent;flex:1;color:inherit;caret-color:#696969;min-width:0}.input-wrapper .input-content:not(.input-element:disabled):has(.input-element:enabled:hover),.input-wrapper .input-content:not(.input-element:disabled):has(.prefix:hover),.input-wrapper .input-content:not(.input-element:disabled):has(.suffix:hover){border-color:#6d6f73}.input-wrapper .input-content:not(.input-element:disabled):has(.input-element:enabled:focus){outline:0;outline-offset:0;box-shadow:0 0 0 .2rem #e0e1e2;border-color:#6d6f73}.input-wrapper .input-content:has(.input-element:disabled){color:#bbbdc1!important;border-color:#e0e1e2!important;background-color:#f5f5f6!important;cursor:not-allowed}.input-wrapper .input-content:has(.input-element:disabled) .suffix>mat-icon{color:#bbbdc1!important}.input-wrapper .input-content .input-element:disabled{cursor:not-allowed}.input-wrapper .input-content .suffix{display:flex;align-items:center;justify-content:center;padding-block:.75rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-right:.8rem}.input-wrapper .input-content .suffix>mat-icon{width:2rem;height:2rem;font-size:2rem;color:#696969}.input-wrapper .input-help{flex:1;font-size:1rem;font-weight:500;margin-top:-.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .mat-date-range-input{height:4rem!important;padding-left:.8rem!important}::ng-deep .mat-date-range-input-container,::ng-deep .mat-date-range-input-end-wrapper,::ng-deep .mat-date-range-input-inner,::ng-deep .mat-date-range-input-start-wrapper{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:100%;min-height:100%;height:100%;padding-bottom:3px}::ng-deep .mat-date-range-input-end-wrapper{padding-bottom:0!important}::ng-deep .mat-date-range-input-inner{padding:0!important}::-webkit-input-placeholder{color:#bbbdc1}:-moz-placeholder{color:#bbbdc1}::-moz-placeholder{color:#bbbdc1}:-ms-input-placeholder{color:#bbbdc1}"]
|
371
371
|
}),
|
372
372
|
__metadata("design:paramtypes", [ElementRef,
|
373
373
|
ChangeDetectorRef])
|
@@ -246,7 +246,7 @@ var DatepickerComponent = /** @class */ (function () {
|
|
246
246
|
host: {
|
247
247
|
'class': 'gipi-datepicker',
|
248
248
|
},
|
249
|
-
styles: [":host{display:block;width:100
|
249
|
+
styles: [":host{display:block;width:100%;min-width:0;max-width:100%;flex:1}.input-wrapper{display:flex;flex-direction:column;gap:.8rem;font-size:1.4rem;color:#696969}.input-wrapper .input-label{display:flex;align-items:center;gap:.4rem;color:#131313;line-height:1.6rem}.input-wrapper .input-label>span{font-size:1.6rem;line-height:1.6rem;color:#d14014}.input-wrapper .input-content{display:flex;font-family:inherit;font-size:inherit;color:inherit;height:4rem;background:#fff;border:1px solid rgba(0,0,0,.12);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.6rem}.input-wrapper .input-content .input-element{padding:.75rem .8rem;border:none;outline:0;background-color:transparent;flex:1;color:inherit;caret-color:#696969;min-width:0}.input-wrapper .input-content:not(.input-element:disabled):has(.input-element:enabled:hover),.input-wrapper .input-content:not(.input-element:disabled):has(.prefix:hover),.input-wrapper .input-content:not(.input-element:disabled):has(.suffix:hover){border-color:#6d6f73}.input-wrapper .input-content:not(.input-element:disabled):has(.input-element:enabled:focus){outline:0;outline-offset:0;box-shadow:0 0 0 .2rem #e0e1e2;border-color:#6d6f73}.input-wrapper .input-content:has(.input-element:disabled){color:#bbbdc1!important;border-color:#e0e1e2!important;background-color:#f5f5f6!important;cursor:not-allowed}.input-wrapper .input-content:has(.input-element:disabled) .suffix>mat-icon{color:#bbbdc1!important}.input-wrapper .input-content .input-element:disabled{cursor:not-allowed}.input-wrapper .input-content .suffix{display:flex;align-items:center;justify-content:center;padding-block:.75rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-right:.8rem}.input-wrapper .input-content .suffix>mat-icon{width:2rem;height:2rem;font-size:2rem;color:#696969}.input-wrapper .input-help{flex:1;font-size:1rem;font-weight:500;margin-top:-.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::-webkit-input-placeholder{color:#bbbdc1}:-moz-placeholder{color:#bbbdc1}::-moz-placeholder{color:#bbbdc1}:-ms-input-placeholder{color:#bbbdc1}"]
|
250
250
|
}),
|
251
251
|
__metadata("design:paramtypes", [ElementRef,
|
252
252
|
ChangeDetectorRef])
|
@@ -180,7 +180,7 @@ var GIPIDropdownMenuComponent = /** @class */ (function () {
|
|
180
180
|
'class': 'gipi-dropdown-menu',
|
181
181
|
},
|
182
182
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
183
|
-
styles: [".dropdown-menu-container{display:flex;flex-direction:column;gap:
|
183
|
+
styles: [".dropdown-menu-container{display:flex;flex-direction:column;gap:1rem;width:100%}.dropdown-menu-container .dropdown-menu-label{color:#131313;font-size:1.4rem;line-height:100%}.dropdown-menu-container .dropdown-menu-label>span{color:#d14014;font-size:inherit;line-height:inherit}.dropdown-menu-container .dropdown-menu-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px;gap:1rem;width:100%;max-height:4rem;border-radius:5px;cursor:pointer;background-color:#fff;border:1px solid rgba(0,0,0,.12);color:#696969;transition:.2s}.dropdown-menu-container .dropdown-menu-content:focus-within,.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:active),.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:focus){box-shadow:0 0 0 .2rem #f0f0f0}.dropdown-menu-container .dropdown-menu-content:focus-within,.dropdown-menu-container .dropdown-menu-content:hover{border-color:#bfbfbf!important;background-color:#f5f5f5}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled){background-color:#e0e1e2!important;border-color:#e0e1e2!important;color:#d1d2d4!important;box-shadow:none!important;cursor:not-allowed!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) .dropdown-menu-input,.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) .dropdown-menu-suffix .dropdown-menu-button{cursor:not-allowed!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) .dropdown-menu-suffix .dropdown-menu-trigger{border-color:#e0e1e2!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content:has(.dropdown-menu-input:disabled) mat-icon{color:#d1d2d4!important;fill:#d1d2d4!important;cursor:not-allowed!important;pointer-events:none!important}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-input{cursor:pointer;height:16px;outline:0;border:none;background-color:transparent;color:inherit;flex:1;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix{display:flex;flex-direction:row;align-items:center;gap:16px}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix .dropdown-menu-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-inline:8px;border-radius:40px;border:1px solid transparent;color:#131313;background-color:#f0f0f0;font-size:1.2rem;line-height:1.4rem}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix .dropdown-menu-button{display:flex;align-items:center;justify-content:center;outline:0;border:none;cursor:pointer;background-color:transparent}.dropdown-menu-container .dropdown-menu-content .dropdown-menu-suffix .dropdown-menu-button:hover:not(:disabled)>mat-icon{transform:scale(1.08)}.dropdown-menu-icon{width:1.6rem;height:1.6rem;font-size:1.6rem;color:#131313;fill:#131313}.btn-popover-content{background-color:#fff;border-radius:4px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);padding:8px}"]
|
184
184
|
}),
|
185
185
|
__metadata("design:paramtypes", [ChangeDetectorRef,
|
186
186
|
ElementRef])
|
@@ -265,7 +265,7 @@ var GIPIFormFieldComponent = /** @class */ (function () {
|
|
265
265
|
'class': 'gipi-form-field',
|
266
266
|
},
|
267
267
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
268
|
-
styles: [".form-field-container{display:flex;flex-direction:column;gap:1rem;width:100%}.form-field-container .form-field-label{color:#131313;font-size:1.4rem;line-height:100%}.form-field-container .form-field-label>span{color:#d14014;font-size:inherit;line-height:inherit}.form-field-container .form-field-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:1.2rem;gap:
|
268
|
+
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}.form-field-container{display:flex;flex-direction:column;gap:1rem;width:100%}.form-field-container .form-field-label{color:#131313;font-size:1.4rem;line-height:100%}.form-field-container .form-field-label>span{color:#d14014;font-size:inherit;line-height:inherit}.form-field-container .form-field-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:1.2rem;gap:1rem;width:100%;max-height:4rem;border-radius:5px;cursor:text;background-color:#fff;border:1px solid rgba(0,0,0,.12);color:#696969;caret-color:#9a9da2;transition:.2s}.form-field-container .form-field-content:focus-within,.form-field-container .form-field-content:has(.form-field-input:active),.form-field-container .form-field-content:has(.form-field-input:focus){box-shadow:0 0 0 .2rem #f0f0f0}.form-field-container .form-field-content:focus-within,.form-field-container .form-field-content:hover{border-color:#bfbfbf!important}.form-field-container .form-field-content:has(.form-field-input:invalid){border-color:#d14014!important;color:#d14014!important;caret-color:#d14014!important}.form-field-container .form-field-content:has(.form-field-input:invalid):focus-within{box-shadow:0 0 0 .2rem #f1c4b6!important}.form-field-container .form-field-content:has(.form-field-input:disabled){border-color:#e0e1e2!important;color:#d1d2d4!important;box-shadow:none!important;cursor:not-allowed!important;caret-color:#d1d2d4!important;pointer-events:none!important}.form-field-container .form-field-content:has(.form-field-input:disabled) .form-field-input,.form-field-container .form-field-content:has(.form-field-input:disabled) .form-field-suffix .form-field-button{cursor:not-allowed!important;pointer-events:none!important}.form-field-container .form-field-content:has(.form-field-input:disabled) .form-field-suffix .form-field-trigger{border-color:#e0e1e2!important;pointer-events:none!important}.form-field-container .form-field-content:has(.form-field-input:disabled) mat-icon{color:#d1d2d4!important;fill:#d1d2d4!important;cursor:not-allowed!important;pointer-events:none!important}.form-field-container .form-field-content.form-field-select,.form-field-container .form-field-content.form-field-select .form-field-input{box-shadow:none!important;cursor:pointer!important}.form-field-container .form-field-content .form-field-input{height:16px;outline:0;border:none;background-color:transparent;color:inherit;flex:1;max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form-field-container .form-field-content .form-field-suffix{display:flex;flex-direction:row;align-items:center;gap:1.6rem}.form-field-container .form-field-content .form-field-suffix .form-field-trigger{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-inline:8px;border-radius:40px;border:1px solid transparent;color:#131313;background-color:#f0f0f0;font-size:1.2rem;line-height:1.4rem}.form-field-container .form-field-content .form-field-suffix .form-field-button{display:flex;align-items:center;justify-content:center;outline:0;border:none;cursor:pointer;background-color:transparent}.form-field-container .form-field-content .form-field-suffix .form-field-button:hover:not(:disabled)>mat-icon{transform:scale(1.08)}.form-field-icon{width:1.6rem;height:1.6rem;font-size:1.6rem;color:#131313;fill:#131313}"]
|
269
269
|
}),
|
270
270
|
__metadata("design:paramtypes", [ChangeDetectorRef,
|
271
271
|
ElementRef])
|
@@ -108,7 +108,7 @@ var GIPIInputCheckboxComponent = /** @class */ (function () {
|
|
108
108
|
'class': 'gipi-input-checkbox',
|
109
109
|
},
|
110
110
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
111
|
-
styles: ["::ng-deep .mat-checkbox-disabled{cursor:not-allowed!important}"]
|
111
|
+
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}::ng-deep .mat-checkbox-disabled{cursor:not-allowed!important}"]
|
112
112
|
}),
|
113
113
|
__metadata("design:paramtypes", [ChangeDetectorRef])
|
114
114
|
], GIPIInputCheckboxComponent);
|
@@ -196,7 +196,7 @@ var GIPIInputCurrencyComponent = /** @class */ (function () {
|
|
196
196
|
'class': 'gipi-input-currency',
|
197
197
|
},
|
198
198
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
199
|
-
styles: [".input-currency-container{display:flex;flex-direction:column;gap:
|
199
|
+
styles: [":host{display:block;min-width:0;max-width:100%;flex:1}.input-currency-container{display:flex;flex-direction:column;gap:1rem;width:100%}.input-currency-container .input-currency-label{color:#131313;font-size:1.4rem;line-height:100%}.input-currency-container .input-currency-label>span{color:#d14014;font-size:inherit;line-height:inherit}.input-currency-container .input-currency-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:12px;width:100%;max-height:4rem;border-radius:5px;cursor:text;background-color:#fff;border:1px solid rgba(0,0,0,.12);color:#696969;caret-color:#9a9da2;transition:.2s}.input-currency-container .input-currency-content:focus-within,.input-currency-container .input-currency-content:has(.input-currency-input:active),.input-currency-container .input-currency-content:has(.input-currency-input:focus){box-shadow:0 0 0 .2rem #f0f0f0}.input-currency-container .input-currency-content:focus-within,.input-currency-container .input-currency-content:hover{border-color:#bfbfbf!important}.input-currency-container .input-currency-content:has(.input-currency-input:invalid){border-color:#d14014!important;color:#d14014!important;caret-color:#d14014!important}.input-currency-container .input-currency-content:has(.input-currency-input:invalid):focus-within{box-shadow:0 0 0 .2rem #f1c4b6!important}.input-currency-container .input-currency-content:has(.input-currency-input:disabled){border-color:#e0e1e2!important;color:#d1d2d4!important;box-shadow:none!important;cursor:not-allowed!important;caret-color:#d1d2d4!important;pointer-events:none!important}.input-currency-container .input-currency-content .input-currency-input{height:16px;outline:0;border:none;background-color:transparent;color:inherit;flex:1}"]
|
200
200
|
}),
|
201
201
|
__metadata("design:paramtypes", [ChangeDetectorRef,
|
202
202
|
ElementRef])
|