@dereekb/dbx-form 11.1.8 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/lib/calendar.module.d.ts +1 -14
- package/calendar/lib/calendar.schedule.selection.cell.component.d.ts +8 -5
- package/calendar/lib/calendar.schedule.selection.component.d.ts +13 -10
- package/calendar/lib/calendar.schedule.selection.d.ts +6 -6
- package/calendar/lib/calendar.schedule.selection.days.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.days.form.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +4 -4
- package/calendar/lib/calendar.schedule.selection.dialog.component.d.ts +5 -5
- package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +4 -2
- package/calendar/lib/calendar.schedule.selection.popover.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.popover.content.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.range.component.d.ts +19 -17
- package/calendar/lib/calendar.schedule.selection.store.d.ts +2 -2
- package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +8 -12
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +22 -22
- package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +2 -10
- package/esm2022/calendar/lib/calendar.module.mjs +19 -101
- package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +27 -28
- package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +38 -55
- package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +17 -13
- package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +11 -12
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +18 -21
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +12 -9
- package/esm2022/calendar/lib/calendar.schedule.selection.mjs +3 -2
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +22 -18
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +12 -9
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +13 -10
- package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +52 -70
- package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +5 -5
- package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +9 -8
- package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +48 -50
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +17 -14
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +8 -40
- package/esm2022/lib/form/action/form.action.directive.mjs +58 -55
- package/esm2022/lib/form/action/form.action.module.mjs +9 -9
- package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +9 -8
- package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +14 -11
- package/esm2022/lib/form/form.mjs +1 -1
- package/esm2022/lib/form/form.module.mjs +4 -4
- package/esm2022/lib/form/io/form.changes.directive.mjs +11 -16
- package/esm2022/lib/form/io/form.input.directive.mjs +24 -38
- package/esm2022/lib/form/io/form.io.module.mjs +15 -9
- package/esm2022/lib/form/io/form.loading.directive.mjs +22 -42
- package/esm2022/lib/form.module.mjs +4 -4
- package/esm2022/lib/form.providers.mjs +32 -0
- package/esm2022/lib/formly/field/checklist/checklist.field.mjs +5 -5
- package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +51 -47
- package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +41 -29
- package/esm2022/lib/formly/field/checklist/checklist.item.field.mjs +3 -3
- package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +8 -45
- package/esm2022/lib/formly/field/checklist/checklist.item.mjs +1 -1
- package/esm2022/lib/formly/field/component/component.field.component.mjs +11 -8
- package/esm2022/lib/formly/field/component/component.field.module.mjs +8 -14
- package/esm2022/lib/formly/field/field.mjs +1 -1
- package/esm2022/lib/formly/field/form.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +17 -14
- package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +8 -58
- package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +17 -13
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +16 -16
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +8 -68
- package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +71 -54
- package/esm2022/lib/formly/field/selection/pickable/pickable.util.mjs +2 -2
- package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +21 -16
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +51 -49
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +35 -27
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.mjs +1 -1
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +8 -65
- package/esm2022/lib/formly/field/selection/searchable/searchable.mjs +1 -1
- package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +48 -30
- package/esm2022/lib/formly/field/selection/searchable/text.chip.field.mjs +2 -2
- package/esm2022/lib/formly/field/selection/selection.field.mjs +1 -1
- package/esm2022/lib/formly/field/selection/selection.mjs +1 -1
- package/esm2022/lib/formly/field/selection/selection.module.mjs +4 -4
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +20 -21
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +6 -73
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.mjs +1 -1
- package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +37 -22
- package/esm2022/lib/formly/field/texteditor/texteditor.field.mjs +2 -2
- package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +8 -33
- package/esm2022/lib/formly/field/value/array/array.field.component.mjs +72 -50
- package/esm2022/lib/formly/field/value/array/array.field.module.mjs +8 -44
- package/esm2022/lib/formly/field/value/boolean/boolean.field.mjs +2 -2
- package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/date/date.field.module.mjs +5 -9
- package/esm2022/lib/formly/field/value/date/date.value.mjs +1 -1
- package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +8 -8
- package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +4 -4
- package/esm2022/lib/formly/field/value/date/datetime.mjs +1 -1
- package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +8 -8
- package/esm2022/lib/formly/field/value/number/number.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/number/number.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +4 -4
- package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/text/text.address.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/text/text.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/text/text.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/value.module.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +9 -7
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +19 -24
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +7 -4
- package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +11 -8
- package/esm2022/lib/formly/field/wrapper/form.wrapper.module.mjs +8 -39
- package/esm2022/lib/formly/field/wrapper/index.mjs +2 -1
- package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +19 -16
- package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +11 -7
- package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +16 -11
- package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +11 -8
- package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +21 -17
- package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +11 -8
- package/esm2022/lib/formly/field/wrapper/wrapper.mjs +1 -1
- package/esm2022/lib/formly/form/form.form.module.mjs +4 -4
- package/esm2022/lib/formly/form/search.form.component.mjs +4 -4
- package/esm2022/lib/formly/formly.component.template.mjs +29 -0
- package/esm2022/lib/formly/formly.context.directive.mjs +6 -5
- package/esm2022/lib/formly/formly.context.mjs +12 -8
- package/esm2022/lib/formly/formly.directive.mjs +29 -44
- package/esm2022/lib/formly/formly.form.component.mjs +24 -18
- package/esm2022/lib/formly/formly.module.mjs +10 -14
- package/esm2022/lib/formly/index.mjs +2 -1
- package/esm2022/lib/formly/template/login.mjs +1 -1
- package/esm2022/lib/formly/template/timezone.mjs +1 -1
- package/esm2022/lib/index.mjs +2 -1
- package/esm2022/lib/layout/form.layout.module.mjs +4 -4
- package/esm2022/lib/layout/form.spacer.component.mjs +3 -3
- package/esm2022/lib/validator/available.mjs +1 -1
- package/esm2022/lib/validator/boolean.mjs +1 -1
- package/esm2022/lib/validator/field.mjs +2 -2
- package/esm2022/lib/validator/number.mjs +1 -1
- package/esm2022/lib/validator/phone.mjs +1 -1
- package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +65 -47
- package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +13 -10
- package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +10 -43
- package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +32 -26
- package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +8 -36
- package/esm2022/mapbox/lib/mapbox.module.mjs +4 -4
- package/fesm2022/dereekb-dbx-form-calendar.mjs +340 -457
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +114 -141
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +935 -1106
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/extension/calendar/_calendar.scss +3 -3
- package/lib/form/_form.scss +3 -3
- package/lib/form/action/form.action.directive.d.ts +35 -16
- package/lib/form/action/form.action.module.d.ts +4 -3
- package/lib/form/action/transition/form.action.transition.module.d.ts +4 -2
- package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +4 -2
- package/lib/form/io/form.changes.directive.d.ts +3 -4
- package/lib/form/io/form.input.directive.d.ts +7 -10
- package/lib/form/io/form.io.module.d.ts +8 -2
- package/lib/form/io/form.loading.directive.d.ts +10 -11
- package/lib/form.providers.d.ts +8 -0
- package/lib/formly/_formly.scss +3 -3
- package/lib/formly/field/checklist/_checklist.scss +3 -3
- package/lib/formly/field/checklist/checklist.field.d.ts +7 -7
- package/lib/formly/field/checklist/checklist.item.d.ts +7 -9
- package/lib/formly/field/checklist/checklist.item.field.component.d.ts +19 -18
- package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +5 -5
- package/lib/formly/field/checklist/checklist.item.field.d.ts +1 -1
- package/lib/formly/field/checklist/checklist.item.field.module.d.ts +3 -11
- package/lib/formly/field/component/_component.scss +3 -3
- package/lib/formly/field/component/component.field.component.d.ts +1 -1
- package/lib/formly/field/component/component.field.module.d.ts +2 -4
- package/lib/formly/field/field.d.ts +8 -5
- package/lib/formly/field/selection/list/_list.scss +3 -3
- package/lib/formly/field/selection/list/list.field.component.d.ts +7 -5
- package/lib/formly/field/selection/list/list.field.module.d.ts +2 -12
- package/lib/formly/field/selection/pickable/_pickable.scss +3 -3
- package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +1 -1
- package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +25 -23
- package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +2 -13
- package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +15 -14
- package/lib/formly/field/selection/searchable/_searchable.scss +3 -3
- package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +4 -4
- package/lib/formly/field/selection/searchable/searchable.d.ts +3 -3
- package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +8 -12
- package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +30 -25
- package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +2 -13
- package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +6 -8
- package/lib/formly/field/selection/selection.d.ts +5 -5
- package/lib/formly/field/selection/sourceselect/_sourceselect.scss +3 -3
- package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +1 -1
- package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +5 -3
- package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +2 -17
- package/lib/formly/field/texteditor/_texteditor.scss +9 -9
- package/lib/formly/field/texteditor/texteditor.field.component.d.ts +5 -4
- package/lib/formly/field/texteditor/texteditor.field.module.d.ts +2 -8
- package/lib/formly/field/value/array/_array.scss +5 -5
- package/lib/formly/field/value/array/array.field.component.d.ts +16 -18
- package/lib/formly/field/value/array/array.field.d.ts +8 -5
- package/lib/formly/field/value/array/array.field.module.d.ts +2 -10
- package/lib/formly/field/value/boolean/_boolean.scss +3 -3
- package/lib/formly/field/value/date/_date.scss +5 -5
- package/lib/formly/field/value/date/date.field.module.d.ts +8 -9
- package/lib/formly/field/value/date/datetime.field.service.d.ts +1 -1
- package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +13 -13
- package/lib/formly/field/value/number/_number.scss +2 -2
- package/lib/formly/field/value/phone/_phone.scss +6 -6
- package/lib/formly/field/value/phone/phone.field.component.d.ts +6 -5
- package/lib/formly/field/value/text/_text.scss +3 -3
- package/lib/formly/field/wrapper/_wrapper.scss +3 -3
- package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/expand.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/expand.wrapper.delegate.d.ts +2 -0
- package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +4 -4
- package/lib/formly/field/wrapper/form.wrapper.module.d.ts +2 -8
- package/lib/formly/field/wrapper/index.d.ts +1 -0
- package/lib/formly/field/wrapper/info.wrapper.component.d.ts +2 -2
- package/lib/formly/field/wrapper/section.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/style.wrapper.component.d.ts +5 -3
- package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +2 -1
- package/lib/formly/field/wrapper/working.wrapper.component.d.ts +2 -2
- package/lib/formly/form/_form.scss +3 -3
- package/lib/formly/formly.component.template.d.ts +19 -0
- package/lib/formly/formly.context.d.ts +11 -7
- package/lib/formly/formly.context.directive.d.ts +2 -2
- package/lib/formly/formly.directive.d.ts +10 -10
- package/lib/formly/formly.form.component.d.ts +18 -13
- package/lib/formly/formly.module.d.ts +1 -1
- package/lib/formly/index.d.ts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/layout/_layout.scss +3 -3
- package/lib/style/_all-typography.scss +1 -1
- package/lib/style/_theming.scss +1 -1
- package/mapbox/lib/field/latlng/latlng.field.component.d.ts +25 -23
- package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +2 -1
- package/mapbox/lib/field/latlng/latlng.module.d.ts +2 -11
- package/mapbox/lib/field/zoom/zoom.field.component.d.ts +13 -13
- package/mapbox/lib/field/zoom/zoom.module.d.ts +3 -10
- package/package.json +10 -11
- package/mapbox/esm2022/dereekb-dbx-form-mapbox.mjs +0 -5
- package/mapbox/esm2022/index.mjs +0 -3
- package/mapbox/esm2022/lib/field/index.mjs +0 -3
- package/mapbox/esm2022/lib/field/latlng/index.mjs +0 -5
- package/mapbox/esm2022/lib/field/latlng/latlng.field.component.mjs +0 -244
- package/mapbox/esm2022/lib/field/latlng/latlng.field.marker.component.mjs +0 -31
- package/mapbox/esm2022/lib/field/latlng/latlng.field.mjs +0 -35
- package/mapbox/esm2022/lib/field/latlng/latlng.module.mjs +0 -59
- package/mapbox/esm2022/lib/field/zoom/index.mjs +0 -4
- package/mapbox/esm2022/lib/field/zoom/zoom.field.component.mjs +0 -140
- package/mapbox/esm2022/lib/field/zoom/zoom.field.mjs +0 -23
- package/mapbox/esm2022/lib/field/zoom/zoom.module.mjs +0 -57
- package/mapbox/esm2022/lib/mapbox.module.mjs +0 -16
- package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs +0 -566
- package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs.map +0 -1
- package/mapbox/package.json +0 -21
|
@@ -1,88 +1,90 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BehaviorSubject, map, shareReplay } from 'rxjs';
|
|
3
|
-
import { Component, Directive, inject, InjectionToken, Input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, Directive, inject, InjectionToken, input } from '@angular/core';
|
|
4
2
|
import { mergeArraysIntoArray } from '@dereekb/util';
|
|
3
|
+
import { DbxInjectionComponent } from '@dereekb/dbx-core';
|
|
4
|
+
import { DbxAnchorComponent } from '@dereekb/dbx-web';
|
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@
|
|
7
|
-
import * as i2 from "@dereekb/dbx-core";
|
|
8
|
-
import * as i3 from "@angular/common";
|
|
9
|
-
import * as i4 from "@angular/material/icon";
|
|
7
|
+
import * as i1 from "@angular/material/icon";
|
|
10
8
|
export const DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN = new InjectionToken('DbxSearchableField');
|
|
11
9
|
export class DbxSearchableFieldAutocompleteItemComponent {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
displayValue = input.required();
|
|
11
|
+
configSignal = computed(() => {
|
|
12
|
+
const displayValue = this.displayValue();
|
|
15
13
|
const config = {
|
|
16
|
-
...
|
|
14
|
+
...displayValue.display,
|
|
17
15
|
providers: mergeArraysIntoArray([
|
|
18
16
|
{
|
|
19
17
|
provide: DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN,
|
|
20
|
-
useValue:
|
|
18
|
+
useValue: displayValue
|
|
21
19
|
}
|
|
22
|
-
],
|
|
20
|
+
], displayValue.display.providers)
|
|
23
21
|
};
|
|
24
22
|
return config;
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this._displayValue.complete();
|
|
32
|
-
}
|
|
33
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: { displayValue: "displayValue" }, ngImport: i0, template: `
|
|
35
|
-
<dbx-anchor [block]="true" [anchor]="anchor$ | async">
|
|
36
|
-
<dbx-injection [config]="config$ | async"></dbx-injection>
|
|
23
|
+
});
|
|
24
|
+
anchorSignal = computed(() => this.displayValue().anchor);
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DbxSearchableFieldAutocompleteItemComponent, isStandalone: true, selector: "dbx-searchable-field-autocomplete-item", inputs: { displayValue: { classPropertyName: "displayValue", publicName: "displayValue", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
27
|
+
<dbx-anchor [block]="true" [anchor]="anchorSignal()">
|
|
28
|
+
<dbx-injection [config]="configSignal()"></dbx-injection>
|
|
37
29
|
</dbx-anchor>
|
|
38
|
-
`, isInline: true, dependencies: [{ kind: "component", type:
|
|
30
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
39
31
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, decorators: [{
|
|
41
33
|
type: Component,
|
|
42
34
|
args: [{
|
|
43
35
|
selector: 'dbx-searchable-field-autocomplete-item',
|
|
44
36
|
template: `
|
|
45
|
-
<dbx-anchor [block]="true" [anchor]="
|
|
46
|
-
<dbx-injection [config]="
|
|
37
|
+
<dbx-anchor [block]="true" [anchor]="anchorSignal()">
|
|
38
|
+
<dbx-injection [config]="configSignal()"></dbx-injection>
|
|
47
39
|
</dbx-anchor>
|
|
48
|
-
|
|
40
|
+
`,
|
|
41
|
+
imports: [DbxAnchorComponent, DbxInjectionComponent],
|
|
42
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
43
|
+
standalone: true
|
|
49
44
|
}]
|
|
50
|
-
}]
|
|
51
|
-
type: Input
|
|
52
|
-
}] } });
|
|
45
|
+
}] });
|
|
53
46
|
// MARK: Default
|
|
54
47
|
export class AbstractDbxSearchableFieldDisplayDirective {
|
|
55
48
|
displayValue = inject(DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN);
|
|
56
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
57
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
50
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractDbxSearchableFieldDisplayDirective, ngImport: i0 });
|
|
58
51
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, decorators: [{
|
|
60
53
|
type: Directive
|
|
61
54
|
}] });
|
|
62
55
|
export class DbxDefaultSearchableFieldDisplayComponent extends AbstractDbxSearchableFieldDisplayDirective {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
67
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxDefaultSearchableFieldDisplayComponent, selector: "dbx-default-searchable-field-display", usesInheritance: true, ngImport: i0, template: `
|
|
56
|
+
icon = this.displayValue.icon;
|
|
57
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxDefaultSearchableFieldDisplayComponent, isStandalone: true, selector: "dbx-default-searchable-field-display", usesInheritance: true, ngImport: i0, template: `
|
|
68
59
|
<div class="dbx-default-searchable-field-display dbx-flex-bar">
|
|
69
|
-
|
|
60
|
+
@if (icon) {
|
|
61
|
+
<mat-icon class="dbx-icon-spacer">{{ icon }}</mat-icon>
|
|
62
|
+
}
|
|
70
63
|
<span class="dbx-chip-label">{{ displayValue.label }}</span>
|
|
71
|
-
|
|
64
|
+
@if (displayValue.sublabel) {
|
|
65
|
+
<span class="dbx-chip-sublabel">({{ displayValue.sublabel }})</span>
|
|
66
|
+
}
|
|
72
67
|
</div>
|
|
73
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
68
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
74
69
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, decorators: [{
|
|
76
71
|
type: Component,
|
|
77
72
|
args: [{
|
|
78
73
|
selector: 'dbx-default-searchable-field-display',
|
|
79
74
|
template: `
|
|
80
75
|
<div class="dbx-default-searchable-field-display dbx-flex-bar">
|
|
81
|
-
|
|
76
|
+
@if (icon) {
|
|
77
|
+
<mat-icon class="dbx-icon-spacer">{{ icon }}</mat-icon>
|
|
78
|
+
}
|
|
82
79
|
<span class="dbx-chip-label">{{ displayValue.label }}</span>
|
|
83
|
-
|
|
80
|
+
@if (displayValue.sublabel) {
|
|
81
|
+
<span class="dbx-chip-sublabel">({{ displayValue.sublabel }})</span>
|
|
82
|
+
}
|
|
84
83
|
</div>
|
|
85
|
-
|
|
84
|
+
`,
|
|
85
|
+
imports: [MatIconModule],
|
|
86
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
87
|
+
standalone: true
|
|
86
88
|
}]
|
|
87
89
|
}] });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5hdXRvY29tcGxldGUuaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmF1dG9jb21wbGV0ZS5pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBK0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUV2RCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBYWxHLE1BQU0sT0FBTywyQ0FBMkM7SUFDN0MsWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlELENBQUM7SUFFL0UsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFnQztZQUMxQyxHQUFHLFlBQVksQ0FBQyxPQUFPO1lBQ3ZCLFNBQVMsRUFBRSxvQkFBb0IsQ0FDN0I7Z0JBQ0U7b0JBQ0UsT0FBTyxFQUFFLHlDQUF5QztvQkFDbEQsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCO2FBQ0YsRUFDRCxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FDL0I7U0FDRixDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3R0FyQnhELDJDQUEyQzs0RkFBM0MsMkNBQTJDLDBQQVQ1Qzs7OztHQUlULDREQUNTLGtCQUFrQix3RkFBRSxxQkFBcUI7OzRGQUl4QywyQ0FBMkM7a0JBWHZELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFOzs7O0dBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3BELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBeUJELGdCQUFnQjtBQUVoQixNQUFNLE9BQWdCLDBDQUEwQztJQUNyRCxZQUFZLEdBQUcsTUFBTSxDQUFnRCx5Q0FBeUMsQ0FBQyxDQUFDO3dHQURyRywwQ0FBMEM7NEZBQTFDLDBDQUEwQzs7NEZBQTFDLDBDQUEwQztrQkFEL0QsU0FBUzs7QUFzQlYsTUFBTSxPQUFPLHlDQUE2QyxTQUFRLDBDQUE2QztJQUNwRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0dBRDVCLHlDQUF5Qzs0RkFBekMseUNBQXlDLHVIQWYxQzs7Ozs7Ozs7OztHQVVULDJEQUNTLGFBQWE7OzRGQUlaLHlDQUF5QztrQkFqQnJELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsUUFBUSxFQUFFOzs7Ozs7Ozs7O0dBVVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSB9IGZyb20gJy4vc2VhcmNoYWJsZSc7XG5pbXBvcnQgeyBtZXJnZUFycmF5c0ludG9BcnJheSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50LCBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBEYnhBbmNob3JDb21wb25lbnQgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuZXhwb3J0IGNvbnN0IERCWF9TRUFSQ0hBQkxFX0ZJRUxEX0NPTVBPTkVOVF9EQVRBX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuKCdEYnhTZWFyY2hhYmxlRmllbGQnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNlYXJjaGFibGUtZmllbGQtYXV0b2NvbXBsZXRlLWl0ZW0nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkYngtYW5jaG9yIFtibG9ja109XCJ0cnVlXCIgW2FuY2hvcl09XCJhbmNob3JTaWduYWwoKVwiPlxuICAgICAgPGRieC1pbmplY3Rpb24gW2NvbmZpZ109XCJjb25maWdTaWduYWwoKVwiPjwvZGJ4LWluamVjdGlvbj5cbiAgICA8L2RieC1hbmNob3I+XG4gIGAsXG4gIGltcG9ydHM6IFtEYnhBbmNob3JDb21wb25lbnQsIERieEluamVjdGlvbkNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFNlYXJjaGFibGVGaWVsZEF1dG9jb21wbGV0ZUl0ZW1Db21wb25lbnQ8VD4ge1xuICByZWFkb25seSBkaXNwbGF5VmFsdWUgPSBpbnB1dC5yZXF1aXJlZDxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4+KCk7XG5cbiAgcmVhZG9ubHkgY29uZmlnU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlKCk7XG4gICAgY29uc3QgY29uZmlnOiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgPSB7XG4gICAgICAuLi5kaXNwbGF5VmFsdWUuZGlzcGxheSxcbiAgICAgIHByb3ZpZGVyczogbWVyZ2VBcnJheXNJbnRvQXJyYXkoXG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEQlhfU0VBUkNIQUJMRV9GSUVMRF9DT01QT05FTlRfREFUQV9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBkaXNwbGF5VmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIGRpc3BsYXlWYWx1ZS5kaXNwbGF5LnByb3ZpZGVyc1xuICAgICAgKVxuICAgIH07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9KTtcblxuICByZWFkb25seSBhbmNob3JTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRpc3BsYXlWYWx1ZSgpLmFuY2hvcik7XG59XG5cbi8vIE1BUks6IERlZmF1bHRcbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZUZpZWxkRGlzcGxheURpcmVjdGl2ZTxUPiB7XG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZSA9IGluamVjdDxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4+KERCWF9TRUFSQ0hBQkxFX0ZJRUxEX0NPTVBPTkVOVF9EQVRBX1RPS0VOKTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LWRlZmF1bHQtc2VhcmNoYWJsZS1maWVsZC1kaXNwbGF5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWRlZmF1bHQtc2VhcmNoYWJsZS1maWVsZC1kaXNwbGF5IGRieC1mbGV4LWJhclwiPlxuICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImRieC1pY29uLXNwYWNlclwiPnt7IGljb24gfX08L21hdC1pY29uPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJkYngtY2hpcC1sYWJlbFwiPnt7IGRpc3BsYXlWYWx1ZS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIEBpZiAoZGlzcGxheVZhbHVlLnN1YmxhYmVsKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZGJ4LWNoaXAtc3VibGFiZWxcIj4oe3sgZGlzcGxheVZhbHVlLnN1YmxhYmVsIH19KTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhEZWZhdWx0U2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudDxUPiBleHRlbmRzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZUZpZWxkRGlzcGxheURpcmVjdGl2ZTxUPiB7XG4gIHJlYWRvbmx5IGljb24gPSB0aGlzLmRpc3BsYXlWYWx1ZS5pY29uO1xufVxuIl19
|
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
import { convertMaybeToArray, lastValue, separateValues, asArray, filterUniqueValues } from '@dereekb/util';
|
|
2
2
|
import { mergeDbxInjectionComponentConfigs } from '@dereekb/dbx-core';
|
|
3
|
-
import { filterMaybe, SubscriptionObject,
|
|
4
|
-
import {
|
|
3
|
+
import { filterMaybe, SubscriptionObject, successResult, startWithBeginLoading, loadingStateContext, isLoadingStateInLoadingState } from '@dereekb/rxjs';
|
|
4
|
+
import { Directive, ElementRef, viewChild } from '@angular/core';
|
|
5
5
|
import { FormControl } from '@angular/forms';
|
|
6
6
|
import { FieldType } from '@ngx-formly/material';
|
|
7
7
|
import { debounceTime, distinctUntilChanged, first, map, mergeMap, shareReplay, startWith, switchMap, BehaviorSubject, of } from 'rxjs';
|
|
8
8
|
import { DbxDefaultSearchableFieldDisplayComponent } from './searchable.field.autocomplete.item.component';
|
|
9
|
-
import { camelCase } from 'change-case';
|
|
9
|
+
import { camelCase } from 'change-case-all';
|
|
10
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
12
|
+
const DEFAULT_SEARCH_INPUT_PLACEHOLDER = 'Type to Search';
|
|
13
|
+
const DEFAULT_SEARCHABLE_FIELD_DISPLAY = {
|
|
14
|
+
componentClass: DbxDefaultSearchableFieldDisplayComponent
|
|
15
|
+
};
|
|
11
16
|
/**
|
|
12
17
|
* Abstract searchable field that provides a feature for searching for values, and for displaying values using Observables.
|
|
13
18
|
*
|
|
14
19
|
* Display values are cached for performance.
|
|
15
20
|
*/
|
|
16
21
|
export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
17
|
-
cdRef = inject(ChangeDetectorRef);
|
|
18
22
|
/**
|
|
19
|
-
*
|
|
23
|
+
* Optional override set by the parent class for whether or not to allow the current value to sync to the input.
|
|
20
24
|
*/
|
|
21
25
|
allowSyncValueToInput = false;
|
|
22
26
|
/**
|
|
23
|
-
*
|
|
27
|
+
* Default placeholder text to use when searchOnEmptyText is false.
|
|
24
28
|
*/
|
|
25
|
-
|
|
26
|
-
textInput;
|
|
29
|
+
defaultSearchInputPlaceholder = DEFAULT_SEARCH_INPUT_PLACEHOLDER;
|
|
30
|
+
textInput = viewChild('textInput', { read: (ElementRef) });
|
|
27
31
|
inputCtrl = new FormControl('');
|
|
28
32
|
_formControlObs = new BehaviorSubject(undefined);
|
|
29
33
|
formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
@@ -35,12 +39,17 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
35
39
|
// Return begin loading to setup the loading state.
|
|
36
40
|
startWithBeginLoading())), shareReplay(1));
|
|
37
41
|
_singleValueSyncSubscription = new SubscriptionObject();
|
|
38
|
-
searchContext =
|
|
39
|
-
searchResults$ = this.searchResultsState$.pipe(map((x) => x?.value ?? []));
|
|
42
|
+
searchContext = loadingStateContext({ obs: this.searchResultsState$, showLoadingOnNoValue: false });
|
|
43
|
+
searchResults$ = this.searchResultsState$.pipe(map((x) => x?.value ?? []), shareReplay(1));
|
|
44
|
+
isLoadingSearchResults$ = this.searchResultsState$.pipe(map(isLoadingStateInLoadingState), distinctUntilChanged(), shareReplay(1));
|
|
40
45
|
_formControlValue$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value), shareReplay(1))));
|
|
41
46
|
values$ = this._formControlValue$.pipe(map(convertMaybeToArray), shareReplay(1));
|
|
42
47
|
displayValuesState$ = this.values$.pipe(distinctUntilChanged(), switchMap((values) => this.loadDisplayValuesForValues(values)), shareReplay(1));
|
|
43
48
|
displayValues$ = this.displayValuesState$.pipe(map((x) => x?.value ?? []));
|
|
49
|
+
inputValueSignal = toSignal(this.inputValue$);
|
|
50
|
+
searchResultsSignal = toSignal(this.searchResults$);
|
|
51
|
+
displayValuesSignal = toSignal(this.displayValues$);
|
|
52
|
+
isLoadingSearchResultsSignal = toSignal(this.isLoadingSearchResults$);
|
|
44
53
|
get name() {
|
|
45
54
|
return this.field.name ?? camelCase(this.label ?? this.key);
|
|
46
55
|
}
|
|
@@ -65,6 +74,12 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
65
74
|
get searchOnEmptyText() {
|
|
66
75
|
return this.searchableField.searchOnEmptyText ?? false;
|
|
67
76
|
}
|
|
77
|
+
get searchInputPlaceholder() {
|
|
78
|
+
const searchOnEmpty = this.searchOnEmptyText;
|
|
79
|
+
const placeholder = this.searchableField.placeholder;
|
|
80
|
+
const test = placeholder || (searchOnEmpty ? undefined : this.defaultSearchInputPlaceholder) || '';
|
|
81
|
+
return test;
|
|
82
|
+
}
|
|
68
83
|
get autocomplete() {
|
|
69
84
|
return (this.props.attributes?.['autocomplete'] ?? this.key);
|
|
70
85
|
}
|
|
@@ -120,7 +135,7 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
120
135
|
if (needsDisplay.length > 0) {
|
|
121
136
|
// Go get the display value.
|
|
122
137
|
const displayValuesObs = this.displayForValue(needsDisplay.map((x) => x[2]));
|
|
123
|
-
const defaultDisplay = mergeDbxInjectionComponentConfigs([
|
|
138
|
+
const defaultDisplay = mergeDbxInjectionComponentConfigs([DEFAULT_SEARCHABLE_FIELD_DISPLAY, this.display]);
|
|
124
139
|
const anchorForValue = this.useAnchor && this.anchorForValue;
|
|
125
140
|
obs = displayValuesObs.pipe(first(), map((displayResults) => {
|
|
126
141
|
// Assign the default component classes to complete configuration.
|
|
@@ -161,12 +176,6 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
161
176
|
if (this.searchableField.textInputValidator) {
|
|
162
177
|
this.inputCtrl.setValidators(this.searchableField.textInputValidator);
|
|
163
178
|
}
|
|
164
|
-
if (!this.defaultDisplay?.componentClass) {
|
|
165
|
-
this.defaultDisplay = {
|
|
166
|
-
...this.defaultDisplay,
|
|
167
|
-
componentClass: DbxDefaultSearchableFieldDisplayComponent
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
179
|
if (this.allowSyncValueToInput && this.multiSelect === false) {
|
|
171
180
|
this._singleValueSyncSubscription.subscription = this.displayValues$.subscribe((x) => {
|
|
172
181
|
if (x[0]) {
|
|
@@ -199,7 +208,6 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
199
208
|
text = (text || '').trim();
|
|
200
209
|
this.inputCtrl.setValue(text.trim());
|
|
201
210
|
}
|
|
202
|
-
// console.log('Add: ', text, this.inputCtrl.valid);
|
|
203
211
|
if (!this.inputCtrl.valid) {
|
|
204
212
|
return;
|
|
205
213
|
}
|
|
@@ -226,7 +234,10 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
226
234
|
return addedValue;
|
|
227
235
|
}
|
|
228
236
|
addValue(value) {
|
|
229
|
-
|
|
237
|
+
const textInput = this.textInput();
|
|
238
|
+
if (textInput) {
|
|
239
|
+
textInput.nativeElement.value = '';
|
|
240
|
+
}
|
|
230
241
|
this.inputCtrl.setValue(null);
|
|
231
242
|
this.setValues([...this.values, value]);
|
|
232
243
|
}
|
|
@@ -268,13 +279,10 @@ export class AbstractDbxSearchableValueFieldDirective extends FieldType {
|
|
|
268
279
|
this.formControl.markAsDirty();
|
|
269
280
|
this.formControl.markAsTouched();
|
|
270
281
|
}
|
|
271
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
272
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
282
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
283
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: AbstractDbxSearchableValueFieldDirective, viewQueries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
273
284
|
}
|
|
274
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
285
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxSearchableValueFieldDirective, decorators: [{
|
|
275
286
|
type: Directive
|
|
276
|
-
}]
|
|
277
|
-
type: ViewChild,
|
|
278
|
-
args: ['textInput']
|
|
279
|
-
}] } });
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFNBQVMsRUFBZ0IsY0FBYyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvSSxPQUFPLEVBQStCLGlDQUFpQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBZ0IsMkJBQTJCLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBbUIsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVwSixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQXdFeEM7Ozs7R0FJRztBQUVILE1BQU0sT0FBZ0Isd0NBQStMLFNBQVEsU0FBNkI7SUFDL08sS0FBSyxHQUFHLE1B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N0QsU0FBUzs4QkFvQlIsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIE1heWJlLCBjb252ZXJ0TWF5YmVUb0FycmF5LCBsYXN0VmFsdWUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIGFzQXJyYXksIGZpbHRlclVuaXF1ZVZhbHVlcyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnLCBtZXJnZURieEluamVjdGlvbkNvbXBvbmVudENvbmZpZ3MgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0LCBMb2FkaW5nU3RhdGUsIExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSwgc3VjY2Vzc1Jlc3VsdCwgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbi4gSWYgcHJvdmlkZWQsIGFsbG93U3RyaW5nVmFsdWVzIGlzIGNvbnNpZGVyZWQgdHJ1ZS5cbiAgICovXG4gIGNvbnZlcnRTdHJpbmdWYWx1ZT86ICh0ZXh0OiBzdHJpbmcpID0+IFQ7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBoYXNoaW5nIGRpc3BsYXkgdmFsdWVzIGFuZCBvbWl0dGluZyByZXBlYXQgdmFsdWVzLlxuICAgKlxuICAgKiBJZiBoYXNoRm9yVmFsdWUgaXMgbm90IHByb3ZpZGVkLCB0aGUgdmFsdWUncyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICBoYXNoRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxULCBIPjtcbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKi9cbiAgc2VhcmNoOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgc2VhcmNoZXMgb24gZW1wdHkgdGV4dC4gSXMgZmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIHNlYXJjaE9uRW1wdHlUZXh0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmF1bHQgaW5qZWN0ZWQgY29uZmlnIHRvIHVzZSBmb3IgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICBkaXNwbGF5PzogUGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIGRpc3BsYXlGb3JWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgdGhlIGFuY2hvciBmaWVsZCBvbiB2YWx1ZSBlbGVtZW50cy5cbiAgICpcbiAgICogVGhpcyBoYXMgbm8gZGVmYXVsdCBlZmZlY3QgaWYgYSBjb21wb25lbnQgY2xhc3MgaXMgcHJvdmlkZWQuXG4gICAqL1xuICB1c2VBbmNob3I/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlZCBmb3IgcmV0cmlldmluZyBhbiBhbmNob3IgdmFsdWUgZm9yIHZhbHVlcyB0aGF0IGhhdmUgbm8gYW5jaG9yIHZhbHVlIHNldC5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gdXNlQW5jaG9yIGlzIHRydWUuXG4gICAqL1xuICBhbmNob3JGb3JWYWx1ZT86IFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IFwiQ2xlYXJcIiBpbiB0aGUgYXV0Y29tcGxldGUgbGlzdC5cbiAgICovXG4gIHNob3dDbGVhclZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgc2VhcmNoIGlucHV0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaFwiXG4gICAqL1xuICBzZWFyY2hMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbi8qKlxuICogQWJzdHJhY3Qgc2VhcmNoYWJsZSBmaWVsZCB0aGF0IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3Igc2VhcmNoaW5nIGZvciB2YWx1ZXMsIGFuZCBmb3IgZGlzcGxheWluZyB2YWx1ZXMgdXNpbmcgT2JzZXJ2YWJsZXMuXG4gKlxuICogRGlzcGxheSB2YWx1ZXMgYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RGJ4U2VhcmNoYWJsZVZhbHVlRmllbGREaXJlY3RpdmU8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIEMgZXh0ZW5kcyBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+ID0gU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPj4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPEM+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbGxvdyBzeW5jaW5nIHRvXG4gICAqL1xuICBhbGxvd1N5bmNWYWx1ZVRvSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2V0L2dldCB2YWx1ZXMgYXMgYW4gYXJyYXkuXG4gICAqL1xuICBhYnN0cmFjdCBnZXQgbXVsdGlTZWxlY3QoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgb3ZlcnJpZGUgc2V0IGJ5IHRoZSBwYXJlbnQgY2xhc3MgZm9yIHBpY2tpbmcgYSBkZWZhdWx0IGRpc3BsYXkgZm9yIHRoaXMgZGlyZWN0aXZlLlxuICAgKi9cbiAgZGVmYXVsdERpc3BsYXk/OiBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc7XG5cbiAgQFZpZXdDaGlsZCgndGV4dElucHV0JylcbiAgdGV4dElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGlucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5pbnB1dEN0cmwudmFsdWUpLFxuICAgIG1hcCgoeCkgPT4geCB8fCAnJylcbiAgKTtcbiAgcmVhZG9ubHkgaW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuaW5wdXRWYWx1ZSQucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0c1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiA9IHRoaXMuaW5wdXRWYWx1ZVN0cmluZyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHRleHQpID0+XG4gICAgICAodGV4dCB8fCB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0ID8gdGhpcy5zZWFyY2godGV4dCA/PyAnJykgOiBvZihbXSkpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgICAgLy8gUmV0dXJuIGJlZ2luIGxvYWRpbmcgdG8gc2V0dXAgdGhlIGxvYWRpbmcgc3RhdGUuXG4gICAgICAgIHN0YXJ0V2l0aEJlZ2luTG9hZGluZygpXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBzZWFyY2hDb250ZXh0ID0gbmV3IExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSh7IG9iczogdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogZmFsc2UgfSk7XG5cbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlJDogT2JzZXJ2YWJsZTxUIHwgVFtdPiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSk7XG5cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy52YWx1ZXMkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzd2l0Y2hNYXAoKHZhbHVlczogVFtdKSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlcykpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlcyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSkpO1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQubmFtZSA/PyBjYW1lbENhc2UodGhpcy5sYWJlbCA/PyAodGhpcy5rZXkgYXMgc3RyaW5nKSk7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubGFiZWw7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKTogTWF5YmU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGlzUmVhZG9ubHlPckRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgc2VhcmNoYWJsZUZpZWxkKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IGFzQXJyYXlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYXNBcnJheVZhbHVlID8/IHRydWU7XG4gIH1cblxuICBnZXQgcGlja09ubHlPbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXNBcnJheVZhbHVlID09PSBmYWxzZSB8fCB0aGlzLm11bHRpU2VsZWN0ID09PSBmYWxzZTtcbiAgfVxuXG4gIGdldCBzZWFyY2hPbkVtcHR5VGV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuc2VhcmNoT25FbXB0eVRleHQgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gPz8gdGhpcy5rZXkpIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHVzZUFuY2hvcigpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFuY2hvckZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXkoKTogTWF5YmU8UGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmRpc3BsYXk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMgPz8gQm9vbGVhbih0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBnZXQgY29udmVydFN0cmluZ1ZhbHVlKCk6IE1heWJlPCh0ZXh0OiBzdHJpbmcpID0+IFQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuY29udmVydFN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zaG93Q2xlYXJWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaW5jbHVkZWQ6IGhhc0Rpc3BsYXksXG4gICAgICAgICAgZXhjbHVkZWQ6IG5lZWRzRGlzcGxheVxuICAgICAgICB9ID0gc2VwYXJhdGVWYWx1ZXMobWFwcGluZ1Jlc3VsdCwgKHgpID0+IEJvb2xlYW4oeFszXSkpO1xuXG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHREaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFt0aGlzLmRlZmF1bHREaXNwbGF5LCB0aGlzLmRpc3BsYXldKTtcbiAgICAgICAgICBjb25zdCBhbmNob3JGb3JWYWx1ZSA9IHRoaXMudXNlQW5jaG9yICYmIHRoaXMuYW5jaG9yRm9yVmFsdWU7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGRlZmF1bHQgY29tcG9uZW50IGNsYXNzZXMgdG8gY29tcGxldGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgeC5kaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtkZWZhdWx0RGlzcGxheSwgeC5kaXNwbGF5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF4LmFuY2hvciAmJiBhbmNob3JGb3JWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgeC5hbmNob3IgPSBhbmNob3JGb3JWYWx1ZSh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+LCBIXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgb2JzID0gb2YoaGFzRGlzcGxheS5tYXAoKHgpID0+IHhbM10pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoYWJsZUZpZWxkLnRleHRJbnB1dFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsaWRhdG9ycyh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kZWZhdWx0RGlzcGxheT8uY29tcG9uZW50Q2xhc3MpIHtcbiAgICAgIHRoaXMuZGVmYXVsdERpc3BsYXkgPSB7XG4gICAgICAgIC4uLnRoaXMuZGVmYXVsdERpc3BsYXksXG4gICAgICAgIGNvbXBvbmVudENsYXNzOiBEYnhEZWZhdWx0U2VhcmNoYWJsZUZpZWxkRGlzcGxheUNvbXBvbmVudFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbGxvd1N5bmNWYWx1ZVRvSW5wdXQgJiYgdGhpcy5tdWx0aVNlbGVjdCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3NpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb24gPSB0aGlzLmRpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeFswXSkge1xuICAgICAgICAgIHRoaXMuX3N5bmNTaW5nbGVWYWx1ZSh4WzBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9kaXNwbGF5SGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NpbmdsZVZhbHVlU3luY1N1YnNjcmlwdGlvbi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLnNlYXJjaENvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc3luYyB0aGUgaW5wdXQgY29udHJvbCB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gbXVsdGlTZWxlY3QgaXMgZmFsc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3N5bmNTaW5nbGVWYWx1ZSh2YWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0Q3RybC5zZXRWYWx1ZSh2YWx1ZS5sYWJlbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2FkZFdpdGhUZXh0VmFsdWUodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaGFibGVGaWVsZC5hbGxvd1N0cmluZ1ZhbHVlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0ZXh0ID0gKHRleHQgfHwgJycpLnRyaW0oKTtcbiAgICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHRleHQudHJpbSgpKTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZygnQWRkOiAnLCB0ZXh0LCB0aGlzLmlucHV0Q3RybC52YWxpZCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRDdHJsLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0U3RyaW5nVmFsdWUgPyB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSh0ZXh0KSA6ICh0ZXh0IGFzIHVua25vd24gYXMgVCk7XG4gICAgICB0aGlzLmFkZFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhZGRXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmFkZFZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICByZW1vdmVXaXRoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVZhbHVlKGRpc3BsYXlWYWx1ZS52YWx1ZSk7XG4gIH1cblxuICBfdHJ5QWRkQ3VycmVudElucHV0VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgbGV0IGFkZGVkVmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmFsbG93U3RyaW5nVmFsdWVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaW5wdXRDdHJsLnZhbHVlIHx8ICcnO1xuXG4gICAgICBpZiAoKHZhbHVlIHx8ICcnKS50cmltKCkpIHtcbiAgICAgICAgdGhpcy5fYWRkV2l0aFRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGFkZGVkVmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRlZFZhbHVlO1xuICB9XG5cbiAgYWRkVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5zZXRWYWx1ZXMoWy4uLnRoaXMudmFsdWVzLCB2YWx1ZV0pO1xuICB9XG5cbiAgcmVtb3ZlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICBsZXQgdmFsdWVzO1xuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICBjb25zdCBoYXNoVG9GaWx0ZXIgPSB0aGlzLmhhc2hGb3JWYWx1ZSh2YWx1ZSk7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHgpID0+IHggIT09IHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlcyh2YWx1ZXMpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZXMoW10pO1xuICB9XG5cbiAgc2V0VmFsdWVzKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgLy8gVXNlIHRvIGZpbHRlciBub24tdW5pcXVlIHZhbHVlcy5cbiAgICBpZiAodGhpcy5oYXNoRm9yVmFsdWUpIHtcbiAgICAgIHZhbHVlcyA9IGZpbHRlclVuaXF1ZVZhbHVlcyh2YWx1ZXMsIHRoaXMuaGFzaEZvclZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waWNrT25seU9uZSkge1xuICAgICAgdmFsdWVzID0gW2xhc3RWYWx1ZSh2YWx1ZXMpXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlcyk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBwcm90ZWN0ZWQgX2dldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZU9uRm9ybUNvbnRyb2w6IEFycmF5T3JWYWx1ZTxUPik6IFRbXSB7XG4gICAgY29uc3QgdmFsdWU6IFRbXSA9IHZhbHVlT25Gb3JtQ29udHJvbCAhPSBudWxsID8gYXNBcnJheSh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107IC8vIEFsd2F5cyByZXR1cm4gYW4gYXJyYXkuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVzOiBUW10pOiB2b2lkIHtcbiAgICBsZXQgbmV3VmFsdWU6IFQgfCBUW10gPSB2YWx1ZXM7XG5cbiAgICBpZiAoIXRoaXMuYXNBcnJheVZhbHVlKSB7XG4gICAgICBuZXdWYWx1ZSA9IFt2YWx1ZXNbMF1dLmZpbHRlcigoeCkgPT4geCAhPSBudWxsKVswXTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbn1cbiJdfQ==
|
|
287
|
+
}] });
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLG1CQUFtQixFQUFFLFNBQVMsRUFBZ0IsY0FBYyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDN0osT0FBTyxFQUErQixpQ0FBaUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQWdCLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVwSixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXdFdEQsTUFBTSxnQ0FBZ0MsR0FBRyxnQkFBZ0IsQ0FBQztBQUUxRCxNQUFNLGdDQUFnQyxHQUF5QztJQUM3RSxjQUFjLEVBQUUseUNBQXlDO0NBQzFELENBQUM7QUFFRjs7OztHQUlHO0FBRUgsTUFBTSxPQUFnQix3Q0FBK0wsU0FBUSxTQUE2QjtJQU14UDs7T0FFRztJQUNILHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUU5Qjs7T0FFRztJQUNILDZCQUE2QixHQUFtQixnQ0FBZ0MsQ0FBQztJQUV4RSxTQUFTLEdBQUcsU0FBUyxDQUF1QyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQSxVQUE0QixDQUFBLEVBQUUsQ0FBQyxDQUFDO0lBRWpILFNBQVMsR0FBRyxJQUFJLFdBQVcsQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUVoQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQXlCLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRWhELHVCQUF1QixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUNuRCxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQTJELElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUVuSCxXQUFXLEdBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDekUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQy9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUNwQixDQUFDO0lBRU8saUJBQWlCLEdBQXVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFFekcsbUJBQW1CLEdBQWlGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3RJLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2pCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsbURBQW1EO0lBQ25ELHFCQUFxQixFQUFFLENBQ3hCLENBQ0YsRUFDRCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVlLDRCQUE0QixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztJQUVoRSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEcsY0FBYyxHQUFtRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUNySCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLEVBQzFCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ08sdUJBQXVCLEdBQXdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4SixrQkFBa0IsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5SixPQUFPLEdBQW9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbEcsbUJBQW1CLEdBQWlGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM1SCxvQkFBb0IsRUFBRSxFQUN0QixTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUNuRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVPLGNBQWMsR0FBbUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUzSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEQsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVwRCw0QkFBNEIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFL0UsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSyxJQUFJLENBQUMsR0FBYyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLFdBQVcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBVyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQWlCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUM7SUFDcEQsQ0FBQztJQUVELDBCQUEwQixDQUFDLE1BQVc7UUFDcEMsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxNQUF5QztRQUN2RSxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3JELEdBQUcsQ0FBQyxDQUFDLGFBQWlFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUN4RyxxQkFBcUIsRUFBRSxFQUN2QixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxNQUF5QztRQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM5QixRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBeUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFtRyxDQUFDLENBQUM7WUFFN1EsTUFBTTtZQUNKLEVBQUU7WUFDRixRQUFRLEVBQUUsVUFBVSxFQUNwQixRQUFRLEVBQUUsWUFBWSxFQUN2QixHQUFHLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXhELElBQUksR0FBbUUsQ0FBQztZQUV4RSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLDRCQUE0QjtnQkFDNUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLE1BQU0sY0FBYyxHQUFHLGlDQUFpQyxDQUFDLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBRTNHLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFFN0QsR0FBRyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FDekIsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7b0JBQ3JCLGtFQUFrRTtvQkFDakUsY0FBeUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDdkYsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDZixDQUFDLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQzt3QkFDN0IsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUNBQWlDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7d0JBQzdFLENBQUM7d0JBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksY0FBYyxFQUFFLENBQUM7NEJBQ2hDLENBQUMsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvQixDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUVILHdDQUF3QztvQkFDeEMsTUFBTSxxQkFBcUIsR0FBNkQsY0FBcUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDMU0sTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV2Riw2REFBNkQ7b0JBQzdELHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV0RSw0QkFBNEI7b0JBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV2Rix5QkFBeUI7b0JBQ3pCLE9BQU8sZ0JBQWdCLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZ0RBQWdEO2dCQUNoRCxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbkYsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRVEsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGdCQUFnQixDQUFDLEtBQTBDO1FBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsSUFBWTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQXFCLENBQUM7WUFDL0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFlBQWlEO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxZQUFpRDtRQUN0RSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUV6QyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBUTtRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVuQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFRO1FBQ2xCLElBQUksTUFBTSxDQUFDO1FBRVgsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDNUUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLG1DQUFtQztRQUNuQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixNQUFNLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsaUJBQWlCO0lBQ1Asc0JBQXNCLENBQUMsa0JBQW1DO1FBQ2xFLE1BQU0sS0FBSyxHQUFRLGtCQUFrQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBCQUEwQjtRQUM1RyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxNQUFXO1FBQzFDLElBQUksUUFBUSxHQUFZLE1BQU0sQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzt3R0FwWG1CLHdDQUF3Qzs0RkFBeEMsd0NBQXdDLDZHQWdCOEIsVUFBVTs7NEZBaEJoRix3Q0FBd0M7a0JBRDdELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIE1heWJlLCBjb252ZXJ0TWF5YmVUb0FycmF5LCBsYXN0VmFsdWUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIGFzQXJyYXksIGZpbHRlclVuaXF1ZVZhbHVlcywgQ29uZmlndXJhYmxlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcsIG1lcmdlRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlncyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBTdWJzY3JpcHRpb25PYmplY3QsIExvYWRpbmdTdGF0ZSwgc3VjY2Vzc1Jlc3VsdCwgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nLCBsb2FkaW5nU3RhdGVDb250ZXh0LCBpc0xvYWRpbmdTdGF0ZUluTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdCwgbWFwLCBtZXJnZU1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGRTdHJpbmdTZWFyY2hGbiwgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuLCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgRGJ4RGVmYXVsdFNlYXJjaGFibGVGaWVsZERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGFibGUuZmllbGQuYXV0b2NvbXBsZXRlLml0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlLWFsbCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdWYWx1ZUZpZWxkc0ZpZWxkUHJvcHMgZXh0ZW5kcyBGb3JtbHlGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIEN1c3RvbSBpbnB1dCB2YWxpZGF0b3JzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dElucHV0VmFsaWRhdG9yPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcywgU3RyaW5nVmFsdWVGaWVsZHNGaWVsZFByb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IHN0cmluZyB2YWx1ZXMgdG8gYmUgdXNlZCBkaXJlY3RseSwgb3IgaWYgdmFsdWVzIGNhbiBvbmx5IGJlIGNob3NlbiBmcm9tIHNlYXJjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFsbG93U3RyaW5nVmFsdWVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICByZWFkb25seSBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgY29udmVyc2lvbiBmdW5jdGlvbi4gSWYgcHJvdmlkZWQsIGFsbG93U3RyaW5nVmFsdWVzIGlzIGNvbnNpZGVyZWQgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnZlcnRTdHJpbmdWYWx1ZT86ICh0ZXh0OiBzdHJpbmcpID0+IFQ7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBoYXNoaW5nIGRpc3BsYXkgdmFsdWVzIGFuZCBvbWl0dGluZyByZXBlYXQgdmFsdWVzLlxuICAgKlxuICAgKiBJZiBoYXNoRm9yVmFsdWUgaXMgbm90IHByb3ZpZGVkLCB0aGUgdmFsdWUncyB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgaXMuXG4gICAqL1xuICByZWFkb25seSBoYXNoRm9yVmFsdWU/OiBTZWFyY2hhYmxlVmFsdWVGaWVsZEhhc2hGbjxULCBIPjtcbiAgLyoqXG4gICAqIFBlcmZvcm1zIGEgc2VhcmNoLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFN0cmluZ1NlYXJjaEZuPFQsIE0+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxsb3cgc2VhcmNoZXMgb24gZW1wdHkgdGV4dC4gSXMgZmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHNlYXJjaE9uRW1wdHlUZXh0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlZmF1bHQgaW5qZWN0ZWQgY29uZmlnIHRvIHVzZSBmb3IgZGlzcGxheSB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5PzogUGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byB1c2UgdGhlIGFuY2hvciBmaWVsZCBvbiB2YWx1ZSBlbGVtZW50cy5cbiAgICpcbiAgICogVGhpcyBoYXMgbm8gZGVmYXVsdCBlZmZlY3QgaWYgYSBjb21wb25lbnQgY2xhc3MgaXMgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VBbmNob3I/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlZCBmb3IgcmV0cmlldmluZyBhbiBhbmNob3IgdmFsdWUgZm9yIHZhbHVlcyB0aGF0IGhhdmUgbm8gYW5jaG9yIHZhbHVlIHNldC5cbiAgICpcbiAgICogT25seSB1c2VkIHdoZW4gdXNlQW5jaG9yIGlzIHRydWUuXG4gICAqL1xuICByZWFkb25seSBhbmNob3JGb3JWYWx1ZT86IFNlYXJjaGFibGVWYWx1ZUZpZWxkQW5jaG9yRm48VCwgTT47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IFwiQ2xlYXJcIiBpbiB0aGUgYXV0Y29tcGxldGUgbGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3dDbGVhclZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgc2VhcmNoIGlucHV0LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBcIlNlYXJjaFwiXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmNvbnN0IERFRkFVTFRfU0VBUkNIX0lOUFVUX1BMQUNFSE9MREVSID0gJ1R5cGUgdG8gU2VhcmNoJztcblxuY29uc3QgREVGQVVMVF9TRUFSQ0hBQkxFX0ZJRUxEX0RJU1BMQVk6IFBhcnRpYWw8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPiA9IHtcbiAgY29tcG9uZW50Q2xhc3M6IERieERlZmF1bHRTZWFyY2hhYmxlRmllbGREaXNwbGF5Q29tcG9uZW50XG59O1xuXG4vKipcbiAqIEFic3RyYWN0IHNlYXJjaGFibGUgZmllbGQgdGhhdCBwcm92aWRlcyBhIGZlYXR1cmUgZm9yIHNlYXJjaGluZyBmb3IgdmFsdWVzLCBhbmQgZm9yIGRpc3BsYXlpbmcgdmFsdWVzIHVzaW5nIE9ic2VydmFibGVzLlxuICpcbiAqIERpc3BsYXkgdmFsdWVzIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERieFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlyZWN0aXZlPFQsIE0gPSB1bmtub3duLCBIIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBDIGV4dGVuZHMgU2VhcmNoYWJsZVZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiA9IFNlYXJjaGFibGVWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxDPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzZXQvZ2V0IHZhbHVlcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIGFic3RyYWN0IGdldCBtdWx0aVNlbGVjdCgpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdmVycmlkZSBzZXQgYnkgdGhlIHBhcmVudCBjbGFzcyBmb3Igd2hldGhlciBvciBub3QgdG8gYWxsb3cgdGhlIGN1cnJlbnQgdmFsdWUgdG8gc3luYyB0byB0aGUgaW5wdXQuXG4gICAqL1xuICBhbGxvd1N5bmNWYWx1ZVRvSW5wdXQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVmYXVsdCBwbGFjZWhvbGRlciB0ZXh0IHRvIHVzZSB3aGVuIHNlYXJjaE9uRW1wdHlUZXh0IGlzIGZhbHNlLlxuICAgKi9cbiAgZGVmYXVsdFNlYXJjaElucHV0UGxhY2Vob2xkZXI/OiBNYXliZTxzdHJpbmc+ID0gREVGQVVMVF9TRUFSQ0hfSU5QVVRfUExBQ0VIT0xERVI7XG5cbiAgcmVhZG9ubHkgdGV4dElucHV0ID0gdmlld0NoaWxkPHN0cmluZywgRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3RleHRJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KTtcblxuICByZWFkb25seSBpbnB1dEN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2xlYXJEaXNwbGF5SGFzaE1hcFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxILCBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuXG4gIHJlYWRvbmx5IGlucHV0VmFsdWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmlucHV0Q3RybC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICBzdGFydFdpdGgodGhpcy5pbnB1dEN0cmwudmFsdWUpLFxuICAgIG1hcCgoeCkgPT4geCB8fCAnJylcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlU3RyaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dFZhbHVlJC5waXBlKGRlYm91bmNlVGltZSgyMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSBzZWFyY2hSZXN1bHRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy5pbnB1dFZhbHVlU3RyaW5nJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodGV4dCkgPT5cbiAgICAgICh0ZXh0IHx8IHRoaXMuc2VhcmNoT25FbXB0eVRleHQgPyB0aGlzLnNlYXJjaCh0ZXh0ID8/ICcnKSA6IG9mKFtdKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXMoeCkpLFxuICAgICAgICAvLyBSZXR1cm4gYmVnaW4gbG9hZGluZyB0byBzZXR1cCB0aGUgbG9hZGluZyBzdGF0ZS5cbiAgICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKClcbiAgICAgIClcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHNlYXJjaENvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiBmYWxzZSB9KTtcbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+ID0gdGhpcy5zZWFyY2hSZXN1bHRzU3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py52YWx1ZSA/PyBbXSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNMb2FkaW5nU2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnNlYXJjaFJlc3VsdHNTdGF0ZSQucGlwZShtYXAoaXNMb2FkaW5nU3RhdGVJbkxvYWRpbmdTdGF0ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBfZm9ybUNvbnRyb2xWYWx1ZSQ6IE9ic2VydmFibGU8VCB8IFRbXT4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSksIHNoYXJlUmVwbGF5KDEpKSkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuX2Zvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc3dpdGNoTWFwKCh2YWx1ZXM6IFRbXSkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlWYWx1ZXMkOiBPYnNlcnZhYmxlPENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPiA9IHRoaXMuZGlzcGxheVZhbHVlc1N0YXRlJC5waXBlKG1hcCgoeCkgPT4geD8udmFsdWUgPz8gW10pKTtcblxuICByZWFkb25seSBpbnB1dFZhbHVlU2lnbmFsID0gdG9TaWduYWwodGhpcy5pbnB1dFZhbHVlJCk7XG4gIHJlYWRvbmx5IHNlYXJjaFJlc3VsdHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnNlYXJjaFJlc3VsdHMkKTtcbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZGlzcGxheVZhbHVlcyQpO1xuXG4gIHJlYWRvbmx5IGlzTG9hZGluZ1NlYXJjaFJlc3VsdHNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzTG9hZGluZ1NlYXJjaFJlc3VsdHMkKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm5hbWUgPz8gY2FtZWxDYXNlKHRoaXMubGFiZWwgPz8gKHRoaXMua2V5IGFzIHN0cmluZykpO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWFkb25seTtcbiAgfVxuXG4gIGdldCBpc1JlYWRvbmx5T3JEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHNlYXJjaGFibGVGaWVsZCgpOiBTZWFyY2hhYmxlVmFsdWVGaWVsZHNGaWVsZFByb3BzPFQsIE0sIEg+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcztcbiAgfVxuXG4gIGdldCBhc0FycmF5VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFzQXJyYXlWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHBpY2tPbmx5T25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFzQXJyYXlWYWx1ZSA9PT0gZmFsc2UgfHwgdGhpcy5tdWx0aVNlbGVjdCA9PT0gZmFsc2U7XG4gIH1cblxuICBnZXQgc2VhcmNoT25FbXB0eVRleHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnNlYXJjaE9uRW1wdHlUZXh0ID8/IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaElucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgJycge1xuICAgIGNvbnN0IHNlYXJjaE9uRW1wdHkgPSB0aGlzLnNlYXJjaE9uRW1wdHlUZXh0O1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5zZWFyY2hhYmxlRmllbGQucGxhY2Vob2xkZXI7XG4gICAgY29uc3QgdGVzdCA9IHBsYWNlaG9sZGVyIHx8IChzZWFyY2hPbkVtcHR5ID8gdW5kZWZpbmVkIDogdGhpcy5kZWZhdWx0U2VhcmNoSW5wdXRQbGFjZWhvbGRlcikgfHwgJyc7XG4gICAgcmV0dXJuIHRlc3Q7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLnByb3BzLmF0dHJpYnV0ZXM/LlsnYXV0b2NvbXBsZXRlJ10gPz8gdGhpcy5rZXkpIGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBoYXNoRm9yVmFsdWUoKTogU2VhcmNoYWJsZVZhbHVlRmllbGRIYXNoRm48VCwgSD4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIHVua25vd24gYXMgSCk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuZGlzcGxheUZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IHVzZUFuY2hvcigpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnVzZUFuY2hvcjtcbiAgfVxuXG4gIGdldCBhbmNob3JGb3JWYWx1ZSgpOiBNYXliZTxTZWFyY2hhYmxlVmFsdWVGaWVsZEFuY2hvckZuPFQsIE0+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmFuY2hvckZvclZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXkoKTogTWF5YmU8UGFydGlhbDxEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWc+PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLmRpc3BsYXk7XG4gIH1cblxuICBnZXQgc2VhcmNoKCk6IFNlYXJjaGFibGVWYWx1ZUZpZWxkU3RyaW5nU2VhcmNoRm48VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2g7XG4gIH1cblxuICBnZXQgdmFsdWVzKCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlT25Gb3JtQ29udHJvbCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSA/PyBbXTtcbiAgfVxuXG4gIGdldCBhbGxvd1N0cmluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuYWxsb3dTdHJpbmdWYWx1ZXMgPz8gQm9vbGVhbih0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSk7XG4gIH1cblxuICBnZXQgY29udmVydFN0cmluZ1ZhbHVlKCk6IE1heWJlPCh0ZXh0OiBzdHJpbmcpID0+IFQ+IHtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hhYmxlRmllbGQuY29udmVydFN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHNob3dDbGVhclZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zaG93Q2xlYXJWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaGFibGVGaWVsZC5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJztcbiAgfVxuXG4gIGdldCByZWZyZXNoRGlzcGxheVZhbHVlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoYWJsZUZpZWxkLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBDb25maWd1cmVkU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChkaXNwbGF5TWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgdGhpcy5oYXNoRm9yVmFsdWUoeC52YWx1ZSldIGFzIFtTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+LCBIXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBkaXNwbGF5TWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgSCwgU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPiwgQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgaW5jbHVkZWQ6IGhhc0Rpc3BsYXksXG4gICAgICAgICAgZXhjbHVkZWQ6IG5lZWRzRGlzcGxheVxuICAgICAgICB9ID0gc2VwYXJhdGVWYWx1ZXMobWFwcGluZ1Jlc3VsdCwgKHgpID0+IEJvb2xlYW4oeFszXSkpO1xuXG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8Q29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHREaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtERUZBVUxUX1NFQVJDSEFCTEVfRklFTERfRElTUExBWSwgdGhpcy5kaXNwbGF5XSk7XG5cbiAgICAgICAgICBjb25zdCBhbmNob3JGb3JWYWx1ZSA9IHRoaXMudXNlQW5jaG9yICYmIHRoaXMuYW5jaG9yRm9yVmFsdWU7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGRlZmF1bHQgY29tcG9uZW50IGNsYXNzZXMgdG8gY29tcGxldGUgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgICAgKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyYWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPj5bXSkuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgheC5kaXNwbGF5KSB7XG4gICAgICAgICAgICAgICAgICB4LmRpc3BsYXkgPSBkZWZhdWx0RGlzcGxheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgeC5kaXNwbGF5ID0gbWVyZ2VEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWdzKFtkZWZhdWx0RGlzcGxheSwgeC5kaXNwbGF5XSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF4LmFuY2hvciAmJiBhbmNob3JGb3JWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgeC5hbmNob3IgPSBhbmNob3JGb3JWYWx1ZSh4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbQ29uZmlndXJlZFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+LCBIXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIENvbmZpZ3VyZWRTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pO1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZUluZGV4SGFzaE1hcCA9IG5ldyBNYXAoZGlzcGxheVJlc3VsdHNNYXBwaW5nLm1hcCgoW3gsIGhhc2hdKSA9PiBbaGFzaCwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIGRpc3BsYXlSZXN1bHRzTWFwcGluZy5mb3JFYWNoKChbeCwgaGFzaF0pID0+IGRpc3BsYXlNYXAuc2V0KGhhc2gsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFszXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoYXQuXG4gICAgICAgICAgb2JzID0gb2YoaGFzRGlzcGxheS5tYXAoKHgpID0+IHhbM10pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoYWJsZUZpZWxkLnRleHRJbnB1dFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsaWRhdG9ycyh0aGlzLnNlYXJjaGFibGVGaWVsZC50ZXh0SW5wdXRWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93U3luY1ZhbHVlVG9JbnB1dCAmJiB0aGlzLm11bHRpU2VsZWN0ID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh4WzBdKSB7XG4gICAgICAgICAgdGhpcy5fc3luY1NpbmdsZVZhbHVlKHhbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2luZ2xlVmFsdWVTeW5jU3Vic2NyaXB0aW9uLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuc2VhcmNoQ29udGV4dC5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBzeW5jIHRoZSBpbnB1dCBjb250cm9sIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlLlxuICAgKlxuICAgKiBPbmx5IHVzZWQgd2hlbiBtdWx0aVNlbGVjdCBpcyBmYWxzZS5cbiAgICovXG4gIHByb3RlY3RlZCBfc3luY1NpbmdsZVZhbHVlKHZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKHZhbHVlLmxhYmVsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfYWRkV2l0aFRleHRWYWx1ZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoYWJsZUZpZWxkLmFsbG93U3RyaW5nVmFsdWVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIHRleHQgPSAodGV4dCB8fCAnJykudHJpbSgpO1xuICAgICAgdGhpcy5pbnB1dEN0cmwuc2V0VmFsdWUodGV4dC50cmltKCkpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbnB1dEN0cmwudmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGV4dCkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnZlcnRTdHJpbmdWYWx1ZSA/IHRoaXMuY29udmVydFN0cmluZ1ZhbHVlKHRleHQpIDogKHRleHQgYXMgdW5rbm93biBhcyBUKTtcbiAgICAgIHRoaXMuYWRkVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFdpdGhEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMuYWRkVmFsdWUoZGlzcGxheVZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIHJlbW92ZVdpdGhEaXNwbGF5VmFsdWUoZGlzcGxheVZhbHVlOiBTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPik6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlVmFsdWUoZGlzcGxheVZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIF90cnlBZGRDdXJyZW50SW5wdXRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICBsZXQgYWRkZWRWYWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWxsb3dTdHJpbmdWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dEN0cmwudmFsdWUgfHwgJyc7XG5cbiAgICAgIGlmICgodmFsdWUgfHwgJycpLnRyaW0oKSkge1xuICAgICAgICB0aGlzLl9hZGRXaXRoVGV4dFZhbHVlKHZhbHVlKTtcbiAgICAgICAgYWRkZWRWYWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZGVkVmFsdWU7XG4gIH1cblxuICBhZGRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IHRleHRJbnB1dCA9IHRoaXMudGV4dElucHV0KCk7XG5cbiAgICBpZiAodGV4dElucHV0KSB7XG4gICAgICB0ZXh0SW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRDdHJsLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuc2V0VmFsdWVzKFsuLi50aGlzLnZhbHVlcywgdmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgbGV0IHZhbHVlcztcblxuICAgIGlmICh0aGlzLmhhc2hGb3JWYWx1ZSkge1xuICAgICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSAhPT0gaGFzaFRvRmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh4KSA9PiB4ICE9PSB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWYWx1ZXModmFsdWVzKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWVzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVzKFtdKTtcbiAgfVxuXG4gIHNldFZhbHVlcyh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaWx0ZXJVbmlxdWVWYWx1ZXModmFsdWVzLCB0aGlzLmhhc2hGb3JWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGlja09ubHlPbmUpIHtcbiAgICAgIHZhbHVlcyA9IFtsYXN0VmFsdWUodmFsdWVzKV0uZmlsdGVyKCh4KSA9PiB4ICE9IG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXMpO1xuICB9XG5cbiAgLy8gTUFSSzogSW50ZXJuYWxcbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBBcnJheU9yVmFsdWU8VD4pOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlOiBUW10gPSB2YWx1ZU9uRm9ybUNvbnRyb2wgIT0gbnVsbCA/IGFzQXJyYXkodmFsdWVPbkZvcm1Db250cm9sKSA6IFtdOyAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlOiBUIHwgVFtdID0gdmFsdWVzO1xuXG4gICAgaWYgKCF0aGlzLmFzQXJyYXlWYWx1ZSkge1xuICAgICAgbmV3VmFsdWUgPSBbdmFsdWVzWzBdXS5maWx0ZXIoKHgpID0+IHggIT0gbnVsbClbMF07XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -66,4 +66,4 @@ export function searchableTextField(config) {
|
|
|
66
66
|
})
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYWJsZS5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBdUIsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBbUQsTUFBTSxhQUFhLENBQUM7QUFLN0k7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsMkNBQTJDLENBQTJELEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQWtQO0lBQy9ZLE9BQU8sQ0FBQyxNQUF5QyxFQUFFLEVBQUU7UUFDbkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLFNBQXdELENBQUM7UUFFN0QsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3JELFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDYixNQUFNLFNBQVMsR0FBbUQsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVyRyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzNDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ25CLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQztvQkFDOUMsTUFBTSxJQUFJLEdBQWEsVUFBVSxFQUFFLElBQUksQ0FBQztvQkFFeEMsT0FBTzt3QkFDTCxHQUFHLENBQUM7d0JBQ0osTUFBTTt3QkFDTixJQUFJO3FCQUNMLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FDeEMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUtELE1BQU0sVUFBVSx5QkFBeUIsQ0FBYyxNQUEwQztJQUMvRixPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLEdBQUcsTUFBTTtRQUNULGlCQUFpQixFQUFFLElBQUk7S0FDeEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUlELE1BQU0sVUFBVSxtQkFBbUIsQ0FBd0QsTUFBMEM7SUFDbkksTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkQsT0FBTyxXQUFXLENBQUM7UUFDakIsR0FBRztRQUNILElBQUksRUFBRSxxQkFBcUI7UUFDM0IsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsR0FBRyxNQUFNO1lBQ1QsV0FBVyxFQUFFLFdBQVcsSUFBSSxRQUFRO1lBQ3BDLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBS0QsTUFBTSxVQUFVLG1CQUFtQixDQUF3RCxNQUEwQztJQUNuSSxNQUFNLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFDLE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUscUJBQXFCO1FBQzNCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLEdBQUcsTUFBTTtZQUNULFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXJyYXlUb01hcCwgTWF5YmUsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlLCBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlIH0gZnJvbSAnLi9zZWFyY2hhYmxlJztcbmltcG9ydCB7IFNlYXJjaGFibGVDaGlwVmFsdWVGaWVsZHNGaWVsZFByb3BzIH0gZnJvbSAnLi9zZWFyY2hhYmxlLmNoaXAuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGFibGVUZXh0VmFsdWVGaWVsZHNGaWVsZFByb3BzIH0gZnJvbSAnLi9zZWFyY2hhYmxlLnRleHQuZmllbGQuY29tcG9uZW50JztcblxuLyoqXG4gKiBVc2VkIHRvIGNyZWF0ZSBhIFNlYXJjaGFibGVWYWx1ZUZpZWxkRGlzcGxheUZuIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgbWV0YWRhdGEgZm9yIGl0ZW1zIHRoYXQgYXJlIG1pc3NpbmcgdGhlaXIgbWV0YWRhdGEgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIHByb3Blcmx5LlxuICpcbiAqIEBwYXJhbSBwYXJhbTBcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlTWV0YUZpbHRlclNlYXJjaGFibGVGaWVsZFZhbHVlRGlzcGxheUZuPFQgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgPSBzdHJpbmcgfCBudW1iZXIsIE0gPSB1bmtub3duPih7IGxvYWRNZXRhRm9yVmFsdWVzLCBtYWtlRGlzcGxheUZvclZhbHVlcyB9OiB7IGxvYWRNZXRhRm9yVmFsdWVzOiAodmFsdWVzOiBTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10pID0+IE9ic2VydmFibGU8U2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdPjsgbWFrZURpc3BsYXlGb3JWYWx1ZXM6ICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT5bXSkgPT4gT2JzZXJ2YWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxULCBNPltdPiB9KTogU2VhcmNoYWJsZVZhbHVlRmllbGREaXNwbGF5Rm48VCwgTT4ge1xuICByZXR1cm4gKHZhbHVlczogU2VhcmNoYWJsZVZhbHVlRmllbGRWYWx1ZTxULCBNPltdKSA9PiB7XG4gICAgY29uc3QgeyBpbmNsdWRlZDogbG9hZGVkLCBleGNsdWRlZDogbmVlZExvYWRpbmcgfSA9IHNlcGFyYXRlVmFsdWVzKHZhbHVlcywgKHgpID0+IEJvb2xlYW4oeC5tZXRhKSk7XG4gICAgbGV0IGFsbFZhbHVlczogT2JzZXJ2YWJsZTxTZWFyY2hhYmxlVmFsdWVGaWVsZFZhbHVlPFQsIE0+W10+O1xuXG4gICAgaWYgKG5lZWRMb2FkaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvYWRpbmdSZXN1bHQgPSBsb2FkTWV0YUZvclZhbHVlcyhuZWVkTG9hZGluZyk7XG4gICAgICBhbGxWYWx1ZXMgPSBsb2FkaW5nUmVzdWx0LnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0TWFwOiBNYXA8TWF5YmU8VD4sIFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8VCwgTT4+ID0gYXJyYXlUb01hcChyZXN1bHQsICh4KSA9PiB4LnZhbHVlKTtcblxuICAgICAgICAgIGNvbnN0IG1lcmdlZFdpdGhMb2FkID0gbmVlZExvYWRpbmcubWFwKCh4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHgudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBsb2FkZWRJdGVtID0gcmVzdWx0TWFwLmdldChpZCk7XG4gICAgICAgICAgICBjb25zdCBhbmNob3IgPSB4LmFuY2hvciA/PyBsb2FkZWRJdGVtPy5hbmNob3I7XG4gICAgICAgICAgICBjb25zdCBtZXRhOiBNYXliZTxNPiA9IGxvYWRlZEl0ZW0/Lm1ldGE7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLngsXG4gICAgICAgICAgICAgIGFuY2hvcixcbiAgICAgICAgICAgICAgbWV0YVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiBtZXJnZWRXaXRoTG9hZDtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiBbLi4ubG9hZGVkLCAuLi5yZXN1bHRdKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxsVmFsdWVzID0gb2YobG9hZGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsVmFsdWVzLnBpcGUoc3dpdGNoTWFwKG1ha2VEaXNwbGF5Rm9yVmFsdWVzKSk7XG4gIH07XG59XG5cbi8vIE1BUks6IENoaXBzXG5leHBvcnQgdHlwZSBTdHJpbmdTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPE0gPSB1bmtub3duPiA9IE9taXQ8U2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxzdHJpbmcsIE0+LCAnYWxsb3dTdHJpbmdWYWx1ZXMnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaGFibGVTdHJpbmdDaGlwRmllbGQ8TSA9IHVua25vd24+KGNvbmZpZzogU3RyaW5nU2VhcmNoYWJsZUNoaXBGaWVsZENvbmZpZzxNPik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIHNlYXJjaGFibGVDaGlwRmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICBhbGxvd1N0cmluZ1ZhbHVlczogdHJ1ZVxuICB9KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPFQgPSB1bmtub3duLCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnLCBTZWFyY2hhYmxlQ2hpcFZhbHVlRmllbGRzRmllbGRQcm9wczxULCBNLCBIPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoYWJsZUNoaXBGaWVsZDxULCBNID0gdW5rbm93biwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4oY29uZmlnOiBTZWFyY2hhYmxlQ2hpcEZpZWxkQ29uZmlnPFQsIE0sIEg+KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSwgcGxhY2Vob2xkZXIsIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdzZWFyY2hhYmxlY2hpcGZpZWxkJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIgPz8gJ0FkZC4uLicsXG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSlcbiAgfSk7XG59XG5cbi8vIE1BUks6IFRleHRcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoYWJsZVRleHRGaWVsZENvbmZpZzxUID0gdW5rbm93biwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZywgU2VhcmNoYWJsZVRleHRWYWx1ZUZpZWxkc0ZpZWxkUHJvcHM8VCwgTSwgSD4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaGFibGVUZXh0RmllbGQ8VCwgTSA9IHVua25vd24sIEggZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+KGNvbmZpZzogU2VhcmNoYWJsZVRleHRGaWVsZENvbmZpZzxULCBNLCBIPik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXksIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdzZWFyY2hhYmxldGV4dGZpZWxkJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICAuLi5jb25maWcsXG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSlcbiAgfSk7XG59XG4iXX0=
|