@magic-xpa/gui 4.800.0-dev480.21 → 4.800.0-dev480.210
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/bundles/magic-xpa-gui.umd.js +1050 -7528
- package/bundles/magic-xpa-gui.umd.js.map +1 -1
- package/bundles/magic-xpa-gui.umd.min.js +1 -1
- package/bundles/magic-xpa-gui.umd.min.js.map +1 -1
- package/esm2015/index.js +1 -1
- package/esm2015/magic-xpa-gui.js +1 -4
- package/esm2015/src/Commands.js +11 -114
- package/esm2015/src/Events.js +1 -517
- package/esm2015/src/EventsProcessor.js +1 -51
- package/esm2015/src/FocusManager.js +1 -13
- package/esm2015/src/GuiConstants.js +2 -11
- package/esm2015/src/GuiEnums.js +126 -130
- package/esm2015/src/GuiEnvironment.js +1 -1
- package/esm2015/src/IFlowMonitorQueue.js +1 -1
- package/esm2015/src/Manager.js +10 -148
- package/esm2015/src/UIBridge.js +1 -6
- package/esm2015/src/env/IEnvironment.js +1 -1
- package/esm2015/src/gui/ControlBase.js +1 -1
- package/esm2015/src/gui/GuiMgControl.js +1 -94
- package/esm2015/src/gui/GuiMgForm.js +1 -1
- package/esm2015/src/gui/KeyboardItem.js +5 -46
- package/esm2015/src/gui/LastFocusedVal.js +1 -5
- package/esm2015/src/gui/MgValue.js +1 -1
- package/esm2015/src/gui/PropParentInterface.js +1 -1
- package/esm2015/src/gui/low/DialogHandler.js +1 -10
- package/esm2015/src/gui/low/GuiCommand.js +1 -12
- package/esm2015/src/gui/low/GuiCommandQueue.js +1 -66
- package/esm2015/src/gui/low/GuiInteractive.js +8 -465
- package/esm2015/src/gui/low/Style.js +1 -9
- package/esm2015/src/management/RuntimeContextBase.js +11 -14
- package/esm2015/src/management/data/BlobType.js +0 -0
- package/esm2015/src/management/data/DcValues.js +8 -67
- package/esm2015/src/management/data/DcValuesBuilderBase.js +2 -37
- package/esm2015/src/management/data/FieldDef.js +1 -95
- package/esm2015/src/management/data/FieldsTable.js +2 -28
- package/esm2015/src/management/data/GuiDataViewBase.js +33 -72
- package/esm2015/src/management/data/GuiFieldBase.js +4 -39
- package/esm2015/src/management/data/IRecord.js +1 -1
- package/esm2015/src/management/data/IReferencedObject.js +1 -8
- package/esm2015/src/management/data/NUM_TYPE.js +14 -485
- package/esm2015/src/management/data/ObjectReferenceBase.js +1 -3
- package/esm2015/src/management/data/ObjectReferencesCollection.js +1 -2
- package/esm2015/src/management/data/RecordUtils.js +6 -112
- package/esm2015/src/management/data/VectorType.js +17 -252
- package/esm2015/src/management/data/VectorTypeBase.js +1 -35
- package/esm2015/src/management/events/IActionManager.js +1 -1
- package/esm2015/src/management/events/IGuiEventsManager.js +1 -1
- package/esm2015/src/management/exp/ExpressionInterface.js +5 -3
- package/esm2015/src/management/exp/GuiExpressionEvaluator.js +38 -155
- package/esm2015/src/management/gui/ControlTable.js +18 -72
- package/esm2015/src/management/gui/DisplayConvertor.js +43 -493
- package/esm2015/src/management/gui/FieldValidator.js +58 -339
- package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +1 -1
- package/esm2015/src/management/gui/GuiFormPropertyAdapter.js +1 -8
- package/esm2015/src/management/gui/HebrewDate.js +3 -140
- package/esm2015/src/management/gui/Helps.js +2 -48
- package/esm2015/src/management/gui/MgControlBase.js +143 -876
- package/esm2015/src/management/gui/MgFormBase.js +68 -407
- package/esm2015/src/management/gui/PIC.js +58 -285
- package/esm2015/src/management/gui/PropDefaults.js +13 -48
- package/esm2015/src/management/gui/PropInterface.js +2 -4
- package/esm2015/src/management/gui/PropTable.js +72 -183
- package/esm2015/src/management/gui/Property.js +35 -372
- package/esm2015/src/management/gui/ValidationDetails.js +10 -52
- package/esm2015/src/management/gui/ValidationDetailsBase.js +12 -45
- package/esm2015/src/management/gui/WrongFormatException.js +1 -15
- package/esm2015/src/management/tasks/GuiDataCollection.js +1 -1
- package/esm2015/src/management/tasks/GuiTaskBase.js +38 -383
- package/esm2015/src/management/tasks/IMGDataTable.js +1 -1
- package/esm2015/src/management/tasks/ITask.js +1 -1
- package/esm2015/src/management/tasks/MgTimer.js +1 -16
- package/esm2015/src/management/tasks/TaskDefinitionId.js +8 -18
- package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +1 -13
- package/esm2015/src/util/AuthenticationDialogHandler.js +1 -4
- package/esm2015/src/util/MemoryUtil.js +1 -41
- package/esm2015/src/util/ObjectReference.js +1 -8
- package/esm2015/src/util/ProcessLauncher.js +3 -21
- package/esm2015/src/util/UsernamePasswordCredentials.js +1 -9
- package/fesm2015/magic-xpa-gui.js +857 -7052
- package/fesm2015/magic-xpa-gui.js.map +1 -1
- package/magic-xpa-gui.d.ts +0 -3
- package/package.json +2 -2
- package/src/Commands.d.ts +2 -0
- package/src/Events.d.ts +0 -2
- package/src/GuiEnums.d.ts +125 -128
- package/src/env/IEnvironment.d.ts +3 -0
- package/src/gui/PropParentInterface.d.ts +1 -1
- package/src/gui/low/GuiInteractive.d.ts +3 -1
- package/src/gui/low/Style.d.ts +0 -3
- package/src/management/RuntimeContextBase.d.ts +2 -0
- package/src/management/data/GuiDataViewBase.d.ts +4 -4
- package/src/management/data/IRecord.d.ts +1 -1
- package/src/management/exp/ExpressionInterface.d.ts +4 -0
- package/src/management/exp/GuiExpressionEvaluator.d.ts +4 -6
- package/src/management/gui/ControlTable.d.ts +1 -1
- package/src/management/gui/DisplayConvertor.d.ts +1 -1
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +1 -1
- package/src/management/gui/MgControlBase.d.ts +7 -7
- package/src/management/gui/MgFormBase.d.ts +6 -6
- package/src/management/gui/PIC.d.ts +1 -0
- package/src/management/gui/PropInterface.d.ts +2 -4
- package/src/management/gui/PropTable.d.ts +4 -5
- package/src/management/gui/Property.d.ts +1 -1
- package/src/management/tasks/GuiTaskBase.d.ts +8 -14
- package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
|
@@ -1,45 +1,33 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
1
|
import { XMLConstants } from '@magic-xpa/utils';
|
|
3
2
|
import { MgControlBase } from './MgControlBase';
|
|
4
3
|
import { List, NString } from '@magic-xpa/mscorelib';
|
|
5
4
|
export class ControlTable {
|
|
6
|
-
/// <summary>CTOR</summary>
|
|
7
5
|
constructor() {
|
|
8
6
|
this._controls = null;
|
|
9
7
|
this._mgForm = null;
|
|
10
8
|
this._controls = new List();
|
|
11
9
|
}
|
|
12
|
-
/// <summary>parse input string and fill inner data</summary>
|
|
13
10
|
fillData(mgForm, parser) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
});
|
|
11
|
+
this._mgForm = mgForm;
|
|
12
|
+
while (this.initInnerObjects(parser.getNextTag(), parser)) {
|
|
13
|
+
}
|
|
19
14
|
}
|
|
20
|
-
/// <summary>To allocate and fill inner objects of the class</summary>
|
|
21
|
-
/// <param name = "foundTagName">name of tag, of object, which need be allocated</param>
|
|
22
|
-
/// <returns> boolean if inner tags finished</returns>
|
|
23
15
|
initInnerObjects(foundTagName, parser) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
return true;
|
|
39
|
-
});
|
|
16
|
+
if (foundTagName === null)
|
|
17
|
+
return false;
|
|
18
|
+
if (foundTagName === XMLConstants.MG_TAG_CONTROL) {
|
|
19
|
+
let control = this._mgForm.ConstructMgControl();
|
|
20
|
+
control.fillData(this._mgForm, this._controls.length, parser);
|
|
21
|
+
this._controls.push(control);
|
|
22
|
+
}
|
|
23
|
+
else if (foundTagName === ("/" + XMLConstants.MG_TAG_CONTROL)) {
|
|
24
|
+
parser.setCurrIndex2EndOfTag();
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
else
|
|
28
|
+
return false;
|
|
29
|
+
return true;
|
|
40
30
|
}
|
|
41
|
-
/// <summary>get the size of the table</summary>
|
|
42
|
-
/// <returns> the size of the table</returns>
|
|
43
31
|
getSize() {
|
|
44
32
|
return this._controls.length;
|
|
45
33
|
}
|
|
@@ -49,17 +37,11 @@ export class ControlTable {
|
|
|
49
37
|
}
|
|
50
38
|
return this.getCtrl_1(idxOrCtrlName);
|
|
51
39
|
}
|
|
52
|
-
/// <summary>get control by its index</summary>
|
|
53
|
-
/// <param name = "idx">is the index of the control in the table</param>
|
|
54
|
-
/// <returns> the requested control object</returns>
|
|
55
40
|
getCtrl_0(idx) {
|
|
56
41
|
if (idx < this.getSize())
|
|
57
42
|
return this._controls.get_Item(idx);
|
|
58
43
|
return null;
|
|
59
44
|
}
|
|
60
|
-
/// <summary>get control by its name</summary>
|
|
61
|
-
/// <param name = "ctrlName">is the requested controls name</param>
|
|
62
|
-
/// <returns> the requested control object</returns>
|
|
63
45
|
getCtrl_1(ctrlName) {
|
|
64
46
|
if (!NString.IsNullOrEmpty(ctrlName)) {
|
|
65
47
|
return this._controls.find(ctrl => {
|
|
@@ -69,10 +51,6 @@ export class ControlTable {
|
|
|
69
51
|
}
|
|
70
52
|
return null;
|
|
71
53
|
}
|
|
72
|
-
/// <summary>get control (which is not the frame form) by its name</summary>
|
|
73
|
-
/// <param name = "ctrlName">is the requested controls name</param>
|
|
74
|
-
/// <param name="ctrlType"></param>
|
|
75
|
-
/// <returns> the requested control object</returns>
|
|
76
54
|
getCtrlByName(ctrlName, ctrlType) {
|
|
77
55
|
if (!NString.IsNullOrEmpty(ctrlName)) {
|
|
78
56
|
return this._controls.find(ctrl => {
|
|
@@ -82,11 +60,6 @@ export class ControlTable {
|
|
|
82
60
|
}
|
|
83
61
|
return null;
|
|
84
62
|
}
|
|
85
|
-
/// <summary>
|
|
86
|
-
/// get a control by its ISN
|
|
87
|
-
/// </summary>
|
|
88
|
-
/// <param name="isn"></param>
|
|
89
|
-
/// <returns></returns>
|
|
90
63
|
GetControlByIsn(isn) {
|
|
91
64
|
let ctrlByIsn = null;
|
|
92
65
|
ctrlByIsn = this._controls.find(ctrl => {
|
|
@@ -94,40 +67,26 @@ export class ControlTable {
|
|
|
94
67
|
});
|
|
95
68
|
return ctrlByIsn;
|
|
96
69
|
}
|
|
97
|
-
/// <summary>
|
|
98
|
-
/// get a control mathching the predicate
|
|
99
|
-
/// </summary>
|
|
100
|
-
/// <param name="predicate"></param>
|
|
101
|
-
/// <returns></returns>
|
|
102
70
|
GetControl(predicate) {
|
|
103
71
|
return this._controls.find(predicate);
|
|
104
72
|
}
|
|
105
73
|
filter(callackFuntion) {
|
|
106
74
|
return this._controls.filter(callackFuntion);
|
|
107
75
|
}
|
|
108
|
-
/// <summary>returns true if this table contains the given control</summary>
|
|
109
|
-
/// <param name = "ctrl">the control to look for</param>
|
|
110
76
|
contains(ctrl) {
|
|
111
77
|
let contains = false;
|
|
112
78
|
if (ctrl !== null)
|
|
113
79
|
contains = this._controls.Contains(ctrl);
|
|
114
80
|
return contains;
|
|
115
81
|
}
|
|
116
|
-
/// <summary>add a control to the table</summary>
|
|
117
|
-
/// <param name = "ctrl">is the control to be added</param>
|
|
118
82
|
addControl(ctrl) {
|
|
119
83
|
this._controls.push(ctrl);
|
|
120
84
|
}
|
|
121
|
-
/// <summary>set a control to a cell in the table</summary>
|
|
122
|
-
/// <param name = "ctrl">is the control to be added</param>
|
|
123
|
-
/// <param name = "index">where to set the control</param>
|
|
124
85
|
setControlAt(ctrl, index) {
|
|
125
86
|
if (this._controls.length <= index)
|
|
126
87
|
this._controls.SetSize(index + 1);
|
|
127
88
|
this._controls.set_Item(index, ctrl);
|
|
128
89
|
}
|
|
129
|
-
/// <summary>replace a control in the control table with null</summary>
|
|
130
|
-
/// <param name = "index">of control to be deleted</param>
|
|
131
90
|
deleteControlAt(index) {
|
|
132
91
|
this._controls.set_Item(index, null);
|
|
133
92
|
}
|
|
@@ -137,20 +96,13 @@ export class ControlTable {
|
|
|
137
96
|
}
|
|
138
97
|
this.Remove_1(ctrlOrIdx);
|
|
139
98
|
}
|
|
140
|
-
/// <summary>removes a control from the table and returns true on success</summary>
|
|
141
|
-
/// <param name = "ctrl">the control to remove</param>
|
|
142
99
|
Remove_0(ctrl) {
|
|
143
100
|
this._controls.Remove(ctrl);
|
|
144
101
|
return this._controls.Contains(ctrl);
|
|
145
102
|
}
|
|
146
|
-
/// <summary>removes a control from the table by index.</summary>
|
|
147
|
-
/// <param name = "idx">the idx of the control to be removed</param>
|
|
148
103
|
Remove_1(idx) {
|
|
149
104
|
this._controls.RemoveAt(idx);
|
|
150
105
|
}
|
|
151
|
-
/// <param name = "inCtrl">the control whose index we need</param>
|
|
152
|
-
/// <param name="includeSubs"></param>
|
|
153
|
-
/// <returns> idx of a control in the table, excluding subforms control</returns>
|
|
154
106
|
getControlIdx(inCtrl, includeSubs) {
|
|
155
107
|
let counter = 0;
|
|
156
108
|
for (let i = 0; i < this._controls.length; i++) {
|
|
@@ -162,14 +114,8 @@ export class ControlTable {
|
|
|
162
114
|
}
|
|
163
115
|
return -1;
|
|
164
116
|
}
|
|
165
|
-
/// <summary>
|
|
166
|
-
/// An implementation of a predicate to select controls which are data controls, to be
|
|
167
|
-
/// used as parameter for the 'GetControls' method.
|
|
168
|
-
/// </summary>
|
|
169
|
-
/// <param name="control">The control passed as parameter by the GetControl method.</param>
|
|
170
|
-
/// <returns>The method returns true if the control is a data control. Otherwise it returns false.</returns>
|
|
171
117
|
static SelectDataControlPredicate(control) {
|
|
172
118
|
return control.isDataCtrl();
|
|
173
119
|
}
|
|
174
120
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Db250cm9sVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBaUIsWUFBWSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFFMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsTUFBTSxPQUFPLFlBQVk7SUFJdkIsMkJBQTJCO0lBQzNCO1FBSlEsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFDdEMsWUFBTyxHQUFlLElBQUksQ0FBQztRQUlqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELDZEQUE2RDtJQUN2RCxRQUFRLENBQUMsTUFBa0IsRUFBRSxNQUFpQjs7WUFFbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDdEIsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7YUFDaEU7UUFDSCxDQUFDO0tBQUE7SUFFRCxzRUFBc0U7SUFDdEUsd0ZBQXdGO0lBQ3hGLHNEQUFzRDtJQUN4QyxnQkFBZ0IsQ0FBQyxZQUFvQixFQUFFLE1BQWlCOztZQUNwRSxJQUFJLFlBQVksS0FBSyxJQUFJO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUVmLElBQUksWUFBWSxLQUFLLFlBQVksQ0FBQyxjQUFjLEVBQUU7Z0JBQ2hELElBQUksT0FBTyxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQy9ELE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFF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akIsT0FBTyxPQUFPLENBQUM7aUJBQ1osSUFBSSxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN2QyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxhQUFhO0lBQ2Isc0ZBQXNGO0lBQ3RGLG1EQUFtRDtJQUNuRCxjQUFjO0lBQ2QsMkZBQTJGO0lBQzNGLDRHQUE0RztJQUM1RyxNQUFNLENBQUMsMEJBQTBCLENBQUMsT0FBc0I7UUFDdEQsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWdDb250cm9sVHlwZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgTWdGb3JtQmFzZSB9IGZyb20gJy4vTWdGb3JtQmFzZSc7XHJcbmltcG9ydCB7IE1nQ29udHJvbEJhc2UgfSBmcm9tICcuL01nQ29udHJvbEJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0LCBOU3RyaW5nIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbnRyb2xUYWJsZSB7XHJcbiAgcHJpdmF0ZSBfY29udHJvbHM6IExpc3Q8TWdDb250cm9sQmFzZT4gPSBudWxsO1xyXG4gIHByaXZhdGUgX21nRm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5DVE9SPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fY29udHJvbHMgPSBuZXcgTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIGZpbGxEYXRhKG1nRm9ybTogTWdGb3JtQmFzZSwgcGFyc2VyOiBYbWxQYXJzZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLl9tZ0Zvcm0gPSBtZ0Zvcm07XHJcbiAgICB3aGlsZSAoYXdhaXQgdGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5UbyBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzczwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvdW5kVGFnTmFtZVwiPm5hbWUgb2YgdGFnLCBvZiBvYmplY3QsIHdoaWNoIG5lZWQgYmUgYWxsb2NhdGVkPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGJvb2xlYW4gaWYgaW5uZXIgdGFncyBmaW5pc2hlZDwvcmV0dXJucz5cclxuICBwcml2YXRlIGFzeW5jIGluaXRJbm5lck9iamVjdHMoZm91bmRUYWdOYW1lOiBzdHJpbmcsIHBhcnNlcjogWG1sUGFyc2VyKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19DT05UUk9MKSB7XHJcbiAgICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gdGhpcy5fbWdGb3JtLkNvbnN0cnVjdE1nQ29udHJvbCgpO1xyXG4gICAgICBhd2FpdCBjb250cm9sLmZpbGxEYXRhKHRoaXMuX21nRm9ybSwgdGhpcy5fY29udHJvbHMubGVuZ3RoLCBwYXJzZXIpO1xyXG4gICAgICB0aGlzLl9jb250cm9scy5wdXNoKGNvbnRyb2wpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSAoXCIvXCIgKyBYTUxDb25zdGFudHMuTUdfVEFHX0NPTlRST0wpKSB7XHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCB0aGUgc2l6ZSBvZiB0aGUgdGFibGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgc2l6ZSBvZiB0aGUgdGFibGU8L3JldHVybnM+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldEN0cmwoaWR4OiBudW1iZXIpOiBNZ0NvbnRyb2xCYXNlO1xyXG4gIGdldEN0cmwoY3RybE5hbWU6IHN0cmluZyk6IE1nQ29udHJvbEJhc2U7XHJcbiAgZ2V0Q3RybChpZHhPckN0cmxOYW1lOiBhbnkpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChpZHhPckN0cmxOYW1lID09PSBudWxsIHx8IHR5cGVvZiBpZHhPckN0cmxOYW1lID09PSBcInVuZGVmaW5lZFwiIHx8IGlkeE9yQ3RybE5hbWUuY29uc3RydWN0b3IgPT09IE51bWJlcikpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3RybF8wKGlkeE9yQ3RybE5hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3RybF8xKGlkeE9yQ3RybE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCBjb250cm9sIGJ5IGl0cyBpbmRleDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPmlzIHRoZSBpbmRleCBvZiB0aGUgY29udHJvbCBpbiB0aGUgdGFibGU8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHJlcXVlc3RlZCBjb250cm9sIG9iamVjdDwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEN0cmxfMChpZHg6IG51bWJlcik6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgaWYgKGlkeCA8IHRoaXMuZ2V0U2l6ZSgpKVxyXG4gICAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZ2V0X0l0ZW0oaWR4KTtcclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IGNvbnRyb2wgYnkgaXRzIG5hbWU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsTmFtZVwiPmlzIHRoZSByZXF1ZXN0ZWQgY29udHJvbHMgbmFtZTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcmVxdWVzdGVkIGNvbnRyb2wgb2JqZWN0PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0Q3RybF8xKGN0cmxOYW1lOiBzdHJpbmcpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KGN0cmxOYW1lKSkge1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmZpbmQoY3RybCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChOU3RyaW5nLkVxdWFscyhjdHJsTmFtZSwgY3RybC5nZXROYW1lKCksIHRydWUpIHx8XHJcbiAgICAgICAgICBOU3RyaW5nLkVxdWFscyhjdHJsTmFtZSwgY3RybC5OYW1lLCB0cnVlKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCBjb250cm9sICh3aGljaCBpcyBub3QgdGhlIGZyYW1lIGZvcm0pIGJ5IGl0cyBuYW1lPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybE5hbWVcIj5pcyB0aGUgcmVxdWVzdGVkIGNvbnRyb2xzIG5hbWU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxUeXBlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSByZXF1ZXN0ZWQgY29udHJvbCBvYmplY3Q8L3JldHVybnM+XHJcbiAgZ2V0Q3RybEJ5TmFtZShjdHJsTmFtZTogc3RyaW5nLCBjdHJsVHlwZTogTWdDb250cm9sVHlwZSk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoY3RybE5hbWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jb250cm9scy5maW5kKGN0cmwgPT4ge1xyXG4gICAgICAgIHJldHVybiAoKGN0cmwuVHlwZSA9PT0gY3RybFR5cGUpICYmIE5TdHJpbmcuRXF1YWxzKGN0cmxOYW1lLCBjdHJsLmdldE5hbWUoKSwgdHJ1ZSkgfHxcclxuICAgICAgICAgIE5TdHJpbmcuRXF1YWxzKGN0cmxOYW1lLCBjdHJsLk5hbWUsIHRydWUpKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgYSBjb250cm9sIGJ5IGl0cyBJU05cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRDb250cm9sQnlJc24oaXNuOiBudW1iZXIpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGxldCBjdHJsQnlJc246IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gICAgY3RybEJ5SXNuID0gdGhpcy5fY29udHJvbHMuZmluZChjdHJsID0+IHtcclxuICAgICAgcmV0dXJuIChjdHJsLkNvbnRyb2xJc24gPT09IGlzbilcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjdHJsQnlJc247XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCBhIGNvbnRyb2wgbWF0aGNoaW5nIHRoZSBwcmVkaWNhdGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByZWRpY2F0ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRDb250cm9sKHByZWRpY2F0ZTogKHZhbHVlOiBNZ0NvbnRyb2xCYXNlKSA9PiBib29sZWFuKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZmluZChwcmVkaWNhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcihjYWxsYWNrRnVudGlvbjogKGl0ZW0sIGluZGV4LCBhcnJheSkgPT4gYm9vbGVhbik6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZmlsdGVyKGNhbGxhY2tGdW50aW9uKTtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmV0dXJucyB0cnVlIGlmIHRoaXMgdGFibGUgY29udGFpbnMgdGhlIGdpdmVuIGNvbnRyb2w8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+dGhlIGNvbnRyb2wgdG8gbG9vayBmb3I8L3BhcmFtPlxyXG4gIGNvbnRhaW5zKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBib29sZWFuIHtcclxuICAgIGxldCBjb250YWluczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKGN0cmwgIT09IG51bGwpXHJcbiAgICAgIGNvbnRhaW5zID0gdGhpcy5fY29udHJvbHMuQ29udGFpbnMoY3RybCk7XHJcbiAgICByZXR1cm4gY29udGFpbnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+YWRkIGEgY29udHJvbCB0byB0aGUgdGFibGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+aXMgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQ8L3BhcmFtPlxyXG4gIGFkZENvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29udHJvbHMucHVzaChjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5zZXQgYSBjb250cm9sIHRvIGEgY2VsbCBpbiB0aGUgdGFibGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+aXMgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5kZXhcIj53aGVyZSB0byBzZXQgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIHNldENvbnRyb2xBdChjdHJsOiBNZ0NvbnRyb2xCYXNlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fY29udHJvbHMubGVuZ3RoIDw9IGluZGV4KVxyXG4gICAgICB0aGlzLl9jb250cm9scy5TZXRTaXplKGluZGV4ICsgMSk7XHJcbiAgICB0aGlzLl9jb250cm9scy5zZXRfSXRlbShpbmRleCwgY3RybCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVwbGFjZSBhIGNvbnRyb2wgaW4gdGhlIGNvbnRyb2wgdGFibGUgd2l0aCBudWxsPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5kZXhcIj5vZiBjb250cm9sIHRvIGJlIGRlbGV0ZWQ8L3BhcmFtPlxyXG4gIGRlbGV0ZUNvbnRyb2xBdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250cm9scy5zZXRfSXRlbShpbmRleCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBSZW1vdmUoY3RybDogTWdDb250cm9sQmFzZSk6IGJvb2xlYW47XHJcbiAgUmVtb3ZlKGlkeDogbnVtYmVyKTtcclxuICBSZW1vdmUoY3RybE9ySWR4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChjdHJsT3JJZHggPT09IG51bGwgfHwgY3RybE9ySWR4IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuUmVtb3ZlXzAoY3RybE9ySWR4KTtcclxuICAgIH1cclxuICAgIHRoaXMuUmVtb3ZlXzEoY3RybE9ySWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZW1vdmVzIGEgY29udHJvbCBmcm9tIHRoZSB0YWJsZSBhbmQgcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+dGhlIGNvbnRyb2wgdG8gcmVtb3ZlPC9wYXJhbT5cclxuICBwcml2YXRlIFJlbW92ZV8wKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBib29sZWFuIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLlJlbW92ZShjdHJsKTtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9scy5Db250YWlucyhjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZW1vdmVzIGEgY29udHJvbCBmcm9tIHRoZSB0YWJsZSBieSBpbmRleC48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaWR4IG9mIHRoZSBjb250cm9sIHRvIGJlIHJlbW92ZWQ8L3BhcmFtPlxyXG4gIHByaXZhdGUgUmVtb3ZlXzEoaWR4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLlJlbW92ZUF0KGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluQ3RybFwiPnRoZSBjb250cm9sIHdob3NlIGluZGV4IHdlIG5lZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImluY2x1ZGVTdWJzXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGlkeCBvZiBhIGNvbnRyb2wgaW4gdGhlIHRhYmxlLCBleGNsdWRpbmcgc3ViZm9ybXMgY29udHJvbDwvcmV0dXJucz5cclxuICBnZXRDb250cm9sSWR4KGluQ3RybDogTWdDb250cm9sQmFzZSwgaW5jbHVkZVN1YnM6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgbGV0IGNvdW50ZXI6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fY29udHJvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN0cmw6IE1nQ29udHJvbEJhc2UgPSB0aGlzLl9jb250cm9scy5nZXRfSXRlbShpKTtcclxuICAgICAgaWYgKGluQ3RybCA9PT0gY3RybClcclxuICAgICAgICByZXR1cm4gY291bnRlcjtcclxuICAgICAgZWxzZSBpZiAoaW5jbHVkZVN1YnMgfHwgIWN0cmwuaXNTdWJmb3JtKCkpXHJcbiAgICAgICAgY291bnRlcisrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIHByZWRpY2F0ZSB0byBzZWxlY3QgY29udHJvbHMgd2hpY2ggYXJlIGRhdGEgY29udHJvbHMsIHRvIGJlXHJcbiAgLy8vIHVzZWQgYXMgcGFyYW1ldGVyIGZvciB0aGUgJ0dldENvbnRyb2xzJyBtZXRob2QuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sXCI+VGhlIGNvbnRyb2wgcGFzc2VkIGFzIHBhcmFtZXRlciBieSB0aGUgR2V0Q29udHJvbCBtZXRob2QuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+VGhlIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIGNvbnRyb2wgaXMgYSBkYXRhIGNvbnRyb2wuIE90aGVyd2lzZSBpdCByZXR1cm5zIGZhbHNlLjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2VsZWN0RGF0YUNvbnRyb2xQcmVkaWNhdGUoY29udHJvbDogTWdDb250cm9sQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbnRyb2wuaXNEYXRhQ3RybCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Db250cm9sVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixZQUFZLEVBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxNQUFNLE9BQU8sWUFBWTtJQUt2QjtRQUpRLGNBQVMsR0FBd0IsSUFBSSxDQUFDO1FBQ3RDLFlBQU8sR0FBZSxJQUFJLENBQUM7UUFJakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFHRCxRQUFRLENBQUMsTUFBa0IsRUFBRSxNQUFpQjtRQUU1QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7U0FDMUQ7SUFDSCxDQUFDO0lBS08sZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxNQUFpQjtRQUM5RCxJQUFJLFlBQVksS0FBSyxJQUFJO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBRWYsSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLGNBQWMsRUFBRTtZQUNoRCxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM5QjthQUNJLElBQUksWUFBWSxLQUFLLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMzRCxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQztTQUNoQjs7WUFFQyxPQUFPLEtBQUssQ0FBQztRQUVmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUlELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFJRCxPQUFPLENBQUMsYUFBa0I7UUFDeEIsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksT0FBTyxhQUFhLEtBQUssV0FBVyxJQUFJLGFBQWEsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDLEVBQUU7WUFDdEksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFLTyxTQUFTLENBQUMsR0FBVztRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTU8sU0FBUyxDQUFDLFFBQWdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBRXBDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDO29CQUNwRCxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQU1ELGFBQWEsQ0FBQyxRQUFnQixFQUFFLFFBQXVCO1FBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQztvQkFDaEYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFPRCxlQUFlLENBQUMsR0FBVztRQUN6QixJQUFJLFNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ3BDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQTtRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFPRCxVQUFVLENBQUMsU0FBNEM7UUFDckQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQStDO1FBQzNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFL0MsQ0FBQztJQUlELFFBQVEsQ0FBQyxJQUFtQjtRQUMxQixJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUM7UUFDOUIsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUNmLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBSUQsVUFBVSxDQUFDLElBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFLRCxZQUFZLENBQUMsSUFBbUIsRUFBRSxLQUFhO1FBQzdDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksS0FBSztZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFJRCxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUlELE1BQU0sQ0FBQyxTQUFjO1FBQ25CLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsWUFBWSxhQUFhLENBQUMsRUFBRTtZQUN4RixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDakM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFJTyxRQUFRLENBQUMsSUFBbUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBSU8sUUFBUSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUtELGFBQWEsQ0FBQyxNQUFxQixFQUFFLFdBQW9CO1FBQ3ZELElBQUksT0FBTyxHQUFXLENBQUMsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxJQUFJLEdBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksTUFBTSxLQUFLLElBQUk7Z0JBQ2pCLE9BQU8sT0FBTyxDQUFDO2lCQUNaLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDdkMsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBUUQsTUFBTSxDQUFDLDBCQUEwQixDQUFDLE9BQXNCO1FBQ3RELE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1nQ29udHJvbFR5cGUsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IE1nRm9ybUJhc2UgfSBmcm9tICcuL01nRm9ybUJhc2UnO1xyXG5pbXBvcnQgeyBNZ0NvbnRyb2xCYXNlIH0gZnJvbSAnLi9NZ0NvbnRyb2xCYXNlJztcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVGFibGUge1xyXG4gIHByaXZhdGUgX2NvbnRyb2xzOiBMaXN0PE1nQ29udHJvbEJhc2U+ID0gbnVsbDtcclxuICBwcml2YXRlIF9tZ0Zvcm06IE1nRm9ybUJhc2UgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+Q1RPUjwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzID0gbmV3IExpc3QoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wYXJzZSBpbnB1dCBzdHJpbmcgYW5kIGZpbGwgaW5uZXIgZGF0YTwvc3VtbWFyeT5cclxuICBmaWxsRGF0YShtZ0Zvcm06IE1nRm9ybUJhc2UsIHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5fbWdGb3JtID0gbWdGb3JtO1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIuZ2V0TmV4dFRhZygpLCBwYXJzZXIpKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+VG8gYWxsb2NhdGUgYW5kIGZpbGwgaW5uZXIgb2JqZWN0cyBvZiB0aGUgY2xhc3M8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5uYW1lIG9mIHRhZywgb2Ygb2JqZWN0LCB3aGljaCBuZWVkIGJlIGFsbG9jYXRlZDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBib29sZWFuIGlmIGlubmVyIHRhZ3MgZmluaXNoZWQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IFhNTENvbnN0YW50cy5NR19UQUdfQ09OVFJPTCkge1xyXG4gICAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IHRoaXMuX21nRm9ybS5Db25zdHJ1Y3RNZ0NvbnRyb2woKTtcclxuICAgICAgY29udHJvbC5maWxsRGF0YSh0aGlzLl9tZ0Zvcm0sIHRoaXMuX2NvbnRyb2xzLmxlbmd0aCwgcGFyc2VyKTtcclxuICAgICAgdGhpcy5fY29udHJvbHMucHVzaChjb250cm9sKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvdW5kVGFnTmFtZSA9PT0gKFwiL1wiICsgWE1MQ29uc3RhbnRzLk1HX1RBR19DT05UUk9MKSkge1xyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5nZXQgdGhlIHNpemUgb2YgdGhlIHRhYmxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHNpemUgb2YgdGhlIHRhYmxlPC9yZXR1cm5zPlxyXG4gIGdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9scy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRDdHJsKGlkeDogbnVtYmVyKTogTWdDb250cm9sQmFzZTtcclxuICBnZXRDdHJsKGN0cmxOYW1lOiBzdHJpbmcpOiBNZ0NvbnRyb2xCYXNlO1xyXG4gIGdldEN0cmwoaWR4T3JDdHJsTmFtZTogYW55KTogTWdDb250cm9sQmFzZSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAoaWR4T3JDdHJsTmFtZSA9PT0gbnVsbCB8fCB0eXBlb2YgaWR4T3JDdHJsTmFtZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCBpZHhPckN0cmxOYW1lLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEN0cmxfMChpZHhPckN0cmxOYW1lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldEN0cmxfMShpZHhPckN0cmxOYW1lKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5nZXQgY29udHJvbCBieSBpdHMgaW5kZXg8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj5pcyB0aGUgaW5kZXggb2YgdGhlIGNvbnRyb2wgaW4gdGhlIHRhYmxlPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSByZXF1ZXN0ZWQgY29udHJvbCBvYmplY3Q8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBnZXRDdHJsXzAoaWR4OiBudW1iZXIpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGlmIChpZHggPCB0aGlzLmdldFNpemUoKSlcclxuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmdldF9JdGVtKGlkeCk7XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCBjb250cm9sIGJ5IGl0cyBuYW1lPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybE5hbWVcIj5pcyB0aGUgcmVxdWVzdGVkIGNvbnRyb2xzIG5hbWU8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHJlcXVlc3RlZCBjb250cm9sIG9iamVjdDwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEN0cmxfMShjdHJsTmFtZTogc3RyaW5nKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICBpZiAoIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjdHJsTmFtZSkpIHtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9jb250cm9scy5maW5kKGN0cmwgPT4ge1xyXG4gICAgICAgIHJldHVybiAoTlN0cmluZy5FcXVhbHMoY3RybE5hbWUsIGN0cmwuZ2V0TmFtZSgpLCB0cnVlKSB8fFxyXG4gICAgICAgICAgTlN0cmluZy5FcXVhbHMoY3RybE5hbWUsIGN0cmwuTmFtZSwgdHJ1ZSkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5nZXQgY29udHJvbCAod2hpY2ggaXMgbm90IHRoZSBmcmFtZSBmb3JtKSBieSBpdHMgbmFtZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxOYW1lXCI+aXMgdGhlIHJlcXVlc3RlZCBjb250cm9scyBuYW1lPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsVHlwZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcmVxdWVzdGVkIGNvbnRyb2wgb2JqZWN0PC9yZXR1cm5zPlxyXG4gIGdldEN0cmxCeU5hbWUoY3RybE5hbWU6IHN0cmluZywgY3RybFR5cGU6IE1nQ29udHJvbFR5cGUpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KGN0cmxOYW1lKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZmluZChjdHJsID0+IHtcclxuICAgICAgICByZXR1cm4gKChjdHJsLlR5cGUgPT09IGN0cmxUeXBlKSAmJiBOU3RyaW5nLkVxdWFscyhjdHJsTmFtZSwgY3RybC5nZXROYW1lKCksIHRydWUpIHx8XHJcbiAgICAgICAgICBOU3RyaW5nLkVxdWFscyhjdHJsTmFtZSwgY3RybC5OYW1lLCB0cnVlKSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IGEgY29udHJvbCBieSBpdHMgSVNOXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0Q29udHJvbEJ5SXNuKGlzbjogbnVtYmVyKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICBsZXQgY3RybEJ5SXNuOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICAgIGN0cmxCeUlzbiA9IHRoaXMuX2NvbnRyb2xzLmZpbmQoY3RybCA9PiB7XHJcbiAgICAgIHJldHVybiAoY3RybC5Db250cm9sSXNuID09PSBpc24pXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY3RybEJ5SXNuO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgYSBjb250cm9sIG1hdGhjaGluZyB0aGUgcHJlZGljYXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcmVkaWNhdGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0Q29udHJvbChwcmVkaWNhdGU6ICh2YWx1ZTogTWdDb250cm9sQmFzZSkgPT4gYm9vbGVhbik6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmZpbmQocHJlZGljYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWx0ZXIoY2FsbGFja0Z1bnRpb246IChpdGVtLCBpbmRleCwgYXJyYXkpID0+IGJvb2xlYW4pOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmZpbHRlcihjYWxsYWNrRnVudGlvbik7XHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJldHVybnMgdHJ1ZSBpZiB0aGlzIHRhYmxlIGNvbnRhaW5zIHRoZSBnaXZlbiBjb250cm9sPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHRvIGxvb2sgZm9yPC9wYXJhbT5cclxuICBjb250YWlucyhjdHJsOiBNZ0NvbnRyb2xCYXNlKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY29udGFpbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmIChjdHJsICE9PSBudWxsKVxyXG4gICAgICBjb250YWlucyA9IHRoaXMuX2NvbnRyb2xzLkNvbnRhaW5zKGN0cmwpO1xyXG4gICAgcmV0dXJuIGNvbnRhaW5zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmFkZCBhIGNvbnRyb2wgdG8gdGhlIHRhYmxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPmlzIHRoZSBjb250cm9sIHRvIGJlIGFkZGVkPC9wYXJhbT5cclxuICBhZGRDb250cm9sKGN0cmw6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLnB1c2goY3RybCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+c2V0IGEgY29udHJvbCB0byBhIGNlbGwgaW4gdGhlIHRhYmxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPmlzIHRoZSBjb250cm9sIHRvIGJlIGFkZGVkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZGV4XCI+d2hlcmUgdG8gc2V0IHRoZSBjb250cm9sPC9wYXJhbT5cclxuICBzZXRDb250cm9sQXQoY3RybDogTWdDb250cm9sQmFzZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xzLmxlbmd0aCA8PSBpbmRleClcclxuICAgICAgdGhpcy5fY29udHJvbHMuU2V0U2l6ZShpbmRleCArIDEpO1xyXG4gICAgdGhpcy5fY29udHJvbHMuc2V0X0l0ZW0oaW5kZXgsIGN0cmwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJlcGxhY2UgYSBjb250cm9sIGluIHRoZSBjb250cm9sIHRhYmxlIHdpdGggbnVsbDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZGV4XCI+b2YgY29udHJvbCB0byBiZSBkZWxldGVkPC9wYXJhbT5cclxuICBkZWxldGVDb250cm9sQXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fY29udHJvbHMuc2V0X0l0ZW0oaW5kZXgsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgUmVtb3ZlKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBib29sZWFuO1xyXG4gIFJlbW92ZShpZHg6IG51bWJlcik7XHJcbiAgUmVtb3ZlKGN0cmxPcklkeDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAoY3RybE9ySWR4ID09PSBudWxsIHx8IGN0cmxPcklkeCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLlJlbW92ZV8wKGN0cmxPcklkeCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLlJlbW92ZV8xKGN0cmxPcklkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVtb3ZlcyBhIGNvbnRyb2wgZnJvbSB0aGUgdGFibGUgYW5kIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHRvIHJlbW92ZTwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBSZW1vdmVfMChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLl9jb250cm9scy5SZW1vdmUoY3RybCk7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuQ29udGFpbnMoY3RybCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVtb3ZlcyBhIGNvbnRyb2wgZnJvbSB0aGUgdGFibGUgYnkgaW5kZXguPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGlkeCBvZiB0aGUgY29udHJvbCB0byBiZSByZW1vdmVkPC9wYXJhbT5cclxuICBwcml2YXRlIFJlbW92ZV8xKGlkeDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250cm9scy5SZW1vdmVBdChpZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbkN0cmxcIj50aGUgY29udHJvbCB3aG9zZSBpbmRleCB3ZSBuZWVkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbmNsdWRlU3Vic1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBpZHggb2YgYSBjb250cm9sIGluIHRoZSB0YWJsZSwgZXhjbHVkaW5nIHN1YmZvcm1zIGNvbnRyb2w8L3JldHVybnM+XHJcbiAgZ2V0Q29udHJvbElkeChpbkN0cmw6IE1nQ29udHJvbEJhc2UsIGluY2x1ZGVTdWJzOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIGxldCBjb3VudGVyOiBudW1iZXIgPSAwO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2NvbnRyb2xzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdHJsOiBNZ0NvbnRyb2xCYXNlID0gdGhpcy5fY29udHJvbHMuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIGlmIChpbkN0cmwgPT09IGN0cmwpXHJcbiAgICAgICAgcmV0dXJuIGNvdW50ZXI7XHJcbiAgICAgIGVsc2UgaWYgKGluY2x1ZGVTdWJzIHx8ICFjdHJsLmlzU3ViZm9ybSgpKVxyXG4gICAgICAgIGNvdW50ZXIrKztcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgYSBwcmVkaWNhdGUgdG8gc2VsZWN0IGNvbnRyb2xzIHdoaWNoIGFyZSBkYXRhIGNvbnRyb2xzLCB0byBiZVxyXG4gIC8vLyB1c2VkIGFzIHBhcmFtZXRlciBmb3IgdGhlICdHZXRDb250cm9scycgbWV0aG9kLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udHJvbFwiPlRoZSBjb250cm9sIHBhc3NlZCBhcyBwYXJhbWV0ZXIgYnkgdGhlIEdldENvbnRyb2wgbWV0aG9kLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRoZSBtZXRob2QgcmV0dXJucyB0cnVlIGlmIHRoZSBjb250cm9sIGlzIGEgZGF0YSBjb250cm9sLiBPdGhlcndpc2UgaXQgcmV0dXJucyBmYWxzZS48L3JldHVybnM+XHJcbiAgc3RhdGljIFNlbGVjdERhdGFDb250cm9sUHJlZGljYXRlKGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb250cm9sLmlzRGF0YUN0cmwoKTtcclxuICB9XHJcbn1cclxuIl19
|