@magic-xpa/angular 4.800.0 → 4.801.0-dev000.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/index.mjs +57 -0
- package/{esm2015/magic-xpa-angular.js → esm2020/magic-xpa-angular.mjs} +0 -0
- package/esm2020/src/controls.metadata.model.mjs +180 -0
- package/{esm2015/src/interfaces/sub-form-definition.iterface.js → esm2020/src/interfaces/sub-form-definition.iterface.mjs} +1 -0
- package/esm2020/src/magic.core.module.mjs +157 -0
- package/{esm2015/src/services/ISubformMagicService.js → esm2020/src/services/ISubformMagicService.mjs} +1 -0
- package/esm2020/src/services/OverlayWindowService.mjs +208 -0
- package/esm2020/src/services/StylesMapManager.mjs +28 -0
- package/esm2020/src/services/accessor.magic.service.mjs +302 -0
- package/{esm2015/src/services/commands-collector.magic.service.js → esm2020/src/services/commands-collector.magic.service.mjs} +7 -4
- package/esm2020/src/services/component-list.magic.service.mjs +46 -0
- package/{esm2015/src/services/confirmation.components.magic.provider.js → esm2020/src/services/confirmation.components.magic.provider.mjs} +2 -2
- package/esm2020/src/services/engine.magic.service.mjs +82 -0
- package/{esm2015/src/services/exit.magic.service.js → esm2020/src/services/exit.magic.service.mjs} +2 -2
- package/esm2020/src/services/magic.lazy.loader.service.mjs +16 -0
- package/{esm2015/src/services/magic.providers.js → esm2020/src/services/magic.providers.mjs} +0 -0
- package/{esm2015/src/services/magic.services.js → esm2020/src/services/magic.services.mjs} +2 -2
- package/{esm2015/src/services/mg-date-adapter.js → esm2020/src/services/mg-date-adapter.mjs} +2 -2
- package/{esm2015/src/services/overlay.conainer.magic.provider.js → esm2020/src/services/overlay.conainer.magic.provider.mjs} +2 -2
- package/esm2020/src/services/router-commands.magic.service.mjs +28 -0
- package/esm2020/src/services/subform.magic.service.mjs +185 -0
- package/{esm2015/src/services/table.magic.service.js → esm2020/src/services/table.magic.service.mjs} +2 -2
- package/esm2020/src/services/task.magics.service.mjs +611 -0
- package/{esm2015/src/services/title.magic.service.js → esm2020/src/services/title.magic.service.mjs} +2 -2
- package/esm2020/src/ui/GuiInteractiveExecutor.mjs +98 -0
- package/{esm2015/src/ui/components/base-magic-alert.component.js → esm2020/src/ui/components/base-magic-alert.component.mjs} +2 -2
- package/{esm2015/src/ui/components/base-magic-confirm.component.js → esm2020/src/ui/components/base-magic-confirm.component.mjs} +2 -2
- package/esm2020/src/ui/components/magic-alert.component.mjs +71 -0
- package/esm2020/src/ui/components/magic-confirmation-box.component.mjs +82 -0
- package/{esm2015/src/ui/directives/NonMagicControlDirective.js → esm2020/src/ui/directives/NonMagicControlDirective.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.js → esm2020/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/checkbox.magic.directive.js → esm2020/src/ui/directives/magic/checkbox.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/combobox.magic.directive.js → esm2020/src/ui/directives/magic/combobox.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.js → esm2020/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.mjs} +3 -4
- package/{esm2015/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.js → esm2020/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.js → esm2020/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.mjs} +3 -4
- package/{esm2015/src/ui/directives/magic/input.noformcontrol.magic.directive.js → esm2020/src/ui/directives/magic/input.noformcontrol.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/nocontrol.magic.directive.js → esm2020/src/ui/directives/magic/nocontrol.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic/row.magic.directive.js → esm2020/src/ui/directives/magic/row.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/magic-focus.directive.js → esm2020/src/ui/directives/magic-focus.directive.mjs} +2 -2
- package/esm2020/src/ui/directives/magic.directive.mjs +207 -0
- package/esm2020/src/ui/directives/magicViewContainerRef.directive.mjs +20 -0
- package/{esm2015/src/ui/directives/mgformat.magic.directive.js → esm2020/src/ui/directives/mgformat.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/directives/range-validator.magic.directive.js → esm2020/src/ui/directives/range-validator.magic.directive.mjs} +2 -2
- package/{esm2015/src/ui/magic-confirmationBox.js → esm2020/src/ui/magic-confirmationBox.mjs} +0 -0
- package/{esm2015/src/ui/magic-modal/base-magic-overlay-container.js → esm2020/src/ui/magic-modal/base-magic-overlay-container.mjs} +0 -0
- package/{esm2015/src/ui/magic-modal/magic-modal-form.js → esm2020/src/ui/magic-modal/magic-modal-form.mjs} +0 -0
- package/{esm2015/src/ui/magic-modal/magic-modal-interface.js → esm2020/src/ui/magic-modal/magic-modal-interface.mjs} +1 -0
- package/esm2020/src/ui/magic-modal/magic-overlay-container-wrapper.mjs +135 -0
- package/esm2020/src/ui/magic-modal/magic-overlay-container.mjs +165 -0
- package/esm2020/src/ui/magic-root.component.mjs +237 -0
- package/esm2020/src/ui/mgerror.magic.component.mjs +120 -0
- package/esm2020/src/ui/pipes/date.magic.pipe.mjs +105 -0
- package/{esm2015/src/ui/pipes/time.magic.pipe.js → esm2020/src/ui/pipes/time.magic.pipe.mjs} +3 -3
- package/esm2020/src/ui/router-container.magic.component.mjs +109 -0
- package/esm2020/src/ui/subform.magic.component.mjs +52 -0
- package/{esm2015/src/ui/task-base.magic.component.js → esm2020/src/ui/task-base.magic.component.mjs} +2 -2
- package/{esm2015/src/ui/utils.js → esm2020/src/ui/utils.mjs} +0 -0
- package/fesm2015/magic-xpa-angular.mjs +4578 -0
- package/fesm2015/magic-xpa-angular.mjs.map +1 -0
- package/{fesm2015/magic-xpa-angular.js → fesm2020/magic-xpa-angular.mjs} +435 -415
- package/fesm2020/magic-xpa-angular.mjs.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +28 -15
- package/src/magic.core.module.d.ts +3 -8
- package/src/services/OverlayWindowService.d.ts +2 -2
- package/src/services/accessor.magic.service.d.ts +2 -2
- package/src/services/commands-collector.magic.service.d.ts +2 -2
- package/src/services/component-list.magic.service.d.ts +3 -0
- package/src/services/confirmation.components.magic.provider.d.ts +2 -2
- package/src/services/engine.magic.service.d.ts +2 -2
- package/src/services/exit.magic.service.d.ts +2 -2
- package/src/services/magic.lazy.loader.service.d.ts +6 -0
- package/src/services/magic.services.d.ts +2 -2
- package/src/services/mg-date-adapter.d.ts +2 -2
- package/src/services/overlay.conainer.magic.provider.d.ts +2 -2
- package/src/services/router-commands.magic.service.d.ts +2 -2
- package/src/services/subform.magic.service.d.ts +6 -4
- package/src/services/table.magic.service.d.ts +2 -2
- package/src/services/task.magics.service.d.ts +2 -2
- package/src/services/title.magic.service.d.ts +2 -2
- package/src/ui/components/base-magic-alert.component.d.ts +2 -2
- package/src/ui/components/base-magic-confirm.component.d.ts +2 -2
- package/src/ui/components/magic-alert.component.d.ts +2 -2
- package/src/ui/components/magic-confirmation-box.component.d.ts +2 -2
- package/src/ui/directives/NonMagicControlDirective.d.ts +2 -2
- package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +2 -2
- package/src/ui/directives/magic/checkbox.magic.directive.d.ts +2 -2
- package/src/ui/directives/magic/combobox.magic.directive.d.ts +2 -2
- package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +2 -2
- package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +2 -2
- package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +2 -2
- package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +2 -2
- package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +2 -2
- package/src/ui/directives/magic/row.magic.directive.d.ts +2 -2
- package/src/ui/directives/magic-focus.directive.d.ts +2 -2
- package/src/ui/directives/magic.directive.d.ts +2 -2
- package/src/ui/directives/magicViewContainerRef.directive.d.ts +2 -2
- package/src/ui/directives/mgformat.magic.directive.d.ts +2 -2
- package/src/ui/directives/range-validator.magic.directive.d.ts +2 -2
- package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +7 -5
- package/src/ui/magic-modal/magic-overlay-container.d.ts +2 -2
- package/src/ui/magic-root.component.d.ts +2 -2
- package/src/ui/mgerror.magic.component.d.ts +2 -2
- package/src/ui/pipes/date.magic.pipe.d.ts +2 -2
- package/src/ui/pipes/time.magic.pipe.d.ts +2 -2
- package/src/ui/router-container.magic.component.d.ts +2 -2
- package/src/ui/subform.magic.component.d.ts +2 -2
- package/src/ui/task-base.magic.component.d.ts +2 -2
- package/bundles/magic-xpa-angular.umd.js +0 -5028
- package/bundles/magic-xpa-angular.umd.js.map +0 -1
- package/bundles/magic-xpa-angular.umd.min.js +0 -16
- package/bundles/magic-xpa-angular.umd.min.js.map +0 -1
- package/esm2015/index.js +0 -56
- package/esm2015/src/controls.metadata.model.js +0 -180
- package/esm2015/src/magic.core.module.js +0 -173
- package/esm2015/src/services/OverlayWindowService.js +0 -205
- package/esm2015/src/services/StylesMapManager.js +0 -29
- package/esm2015/src/services/accessor.magic.service.js +0 -302
- package/esm2015/src/services/component-list.magic.service.js +0 -36
- package/esm2015/src/services/engine.magic.service.js +0 -82
- package/esm2015/src/services/router-commands.magic.service.js +0 -25
- package/esm2015/src/services/subform.magic.service.js +0 -182
- package/esm2015/src/services/task.magics.service.js +0 -611
- package/esm2015/src/ui/GuiInteractiveExecutor.js +0 -98
- package/esm2015/src/ui/components/magic-alert.component.js +0 -72
- package/esm2015/src/ui/components/magic-confirmation-box.component.js +0 -83
- package/esm2015/src/ui/directives/magic.directive.js +0 -207
- package/esm2015/src/ui/directives/magicViewContainerRef.directive.js +0 -20
- package/esm2015/src/ui/magic-modal/magic-overlay-container-wrapper.js +0 -131
- package/esm2015/src/ui/magic-modal/magic-overlay-container.js +0 -169
- package/esm2015/src/ui/magic-root.component.js +0 -237
- package/esm2015/src/ui/mgerror.magic.component.js +0 -120
- package/esm2015/src/ui/pipes/date.magic.pipe.js +0 -106
- package/esm2015/src/ui/router-container.magic.component.js +0 -109
- package/esm2015/src/ui/subform.magic.component.js +0 -52
- package/fesm2015/magic-xpa-angular.js.map +0 -1
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { TaskMagicService } from './task.magics.service';
|
|
3
|
-
import { GuiEnvironment, HtmlProperties, PIC } from '@magic-xpa/gui';
|
|
4
|
-
import { isNullOrUndefined } from 'util';
|
|
5
|
-
import { getGuiEventObj, CookieService } from '@magic-xpa/engine';
|
|
6
|
-
import { Logger, StorageAttribute } from '@magic-xpa/utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./task.magics.service";
|
|
9
|
-
export class AccessorMagicService {
|
|
10
|
-
constructor(task) {
|
|
11
|
-
this.task = task;
|
|
12
|
-
this.Logger = null;
|
|
13
|
-
this.Logger = Logger.Instance;
|
|
14
|
-
}
|
|
15
|
-
checkIsReadOnly(controlId) {
|
|
16
|
-
let properties;
|
|
17
|
-
properties = this.task.Records.list[0].getControlMetadata(controlId);
|
|
18
|
-
if (properties.properties.get(HtmlProperties.ReadOnly) !== null && properties.properties.get(HtmlProperties.ReadOnly) === true)
|
|
19
|
-
return false;
|
|
20
|
-
else
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
getText(controlId, rowId) {
|
|
24
|
-
return this.task.getProperty(controlId, HtmlProperties.Text, rowId);
|
|
25
|
-
}
|
|
26
|
-
getTabpageText(controlId, layer) {
|
|
27
|
-
const items = this.task.getProperty(controlId, HtmlProperties.ItemsList);
|
|
28
|
-
if (typeof items !== "undefined")
|
|
29
|
-
return items[layer].displayValue;
|
|
30
|
-
return "";
|
|
31
|
-
}
|
|
32
|
-
getImage(controlId, rowId) {
|
|
33
|
-
let result = this.task.getProperty(controlId, HtmlProperties.Image, rowId);
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
isImageExists(controlId, rowId) {
|
|
37
|
-
let result = this.task.getProperty(controlId, HtmlProperties.Image, rowId);
|
|
38
|
-
return !isNullOrUndefined(result);
|
|
39
|
-
}
|
|
40
|
-
getClasses(controlId, rowId) {
|
|
41
|
-
return this.task.getClasses(controlId, rowId);
|
|
42
|
-
}
|
|
43
|
-
getStyle(controlId, styleName, rowId) {
|
|
44
|
-
let style = this.task.getStyle(controlId, styleName, rowId);
|
|
45
|
-
return style;
|
|
46
|
-
}
|
|
47
|
-
getVisible(controlId, rowId) {
|
|
48
|
-
let vis = this.getProperty(controlId, HtmlProperties.Visible, rowId);
|
|
49
|
-
return vis ? 'visible' : 'hidden';
|
|
50
|
-
}
|
|
51
|
-
getNumericPicture(picture) {
|
|
52
|
-
if (isNullOrUndefined(picture))
|
|
53
|
-
return null;
|
|
54
|
-
let pic = new PIC(picture, StorageAttribute.NUMERIC, 0);
|
|
55
|
-
var obj = {};
|
|
56
|
-
obj['prefix'] = "";
|
|
57
|
-
if (pic.getPosPref_().length > 0 && pic.getNegPref_().length > 0) {
|
|
58
|
-
let pref = '-' + pic.getPosPref_();
|
|
59
|
-
if (pref == pic.getNegPref_())
|
|
60
|
-
obj['prefix'] = pic.getPosPref_();
|
|
61
|
-
}
|
|
62
|
-
if (pic.getPosSuff_().length > 0)
|
|
63
|
-
obj['suffix'] = pic.getPosSuff_();
|
|
64
|
-
else
|
|
65
|
-
obj['suffix'] = "";
|
|
66
|
-
if (pic.isNegative())
|
|
67
|
-
obj['allowNegative'] = true;
|
|
68
|
-
else
|
|
69
|
-
obj['allowNegative'] = false;
|
|
70
|
-
if (pic.getDec() >= 0)
|
|
71
|
-
obj['precision'] = pic.getDec();
|
|
72
|
-
if (pic.isLeft())
|
|
73
|
-
obj['align'] = "left";
|
|
74
|
-
obj['decimal'] = GuiEnvironment.Environment.GetDecimal();
|
|
75
|
-
if (pic.withComa())
|
|
76
|
-
obj['thousands'] = GuiEnvironment.Environment.GetThousands();
|
|
77
|
-
else
|
|
78
|
-
obj['thousands'] = "";
|
|
79
|
-
if (pic.getWholes())
|
|
80
|
-
obj['wholes'] = pic.getWholes();
|
|
81
|
-
return obj;
|
|
82
|
-
}
|
|
83
|
-
getMustInput(controlId, rowId) {
|
|
84
|
-
let vis = this.getProperty(controlId, HtmlProperties.MustInput, rowId);
|
|
85
|
-
return vis ? 'true' : 'false';
|
|
86
|
-
}
|
|
87
|
-
isDisabled(controlId, rowId) {
|
|
88
|
-
let result = this.getProperty(controlId, HtmlProperties.Enabled, rowId);
|
|
89
|
-
return result === true ? null : true;
|
|
90
|
-
}
|
|
91
|
-
getProperty(controlId, prop, rowId) {
|
|
92
|
-
return this.task.getProperty(controlId, prop, rowId);
|
|
93
|
-
}
|
|
94
|
-
getTitle(controlId, rowId) {
|
|
95
|
-
return this.task.getProperty(controlId, HtmlProperties.Tooltip, rowId);
|
|
96
|
-
}
|
|
97
|
-
getZoomButtonTitle(controlId, rowId) {
|
|
98
|
-
return this.task.getProperty(controlId, HtmlProperties.ZoomButtonTooltip, rowId);
|
|
99
|
-
}
|
|
100
|
-
getSelectedValue(controlId, rowId) {
|
|
101
|
-
return this.task.getProperty(controlId, HtmlProperties.SelectedValue, rowId);
|
|
102
|
-
}
|
|
103
|
-
getPlaceholder(controlId, rowId) {
|
|
104
|
-
return this.task.getProperty(controlId, HtmlProperties.PlaceHolder, rowId);
|
|
105
|
-
}
|
|
106
|
-
getType(controlId, rowId) {
|
|
107
|
-
let result = this.task.getProperty(controlId, HtmlProperties.Password, rowId);
|
|
108
|
-
return result ? "password" : "text";
|
|
109
|
-
}
|
|
110
|
-
getTabIndex(controlId, rowId) {
|
|
111
|
-
return this.task.getProperty(controlId, HtmlProperties.TabIndex, rowId);
|
|
112
|
-
}
|
|
113
|
-
getValue(controlId, rowId) {
|
|
114
|
-
let val = this.task.getValue(controlId, rowId);
|
|
115
|
-
return val;
|
|
116
|
-
}
|
|
117
|
-
getFormattedValue(controlId, rowId) {
|
|
118
|
-
let val = this.task.getValue(controlId, rowId);
|
|
119
|
-
val = this.task.getFormattedValue(controlId, val);
|
|
120
|
-
return val;
|
|
121
|
-
}
|
|
122
|
-
getPicture(controlId, rowId) {
|
|
123
|
-
if (isNullOrUndefined(controlId))
|
|
124
|
-
return null;
|
|
125
|
-
let pic = this.task.GetControlPictureMask(controlId);
|
|
126
|
-
return (pic != null) ? pic.getFormat().toString() : null;
|
|
127
|
-
}
|
|
128
|
-
getCustomProperty(controlId, propertyNameOrRowID, rowId) {
|
|
129
|
-
if (controlId.indexOf('~') == -1)
|
|
130
|
-
return this.getCustomProperty_1(controlId, propertyNameOrRowID, rowId);
|
|
131
|
-
else {
|
|
132
|
-
let cid = controlId.split('~')[0];
|
|
133
|
-
let propName = controlId.split('~')[1];
|
|
134
|
-
return this.getCustomProperty_1(cid, propName, propertyNameOrRowID);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
getCustomProperty_1(controlId, propertyName, rowId) {
|
|
138
|
-
let userProperties;
|
|
139
|
-
if (isNullOrUndefined(rowId))
|
|
140
|
-
rowId = '0';
|
|
141
|
-
let rec = this.task.Records.list[rowId];
|
|
142
|
-
if (isNullOrUndefined(rec))
|
|
143
|
-
debugger;
|
|
144
|
-
else {
|
|
145
|
-
const controlMetadata = rec.getControlMetadata(controlId);
|
|
146
|
-
if (controlMetadata.userProperties.has(propertyName)) {
|
|
147
|
-
userProperties = controlMetadata.userProperties.get(propertyName);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return userProperties;
|
|
151
|
-
}
|
|
152
|
-
getItemListValues(id, rowId) {
|
|
153
|
-
return this.getProperty(id, HtmlProperties.ItemsList, rowId);
|
|
154
|
-
}
|
|
155
|
-
getFilteredList(controlId, rowId) {
|
|
156
|
-
if (isNullOrUndefined(rowId))
|
|
157
|
-
rowId = '0';
|
|
158
|
-
let items = this.getItemListValues(controlId, rowId);
|
|
159
|
-
let value = this.task.getFormControl(rowId, controlId).value;
|
|
160
|
-
if (value !== null && value !== "" && items instanceof Array) {
|
|
161
|
-
value = value.toLowerCase();
|
|
162
|
-
return items.filter(option => option.displayValue.toLowerCase().includes(value));
|
|
163
|
-
}
|
|
164
|
-
else
|
|
165
|
-
return items;
|
|
166
|
-
}
|
|
167
|
-
getDisplayValue(id, rowId) {
|
|
168
|
-
let displayValue = "";
|
|
169
|
-
let o = this.getProperty(id, HtmlProperties.ItemsList, rowId);
|
|
170
|
-
let value = this.task.getValue(id, rowId);
|
|
171
|
-
if (value >= 0 && value < o.length && !isNullOrUndefined(o[value]))
|
|
172
|
-
displayValue = o[value].displayValue;
|
|
173
|
-
return displayValue;
|
|
174
|
-
}
|
|
175
|
-
isOptionSelected(index, controlId) {
|
|
176
|
-
let val = this.task.getValue(controlId, "0");
|
|
177
|
-
for (let item of val) {
|
|
178
|
-
if (item === index)
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
return false;
|
|
182
|
-
}
|
|
183
|
-
isTabPageSelected(controlId, layer) {
|
|
184
|
-
let val = this.task.getProperty(controlId, HtmlProperties.SelectedValue);
|
|
185
|
-
return val == (layer - 1);
|
|
186
|
-
}
|
|
187
|
-
isTabPageLayerSelected(controlId, layer) {
|
|
188
|
-
let val = this.task.getProperty(controlId, HtmlProperties.SelectedLayer);
|
|
189
|
-
return val == (layer - 1);
|
|
190
|
-
}
|
|
191
|
-
getTabSelectedIndex(controlId) {
|
|
192
|
-
let val = this.task.getProperty(controlId, HtmlProperties.SelectedValue);
|
|
193
|
-
return val;
|
|
194
|
-
}
|
|
195
|
-
ifRowCreated(row) {
|
|
196
|
-
if (row == null)
|
|
197
|
-
return false;
|
|
198
|
-
let rowId = typeof row == "number" ? row.toString() : row.rowId;
|
|
199
|
-
let result = this.getFormGroupByRow(rowId);
|
|
200
|
-
return !isNullOrUndefined(result);
|
|
201
|
-
}
|
|
202
|
-
getFormGroupByRow(id) {
|
|
203
|
-
return this.task.formGroups[id];
|
|
204
|
-
}
|
|
205
|
-
isRowSelected(controlId, rowId) {
|
|
206
|
-
const selectedRow = this.task.getProperty(controlId, HtmlProperties.SelectedRow, "0");
|
|
207
|
-
return selectedRow == rowId;
|
|
208
|
-
}
|
|
209
|
-
isRowInRowEditing(row) {
|
|
210
|
-
let guiRowId = '0';
|
|
211
|
-
guiRowId = typeof row == "number" ? row.toString() : row.rowId;
|
|
212
|
-
return this.task.isRowInRowEditing(guiRowId);
|
|
213
|
-
}
|
|
214
|
-
isCurrentInRowEditing() {
|
|
215
|
-
let row = this.task.tableService.getSelectedRow();
|
|
216
|
-
return this.task.isRowInRowEditing(row);
|
|
217
|
-
}
|
|
218
|
-
guiTopIndex() {
|
|
219
|
-
return this.task.tableService.getTableTopIndex();
|
|
220
|
-
}
|
|
221
|
-
getErrMsg(id, rowId) {
|
|
222
|
-
let c = this.task.getFormControl(rowId, id);
|
|
223
|
-
if (c.hasError('required'))
|
|
224
|
-
return 'Control must be updated.';
|
|
225
|
-
if (c.hasError('pattern'))
|
|
226
|
-
return 'Required pattern is : ' + c.errors.pattern.requiredPattern;
|
|
227
|
-
if (c.hasError('rangevalidator'))
|
|
228
|
-
return c.errors.rangevalidator.errorMsg;
|
|
229
|
-
if (c.hasError('maxlength'))
|
|
230
|
-
return 'Max length allowed is : ' + c.errors.maxlength.requiredLength;
|
|
231
|
-
if (c.hasError('max'))
|
|
232
|
-
return 'Max value alllowed is : ' + c.errors.max.max;
|
|
233
|
-
let controlMetadata = this.task.Records.list[rowId].getControlMetadata(id);
|
|
234
|
-
for (let key of controlMetadata.customValidators.keys()) {
|
|
235
|
-
if (c.hasError(key)) {
|
|
236
|
-
let customValidator = controlMetadata.customValidators.get(key);
|
|
237
|
-
return customValidator.getErrMessage();
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return 'unknown error';
|
|
241
|
-
}
|
|
242
|
-
setValueToControl(controlName, value, refreshDisplay) {
|
|
243
|
-
if (typeof refreshDisplay === "undefined")
|
|
244
|
-
refreshDisplay = true;
|
|
245
|
-
let guiEvent = getGuiEventObj("setexternalvalue", controlName, 0);
|
|
246
|
-
guiEvent.externalValue = value;
|
|
247
|
-
guiEvent.param = refreshDisplay;
|
|
248
|
-
this.task.insertEvent(guiEvent);
|
|
249
|
-
}
|
|
250
|
-
isDataviewEmpty() {
|
|
251
|
-
return this.task.Records.isEmptyDataView;
|
|
252
|
-
}
|
|
253
|
-
simulateClick(controlName, rowId) {
|
|
254
|
-
if (typeof rowId === "undefined")
|
|
255
|
-
rowId = 0;
|
|
256
|
-
this.task.insertEvent(getGuiEventObj('click', controlName, rowId));
|
|
257
|
-
}
|
|
258
|
-
isLoggedIn() {
|
|
259
|
-
return this.task.getIsLoggenIn();
|
|
260
|
-
}
|
|
261
|
-
GetFormRecords() {
|
|
262
|
-
let rowId = 0;
|
|
263
|
-
let recArray;
|
|
264
|
-
if (!isNullOrUndefined(this.task.Records) && this.task.Records.list.length > 0) {
|
|
265
|
-
let recList = this.task.Records.list;
|
|
266
|
-
let tableControls = new Array();
|
|
267
|
-
for (const key in this.task.template) {
|
|
268
|
-
if (this.task.template[key] == '1')
|
|
269
|
-
tableControls.push(key);
|
|
270
|
-
}
|
|
271
|
-
recArray = new Array();
|
|
272
|
-
if (tableControls.length > 0) {
|
|
273
|
-
recList.forEach((ctrlMetaData) => {
|
|
274
|
-
if (this.task.Records.isRowCreated(rowId)) {
|
|
275
|
-
var formRecord = {};
|
|
276
|
-
formRecord['rowId'] = rowId;
|
|
277
|
-
tableControls.forEach((ctrlId) => {
|
|
278
|
-
formRecord[ctrlId] = ctrlMetaData.values[ctrlId];
|
|
279
|
-
});
|
|
280
|
-
recArray.push(formRecord);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
return recArray;
|
|
286
|
-
}
|
|
287
|
-
SetCookie(name, value, expires, path, domain, secure, sameSite) {
|
|
288
|
-
CookieService.setCookie(name, value, expires, path, domain, secure, sameSite);
|
|
289
|
-
}
|
|
290
|
-
GetCookie(name) {
|
|
291
|
-
return CookieService.getCookie(name);
|
|
292
|
-
}
|
|
293
|
-
DeleteCookie(name) {
|
|
294
|
-
return CookieService.deleteCookie(name);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
AccessorMagicService.ɵfac = function AccessorMagicService_Factory(t) { return new (t || AccessorMagicService)(i0.ɵɵinject(i1.TaskMagicService)); };
|
|
298
|
-
AccessorMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: AccessorMagicService, factory: AccessorMagicService.ɵfac });
|
|
299
|
-
(function () { i0.ɵsetClassMetadata(AccessorMagicService, [{
|
|
300
|
-
type: Injectable
|
|
301
|
-
}], function () { return [{ type: i1.TaskMagicService }]; }, null); })();
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2FjY2Vzc29yLm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQWEsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFLNUQsTUFBTSxPQUFPLG9CQUFvQjtJQU0vQixZQUFzQixJQUFzQjtRQUF0QixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUw1QyxXQUFNLEdBQVEsSUFBSSxDQUFDO1FBTWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUNoQyxDQUFDO0lBUUQsZUFBZSxDQUFDLFNBQWlCO1FBQy9CLElBQUksVUFBMkIsQ0FBQztRQUNoQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSTtZQUM1SCxPQUFPLEtBQUssQ0FBQzs7WUFFYixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBU0QsT0FBTyxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFRRCxjQUFjLENBQUMsU0FBaUIsRUFBRSxLQUFhO1FBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekUsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXO1lBQzlCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNuQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFTRCxRQUFRLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQ3hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLE9BQU8sTUFBTSxDQUFDO0lBRWhCLENBQUM7SUFTRCxhQUFhLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQzdDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQyxDQUFDO0lBU0QsVUFBVSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBVUQsUUFBUSxDQUFDLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxLQUFjO1FBQzNELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDM0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBU0QsVUFBVSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUMxQyxJQUFJLEdBQUcsR0FBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNwQyxDQUFDO0lBUUQsaUJBQWlCLENBQUMsT0FBZTtRQUNoQyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztRQUVmLElBQUksR0FBRyxHQUFRLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hFLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtnQkFDNUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQztRQUNELElBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7O1lBRWxDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFckIsSUFBRyxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ2pCLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7O1lBRTVCLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBRyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUcsQ0FBQztZQUNoQixHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5DLElBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUNaLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBQyxNQUFNLENBQUM7UUFFdkIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekQsSUFBRyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ2QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7O1lBRTVELEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBQyxFQUFFLENBQUM7UUFFckIsSUFBRyxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQ2hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFaEMsT0FBUyxHQUFHLENBQUM7SUFDZixDQUFDO0lBU0QsWUFBWSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUM1QyxJQUFJLEdBQUcsR0FBWSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBU0QsVUFBVSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUMxQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQU1ELFdBQVcsQ0FBQyxTQUFpQixFQUFFLElBQW9CLEVBQUUsS0FBYztRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQVNELFFBQVEsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBU0Qsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBU0QsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQVNELGNBQWMsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBU0QsT0FBTyxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUN2QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFDckMsQ0FBQztJQVNELFdBQVcsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBU0QsUUFBUSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUN4QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBU0QsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxLQUFjO1FBQ2pELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBU0QsVUFBVSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUUxQyxJQUFJLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQztRQUNkLElBQUksR0FBRyxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsT0FBUSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFNUQsQ0FBQztJQVVELGlCQUFpQixDQUFDLFNBQWlCLEVBQUUsbUJBQTRCLEVBQUUsS0FBYztRQUUvRSxJQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUcsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNsRTtZQUNILElBQUssR0FBRyxHQUFXLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSyxRQUFRLEdBQVcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxZQUFvQixFQUFFLEtBQWM7UUFFekUsSUFBSSxjQUFjLENBQUM7UUFDbkIsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7WUFDMUIsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztZQUN4QixRQUFRLENBQUM7YUFDTjtZQUNILE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUxRCxJQUFJLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNwRCxjQUFjLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkU7U0FDRjtRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFTRCxpQkFBaUIsQ0FBQyxFQUFVLEVBQUUsS0FBYztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQVFELGVBQWUsQ0FBQyxTQUFpQixFQUFFLEtBQWM7UUFDL0MsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7WUFDMUIsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUVkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyRSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzVELEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsRjs7WUFFQyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBUUQsZUFBZSxDQUFDLEVBQUUsRUFBRSxLQUFNO1FBQ3hCLElBQUksWUFBWSxHQUFTLEVBQUUsQ0FBQTtRQUUzQixJQUFJLENBQUMsR0FBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6QyxJQUFJLEtBQUssSUFBRyxDQUFDLElBQUksS0FBSyxHQUFFLENBQUMsQ0FBQyxNQUFNLElBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0QsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDdkMsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztJQVFELGdCQUFnQixDQUFDLEtBQUssRUFBRSxTQUFTO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUNwQixJQUFJLElBQUksS0FBSyxLQUFLO2dCQUNoQixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ04sT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBUUQsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxLQUFhO1FBQ2hELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQVFELHNCQUFzQixDQUFDLFNBQWlCLEVBQUUsS0FBYTtRQUNyRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFPRCxtQkFBbUIsQ0FBQyxTQUFpQjtRQUNuQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVFELFlBQVksQ0FBQyxHQUFHO1FBQ2QsSUFBSSxHQUFHLElBQUksSUFBSTtZQUNiLE9BQU8sS0FBSyxDQUFDO1FBQ2YsSUFBSSxLQUFLLEdBQUcsT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDaEUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBTUQsaUJBQWlCLENBQUMsRUFBVTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFNRCxhQUFhLENBQUMsU0FBUyxFQUFFLEtBQU07UUFDN0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdEYsT0FBTyxXQUFXLElBQUksS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFNRCxpQkFBaUIsQ0FBQyxHQUFTO1FBQ3pCLElBQUksUUFBUSxHQUFZLEdBQUcsQ0FBQztRQUM1QixRQUFRLEdBQUUsT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFNRCxxQkFBcUI7UUFFbkIsSUFBSSxHQUFHLEdBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFbkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFNRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFLRCxTQUFTLENBQUMsRUFBVSxFQUFDLEtBQWE7UUFFaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDeEIsT0FBTywwQkFBMEIsQ0FBQztRQUNwQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ3pCLE9BQU8sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDbkIsT0FBTywwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFFdkQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLEtBQUssSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUN2RDtZQUNFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxlQUFlLEdBQXFCLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xGLE9BQU8sZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBUUQsaUJBQWlCLENBQUMsV0FBbUIsRUFBRSxLQUFVLEVBQUUsY0FBd0I7UUFDekUsSUFBRyxPQUFPLGNBQWMsS0FBSyxXQUFXO1lBQ3RDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxRQUFRLEdBQWMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxRQUFRLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMvQixRQUFRLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBS0QsZUFBZTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQzVDLENBQUM7SUFPRCxhQUFhLENBQUMsV0FBbUIsRUFBRSxLQUFjO1FBQy9DLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVztZQUM5QixLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBS0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBS0QsY0FBYztRQUNaLElBQUksS0FBSyxHQUFXLENBQUMsQ0FBQztRQUN0QixJQUFJLFFBQWEsQ0FBQztRQUVsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRztZQUMvRSxJQUFJLE9BQU8sR0FBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3pELElBQUksYUFBYSxHQUFhLElBQUksS0FBSyxFQUFFLENBQUM7WUFHMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDcEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHO29CQUNoQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1lBRUQsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFHdkIsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDNUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQThCLEVBQUUsRUFBRTtvQkFDakQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQ3pDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQzt3QkFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQzt3QkFDNUIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFOzRCQUN2QyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDbkQsQ0FBQyxDQUFDLENBQUM7d0JBRUgsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtxQkFDMUI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQVVELFNBQVMsQ0FBQyxJQUFZLEVBQUUsS0FBVSxFQUFFLE9BQWMsRUFBRSxJQUFLLEVBQUcsTUFBTyxFQUFHLE1BQU8sRUFBRSxRQUFVO1FBQ3ZGLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUtELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBS0QsWUFBWSxDQUFDLElBQVk7UUFDdkIsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7O3dGQTdtQlUsb0JBQW9COzREQUFwQixvQkFBb0IsV0FBcEIsb0JBQW9CO29DQUFwQixvQkFBb0I7Y0FEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFza01hZ2ljU2VydmljZSB9IGZyb20gJy4vdGFzay5tYWdpY3Muc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xNZXRhZGF0YSwgQ29udHJvbHNNZXRhZGF0YSB9IGZyb20gJy4uL2NvbnRyb2xzLm1ldGFkYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdG9yLCBHdWlFbnZpcm9ubWVudCwgSHRtbFByb3BlcnRpZXMsIFBJQyB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICd1dGlsJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBnZXRHdWlFdmVudE9iaiwgSUd1aUV2ZW50LCBDb29raWVTZXJ2aWNlfSBmcm9tICdAbWFnaWMteHBhL2VuZ2luZSc7XHJcbmltcG9ydCB7IExvZ2dlciwgU3RvcmFnZUF0dHJpYnV0ZSB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG4vKipcclxuICogUHJvdmlkZXMgdGhlIFVJIHdpdGggdmFsdWVzIGNhbGN1bGF0ZWQgYnkgdGhlIE1hZ2ljIFdlYkNsaWVudFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQWNjZXNzb3JNYWdpY1NlcnZpY2Uge1xyXG4gIExvZ2dlcjogYW55ID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0YXNrOiBUYXNrTWFnaWNTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLkxvZ2dlciA9IExvZ2dlci5JbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aGUgY29udHJvbCBpcyByZWFkLW9ubHlcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcmV0dXJucyBJcyB0aGUgY29udHJvbCBub3QgcmVhZC1vbmx5XHJcbiAgICovXHJcbiAgLy8gQ2hlY2tSZWFkT25seVxyXG4gIGNoZWNrSXNSZWFkT25seShjb250cm9sSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHByb3BlcnRpZXM6IENvbnRyb2xNZXRhZGF0YTtcclxuICAgIHByb3BlcnRpZXMgPSB0aGlzLnRhc2suUmVjb3Jkcy5saXN0WzBdLmdldENvbnRyb2xNZXRhZGF0YShjb250cm9sSWQpO1xyXG4gICAgaWYgKHByb3BlcnRpZXMucHJvcGVydGllcy5nZXQoSHRtbFByb3BlcnRpZXMuUmVhZE9ubHkpICE9PSBudWxsICYmIHByb3BlcnRpZXMucHJvcGVydGllcy5nZXQoSHRtbFByb3BlcnRpZXMuUmVhZE9ubHkpID09PSB0cnVlKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJucyBUaGUgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGV4dFxyXG4gIGdldFRleHQoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5UZXh0LCByb3dJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHRleHQgb2YgdGhlIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIGxheWVyIElkIG9mIHRhYnBhZ2VcclxuICAgKiBAcmV0dXJucyBUZXh0IG9mIHRhYnBhZ2VcclxuICAgKi9cclxuICAvLyBtZ0dldFRhYnBhZ2VUZXh0XHJcbiAgZ2V0VGFicGFnZVRleHQoY29udHJvbElkOiBzdHJpbmcsIGxheWVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5JdGVtc0xpc3QpO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtcyAhPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgcmV0dXJuIGl0ZW1zW2xheWVyXS5kaXNwbGF5VmFsdWU7XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGltYWdlIGRlZmluZWQgZm9yIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIEltYWdlIHNldCBvbiBjb250cm9sXHJcbiAgICovXHJcbiAgLy8gbWdHZXRJbWFnZVxyXG4gIGdldEltYWdlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuSW1hZ2UsIHJvd0lkKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGFuIGltYWdlIGlzIHNldCBmb3IgdGhpcyBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIHJldHVybnMgdHJ1ZSBpZiBjb250cm9sIGhhcyBhbiBpbWFnZSBzZXQgb24gaXRcclxuICAgKi9cclxuICAvLyBtZ0lzSW1hZ2VFeGlzdHNcclxuICBpc0ltYWdlRXhpc3RzKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLkltYWdlLCByb3dJZCk7XHJcbiAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHJlc3VsdCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgQ1NTIGNsYXNzZXMgc2V0IG9uIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIFRoZSBjbGFzc2VzIGZvciB0aGlzIGNvbnRyb2xcclxuICAgKi9cclxuICAvLyBtZ0dldENsYXNzZXNcclxuICBnZXRDbGFzc2VzKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOnN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldENsYXNzZXMoY29udHJvbElkLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBDU1Mgc3R5bGVzIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSBzdHlsZU5hbWUgTkFtZSBvZiBzdHlsZSByZXF1ZXN0ZWRcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnMgVGhlIHN0eWxlIHNldCBvbiB0aGUgY29udHJvbFxyXG4gICAqL1xyXG4gIC8vIG1nR2V0U3R5bGVcclxuICBnZXRTdHlsZShjb250cm9sSWQ6IHN0cmluZywgc3R5bGVOYW1lOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHlsZSA9IHRoaXMudGFzay5nZXRTdHlsZShjb250cm9sSWQsIHN0eWxlTmFtZSwgcm93SWQpXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb250cm9sIGlzIHZpc2libGUgb3Igbm90XHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zIElzIHRoZSBjb250cm9sIHZpc2libGUgb3IgaGlkZGVuXHJcbiAgICovXHJcbiAgLy8gbWdHZXRWaXNpYmxlXHJcbiAgZ2V0VmlzaWJsZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogc3RyaW5nIHtcclxuICAgIGxldCB2aXM6IEJvb2xlYW4gPSB0aGlzLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuVmlzaWJsZSwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZpcyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBvYmplY3QgcmVwcmVzZW50aW5nIG51bWVyaWMgcGljdHVyZVxyXG4gICAqIEBwYXJhbSBwaWN0dXJlIHN0cmluZyB3aGljaCBpcyBkZWZpbmVkIGluIG1hZ2ljXHJcbiAgICogQHJldHVybnMgb2JqZWN0IHJlcHJlc2VudGluZyBudW1lcmljIHBpY3R1cmVcclxuICAgKi9cclxuICAvLyBtZ0dldE51bWVyaWNQaWN0dXJlXHJcbiAgZ2V0TnVtZXJpY1BpY3R1cmUocGljdHVyZTogc3RyaW5nKSA6IGFueSB7XHJcbiAgIGlmIChpc051bGxPclVuZGVmaW5lZChwaWN0dXJlKSlcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICBsZXQgcGljOiBQSUMgPSBuZXcgUElDKHBpY3R1cmUsIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQywgMCk7XHJcblxyXG4gICB2YXIgb2JqID0ge307XHJcblxyXG4gICBvYmpbJ3ByZWZpeCddID0gXCJcIlxyXG4gICBpZiAocGljLmdldFBvc1ByZWZfKCkubGVuZ3RoID4gMCAmJiBwaWMuZ2V0TmVnUHJlZl8oKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgbGV0IHByZWYgPSAnLScrcGljLmdldFBvc1ByZWZfKCk7XHJcbiAgICAgaWYgKHByZWYgPT0gcGljLmdldE5lZ1ByZWZfKCkpXHJcbiAgICAgIG9ialsncHJlZml4J10gPSBwaWMuZ2V0UG9zUHJlZl8oKTtcclxuICAgfVxyXG4gICBpZihwaWMuZ2V0UG9zU3VmZl8oKS5sZW5ndGggPiAwKVxyXG4gICAgIG9ialsnc3VmZml4J10gPSBwaWMuZ2V0UG9zU3VmZl8oKTtcclxuICAgZWxzZVxyXG4gICAgIG9ialsnc3VmZml4J10gPSBcIlwiO1xyXG5cclxuICAgaWYocGljLmlzTmVnYXRpdmUoKSlcclxuICAgICBvYmpbJ2FsbG93TmVnYXRpdmUnXSA9IHRydWU7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ2FsbG93TmVnYXRpdmUnXSA9IGZhbHNlO1xyXG4gICBpZihwaWMuZ2V0RGVjKCk+PSAwKVxyXG4gICAgICBvYmpbJ3ByZWNpc2lvbiddID0gcGljLmdldERlYygpO1xyXG5cclxuICAgaWYocGljLmlzTGVmdCgpKVxyXG4gICAgICBvYmpbJ2FsaWduJ109XCJsZWZ0XCI7XHJcblxyXG4gICBvYmpbJ2RlY2ltYWwnXSA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERlY2ltYWwoKTtcclxuICAgaWYocGljLndpdGhDb21hKCkpXHJcbiAgICAgIG9ialsndGhvdXNhbmRzJ109R3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VGhvdXNhbmRzKCk7XHJcbiAgIGVsc2VcclxuICAgICBvYmpbJ3Rob3VzYW5kcyddPVwiXCI7XHJcblxyXG4gICAgaWYocGljLmdldFdob2xlcygpKVxyXG4gICAgICBvYmpbJ3dob2xlcyddPXBpYy5nZXRXaG9sZXMoKTtcclxuXHJcbiAgICByZXR1cm4gICBvYmo7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb250cm9sIHNob3VsZCBoYXZlIHRoZSBcInJlcXVpcmVkXCIgYXR0cmlidXRlIHNldCBvbiBpdFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0TXVzdElucHV0XHJcbiAgZ2V0TXVzdElucHV0KGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBzdHJpbmcge1xyXG4gICAgbGV0IHZpczogQm9vbGVhbiA9IHRoaXMuZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5NdXN0SW5wdXQsIHJvd0lkKTtcclxuICAgIHJldHVybiB2aXMgPyAndHJ1ZScgOiAnZmFsc2UnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgY29udHJvbCBpcyBkaXNhYmxlZFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nSXNEaXNhYmxlZFxyXG4gIGlzRGlzYWJsZWQoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogYW55e1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5FbmFibGVkLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID09PSB0cnVlID8gbnVsbCA6IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgLy8gZ2V0UHJvcGVydHkgKG5vdCBjaGFuZ2VkKVxyXG4gIGdldFByb3BlcnR5KGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wOiBIdG1sUHJvcGVydGllcywgcm93SWQ/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBwcm9wLCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB0aXRsZSAodG9vbHRpcCkgdGV4dCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGl0bGVcclxuICBnZXRUaXRsZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlRvb2x0aXAsIHJvd0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRpdGxlICh0b29sdGlwKSB0ZXh0IG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUaXRsZSBmb3Igem9vbSBidXR0b25cclxuICBnZXRab29tQnV0dG9uVGl0bGUoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5ab29tQnV0dG9uVG9vbHRpcCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0aW9uIGNvbnRyb2wncyBzZWxlY3RlZCB2YWx1ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIGdldFNlbGVjdGVkVmFsdWVcclxuICBnZXRTZWxlY3RlZFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgcGxhY2UtaG9sZGVyIHRleHQgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldFBsYWNlaG9sZGVyXHJcbiAgZ2V0UGxhY2Vob2xkZXIoY29udHJvbElkOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5QbGFjZUhvbGRlciwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIHR5cGUgZm9yIGlucHV0IGNvbnRyb2xzIC0gc2hvdWxkIHRoZSBjb250cm9sIGJlIGEgc2ltcGxlIHRleHQgb3IgYSBwYXNzd29yZCBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRUeXBlXHJcbiAgZ2V0VHlwZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlBhc3N3b3JkLCByb3dJZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0ID8gXCJwYXNzd29yZFwiIDogXCJ0ZXh0XCJcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHRhYi1pbmRleCBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vIG1nR2V0VGFiSW5kZXhcclxuICBnZXRUYWJJbmRleChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlRhYkluZGV4LCByb3dJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vLyBtZ0dldFZhbHVlIC0tPlxyXG4gIGdldFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZvcm1hdHRlZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIC8vLyBtZ0dldFZhbHVlIC0tPlxyXG4gIGdldEZvcm1hdHRlZFZhbHVlKGNvbnRyb2xJZDogc3RyaW5nLCByb3dJZD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgdmFsID0gdGhpcy50YXNrLmdldEZvcm1hdHRlZFZhbHVlKGNvbnRyb2xJZCwgdmFsKTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBQaWN0dXJlIG9mIHRoZSBjb250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8vIGdldFBpY3R1cmUgLS0+XHJcbiAgZ2V0UGljdHVyZShjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb250cm9sSWQpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwaWM6IFBJQyA9IHRoaXMudGFzay5HZXRDb250cm9sUGljdHVyZU1hc2soY29udHJvbElkKTtcclxuICAgIHJldHVybiAgKHBpYyAhPSBudWxsKSA/IHBpYy5nZXRGb3JtYXQoKS50b1N0cmluZygpIDogbnVsbDtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXN0b20gKHVzZXIpIHByb3BlcnRpZXMgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIE5hbWUgb2YgcmVxdWVzdGVkIHByb3BlcnR5XHJcbiAgICogQHBhcmFtIHJvd0lkIElkIG9mIHJvdywgaWYgYXBwbGljYWJsZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgLy8gbWdHZXRDdXN0b21Qcm9wZXJ0eVxyXG4gIGdldEN1c3RvbVByb3BlcnR5KGNvbnRyb2xJZDogc3RyaW5nLCBwcm9wZXJ0eU5hbWVPclJvd0lEPzogc3RyaW5nLCByb3dJZD86IHN0cmluZykgOiBhbnlcclxuICB7XHJcbiAgICBpZihjb250cm9sSWQuaW5kZXhPZignficpPT0gLTEpXHJcbiAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21Qcm9wZXJ0eV8xKGNvbnRyb2xJZCwgcHJvcGVydHlOYW1lT3JSb3dJRCwgcm93SWQpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCAgY2lkOiBzdHJpbmcgPSBjb250cm9sSWQuc3BsaXQoJ34nKVswXTtcclxuICAgICAgbGV0ICBwcm9wTmFtZTogc3RyaW5nID0gY29udHJvbElkLnNwbGl0KCd+JylbMV07XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21Qcm9wZXJ0eV8xKGNpZCwgcHJvcE5hbWUsIHByb3BlcnR5TmFtZU9yUm93SUQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tUHJvcGVydHlfMShjb250cm9sSWQ6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcsIHJvd0lkPzogc3RyaW5nKVxyXG4gIHtcclxuICAgIGxldCB1c2VyUHJvcGVydGllcztcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChyb3dJZCkpXHJcbiAgICAgIHJvd0lkID0gJzAnO1xyXG4gICAgbGV0IHJlYyA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Rbcm93SWRdO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJlYykpXHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xNZXRhZGF0YSA9IHJlYy5nZXRDb250cm9sTWV0YWRhdGEoY29udHJvbElkKTtcclxuXHJcbiAgICAgIGlmIChjb250cm9sTWV0YWRhdGEudXNlclByb3BlcnRpZXMuaGFzKHByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgICB1c2VyUHJvcGVydGllcyA9IGNvbnRyb2xNZXRhZGF0YS51c2VyUHJvcGVydGllcy5nZXQocHJvcGVydHlOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXJQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgdmFsdWVzIG9mIHRoZSBpdGVtcyBvZiBhIHNlbGVjdGlvbiBjb250cm9sXHJcbiAgICogQHBhcmFtIGlkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICAvLyBtZ0dldEl0ZW1MaXN0VmFsdWVzXHJcbiAgZ2V0SXRlbUxpc3RWYWx1ZXMoaWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpIDogQXJyYXk8e2luZGV4OiBudW1iZXIsIGRpc3BsYXlWYWx1ZTogc3RyaW5nfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoaWQsIEh0bWxQcm9wZXJ0aWVzLkl0ZW1zTGlzdCwgcm93SWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZmlsdGVyZWQgaXRlbXMgbGlzdCBiYXNlZCBvbiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sSWQgSWQgb2YgY29udHJvbFxyXG4gICAqIEBwYXJhbSByb3dJZCBJZCBvZiByb3csIGlmIGFwcGxpY2FibGVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIGdldEZpbHRlcmVkTGlzdChjb250cm9sSWQ6IHN0cmluZywgcm93SWQ/OiBzdHJpbmcpOiBBcnJheTx7aW5kZXg6IG51bWJlciwgZGlzcGxheVZhbHVlOiBzdHJpbmd9PiB7XHJcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocm93SWQpKVxyXG4gICAgICByb3dJZCA9ICcwJztcclxuXHJcbiAgICBsZXQgaXRlbXMgPSB0aGlzLmdldEl0ZW1MaXN0VmFsdWVzKGNvbnRyb2xJZCwgcm93SWQpO1xyXG4gICAgbGV0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLnRhc2suZ2V0Rm9ybUNvbnRyb2wocm93SWQsIGNvbnRyb2xJZCkudmFsdWU7XHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IFwiXCIgJiYgaXRlbXMgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIEdldHMgdGhlIGRpc3BsYXkgdmFsdWUgb2YgdGhlIGl0ZW0gZnJvbSBpdGVtcyBvZiBhIHNlbGVjdGlvbiBjb250cm9sXHJcbiAgICogQHBhcmFtIGlkIElkIG9mIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93SWQgSWQgb2Ygcm93LCBpZiBhcHBsaWNhYmxlXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXREaXNwbGF5VmFsdWUoaWQsIHJvd0lkPykge1xyXG4gICAgbGV0IGRpc3BsYXlWYWx1ZTpzdHJpbmcgPVwiXCJcclxuXHJcbiAgICBsZXQgbyA9ICB0aGlzLmdldFByb3BlcnR5KGlkLCBIdG1sUHJvcGVydGllcy5JdGVtc0xpc3QsIHJvd0lkKTtcclxuICAgIGxldCB2YWx1ZSA9IHRoaXMudGFzay5nZXRWYWx1ZShpZCwgcm93SWQpXHJcbiAgICBpZiAodmFsdWUgPj0wICYmIHZhbHVlIDxvLmxlbmd0aCAgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKG9bdmFsdWVdKSlcclxuICAgICAgZGlzcGxheVZhbHVlID0gb1t2YWx1ZV0uZGlzcGxheVZhbHVlO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB3aGV0aGVyIGEgdGFiIHBhZ2UgaXMgc2VsZWN0ZWQgb3Igbm90XHJcbiAgICogQHBhcmFtICBpbmRleCBvZiBjdXJyZW50IG9wdGlvbiBpbiBpdGVyYXJvdHJcclxuICAgKiBAcGFyYW0gY29udHJvbCBJZCBvZiBsaXN0IGNvbnRyb2xcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqLyAvLyBpc09wdGlvblNlbGVjdGVkXHJcbiAgaXNPcHRpb25TZWxlY3RlZChpbmRleCwgY29udHJvbElkKSB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFZhbHVlKGNvbnRyb2xJZCwgXCIwXCIpO1xyXG4gICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbCkge1xyXG4gICAgICAgICAgIGlmIChpdGVtID09PSBpbmRleClcclxuICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGEgdGFiIHBhZ2UgaXMgc2VsZWN0ZWQgb3Igbm90IC0gdXNlZCBmb3IgdGhlIHRhYiBidXR0b25zXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbElkIElkIG9mIGNvbnRyb2xcclxuICAgICAqIEBwYXJhbSAgbGF5ZXIgSWQgb2YgdGhlIHRhYiBwYWdlXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovIC8vIG1nSXNUYWJQYWdlU2VsZWN0ZWRcclxuICBpc1RhYlBhZ2VTZWxlY3RlZChjb250cm9sSWQ6IHN0cmluZywgbGF5ZXI6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbCA9IHRoaXMudGFzay5nZXRQcm9wZXJ0eShjb250cm9sSWQsIEh0bWxQcm9wZXJ0aWVzLlNlbGVjdGVkVmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbCA9PSAobGF5ZXIgLSAxKTsgLy8gY29tcGFyaW5nIHN0cmluZyB0byBudW1iZXIhXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHdoZXRoZXIgYSB0YWIgcGFnZSBsYXllciBpcyBzZWxlY3RlZCBvciBub3QgLSB1c2VkIGZvciB0aGUgZGl2IHdoaWNoIHJlcHJlc2VudHMgdGhlIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHBhcmFtICBsYXllciBJZCBvZiB0aGUgdGFiIHBhZ2VcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqLyAvLyBtZ0lzVGFiTGF5ZXJTZWxlY3RlZFxyXG4gIGlzVGFiUGFnZUxheWVyU2VsZWN0ZWQoY29udHJvbElkOiBzdHJpbmcsIGxheWVyOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGxldCB2YWwgPSB0aGlzLnRhc2suZ2V0UHJvcGVydHkoY29udHJvbElkLCBIdG1sUHJvcGVydGllcy5TZWxlY3RlZExheWVyKTtcclxuICAgIHJldHVybiB2YWwgPT0gKGxheWVyIC0gMSk7IC8vIGNvbXBhcmluZyBzdHJpbmcgdG8gbnVtYmVyIVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHNlbGVjdGVkIHRhYiBwYWdlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xJZCBJZCBvZiBjb250cm9sXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBnZXRUYWJTZWxlY3RlZEluZGV4KGNvbnRyb2xJZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgdmFsID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRWYWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsOyAvLyBjb21wYXJpbmcgc3RyaW5nIHRvIG51bWJlciFcclxuICB9XHJcblxyXG5cclxuICAvLyBwcml2YXRlIG1ldGhvZGVzXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIG1nSWZSb3dDcmVhdGVkXHJcbiAgaWZSb3dDcmVhdGVkKHJvdyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvdyA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgcm93SWQgPSB0eXBlb2Ygcm93ID09IFwibnVtYmVyXCIgPyByb3cudG9TdHJpbmcoKSA6IHJvdy5yb3dJZDtcclxuICAgIGxldCByZXN1bHQgPSB0aGlzLmdldEZvcm1Hcm91cEJ5Um93KHJvd0lkKTtcclxuICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZmluZWQocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICAvLyBtZ0dldEZvcm1Hcm91cEJ5Um93XHJcbiAgZ2V0Rm9ybUdyb3VwQnlSb3coaWQ6IHN0cmluZyk6IEZvcm1Hcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy50YXNrLmZvcm1Hcm91cHNbaWRdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIGlzUm93U2VsZWN0ZWQgKG5vdCBjaGFuZ2VkKVxyXG4gIGlzUm93U2VsZWN0ZWQoY29udHJvbElkLCByb3dJZD8pIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93ID0gdGhpcy50YXNrLmdldFByb3BlcnR5KGNvbnRyb2xJZCwgSHRtbFByb3BlcnRpZXMuU2VsZWN0ZWRSb3csIFwiMFwiKTtcclxuICAgIHJldHVybiBzZWxlY3RlZFJvdyA9PSByb3dJZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHJvdyBpcyBpbiBlZGl0IHN0YXRlXHJcbiAgICogQHBhcmFtIHJvd1xyXG4gICAqL1xyXG4gIGlzUm93SW5Sb3dFZGl0aW5nKHJvdz86IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGd1aVJvd0lkIDogc3RyaW5nID0gJzAnO1xyXG4gICAgZ3VpUm93SWQ9IHR5cGVvZiByb3cgPT0gXCJudW1iZXJcIiA/IHJvdy50b1N0cmluZygpIDogcm93LnJvd0lkO1xyXG4gICAgcmV0dXJuIHRoaXMudGFzay5pc1Jvd0luUm93RWRpdGluZyhndWlSb3dJZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgd2hldGhlciBhIHJvdyBpcyBpbiBlZGl0IHN0YXRlLCB1c2UgdGhpcyBtZXRob2Qgd2hpbGUgY29udHJvbCBvdXRzaWRlIHRhYmxlIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gcm93XHJcbiAgICovXHJcbiAgaXNDdXJyZW50SW5Sb3dFZGl0aW5nKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGxldCByb3cgID0gdGhpcy50YXNrLnRhYmxlU2VydmljZS5nZXRTZWxlY3RlZFJvdygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnRhc2suaXNSb3dJblJvd0VkaXRpbmcocm93KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIC8vIEdldEd1aVRvcEluZGV4XHJcbiAgZ3VpVG9wSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2sudGFibGVTZXJ2aWNlLmdldFRhYmxlVG9wSW5kZXgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBnZXRFcnJNc2coaWQ6IHN0cmluZyxyb3dJZDogc3RyaW5nKTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IGMgPSB0aGlzLnRhc2suZ2V0Rm9ybUNvbnRyb2wocm93SWQsIGlkKTtcclxuICAgIGlmIChjLmhhc0Vycm9yKCdyZXF1aXJlZCcpKVxyXG4gICAgICByZXR1cm4gJ0NvbnRyb2wgbXVzdCBiZSB1cGRhdGVkLic7XHJcbiAgICBpZiAoYy5oYXNFcnJvcigncGF0dGVybicpKVxyXG4gICAgICByZXR1cm4gJ1JlcXVpcmVkIHBhdHRlcm4gaXMgOiAnICsgYy5lcnJvcnMucGF0dGVybi5yZXF1aXJlZFBhdHRlcm47XHJcbiAgICBpZiAoYy5oYXNFcnJvcigncmFuZ2V2YWxpZGF0b3InKSlcclxuICAgICAgcmV0dXJuIGMuZXJyb3JzLnJhbmdldmFsaWRhdG9yLmVycm9yTXNnO1xyXG4gICAgaWYgKGMuaGFzRXJyb3IoJ21heGxlbmd0aCcpKVxyXG4gICAgICByZXR1cm4gJ01heCBsZW5ndGggYWxsb3dlZCBpcyA6ICcgKyBjLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGg7XHJcbiAgICBpZiAoYy5oYXNFcnJvcignbWF4JykpXHJcbiAgICAgIHJldHVybiAnTWF4IHZhbHVlIGFsbGxvd2VkIGlzIDogJyArIGMuZXJyb3JzLm1heC5tYXg7XHJcblxyXG4gICAgbGV0IGNvbnRyb2xNZXRhZGF0YSA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Rbcm93SWRdLmdldENvbnRyb2xNZXRhZGF0YShpZCk7XHJcbiAgICBmb3IgKGxldCBrZXkgb2YgY29udHJvbE1ldGFkYXRhLmN1c3RvbVZhbGlkYXRvcnMua2V5cygpKVxyXG4gICAge1xyXG4gICAgICBpZiAoYy5oYXNFcnJvcihrZXkpKSB7XHJcbiAgICAgICAgbGV0IGN1c3RvbVZhbGlkYXRvcjogQ3VzdG9tVmFsaWRhdG9yICA9IGNvbnRyb2xNZXRhZGF0YS5jdXN0b21WYWxpZGF0b3JzLmdldChrZXkpO1xyXG4gICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0b3IuZ2V0RXJyTWVzc2FnZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICd1bmtub3duIGVycm9yJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgYSB1c2VyLXN1cHBsaWVkIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSB2YWx1ZVxyXG4gICAqIEBwYXJhbSByZWZyZXNoRGlzcGxheVxyXG4gICAqL1xyXG4gIHNldFZhbHVlVG9Db250cm9sKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHJlZnJlc2hEaXNwbGF5PzogYm9vbGVhbil7XHJcbiAgICBpZih0eXBlb2YgcmVmcmVzaERpc3BsYXkgPT09IFwidW5kZWZpbmVkXCIpXHJcbiAgICAgIHJlZnJlc2hEaXNwbGF5ID0gdHJ1ZTtcclxuICAgIGxldCBndWlFdmVudDogSUd1aUV2ZW50ID0gZ2V0R3VpRXZlbnRPYmooXCJzZXRleHRlcm5hbHZhbHVlXCIsIGNvbnRyb2xOYW1lLCAwKTtcclxuICAgIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUgPSB2YWx1ZTtcclxuICAgIGd1aUV2ZW50LnBhcmFtID0gcmVmcmVzaERpc3BsYXk7XHJcbiAgICB0aGlzLnRhc2suaW5zZXJ0RXZlbnQoZ3VpRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbiAgaXNEYXRhdmlld0VtcHR5KCkgOiBib29sZWFuIHtcclxuICAgICByZXR1cm4gdGhpcy50YXNrLlJlY29yZHMuaXNFbXB0eURhdGFWaWV3O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogc2ltdWxhdGVzIGEgY2xpY2sgZXZlbnQgb24gdGhlIHNwZWNpZmllZCBjb250cm9sLCBmb3IgdGhlIE1hZ2ljIGVuZ2luZVxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZVxyXG4gICAqIEBwYXJhbSByb3dJZFxyXG4gICAqL1xyXG4gIHNpbXVsYXRlQ2xpY2soY29udHJvbE5hbWU6IHN0cmluZywgcm93SWQ/OiBudW1iZXIpe1xyXG4gICAgaWYgKHR5cGVvZiByb3dJZCA9PT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgcm93SWQgPSAwO1xyXG4gICAgdGhpcy50YXNrLmluc2VydEV2ZW50KGdldEd1aUV2ZW50T2JqKCdjbGljaycsIGNvbnRyb2xOYW1lLCByb3dJZCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIEJvb2xlYW4gVFJVRSBpZiB1c2VyIGxvZ2dlZCBpbiBFbHNlIGl0IHdpbGwgcmV0dXJuIEZBTFNFXHJcbiAgICovXHJcbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRhc2suZ2V0SXNMb2dnZW5JbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBKUyBvYmplY3QgY29udGFpbmluZyB0aGUgcmVjb3JkcyB3aXRoIGFsbCB0YWJsZSBmaWVsZHMuXHJcbiAgICovXHJcbiAgR2V0Rm9ybVJlY29yZHMoKTogYW55IHtcclxuICAgIGxldCByb3dJZDogbnVtYmVyID0gMDtcclxuICAgIGxldCByZWNBcnJheTogYW55O1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQodGhpcy50YXNrLlJlY29yZHMpICYmIHRoaXMudGFzay5SZWNvcmRzLmxpc3QubGVuZ3RoID4gMCApIHtcclxuICAgICAgbGV0IHJlY0xpc3Q6IENvbnRyb2xzTWV0YWRhdGFbXSA9IHRoaXMudGFzay5SZWNvcmRzLmxpc3Q7XHJcbiAgICAgIGxldCB0YWJsZUNvbnRyb2xzOiBzdHJpbmdbXSA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgLy9HZW5lcmF0ZSBsaXN0IG9mIHRhYmxlIGZpZWxkcyBuYW1lc1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLnRhc2sudGVtcGxhdGUpIHtcclxuICAgICAgICBpZiAodGhpcy50YXNrLnRlbXBsYXRlW2tleV0gPT0gJzEnKVxyXG4gICAgICAgICAgdGFibGVDb250cm9scy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlY0FycmF5ID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgICAvL1VwZGF0ZSB0aGUgcmVjb3JkcyBhcyBsaXN0IG9mIG9iamVjdHMgd2l0aCB2YWx1ZXMgZm9yIHRhYmxlIGZpZWxkcy5cclxuICAgICAgaWYgKHRhYmxlQ29udHJvbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlY0xpc3QuZm9yRWFjaCgoY3RybE1ldGFEYXRhOiBDb250cm9sc01ldGFkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50YXNrLlJlY29yZHMuaXNSb3dDcmVhdGVkKHJvd0lkKSkge1xyXG4gICAgICAgICAgICB2YXIgZm9ybVJlY29yZCA9IHt9O1xyXG4gICAgICAgICAgICBmb3JtUmVjb3JkWydyb3dJZCddID0gcm93SWQ7XHJcbiAgICAgICAgICAgIHRhYmxlQ29udHJvbHMuZm9yRWFjaCgoY3RybElkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBmb3JtUmVjb3JkW2N0cmxJZF0gPSBjdHJsTWV0YURhdGEudmFsdWVzW2N0cmxJZF07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmVjQXJyYXkucHVzaChmb3JtUmVjb3JkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlY0FycmF5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0Q29va2llIDogc2V0IHRoZSBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBhbmQgdmFsdWUgIGluIGJyb3dzZXJcclxuICAgKiBleHBpcmVzIC0gZXhwaXJhdGlvbiB0aW1lXHJcbiAgICogcGF0aCAtIHBhdGggd2hpY2ggbXVjaCBleGlzdHMgaW4gb3JkZXIgc28gdGhhdCBjb29raWUgaXMgc2VudCBhcyBoZWFkZXJcclxuICAgKiBkb21haW4gLSBzcGVjaWZpZXMgd2hpY2ggaG9zdHMgYXJlIGFsbG93ZWQgdG8gcmVjZWl2ZSB0aGUgY29va2llXHJcbiAgICogc2VjdXJlIC0gc3BlY2lmaWVzIGlmIGNvb2tpZSBpcyBzZWN1cmUgKCB3b3JrcyBvbmx5IHdpdGggSFRUUFMpXHJcbiAgICogc2FtZVNpdGUgLSBsZXRzIHNlcnZlcnMgc3BlY2lmeSB3aGV0aGVyL3doZW4gY29va2llcyBhcmUgc2VudCB3aXRoIGNyb3NzLXNpdGUgcmVxdWVzdHNcclxuICAgKi9cclxuICBTZXRDb29raWUobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBleHBpcmVzPzogRGF0ZSwgcGF0aD8gLCBkb21haW4/ICwgc2VjdXJlPywgc2FtZVNpdGUgPykge1xyXG4gICAgQ29va2llU2VydmljZS5zZXRDb29raWUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRDb29raWUgOiBnZXQgdGhlIGNvb2tpZSB3aXRoIHNwZWNpZmllZCBuYW1lIGFuZCB2YWx1ZSAgaW4gYnJvd3NlclxyXG4gICAqL1xyXG4gIEdldENvb2tpZShuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIENvb2tpZVNlcnZpY2UuZ2V0Q29va2llKG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlQ29va2llIDogZGVsZXRlcyB0aGUgY29va2llXHJcbiAgICovXHJcbiAgRGVsZXRlQ29va2llKG5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4gQ29va2llU2VydmljZS5kZWxldGVDb29raWUobmFtZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export class ComponentListMagicService {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.components = new Map();
|
|
4
|
-
this.dialogs = new Map();
|
|
5
|
-
this.lazyLoadModulesMap = null;
|
|
6
|
-
}
|
|
7
|
-
getData(name, mustHaveData) {
|
|
8
|
-
let data = null;
|
|
9
|
-
let haveData = this.components.has(name);
|
|
10
|
-
if (!haveData && mustHaveData) {
|
|
11
|
-
console.log("Error: Component: " + name + " does not exist in components map");
|
|
12
|
-
}
|
|
13
|
-
if (haveData)
|
|
14
|
-
data = this.components.get(name);
|
|
15
|
-
return data;
|
|
16
|
-
}
|
|
17
|
-
getComponent(name, mustHaveData = true) {
|
|
18
|
-
let data = this.getData(name, mustHaveData);
|
|
19
|
-
return data ? data.component : null;
|
|
20
|
-
}
|
|
21
|
-
addComponents(componentList, modulRef) {
|
|
22
|
-
for (let key in componentList) {
|
|
23
|
-
let data = { moduleRef: modulRef, component: componentList[key] };
|
|
24
|
-
this.components.set(key, data);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
getModuleRef(name) {
|
|
28
|
-
let data = this.getData(name, false);
|
|
29
|
-
return data ? data.moduleRef : null;
|
|
30
|
-
;
|
|
31
|
-
}
|
|
32
|
-
getLazyLoadModuleData(name) {
|
|
33
|
-
return (this.lazyLoadModulesMap != null && this.lazyLoadModulesMap.hasOwnProperty(name)) ? this.lazyLoadModulesMap[name] : null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWxpc3QubWFnaWMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3NlcnZpY2VzL2NvbXBvbmVudC1saXN0Lm1hZ2ljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sT0FBTyx5QkFBeUI7SUFBdEM7UUFLRSxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7UUFJN0MsWUFBTyxHQUFNLElBQUksR0FBRyxFQUFjLENBQUM7UUFFbkMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO0lBeUQ1QixDQUFDO0lBdkRDLE9BQU8sQ0FBQyxJQUFXLEVBQUcsWUFBcUI7UUFDekMsSUFBSSxJQUFJLEdBQWlCLElBQUksQ0FBQztRQUU5QixJQUFJLFFBQVEsR0FBWSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxJQUFJLFlBQVksRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLElBQUksR0FBRyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsSUFBSSxRQUFRO1lBQ1YsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRWxDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELFlBQVksQ0FBQyxJQUFXLEVBQUUsZUFBdUIsSUFBSTtRQUNuRCxJQUFJLElBQUksR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDMUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLGFBQWlCLEVBQUcsUUFBMEI7UUFDM0QsS0FBSSxJQUFJLEdBQUcsSUFBSSxhQUFhLEVBQUM7WUFDM0IsSUFBSSxJQUFJLEdBQWtCLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQU9ELFlBQVksQ0FBRSxJQUFXO1FBQ3ZCLElBQUksSUFBSSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNuRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQUEsQ0FBQztJQUN2QyxDQUFDO0lBT0QscUJBQXFCLENBQUUsSUFBVztRQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xJLENBQUM7Q0FNRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcclxuICBjb21wb25lbnQ6YW55O1xyXG4gIG1vZHVsZVJlZjpOZ01vZHVsZVJlZjxhbnk+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZURhdGEge1xyXG4gIG1vZHVsZU5hbWU6IHN0cmluZztcclxuICBtb2R1bGVQYXRoOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgaW4gYSBwcm9qZWN0LCBhbmQgdGhlIHByb2plY3QgdGl0bGVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRMaXN0TWFnaWNTZXJ2aWNle1xyXG5cclxuICAvKipcclxuICAgKiBNYXAgb2YgcHJvamVjdCBjb21wb25lbnRzXHJcbiAgICovXHJcbiAgY29tcG9uZW50cyA9IG5ldyBNYXA8c3RyaW5nLENvbXBvbmVudERhdGE+KCk7XHJcbiAgLyoqXHJcbiAgICogTWFwIG9mIHByb2plY3QgZGlhbG9nc1xyXG4gICAqL1xyXG4gIGRpYWxvZ3MgICAgPSBuZXcgTWFwPHN0cmluZyxhbnk+KCk7XHJcblxyXG4gIGxhenlMb2FkTW9kdWxlc01hcCA9IG51bGw7XHJcblxyXG4gIGdldERhdGEobmFtZTpzdHJpbmcsICBtdXN0SGF2ZURhdGE6IGJvb2xlYW4pe1xyXG4gICAgbGV0IGRhdGEgOkNvbXBvbmVudERhdGE9IG51bGw7XHJcblxyXG4gICAgbGV0IGhhdmVEYXRhOiBib29sZWFuICA9dGhpcy5jb21wb25lbnRzLmhhcyhuYW1lKTtcclxuICAgIGlmICghaGF2ZURhdGEgJiYgbXVzdEhhdmVEYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3I6IENvbXBvbmVudDogXCIgKyBuYW1lICsgXCIgZG9lcyBub3QgZXhpc3QgaW4gY29tcG9uZW50cyBtYXBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGhhdmVEYXRhKVxyXG4gICAgICBkYXRhID0gdGhpcy5jb21wb25lbnRzLmdldChuYW1lKVxyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gbmFtZVxyXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgcmVxdWVzdGVkIGNvbXBvbmVudFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXF1ZXN0ZWQgY29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q29tcG9uZW50KG5hbWU6c3RyaW5nLCBtdXN0SGF2ZURhdGE6Ym9vbGVhbiA9IHRydWUpe1xyXG4gICAgbGV0IGRhdGE6IENvbXBvbmVudERhdGEgPSB0aGlzLmdldERhdGEobmFtZSwgbXVzdEhhdmVEYXRhKVxyXG4gICAgcmV0dXJuIGRhdGEgPyBkYXRhLmNvbXBvbmVudCA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBhZGRDb21wb25lbnRzKGNvbXBvbmVudExpc3Q6YW55ICwgbW9kdWxSZWY/Ok5nTW9kdWxlUmVmPGFueT4pe1xyXG4gICBmb3IobGV0IGtleSBpbiBjb21wb25lbnRMaXN0KXtcclxuICAgICBsZXQgZGF0YSA6Q29tcG9uZW50RGF0YSA9IHttb2R1bGVSZWY6bW9kdWxSZWYsIGNvbXBvbmVudDpjb21wb25lbnRMaXN0W2tleV19O1xyXG4gICAgIHRoaXMuY29tcG9uZW50cy5zZXQoa2V5LGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBSZXR1cm4gYSBjb21wb25lbnQgYWNjb3JkaW5nIHRvIG5hbWVcclxuICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgcmVxdWVzdGVkIGNvbXBvbmVudFxyXG4gICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb21wb25lbnRcclxuICAqL1xyXG4gIGdldE1vZHVsZVJlZiAobmFtZTpzdHJpbmcpe1xyXG4gICAgbGV0IGRhdGE6IENvbXBvbmVudERhdGEgPSB0aGlzLmdldERhdGEobmFtZSwgZmFsc2UpXHJcbiAgICByZXR1cm4gZGF0YSA/IGRhdGEubW9kdWxlUmVmIDogbnVsbDs7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGxhenkgbG9hZCBtb2R1bGUgZGV0YWlscyBvZiB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudFxyXG4gICAqIEBwYXJhbSBuYW1lOiBOYW1lIG9mIHJlcXVlc3RlZCBjb21wb25lbnRcclxuICAgKiBAcmV0dXJuczogbGF6eSBsb2FkIG1vZHVsZSBkZXRhaWxzXHJcbiAgICovXHJcbiAgZ2V0TGF6eUxvYWRNb2R1bGVEYXRhIChuYW1lOnN0cmluZyk6IE1vZHVsZURhdGEge1xyXG4gICAgcmV0dXJuICh0aGlzLmxhenlMb2FkTW9kdWxlc01hcCAhPSBudWxsICYmIHRoaXMubGF6eUxvYWRNb2R1bGVzTWFwLmhhc093blByb3BlcnR5KG5hbWUpKSA/IHRoaXMubGF6eUxvYWRNb2R1bGVzTWFwW25hbWVdIDogbnVsbDtcclxuICB9XHJcblxyXG4vKipcclxuICAgKiBQcm9qZWN0IHRpdGxlXHJcbiAgICovXHJcbiAgdGl0bGUgOiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from "@angular/core";
|
|
3
|
-
import { Subject } from "rxjs";
|
|
4
|
-
import { MagicBridge } from "@magic-xpa/engine";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class EngineMagicService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.magicBridge = MagicBridge;
|
|
9
|
-
this.isStub = false;
|
|
10
|
-
this.isLoggedIn = false;
|
|
11
|
-
this.refreshDom = new Subject();
|
|
12
|
-
this.interactiveCommands = new Subject();
|
|
13
|
-
}
|
|
14
|
-
startMagicEngine(httpClient) {
|
|
15
|
-
this.magicBridge.registerExecuteCommandsCallback(data => {
|
|
16
|
-
if (!this.isStub) {
|
|
17
|
-
try {
|
|
18
|
-
const list = data;
|
|
19
|
-
for (let c of list) {
|
|
20
|
-
this.refreshDom.next(c);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
console.dir(e);
|
|
25
|
-
console.log('magic engine not found');
|
|
26
|
-
console.log('moving to stub mode');
|
|
27
|
-
this.isStub = true;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
this.magicBridge.registerInteractiveCallback(data => {
|
|
32
|
-
if (!this.isStub) {
|
|
33
|
-
this.interactiveCommands.next(data);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
this.magicBridge.Initialize(httpClient);
|
|
37
|
-
}
|
|
38
|
-
terminateMagic() {
|
|
39
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
-
yield this.magicBridge.TerminateMagic();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
insertEvent(guiEvent) {
|
|
44
|
-
if (!this.isStub)
|
|
45
|
-
this.magicBridge.insertEvent(guiEvent);
|
|
46
|
-
}
|
|
47
|
-
GetRangedValue(taskId, controlName, value) {
|
|
48
|
-
return this.magicBridge.GetRangedValue(taskId, controlName, value);
|
|
49
|
-
}
|
|
50
|
-
GetControlPictureMask(taskId, controlName) {
|
|
51
|
-
return this.magicBridge.GetControlPictureMask(taskId, controlName);
|
|
52
|
-
}
|
|
53
|
-
GetFormattedValue(taskId, controlName, value) {
|
|
54
|
-
return this.magicBridge.GetFormattedValue(taskId, controlName, value);
|
|
55
|
-
}
|
|
56
|
-
ValidateControlValue(taskId, controlName, value) {
|
|
57
|
-
return this.magicBridge.ValidateControlValue(taskId, controlName, value);
|
|
58
|
-
}
|
|
59
|
-
GetFldRanges(taskId, controlName) {
|
|
60
|
-
return this.magicBridge.GetFldRanges(taskId, controlName);
|
|
61
|
-
}
|
|
62
|
-
saveData(data) {
|
|
63
|
-
}
|
|
64
|
-
getIsLoggedIn() {
|
|
65
|
-
return this.isLoggedIn;
|
|
66
|
-
}
|
|
67
|
-
setIsLoggedIn(setIsLoggedIn) {
|
|
68
|
-
this.isLoggedIn = setIsLoggedIn;
|
|
69
|
-
}
|
|
70
|
-
TransCacheExists() {
|
|
71
|
-
return this.magicBridge.TransCacheExists();
|
|
72
|
-
}
|
|
73
|
-
TerminateContextUsingFetchAPI() {
|
|
74
|
-
this.magicBridge.TerminateContextUsingFetchAPI();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
EngineMagicService.ɵfac = function EngineMagicService_Factory(t) { return new (t || EngineMagicService)(); };
|
|
78
|
-
EngineMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: EngineMagicService, factory: EngineMagicService.ɵfac });
|
|
79
|
-
(function () { i0.ɵsetClassMetadata(EngineMagicService, [{
|
|
80
|
-
type: Injectable
|
|
81
|
-
}], null, null); })();
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLm1hZ2ljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9lbmdpbmUubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBWSxXQUFXLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7QUFRekQsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVFLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGVBQVUsR0FBd0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNoRCx3QkFBbUIsR0FBNEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztLQThFOUQ7SUE1RUMsZ0JBQWdCLENBQUMsVUFBc0I7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsSUFBSTtvQkFDRixNQUFNLElBQUksR0FBRyxJQUFvQixDQUFDO29CQUNsQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTt3QkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3pCO2lCQUNGO2dCQUNELE9BQU8sQ0FBQyxFQUFFO29CQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29CQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNwQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFSyxjQUFjOztZQUNsQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsQ0FBQztLQUFBO0lBRUQsV0FBVyxDQUFDLFFBQW1CO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsS0FBYTtRQUMvRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjLEVBQUcsV0FBbUIsRUFBRSxLQUFVO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxNQUFjLEVBQUUsV0FBbUIsRUFBRSxLQUFVO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRLENBQUMsSUFBVztJQUdwQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYSxDQUFDLGFBQXNCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUNuRCxDQUFDOztvRkFwRlUsa0JBQWtCOzBEQUFsQixrQkFBa0IsV0FBbEIsa0JBQWtCO29DQUFsQixrQkFBa0I7Y0FEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHtJR3VpRXZlbnQsIE1hZ2ljQnJpZGdlfSBmcm9tIFwiQG1hZ2ljLXhwYS9lbmdpbmVcIjtcclxuaW1wb3J0IHtHdWlDb21tYW5kLCBHdWlJbnRlcmFjdGl2ZX0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRW5naW5lTWFnaWNTZXJ2aWNlIHtcclxuICBtYWdpY0JyaWRnZSA9IE1hZ2ljQnJpZGdlO1xyXG4gIGlzU3R1YiA9IGZhbHNlO1xyXG4gIC8vIHRydWUgd2hlbiB1c2VyIGlzIGxvZ2dlZCBpbiBtYWdpY1xyXG4gIGlzTG9nZ2VkSW4gPSBmYWxzZTtcclxuICAvL1RPRE8gLSB1bnJlZ2lzdGVyXHJcbiAgcmVmcmVzaERvbTogU3ViamVjdDxHdWlDb21tYW5kPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgaW50ZXJhY3RpdmVDb21tYW5kczogU3ViamVjdDxHdWlJbnRlcmFjdGl2ZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBzdGFydE1hZ2ljRW5naW5lKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpIHtcclxuICAgIHRoaXMubWFnaWNCcmlkZ2UucmVnaXN0ZXJFeGVjdXRlQ29tbWFuZHNDYWxsYmFjayhkYXRhID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzU3R1Yikge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBsaXN0ID0gZGF0YSBhcyBHdWlDb21tYW5kW107XHJcbiAgICAgICAgICBmb3IgKGxldCBjIG9mIGxpc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRG9tLm5leHQoYyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmRpcihlKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdtYWdpYyBlbmdpbmUgbm90IGZvdW5kJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnbW92aW5nIHRvIHN0dWIgbW9kZScpO1xyXG4gICAgICAgICAgdGhpcy5pc1N0dWIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5tYWdpY0JyaWRnZS5yZWdpc3RlckludGVyYWN0aXZlQ2FsbGJhY2soZGF0YSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5pc1N0dWIpIHtcclxuICAgICAgICAgIHRoaXMuaW50ZXJhY3RpdmVDb21tYW5kcy5uZXh0KGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubWFnaWNCcmlkZ2UuSW5pdGlhbGl6ZShodHRwQ2xpZW50KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHRlcm1pbmF0ZU1hZ2ljKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5tYWdpY0JyaWRnZS5UZXJtaW5hdGVNYWdpYygpO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0RXZlbnQoZ3VpRXZlbnQ6IElHdWlFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzU3R1YilcclxuICAgICAgdGhpcy5tYWdpY0JyaWRnZS5pbnNlcnRFdmVudChndWlFdmVudCk7XHJcbiAgfVxyXG5cclxuICBHZXRSYW5nZWRWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5HZXRSYW5nZWRWYWx1ZSh0YXNrSWQsIGNvbnRyb2xOYW1lLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBHZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFnaWNCcmlkZ2UuR2V0Q29udHJvbFBpY3R1cmVNYXNrKHRhc2tJZCwgY29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgR2V0Rm9ybWF0dGVkVmFsdWUodGFza0lkOiBzdHJpbmcsICBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQnJpZGdlLkdldEZvcm1hdHRlZFZhbHVlKHRhc2tJZCwgY29udHJvbE5hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm1hZ2ljQnJpZGdlLlZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZCwgY29udHJvbE5hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEdldEZsZFJhbmdlcyh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5HZXRGbGRSYW5nZXModGFza0lkLCBjb250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICBzYXZlRGF0YShkYXRhOnN0cmluZylcclxuICB7XHJcbiAgICAvL3RoaXMubWFnaWNCcmlkZ2Uuc2F2ZURhdGEoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRJc0xvZ2dlZEluKCk6Ym9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLmlzTG9nZ2VkSW47XHJcbiAgfVxyXG5cclxuICBzZXRJc0xvZ2dlZEluKHNldElzTG9nZ2VkSW46IGJvb2xlYW4pe1xyXG4gICAgdGhpcy5pc0xvZ2dlZEluID0gc2V0SXNMb2dnZWRJbjtcclxuICB9XHJcblxyXG4gIFRyYW5zQ2FjaGVFeGlzdHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWdpY0JyaWRnZS5UcmFuc0NhY2hlRXhpc3RzKCk7XHJcbiAgfVxyXG5cclxuICBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFnaWNCcmlkZ2UuVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { isNullOrUndefined } from 'util';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class RouteCommand {
|
|
5
|
-
}
|
|
6
|
-
export class RouterCommandsMagicService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.pendingRouteCommands = [];
|
|
9
|
-
}
|
|
10
|
-
AddRouteCommand(routeCommand) {
|
|
11
|
-
this.pendingRouteCommands.push(routeCommand);
|
|
12
|
-
}
|
|
13
|
-
ExecuteNextCommand() {
|
|
14
|
-
let pendingRouteCommand = this.pendingRouteCommands.shift();
|
|
15
|
-
if (!isNullOrUndefined(pendingRouteCommand)) {
|
|
16
|
-
pendingRouteCommand.callerMgSubformServiceRef.ExecuteRouteCommand(pendingRouteCommand);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
RouterCommandsMagicService.ɵfac = function RouterCommandsMagicService_Factory(t) { return new (t || RouterCommandsMagicService)(); };
|
|
21
|
-
RouterCommandsMagicService.ɵprov = i0.ɵɵdefineInjectable({ token: RouterCommandsMagicService, factory: RouterCommandsMagicService.ɵfac });
|
|
22
|
-
(function () { i0.ɵsetClassMetadata(RouterCommandsMagicService, [{
|
|
23
|
-
type: Injectable
|
|
24
|
-
}], null, null); })();
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWNvbW1hbmRzLm1hZ2ljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9zZXJ2aWNlcy9yb3V0ZXItY29tbWFuZHMubWFnaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFNekMsTUFBTSxPQUFPLFlBQVk7Q0FNeEI7QUFLRCxNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRVUseUJBQW9CLEdBQW1CLEVBQUUsQ0FBQztLQWFuRDtJQVhDLGVBQWUsQ0FBRSxZQUEwQjtRQUN6QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxtQkFBbUIsR0FBaUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQzNDLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDeEY7SUFDSCxDQUFDOztvR0FiVSwwQkFBMEI7a0VBQTFCLDBCQUEwQixXQUExQiwwQkFBMEI7b0NBQTFCLDBCQUEwQjtjQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ3V0aWwnO1xyXG5pbXBvcnQgeyBJU3ViZm9ybU1hZ2ljU2VydmljZSB9IGZyb20gJy4vSVN1YmZvcm1NYWdpY1NlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZUNvbW1hbmQge1xyXG4gIGNhbGxlck1nU3ViZm9ybVNlcnZpY2VSZWY6IElTdWJmb3JtTWFnaWNTZXJ2aWNlO1xyXG4gIHJvdXRlck91dGxldE5hbWU6IHN0cmluZztcclxuICBmb3JtTmFtZTogc3RyaW5nO1xyXG4gIHBhcmFtZXRlcnM6IGFueTtcclxuICByb3V0ZVBhcmFtczogTGlzdDxhbnk+O1xyXG59XHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSb3V0ZXJDb21tYW5kc01hZ2ljU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBwZW5kaW5nUm91dGVDb21tYW5kczogUm91dGVDb21tYW5kW10gPSBbXTtcclxuXHJcbiAgQWRkUm91dGVDb21tYW5kIChyb3V0ZUNvbW1hbmQ6IFJvdXRlQ29tbWFuZCkge1xyXG4gICAgdGhpcy5wZW5kaW5nUm91dGVDb21tYW5kcy5wdXNoKHJvdXRlQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBFeGVjdXRlTmV4dENvbW1hbmQoKSB7XHJcbiAgICBsZXQgcGVuZGluZ1JvdXRlQ29tbWFuZDogUm91dGVDb21tYW5kID0gdGhpcy5wZW5kaW5nUm91dGVDb21tYW5kcy5zaGlmdCgpO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQocGVuZGluZ1JvdXRlQ29tbWFuZCkpIHtcclxuICAgICAgcGVuZGluZ1JvdXRlQ29tbWFuZC5jYWxsZXJNZ1N1YmZvcm1TZXJ2aWNlUmVmLkV4ZWN1dGVSb3V0ZUNvbW1hbmQocGVuZGluZ1JvdXRlQ29tbWFuZCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|