@magic-xpa/gui 4.1100.0-dev4110.99 → 4.1100.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/README.md +7 -7
- package/{esm2020 → esm2022}/index.mjs +71 -71
- package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
- package/esm2022/src/Commands.mjs +184 -0
- package/esm2022/src/Events.mjs +425 -0
- package/{esm2020 → esm2022}/src/EventsProcessor.mjs +66 -66
- package/{esm2020 → esm2022}/src/FocusManager.mjs +33 -33
- package/esm2022/src/GuiConstants.mjs +68 -0
- package/{esm2020 → esm2022}/src/GuiEnums.mjs +301 -300
- package/esm2022/src/GuiEnvironment.mjs +4 -0
- package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
- package/esm2022/src/Manager.mjs +91 -0
- package/esm2022/src/UIBridge.mjs +33 -0
- package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
- package/esm2022/src/gui/GuiMgControl.mjs +123 -0
- package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
- package/esm2022/src/gui/KeyboardItem.mjs +135 -0
- package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
- package/esm2022/src/gui/MgValue.mjs +16 -0
- package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
- package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
- package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
- package/esm2022/src/gui/low/GuiInteractive.mjs +178 -0
- package/esm2022/src/gui/low/Style.mjs +20 -0
- package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
- package/esm2022/src/management/data/BlobType.mjs +281 -0
- package/esm2022/src/management/data/DcValues.mjs +214 -0
- package/{esm2020 → esm2022}/src/management/data/DcValuesBuilderBase.mjs +95 -95
- package/esm2022/src/management/data/FieldDef.mjs +331 -0
- package/{esm2020 → esm2022}/src/management/data/FieldsTable.mjs +54 -54
- package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
- package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
- package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
- package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
- package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
- package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
- package/{esm2020 → esm2022}/src/management/data/RecordUtils.mjs +360 -360
- package/esm2022/src/management/data/VectorType.mjs +612 -0
- package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
- package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
- package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
- package/esm2022/src/management/exp/GuiExpressionEvaluator.mjs +305 -0
- package/esm2022/src/management/gui/ControlTable.mjs +118 -0
- package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
- package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
- package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
- package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
- package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
- package/esm2022/src/management/gui/Helps.mjs +237 -0
- package/esm2022/src/management/gui/MgControlBase.mjs +1869 -0
- package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
- package/esm2022/src/management/gui/PIC.mjs +1185 -0
- package/{esm2020 → esm2022}/src/management/gui/PropDefaults.mjs +229 -229
- package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +246 -245
- package/esm2022/src/management/gui/PropTable.mjs +221 -0
- package/esm2022/src/management/gui/Property.mjs +1362 -0
- package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
- package/{esm2020 → esm2022}/src/management/gui/ValidationDetailsBase.mjs +93 -93
- package/{esm2020 → esm2022}/src/management/gui/WrongFormatException.mjs +29 -29
- package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
- package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
- package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
- package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
- package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
- package/{esm2020 → esm2022}/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -41
- package/{esm2020 → esm2022}/src/util/MemoryUtil.mjs +34 -34
- package/esm2022/src/util/ObjectReference.mjs +36 -0
- package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
- package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16086 -16095
- package/fesm2022/magic-xpa-gui.mjs.map +1 -0
- package/index.d.ts +70 -70
- package/package.json +6 -12
- package/src/Commands.d.ts +40 -40
- package/src/Events.d.ts +157 -155
- package/src/EventsProcessor.d.ts +13 -13
- package/src/FocusManager.d.ts +8 -8
- package/src/GuiConstants.d.ts +65 -65
- package/src/GuiEnums.d.ts +283 -282
- package/src/GuiEnvironment.d.ts +4 -4
- package/src/IFlowMonitorQueue.d.ts +3 -3
- package/src/Manager.d.ts +26 -26
- package/src/UIBridge.d.ts +16 -16
- package/src/env/IEnvironment.d.ts +31 -31
- package/src/gui/ControlBase.d.ts +4 -4
- package/src/gui/GuiMgControl.d.ts +38 -38
- package/src/gui/GuiMgForm.d.ts +3 -3
- package/src/gui/KeyboardItem.d.ts +18 -18
- package/src/gui/LastFocusedVal.d.ts +7 -7
- package/src/gui/MgValue.d.ts +15 -15
- package/src/gui/PropParentInterface.d.ts +13 -13
- package/src/gui/low/DialogHandler.d.ts +4 -4
- package/src/gui/low/GuiCommand.d.ts +37 -37
- package/src/gui/low/GuiCommandQueue.d.ts +13 -13
- package/src/gui/low/GuiInteractive.d.ts +55 -55
- package/src/gui/low/Style.d.ts +19 -19
- package/src/management/RuntimeContextBase.d.ts +23 -23
- package/src/management/data/BlobType.d.ts +29 -29
- package/src/management/data/DcValues.d.ts +33 -33
- package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
- package/src/management/data/FieldDef.d.ts +53 -53
- package/src/management/data/FieldsTable.d.ts +16 -16
- package/src/management/data/GuiDataViewBase.d.ts +27 -27
- package/src/management/data/GuiFieldBase.d.ts +17 -17
- package/src/management/data/IRecord.d.ts +12 -12
- package/src/management/data/IReferencedObject.d.ts +5 -5
- package/src/management/data/NUM_TYPE.d.ts +103 -103
- package/src/management/data/ObjectReferenceBase.d.ts +16 -16
- package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
- package/src/management/data/RecordUtils.d.ts +21 -21
- package/src/management/data/VectorType.d.ts +52 -52
- package/src/management/data/VectorTypeBase.d.ts +8 -8
- package/src/management/events/IActionManager.d.ts +7 -7
- package/src/management/events/IGuiEventsManager.d.ts +20 -20
- package/src/management/exp/ExpressionInterface.d.ts +242 -242
- package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
- package/src/management/gui/ControlTable.d.ts +28 -28
- package/src/management/gui/DisplayConvertor.d.ts +103 -103
- package/src/management/gui/FieldValidator.d.ts +35 -35
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
- package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
- package/src/management/gui/HebrewDate.d.ts +46 -46
- package/src/management/gui/Helps.d.ts +51 -51
- package/src/management/gui/MgControlBase.d.ts +225 -223
- package/src/management/gui/MgFormBase.d.ts +160 -160
- package/src/management/gui/PIC.d.ts +108 -108
- package/src/management/gui/PropDefaults.d.ts +7 -7
- package/src/management/gui/PropInterface.d.ts +244 -243
- package/src/management/gui/PropTable.d.ts +33 -33
- package/src/management/gui/Property.d.ts +121 -121
- package/src/management/gui/ValidationDetails.d.ts +52 -52
- package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
- package/src/management/gui/WrongFormatException.d.ts +9 -9
- package/src/management/tasks/GuiDataCollection.d.ts +4 -4
- package/src/management/tasks/GuiTaskBase.d.ts +150 -150
- package/src/management/tasks/IMGDataTable.d.ts +10 -10
- package/src/management/tasks/ITask.d.ts +6 -6
- package/src/management/tasks/MgTimer.d.ts +8 -8
- package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
- package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
- package/src/util/MemoryUtil.d.ts +6 -6
- package/src/util/ObjectReference.d.ts +9 -9
- package/src/util/UsernamePasswordCredentials.d.ts +18 -18
- package/esm2020/src/Commands.mjs +0 -184
- package/esm2020/src/Events.mjs +0 -420
- package/esm2020/src/GuiConstants.mjs +0 -68
- package/esm2020/src/GuiEnvironment.mjs +0 -4
- package/esm2020/src/Manager.mjs +0 -91
- package/esm2020/src/UIBridge.mjs +0 -32
- package/esm2020/src/gui/GuiMgControl.mjs +0 -125
- package/esm2020/src/gui/KeyboardItem.mjs +0 -135
- package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
- package/esm2020/src/gui/MgValue.mjs +0 -16
- package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
- package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
- package/esm2020/src/gui/low/GuiInteractive.mjs +0 -176
- package/esm2020/src/gui/low/Style.mjs +0 -20
- package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
- package/esm2020/src/management/data/BlobType.mjs +0 -281
- package/esm2020/src/management/data/DcValues.mjs +0 -214
- package/esm2020/src/management/data/FieldDef.mjs +0 -331
- package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
- package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
- package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
- package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
- package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
- package/esm2020/src/management/data/VectorType.mjs +0 -612
- package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
- package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
- package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +0 -307
- package/esm2020/src/management/gui/ControlTable.mjs +0 -118
- package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
- package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
- package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
- package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
- package/esm2020/src/management/gui/Helps.mjs +0 -237
- package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
- package/esm2020/src/management/gui/MgFormBase.mjs +0 -741
- package/esm2020/src/management/gui/PIC.mjs +0 -1185
- package/esm2020/src/management/gui/PropTable.mjs +0 -221
- package/esm2020/src/management/gui/Property.mjs +0 -1356
- package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
- package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
- package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
- package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
- package/esm2020/src/util/ObjectReference.mjs +0 -36
- package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
- package/fesm2015/magic-xpa-gui.mjs +0 -16391
- package/fesm2015/magic-xpa-gui.mjs.map +0 -1
- package/fesm2020/magic-xpa-gui.mjs.map +0 -1
|
@@ -1,230 +1,230 @@
|
|
|
1
|
-
import { Debug, NString, RefParam } from "@magic-xpa/mscorelib";
|
|
2
|
-
import { ListboxSelectionMode, MgControlType, StorageAttribute, TransMode } from "@magic-xpa/utils";
|
|
3
|
-
import { PIC } from "./PIC";
|
|
4
|
-
import { DisplayConvertor } from "./DisplayConvertor";
|
|
5
|
-
import { BlobType } from "../data/BlobType";
|
|
6
|
-
import { PropInterface } from "./PropInterface";
|
|
7
|
-
import { GuiConstants } from "../../GuiConstants";
|
|
8
|
-
export class PropDefaults {
|
|
9
|
-
static getNumericMgValue(propParent, Value) {
|
|
10
|
-
let pic = new PIC("3", StorageAttribute.NUMERIC, propParent.getCompIdx());
|
|
11
|
-
return DisplayConvertor.Instance.disp2mg(Value, pic, propParent.getCompIdx(), BlobType.CONTENT_TYPE_UNKNOWN);
|
|
12
|
-
}
|
|
13
|
-
static getDefaultValueForTask(propId, handled) {
|
|
14
|
-
let val = null;
|
|
15
|
-
handled.value = true;
|
|
16
|
-
switch (propId) {
|
|
17
|
-
case PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_EVENTS:
|
|
18
|
-
case PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY:
|
|
19
|
-
case PropInterface.PROP_TYPE_PRINT_DATA:
|
|
20
|
-
case PropInterface.PROP_TYPE_ALLOW_RANGE:
|
|
21
|
-
case PropInterface.PROP_TYPE_ALLOW_LOCATE:
|
|
22
|
-
case PropInterface.PROP_TYPE_ALLOW_SORT:
|
|
23
|
-
case PropInterface.PROP_TYPE_PRELOAD_VIEW:
|
|
24
|
-
case PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_INDEX:
|
|
25
|
-
val = "1";
|
|
26
|
-
break;
|
|
27
|
-
case PropInterface.PROP_TYPE_CLOSE_TASKS_BY_MDI_MENU:
|
|
28
|
-
val = "0";
|
|
29
|
-
break;
|
|
30
|
-
default:
|
|
31
|
-
handled.value = false;
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
return val;
|
|
35
|
-
}
|
|
36
|
-
static getDefaultValue(propId, parentType, propParent) {
|
|
37
|
-
let val = null;
|
|
38
|
-
let control = null;
|
|
39
|
-
if (parentType === GuiConstants.PARENT_TYPE_TASK) {
|
|
40
|
-
let handled = new RefParam(false);
|
|
41
|
-
val = this.getDefaultValueForTask(propId, handled);
|
|
42
|
-
if (handled.value)
|
|
43
|
-
return val;
|
|
44
|
-
}
|
|
45
|
-
switch (propId) {
|
|
46
|
-
case PropInterface.PROP_TYPE_COLOR:
|
|
47
|
-
val = this.getNumericMgValue(propParent, "1");
|
|
48
|
-
if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
|
|
49
|
-
control = propParent;
|
|
50
|
-
if (control.Type === MgControlType.CTRL_TYPE_BUTTON && control.IsImageButton())
|
|
51
|
-
val = this.getNumericMgValue(propParent, "0");
|
|
52
|
-
}
|
|
53
|
-
break;
|
|
54
|
-
case PropInterface.PROP_TYPE_BORDER:
|
|
55
|
-
val = "0";
|
|
56
|
-
if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
|
|
57
|
-
control = propParent;
|
|
58
|
-
switch (control.Type) {
|
|
59
|
-
case MgControlType.CTRL_TYPE_SUBFORM:
|
|
60
|
-
val = "0";
|
|
61
|
-
break;
|
|
62
|
-
case MgControlType.CTRL_TYPE_TEXT:
|
|
63
|
-
case MgControlType.CTRL_TYPE_TABLE:
|
|
64
|
-
case MgControlType.CTRL_TYPE_LIST:
|
|
65
|
-
case MgControlType.CTRL_TYPE_BROWSER:
|
|
66
|
-
val = "1";
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
case PropInterface.PROP_TYPE_MAXBOX:
|
|
72
|
-
case PropInterface.PROP_TYPE_MINBOX:
|
|
73
|
-
case PropInterface.PROP_TYPE_MUST_INPUT:
|
|
74
|
-
case PropInterface.PROP_TYPE_MULTILINE:
|
|
75
|
-
case PropInterface.PROP_TYPE_PASSWORD:
|
|
76
|
-
case PropInterface.PROP_TYPE_HEBREW:
|
|
77
|
-
case PropInterface.PROP_TYPE_MULTILINE_VERTICAL_SCROLL:
|
|
78
|
-
case PropInterface.PROP_TYPE_MULTILINE_ALLOW_CR:
|
|
79
|
-
case PropInterface.PROP_TYPE_IS_CACHED:
|
|
80
|
-
case PropInterface.PROP_TYPE_MODIFY_IN_QUERY:
|
|
81
|
-
case PropInterface.PROP_TYPE_SHOW_FULL_ROW:
|
|
82
|
-
case PropInterface.PROP_TYPE_TRACK_SELECTION:
|
|
83
|
-
case PropInterface.PROP_TYPE_COLUMN_DIVIDER:
|
|
84
|
-
case PropInterface.PROP_TYPE_LINE_DIVIDER:
|
|
85
|
-
case PropInterface.PROP_TYPE_THREE_STATES:
|
|
86
|
-
case PropInterface.PROP_TYPE_REFRESH_WHEN_HIDDEN:
|
|
87
|
-
case PropInterface.PROP_TYPE_RETAIN_FOCUS:
|
|
88
|
-
case PropInterface.PROP_TYPE_ROW_PLACEMENT:
|
|
89
|
-
case PropInterface.PROP_TYPE_SHOW_IN_WINDOW_MENU:
|
|
90
|
-
case PropInterface.PROP_TYPE_DATAVIEWCONTROL:
|
|
91
|
-
case PropInterface.PROP_TYPE_SORT_COLUMN:
|
|
92
|
-
case PropInterface.PROP_TYPE_BEFORE_900_VERSION:
|
|
93
|
-
case PropInterface.PROP_TYPE_FILL_WIDTH:
|
|
94
|
-
case PropInterface.PROP_TYPE_MULTI_COLUMN_DISPLAY:
|
|
95
|
-
case PropInterface.PROP_TYPE_AUTO_COMPLETE_MODE_WC:
|
|
96
|
-
val = "0";
|
|
97
|
-
break;
|
|
98
|
-
case PropInterface.PROP_TYPE_SYSTEM_MENU:
|
|
99
|
-
case PropInterface.PROP_TYPE_TITLE_BAR:
|
|
100
|
-
case PropInterface.PROP_TYPE_ENABLED:
|
|
101
|
-
case PropInterface.PROP_TYPE_VISIBLE:
|
|
102
|
-
case PropInterface.PROP_TYPE_TAB_IN:
|
|
103
|
-
case PropInterface.PROP_TYPE_MODIFIABLE:
|
|
104
|
-
case PropInterface.PROP_TYPE_HIGHLIGHTING:
|
|
105
|
-
case PropInterface.PROP_TYPE_AUTO_REFRESH:
|
|
106
|
-
case PropInterface.PROP_TYPE_PARK_ON_CLICK:
|
|
107
|
-
case PropInterface.PROP_TYPE_DISPLAY_MENU:
|
|
108
|
-
case PropInterface.PROP_TYPE_DISPLAY_TOOLBAR:
|
|
109
|
-
case PropInterface.PROP_TYPE_SHOW_BUTTONS:
|
|
110
|
-
case PropInterface.PROP_TYPE_LINES_AT_ROOT:
|
|
111
|
-
case PropInterface.PROP_TYPE_SCROLL_BAR:
|
|
112
|
-
case PropInterface.PROP_TYPE_SHOW_LINES:
|
|
113
|
-
case PropInterface.PROP_TYPE_ALLOW_QUERY:
|
|
114
|
-
case PropInterface.PROP_TYPE_RIGHT_BORDER:
|
|
115
|
-
case PropInterface.PROP_TYPE_TOP_BORDER:
|
|
116
|
-
case PropInterface.PROP_TYPE_TOP_BORDER_MARGIN:
|
|
117
|
-
case PropInterface.PROP_TYPE_SHOW_ELLIPISIS:
|
|
118
|
-
val = "1";
|
|
119
|
-
break;
|
|
120
|
-
case PropInterface.PROP_TYPE_TRIGGER:
|
|
121
|
-
case PropInterface.PROP_TYPE_PROMPT:
|
|
122
|
-
case PropInterface.PROP_TYPE_DISPLAY_LIST:
|
|
123
|
-
case PropInterface.PROP_TYPE_DATA:
|
|
124
|
-
case PropInterface.PROP_TYPE_IMAGE_FILENAME:
|
|
125
|
-
case PropInterface.PROP_TYPE_LABEL:
|
|
126
|
-
case PropInterface.PROP_TYPE_PLACEMENT:
|
|
127
|
-
case PropInterface.PROP_TYPE_PULLDOWN_MENU:
|
|
128
|
-
case PropInterface.PROP_TYPE_CONTEXT_MENU:
|
|
129
|
-
case PropInterface.PROP_TYPE_NODE_ID:
|
|
130
|
-
case PropInterface.PROP_TYPE_NODE_PARENTID:
|
|
131
|
-
case PropInterface.PROP_TYPE_SELECT_PROGRAM:
|
|
132
|
-
case PropInterface.PROP_TYPE_VISIBLE_LAYERS_LIST:
|
|
133
|
-
case PropInterface.PROP_TYPE_EXPANDED_IMAGEIDX:
|
|
134
|
-
case PropInterface.PROP_TYPE_COLLAPSED_IMAGEIDX:
|
|
135
|
-
case PropInterface.PROP_TYPE_OBJECT_TYPE:
|
|
136
|
-
case PropInterface.PROP_TYPE_TAB_ORDER:
|
|
137
|
-
case PropInterface.PROP_TYPE_LOAD_IMAGE_FROM:
|
|
138
|
-
case PropInterface.PROP_TYPE_FORM_NAME:
|
|
139
|
-
case PropInterface.PROP_TYPE_COLUMN_TITLE:
|
|
140
|
-
case PropInterface.PROP_TYPE_WIDTH:
|
|
141
|
-
case PropInterface.PROP_TYPE_PRGTSK_NUM:
|
|
142
|
-
break;
|
|
143
|
-
case PropInterface.PROP_TYPE_MULTILINE_WORDWRAP_SCROLL:
|
|
144
|
-
case PropInterface.PROP_TYPE_BORDER_STYLE:
|
|
145
|
-
val = this.getNumericMgValue(propParent, "2");
|
|
146
|
-
break;
|
|
147
|
-
case PropInterface.PROP_TYPE_WINDOW_TYPE:
|
|
148
|
-
val = this.getNumericMgValue(propParent, "6");
|
|
149
|
-
break;
|
|
150
|
-
case PropInterface.PROP_TYPE_ROW_HIGHLIGHT_STYLE:
|
|
151
|
-
val = this.getNumericMgValue(propParent, "4");
|
|
152
|
-
break;
|
|
153
|
-
case PropInterface.PROP_TYPE_GRADIENT_STYLE:
|
|
154
|
-
case PropInterface.PROP_TYPE_TABBING_ORDER:
|
|
155
|
-
case PropInterface.PROP_TYPE_STARTUP_MODE:
|
|
156
|
-
case PropInterface.PROP_TYPE_CHOICE_COLUMNS:
|
|
157
|
-
case PropInterface.PROP_TYPE_HORIZONTAL_ALIGNMENT:
|
|
158
|
-
case PropInterface.PROP_TYPE_FONT:
|
|
159
|
-
case PropInterface.PROP_TYPE_WALLPAPER_STYLE:
|
|
160
|
-
case PropInterface.PROP_TYPE_CHECKBOX_MAIN_STYLE:
|
|
161
|
-
case PropInterface.PROP_TYPE_TAB_CONTROL_SIDE:
|
|
162
|
-
case PropInterface.PROP_TYPE_RAISE_AT:
|
|
163
|
-
case PropInterface.PROP_TYPE_ALLOWED_DIRECTION:
|
|
164
|
-
case PropInterface.PROP_TYPE_SUBFORM_TYPE:
|
|
165
|
-
case PropInterface.PROP_TYPE_UOM:
|
|
166
|
-
case PropInterface.PROP_TYPE_BOTTOM_POSITION_INTERVAL:
|
|
167
|
-
val = this.getNumericMgValue(propParent, "1");
|
|
168
|
-
break;
|
|
169
|
-
case PropInterface.PROP_TYPE_TASK_PROPERTIES_TRANSACTION_MODE:
|
|
170
|
-
val = TransMode.Physical;
|
|
171
|
-
break;
|
|
172
|
-
case PropInterface.PROP_TYPE_PARKED_COLLAPSED_IMAGEIDX:
|
|
173
|
-
case PropInterface.PROP_TYPE_PARKED_IMAGEIDX:
|
|
174
|
-
case PropInterface.PROP_TYPE_MINIMUM_HEIGHT:
|
|
175
|
-
case PropInterface.PROP_TYPE_TOP:
|
|
176
|
-
case PropInterface.PROP_TYPE_LEFT:
|
|
177
|
-
case PropInterface.PROP_TYPE_TITLE_HEIGHT:
|
|
178
|
-
case PropInterface.PROP_TYPE_LAYER:
|
|
179
|
-
case PropInterface.PROP_TYPE_VISIBLE_LINES:
|
|
180
|
-
case PropInterface.PROP_TYPE_FRAMESET_STYLE:
|
|
181
|
-
case PropInterface.PROP_TYPE_TRANSLATOR:
|
|
182
|
-
case PropInterface.PROP_TYPE_HOR_FAC:
|
|
183
|
-
case PropInterface.PROP_TYPE_VER_FAC:
|
|
184
|
-
case PropInterface.PROP_TYPE_FOCUS_COLOR:
|
|
185
|
-
val = this.getNumericMgValue(propParent, "0");
|
|
186
|
-
break;
|
|
187
|
-
case PropInterface.PROP_TYPE_STYLE_3D:
|
|
188
|
-
if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
|
|
189
|
-
control = propParent;
|
|
190
|
-
switch (control.Type) {
|
|
191
|
-
case MgControlType.CTRL_TYPE_COMBO:
|
|
192
|
-
val = this.getNumericMgValue(propParent, "2");
|
|
193
|
-
break;
|
|
194
|
-
case MgControlType.CTRL_TYPE_RADIO:
|
|
195
|
-
case MgControlType.CTRL_TYPE_CHECKBOX:
|
|
196
|
-
val = this.getNumericMgValue(propParent, "3");
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
break;
|
|
201
|
-
case PropInterface.PROP_TYPE_IMAGE_LIST_INDEXES:
|
|
202
|
-
case PropInterface.PROP_TYPE_WALLPAPER:
|
|
203
|
-
case PropInterface.PROP_TYPE_TEXT:
|
|
204
|
-
case PropInterface.PROP_TYPE_TOOLTIP:
|
|
205
|
-
case PropInterface.PROP_TYPE_FORMAT:
|
|
206
|
-
val = NString.Empty;
|
|
207
|
-
break;
|
|
208
|
-
case PropInterface.PROP_TYPE_IMAGE_STYLE:
|
|
209
|
-
val = this.getNumericMgValue(propParent, "2");
|
|
210
|
-
break;
|
|
211
|
-
case PropInterface.PROP_TYPE_SELECTION_MODE:
|
|
212
|
-
val = this.getNumericMgValue(propParent, String(ListboxSelectionMode.Single));
|
|
213
|
-
break;
|
|
214
|
-
case PropInterface.PROP_TYPE_INDEX:
|
|
215
|
-
case PropInterface.PROP_TYPE_LINK_FIELD:
|
|
216
|
-
case PropInterface.PROP_TYPE_DISPLAY_FIELD:
|
|
217
|
-
case PropInterface.PROP_TYPE_PERSISTENT_FORM_STATE_VERSION:
|
|
218
|
-
val = this.getNumericMgValue(propParent, "0");
|
|
219
|
-
break;
|
|
220
|
-
default:
|
|
221
|
-
Debug.Assert(false, "Undefined default value");
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
return val;
|
|
225
|
-
}
|
|
226
|
-
static GetPropertyName(propTypeId) {
|
|
227
|
-
return "{Field ID " + propTypeId + "}";
|
|
228
|
-
}
|
|
229
|
-
}
|
|
1
|
+
import { Debug, NString, RefParam } from "@magic-xpa/mscorelib";
|
|
2
|
+
import { ListboxSelectionMode, MgControlType, StorageAttribute, TransMode } from "@magic-xpa/utils";
|
|
3
|
+
import { PIC } from "./PIC";
|
|
4
|
+
import { DisplayConvertor } from "./DisplayConvertor";
|
|
5
|
+
import { BlobType } from "../data/BlobType";
|
|
6
|
+
import { PropInterface } from "./PropInterface";
|
|
7
|
+
import { GuiConstants } from "../../GuiConstants";
|
|
8
|
+
export class PropDefaults {
|
|
9
|
+
static getNumericMgValue(propParent, Value) {
|
|
10
|
+
let pic = new PIC("3", StorageAttribute.NUMERIC, propParent.getCompIdx());
|
|
11
|
+
return DisplayConvertor.Instance.disp2mg(Value, pic, propParent.getCompIdx(), BlobType.CONTENT_TYPE_UNKNOWN);
|
|
12
|
+
}
|
|
13
|
+
static getDefaultValueForTask(propId, handled) {
|
|
14
|
+
let val = null;
|
|
15
|
+
handled.value = true;
|
|
16
|
+
switch (propId) {
|
|
17
|
+
case PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_EVENTS:
|
|
18
|
+
case PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY:
|
|
19
|
+
case PropInterface.PROP_TYPE_PRINT_DATA:
|
|
20
|
+
case PropInterface.PROP_TYPE_ALLOW_RANGE:
|
|
21
|
+
case PropInterface.PROP_TYPE_ALLOW_LOCATE:
|
|
22
|
+
case PropInterface.PROP_TYPE_ALLOW_SORT:
|
|
23
|
+
case PropInterface.PROP_TYPE_PRELOAD_VIEW:
|
|
24
|
+
case PropInterface.PROP_TYPE_TASK_PROPERTIES_ALLOW_INDEX:
|
|
25
|
+
val = "1";
|
|
26
|
+
break;
|
|
27
|
+
case PropInterface.PROP_TYPE_CLOSE_TASKS_BY_MDI_MENU:
|
|
28
|
+
val = "0";
|
|
29
|
+
break;
|
|
30
|
+
default:
|
|
31
|
+
handled.value = false;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
return val;
|
|
35
|
+
}
|
|
36
|
+
static getDefaultValue(propId, parentType, propParent) {
|
|
37
|
+
let val = null;
|
|
38
|
+
let control = null;
|
|
39
|
+
if (parentType === GuiConstants.PARENT_TYPE_TASK) {
|
|
40
|
+
let handled = new RefParam(false);
|
|
41
|
+
val = this.getDefaultValueForTask(propId, handled);
|
|
42
|
+
if (handled.value)
|
|
43
|
+
return val;
|
|
44
|
+
}
|
|
45
|
+
switch (propId) {
|
|
46
|
+
case PropInterface.PROP_TYPE_COLOR:
|
|
47
|
+
val = this.getNumericMgValue(propParent, "1");
|
|
48
|
+
if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
|
|
49
|
+
control = propParent;
|
|
50
|
+
if (control.Type === MgControlType.CTRL_TYPE_BUTTON && control.IsImageButton())
|
|
51
|
+
val = this.getNumericMgValue(propParent, "0");
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
case PropInterface.PROP_TYPE_BORDER:
|
|
55
|
+
val = "0";
|
|
56
|
+
if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
|
|
57
|
+
control = propParent;
|
|
58
|
+
switch (control.Type) {
|
|
59
|
+
case MgControlType.CTRL_TYPE_SUBFORM:
|
|
60
|
+
val = "0";
|
|
61
|
+
break;
|
|
62
|
+
case MgControlType.CTRL_TYPE_TEXT:
|
|
63
|
+
case MgControlType.CTRL_TYPE_TABLE:
|
|
64
|
+
case MgControlType.CTRL_TYPE_LIST:
|
|
65
|
+
case MgControlType.CTRL_TYPE_BROWSER:
|
|
66
|
+
val = "1";
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case PropInterface.PROP_TYPE_MAXBOX:
|
|
72
|
+
case PropInterface.PROP_TYPE_MINBOX:
|
|
73
|
+
case PropInterface.PROP_TYPE_MUST_INPUT:
|
|
74
|
+
case PropInterface.PROP_TYPE_MULTILINE:
|
|
75
|
+
case PropInterface.PROP_TYPE_PASSWORD:
|
|
76
|
+
case PropInterface.PROP_TYPE_HEBREW:
|
|
77
|
+
case PropInterface.PROP_TYPE_MULTILINE_VERTICAL_SCROLL:
|
|
78
|
+
case PropInterface.PROP_TYPE_MULTILINE_ALLOW_CR:
|
|
79
|
+
case PropInterface.PROP_TYPE_IS_CACHED:
|
|
80
|
+
case PropInterface.PROP_TYPE_MODIFY_IN_QUERY:
|
|
81
|
+
case PropInterface.PROP_TYPE_SHOW_FULL_ROW:
|
|
82
|
+
case PropInterface.PROP_TYPE_TRACK_SELECTION:
|
|
83
|
+
case PropInterface.PROP_TYPE_COLUMN_DIVIDER:
|
|
84
|
+
case PropInterface.PROP_TYPE_LINE_DIVIDER:
|
|
85
|
+
case PropInterface.PROP_TYPE_THREE_STATES:
|
|
86
|
+
case PropInterface.PROP_TYPE_REFRESH_WHEN_HIDDEN:
|
|
87
|
+
case PropInterface.PROP_TYPE_RETAIN_FOCUS:
|
|
88
|
+
case PropInterface.PROP_TYPE_ROW_PLACEMENT:
|
|
89
|
+
case PropInterface.PROP_TYPE_SHOW_IN_WINDOW_MENU:
|
|
90
|
+
case PropInterface.PROP_TYPE_DATAVIEWCONTROL:
|
|
91
|
+
case PropInterface.PROP_TYPE_SORT_COLUMN:
|
|
92
|
+
case PropInterface.PROP_TYPE_BEFORE_900_VERSION:
|
|
93
|
+
case PropInterface.PROP_TYPE_FILL_WIDTH:
|
|
94
|
+
case PropInterface.PROP_TYPE_MULTI_COLUMN_DISPLAY:
|
|
95
|
+
case PropInterface.PROP_TYPE_AUTO_COMPLETE_MODE_WC:
|
|
96
|
+
val = "0";
|
|
97
|
+
break;
|
|
98
|
+
case PropInterface.PROP_TYPE_SYSTEM_MENU:
|
|
99
|
+
case PropInterface.PROP_TYPE_TITLE_BAR:
|
|
100
|
+
case PropInterface.PROP_TYPE_ENABLED:
|
|
101
|
+
case PropInterface.PROP_TYPE_VISIBLE:
|
|
102
|
+
case PropInterface.PROP_TYPE_TAB_IN:
|
|
103
|
+
case PropInterface.PROP_TYPE_MODIFIABLE:
|
|
104
|
+
case PropInterface.PROP_TYPE_HIGHLIGHTING:
|
|
105
|
+
case PropInterface.PROP_TYPE_AUTO_REFRESH:
|
|
106
|
+
case PropInterface.PROP_TYPE_PARK_ON_CLICK:
|
|
107
|
+
case PropInterface.PROP_TYPE_DISPLAY_MENU:
|
|
108
|
+
case PropInterface.PROP_TYPE_DISPLAY_TOOLBAR:
|
|
109
|
+
case PropInterface.PROP_TYPE_SHOW_BUTTONS:
|
|
110
|
+
case PropInterface.PROP_TYPE_LINES_AT_ROOT:
|
|
111
|
+
case PropInterface.PROP_TYPE_SCROLL_BAR:
|
|
112
|
+
case PropInterface.PROP_TYPE_SHOW_LINES:
|
|
113
|
+
case PropInterface.PROP_TYPE_ALLOW_QUERY:
|
|
114
|
+
case PropInterface.PROP_TYPE_RIGHT_BORDER:
|
|
115
|
+
case PropInterface.PROP_TYPE_TOP_BORDER:
|
|
116
|
+
case PropInterface.PROP_TYPE_TOP_BORDER_MARGIN:
|
|
117
|
+
case PropInterface.PROP_TYPE_SHOW_ELLIPISIS:
|
|
118
|
+
val = "1";
|
|
119
|
+
break;
|
|
120
|
+
case PropInterface.PROP_TYPE_TRIGGER:
|
|
121
|
+
case PropInterface.PROP_TYPE_PROMPT:
|
|
122
|
+
case PropInterface.PROP_TYPE_DISPLAY_LIST:
|
|
123
|
+
case PropInterface.PROP_TYPE_DATA:
|
|
124
|
+
case PropInterface.PROP_TYPE_IMAGE_FILENAME:
|
|
125
|
+
case PropInterface.PROP_TYPE_LABEL:
|
|
126
|
+
case PropInterface.PROP_TYPE_PLACEMENT:
|
|
127
|
+
case PropInterface.PROP_TYPE_PULLDOWN_MENU:
|
|
128
|
+
case PropInterface.PROP_TYPE_CONTEXT_MENU:
|
|
129
|
+
case PropInterface.PROP_TYPE_NODE_ID:
|
|
130
|
+
case PropInterface.PROP_TYPE_NODE_PARENTID:
|
|
131
|
+
case PropInterface.PROP_TYPE_SELECT_PROGRAM:
|
|
132
|
+
case PropInterface.PROP_TYPE_VISIBLE_LAYERS_LIST:
|
|
133
|
+
case PropInterface.PROP_TYPE_EXPANDED_IMAGEIDX:
|
|
134
|
+
case PropInterface.PROP_TYPE_COLLAPSED_IMAGEIDX:
|
|
135
|
+
case PropInterface.PROP_TYPE_OBJECT_TYPE:
|
|
136
|
+
case PropInterface.PROP_TYPE_TAB_ORDER:
|
|
137
|
+
case PropInterface.PROP_TYPE_LOAD_IMAGE_FROM:
|
|
138
|
+
case PropInterface.PROP_TYPE_FORM_NAME:
|
|
139
|
+
case PropInterface.PROP_TYPE_COLUMN_TITLE:
|
|
140
|
+
case PropInterface.PROP_TYPE_WIDTH:
|
|
141
|
+
case PropInterface.PROP_TYPE_PRGTSK_NUM:
|
|
142
|
+
break;
|
|
143
|
+
case PropInterface.PROP_TYPE_MULTILINE_WORDWRAP_SCROLL:
|
|
144
|
+
case PropInterface.PROP_TYPE_BORDER_STYLE:
|
|
145
|
+
val = this.getNumericMgValue(propParent, "2");
|
|
146
|
+
break;
|
|
147
|
+
case PropInterface.PROP_TYPE_WINDOW_TYPE:
|
|
148
|
+
val = this.getNumericMgValue(propParent, "6");
|
|
149
|
+
break;
|
|
150
|
+
case PropInterface.PROP_TYPE_ROW_HIGHLIGHT_STYLE:
|
|
151
|
+
val = this.getNumericMgValue(propParent, "4");
|
|
152
|
+
break;
|
|
153
|
+
case PropInterface.PROP_TYPE_GRADIENT_STYLE:
|
|
154
|
+
case PropInterface.PROP_TYPE_TABBING_ORDER:
|
|
155
|
+
case PropInterface.PROP_TYPE_STARTUP_MODE:
|
|
156
|
+
case PropInterface.PROP_TYPE_CHOICE_COLUMNS:
|
|
157
|
+
case PropInterface.PROP_TYPE_HORIZONTAL_ALIGNMENT:
|
|
158
|
+
case PropInterface.PROP_TYPE_FONT:
|
|
159
|
+
case PropInterface.PROP_TYPE_WALLPAPER_STYLE:
|
|
160
|
+
case PropInterface.PROP_TYPE_CHECKBOX_MAIN_STYLE:
|
|
161
|
+
case PropInterface.PROP_TYPE_TAB_CONTROL_SIDE:
|
|
162
|
+
case PropInterface.PROP_TYPE_RAISE_AT:
|
|
163
|
+
case PropInterface.PROP_TYPE_ALLOWED_DIRECTION:
|
|
164
|
+
case PropInterface.PROP_TYPE_SUBFORM_TYPE:
|
|
165
|
+
case PropInterface.PROP_TYPE_UOM:
|
|
166
|
+
case PropInterface.PROP_TYPE_BOTTOM_POSITION_INTERVAL:
|
|
167
|
+
val = this.getNumericMgValue(propParent, "1");
|
|
168
|
+
break;
|
|
169
|
+
case PropInterface.PROP_TYPE_TASK_PROPERTIES_TRANSACTION_MODE:
|
|
170
|
+
val = TransMode.Physical;
|
|
171
|
+
break;
|
|
172
|
+
case PropInterface.PROP_TYPE_PARKED_COLLAPSED_IMAGEIDX:
|
|
173
|
+
case PropInterface.PROP_TYPE_PARKED_IMAGEIDX:
|
|
174
|
+
case PropInterface.PROP_TYPE_MINIMUM_HEIGHT:
|
|
175
|
+
case PropInterface.PROP_TYPE_TOP:
|
|
176
|
+
case PropInterface.PROP_TYPE_LEFT:
|
|
177
|
+
case PropInterface.PROP_TYPE_TITLE_HEIGHT:
|
|
178
|
+
case PropInterface.PROP_TYPE_LAYER:
|
|
179
|
+
case PropInterface.PROP_TYPE_VISIBLE_LINES:
|
|
180
|
+
case PropInterface.PROP_TYPE_FRAMESET_STYLE:
|
|
181
|
+
case PropInterface.PROP_TYPE_TRANSLATOR:
|
|
182
|
+
case PropInterface.PROP_TYPE_HOR_FAC:
|
|
183
|
+
case PropInterface.PROP_TYPE_VER_FAC:
|
|
184
|
+
case PropInterface.PROP_TYPE_FOCUS_COLOR:
|
|
185
|
+
val = this.getNumericMgValue(propParent, "0");
|
|
186
|
+
break;
|
|
187
|
+
case PropInterface.PROP_TYPE_STYLE_3D:
|
|
188
|
+
if (parentType === GuiConstants.PARENT_TYPE_CONTROL) {
|
|
189
|
+
control = propParent;
|
|
190
|
+
switch (control.Type) {
|
|
191
|
+
case MgControlType.CTRL_TYPE_COMBO:
|
|
192
|
+
val = this.getNumericMgValue(propParent, "2");
|
|
193
|
+
break;
|
|
194
|
+
case MgControlType.CTRL_TYPE_RADIO:
|
|
195
|
+
case MgControlType.CTRL_TYPE_CHECKBOX:
|
|
196
|
+
val = this.getNumericMgValue(propParent, "3");
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
case PropInterface.PROP_TYPE_IMAGE_LIST_INDEXES:
|
|
202
|
+
case PropInterface.PROP_TYPE_WALLPAPER:
|
|
203
|
+
case PropInterface.PROP_TYPE_TEXT:
|
|
204
|
+
case PropInterface.PROP_TYPE_TOOLTIP:
|
|
205
|
+
case PropInterface.PROP_TYPE_FORMAT:
|
|
206
|
+
val = NString.Empty;
|
|
207
|
+
break;
|
|
208
|
+
case PropInterface.PROP_TYPE_IMAGE_STYLE:
|
|
209
|
+
val = this.getNumericMgValue(propParent, "2");
|
|
210
|
+
break;
|
|
211
|
+
case PropInterface.PROP_TYPE_SELECTION_MODE:
|
|
212
|
+
val = this.getNumericMgValue(propParent, String(ListboxSelectionMode.Single));
|
|
213
|
+
break;
|
|
214
|
+
case PropInterface.PROP_TYPE_INDEX:
|
|
215
|
+
case PropInterface.PROP_TYPE_LINK_FIELD:
|
|
216
|
+
case PropInterface.PROP_TYPE_DISPLAY_FIELD:
|
|
217
|
+
case PropInterface.PROP_TYPE_PERSISTENT_FORM_STATE_VERSION:
|
|
218
|
+
val = this.getNumericMgValue(propParent, "0");
|
|
219
|
+
break;
|
|
220
|
+
default:
|
|
221
|
+
Debug.Assert(false, "Undefined default value");
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
return val;
|
|
225
|
+
}
|
|
226
|
+
static GetPropertyName(propTypeId) {
|
|
227
|
+
return "{Field ID " + propTypeId + "}";
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
230
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcERlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Qcm9wRGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBTWhELE1BQU0sT0FBTyxZQUFZO0lBT2YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQStCLEVBQUUsS0FBYTtRQUM3RSxJQUFJLEdBQUcsR0FBUSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBT08sTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxPQUEwQjtRQUM5RSxJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUM7UUFDdkIsT0FBTyxDQUFDLEtBQUssR0FB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QUNSO2dCQUNFLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLHlCQUF5QixDQUFDLENBQUM7Z0JBQy9DLE1BQU07U0FDVDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBa0I7UUFDdkMsT0FBTyxZQUFZLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RlYnVnLCBOU3RyaW5nLCBSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TGlzdGJveFNlbGVjdGlvbk1vZGUsIE1nQ29udHJvbFR5cGUsIFN0b3JhZ2VBdHRyaWJ1dGUsIFRyYW5zTW9kZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtQcm9wUGFyZW50SW50ZXJmYWNlfSBmcm9tIFwiLi4vLi4vZ3VpL1Byb3BQYXJlbnRJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtQSUN9IGZyb20gXCIuL1BJQ1wiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3J9IGZyb20gXCIuL0Rpc3BsYXlDb252ZXJ0b3JcIjtcclxuaW1wb3J0IHtCbG9iVHlwZX0gZnJvbSBcIi4uL2RhdGEvQmxvYlR5cGVcIjtcclxuaW1wb3J0IHtQcm9wSW50ZXJmYWNlfSBmcm9tIFwiLi9Qcm9wSW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7R3VpQ29uc3RhbnRzfSBmcm9tIFwiLi4vLi4vR3VpQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7R3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcn0gZnJvbSBcIi4vR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBQcm9wRGVmYXVsdHMgbWFuYWdlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgcHJvcGVydGllcyBhY2NvcmRpbmcgdG8gdGhlIG1vZGVsIHRoZXkgYmVsb25nIHRvXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBQcm9wRGVmYXVsdHMge1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIGEgbnVtZXJpYyB2YWx1ZSBpbiBpdHMgbWFnaWMgaW50ZXJuYWwgZm9ybWF0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb3BQYXJlbnRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudDogUHJvcFBhcmVudEludGVyZmFjZSwgVmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBuZXcgUElDKFwiM1wiLCBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMsIHByb3BQYXJlbnQuZ2V0Q29tcElkeCgpKTtcclxuICAgIHJldHVybiBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLmRpc3AybWcoVmFsdWUsIHBpYywgcHJvcFBhcmVudC5nZXRDb21wSWR4KCksIEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9VTktOT1dOKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByb3BJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBnZXREZWZhdWx0VmFsdWVGb3JUYXNrKHByb3BJZDogbnVtYmVyLCBoYW5kbGVkOiBSZWZQYXJhbTxib29sZWFuPik6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaGFuZGxlZC52YWx1ZSA9IHRydWU7XHJcblxyXG4gICAgc3dpdGNoIChwcm9wSWQpIHtcclxuICAgICAgLy8gZm9yIHRhc2sgcHJvcGVydGllc1xyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RBU0tfUFJPUEVSVElFU19BTExPV19FVkVOVFM6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfTE9DQVRFX0lOX1FVRVJZOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BSSU5UX0RBVEE6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfUkFOR0U6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfTE9DQVRFOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XX1NPUlQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUFJFTE9BRF9WSUVXOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RBU0tfUFJPUEVSVElFU19BTExPV19JTkRFWDpcclxuICAgICAgICB2YWwgPSBcIjFcIjsgLy8geWVzIGJvb2xlYW5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIC8vIGZvciB0YXNrIHByb3BlcnRpZXNcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9DTE9TRV9UQVNLU19CWV9NRElfTUVOVTpcclxuICAgICAgICB2YWwgPSBcIjBcIjsgLy8geWVzIGJvb2xlYW5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgaGFuZGxlZC52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0RGVmYXVsdFZhbHVlIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBwcm9wZXJ0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj5UaGUgcHJvcGVydHkgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyZW50VHlwZVwiPlBBUkVOVF9UWVBFX0NPTlRST0wsIFBBUkVOVF9UWVBFX0ZPUk0sIFBBUkVOVF9UWVBFX1RBU0s8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcFBhcmVudFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBUaGUgcHJvcGVydHkgZGVmYXVsdCB2YWx1ZSBTdHJpbmcgcmVwcmVzZW50YXRpb248L3JldHVybnM+XHJcbiAgc3RhdGljIGdldERlZmF1bHRWYWx1ZShwcm9wSWQ6IG51bWJlciwgcGFyZW50VHlwZTogc3RyaW5nLCBwcm9wUGFyZW50OiBQcm9wUGFyZW50SW50ZXJmYWNlKTogc3RyaW5nIHtcclxuICAgIGxldCB2YWw6IHN0cmluZyA9IG51bGw7XHJcbiAgICBsZXQgY29udHJvbDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciA9IG51bGw7XHJcblxyXG4gICAgaWYgKHBhcmVudFR5cGUgPT09IEd1aUNvbnN0YW50cy5QQVJFTlRfVFlQRV9UQVNLKSB7XHJcbiAgICAgIGxldCBoYW5kbGVkOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbTxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgICB2YWwgPSB0aGlzLmdldERlZmF1bHRWYWx1ZUZvclRhc2socHJvcElkLCBoYW5kbGVkKTtcclxuXHJcbiAgICAgIGlmIChoYW5kbGVkLnZhbHVlKVxyXG4gICAgICAgIHJldHVybiB2YWw7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChwcm9wSWQpIHtcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9DT0xPUjpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMVwiKTtcclxuICAgICAgICBpZiAocGFyZW50VHlwZSA9PT0gR3VpQ29uc3RhbnRzLlBBUkVOVF9UWVBFX0NPTlRST0wpIHtcclxuICAgICAgICAgIGNvbnRyb2wgPSA8R3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcj48YW55PnByb3BQYXJlbnQ7XHJcbiAgICAgICAgICBpZiAoY29udHJvbC5UeXBlID09PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9CVVRUT04gJiYgY29udHJvbC5Jc0ltYWdlQnV0dG9uKCkpXHJcbiAgICAgICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIwXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQk9SREVSOlxyXG4gICAgICAgIHZhbCA9IFwiMFwiOyAvLyBubyBib29sZWFuXHJcbiAgICAgICAgaWYgKHBhcmVudFR5cGUgPT09IEd1aUNvbnN0YW50cy5QQVJFTlRfVFlQRV9DT05UUk9MKSB7XHJcbiAgICAgICAgICBjb250cm9sID0gPEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXI+PGFueT5wcm9wUGFyZW50O1xyXG4gICAgICAgICAgc3dpdGNoIChjb250cm9sLlR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9TVUJGT1JNOlxyXG4gICAgICAgICAgICAgIC8vIGZpeGVkIGJ1ZyAjNzc3NjMzLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBzdWJmb3JtIGNvbnRyb2wgaXMgTm8gYW5kIG5vdCBZZXNcclxuICAgICAgICAgICAgICB2YWwgPSBcIjBcIjsgLy8gbm8gYm9vbGVhblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9URVhUOlxyXG4gICAgICAgICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX1RBQkxFOlxyXG4gICAgICAgICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0xJU1Q6XHJcbiAgICAgICAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlJPV1NFUjpcclxuICAgICAgICAgICAgICB2YWwgPSBcIjFcIjsgLy8geWVzIGJvb2xlYW5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX01BWEJPWDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NSU5CT1g6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTVVTVF9JTlBVVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NVUxUSUxJTkU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUEFTU1dPUkQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfSEVCUkVXOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX01VTFRJTElORV9WRVJUSUNBTF9TQ1JPTEw6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTVVMVElMSU5FX0FMTE9XX0NSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0lTX0NBQ0hFRDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NT0RJRllfSU5fUVVFUlk6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU0hPV19GVUxMX1JPVzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UUkFDS19TRUxFQ1RJT046XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ09MVU1OX0RJVklERVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTElORV9ESVZJREVSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RIUkVFX1NUQVRFUzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9SRUZSRVNIX1dIRU5fSElEREVOOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1JFVEFJTl9GT0NVUzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9ST1dfUExBQ0VNRU5UOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NIT1dfSU5fV0lORE9XX01FTlU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfREFUQVZJRVdDT05UUk9MOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NPUlRfQ09MVU1OOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0JFRk9SRV85MDBfVkVSU0lPTjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9GSUxMX1dJRFRIOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX01VTFRJX0NPTFVNTl9ESVNQTEFZOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FVVE9fQ09NUExFVEVfTU9ERV9XQzpcclxuICAgICAgICB2YWwgPSBcIjBcIjsgLy8gbm8gYm9vbGVhblxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TWVNURU1fTUVOVTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9USVRMRV9CQVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRU5BQkxFRDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RBQl9JTjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NT0RJRklBQkxFOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0hJR0hMSUdIVElORzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BVVRPX1JFRlJFU0g6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUEFSS19PTl9DTElDSzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9ESVNQTEFZX01FTlU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRElTUExBWV9UT09MQkFSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NIT1dfQlVUVE9OUzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9MSU5FU19BVF9ST09UOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NDUk9MTF9CQVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU0hPV19MSU5FUzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BTExPV19RVUVSWTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9SSUdIVF9CT1JERVI6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVE9QX0JPUkRFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UT1BfQk9SREVSX01BUkdJTjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TSE9XX0VMTElQSVNJUzpcclxuICAgICAgICB2YWwgPSBcIjFcIjsgLy8geWVzIGJvb2xlYW5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIC8vIGFsbCB0aG9zZSBwcm9wZXJ0aWVzIG5lZWQgbm90IGNyZWF0ZSBhIGRlZmF1bHRcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UUklHR0VSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BST01QVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9ESVNQTEFZX0xJU1Q6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfREFUQTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9JTUFHRV9GSUxFTkFNRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9MQUJFTDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9QTEFDRU1FTlQ6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUFVMTERPV05fTUVOVTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9DT05URVhUX01FTlU6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTk9ERV9JRDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9OT0RFX1BBUkVOVElEOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NFTEVDVF9QUk9HUkFNOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1ZJU0lCTEVfTEFZRVJTX0xJU1Q6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRVhQQU5ERURfSU1BR0VJRFg6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ09MTEFQU0VEX0lNQUdFSURYOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX09CSkVDVF9UWVBFOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RBQl9PUkRFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9MT0FEX0lNQUdFX0ZST006XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRk9STV9OQU1FOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0NPTFVNTl9USVRMRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9XSURUSDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9QUkdUU0tfTlVNOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9NVUxUSUxJTkVfV09SRFdSQVBfU0NST0xMOlxyXG4gICAgICAvLyAyLSBIT1JJWk9OVEFMX1NDUk9MTF9OT1xyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0JPUkRFUl9TVFlMRTogLy8gQk9SREVSX1RZUEVfVEhJQ0tcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiMlwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9XSU5ET1dfVFlQRTpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFwiNlwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9ST1dfSElHSExJR0hUX1NUWUxFOlxyXG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCI0XCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9HUkFESUVOVF9TVFlMRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQUJCSU5HX09SREVSOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NUQVJUVVBfTU9ERTpcclxuICAgICAgLy8gMS5ERUZBVUxUXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ0hPSUNFX0NPTFVNTlM6XHJcbiAgICAgIC8vIDFcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9IT1JJWk9OVEFMX0FMSUdOTUVOVDpcclxuICAgICAgLy8gMSBBTElHTk1FTlRfVFlQRV9IT1JJX0xFRlRcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9GT05UOlxyXG4gICAgICAvLyAxXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfV0FMTFBBUEVSX1NUWUxFOlxyXG4gICAgICAvLyBDVFJMX0lNQUdFX1NUWUxFX1RJTEVEXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQ0hFQ0tCT1hfTUFJTl9TVFlMRTpcclxuICAgICAgLy8gQ0hFQ0tCT1hfTUFJTl9TVFlMRV9CT1hcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQUJfQ09OVFJPTF9TSURFOlxyXG4gICAgICAvLyBTSURFX1RZUEVfVE9QOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1JBSVNFX0FUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XRURfRElSRUNUSU9OOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NVQkZPUk1fVFlQRTpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9VT006XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQk9UVE9NX1BPU0lUSU9OX0lOVEVSVkFMOlxyXG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIxXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UQVNLX1BST1BFUlRJRVNfVFJBTlNBQ1RJT05fTU9ERTpcclxuICAgICAgICB2YWwgPSBUcmFuc01vZGUuUGh5c2ljYWw7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BBUktFRF9DT0xMQVBTRURfSU1BR0VJRFg6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUEFSS0VEX0lNQUdFSURYOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX01JTklNVU1fSEVJR0hUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RPUDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9MRUZUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RJVExFX0hFSUdIVDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9MQVlFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFX0xJTkVTOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZSQU1FU0VUX1NUWUxFOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RSQU5TTEFUT1I6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfSE9SX0ZBQzpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WRVJfRkFDOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPQ1VTX0NPTE9SOlxyXG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIwXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TVFlMRV8zRDpcclxuICAgICAgICBpZiAocGFyZW50VHlwZSA9PT0gR3VpQ29uc3RhbnRzLlBBUkVOVF9UWVBFX0NPTlRST0wpIHtcclxuICAgICAgICAgIGNvbnRyb2wgPSA8R3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcj48YW55PnByb3BQYXJlbnQ7XHJcbiAgICAgICAgICBzd2l0Y2ggKGNvbnRyb2wuVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0NPTUJPOlxyXG4gICAgICAgICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIyXCIpOyAvLyBDVFJMX0RJTV8zRFxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX1JBRElPOlxyXG4gICAgICAgICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0NIRUNLQk9YOlxyXG4gICAgICAgICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIzXCIpOyAvLyBDVFJMX0RJTV8zRF9TVU5LRU5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfSU1BR0VfTElTVF9JTkRFWEVTOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1dBTExQQVBFUjpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9URVhUOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1RPT0xUSVA6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRk9STUFUOlxyXG4gICAgICAgIHZhbCA9IE5TdHJpbmcuRW1wdHk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0lNQUdFX1NUWUxFOlxyXG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIyXCIpOyAvLyBDVFJMX0lNQUdFX1NUWUxFX0NPUElFRFxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9TRUxFQ1RJT05fTU9ERTpcclxuICAgICAgICB2YWwgPSB0aGlzLmdldE51bWVyaWNNZ1ZhbHVlKHByb3BQYXJlbnQsIFN0cmluZyhMaXN0Ym94U2VsZWN0aW9uTW9kZS5TaW5nbGUpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfSU5ERVg6XHJcbiAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfTElOS19GSUVMRDpcclxuICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9ESVNQTEFZX0ZJRUxEOlxyXG4gICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BFUlNJU1RFTlRfRk9STV9TVEFURV9WRVJTSU9OOlxyXG4gICAgICAgIHZhbCA9IHRoaXMuZ2V0TnVtZXJpY01nVmFsdWUocHJvcFBhcmVudCwgXCIwXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIERlYnVnLkFzc2VydChmYWxzZSwgXCJVbmRlZmluZWQgZGVmYXVsdCB2YWx1ZVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgR2V0UHJvcGVydHlOYW1lKHByb3BUeXBlSWQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gXCJ7RmllbGQgSUQgXCIgKyBwcm9wVHlwZUlkICsgXCJ9XCI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|