@loxia/mst-viewer 8.1.3-202511170721 → 8.1.3-202511171536
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/atomic-components/message/message.component.mjs +3 -3
- package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.entity.mjs +7 -4
- package/esm2022/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +18 -12
- package/esm2022/lib/components/rpe/rpe.component.mjs +6 -2
- package/esm2022/lib/components/svg-visualisatie/svg-visualisatie.component.mjs +8 -7
- package/esm2022/lib/components/viewer-controls/viewer-controls.component.mjs +7 -3
- package/esm2022/lib/model/ritdeel.mjs +4 -4
- package/esm2022/lib/mst-viewer.module.mjs +6 -5
- package/esm2022/lib/resources/signaleringsbeeldinfo.resource.mjs +2 -1
- package/esm2022/lib/services/editor.service.mjs +3 -1
- package/esm2022/lib/services/rit-lezer.service.mjs +4 -4
- package/esm2022/lib/state/actions/actions.mjs +2 -4
- package/esm2022/lib/state/effect/bepaal-ongeplande-acties.effect.mjs +1 -1
- package/esm2022/lib/state/effect/bepaal-sb-infos.effect.mjs +1 -1
- package/esm2022/lib/state/effect/beweging-invoegen.effect.mjs +1 -1
- package/esm2022/lib/state/effect/delete-ongeplande-actie.effect.mjs +1 -1
- package/esm2022/lib/state/effect/laad-route-files.effect.mjs +2 -2
- package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +13 -13
- package/esm2022/lib/state/effect/ritdelen.effect.mjs +22 -22
- package/esm2022/lib/state/mst-editor-state.mjs +10 -13
- package/esm2022/lib/state/reducer/rit-delen.reducer.mjs +1 -1
- package/esm2022/lib/util/actie-helper.mjs +20 -17
- package/esm2022/lib/util/actie-popover-bepaler.mjs +2 -2
- package/esm2022/lib/util/multi-map.mjs +2 -3
- package/esm2022/lib/util/utils.mjs +2 -5
- package/esm2022/lib/util/zone-util.mjs +2 -1
- package/fesm2022/loxia-mst-viewer.mjs +230 -205
- package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
- package/lib/atomic-components/message/message.component.d.ts +2 -2
- package/lib/atomic-components/progress-indicator/progress-indicator.entity.d.ts +1 -1
- package/lib/components/ritdelen-lijst/ritdelen-lijst.component.d.ts +2 -2
- package/lib/components/rpe/rpe.component.d.ts +1 -1
- package/lib/components/svg-visualisatie/svg-visualisatie.component.d.ts +1 -1
- package/lib/components/viewer-controls/viewer-controls.component.d.ts +2 -2
- package/lib/model/ritdeel.d.ts +7 -6
- package/lib/state/actions/actions.d.ts +1 -6
- package/lib/state/effect/delete-ongeplande-actie.effect.d.ts +1 -1
- package/lib/state/effect/laad-route-files.effect.d.ts +2 -1
- package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +9 -9
- package/lib/state/effect/ritdelen.effect.d.ts +7 -6
- package/lib/state/mst-editor-state.d.ts +20 -83
- package/lib/util/actie-helper.d.ts +4 -4
- package/lib/util/utils.d.ts +0 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createReducer, on } from '@ngrx/store';
|
|
2
|
+
import { ProgressIndicator } from '../atomic-components/progress-indicator/progress-indicator.entity';
|
|
2
3
|
import { NieuweRoute } from '../model/nieuwe-route';
|
|
3
4
|
import { ArrayMultimap } from '../util/multi-map';
|
|
4
5
|
import * as MstActions from './actions/actions';
|
|
@@ -6,7 +7,7 @@ import { ritdelenReducer } from './reducer/rit-delen.reducer';
|
|
|
6
7
|
const onIdsActionHandler = (action) => on(action, (_, { ids }) => ids);
|
|
7
8
|
const createIdsReducer = (action) => createReducer([], onIdsActionHandler(action));
|
|
8
9
|
export const editableReducer = createReducer(true, on(MstActions.setEditable, (_, { editable }) => editable));
|
|
9
|
-
export const progressIndicatorReducer = createReducer(
|
|
10
|
+
export const progressIndicatorReducer = createReducer({}, on(MstActions.ShowProgress, () => ({ progressIndicator: new ProgressIndicator() })), on(MstActions.ClearProgress, () => ({})));
|
|
10
11
|
export const svgInfoReducer = createReducer([], on(MstActions.SetSvgInfos, (_, { svgInfos }) => svgInfos));
|
|
11
12
|
export const debugReducer = createReducer(false, on(MstActions.SetDebug, (_, { debug }) => debug));
|
|
12
13
|
export const ritSelectieIdsReducer = createIdsReducer(MstActions.SetRitSelectieIds);
|
|
@@ -32,12 +33,10 @@ export const ongeplandeActieReducer = createReducer(new ArrayMultimap(), on(MstA
|
|
|
32
33
|
ongeplandeActie.puics.forEach(puic => ongeplandeActies.delete(puic, ongeplandeActie));
|
|
33
34
|
return new ArrayMultimap(ongeplandeActies);
|
|
34
35
|
}));
|
|
35
|
-
export const ongeplandeActieSelectieIdsReducer = createReducer([],
|
|
36
|
-
// on(MstActions.SetOngeplandeActieSelectieIds, (_, { ids }) => ids),
|
|
37
|
-
onIdsActionHandler(MstActions.SetOngeplandeActieSelectieIds), on(MstActions.AddOngeplandeActie, (ids, { ongeplandeActie }) => {
|
|
36
|
+
export const ongeplandeActieSelectieIdsReducer = createReducer([], onIdsActionHandler(MstActions.SetOngeplandeActieSelectieIds), on(MstActions.AddOngeplandeActie, (ids, { ongeplandeActie }) => {
|
|
38
37
|
ongeplandeActie.puics.filter(puic => !ids.includes(puic)).forEach(puic => ids.push(puic));
|
|
39
38
|
return [...ids];
|
|
40
|
-
}), on(MstActions.DeleteOngeplandeActieSelectieId, (ids, { id }) =>
|
|
39
|
+
}), on(MstActions.DeleteOngeplandeActieSelectieId, (ids, { id }) => ids.includes(id) ? ids.filter(_id => _id !== id) : ids));
|
|
41
40
|
export const gebrokenRitSelectieIdsReducer = createIdsReducer(MstActions.SetGebrokenRitSelectieIds);
|
|
42
41
|
export const alternatievenSelectieIdsReducer = createIdsReducer(MstActions.SetAlternatievenSelectieIds);
|
|
43
42
|
export const beginSeinSelectieIdsReducer = createIdsReducer(MstActions.SetBeginSeinSelectieIds);
|
|
@@ -46,16 +45,15 @@ export const alternatievenClickableIdsReducer = createIdsReducer(MstActions.SetA
|
|
|
46
45
|
export const eindSeinenClickableIdsReducer = createIdsReducer(MstActions.SetEindSeinenClickableIds);
|
|
47
46
|
export const connectorClickableIdsReducer = createIdsReducer(MstActions.SetConnectorenClickableIds);
|
|
48
47
|
export const beginSeinRightClickableIdsReducer = createIdsReducer(MstActions.SetBeginSeinRightClickableIds);
|
|
49
|
-
export const nieuweRouteReducer = createReducer(
|
|
48
|
+
export const nieuweRouteReducer = createReducer(undefined, on(MstActions.SetNieuwRouteBeginSein, (_, { startSeinOpRitdeel }) => new NieuweRoute(startSeinOpRitdeel, null)), on(MstActions.SetNieuwRouteEindSein, (nieuweRoute, { combinatieVoorEindsein }) => new NieuweRoute(nieuweRoute.beginSeinOpRitdeel, combinatieVoorEindsein)), on(MstActions.ResetNieuweRoute, () => undefined));
|
|
50
49
|
export const signaleringsbeeldInfoDtosReducer = createReducer([], on(MstActions.SetSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(MstActions.UpdateSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
|
|
51
50
|
export const visibleSbInfoDtosReducer = createReducer([], on(MstActions.SetVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => dtos), on(MstActions.UpdateVisibleSignaleringsbeeldInfoDtos, (_, { dtos }) => [...dtos]));
|
|
52
|
-
export const iaVersieReducer = createReducer({}, on(MstActions.SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
|
|
51
|
+
export const iaVersieReducer = createReducer({ versie: 'unknown', ingangsDatum: new Date() }, on(MstActions.SetIaVersie, (_, { iaVersie }) => Object.assign({}, iaVersie, { versie: iaVersie.versie.toUpperCase() })));
|
|
53
52
|
export const algemeneRitInfoDtoReducer = createReducer({}, on(MstActions.SetAlgemeneRitInfo, (_, { algemeneRitInfoDto }) => algemeneRitInfoDto));
|
|
54
53
|
export const ongeplandeActiesBepaaldReducer = createReducer(false, on(MstActions.SetOngeplandeActiesBepaald, (_, { bepaald }) => bepaald));
|
|
55
|
-
export const nieuweBewegingReducer = createReducer(
|
|
56
|
-
export const baseUrlReducer = createReducer(
|
|
57
|
-
export const focusIdsReducer = createReducer(
|
|
58
|
-
export const selectedRitdeelIdReducer = createReducer({}, on(MstActions.SetSelectedRitdeel, (_, { id }) => id));
|
|
54
|
+
export const nieuweBewegingReducer = createReducer([], on(MstActions.UpdateRit, (_, { bewegingen }) => bewegingen));
|
|
55
|
+
export const baseUrlReducer = createReducer('', on(MstActions.SetBaseUrl, (_, { baseUrl }) => baseUrl));
|
|
56
|
+
export const focusIdsReducer = createReducer([], on(MstActions.focusOpIds, (_, { puics }) => puics));
|
|
59
57
|
export const storeReducers = {
|
|
60
58
|
ritDelen: ritdelenReducer,
|
|
61
59
|
ritSelectieIds: ritSelectieIdsReducer,
|
|
@@ -84,6 +82,5 @@ export const storeReducers = {
|
|
|
84
82
|
nieuweBewegingen: nieuweBewegingReducer,
|
|
85
83
|
baseUrl: baseUrlReducer,
|
|
86
84
|
focusIds: focusIdsReducer,
|
|
87
|
-
selectedRitdeelId: selectedRitdeelIdReducer
|
|
88
85
|
};
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LWVkaXRvci1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUE2QzlELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQWMsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9GLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFOUcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUNqRCxTQUFTLEVBQ1QsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFD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LEVBQUUsZUFBZTtJQUN6Qix1QkFBdUIsRUFBRSw4QkFBOEI7SUFDdkQsYUFBYSxFQUFFLHdCQUF3QjtJQUN2QyxnQkFBZ0IsRUFBRSxxQkFBcUI7SUFDdkMsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFLGVBQWU7SUFDekIsaUJBQWlCLEVBQUUsd0JBQXdCO0NBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdmdJbmZvIH0gZnJvbSAnQGxveGlhL2lteC12aWV3ZXInO1xuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBbGdlbWVuZVJpdER0byB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9vcGVuYXBpJztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5lbnRpdHknO1xuaW1wb3J0IHsgTmlldXdlUm91dGUgfSBmcm9tICcuLi9tb2RlbC9uaWV1d2Utcm91dGUnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcsIEluZnJhTW9kZWwgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0byB9IGZyb20gJy4uL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQXJyYXlNdWx0aW1hcCB9IGZyb20gJy4uL3V0aWwvbXVsdGktbWFwJztcbmltcG9ydCAqIGFzIE1zdEFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHsgcml0ZGVsZW5SZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3JpdC1kZWxlbi5yZWR1Y2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBNc3RFZGl0b3JTdGF0ZSB7XG4gICAgcml0RGVsZW46IFJpdGRlZWxbXTsgLy8gb25zIG1vZGVsIHZhbiB0cmVpbnBhZFxuXG4gICAgLy8gcHVpY3Mgdm9vciBTZWxlY3RpZUluZm9zXG4gICAgcml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGFjdGllT3BSaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZ2Vicm9rZW5SaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZWluZFNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIG9uZ2VwbGFuZGVBY3RpZXM6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+O1xuICAgIGdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+O1xuXG4gICAgLy8gcHVpY3Mgdm9vciBjbGlja3NcbiAgICBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBjb25uZWN0b3JDbGlja2FibGVJZHM6IHN0cmluZ1tdO1xuXG4gICAgLy8gcHVpY3Mgdm9vciByaWdodGNsaWNrc1xuICAgIGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcblxuICAgIG5pZXV3ZVJvdXRlOiBOaWV1d2VSb3V0ZTtcblxuICAgIHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICB2aXNpYmxlU2JJbmZvRHRvczogSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdO1xuICAgIGFsZ2VtZW5lUml0SW5mb0R0bzogQWxnZW1lbmVSaXREdG87XG4gICAgaWFWZXJzaWU6IEluZnJhTW9kZWw7XG4gICAgc3ZnSW5mb3M6IFN2Z0luZm9bXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBlZGl0YWJsZTogYm9vbGVhbjtcbiAgICBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZDogYm9vbGVhbjtcbiAgICBwcm9ncmVzc1N0YXRlOiBQcm9ncmVzc1N0YXRlO1xuICAgIG5pZXV3ZUJld2VnaW5nZW46IEJld2VnaW5nW107XG4gICAgYmFzZVVybDogc3RyaW5nO1xuICAgIGZvY3VzSWRzOiBzdHJpbmdbXTtcbiAgICBzZWxlY3RlZFJpdGRlZWxJZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUHJvZ3Jlc3NTdGF0ZSB7XG4gICAgcHJvZ3Jlc3NJbmRpY2F0b3I/OiBQcm9ncmVzc0luZGljYXRvcjtcbn1cblxuY29uc3Qgb25JZHNBY3Rpb25IYW5kbGVyID0gKGFjdGlvbikgPT4gb24oYWN0aW9uLCAoXzogc3RyaW5nW10sIHsgaWRzIH0pID0+IGlkcyk7XG5jb25zdCBjcmVhdGVJZHNSZWR1Y2VyID0gKGFjdGlvbikgPT4gY3JlYXRlUmVkdWNlcihbXSBhcyBzdHJpbmdbXSwgb25JZHNBY3Rpb25IYW5kbGVyKGFjdGlvbikpO1xuXG5leHBvcnQgY29uc3QgZWRpdGFibGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih0cnVlLCBvbihNc3RBY3Rpb25zLnNldEVkaXRhYmxlLCAoXywgeyBlZGl0YWJsZSB9KSA9PiBlZGl0YWJsZSkpO1xuXG5leHBvcnQgY29uc3QgcHJvZ3Jlc3NJbmRpY2F0b3JSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICB1bmRlZmluZWQsXG4gICAgb24oTXN0QWN0aW9ucy5TaG93UHJvZ3Jlc3MsICgpID0+ICh7IHByb2dyZXNzSW5kaWNhdG9yOiB7fSB9KSksXG4gICAgb24oTXN0QWN0aW9ucy5DbGVhclByb2dyZXNzLCAoKSA9PiB1bmRlZmluZWQpXG4pO1xuXG5leHBvcnQgY29uc3Qgc3ZnSW5mb1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFtdIGFzIFN2Z0luZm9bXSwgb24oTXN0QWN0aW9ucy5TZXRTdmdJbmZvcywgKF8sIHsgc3ZnSW5mb3MgfSkgPT4gc3ZnSW5mb3MpKTtcbmV4cG9ydCBjb25zdCBkZWJ1Z1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKGZhbHNlLCBvbihNc3RBY3Rpb25zLlNldERlYnVnLCAoXywgeyBkZWJ1ZyB9KSA9PiBkZWJ1ZykpO1xuZXhwb3J0IGNvbnN0IHJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRSaXRTZWxlY3RpZUlkcyk7XG5cbmV4cG9ydCBjb25zdCBhY3RpZU9wUml0UmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgbmV3IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4oKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldEdlcGxhbmRlQWN0aWVzLCAoXywgeyBnZXBsYW5kZUFjdGllc01hcCB9KSA9PiBnZXBsYW5kZUFjdGllc01hcCksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRHZXBsYW5kZUFjdGllLCAoZ2VwbGFuZGVBY3RpZXMsIHsgYWN0aWUsIHB1aWNzIH0pID0+IHtcbiAgICAgICAgZ2VwbGFuZGVBY3RpZXMucHV0QWxsKGFjdGllLCBwdWljcyk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChnZXBsYW5kZUFjdGllcyk7XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVHZXBsYW5kZUFjdGllLCAoZ2VwbGFuZGVBY3RpZXMsIHsgYWN0aWUgfSkgPT4ge1xuICAgICAgICBnZXBsYW5kZUFjdGllcy5kZWxldGUoYWN0aWUpO1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGltYXAoZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgYWN0aWVPcFJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gICAgW10gYXMgc3RyaW5nW10sXG4gICAgb25JZHNBY3Rpb25IYW5kbGVyKE1zdEFjdGlvbnMuU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUsIChpZHM6IHN0cmluZ1tdLCB7IHB1aWNzIH0pID0+IHtcbiAgICAgICAgcHVpY3MuZmlsdGVyKHB1aWMgPT4gIWlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcy5wdXNoKHB1aWMpKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pZHNdO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlR2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgcHVpY3MgfSkgPT4ge1xuICAgICAgICBwdWljcy5maWx0ZXIocHVpYyA9PiBpZHMuaW5jbHVkZXMocHVpYykpLmZvckVhY2gocHVpYyA9PiBpZHMgPSBpZHMuZmlsdGVyKHAgPT4gcCAhPT0gcHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBuZXcgQXJyYXlNdWx0aW1hcDxzdHJpbmcsIE9uZ2VwbGFuZGVBY3RpZT4oKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXMsIChfLCB7IG9uZ2VwbGFuZGVBY3RpZXNNYXAgfSkgPT4gb25nZXBsYW5kZUFjdGllc01hcCksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRPbmdlcGxhbmRlQWN0aWUsIChvbmdlcGxhbmRlQWN0aWVzLCB7IG9uZ2VwbGFuZGVBY3RpZSB9KSA9PiB7XG4gICAgICAgIG9uZ2VwbGFuZGVBY3RpZS5wdWljcy5maWx0ZXIocHVpYyA9PiAhb25nZXBsYW5kZUFjdGllcy5jb250YWluc0VudHJ5KHB1aWMsIG9uZ2VwbGFuZGVBY3RpZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKHB1aWMgPT4gb25nZXBsYW5kZUFjdGllcy5wdXQocHVpYywgb25nZXBsYW5kZUFjdGllKSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChvbmdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZU9uZ2VwbGFuZGVBY3RpZSwgKG9uZ2VwbGFuZGVBY3RpZXMsIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZvckVhY2gocHVpYyA9PiBvbmdlcGxhbmRlQWN0aWVzLmRlbGV0ZShwdWljLCBvbmdlcGxhbmRlQWN0aWUpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgIH0pXG4pO1xuXG5leHBvcnQgY29uc3Qgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICAvLyBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzLCAoXywgeyBpZHMgfSkgPT4gaWRzKSxcbiAgICBvbklkc0FjdGlvbkhhbmRsZXIoTXN0QWN0aW9ucy5TZXRPbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkcyksXG4gICAgb24oTXN0QWN0aW9ucy5BZGRPbmdlcGxhbmRlQWN0aWUsIChpZHM6IHN0cmluZ1tdLCB7IG9uZ2VwbGFuZGVBY3RpZSB9KSA9PiB7XG4gICAgICAgIG9uZ2VwbGFuZGVBY3RpZS5wdWljcy5maWx0ZXIocHVpYyA9PiAhaWRzLmluY2x1ZGVzKHB1aWMpKS5mb3JFYWNoKHB1aWMgPT4gaWRzLnB1c2gocHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVPbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkLCAoaWRzOiBzdHJpbmdbXSwgeyBpZCB9KSA9PiBbXS5jb25jYXQoaWRzLmluY2x1ZGVzKGlkKSA/IGlkcy5maWx0ZXIoX2lkID0+IF9pZCAhPT0gaWQpIDogaWRzKSlcbik7XG5cbmV4cG9ydCBjb25zdCBnZWJyb2tlblJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRHZWJyb2tlblJpdFNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBhbHRlcm5hdGlldmVuU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkcyk7XG5leHBvcnQgY29uc3QgYmVnaW5TZWluU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEJlZ2luU2VpblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBlaW5kU2VpblNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRFaW5kU2VpblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRBbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRFaW5kU2VpbmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBjb25uZWN0b3JDbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldENvbm5lY3RvcmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMpO1xuXG5leHBvcnQgY29uc3QgbmlldXdlUm91dGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgICBuZXcgTmlldXdlUm91dGUobnVsbCwgbnVsbCksXG4gICAgb24oTXN0QWN0aW9ucy5TZXROaWV1d1JvdXRlQmVnaW5TZWluLCAoXywgeyBzdGFydFNlaW5PcFJpdGRlZWwgfSkgPT4gbmV3IE5pZXV3ZVJvdXRlKHN0YXJ0U2Vpbk9wUml0ZGVlbCwgbnVsbCkpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0TmlldXdSb3V0ZUVpbmRTZWluLCAobmlldXdlUm91dGUsIHsgY29tYmluYXRpZVZvb3JFaW5kc2VpbiB9KSA9PiBuZXcgTmlldXdlUm91dGUobmlldXdlUm91dGUuYmVnaW5TZWluT3BSaXRkZWVsLCBjb21iaW5hdGllVm9vckVpbmRzZWluKSksXG4gICAgb24oTXN0QWN0aW9ucy5SZXNldE5pZXV3ZVJvdXRlLCAoKSA9PiBuZXcgTmlldXdlUm91dGUobnVsbCwgbnVsbCkpXG4pO1xuXG5leHBvcnQgY29uc3Qgc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSxcbiAgICBvbihNc3RBY3Rpb25zLlNldFNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gZHRvcyksXG4gICAgb24oTXN0QWN0aW9ucy5VcGRhdGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCAoXywgeyBkdG9zIH0pID0+IFsuLi5kdG9zXSlcbik7XG5cbmV4cG9ydCBjb25zdCB2aXNpYmxlU2JJbmZvRHRvc1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICAgIFtdIGFzIElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXSxcbiAgICBvbihNc3RBY3Rpb25zLlNldFZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCAoXywgeyBkdG9zIH0pID0+IGR0b3MpLFxuICAgIG9uKE1zdEFjdGlvbnMuVXBkYXRlVmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gWy4uLmR0b3NdKVxuKTtcblxuZXhwb3J0IGNvbnN0IGlhVmVyc2llUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoe30sXG4gICAgb24oTXN0QWN0aW9ucy5TZXRJYVZlcnNpZSxcbiAgICAgICAgKF8sIHsgaWFWZXJzaWUgfSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgaWFWZXJzaWUsIHsgdmVyc2llOiBpYVZlcnNpZS52ZXJzaWUudG9VcHBlckNhc2UoKSB9KSkpO1xuZXhwb3J0IGNvbnN0IGFsZ2VtZW5lUml0SW5mb0R0b1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHsgfSwgb24oTXN0QWN0aW9ucy5TZXRBbGdlbWVuZVJpdEluZm8sIChfLCB7IGFsZ2VtZW5lUml0SW5mb0R0byB9KSA9PiBhbGdlbWVuZVJpdEluZm9EdG8pKTtcbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZFJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKGZhbHNlLCBvbihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkLCAoXywgeyBiZXBhYWxkIH0pID0+IGJlcGFhbGQpKTtcblxuZXhwb3J0IGNvbnN0IG5pZXV3ZUJld2VnaW5nUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoeyB9LCBvbihNc3RBY3Rpb25zLlVwZGF0ZVJpdCwgKF8sIHsgYmV3ZWdpbmdlbiB9KSA9PiBiZXdlZ2luZ2VuKSk7XG5cbmV4cG9ydCBjb25zdCBiYXNlVXJsUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIodW5kZWZpbmVkLCBvbihNc3RBY3Rpb25zLlNldEJhc2VVcmwsIChfLCB7IGJhc2VVcmwgfSkgPT4gYmFzZVVybCkpO1xuXG5leHBvcnQgY29uc3QgZm9jdXNJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcih7IH0sIG9uKE1zdEFjdGlvbnMuZm9jdXNPcElkcywgKF8sIHsgcHVpY3MgfSkgPT4gcHVpY3MpKTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkUml0ZGVlbElkUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoe30sIG9uKE1zdEFjdGlvbnMuU2V0U2VsZWN0ZWRSaXRkZWVsLCAoXywgeyBpZCB9KSA9PiBpZCkpO1xuXG5leHBvcnQgY29uc3Qgc3RvcmVSZWR1Y2VycyA9IHtcbiAgICByaXREZWxlbjogcml0ZGVsZW5SZWR1Y2VyLFxuICAgIHJpdFNlbGVjdGllSWRzOiByaXRTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgYWN0aWVPcFJpdFNlbGVjdGllSWRzOiBhY3RpZU9wUml0U2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzOiBvbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllczogb25nZXBsYW5kZUFjdGllUmVkdWNlcixcbiAgICBnZWJyb2tlblJpdFNlbGVjdGllSWRzOiBnZWJyb2tlblJpdFNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhbHRlcm5hdGlldmVuU2VsZWN0aWVJZHM6IGFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgYmVnaW5TZWluU2VsZWN0aWVJZHM6IGJlZ2luU2VpblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBlaW5kU2VpblNlbGVjdGllSWRzOiBlaW5kU2VpblNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzOiBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzOiBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBjb25uZWN0b3JDbGlja2FibGVJZHM6IGNvbm5lY3RvckNsaWNrYWJsZUlkc1JlZHVjZXIsXG4gICAgYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHM6IGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzUmVkdWNlcixcbiAgICBuaWV1d2VSb3V0ZTogbmlldXdlUm91dGVSZWR1Y2VyLFxuICAgIGdlcGxhbmRlQWN0aWVzOiBhY3RpZU9wUml0UmVkdWNlcixcbiAgICBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zOiBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zUmVkdWNlcixcbiAgICB2aXNpYmxlU2JJbmZvRHRvczogdmlzaWJsZVNiSW5mb0R0b3NSZWR1Y2VyLFxuICAgIGlhVmVyc2llOiBpYVZlcnNpZVJlZHVjZXIsXG4gICAgYWxnZW1lbmVSaXRJbmZvRHRvOiBhbGdlbWVuZVJpdEluZm9EdG9SZWR1Y2VyLFxuICAgIHN2Z0luZm9zOiBzdmdJbmZvUmVkdWNlcixcbiAgICBkZWJ1ZzogZGVidWdSZWR1Y2VyLFxuICAgIGVkaXRhYmxlOiBlZGl0YWJsZVJlZHVjZXIsXG4gICAgb25nZXBsYW5kZUFjdGllc0JlcGFhbGQ6IG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkUmVkdWNlcixcbiAgICBwcm9ncmVzc1N0YXRlOiBwcm9ncmVzc0luZGljYXRvclJlZHVjZXIsXG4gICAgbmlldXdlQmV3ZWdpbmdlbjogbmlldXdlQmV3ZWdpbmdSZWR1Y2VyLFxuICAgIGJhc2VVcmw6IGJhc2VVcmxSZWR1Y2VyLFxuICAgIGZvY3VzSWRzOiBmb2N1c0lkc1JlZHVjZXIsXG4gICAgc2VsZWN0ZWRSaXRkZWVsSWQ6IHNlbGVjdGVkUml0ZGVlbElkUmVkdWNlclxufTtcblxuIl19
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXN0LWVkaXRvci1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0MsYUFBYSxFQUFFLEVBQUUsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBZ0Q5RCxNQUFNLGtCQUFrQixHQUFHLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRyxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFXLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBRS9HLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFdkgsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsYUFBYSxDQUNqRCxFQUFvQixFQUNwQixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUs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Q1EsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN2Z0luZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQge0FjdGlvbkNyZWF0b3IsIEFjdGlvblJlZHVjZXJNYXAsIGNyZWF0ZVJlZHVjZXIsIG9ufSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBbGdlbWVuZVJpdER0byB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9vcGVuYXBpJztcbmltcG9ydCB7IFByb2dyZXNzSW5kaWNhdG9yIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5lbnRpdHknO1xuaW1wb3J0IHsgTmlldXdlUm91dGUgfSBmcm9tICcuLi9tb2RlbC9uaWV1d2Utcm91dGUnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcsIEluZnJhTW9kZWwgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgSVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0byB9IGZyb20gJy4uL3Jlc291cmNlcy9zaWduYWxlcmluZ3NiZWVsZGluZm8ucmVzb3VyY2UnO1xuaW1wb3J0IHsgQXJyYXlNdWx0aW1hcCB9IGZyb20gJy4uL3V0aWwvbXVsdGktbWFwJztcbmltcG9ydCAqIGFzIE1zdEFjdGlvbnMgZnJvbSAnLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0IHsgcml0ZGVsZW5SZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3JpdC1kZWxlbi5yZWR1Y2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBNc3RFZGl0b3JTdGF0ZSB7XG4gICAgcml0RGVsZW46IFJpdGRlZWxbXTsgLy8gb25zIG1vZGVsIHZhbiB0cmVpbnBhZFxuXG4gICAgLy8gcHVpY3Mgdm9vciBTZWxlY3RpZUluZm9zXG4gICAgcml0U2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIGFjdGllT3BSaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZ2Vicm9rZW5SaXRTZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzOiBzdHJpbmdbXTtcbiAgICBiZWdpblNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgZWluZFNlaW5TZWxlY3RpZUlkczogc3RyaW5nW107XG4gICAgb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHM6IHN0cmluZ1tdO1xuICAgIG9uZ2VwbGFuZGVBY3RpZXM6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+O1xuICAgIGdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+O1xuXG4gICAgLy8gcHVpY3Mgdm9vciBjbGlja3NcbiAgICBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcbiAgICBjb25uZWN0b3JDbGlja2FibGVJZHM6IHN0cmluZ1tdO1xuXG4gICAgLy8gcHVpY3Mgdm9vciByaWdodGNsaWNrc1xuICAgIGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzOiBzdHJpbmdbXTtcblxuICAgIG5pZXV3ZVJvdXRlPzogTmlldXdlUm91dGU7XG5cbiAgICBzaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zOiBJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW107XG4gICAgdmlzaWJsZVNiSW5mb0R0b3M6IElTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9bXTtcbiAgICBhbGdlbWVuZVJpdEluZm9EdG86IEFsZ2VtZW5lUml0RHRvO1xuICAgIGlhVmVyc2llOiBJbmZyYU1vZGVsO1xuICAgIHN2Z0luZm9zOiBTdmdJbmZvW107XG4gICAgZGVidWc6IGJvb2xlYW47XG4gICAgZWRpdGFibGU6IGJvb2xlYW47XG4gICAgb25nZXBsYW5kZUFjdGllc0JlcGFhbGQ6IGJvb2xlYW47XG4gICAgcHJvZ3Jlc3NTdGF0ZTogUHJvZ3Jlc3NTdGF0ZTtcbiAgICBuaWV1d2VCZXdlZ2luZ2VuOiBCZXdlZ2luZ1tdO1xuICAgIGJhc2VVcmw6IHN0cmluZztcbiAgICBmb2N1c0lkczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBQcm9ncmVzc1N0YXRlIHtcbiAgICBwcm9ncmVzc0luZGljYXRvcj86IFByb2dyZXNzSW5kaWNhdG9yO1xufVxuXG50eXBlIElkc0FjdGlvbkNyZWF0b3IgPSBBY3Rpb25DcmVhdG9yPFxuICAgIHN0cmluZyxcbiAgICAoaWRzOiBzdHJpbmdbXSkgPT4geyBpZHM6IHN0cmluZ1tdIH0gJiB7IHR5cGU6IHN0cmluZyB9PjtcblxuY29uc3Qgb25JZHNBY3Rpb25IYW5kbGVyID0gKGFjdGlvbjogSWRzQWN0aW9uQ3JlYXRvcikgPT4gb24oYWN0aW9uLCAoXzogc3RyaW5nW10sIHsgaWRzIH0pID0+IGlkcyk7XG5jb25zdCBjcmVhdGVJZHNSZWR1Y2VyID0gKGFjdGlvbjogSWRzQWN0aW9uQ3JlYXRvcikgPT4gY3JlYXRlUmVkdWNlcjxzdHJpbmdbXT4oW10sIG9uSWRzQWN0aW9uSGFuZGxlcihhY3Rpb24pKTtcblxuZXhwb3J0IGNvbnN0IGVkaXRhYmxlUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8Ym9vbGVhbj4odHJ1ZSwgb24oTXN0QWN0aW9ucy5zZXRFZGl0YWJsZSwgKF8sIHsgZWRpdGFibGUgfSkgPT4gZWRpdGFibGUpKTtcblxuZXhwb3J0IGNvbnN0IHByb2dyZXNzSW5kaWNhdG9yUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8UHJvZ3Jlc3NTdGF0ZT4oXG4gICAgeyB9IGFzIFByb2dyZXNzU3RhdGUsXG4gICAgb24oTXN0QWN0aW9ucy5TaG93UHJvZ3Jlc3MsICgpID0+ICh7IHByb2dyZXNzSW5kaWNhdG9yOiBuZXcgUHJvZ3Jlc3NJbmRpY2F0b3IoKSB9IGFzIFByb2dyZXNzU3RhdGUpKSxcbiAgICBvbihNc3RBY3Rpb25zLkNsZWFyUHJvZ3Jlc3MsICgpID0+ICh7IH0pKVxuKTtcblxuZXhwb3J0IGNvbnN0IHN2Z0luZm9SZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxTdmdJbmZvW10+KFtdLCBvbihNc3RBY3Rpb25zLlNldFN2Z0luZm9zLCAoXywgeyBzdmdJbmZvcyB9KSA9PiBzdmdJbmZvcykpO1xuZXhwb3J0IGNvbnN0IGRlYnVnUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8Ym9vbGVhbj4oZmFsc2UsIG9uKE1zdEFjdGlvbnMuU2V0RGVidWcsIChfLCB7IGRlYnVnIH0pID0+IGRlYnVnKSk7XG5leHBvcnQgY29uc3Qgcml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldFJpdFNlbGVjdGllSWRzKTtcblxuZXhwb3J0IGNvbnN0IGFjdGllT3BSaXRSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+PihcbiAgICBuZXcgQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPigpLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0R2VwbGFuZGVBY3RpZXMsIChfLCB7IGdlcGxhbmRlQWN0aWVzTWFwIH0pID0+IGdlcGxhbmRlQWN0aWVzTWFwKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUsIChnZXBsYW5kZUFjdGllcywgeyBhY3RpZSwgcHVpY3MgfSkgPT4ge1xuICAgICAgICBnZXBsYW5kZUFjdGllcy5wdXRBbGwoYWN0aWUsIHB1aWNzKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheU11bHRpbWFwKGdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZUdlcGxhbmRlQWN0aWUsIChnZXBsYW5kZUFjdGllcywgeyBhY3RpZSB9KSA9PiB7XG4gICAgICAgIGdlcGxhbmRlQWN0aWVzLmRlbGV0ZShhY3RpZSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChnZXBsYW5kZUFjdGllcyk7XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxzdHJpbmdbXT4oXG4gICAgW10sXG4gICAgb25JZHNBY3Rpb25IYW5kbGVyKE1zdEFjdGlvbnMuU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZEdlcGxhbmRlQWN0aWUsIChpZHM6IHN0cmluZ1tdLCB7IHB1aWNzIH0pID0+IHtcbiAgICAgICAgcHVpY3MuZmlsdGVyKHB1aWMgPT4gIWlkcy5pbmNsdWRlcyhwdWljKSkuZm9yRWFjaChwdWljID0+IGlkcy5wdXNoKHB1aWMpKTtcbiAgICAgICAgcmV0dXJuIFsuLi5pZHNdO1xuICAgIH0pLFxuICAgIG9uKE1zdEFjdGlvbnMuRGVsZXRlR2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgcHVpY3MgfSkgPT4ge1xuICAgICAgICBwdWljcy5maWx0ZXIocHVpYyA9PiBpZHMuaW5jbHVkZXMocHVpYykpLmZvckVhY2gocHVpYyA9PiBpZHMgPSBpZHMuZmlsdGVyKHAgPT4gcCAhPT0gcHVpYykpO1xuICAgICAgICByZXR1cm4gWy4uLmlkc107XG4gICAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBvbmdlcGxhbmRlQWN0aWVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPj4oXG4gICAgbmV3IEFycmF5TXVsdGltYXA8c3RyaW5nLCBPbmdlcGxhbmRlQWN0aWU+KCksXG4gICAgb24oTXN0QWN0aW9ucy5TZXRPbmdlcGxhbmRlQWN0aWVzLCAoXywgeyBvbmdlcGxhbmRlQWN0aWVzTWFwIH0pID0+IG9uZ2VwbGFuZGVBY3RpZXNNYXApLFxuICAgIG9uKE1zdEFjdGlvbnMuQWRkT25nZXBsYW5kZUFjdGllLCAob25nZXBsYW5kZUFjdGllcywgeyBvbmdlcGxhbmRlQWN0aWUgfSkgPT4ge1xuICAgICAgICBvbmdlcGxhbmRlQWN0aWUucHVpY3MuZmlsdGVyKHB1aWMgPT4gIW9uZ2VwbGFuZGVBY3RpZXMuY29udGFpbnNFbnRyeShwdWljLCBvbmdlcGxhbmRlQWN0aWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChwdWljID0+IG9uZ2VwbGFuZGVBY3RpZXMucHV0KHB1aWMsIG9uZ2VwbGFuZGVBY3RpZSkpO1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGltYXAob25nZXBsYW5kZUFjdGllcyk7XG4gICAgfSksXG4gICAgb24oTXN0QWN0aW9ucy5EZWxldGVPbmdlcGxhbmRlQWN0aWUsIChvbmdlcGxhbmRlQWN0aWVzLCB7IG9uZ2VwbGFuZGVBY3RpZSB9KSA9PiB7XG4gICAgICAgIG9uZ2VwbGFuZGVBY3RpZS5wdWljcy5mb3JFYWNoKHB1aWMgPT4gb25nZXBsYW5kZUFjdGllcy5kZWxldGUocHVpYywgb25nZXBsYW5kZUFjdGllKSk7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aW1hcChvbmdlcGxhbmRlQWN0aWVzKTtcbiAgICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IG9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8c3RyaW5nW10+KFxuICAgIFtdLFxuICAgIG9uSWRzQWN0aW9uSGFuZGxlcihNc3RBY3Rpb25zLlNldE9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWRzKSxcbiAgICBvbihNc3RBY3Rpb25zLkFkZE9uZ2VwbGFuZGVBY3RpZSwgKGlkczogc3RyaW5nW10sIHsgb25nZXBsYW5kZUFjdGllIH0pID0+IHtcbiAgICAgICAgb25nZXBsYW5kZUFjdGllLnB1aWNzLmZpbHRlcihwdWljID0+ICFpZHMuaW5jbHVkZXMocHVpYykpLmZvckVhY2gocHVpYyA9PiBpZHMucHVzaChwdWljKSk7XG4gICAgICAgIHJldHVybiBbLi4uaWRzXTtcbiAgICB9KSxcbiAgICBvbihNc3RBY3Rpb25zLkRlbGV0ZU9uZ2VwbGFuZGVBY3RpZVNlbGVjdGllSWQsIChpZHM6IHN0cmluZ1tdLCB7IGlkIH0pID0+IGlkcy5pbmNsdWRlcyhpZCkgPyBpZHMuZmlsdGVyKF9pZCA9PiBfaWQgIT09IGlkKSA6IGlkcylcbik7XG5cbmV4cG9ydCBjb25zdCBnZWJyb2tlblJpdFNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRHZWJyb2tlblJpdFNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBhbHRlcm5hdGlldmVuU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEFsdGVybmF0aWV2ZW5TZWxlY3RpZUlkcyk7XG5leHBvcnQgY29uc3QgYmVnaW5TZWluU2VsZWN0aWVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldEJlZ2luU2VpblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBlaW5kU2VpblNlbGVjdGllSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRFaW5kU2VpblNlbGVjdGllSWRzKTtcbmV4cG9ydCBjb25zdCBhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRBbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBlaW5kU2VpbmVuQ2xpY2thYmxlSWRzUmVkdWNlciA9IGNyZWF0ZUlkc1JlZHVjZXIoTXN0QWN0aW9ucy5TZXRFaW5kU2VpbmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBjb25uZWN0b3JDbGlja2FibGVJZHNSZWR1Y2VyID0gY3JlYXRlSWRzUmVkdWNlcihNc3RBY3Rpb25zLlNldENvbm5lY3RvcmVuQ2xpY2thYmxlSWRzKTtcbmV4cG9ydCBjb25zdCBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkc1JlZHVjZXIgPSBjcmVhdGVJZHNSZWR1Y2VyKE1zdEFjdGlvbnMuU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMpO1xuXG5leHBvcnQgY29uc3QgbmlldXdlUm91dGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxOaWV1d2VSb3V0ZSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0TmlldXdSb3V0ZUJlZ2luU2VpbiwgKF8sIHsgc3RhcnRTZWluT3BSaXRkZWVsIH0pID0+IG5ldyBOaWV1d2VSb3V0ZShzdGFydFNlaW5PcFJpdGRlZWwsIG51bGwpKSxcbiAgICBvbihNc3RBY3Rpb25zLlNldE5pZXV3Um91dGVFaW5kU2VpbiwgKG5pZXV3ZVJvdXRlLCB7IGNvbWJpbmF0aWVWb29yRWluZHNlaW4gfSkgPT4gbmV3IE5pZXV3ZVJvdXRlKG5pZXV3ZVJvdXRlLmJlZ2luU2Vpbk9wUml0ZGVlbCwgY29tYmluYXRpZVZvb3JFaW5kc2VpbikpLFxuICAgIG9uKE1zdEFjdGlvbnMuUmVzZXROaWV1d2VSb3V0ZSwgKCkgPT4gdW5kZWZpbmVkKVxuKTtcblxuZXhwb3J0IGNvbnN0IHNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3NSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxJU2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvW10+KFxuICAgIFtdLFxuICAgIG9uKE1zdEFjdGlvbnMuU2V0U2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvcywgKF8sIHsgZHRvcyB9KSA9PiBkdG9zKSxcbiAgICBvbihNc3RBY3Rpb25zLlVwZGF0ZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gWy4uLmR0b3NdKVxuKTtcblxuZXhwb3J0IGNvbnN0IHZpc2libGVTYkluZm9EdG9zUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8SVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b1tdPihcbiAgICBbXSxcbiAgICBvbihNc3RBY3Rpb25zLlNldFZpc2libGVTaWduYWxlcmluZ3NiZWVsZEluZm9EdG9zLCAoXywgeyBkdG9zIH0pID0+IGR0b3MpLFxuICAgIG9uKE1zdEFjdGlvbnMuVXBkYXRlVmlzaWJsZVNpZ25hbGVyaW5nc2JlZWxkSW5mb0R0b3MsIChfLCB7IGR0b3MgfSkgPT4gWy4uLmR0b3NdKVxuKTtcblxuZXhwb3J0IGNvbnN0IGlhVmVyc2llUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8SW5mcmFNb2RlbD4oe3ZlcnNpZTogJ3Vua25vd24nLCBpbmdhbmdzRGF0dW06IG5ldyBEYXRlKCl9IGFzIEluZnJhTW9kZWwsXG4gICAgb24oTXN0QWN0aW9ucy5TZXRJYVZlcnNpZSxcbiAgICAgICAgKF8sIHsgaWFWZXJzaWUgfSkgPT4gT2JqZWN0LmFzc2lnbih7fSwgaWFWZXJzaWUsIHsgdmVyc2llOiBpYVZlcnNpZS52ZXJzaWUudG9VcHBlckNhc2UoKSB9KSkpO1xuZXhwb3J0IGNvbnN0IGFsZ2VtZW5lUml0SW5mb0R0b1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPEFsZ2VtZW5lUml0RHRvPih7IH0gYXMgQWxnZW1lbmVSaXREdG8sIG9uKE1zdEFjdGlvbnMuU2V0QWxnZW1lbmVSaXRJbmZvLCAoXywgeyBhbGdlbWVuZVJpdEluZm9EdG8gfSkgPT4gYWxnZW1lbmVSaXRJbmZvRHRvKSk7XG5leHBvcnQgY29uc3Qgb25nZXBsYW5kZUFjdGllc0JlcGFhbGRSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcjxib29sZWFuPihmYWxzZSwgb24oTXN0QWN0aW9ucy5TZXRPbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCwgKF8sIHsgYmVwYWFsZCB9KSA9PiBiZXBhYWxkKSk7XG5cbmV4cG9ydCBjb25zdCBuaWV1d2VCZXdlZ2luZ1JlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyPEJld2VnaW5nW10+KFtdLCBvbihNc3RBY3Rpb25zLlVwZGF0ZVJpdCwgKF8sIHsgYmV3ZWdpbmdlbiB9KSA9PiBiZXdlZ2luZ2VuKSk7XG5cbmV4cG9ydCBjb25zdCBiYXNlVXJsUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8c3RyaW5nPignJywgb24oTXN0QWN0aW9ucy5TZXRCYXNlVXJsLCAoXywgeyBiYXNlVXJsIH0pID0+IGJhc2VVcmwpKTtcblxuZXhwb3J0IGNvbnN0IGZvY3VzSWRzUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8c3RyaW5nW10+KFtdLCBvbihNc3RBY3Rpb25zLmZvY3VzT3BJZHMsIChfLCB7IHB1aWNzIH0pID0+IHB1aWNzKSk7XG5cblxuZXhwb3J0IGNvbnN0IHN0b3JlUmVkdWNlcnMgPSB7XG4gICAgcml0RGVsZW46IHJpdGRlbGVuUmVkdWNlcixcbiAgICByaXRTZWxlY3RpZUlkczogcml0U2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGFjdGllT3BSaXRTZWxlY3RpZUlkczogYWN0aWVPcFJpdFNlbGVjdGllSWRzUmVkdWNlcixcbiAgICBvbmdlcGxhbmRlQWN0aWVTZWxlY3RpZUlkczogb25nZXBsYW5kZUFjdGllU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIG9uZ2VwbGFuZGVBY3RpZXM6IG9uZ2VwbGFuZGVBY3RpZVJlZHVjZXIsXG4gICAgZ2Vicm9rZW5SaXRTZWxlY3RpZUlkczogZ2Vicm9rZW5SaXRTZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgYWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzOiBhbHRlcm5hdGlldmVuU2VsZWN0aWVJZHNSZWR1Y2VyLFxuICAgIGJlZ2luU2VpblNlbGVjdGllSWRzOiBiZWdpblNlaW5TZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgZWluZFNlaW5TZWxlY3RpZUlkczogZWluZFNlaW5TZWxlY3RpZUlkc1JlZHVjZXIsXG4gICAgYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkczogYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkc1JlZHVjZXIsXG4gICAgZWluZFNlaW5lbkNsaWNrYWJsZUlkczogZWluZFNlaW5lbkNsaWNrYWJsZUlkc1JlZHVjZXIsXG4gICAgY29ubmVjdG9yQ2xpY2thYmxlSWRzOiBjb25uZWN0b3JDbGlja2FibGVJZHNSZWR1Y2VyLFxuICAgIGJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzOiBiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkc1JlZHVjZXIsXG4gICAgbmlldXdlUm91dGU6IG5pZXV3ZVJvdXRlUmVkdWNlcixcbiAgICBnZXBsYW5kZUFjdGllczogYWN0aWVPcFJpdFJlZHVjZXIsXG4gICAgc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvczogc2lnbmFsZXJpbmdzYmVlbGRJbmZvRHRvc1JlZHVjZXIsXG4gICAgdmlzaWJsZVNiSW5mb0R0b3M6IHZpc2libGVTYkluZm9EdG9zUmVkdWNlcixcbiAgICBpYVZlcnNpZTogaWFWZXJzaWVSZWR1Y2VyLFxuICAgIGFsZ2VtZW5lUml0SW5mb0R0bzogYWxnZW1lbmVSaXRJbmZvRHRvUmVkdWNlcixcbiAgICBzdmdJbmZvczogc3ZnSW5mb1JlZHVjZXIsXG4gICAgZGVidWc6IGRlYnVnUmVkdWNlcixcbiAgICBlZGl0YWJsZTogZWRpdGFibGVSZWR1Y2VyLFxuICAgIG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkOiBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZFJlZHVjZXIsXG4gICAgcHJvZ3Jlc3NTdGF0ZTogcHJvZ3Jlc3NJbmRpY2F0b3JSZWR1Y2VyLFxuICAgIG5pZXV3ZUJld2VnaW5nZW46IG5pZXV3ZUJld2VnaW5nUmVkdWNlcixcbiAgICBiYXNlVXJsOiBiYXNlVXJsUmVkdWNlcixcbiAgICBmb2N1c0lkczogZm9jdXNJZHNSZWR1Y2VyLFxufSBhcyBBY3Rpb25SZWR1Y2VyTWFwPE1zdEVkaXRvclN0YXRlPjtcbiJdfQ==
|
|
@@ -59,4 +59,4 @@ function addRitdeelActieFunc(ritDelen, { ritDeel, actie }) {
|
|
|
59
59
|
ritDeel.acties.push(actie);
|
|
60
60
|
return [...ritDelen];
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0LWRlbGVuLnJlZHVjZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvc3RhdGUvcmVkdWNlci9yaXQtZGVsZW4ucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEUsT0FBTyxLQUFLLGVBQWUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLEdBQUcsb0JBQW9CLENBQUM7QUFFakcsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFrRSxhQUFhLENBQ3ZHLEVBQWUsRUFDZixFQUFFLENBQUMsZUFBZSxDQUFDLHNCQUFzQixFQUFFLDBCQUEwQixDQUFDLEVBQ3RFLEVBQUUsQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsRUFDaEUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSwwQkFBMEIsQ0FBQyxFQUN0RSxFQUFFLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLGdDQUFnQyxDQUFDLEVBQ2xGLEVBQUUsQ0FBQyxlQUFlLENBQUMsaUNBQWlDLEVBQUUscUNBQXFDLENBQUMsRUFDNUYsRUFBRSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsRUFDcEQsRUFBRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxzQkFBc0IsQ0FBQyxFQUM5RCxFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUMzRCxDQUFDO0FBRUYsU0FBUywwQkFBMEIsQ0FBQyxDQUFZLEVBQUUsRUFBRSxRQUFRLEVBQTJCO0lBQ25GLE9BQU8sQ0FBQyxHQUFH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QzNCLFFBQW1CLEVBQ25CLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBc0M7SUFFdEQsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQiw0RkFBNEY7UUFDNUYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU07UUFDVixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUN4QixRQUFtQixFQUNuQixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQXNDO0lBRXRELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25SZWR1Y2VyLCBjcmVhdGVSZWR1Y2VyLCBvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFJpdGRlZWwsIFJpdGRlZWxaaWNodGJhYXJoZWlkIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgKiBhcyBSaXRkZWxlbkFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcblxuY29uc3QgeyBaSUNIVEJBQVIsIE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSLCBPTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0gfSA9IFJpdGRlZWxaaWNodGJhYXJoZWlkO1xuXG5leHBvcnQgY29uc3Qgcml0ZGVsZW5SZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFJpdGRlZWxbXSwgUml0ZGVsZW5BY3Rpb25zLlJpdERlZWxBY3Rpb25zVW5pb24+ID0gY3JlYXRlUmVkdWNlcihcbiAgICBbXSBhcyBSaXRkZWVsW10sXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLnNldFJpdGRlbGVuQWZ0ZXJVcGRhdGUsIHNldFJpdERlbGVuQWZ0ZXJVcGRhdGVGdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMuc2V0Uml0ZGVlbFppY2h0YmFhciwgc2V0Uml0ZGVlbFppY2h0YmFhckZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy50b2dnbGVSaXRkZWVsWmljaHRiYWFyLCB0b2dnbGVSaXRkZWVsWmljaHRiYWFyRnVuYyksXG4gICAgb24oUml0ZGVsZW5BY3Rpb25zLnNldFppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW4sIHNldFppY2h0YmFhcmhlaWRBbGxlUml0ZGVsZW5GdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMudG9nZ2xlWmljaHRiYWFyaGVpZFZvb3JCZXdlZ2luZ2VuLCB0b2dnbGVaaWNodGJhYXJoZWlkVm9vckJld2VnaW5nZW5GdW5jKSxcbiAgICBvbihSaXRkZWxlbkFjdGlvbnMuZGVsZXRlUml0ZGVlbCwgZGVsZXRlUml0ZGVlbEZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy5kZWxldGVSaXRkZWVsQWN0aWUsIGRlbGV0ZVJpdGRlZWxBY3RpZUZ1bmMpLFxuICAgIG9uKFJpdGRlbGVuQWN0aW9ucy5hZGRSaXRkZWVsQWN0aWUsIGFkZFJpdGRlZWxBY3RpZUZ1bmMpXG4pO1xuXG5mdW5jdGlvbiBzZXRSaXREZWxlbkFmdGVyVXBkYXRlRnVuYyhfOiBSaXRkZWVsW10sIHsgcml0RGVsZW4gfTogeyByaXREZWxlbjogUml0ZGVlbFtdIH0pOiBSaXRkZWVsW10ge1xuICAgIHJldHVybiBbLi4ucml0RGVsZW5dO1xufVxuXG5mdW5jdGlvbiBzZXRSaXRkZWVsWmljaHRiYWFyRnVuYyhcbiAgICByaXREZWxlbjogUml0ZGVlbFtdLFxuICAgIHsgcml0RGVlbCwgemljaHRiYWFyIH06IHsgcml0RGVlbDogUml0ZGVlbDsgemljaHRiYWFyOiBib29sZWFuIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgY29uc3QgZ2V6ZXRSaXRkZWVsID0gcml0RGVlbC5jb3B5TWV0WmljaHRiYWFyaGVpZCh6aWNodGJhYXIgPyBaSUNIVEJBQVIgOiBPTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUik7XG4gICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIGdlemV0Uml0ZGVlbCk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZVJpdGRlZWxaaWNodGJhYXJGdW5jKFxuICAgIHJpdERlbGVuOiBSaXRkZWVsW10sXG4gICAgeyByaXREZWVsIH06IHsgcml0RGVlbDogUml0ZGVlbCB9XG4pOiBSaXRkZWVsW10ge1xuICAgIGNvbnN0IGdldG9nZ2VsZGVSaXRkZWVsID0gcml0RGVlbC5jb3B5TWV0WmljaHRiYWFyaGVpZChyaXREZWVsLmlzWmljaHRiYWFyKCkgPyBPTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUiA6IFpJQ0hUQkFBUik7XG4gICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIGdldG9nZ2VsZGVSaXRkZWVsKTtcbiAgICByZXR1cm4gWy4uLnJpdERlbGVuXTtcbn1cblxuZnVuY3Rpb24gc2V0WmljaHRiYWFyaGVpZEFsbGVSaXRkZWxlbkZ1bmMoXG4gICAgcml0RGVsZW46IFJpdGRlZWxbXSxcbiAgICB7IHppY2h0YmFhcmhlaWQgfTogeyB6aWNodGJhYXJoZWlkOiBib29sZWFuIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVsZW4uZmlsdGVyKHIgPT4gci5nZXRaaWNodGJhYXJoZWlkKCkgIT09IE9OWklDSFRCQUFSX0RPT1JfU1lTVEVFTSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIHJpdERlZWwuY29weU1ldFppY2h0YmFhcmhlaWQoemljaHRiYWFyaGVpZCA/IFpJQ0hUQkFBUiA6IE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHRvZ2dsZVppY2h0YmFhcmhlaWRWb29yQmV3ZWdpbmdlbkZ1bmMoXG4gICAgcml0RGVsZW46IFJpdGRlZWxbXSxcbiAgICB7IGJld2VnaW5nSWRzIH06IHsgYmV3ZWdpbmdJZHM6IG51bWJlcltdIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVsZW4uZmlsdGVyKHIgPT4gci5iZXdlZ2luZyAmJiBiZXdlZ2luZ0lkcy5pbmNsdWRlcyhOdW1iZXIoci5nZXRCZXdlZ2luZ0lkKCkpKSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgdmVydmFuZ1JpdGRlZWwocml0RGVsZW4sIHJpdERlZWwsIHJpdERlZWwuY29weU1ldFppY2h0YmFhcmhlaWQoWklDSFRCQUFSKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIHZlcnZhbmdSaXRkZWVsKHJpdGRlbGVuOiBSaXRkZWVsW10sIG9yZ1JpdGRlZWw6IFJpdGRlZWwsIG5ld1JpdGRlZWw6IFJpdGRlZWwpOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJpdGRlbGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChyaXRkZWxlbltpXSA9PT0gb3JnUml0ZGVlbCkge1xuICAgICAgICAgICAgcml0ZGVsZW5baV0gPSBuZXdSaXRkZWVsO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRlbGV0ZVJpdGRlZWxGdW5jKFxuICAgIHJpdERlbGVuOiBSaXRkZWVsW10sXG4gICAgeyByaXREZWVsIH06IHsgcml0RGVlbDogUml0ZGVlbCB9XG4pOiBSaXRkZWVsW10ge1xuICAgIGNvbnN0IGlkeCA9IHJpdERlbGVuLmluZGV4T2Yocml0RGVlbCk7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJpdERlbGVuLnNwbGljZShpZHgsIDEpO1xuICAgIH1cbiAgICByZXR1cm4gWy4uLnJpdERlbGVuXTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlUml0ZGVlbEFjdGllRnVuYyhcbiAgICByaXREZWxlbjogUml0ZGVlbFtdLFxuICAgIHsgcml0RGVlbCwgYWN0aWUgfTogeyByaXREZWVsOiBSaXRkZWVsOyBhY3RpZTogQWN0aWUgfVxuKTogUml0ZGVlbFtdIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygcml0RGVsZW4pIHtcbiAgICAgICAgLy8gV2UgZ2VicnVpa2VuIGVxdWFscyBvbWRhdCBoZXQgd2VsIG9mIG5pZXQgemljaHRiYWFyIHppam4gdmFuIGVlbiByaXRkZWVsIG5pZXQgcmVsZXZhbnQgaXNcbiAgICAgICAgaWYgKGl0ZW0uZXF1YWxzKHJpdERlZWwpKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpZXMgPSByaXREZWVsLmFjdGllcztcbiAgICAgICAgICAgIGNvbnN0IGFpZHggPSBhY3RpZXMuaW5kZXhPZihhY3RpZSk7XG4gICAgICAgICAgICBhY3RpZXMuc3BsaWNlKGFpZHgsIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG5cbmZ1bmN0aW9uIGFkZFJpdGRlZWxBY3RpZUZ1bmMoXG4gICAgcml0RGVsZW46IFJpdGRlZWxbXSxcbiAgICB7IHJpdERlZWwsIGFjdGllIH06IHsgcml0RGVlbDogUml0ZGVlbDsgYWN0aWU6IEFjdGllIH1cbik6IFJpdGRlZWxbXSB7XG4gICAgcml0RGVlbC5hY3RpZXMucHVzaChhY3RpZSk7XG4gICAgcmV0dXJuIFsuLi5yaXREZWxlbl07XG59XG4iXX0=
|
|
@@ -105,6 +105,7 @@ export class ActieHelper {
|
|
|
105
105
|
this.messagesService = messagesService;
|
|
106
106
|
this.store = store;
|
|
107
107
|
this.loggingHelper = loggingHelper;
|
|
108
|
+
this.debug = false;
|
|
108
109
|
this.store.select('debug').subscribe(debug => this.debug = debug);
|
|
109
110
|
}
|
|
110
111
|
static getActieTopoElements(ritDeel, sbmService) {
|
|
@@ -138,10 +139,10 @@ export class ActieHelper {
|
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
static actieComparator(actie1, actie2) {
|
|
141
|
-
if (actie1.vanKilometrering !== actie2.vanKilometrering) {
|
|
142
|
+
if (actie1.vanKilometrering && actie2.vanKilometrering && actie1.vanKilometrering !== actie2.vanKilometrering) {
|
|
142
143
|
return actie1.vanKilometrering > actie2.vanKilometrering ? 1 : -1;
|
|
143
144
|
}
|
|
144
|
-
if (actie1.ritActieTypeOmschrijving !== actie2.ritActieTypeOmschrijving) {
|
|
145
|
+
if (actie1.ritActieTypeOmschrijving && actie2.ritActieTypeOmschrijving && actie1.ritActieTypeOmschrijving !== actie2.ritActieTypeOmschrijving) {
|
|
145
146
|
return actie1.ritActieTypeOmschrijving > actie2.ritActieTypeOmschrijving ? 1 : -1;
|
|
146
147
|
}
|
|
147
148
|
if (actie1.wisselNaam !== actie2.wisselNaam) {
|
|
@@ -181,9 +182,9 @@ export class ActieHelper {
|
|
|
181
182
|
// make sure the elems are sorted in ascending order
|
|
182
183
|
static sorteerTopoElementen(topoElems) {
|
|
183
184
|
const topoElementen = topoElems.slice();
|
|
184
|
-
let lint =
|
|
185
|
-
let first
|
|
186
|
-
let second
|
|
185
|
+
let lint = undefined;
|
|
186
|
+
let first;
|
|
187
|
+
let second;
|
|
187
188
|
for (const topoElement of topoElementen) {
|
|
188
189
|
let kilometreringen = null;
|
|
189
190
|
const kms = JsJavaUtil.listToArray(topoElement.getKilometreringen());
|
|
@@ -195,7 +196,7 @@ export class ActieHelper {
|
|
|
195
196
|
lint = kilometreringen[0].getKmLint();
|
|
196
197
|
}
|
|
197
198
|
else if (kilometreringen && first && !second) {
|
|
198
|
-
const km = KmRange.getKilometrering(lint, kilometreringen);
|
|
199
|
+
const km = KmRange.getKilometrering(lint ?? '', kilometreringen);
|
|
199
200
|
if (km) {
|
|
200
201
|
second = km.getKmWaarde();
|
|
201
202
|
}
|
|
@@ -310,15 +311,17 @@ export class ActieHelper {
|
|
|
310
311
|
else {
|
|
311
312
|
const puics = [];
|
|
312
313
|
kmRanges.forEach(kmRange => {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
314
|
+
if (actie.vanKilometrering && actie.vanKilometerlint && actie.totKilometrering && actie.totKilometerlint) {
|
|
315
|
+
let vanKilometrering = new MstKilometrering(actie.vanKilometerlint, actie.vanKilometrering);
|
|
316
|
+
let totKilometrering = new MstKilometrering(actie.totKilometerlint, actie.totKilometrering);
|
|
317
|
+
if (actie.vanKilometrering > actie.totKilometrering) {
|
|
318
|
+
const temp = { van: vanKilometrering, tot: totKilometrering };
|
|
319
|
+
vanKilometrering = temp.tot;
|
|
320
|
+
totKilometrering = temp.van;
|
|
321
|
+
}
|
|
322
|
+
if (kmRange.heeftOverlap(vanKilometrering, totKilometrering)) {
|
|
323
|
+
puics.push(kmRange.topologyElement.getPuic());
|
|
324
|
+
}
|
|
322
325
|
}
|
|
323
326
|
});
|
|
324
327
|
if (puics.length === 0) {
|
|
@@ -417,7 +420,7 @@ export class ActieHelper {
|
|
|
417
420
|
if (ActieHelper.isKantCodeLinks(kantcode)) {
|
|
418
421
|
return wissel.getLeft();
|
|
419
422
|
}
|
|
420
|
-
return
|
|
423
|
+
return undefined;
|
|
421
424
|
}
|
|
422
425
|
bepaalPuicVoorWisselSlijpenActie(actie) {
|
|
423
426
|
const storingsSymboolPuic = this.sbmService.getSBWissel(actie.wisselNaam, actie.pplgNaam)?.getStoringSymboolPuic();
|
|
@@ -434,4 +437,4 @@ export class ActieHelper {
|
|
|
434
437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActieHelper, decorators: [{
|
|
435
438
|
type: Injectable
|
|
436
439
|
}], ctorParameters: () => [{ type: i1.SignaleringsBeeldManagerService }, { type: i2.MstLoggingResource }, { type: i3.MessagesService }, { type: i4.Store }, { type: i5.LoggingHelper }] });
|
|
437
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBSXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7O0FBSTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNoQzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEVBQUUsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25E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QyxRQUFRLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxXQUFXLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxLQUFZO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUNuSCxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE1BQU0sT0FBTyxHQUFpQixjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQ0QsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQzs4R0F2WVEsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnNKYXZhVXRpbCwgc2JibGFkIH0gZnJvbSAnQGxveGlhL3JpandlZ2VuJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTG9nRHRvIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL29wZW5hcGknO1xuaW1wb3J0IHsgTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vYXRvbWljLWNvbXBvbmVudHMvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBLbVJhbmdlIH0gZnJvbSAnLi4vbW9kZWwva20tcmFuZ2UnO1xuaW1wb3J0IHsgTWVsZGluZ0V2ZW50IH0gZnJvbSAnLi4vbW9kZWwvbWVsZGluZy1ldmVudCc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBXaXNzZWxLYW50Q29kZSB9IGZyb20gJy4uL21vZGVsL3dpc3NlbC1rYW50LWNvZGUnO1xuaW1wb3J0IHsgQWN0aWUgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgTXN0TG9nZ2luZ1Jlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2VzL21zdGxvZ2dpbmcucmVzb3VyY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcbmltcG9ydCB7IExvZ2dpbmdIZWxwZXIgfSBmcm9tICcuL2xvZ2dpbmctaGVscGVyJztcbmltcG9ydCB7IE1lbGRpbmdCdWlsZGVyIH0gZnJvbSAnLi9tZWxkaW5nLWJ1aWxkZXInO1xuaW1wb3J0IHsgTWVzc2FnZUJ1aWxkZXIgfSBmcm9tICcuL21lc3NhZ2UtYnVpbGRlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi9tdWx0aS1tYXAnO1xuaW1wb3J0IEtpbG9tZXRyZXJpbmcgPSBzYmJsYWQuS2lsb21ldHJlcmluZztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfMSA9IDE7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fVklBRFVDVF9LTEVJTiA9IDI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fQk9PRyA9IDM7XG4gKi9cbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfS0xFSU4gPSA0O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF9HUk9PVCA9IDU7XG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9PVkVSV0VHID0gNjtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CUlVHX0dST09UID0gNztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CUlVHX0tMRUlOID0gODtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9TUE9PUlRBSyA9IDk7XG4gKi9cbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfVlNUID0gMTA7XG4vKipcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfQlZMQkxEX1QgPSAxMTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9WSUFEVUNUX0dST09UID0gMTI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1BBTlRDT05UX1QgPSAxMztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfUklKRFJMSUdfVCA9IDE0O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUTEFQUl9UID0gMTU7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1RPUFBERUZfVCA9IDE2O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUT1BQQkxEX1QgPSAxNztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU1BTVERFRl9UID0gMTg7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1REV1BSX1QgPSAxOTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfQkFBTkJMRF9UID0gMjA7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQR0VPTV9UID0gMjE7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFXzIyID0gMjI7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFXzIzID0gMjM7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1JJSkRSRElLX1QgPSAyNDtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9UVU5ORUwgPSAyNTtcbiAqL1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzJfS09NTUFfNSA9IDI2O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzI5ID0gMjc7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjAgPSAyODtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOF9LT01NQV81ID0gMjk7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTggPSAzMDtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xNSA9IDMxO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEyID0gMzI7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTAgPSAzMztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zNF9LT01NQV83ID0gMzQ7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOSA9IDM1O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzdfS09NTUFfNSA9IDM2O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzcgPSAzNztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF82ID0gMzg7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNSA9IDM5O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzRfS09NTUFfNSA9IDQwO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzQgPSA0MTtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zX0tPTU1BXzUgPSA0MjtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF84ID0gNDM7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzlfS09NTUFfMSA9IDQ0O1xuXG5leHBvcnQgY2xhc3MgTXN0S2lsb21ldHJlcmluZyBpbXBsZW1lbnRzIHNiYmxhZC5LaWxvbWV0cmVyaW5nIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGttTGludDogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IGttV2FhcmRlOiBudW1iZXIpIHtcbiAgICB9XG5cbiAgICBnZXRLbUxpbnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua21MaW50O1xuICAgIH1cblxuICAgIGdldEttV2FhcmRlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmttV2FhcmRlO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFjdGllSGVscGVyIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgSEFMRl9FTkdFTFNfV0lTU0VMID0gJ0hhbHZlRW5nZWxzZVdpc3NlbCc7XG4gICAgc3RhdGljIHJlYWRvbmx5IEVOR0VMU19XSVNTRUwgPSAnRW5nZWxzZVdpc3NlbCc7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNMSUpQRU5fV0lTU0VMX0FDVElFUyA9IFtcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMX0tMRUlOLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfR1JPT1QsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzJfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjksXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzIwLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOF9LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEyLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xMCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzRfS09NTUFfNyxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfN19LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF83LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF82LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF80X0tPTU1BXzUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzQsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzNfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfOCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMzlfS09NTUFfMV07XG5cbiAgICBwcml2YXRlIGRlYnVnOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbXN0TG9nUmVzb3VyY2U6IE1zdExvZ2dpbmdSZXNvdXJjZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzU2VydmljZTogTWVzc2FnZXNTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dpbmdIZWxwZXI6IExvZ2dpbmdIZWxwZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2RlYnVnJykuc3Vic2NyaWJlKGRlYnVnID0+IHRoaXMuZGVidWcgPSBkZWJ1Zyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3RpZVRvcG9FbGVtZW50cyhyaXREZWVsOiBSaXRkZWVsLCBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTogVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICBjb25zdCBhY3RpZVRvcG9FbGVtZW50cyA9IHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgZXh0cmFUb3BvRWxlbWVudCA9IEFjdGllSGVscGVyLmdldFZvb3JTZWN0aWVWYW5CZWdpblNlaW4ocml0RGVlbCwgc2JtU2VydmljZSk7XG4gICAgICAgIGlmIChleHRyYVRvcG9FbGVtZW50KSB7XG4gICAgICAgICAgICBhY3RpZVRvcG9FbGVtZW50cy5zcGxpY2UoMCwgMCwgZXh0cmFUb3BvRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGllVG9wb0VsZW1lbnRzO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1ZTVEFjdGllKGFjdGllKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhY3RpZS5yaXRBY3RpZVR5cGVJZCA9PT0gUklUX0FDVElFX1ZTVDtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU0xJSlBFTl9XSVNTRUxfQUNUSUVTLmluZGV4T2YoYWN0aWUucml0QWN0aWVUeXBlSWQpID49IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGJlcGFhbFRha0lkKGFjdGllKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLnBwbGdOYWFtICsgJy0nICsgYWN0aWUud2lzc2VsTmFhbSArICctJyArIGFjdGllLndpc3NlbEthbnRDb2RlO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0hlZWxPZkhhbGZFbmdlbHNXaXNzZWxBY3RpZShhY3RpZTogQWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLmluZnJhT2JqZWN0VHlwZSA9PT0gdGhpcy5IQUxGX0VOR0VMU19XSVNTRUwgfHwgYWN0aWUuaW5mcmFPYmplY3RUeXBlID09PSB0aGlzLkVOR0VMU19XSVNTRUw7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFZTVEFjdGllT21zY2hyaWp2aW5nKGFjdGllOiBBY3RpZSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5nZWxzZVdpc3NlbChhY3RpZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpc3NlbE5hbWVuID0gdGhpcy5nZXRXaXNzZWxEZWxlbihhY3RpZS53aXNzZWxOYWFtKTtcbiAgICAgICAgICAgIGNvbnN0IGthbnRDb2RlcyA9IHRoaXMuZ2V0S2FudENvZGVzKGFjdGllLndpc3NlbEthbnRDb2RlKTtcbiAgICAgICAgICAgIHJldHVybiBgVlNUICR7IHdpc3NlbE5hbWVuWzBdIH0gJHsga2FudENvZGVzWzBdIH0gLSAkeyB3aXNzZWxOYW1lblsxXSB9ICR7IGthbnRDb2Rlc1sxXSB9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgVlNUICR7IGFjdGllLndpc3NlbE5hYW0gfSAkeyBBY3RpZUhlbHBlci5nZXRLYW50Y29kZVRla3N0KGFjdGllLndpc3NlbEthbnRDb2RlKSB9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aWVDb21wYXJhdG9yKGFjdGllMTogQWN0aWUsIGFjdGllMjogQWN0aWUpOiBudW1iZXIge1xuICAgICAgICBpZiAoYWN0aWUxLnZhbktpbG9tZXRyZXJpbmcgIT09IGFjdGllMi52YW5LaWxvbWV0cmVyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aWUxLnZhbktpbG9tZXRyZXJpbmcgPiBhY3RpZTIudmFuS2lsb21ldHJlcmluZyA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aWUxLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyAhPT0gYWN0aWUyLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgPiBhY3RpZTIucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3RpZTEud2lzc2VsTmFhbSAhPT0gYWN0aWUyLndpc3NlbE5hYW0pIHtcbiAgICAgICAgICAgIHJldHVybiBhY3RpZTEud2lzc2VsTmFhbSA+IGFjdGllMi53aXNzZWxOYWFtID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3RpZTEud2lzc2VsS2FudENvZGUgIT09IGFjdGllMi53aXNzZWxLYW50Q29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS53aXNzZWxLYW50Q29kZSA+IGFjdGllMi53aXNzZWxLYW50Q29kZSA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0V2lzc2VsS2FudENvZGVzKGFjdGllOiBBY3RpZSk6IFdpc3NlbEthbnRDb2RlW10ge1xuICAgICAgICBjb25zdCB3aXNzZWxLYW50Q29kZXM6IFdpc3NlbEthbnRDb2RlW10gPSBbXTtcblxuICAgICAgICBjb25zdCBuYW1lbiA9IHRoaXMuZ2V0V2lzc2VsRGVsZW4oYWN0aWUud2lzc2VsTmFhbSk7XG4gICAgICAgIGNvbnN0IGthbnRDb2RlcyA9IHRoaXMuZ2V0S2FudENvZGVzKGFjdGllLndpc3NlbEthbnRDb2RlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2lzc2VsS2FudENvZGVzLnB1c2gobmV3IFdpc3NlbEthbnRDb2RlKG5hbWVuW2ldLCBrYW50Q29kZXNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3aXNzZWxLYW50Q29kZXM7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFdpc3NlbERlbGVuKHdpc3NlbE5hYW06IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHdpc3NlbE5hYW0uc3BsaXQoJ3wnKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0S2FudENvZGVzKGthbnRDb2Rlczogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoa2FudENvZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuIFtrYW50Q29kZXMuY2hhckF0KDApLCBrYW50Q29kZXMuY2hhckF0KDEpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2thbnRDb2Rlc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Vm9vclNlY3RpZVZhbkJlZ2luU2VpbihyaXREZWVsOiBSaXRkZWVsLCBzYm1TZXJ2aWNlOiBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlKTogVG9wb2xvZ3lFbGVtZW50IHtcbiAgICAgICAgLy8gUlBFIHRvb250IGVlbiByaWp3ZWcgdmFuYWYgZGUgc2VjdGllc2NoZWlkaW5nIGJlaG9yZW5kIGJpaiBoZXQgYmVnaW5zZWluLiBNU1QgbGV2ZXJ0IGJld2VnaW5nZW4gd2FhcmJpaiBhY3RpZXMgZ2VkYWFuIG1vZXRlblxuICAgICAgICAvLyB3b3JkZW4gdHVzc2VuIGhldCBiZWdpbnNlaW4gZW4gZGUgZ2Vub2VtZGUgc2VjdGllc2NoZWlkaW5nLiBPbSBkZXplIHRlIGt1bm5lbiB0b25lbiB2b2VnZW4gd2UgZGUgdm9vcnNlY3RpZSB2YW4gaGV0IGJlZ2luc2VpblxuICAgICAgICAvLyB0b2UgYWFuIGRlIGxpanN0IG1ldCByb3V0ZSBlbGVtZW50ZW4uXG4gICAgICAgIGNvbnN0IGJlZ2luUm91dGVTZWluID0gcml0RGVlbC5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpO1xuICAgICAgICBjb25zdCBzYlNlaW4gPSBzYm1TZXJ2aWNlLmdldFNCU2VpbihiZWdpblJvdXRlU2Vpbik7XG4gICAgICAgIHJldHVybiBzYlNlaW4gPyBzYlNlaW4uZ2V0Vm9vclNlY3RpZSgpIDogbnVsbDtcbiAgICB9XG5cbi8vIG1ha2Ugc3VyZSB0aGUgZWxlbXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICBwcml2YXRlIHN0YXRpYyBzb3J0ZWVyVG9wb0VsZW1lbnRlbih0b3BvRWxlbXM6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSB0b3BvRWxlbXMuc2xpY2UoKTtcbiAgICAgICAgbGV0IGxpbnQgPSBudWxsO1xuICAgICAgICBsZXQgZmlyc3QgPSBudWxsO1xuICAgICAgICBsZXQgc2Vjb25kID0gbnVsbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRvcG9FbGVtZW50IG9mIHRvcG9FbGVtZW50ZW4pIHtcbiAgICAgICAgICAgIGxldCBraWxvbWV0cmVyaW5nZW4gPSBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBrbXMgPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRvcG9FbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBraWxvbWV0cmVyaW5nZW4gPSBrbXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraWxvbWV0cmVyaW5nZW4gJiYgIWZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBraWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgICAgICAgICBsaW50ID0ga2lsb21ldHJlcmluZ2VuWzBdLmdldEttTGludCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChraWxvbWV0cmVyaW5nZW4gJiYgZmlyc3QgJiYgIXNlY29uZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGttID0gS21SYW5nZS5nZXRLaWxvbWV0cmVyaW5nKGxpbnQsIGtpbG9tZXRyZXJpbmdlbik7XG4gICAgICAgICAgICAgICAgaWYgKGttKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZCA9IGttLmdldEttV2FhcmRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIHNlY29uZCAmJiBmaXJzdCA+IHNlY29uZCkge1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW4ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3BvRWxlbWVudGVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttcywgdmFuS2lsb21ldHJlcmluZ2VuOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuOiBzYmJsYWQuS2lsb21ldHJlcmluZ1tdLCBrbVJhbmdlczogS21SYW5nZVtdKTogdm9pZCB7XG4gICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICAgIGlmICghdmFuS2lsb21ldHJlcmluZ2VuICYmIHRvdEtpbG9tZXRyZXJpbmdlbikge1xuICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmdlbiA9IFtuZXcgTXN0S2lsb21ldHJlcmluZyh0b3RLaWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21MaW50KCksIC0xMDAwMDApXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdG90S2lsb21ldHJlcmluZ2VuICYmIHZhbktpbG9tZXRyZXJpbmdlbikge1xuICAgICAgICAgICAgICAgIHRvdEtpbG9tZXRyZXJpbmdlbiA9IFtuZXcgTXN0S2lsb21ldHJlcmluZyh2YW5LaWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21MaW50KCksIDEwMDAwMCldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFuS2lsb21ldHJlcmluZ2VuWzBdID4gdG90S2lsb21ldHJlcmluZ2VuWzBdKSB7XG4gICAgICAgICAgICAgICAga21SYW5nZXMucHVzaChLbVJhbmdlLnJhbmdlVm9vclN0cmVrT2JqZWN0KGUsIHRoaXMuYWRkS20odmFuS2lsb21ldHJlcmluZ2VuLCAtMSksIHRoaXMuYWRkS20odG90S2lsb21ldHJlcmluZ2VuLCAxKSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5wdXNoKEttUmFuZ2UucmFuZ2VWb29yU3RyZWtPYmplY3QoZSwgdGhpcy5hZGRLbSh2YW5LaWxvbWV0cmVyaW5nZW4sIDEpLCB0aGlzLmFkZEttKHRvdEtpbG9tZXRyZXJpbmdlbiwgLTEpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFkZEttKGttczogS2lsb21ldHJlcmluZ1tdLCBhYW50YWw6IG51bWJlcik6IEtpbG9tZXRyZXJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHJldHZhbCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGttIG9mIGttcykge1xuICAgICAgICAgICAgcmV0dmFsLnB1c2gobmV3IE1zdEtpbG9tZXRyZXJpbmcoa20uZ2V0S21MaW50KCksIGttLmdldEttV2FhcmRlKCkgKyBhYW50YWwpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGthbkFjdGllc0JlcGFsZW4ocml0ZGVlbDogUml0ZGVlbCk6IEFjdGllW10ge1xuICAgICAgICByZXR1cm4gcml0ZGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdGRlZWwuYWN0aWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzS2lsb21ldHJlcmluZ0FhbndlemlnKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgYWFud2V6aWcgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudGVuKSB7XG4gICAgICAgICAgICBjb25zdCBrbXMgPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KGZyYWdtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhYW53ZXppZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFhbndlemlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlbihzcG9vcnRhazogc2JibGFkLlNwb29ydGFrKTogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkoc3Bvb3J0YWsuZ2V0VGFrRWxlbWVudGVuKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlblB1aWNzKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHVpY3MgPSBbXTtcbiAgICAgICAgZnJhZ21lbnRlbi5mb3JFYWNoKGRlZWwgPT4gcHVpY3MucHVzaChkZWVsLmdldFB1aWMoKSkpO1xuICAgICAgICByZXR1cm4gcHVpY3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNFbmdlbHNlV2lzc2VsKGFjdGllOiBBY3RpZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYWN0aWUud2lzc2VsTmFhbS5pbmNsdWRlcygnfCcpICYmIGFjdGllLndpc3NlbEthbnRDb2RlLmxlbmd0aCA9PT0gMjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRLYW50Y29kZVRla3N0KGthbnRjb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgdGVrc3QgPSAnVm9vcic7XG4gICAgICAgIGlmICh0aGlzLmlzS2FudENvZGVMaW5rcyhrYW50Y29kZSkpIHtcbiAgICAgICAgICAgIHRla3N0ID0gJ0xpbmtzJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzS2FudENvZGVSZWNodHMoa2FudGNvZGUpKSB7XG4gICAgICAgICAgICB0ZWtzdCA9ICdSZWNodHMnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZWtzdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBpc0thbnRDb2RlUmVjaHRzKGthbnRjb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGthbnRjb2RlID09PSAnUic7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNLYW50Q29kZUxpbmtzKGthbnRjb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGthbnRjb2RlID09PSAnTCc7XG4gICAgfVxuXG4gICAgYmVwYWFsUHVpY3NWb29yQWN0aWUoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBsZXQgcHVpY3M7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1ZTVEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgcHVpY3MgPSB0aGlzLmJlcGFhbFB1aWNzVm9vclZTVEFjdGllKGFjdGllKTtcbiAgICAgICAgfSBlbHNlIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIHB1aWNzID0gdGhpcy5iZXBhYWxQdWljVm9vcldpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwdWljcyA9IHRoaXMuYmVwYWFsQWN0aWVQdWljc1Zvb3JTcG9vcnRhayhhY3RpZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIGJlcGFhbEFjdGllUHVpY3NVaXRSaXRkZWVsKHJpdERlZWwpOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+IHsvLyB2b29yIGhpZ2hsaWdodHNcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4oKTtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmthbkFjdGllc0JlcGFsZW4ocml0RGVlbCkpIHtcbiAgICAgICAgICAgIHJpdERlZWwuYWN0aWVzLmZvckVhY2goYSA9PiB7XG4gICAgICAgICAgICAgICAgbWFwLnB1dEFsbChhLCB0aGlzLmJlcGFhbFB1aWNzVm9vckFjdGllKGEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuXG4gICAgYmVwYWFsQWN0aWVzUHVpY3MoYWN0aWVzOiBBY3RpZVtdLCB0b3BvRWxlbTogVG9wb2xvZ3lFbGVtZW50W10pOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdG9wb0VsZW1lbnRlbiA9IEFjdGllSGVscGVyLnNvcnRlZXJUb3BvRWxlbWVudGVuKHRvcG9FbGVtKTtcblxuICAgICAgICBjb25zdCBrbVJhbmdlcyA9IHRoaXMudmVyd2Vya1RvcG9FbGVtZW50ZW4odG9wb0VsZW1lbnRlbik7XG4gICAgICAgIHJldHVybiB0aGlzLnZlcndlcmtBY3RpZXMoYWN0aWVzLCBrbVJhbmdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ3ZXJrQWN0aWVzKGFjdGllczogQWN0aWVbXSwga21SYW5nZXM6IEttUmFuZ2VbXSk6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBhY3RpZVpvbmRlckVsZW1lbnRlbjogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgbG9nTWVsZGluZ0RUT3M6IExvZ0R0b1tdID0gW107XG5cbiAgICAgICAgY29uc3QgcmV0dmFsID0gbmV3IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4oKTtcbiAgICAgICAgYWN0aWVzLmZvckVhY2goYWN0aWUgPT4ge1xuICAgICAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1aWNBcnJheSA9IHRoaXMuYmVwYWFsUHVpY1Zvb3JXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpO1xuICAgICAgICAgICAgICAgIHJldHZhbC5wdXRBbGwoYWN0aWUsIHB1aWNBcnJheSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gW107XG4gICAgICAgICAgICAgICAga21SYW5nZXMuZm9yRWFjaChrbVJhbmdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbktpbG9tZXRyZXJpbmcgPSBuZXcgTXN0S2lsb21ldHJlcmluZyhhY3RpZS52YW5LaWxvbWV0ZXJsaW50LCBhY3RpZS52YW5LaWxvbWV0cmVyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvdEtpbG9tZXRyZXJpbmcgPSBuZXcgTXN0S2lsb21ldHJlcmluZyhhY3RpZS50b3RLaWxvbWV0ZXJsaW50LCBhY3RpZS50b3RLaWxvbWV0cmVyaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGllLnZhbktpbG9tZXRyZXJpbmcgPiBhY3RpZS50b3RLaWxvbWV0cmVyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wID0geyB2YW46IHZhbktpbG9tZXRyZXJpbmcsIHRvdDogdG90S2lsb21ldHJlcmluZyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFuS2lsb21ldHJlcmluZyA9IHRlbXAudG90O1xuICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZyA9IHRlbXAudmFuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChrbVJhbmdlLmhlZWZ0T3ZlcmxhcCh2YW5LaWxvbWV0cmVyaW5nLCB0b3RLaWxvbWV0cmVyaW5nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVpY3MucHVzaChrbVJhbmdlLnRvcG9sb2d5RWxlbWVudC5nZXRQdWljKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1aWNzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpZVpvbmRlckVsZW1lbnRlbi5wdXNoKGFjdGllLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVsZGluZzogTWVsZGluZ0V2ZW50ID0gTWVsZGluZ0J1aWxkZXIuYWN0aWVIaWdobGlnaHRFcnJvcihhY3RpZVpvbmRlckVsZW1lbnRlbik7XG4gICAgICAgICAgICAgICAgICAgIGxvZ01lbGRpbmdEVE9zLnB1c2godGhpcy5sb2dnaW5nSGVscGVyLm1hYWtMb2dEVE8obWVsZGluZywgYWN0aWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dmFsLnB1dEFsbChhY3RpZSwgcHVpY3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2dMZWdlTWVsZGluZ0R0byhsb2dNZWxkaW5nRFRPcyk7XG4gICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dMZWdlTWVsZGluZ0R0byhsb2dEdG86IExvZ0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGlmIChsb2dEdG8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXN0TG9nUmVzb3VyY2UubG9nTWVzc2FnZXMobG9nRHRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya1RvcG9FbGVtZW50ZW4odG9wb0VsZW1lbnRlbjogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdKTogS21SYW5nZVtdIHtcbiAgICAgICAgY29uc3Qga21SYW5nZXM6IEttUmFuZ2VbXSA9IFtdO1xuXG4gICAgICAgIGxldCB0b3BvRWxlbWVudGVuWm9uZGVyS21zID0gW107XG4gICAgICAgIGxldCBsYWF0c3RlUHVudEttczogS2lsb21ldHJlcmluZ1tdID0gbnVsbDtcbiAgICAgICAgdG9wb0VsZW1lbnRlbi5mb3JFYWNoKGVsZW0gPT4ge1xuICAgICAgICAgICAgY29uc3Qga21zOiBLaWxvbWV0cmVyaW5nW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KGVsZW0uZ2V0S2lsb21ldHJlcmluZ2VuKCkpO1xuICAgICAgICAgICAgaWYgKGttcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgQWN0aWVIZWxwZXIuY29ycmlnZWVyVG9wb0VsZW1lbnRlblpvbmRlckttcyh0b3BvRWxlbWVudGVuWm9uZGVyS21zLCBsYWF0c3RlUHVudEttcywga21zLCBrbVJhbmdlcyk7XG4gICAgICAgICAgICAgICAgdG9wb0VsZW1lbnRlblpvbmRlckttcyA9IFtdO1xuICAgICAgICAgICAgICAgIGttUmFuZ2VzLnB1c2goS21SYW5nZS5yYW5nZVZvb3JQdW50T2JqZWN0KGVsZW0pKTtcbiAgICAgICAgICAgICAgICBsYWF0c3RlUHVudEttcyA9IGttcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9wb0VsZW1lbnRlblpvbmRlckttcy5wdXNoKGVsZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRvcG9FbGVtZW50ZW5ab25kZXJLbXMubGVuZ3RoID4gMCAmJiBsYWF0c3RlUHVudEttcykge1xuICAgICAgICAgICAgQWN0aWVIZWxwZXIuY29ycmlnZWVyVG9wb0VsZW1lbnRlblpvbmRlckttcyh0b3BvRWxlbWVudGVuWm9uZGVyS21zLCBsYWF0c3RlUHVudEttcywgbnVsbCwga21SYW5nZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrbVJhbmdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbEFjdGllUHVpY3NWb29yU3Bvb3J0YWsoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBzcG9vcnRhayA9IHRoaXMuc2JtU2VydmljZS5nZXRTYlNwb29ydGFrKEFjdGllSGVscGVyLmJlcGFhbFRha0lkKGFjdGllKSk7XG5cbiAgICAgICAgbGV0IHB1aWNzID0gW107XG4gICAgICAgIGlmICghc3Bvb3J0YWspIHtcbiAgICAgICAgICAgIHJldHVybiBwdWljcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcmFnbWVudGVuID0gQWN0aWVIZWxwZXIuYmVwYWFsU3Bvb3J0YWtGcmFnbWVudGVuKHNwb29ydGFrKTtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzS2lsb21ldHJlcmluZ0FhbndlemlnKGZyYWdtZW50ZW4pKSB7XG4gICAgICAgICAgICBjb25zdCBtYXAgPSB0aGlzLmJlcGFhbEFjdGllc1B1aWNzKFthY3RpZV0sIGZyYWdtZW50ZW4pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgQXJyYXkuZnJvbShtYXAua2V5cygpKSkge1xuICAgICAgICAgICAgICAgIG1hcC5nZXQoa2V5KS5mb3JFYWNoKHggPT4gcHVpY3MucHVzaCh4KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwdWljcyA9IEFjdGllSGVscGVyLmJlcGFhbFNwb29ydGFrRnJhZ21lbnRlblB1aWNzKGZyYWdtZW50ZW4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFB1aWNzVm9vclZTVEFjdGllKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzSGVlbE9mSGFsZkVuZ2Vsc1dpc3NlbEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgY29uc3QgcmV0dmFsID0gW107XG4gICAgICAgICAgICBjb25zdCB3aXNzZWxEZWxlbiA9IEFjdGllSGVscGVyLmdldFdpc3NlbERlbGVuKGFjdGllLndpc3NlbE5hYW0pO1xuICAgICAgICAgICAgY29uc3QgcHVpY3NFZXJzdGVXaXNzZWwgPSB0aGlzLmJlcGFhbFdpc3NlbFB1aWNzKHdpc3NlbERlbGVuWzBdLCBhY3RpZS5wcGxnTmFhbSwgYWN0aWUud2lzc2VsS2FudENvZGVbMF0pO1xuICAgICAgICAgICAgY29uc3QgcHVpY3NUd2VlZGVXaXNzZWwgPSB0aGlzLmJlcGFhbFdpc3NlbFB1aWNzKHdpc3NlbERlbGVuWzFdLCBhY3RpZS5wcGxnTmFhbSwgYWN0aWUud2lzc2VsS2FudENvZGVbMV0pO1xuXG4gICAgICAgICAgICBjb25zdCBwdWljMSA9IHRoaXMuc2JtU2VydmljZS5nZXRFZXJzdGVWZXJiaW5kaW5nUHVpY1Zvb3JTcGxpdEVuZ2Vsc2VXaXNzZWwod2lzc2VsRGVsZW5bMF0sIGFjdGllLndpc3NlbEthbnRDb2RlWzBdKTtcbiAgICAgICAgICAgIGlmIChwdWljMSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR2YWwucHVzaChwdWljMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwdWljMiA9IHRoaXMuc2JtU2VydmljZS5nZXRFZXJzdGVWZXJiaW5kaW5nUHVpY1Zvb3JTcGxpdEVuZ2Vsc2VXaXNzZWwod2lzc2VsRGVsZW5bMV0sIGFjdGllLndpc3NlbEthbnRDb2RlWzFdKTtcbiAgICAgICAgICAgIGlmIChwdWljMiAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR2YWwucHVzaChwdWljMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR2YWwucHVzaCguLi5wdWljc0VlcnN0ZVdpc3NlbCk7XG4gICAgICAgICAgICByZXR2YWwucHVzaCguLi5wdWljc1R3ZWVkZVdpc3NlbCk7XG4gICAgICAgICAgICByZXR1cm4gcmV0dmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVwYWFsV2lzc2VsUHVpY3MoYWN0aWUud2lzc2VsTmFhbSwgYWN0aWUucHBsZ05hYW0sIGFjdGllLndpc3NlbEthbnRDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsV2lzc2VsUHVpY3Mod2lzc2VsTmFhbTogc3RyaW5nLCBwcGxnTmFhbTogc3RyaW5nLCBrYW50Y29kZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCB3aXNzZWwgPSB0aGlzLnNibVNlcnZpY2UuZ2V0U0JXaXNzZWwod2lzc2VsTmFhbSwgcHBsZ05hYW0pO1xuICAgICAgICBpZiAoIXdpc3NlbCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGthbnRFbGVtZW50ID0gdGhpcy5iZXBhYWxLYW50RWxlbWVudChrYW50Y29kZSwgd2lzc2VsKTtcbiAgICAgICAgaWYgKCFrYW50RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3JpbmdTeW1ib29sUHVpYyA9IHdpc3NlbC5nZXRTdG9yaW5nU3ltYm9vbFB1aWMoKTtcblxuICAgICAgICByZXR1cm4gW3N0b3JpbmdTeW1ib29sUHVpYywga2FudEVsZW1lbnQuZ2V0UHVpYygpXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbEthbnRFbGVtZW50KGthbnRjb2RlOiBzdHJpbmcsIHdpc3NlbDogc2JibGFkLldpc3NlbCk6IHNiYmxhZC5TcG9vcnRha0ZyYWdtZW50IHtcbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzS2FudENvZGVSZWNodHMoa2FudGNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd2lzc2VsLmdldFJpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFjdGllSGVscGVyLmlzS2FudENvZGVMaW5rcyhrYW50Y29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXNzZWwuZ2V0TGVmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsUHVpY1Zvb3JXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBzdG9yaW5nc1N5bWJvb2xQdWljID0gdGhpcy5zYm1TZXJ2aWNlLmdldFNCV2lzc2VsKGFjdGllLndpc3NlbE5hYW0sIGFjdGllLnBwbGdOYWFtKT8uZ2V0U3RvcmluZ1N5bWJvb2xQdWljKCk7XG4gICAgICAgIGlmICghc3RvcmluZ3NTeW1ib29sUHVpYyAmJiB0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zdCBtZWxkaW5nOiBNZWxkaW5nRXZlbnQgPSBNZWxkaW5nQnVpbGRlci5hY3RpZUhpZ2hsaWdodEVycm9yKFthY3RpZS5pZF0pO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1NlcnZpY2Uuc2hvd01lc3NhZ2UoTWVzc2FnZUJ1aWxkZXIuYWN0aWVIaWdobGlnaHRFcnJvcihbYWN0aWUuaWRdKSk7XG4gICAgICAgICAgICB0aGlzLm1zdExvZ1Jlc291cmNlLmxvZ01lc3NhZ2VzKFt0aGlzLmxvZ2dpbmdIZWxwZXIubWFha0xvZ0RUTyhtZWxkaW5nLCBhY3RpZSldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RvcmluZ3NTeW1ib29sUHVpYyA/IFtzdG9yaW5nc1N5bWJvb2xQdWljXSA6IFtdO1xuICAgIH1cbn1cblxuXG4iXX0=
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBSXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7O0FBSTVDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNoQzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEVBQUUsQ0FBQztBQUMxRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEVBQUUsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFDO0FBQ25E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QUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RCxDQUFDOzhHQTFZUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKc0phdmFVdGlsLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBMb2dEdG8gfSBmcm9tICcuLi8uLi9nZW5lcmF0ZWQvb3BlbmFwaSc7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi9hdG9taWMtY29tcG9uZW50cy9zZXJ2aWNlcy9tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEttUmFuZ2UgfSBmcm9tICcuLi9tb2RlbC9rbS1yYW5nZSc7XG5pbXBvcnQgeyBNZWxkaW5nRXZlbnQgfSBmcm9tICcuLi9tb2RlbC9tZWxkaW5nLWV2ZW50JztcbmltcG9ydCB7IFJpdGRlZWwgfSBmcm9tICcuLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCB7IFdpc3NlbEthbnRDb2RlIH0gZnJvbSAnLi4vbW9kZWwvd2lzc2VsLWthbnQtY29kZSc7XG5pbXBvcnQgeyBBY3RpZSB9IGZyb20gJy4uL29wdGltbyc7XG5pbXBvcnQgeyBNc3RMb2dnaW5nUmVzb3VyY2UgfSBmcm9tICcuLi9yZXNvdXJjZXMvbXN0bG9nZ2luZy5yZXNvdXJjZSc7XG5pbXBvcnQgeyBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBNc3RFZGl0b3JTdGF0ZSB9IGZyb20gJy4uL3N0YXRlL21zdC1lZGl0b3Itc3RhdGUnO1xuaW1wb3J0IHsgTG9nZ2luZ0hlbHBlciB9IGZyb20gJy4vbG9nZ2luZy1oZWxwZXInO1xuaW1wb3J0IHsgTWVsZGluZ0J1aWxkZXIgfSBmcm9tICcuL21lbGRpbmctYnVpbGRlcic7XG5pbXBvcnQgeyBNZXNzYWdlQnVpbGRlciB9IGZyb20gJy4vbWVzc2FnZS1idWlsZGVyJztcbmltcG9ydCB7IEFycmF5TXVsdGltYXAgfSBmcm9tICcuL211bHRpLW1hcCc7XG5pbXBvcnQgS2lsb21ldHJlcmluZyA9IHNiYmxhZC5LaWxvbWV0cmVyaW5nO1xuaW1wb3J0IFRvcG9sb2d5RWxlbWVudCA9IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnQ7XG5cbi8qKlxuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV8xID0gMTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9WSUFEVUNUX0tMRUlOID0gMjtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9CT09HID0gMztcbiAqL1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF9LTEVJTiA9IDQ7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMX0dST09UID0gNTtcbi8qKlxuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX09WRVJXRUcgPSA2O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX0JSVUdfR1JPT1QgPSA3O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX0JSVUdfS0xFSU4gPSA4O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1NQT09SVEFLID0gOTtcbiAqL1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9WU1QgPSAxMDtcbi8qKlxuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9CVkxCTERfVCA9IDExO1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1ZJQURVQ1RfR1JPT1QgPSAxMjtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfUEFOVENPTlRfVCA9IDEzO1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9SSUpEUkxJR19UID0gMTQ7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1RMQVBSX1QgPSAxNTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU1BTVE9QUERFRl9UID0gMTY7XG4gKiBleHBvcnQgY29uc3QgUklUX0FDVElFX1NQU1RPUFBCTERfVCA9IDE3O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TUFNUREVGX1QgPSAxODtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU1BTVERXUFJfVCA9IDE5O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9CQUFOQkxEX1QgPSAyMDtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU1BHRU9NX1QgPSAyMTtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfMjIgPSAyMjtcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfMjMgPSAyMztcbiAqIGV4cG9ydCBjb25zdCBSSVRfQUNUSUVfUklKRFJESUtfVCA9IDI0O1xuICogZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1RVTk5FTCA9IDI1O1xuICovXG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMl9LT01NQV81ID0gMjY7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjkgPSAyNztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8yMCA9IDI4O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzE4X0tPTU1BXzUgPSAyOTtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xOCA9IDMwO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzE1ID0gMzE7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTIgPSAzMjtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xMCA9IDMzO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzM0X0tPTU1BXzcgPSAzNDtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF85ID0gMzU7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfN19LT01NQV81ID0gMzY7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNyA9IDM3O1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzYgPSAzODtcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF81ID0gMzk7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNF9LT01NQV81ID0gNDA7XG5leHBvcnQgY29uc3QgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNCA9IDQxO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzNfS09NTUFfNSA9IDQyO1xuZXhwb3J0IGNvbnN0IFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzggPSA0MztcbmV4cG9ydCBjb25zdCBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zOV9LT01NQV8xID0gNDQ7XG5cbmV4cG9ydCBjbGFzcyBNc3RLaWxvbWV0cmVyaW5nIGltcGxlbWVudHMgc2JibGFkLktpbG9tZXRyZXJpbmcge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkga21MaW50OiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkga21XYWFyZGU6IG51bWJlcikge1xuICAgIH1cblxuICAgIGdldEttTGludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5rbUxpbnQ7XG4gICAgfVxuXG4gICAgZ2V0S21XYWFyZGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua21XYWFyZGU7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aWVIZWxwZXIge1xuICAgIHN0YXRpYyByZWFkb25seSBIQUxGX0VOR0VMU19XSVNTRUwgPSAnSGFsdmVFbmdlbHNlV2lzc2VsJztcbiAgICBzdGF0aWMgcmVhZG9ubHkgRU5HRUxTX1dJU1NFTCA9ICdFbmdlbHNlV2lzc2VsJztcbiAgICBzdGF0aWMgcmVhZG9ubHkgU0xJSlBFTl9XSVNTRUxfQUNUSUVTID0gW1xuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfS0xFSU4sXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF9HUk9PVCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMl9LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8yOSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMjAsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzE4X0tPTU1BXzUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzE4LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8xNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfMTIsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzEwLFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zNF9LT01NQV83LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF85LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF83X0tPTU1BXzUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzcsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzYsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzUsXG4gICAgICAgIFJJVF9BQ1RJRV9TTElKUEVOX1dJU1NFTF8xX09QXzRfS09NTUFfNSxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfNCxcbiAgICAgICAgUklUX0FDVElFX1NMSUpQRU5fV0lTU0VMXzFfT1BfM19LT01NQV81LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF84LFxuICAgICAgICBSSVRfQUNUSUVfU0xJSlBFTl9XSVNTRUxfMV9PUF8zOV9LT01NQV8xXTtcblxuICAgIHByaXZhdGUgZGVidWcgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2JtU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1zdExvZ1Jlc291cmNlOiBNc3RMb2dnaW5nUmVzb3VyY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlc1NlcnZpY2U6IE1lc3NhZ2VzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZTxNc3RFZGl0b3JTdGF0ZT4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dnaW5nSGVscGVyOiBMb2dnaW5nSGVscGVyKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdkZWJ1ZycpLnN1YnNjcmliZShkZWJ1ZyA9PiB0aGlzLmRlYnVnID0gZGVidWcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWN0aWVUb3BvRWxlbWVudHMocml0RGVlbDogUml0ZGVlbCwgc2JtU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSk6IFRvcG9sb2d5RWxlbWVudFtdIHtcbiAgICAgICAgY29uc3QgYWN0aWVUb3BvRWxlbWVudHMgPSByaXREZWVsLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IGV4dHJhVG9wb0VsZW1lbnQgPSBBY3RpZUhlbHBlci5nZXRWb29yU2VjdGllVmFuQmVnaW5TZWluKHJpdERlZWwsIHNibVNlcnZpY2UpO1xuICAgICAgICBpZiAoZXh0cmFUb3BvRWxlbWVudCkge1xuICAgICAgICAgICAgYWN0aWVUb3BvRWxlbWVudHMuc3BsaWNlKDAsIDAsIGV4dHJhVG9wb0VsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY3RpZVRvcG9FbGVtZW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNWU1RBY3RpZShhY3RpZTogQWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLnJpdEFjdGllVHlwZUlkID09PSBSSVRfQUNUSUVfVlNUO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZTogQWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuU0xJSlBFTl9XSVNTRUxfQUNUSUVTLmluZGV4T2YoYWN0aWUucml0QWN0aWVUeXBlSWQpID49IDA7XG4gICAgfVxuXG4gICAgc3RhdGljIGJlcGFhbFRha0lkKGFjdGllOiBBY3RpZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBhY3RpZS5wcGxnTmFhbSArICctJyArIGFjdGllLndpc3NlbE5hYW0gKyAnLScgKyBhY3RpZS53aXNzZWxLYW50Q29kZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNIZWVsT2ZIYWxmRW5nZWxzV2lzc2VsQWN0aWUoYWN0aWU6IEFjdGllKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhY3RpZS5pbmZyYU9iamVjdFR5cGUgPT09IHRoaXMuSEFMRl9FTkdFTFNfV0lTU0VMIHx8IGFjdGllLmluZnJhT2JqZWN0VHlwZSA9PT0gdGhpcy5FTkdFTFNfV0lTU0VMO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRWU1RBY3RpZU9tc2NocmlqdmluZyhhY3RpZTogQWN0aWUpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc0VuZ2Vsc2VXaXNzZWwoYWN0aWUpKSB7XG4gICAgICAgICAgICBjb25zdCB3aXNzZWxOYW1lbiA9IHRoaXMuZ2V0V2lzc2VsRGVsZW4oYWN0aWUud2lzc2VsTmFhbSk7XG4gICAgICAgICAgICBjb25zdCBrYW50Q29kZXMgPSB0aGlzLmdldEthbnRDb2RlcyhhY3RpZS53aXNzZWxLYW50Q29kZSk7XG4gICAgICAgICAgICByZXR1cm4gYFZTVCAkeyB3aXNzZWxOYW1lblswXSB9ICR7IGthbnRDb2Rlc1swXSB9IC0gJHsgd2lzc2VsTmFtZW5bMV0gfSAkeyBrYW50Q29kZXNbMV0gfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYFZTVCAkeyBhY3RpZS53aXNzZWxOYWFtIH0gJHsgQWN0aWVIZWxwZXIuZ2V0S2FudGNvZGVUZWtzdChhY3RpZS53aXNzZWxLYW50Q29kZSkgfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFjdGllQ29tcGFyYXRvcihhY3RpZTE6IEFjdGllLCBhY3RpZTI6IEFjdGllKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGFjdGllMS52YW5LaWxvbWV0cmVyaW5nICYmIGFjdGllMi52YW5LaWxvbWV0cmVyaW5nICYmIGFjdGllMS52YW5LaWxvbWV0cmVyaW5nICE9PSBhY3RpZTIudmFuS2lsb21ldHJlcmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS52YW5LaWxvbWV0cmVyaW5nID4gYWN0aWUyLnZhbktpbG9tZXRyZXJpbmcgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGllMS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgJiYgYWN0aWUyLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyAmJiBhY3RpZTEucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nICE9PSBhY3RpZTIucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aWUxLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyA+IGFjdGllMi5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGllMS53aXNzZWxOYWFtICE9PSBhY3RpZTIud2lzc2VsTmFhbSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGllMS53aXNzZWxOYWFtID4gYWN0aWUyLndpc3NlbE5hYW0gPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGllMS53aXNzZWxLYW50Q29kZSAhPT0gYWN0aWUyLndpc3NlbEthbnRDb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aWUxLndpc3NlbEthbnRDb2RlID4gYWN0aWUyLndpc3NlbEthbnRDb2RlID8gMSA6IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRXaXNzZWxLYW50Q29kZXMoYWN0aWU6IEFjdGllKTogV2lzc2VsS2FudENvZGVbXSB7XG4gICAgICAgIGNvbnN0IHdpc3NlbEthbnRDb2RlczogV2lzc2VsS2FudENvZGVbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG5hbWVuID0gdGhpcy5nZXRXaXNzZWxEZWxlbihhY3RpZS53aXNzZWxOYWFtKTtcbiAgICAgICAgY29uc3Qga2FudENvZGVzID0gdGhpcy5nZXRLYW50Q29kZXMoYWN0aWUud2lzc2VsS2FudENvZGUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB3aXNzZWxLYW50Q29kZXMucHVzaChuZXcgV2lzc2VsS2FudENvZGUobmFtZW5baV0sIGthbnRDb2Rlc1tpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpc3NlbEthbnRDb2RlcztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0V2lzc2VsRGVsZW4od2lzc2VsTmFhbTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gd2lzc2VsTmFhbS5zcGxpdCgnfCcpO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRLYW50Q29kZXMoa2FudENvZGVzOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmIChrYW50Q29kZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gW2thbnRDb2Rlcy5jaGFyQXQoMCksIGthbnRDb2Rlcy5jaGFyQXQoMSldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBba2FudENvZGVzXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRWb29yU2VjdGllVmFuQmVnaW5TZWluKHJpdERlZWw6IFJpdGRlZWwsIHNibVNlcnZpY2U6IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpOiBUb3BvbG9neUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgLy8gUlBFIHRvb250IGVlbiByaWp3ZWcgdmFuYWYgZGUgc2VjdGllc2NoZWlkaW5nIGJlaG9yZW5kIGJpaiBoZXQgYmVnaW5zZWluLiBNU1QgbGV2ZXJ0IGJld2VnaW5nZW4gd2FhcmJpaiBhY3RpZXMgZ2VkYWFuIG1vZXRlblxuICAgICAgICAvLyB3b3JkZW4gdHVzc2VuIGhldCBiZWdpbnNlaW4gZW4gZGUgZ2Vub2VtZGUgc2VjdGllc2NoZWlkaW5nLiBPbSBkZXplIHRlIGt1bm5lbiB0b25lbiB2b2VnZW4gd2UgZGUgdm9vcnNlY3RpZSB2YW4gaGV0IGJlZ2luc2VpblxuICAgICAgICAvLyB0b2UgYWFuIGRlIGxpanN0IG1ldCByb3V0ZSBlbGVtZW50ZW4uXG4gICAgICAgIGNvbnN0IGJlZ2luUm91dGVTZWluID0gcml0RGVlbC5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpO1xuICAgICAgICBjb25zdCBzYlNlaW4gPSBzYm1TZXJ2aWNlLmdldFNCU2VpbihiZWdpblJvdXRlU2Vpbik7XG4gICAgICAgIHJldHVybiBzYlNlaW4gPyBzYlNlaW4uZ2V0Vm9vclNlY3RpZSgpIDogbnVsbDtcbiAgICB9XG5cbi8vIG1ha2Ugc3VyZSB0aGUgZWxlbXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICBwcml2YXRlIHN0YXRpYyBzb3J0ZWVyVG9wb0VsZW1lbnRlbih0b3BvRWxlbXM6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSB0b3BvRWxlbXMuc2xpY2UoKTtcbiAgICAgICAgbGV0IGxpbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGZpcnN0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBzZWNvbmQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRvcG9FbGVtZW50IG9mIHRvcG9FbGVtZW50ZW4pIHtcbiAgICAgICAgICAgIGxldCBraWxvbWV0cmVyaW5nZW4gPSBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBrbXM6IHNiYmxhZC5LaWxvbWV0cmVyaW5nW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRvcG9FbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBraWxvbWV0cmVyaW5nZW4gPSBrbXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraWxvbWV0cmVyaW5nZW4gJiYgIWZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBraWxvbWV0cmVyaW5nZW5bMF0uZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgICAgICAgICBsaW50ID0ga2lsb21ldHJlcmluZ2VuWzBdLmdldEttTGludCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChraWxvbWV0cmVyaW5nZW4gJiYgZmlyc3QgJiYgIXNlY29uZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGttID0gS21SYW5nZS5nZXRLaWxvbWV0cmVyaW5nKGxpbnQgPz8gJycsIGtpbG9tZXRyZXJpbmdlbik7XG4gICAgICAgICAgICAgICAgaWYgKGttKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZCA9IGttLmdldEttV2FhcmRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0ICYmIHNlY29uZCAmJiBmaXJzdCA+IHNlY29uZCkge1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW4ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3BvRWxlbWVudGVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttczogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdLCB2YW5LaWxvbWV0cmVyaW5nZW46IHNiYmxhZC5LaWxvbWV0cmVyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RLaWxvbWV0cmVyaW5nZW46IHNiYmxhZC5LaWxvbWV0cmVyaW5nW10sIGttUmFuZ2VzOiBLbVJhbmdlW10pOiB2b2lkIHtcbiAgICAgICAgdG9wb0VsZW1lbnRlblpvbmRlckttcy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YW5LaWxvbWV0cmVyaW5nZW4gJiYgdG90S2lsb21ldHJlcmluZ2VuKSB7XG4gICAgICAgICAgICAgICAgdmFuS2lsb21ldHJlcmluZ2VuID0gW25ldyBNc3RLaWxvbWV0cmVyaW5nKHRvdEtpbG9tZXRyZXJpbmdlblswXS5nZXRLbUxpbnQoKSwgLTEwMDAwMCldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0b3RLaWxvbWV0cmVyaW5nZW4gJiYgdmFuS2lsb21ldHJlcmluZ2VuKSB7XG4gICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuID0gW25ldyBNc3RLaWxvbWV0cmVyaW5nKHZhbktpbG9tZXRyZXJpbmdlblswXS5nZXRLbUxpbnQoKSwgMTAwMDAwKV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YW5LaWxvbWV0cmVyaW5nZW5bMF0gPiB0b3RLaWxvbWV0cmVyaW5nZW5bMF0pIHtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5wdXNoKEttUmFuZ2UucmFuZ2VWb29yU3RyZWtPYmplY3QoZSwgdGhpcy5hZGRLbSh2YW5LaWxvbWV0cmVyaW5nZW4sIC0xKSwgdGhpcy5hZGRLbSh0b3RLaWxvbWV0cmVyaW5nZW4sIDEpKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGttUmFuZ2VzLnB1c2goS21SYW5nZS5yYW5nZVZvb3JTdHJla09iamVjdChlLCB0aGlzLmFkZEttKHZhbktpbG9tZXRyZXJpbmdlbiwgMSksIHRoaXMuYWRkS20odG90S2lsb21ldHJlcmluZ2VuLCAtMSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkS20oa21zOiBLaWxvbWV0cmVyaW5nW10sIGFhbnRhbDogbnVtYmVyKTogS2lsb21ldHJlcmluZ1tdIHtcbiAgICAgICAgY29uc3QgcmV0dmFsID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga20gb2Yga21zKSB7XG4gICAgICAgICAgICByZXR2YWwucHVzaChuZXcgTXN0S2lsb21ldHJlcmluZyhrbS5nZXRLbUxpbnQoKSwga20uZ2V0S21XYWFyZGUoKSArIGFhbnRhbCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMga2FuQWN0aWVzQmVwYWxlbihyaXRkZWVsOiBSaXRkZWVsKTogYm9vbGVhbiB8IEFjdGllW10ge1xuICAgICAgICByZXR1cm4gcml0ZGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdGRlZWwuYWN0aWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzS2lsb21ldHJlcmluZ0FhbndlemlnKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgYWFud2V6aWcgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudGVuKSB7XG4gICAgICAgICAgICBjb25zdCBrbXMgPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KGZyYWdtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMgIT09IG51bGwgJiYga21zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhYW53ZXppZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFhbndlemlnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlbihzcG9vcnRhazogc2JibGFkLlNwb29ydGFrKTogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkoc3Bvb3J0YWsuZ2V0VGFrRWxlbWVudGVuKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFNwb29ydGFrRnJhZ21lbnRlblB1aWNzKGZyYWdtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGZyYWdtZW50ZW4uZm9yRWFjaChkZWVsID0+IHB1aWNzLnB1c2goZGVlbC5nZXRQdWljKCkpKTtcbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzRW5nZWxzZVdpc3NlbChhY3RpZTogQWN0aWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFjdGllLndpc3NlbE5hYW0uaW5jbHVkZXMoJ3wnKSAmJiBhY3RpZS53aXNzZWxLYW50Q29kZS5sZW5ndGggPT09IDI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0S2FudGNvZGVUZWtzdChrYW50Y29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHRla3N0ID0gJ1Zvb3InO1xuICAgICAgICBpZiAodGhpcy5pc0thbnRDb2RlTGlua3Moa2FudGNvZGUpKSB7XG4gICAgICAgICAgICB0ZWtzdCA9ICdMaW5rcyc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0thbnRDb2RlUmVjaHRzKGthbnRjb2RlKSkge1xuICAgICAgICAgICAgdGVrc3QgPSAnUmVjaHRzJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGVrc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNLYW50Q29kZVJlY2h0cyhrYW50Y29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBrYW50Y29kZSA9PT0gJ1InO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzS2FudENvZGVMaW5rcyhrYW50Y29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBrYW50Y29kZSA9PT0gJ0wnO1xuICAgIH1cblxuICAgIGJlcGFhbFB1aWNzVm9vckFjdGllKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IHB1aWNzO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIHB1aWNzID0gdGhpcy5iZXBhYWxQdWljc1Zvb3JWU1RBY3RpZShhY3RpZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoQWN0aWVIZWxwZXIuaXNXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpKSB7XG4gICAgICAgICAgICBwdWljcyA9IHRoaXMuYmVwYWFsUHVpY1Zvb3JXaXNzZWxTbGlqcGVuQWN0aWUoYWN0aWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHVpY3MgPSB0aGlzLmJlcGFhbEFjdGllUHVpY3NWb29yU3Bvb3J0YWsoYWN0aWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBiZXBhYWxBY3RpZVB1aWNzVWl0Uml0ZGVlbChyaXREZWVsOiBSaXRkZWVsKTogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPiB7Ly8gdm9vciBoaWdobGlnaHRzXG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5rYW5BY3RpZXNCZXBhbGVuKHJpdERlZWwpKSB7XG4gICAgICAgICAgICByaXREZWVsLmFjdGllcy5mb3JFYWNoKGEgPT4ge1xuICAgICAgICAgICAgICAgIG1hcC5wdXRBbGwoYSwgdGhpcy5iZXBhYWxQdWljc1Zvb3JBY3RpZShhKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH1cblxuICAgIGJlcGFhbEFjdGllc1B1aWNzKGFjdGllczogQWN0aWVbXSwgdG9wb0VsZW06IFRvcG9sb2d5RWxlbWVudFtdKTogQXJyYXlNdWx0aW1hcDxBY3RpZSwgc3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHRvcG9FbGVtZW50ZW4gPSBBY3RpZUhlbHBlci5zb3J0ZWVyVG9wb0VsZW1lbnRlbih0b3BvRWxlbSk7XG5cbiAgICAgICAgY29uc3Qga21SYW5nZXMgPSB0aGlzLnZlcndlcmtUb3BvRWxlbWVudGVuKHRvcG9FbGVtZW50ZW4pO1xuICAgICAgICByZXR1cm4gdGhpcy52ZXJ3ZXJrQWN0aWVzKGFjdGllcywga21SYW5nZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya0FjdGllcyhhY3RpZXM6IEFjdGllW10sIGttUmFuZ2VzOiBLbVJhbmdlW10pOiBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgYWN0aWVab25kZXJFbGVtZW50ZW46IG51bWJlcltdID0gW107XG4gICAgICAgIGNvbnN0IGxvZ01lbGRpbmdEVE9zOiBMb2dEdG9bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHJldHZhbCA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGFjdGllcy5mb3JFYWNoKGFjdGllID0+IHtcbiAgICAgICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljQXJyYXkgPSB0aGlzLmJlcGFhbFB1aWNWb29yV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKTtcbiAgICAgICAgICAgICAgICByZXR2YWwucHV0QWxsKGFjdGllLCBwdWljQXJyYXkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5mb3JFYWNoKGttUmFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIGFjdGllLnZhbktpbG9tZXRyZXJpbmcgJiYgYWN0aWUudmFuS2lsb21ldGVybGludCAmJiBhY3RpZS50b3RLaWxvbWV0cmVyaW5nICYmIGFjdGllLnRvdEtpbG9tZXRlcmxpbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YW5LaWxvbWV0cmVyaW5nID0gbmV3IE1zdEtpbG9tZXRyZXJpbmcoYWN0aWUudmFuS2lsb21ldGVybGludCwgYWN0aWUudmFuS2lsb21ldHJlcmluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG90S2lsb21ldHJlcmluZyA9IG5ldyBNc3RLaWxvbWV0cmVyaW5nKGFjdGllLnRvdEtpbG9tZXRlcmxpbnQsIGFjdGllLnRvdEtpbG9tZXRyZXJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGllLnZhbktpbG9tZXRyZXJpbmcgPiBhY3RpZS50b3RLaWxvbWV0cmVyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVtcCA9IHt2YW46IHZhbktpbG9tZXRyZXJpbmcsIHRvdDogdG90S2lsb21ldHJlcmluZ307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFuS2lsb21ldHJlcmluZyA9IHRlbXAudG90O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdEtpbG9tZXRyZXJpbmcgPSB0ZW1wLnZhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGttUmFuZ2UuaGVlZnRPdmVybGFwKHZhbktpbG9tZXRyZXJpbmcsIHRvdEtpbG9tZXRyZXJpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVpY3MucHVzaChrbVJhbmdlLnRvcG9sb2d5RWxlbWVudC5nZXRQdWljKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1aWNzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpZVpvbmRlckVsZW1lbnRlbi5wdXNoKGFjdGllLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVsZGluZzogTWVsZGluZ0V2ZW50ID0gTWVsZGluZ0J1aWxkZXIuYWN0aWVIaWdobGlnaHRFcnJvcihhY3RpZVpvbmRlckVsZW1lbnRlbik7XG4gICAgICAgICAgICAgICAgICAgIGxvZ01lbGRpbmdEVE9zLnB1c2godGhpcy5sb2dnaW5nSGVscGVyLm1hYWtMb2dEVE8obWVsZGluZywgYWN0aWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dmFsLnB1dEFsbChhY3RpZSwgcHVpY3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sb2dMZWdlTWVsZGluZ0R0byhsb2dNZWxkaW5nRFRPcyk7XG4gICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dMZWdlTWVsZGluZ0R0byhsb2dEdG86IExvZ0R0b1tdKTogdm9pZCB7XG4gICAgICAgIGlmIChsb2dEdG8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXN0TG9nUmVzb3VyY2UubG9nTWVzc2FnZXMobG9nRHRvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmVyd2Vya1RvcG9FbGVtZW50ZW4odG9wb0VsZW1lbnRlbjogc2JibGFkLlRvcG9sb2d5RWxlbWVudFtdKTogS21SYW5nZVtdIHtcbiAgICAgICAgY29uc3Qga21SYW5nZXM6IEttUmFuZ2VbXSA9IFtdO1xuXG4gICAgICAgIGxldCB0b3BvRWxlbWVudGVuWm9uZGVyS21zOiBUb3BvbG9neUVsZW1lbnRbXSA9IFtdO1xuICAgICAgICBsZXQgbGFhdHN0ZVB1bnRLbXM6IEtpbG9tZXRyZXJpbmdbXSA9IG51bGw7XG4gICAgICAgIHRvcG9FbGVtZW50ZW4uZm9yRWFjaChlbGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGttczogS2lsb21ldHJlcmluZ1tdID0gSnNKYXZhVXRpbC5saXN0VG9BcnJheShlbGVtLmdldEtpbG9tZXRyZXJpbmdlbigpKTtcbiAgICAgICAgICAgIGlmIChrbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIEFjdGllSGVscGVyLmNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttcywgbGFhdHN0ZVB1bnRLbXMsIGttcywga21SYW5nZXMpO1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMgPSBbXTtcbiAgICAgICAgICAgICAgICBrbVJhbmdlcy5wdXNoKEttUmFuZ2UucmFuZ2VWb29yUHVudE9iamVjdChlbGVtKSk7XG4gICAgICAgICAgICAgICAgbGFhdHN0ZVB1bnRLbXMgPSBrbXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvcG9FbGVtZW50ZW5ab25kZXJLbXMucHVzaChlbGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0b3BvRWxlbWVudGVuWm9uZGVyS21zLmxlbmd0aCA+IDAgJiYgbGFhdHN0ZVB1bnRLbXMpIHtcbiAgICAgICAgICAgIEFjdGllSGVscGVyLmNvcnJpZ2VlclRvcG9FbGVtZW50ZW5ab25kZXJLbXModG9wb0VsZW1lbnRlblpvbmRlckttcywgbGFhdHN0ZVB1bnRLbXMsIG51bGwsIGttUmFuZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga21SYW5nZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxBY3RpZVB1aWNzVm9vclNwb29ydGFrKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3Qgc3Bvb3J0YWsgPSB0aGlzLnNibVNlcnZpY2UuZ2V0U2JTcG9vcnRhayhBY3RpZUhlbHBlci5iZXBhYWxUYWtJZChhY3RpZSkpO1xuXG4gICAgICAgIGxldCBwdWljczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKCFzcG9vcnRhaykge1xuICAgICAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZyYWdtZW50ZW4gPSBBY3RpZUhlbHBlci5iZXBhYWxTcG9vcnRha0ZyYWdtZW50ZW4oc3Bvb3J0YWspO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNLaWxvbWV0cmVyaW5nQWFud2V6aWcoZnJhZ21lbnRlbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcCA9IHRoaXMuYmVwYWFsQWN0aWVzUHVpY3MoW2FjdGllXSwgZnJhZ21lbnRlbik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBBcnJheS5mcm9tKG1hcC5rZXlzKCkpKSB7XG4gICAgICAgICAgICAgICAgbWFwLmdldChrZXkpLmZvckVhY2goeCA9PiBwdWljcy5wdXNoKHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHB1aWNzID0gQWN0aWVIZWxwZXIuYmVwYWFsU3Bvb3J0YWtGcmFnbWVudGVuUHVpY3MoZnJhZ21lbnRlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsUHVpY3NWb29yVlNUQWN0aWUoYWN0aWU6IEFjdGllKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNIZWVsT2ZIYWxmRW5nZWxzV2lzc2VsQWN0aWUoYWN0aWUpKSB7XG4gICAgICAgICAgICBjb25zdCByZXR2YWwgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IHdpc3NlbERlbGVuID0gQWN0aWVIZWxwZXIuZ2V0V2lzc2VsRGVsZW4oYWN0aWUud2lzc2VsTmFhbSk7XG4gICAgICAgICAgICBjb25zdCBwdWljc0VlcnN0ZVdpc3NlbCA9IHRoaXMuYmVwYWFsV2lzc2VsUHVpY3Mod2lzc2VsRGVsZW5bMF0sIGFjdGllLnBwbGdOYWFtLCBhY3RpZS53aXNzZWxLYW50Q29kZVswXSk7XG4gICAgICAgICAgICBjb25zdCBwdWljc1R3ZWVkZVdpc3NlbCA9IHRoaXMuYmVwYWFsV2lzc2VsUHVpY3Mod2lzc2VsRGVsZW5bMV0sIGFjdGllLnBwbGdOYWFtLCBhY3RpZS53aXNzZWxLYW50Q29kZVsxXSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHB1aWMxID0gdGhpcy5zYm1TZXJ2aWNlLmdldEVlcnN0ZVZlcmJpbmRpbmdQdWljVm9vclNwbGl0RW5nZWxzZVdpc3NlbCh3aXNzZWxEZWxlblswXSwgYWN0aWUud2lzc2VsS2FudENvZGVbMF0pO1xuICAgICAgICAgICAgaWYgKHB1aWMxICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHZhbC5wdXNoKHB1aWMxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHB1aWMyID0gdGhpcy5zYm1TZXJ2aWNlLmdldEVlcnN0ZVZlcmJpbmRpbmdQdWljVm9vclNwbGl0RW5nZWxzZVdpc3NlbCh3aXNzZWxEZWxlblsxXSwgYWN0aWUud2lzc2VsS2FudENvZGVbMV0pO1xuICAgICAgICAgICAgaWYgKHB1aWMyICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHZhbC5wdXNoKHB1aWMyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHZhbC5wdXNoKC4uLnB1aWNzRWVyc3RlV2lzc2VsKTtcbiAgICAgICAgICAgIHJldHZhbC5wdXNoKC4uLnB1aWNzVHdlZWRlV2lzc2VsKTtcbiAgICAgICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iZXBhYWxXaXNzZWxQdWljcyhhY3RpZS53aXNzZWxOYWFtLCBhY3RpZS5wcGxnTmFhbSwgYWN0aWUud2lzc2VsS2FudENvZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxXaXNzZWxQdWljcyh3aXNzZWxOYWFtOiBzdHJpbmcsIHBwbGdOYWFtOiBzdHJpbmcsIGthbnRjb2RlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IHdpc3NlbCA9IHRoaXMuc2JtU2VydmljZS5nZXRTQldpc3NlbCh3aXNzZWxOYWFtLCBwcGxnTmFhbSk7XG4gICAgICAgIGlmICghd2lzc2VsKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2FudEVsZW1lbnQgPSB0aGlzLmJlcGFhbEthbnRFbGVtZW50KGthbnRjb2RlLCB3aXNzZWwpO1xuICAgICAgICBpZiAoIWthbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcmluZ1N5bWJvb2xQdWljID0gd2lzc2VsLmdldFN0b3JpbmdTeW1ib29sUHVpYygpO1xuXG4gICAgICAgIHJldHVybiBbc3RvcmluZ1N5bWJvb2xQdWljLCBrYW50RWxlbWVudC5nZXRQdWljKCldO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsS2FudEVsZW1lbnQoa2FudGNvZGU6IHN0cmluZywgd2lzc2VsOiBzYmJsYWQuV2lzc2VsKTogc2JibGFkLlNwb29ydGFrRnJhZ21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNLYW50Q29kZVJlY2h0cyhrYW50Y29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXNzZWwuZ2V0UmlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNLYW50Q29kZUxpbmtzKGthbnRjb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdpc3NlbC5nZXRMZWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFB1aWNWb29yV2lzc2VsU2xpanBlbkFjdGllKGFjdGllOiBBY3RpZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3Qgc3RvcmluZ3NTeW1ib29sUHVpYyA9IHRoaXMuc2JtU2VydmljZS5nZXRTQldpc3NlbChhY3RpZS53aXNzZWxOYWFtLCBhY3RpZS5wcGxnTmFhbSk/LmdldFN0b3JpbmdTeW1ib29sUHVpYygpO1xuICAgICAgICBpZiAoIXN0b3JpbmdzU3ltYm9vbFB1aWMgJiYgdGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc3QgbWVsZGluZzogTWVsZGluZ0V2ZW50ID0gTWVsZGluZ0J1aWxkZXIuYWN0aWVIaWdobGlnaHRFcnJvcihbYWN0aWUuaWRdKTtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNTZXJ2aWNlLnNob3dNZXNzYWdlKE1lc3NhZ2VCdWlsZGVyLmFjdGllSGlnaGxpZ2h0RXJyb3IoW2FjdGllLmlkXSkpO1xuICAgICAgICAgICAgdGhpcy5tc3RMb2dSZXNvdXJjZS5sb2dNZXNzYWdlcyhbdGhpcy5sb2dnaW5nSGVscGVyLm1hYWtMb2dEVE8obWVsZGluZywgYWN0aWUpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3JpbmdzU3ltYm9vbFB1aWMgPyBbc3RvcmluZ3NTeW1ib29sUHVpY10gOiBbXTtcbiAgICB9XG59XG5cblxuIl19
|
|
@@ -35,7 +35,7 @@ export class ActiePopoverBepaler {
|
|
|
35
35
|
ongeplandeActies.entries.forEach(entry => {
|
|
36
36
|
const treinNummerActieInfos = puicNaarOngeplandeActieMap.get(entry.key);
|
|
37
37
|
if (!treinNummerActieInfos?.map(({ actie }) => actie).includes(entry.value.actie)) {
|
|
38
|
-
puicNaarOngeplandeActieMap.put(entry.key, {
|
|
38
|
+
puicNaarOngeplandeActieMap.put(entry.key, { actie: entry.value.actie });
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
}
|
|
@@ -87,4 +87,4 @@ export class ActiePopoverBepaler {
|
|
|
87
87
|
return retval;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtcG9wb3Zlci1iZXBhbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtcG9wb3Zlci1iZXBhbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU81QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFtQixFQUFFLGlCQUErQyxFQUNwRSxnQkFBd0Q7UUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDbEYsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDakIsTUFBTSw0QkFBNEIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFD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Q0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9wb3ZlckluZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQgeyBPbmdlcGxhbmRlQWN0aWUgfSBmcm9tICcuLi9tb2RlbC9vbmdlcGxhbmRlLWFjdGllJztcbmltcG9ydCB7IFJpdGRlZWwgfSBmcm9tICcuLi9tb2RlbC9yaXRkZWVsJztcbmltcG9ydCB7IEFjdGllIH0gZnJvbSAnLi4vb3B0aW1vJztcbmltcG9ydCB7IEFjdGllSGVscGVyIH0gZnJvbSAnLi9hY3RpZS1oZWxwZXInO1xuaW1wb3J0IHsgQXJyYXlNdWx0aW1hcCB9IGZyb20gJy4vbXVsdGktbWFwJztcblxuaW50ZXJmYWNlIFRyZWluTnVtbWVyQWN0aWVJbmZvIHtcbiAgICB0cmVpbk51bW1lcjogbnVtYmVyO1xuICAgIGFjdGllOiBBY3RpZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFjdGllUG9wb3ZlckJlcGFsZXIge1xuICAgIHN0YXRpYyBiZXBhYWxQb3BvdmVySW5mb3Mocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IFBvcG92ZXJJbmZvW10ge1xuICAgICAgICBjb25zdCBwdWljTmFhckFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhckFjdGllTWFwKHJpdERlbGVuLCByaXRBY3RpZVRvcG9QdWljcyk7XG4gICAgICAgIGNvbnN0IHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzKTtcblxuICAgICAgICBjb25zdCBwdWljcyA9IHB1aWNOYWFyQWN0aWVNYXAua2V5cygpO1xuICAgICAgICBwdWljcy5wdXNoKC4uLnB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwLmtleXMoKS5maWx0ZXIocCA9PiAhcHVpY3MuaW5jbHVkZXMocCkpKTtcblxuICAgICAgICBjb25zdCBpbmZvcyA9IFtdO1xuICAgICAgICBwdWljcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IHRyZWluTnVtbWVyQWN0aWVJbmZvc0dlcGxhbmQgPSBwdWljTmFhckFjdGllTWFwLmdldChwdWljKS5zb3J0KHRoaXMuc29ydFRyZWluTnVtbWVyQWN0aWVJbmZvKCkpO1xuICAgICAgICAgICAgY29uc3QgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kID0gcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAuZ2V0KHB1aWMpLnNvcnQodGhpcy5zb3J0VHJlaW5OdW1tZXJBY3RpZUluZm8oKSk7XG4gICAgICAgICAgICBjb25zdCBzaG93VHJlaW5OdW1tZXIgPSB0cmVpbk51bW1lckFjdGllSW5mb3NHZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpXG4gICAgICAgICAgICAgICAgfHwgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpO1xuICAgICAgICAgICAgdHJlaW5OdW1tZXJBY3RpZUluZm9zR2VwbGFuZC5mb3JFYWNoKGEgPT4gY29udGVudCA9IHRoaXMudnVsUG9wb3ZlckNvbnRlbnQoY29udGVudCwgYSwgJ3BvcG92ZXJ0ZWtzdC1nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG4gICAgICAgICAgICB0cmVpbk51bW1lckFjdGllSW5mb3NPbmdlcGxhbmQuZm9yRWFjaChhID0+IGNvbnRlbnQgPSB0aGlzLnZ1bFBvcG92ZXJDb250ZW50KGNvbnRlbnQsIGEsICdwb3BvdmVydGVrc3Qtb25nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQsIHB1aWMsIHNob3dUcmVpbk51bW1lcik7XG4gICAgICAgICAgICBpbmZvcy5wdXNoKGluZm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGluZm9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQ6IHN0cmluZywgcHVpYzogc3RyaW5nLCBzaG93VHJlaW5OdW1tZXI6IGJvb2xlYW4pOiBQb3BvdmVySW5mbyB7XG4gICAgICAgIGNvbnN0IGluZm8gPSBuZXcgUG9wb3ZlckluZm8oW3B1aWNdLCBjb250ZW50KTtcbiAgICAgICAgaW5mby5wb3BvdmVyVGl0bGVDb250ZW50ID0gc2hvd1RyZWluTnVtbWVyID8gJzxzcGFuIGNsYXNzPVwidHJlaW5udW1tZXJcIj5UcmVpbiAjPC9zcGFuPjxzcGFuPkFjdGllczwvc3Bhbj4nIDogJ0FjdGllcyc7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNvcnRUcmVpbk51bW1lckFjdGllSW5mbygpOiAoYTogVHJlaW5OdW1tZXJBY3RpZUluZm8sIGI6IFRyZWluTnVtbWVyQWN0aWVJbmZvKSA9PiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKGExLCBhMik6IG51bWJlciA9PiBBY3RpZUhlbHBlci5hY3RpZUNvbXBhcmF0b3IoYTEuYWN0aWUsIGEyLmFjdGllKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBiZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBUcmVpbk51bW1lckFjdGllSW5mbz4ge1xuICAgICAgICBjb25zdCBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIGlmIChvbmdlcGxhbmRlQWN0aWVzLnNpemUoKSA+IDApIHtcbiAgICAgICAgICAgIG9uZ2VwbGFuZGVBY3RpZXMuZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmVpbk51bW1lckFjdGllSW5mb3MgPSBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcC5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRyZWluTnVtbWVyQWN0aWVJbmZvcz8ubWFwKCh7IGFjdGllIH0pID0+IGFjdGllKS5pbmNsdWRlcyhlbnRyeS52YWx1ZS5hY3RpZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAucHV0KGVudHJ5LmtleSwgeyB0cmVpbk51bW1lcjogdW5kZWZpbmVkLCBhY3RpZTogZW50cnkudmFsdWUuYWN0aWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFB1aWNOYWFyQWN0aWVNYXAocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4pOiBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+IHtcbiAgICAgICAgY29uc3QgcHVpY05hYXJBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIHJpdERlbGVuLmZvckVhY2gocml0RGVlbCA9PiB7XG4gICAgICAgICAgICBpZiAocml0RGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdERlZWwuYWN0aWVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJpdERlZWwuYWN0aWVzLmZvckVhY2gocml0QWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IHJpdEFjdGllVG9wb1B1aWNzLmdldChyaXRBY3RpZSk7XG4gICAgICAgICAgICAgICAgICAgIHB1aWNzLmZvckVhY2gocHVpYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvUHVpY05hYXJBY3RpZU1hcElmTm90RXhpc3RzKHB1aWNOYWFyQWN0aWVNYXAsIHB1aWMsIHJpdEFjdGllLCByaXREZWVsLmJld2VnaW5nPy50cmVpbk51bW1lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyQWN0aWVNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkVG9QdWljTmFhckFjdGllTWFwSWZOb3RFeGlzdHMocHVpY05hYXJBY3RpZU1hcDogQXJyYXlNdWx0aW1hcDxzdHJpbmcsIFRyZWluTnVtbWVyQWN0aWVJbmZvPiwgcHVpYzogc3RyaW5nLCByaXRBY3RpZTogQWN0aWUsIHRyZWluTnVtbWVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJlaW5OdW1tZXJBY3RpZUluZm9zID0gcHVpY05hYXJBY3RpZU1hcC5nZXQocHVpYyk7XG4gICAgICAgIGlmICghKHRyZWluTnVtbWVyQWN0aWVJbmZvcz8uZmluZCgoeyBhY3RpZSB9KSA9PiBhY3RpZSA9PT0gcml0QWN0aWUpKSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aWVJbmZvOiBUcmVpbk51bW1lckFjdGllSW5mbyA9IHsgdHJlaW5OdW1tZXIsIGFjdGllOiByaXRBY3RpZSB9O1xuICAgICAgICAgICAgcHVpY05hYXJBY3RpZU1hcC5wdXQocHVpYywgYWN0aWVJbmZvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHZ1bFBvcG92ZXJDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgeyB0cmVpbk51bW1lciwgYWN0aWUgfTogVHJlaW5OdW1tZXJBY3RpZUluZm8sIGNsYXp6OiBzdHJpbmcsIHNob3dUcmVpbk51bW1lcjogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXR2YWwgPSBjb250ZW50O1xuICAgICAgICBjb25zdCB0cmVpbm51bW1lckNsYXNzID0gc2hvd1RyZWluTnVtbWVyID8gJ2NsYXNzPVwidHJlaW5udW1tZXJcIicgOiAnY2xhc3M9XCJuby10cmVpbm51bW1lclwiJztcblxuICAgICAgICByZXR2YWwgKz0gJzxkaXYgY2xhc3M9XCJub3dyYXAgJyArIGNsYXp6ICsgJ1wiPic7XG4gICAgICAgIHJldHZhbCArPSBgPHNwYW4gJHsgdHJlaW5udW1tZXJDbGFzcyB9PiR7IHRyZWluTnVtbWVyIHx8ICctJyB9PC9zcGFuPmA7XG5cbiAgICAgICAgbGV0IGFjdGllT21zY2hyaWp2aW5nID0gJyc7XG4gICAgICAgIGlmIChBY3RpZUhlbHBlci5pc1ZTVEFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gQWN0aWVIZWxwZXIuZ2V0VlNUQWN0aWVPbXNjaHJpanZpbmcoYWN0aWUpO1xuICAgICAgICB9IGVsc2UgaWYgKEFjdGllSGVscGVyLmlzV2lzc2VsU2xpanBlbkFjdGllKGFjdGllKSkge1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gYCR7IGFjdGllLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyB9ICR7IGFjdGllLndpc3NlbE5hYW0gfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY3RpZU9tc2NocmlqdmluZyArPSBgJHsgYWN0aWUucml0QWN0aWVUeXBlT21zY2hyaWp2aW5nIH0gJHsgYWN0aWUudmFuS2lsb21ldGVybGludCB9ICR7IGFjdGllLnZhbktpbG9tZXRyZXJpbmcgfWA7XG4gICAgICAgICAgICBhY3RpZU9tc2NocmlqdmluZyArPSAnLSc7XG4gICAgICAgICAgICBpZiAoYWN0aWUudG90S2lsb21ldGVybGludCAhPT0gYWN0aWUudmFuS2lsb21ldGVybGludCkge1xuICAgICAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IGFjdGllLnRvdEtpbG9tZXRlcmxpbnQ7XG4gICAgICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gJyAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gYWN0aWUudG90S2lsb21ldHJlcmluZztcbiAgICAgICAgfVxuICAgICAgICByZXR2YWwgKz0gYDxzcGFuPiR7IGFjdGllT21zY2hyaWp2aW5nIH08L3NwYW4+PC9kaXY+YDtcbiAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICB9XG59XG4iXX0=
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aWUtcG9wb3Zlci1iZXBhbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL3V0aWwvYWN0aWUtcG9wb3Zlci1iZXBhbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUloRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU81QyxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFtQixFQUFFLGlCQUErQyxFQUNwRSxnQkFBd0Q7UUFDOUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDbEYsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRixNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRixNQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakIsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sNEJBQTRCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FB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Q29udGVudCI6WyJpbXBvcnQgeyBQb3BvdmVySW5mbyB9IGZyb20gJ0Bsb3hpYS9pbXgtdmlld2VyJztcbmltcG9ydCB7IE9uZ2VwbGFuZGVBY3RpZSB9IGZyb20gJy4uL21vZGVsL29uZ2VwbGFuZGUtYWN0aWUnO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgQWN0aWUgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgQWN0aWVIZWxwZXIgfSBmcm9tICcuL2FjdGllLWhlbHBlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi9tdWx0aS1tYXAnO1xuXG5pbnRlcmZhY2UgVHJlaW5OdW1tZXJBY3RpZUluZm8ge1xuICAgIHRyZWluTnVtbWVyPzogbnVtYmVyO1xuICAgIGFjdGllOiBBY3RpZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFjdGllUG9wb3ZlckJlcGFsZXIge1xuICAgIHN0YXRpYyBiZXBhYWxQb3BvdmVySW5mb3Mocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IFBvcG92ZXJJbmZvW10ge1xuICAgICAgICBjb25zdCBwdWljTmFhckFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhckFjdGllTWFwKHJpdERlbGVuLCByaXRBY3RpZVRvcG9QdWljcyk7XG4gICAgICAgIGNvbnN0IHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwID0gdGhpcy5iZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzKTtcblxuICAgICAgICBjb25zdCBwdWljcyA9IHB1aWNOYWFyQWN0aWVNYXAua2V5cygpO1xuICAgICAgICBwdWljcy5wdXNoKC4uLnB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwLmtleXMoKS5maWx0ZXIocCA9PiAhcHVpY3MuaW5jbHVkZXMocCkpKTtcblxuICAgICAgICBjb25zdCBpbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xuICAgICAgICBwdWljcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAnJztcbiAgICAgICAgICAgIGNvbnN0IHRyZWluTnVtbWVyQWN0aWVJbmZvc0dlcGxhbmQgPSBwdWljTmFhckFjdGllTWFwLmdldChwdWljKS5zb3J0KHRoaXMuc29ydFRyZWluTnVtbWVyQWN0aWVJbmZvKCkpO1xuICAgICAgICAgICAgY29uc3QgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kID0gcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAuZ2V0KHB1aWMpLnNvcnQodGhpcy5zb3J0VHJlaW5OdW1tZXJBY3RpZUluZm8oKSk7XG4gICAgICAgICAgICBjb25zdCBzaG93VHJlaW5OdW1tZXIgPSB0cmVpbk51bW1lckFjdGllSW5mb3NHZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpXG4gICAgICAgICAgICAgICAgfHwgdHJlaW5OdW1tZXJBY3RpZUluZm9zT25nZXBsYW5kLnNvbWUoaSA9PiAhIWkudHJlaW5OdW1tZXIpO1xuICAgICAgICAgICAgdHJlaW5OdW1tZXJBY3RpZUluZm9zR2VwbGFuZC5mb3JFYWNoKGEgPT4gY29udGVudCA9IHRoaXMudnVsUG9wb3ZlckNvbnRlbnQoY29udGVudCwgYSwgJ3BvcG92ZXJ0ZWtzdC1nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG4gICAgICAgICAgICB0cmVpbk51bW1lckFjdGllSW5mb3NPbmdlcGxhbmQuZm9yRWFjaChhID0+IGNvbnRlbnQgPSB0aGlzLnZ1bFBvcG92ZXJDb250ZW50KGNvbnRlbnQsIGEsICdwb3BvdmVydGVrc3Qtb25nZXBsYW5kJywgc2hvd1RyZWluTnVtbWVyKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0aGlzLmNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQsIHB1aWMsIHNob3dUcmVpbk51bW1lcik7XG4gICAgICAgICAgICBpbmZvcy5wdXNoKGluZm8pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGluZm9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNyZWF0ZVBvcG92ZXJJbmZvKGNvbnRlbnQ6IHN0cmluZywgcHVpYzogc3RyaW5nLCBzaG93VHJlaW5OdW1tZXI6IGJvb2xlYW4pOiBQb3BvdmVySW5mbyB7XG4gICAgICAgIGNvbnN0IGluZm8gPSBuZXcgUG9wb3ZlckluZm8oW3B1aWNdLCBjb250ZW50KTtcbiAgICAgICAgaW5mby5wb3BvdmVyVGl0bGVDb250ZW50ID0gc2hvd1RyZWluTnVtbWVyID8gJzxzcGFuIGNsYXNzPVwidHJlaW5udW1tZXJcIj5UcmVpbiAjPC9zcGFuPjxzcGFuPkFjdGllczwvc3Bhbj4nIDogJ0FjdGllcyc7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNvcnRUcmVpbk51bW1lckFjdGllSW5mbygpOiAoYTogVHJlaW5OdW1tZXJBY3RpZUluZm8sIGI6IFRyZWluTnVtbWVyQWN0aWVJbmZvKSA9PiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKGExLCBhMik6IG51bWJlciA9PiBBY3RpZUhlbHBlci5hY3RpZUNvbXBhcmF0b3IoYTEuYWN0aWUsIGEyLmFjdGllKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBiZXBhYWxQdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcChvbmdlcGxhbmRlQWN0aWVzOiBBcnJheU11bHRpbWFwPHN0cmluZywgT25nZXBsYW5kZUFjdGllPik6IEFycmF5TXVsdGltYXA8c3RyaW5nLCBUcmVpbk51bW1lckFjdGllSW5mbz4ge1xuICAgICAgICBjb25zdCBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIGlmIChvbmdlcGxhbmRlQWN0aWVzLnNpemUoKSA+IDApIHtcbiAgICAgICAgICAgIG9uZ2VwbGFuZGVBY3RpZXMuZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmVpbk51bW1lckFjdGllSW5mb3MgPSBwdWljTmFhck9uZ2VwbGFuZGVBY3RpZU1hcC5nZXQoZW50cnkua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRyZWluTnVtbWVyQWN0aWVJbmZvcz8ubWFwKCh7IGFjdGllIH0pID0+IGFjdGllKS5pbmNsdWRlcyhlbnRyeS52YWx1ZS5hY3RpZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHVpY05hYXJPbmdlcGxhbmRlQWN0aWVNYXAucHV0KGVudHJ5LmtleSwgeyBhY3RpZTogZW50cnkudmFsdWUuYWN0aWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyT25nZXBsYW5kZUFjdGllTWFwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGJlcGFhbFB1aWNOYWFyQWN0aWVNYXAocml0RGVsZW46IFJpdGRlZWxbXSwgcml0QWN0aWVUb3BvUHVpY3M6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4pOiBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+IHtcbiAgICAgICAgY29uc3QgcHVpY05hYXJBY3RpZU1hcCA9IG5ldyBBcnJheU11bHRpbWFwPHN0cmluZywgVHJlaW5OdW1tZXJBY3RpZUluZm8+KCk7XG4gICAgICAgIHJpdERlbGVuLmZvckVhY2gocml0RGVlbCA9PiB7XG4gICAgICAgICAgICBpZiAocml0RGVlbC5pc1ppY2h0YmFhcigpICYmIHJpdERlZWwuYWN0aWVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJpdERlZWwuYWN0aWVzLmZvckVhY2gocml0QWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IHJpdEFjdGllVG9wb1B1aWNzLmdldChyaXRBY3RpZSk7XG4gICAgICAgICAgICAgICAgICAgIHB1aWNzLmZvckVhY2gocHVpYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFRvUHVpY05hYXJBY3RpZU1hcElmTm90RXhpc3RzKHB1aWNOYWFyQWN0aWVNYXAsIHB1aWMsIHJpdEFjdGllLCByaXREZWVsLmJld2VnaW5nPy50cmVpbk51bW1lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHB1aWNOYWFyQWN0aWVNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkVG9QdWljTmFhckFjdGllTWFwSWZOb3RFeGlzdHMocHVpY05hYXJBY3RpZU1hcDogQXJyYXlNdWx0aW1hcDxzdHJpbmcsIFRyZWluTnVtbWVyQWN0aWVJbmZvPiwgcHVpYzogc3RyaW5nLCByaXRBY3RpZTogQWN0aWUsIHRyZWluTnVtbWVyPzogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRyZWluTnVtbWVyQWN0aWVJbmZvcyA9IHB1aWNOYWFyQWN0aWVNYXAuZ2V0KHB1aWMpO1xuICAgICAgICBpZiAoISh0cmVpbk51bW1lckFjdGllSW5mb3M/LmZpbmQoKHsgYWN0aWUgfSkgPT4gYWN0aWUgPT09IHJpdEFjdGllKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGllSW5mbzogVHJlaW5OdW1tZXJBY3RpZUluZm8gPSB7IHRyZWluTnVtbWVyLCBhY3RpZTogcml0QWN0aWUgfTtcbiAgICAgICAgICAgIHB1aWNOYWFyQWN0aWVNYXAucHV0KHB1aWMsIGFjdGllSW5mbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyB2dWxQb3BvdmVyQ29udGVudChjb250ZW50OiBzdHJpbmcsIHsgdHJlaW5OdW1tZXIsIGFjdGllIH06IFRyZWluTnVtbWVyQWN0aWVJbmZvLCBjbGF6ejogc3RyaW5nLCBzaG93VHJlaW5OdW1tZXI6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0dmFsID0gY29udGVudDtcbiAgICAgICAgY29uc3QgdHJlaW5udW1tZXJDbGFzcyA9IHNob3dUcmVpbk51bW1lciA/ICdjbGFzcz1cInRyZWlubnVtbWVyXCInIDogJ2NsYXNzPVwibm8tdHJlaW5udW1tZXJcIic7XG5cbiAgICAgICAgcmV0dmFsICs9ICc8ZGl2IGNsYXNzPVwibm93cmFwICcgKyBjbGF6eiArICdcIj4nO1xuICAgICAgICByZXR2YWwgKz0gYDxzcGFuICR7IHRyZWlubnVtbWVyQ2xhc3MgfT4keyB0cmVpbk51bW1lciB8fCAnLScgfTwvc3Bhbj5gO1xuXG4gICAgICAgIGxldCBhY3RpZU9tc2NocmlqdmluZyA9ICcnO1xuICAgICAgICBpZiAoQWN0aWVIZWxwZXIuaXNWU1RBY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IEFjdGllSGVscGVyLmdldFZTVEFjdGllT21zY2hyaWp2aW5nKGFjdGllKTtcbiAgICAgICAgfSBlbHNlIGlmIChBY3RpZUhlbHBlci5pc1dpc3NlbFNsaWpwZW5BY3RpZShhY3RpZSkpIHtcbiAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IGAkeyBhY3RpZS5yaXRBY3RpZVR5cGVPbXNjaHJpanZpbmcgfSAkeyBhY3RpZS53aXNzZWxOYWFtIH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gYCR7IGFjdGllLnJpdEFjdGllVHlwZU9tc2NocmlqdmluZyB9ICR7IGFjdGllLnZhbktpbG9tZXRlcmxpbnQgfSAkeyBhY3RpZS52YW5LaWxvbWV0cmVyaW5nIH1gO1xuICAgICAgICAgICAgYWN0aWVPbXNjaHJpanZpbmcgKz0gJy0nO1xuICAgICAgICAgICAgaWYgKGFjdGllLnRvdEtpbG9tZXRlcmxpbnQgIT09IGFjdGllLnZhbktpbG9tZXRlcmxpbnQpIHtcbiAgICAgICAgICAgICAgICBhY3RpZU9tc2NocmlqdmluZyArPSBhY3RpZS50b3RLaWxvbWV0ZXJsaW50O1xuICAgICAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9ICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGllT21zY2hyaWp2aW5nICs9IGFjdGllLnRvdEtpbG9tZXRyZXJpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dmFsICs9IGA8c3Bhbj4keyBhY3RpZU9tc2NocmlqdmluZyB9PC9zcGFuPjwvZGl2PmA7XG4gICAgICAgIHJldHVybiByZXR2YWw7XG4gICAgfVxufVxuIl19
|