@magic-xpa/gui 4.1100.0-dev4110.106 → 4.1100.0-dev4110.108

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.
Files changed (148) hide show
  1. package/README.md +7 -7
  2. package/esm2020/index.mjs +71 -2
  3. package/esm2020/src/Commands.mjs +184 -0
  4. package/esm2020/src/Events.mjs +420 -0
  5. package/esm2020/src/EventsProcessor.mjs +67 -0
  6. package/esm2020/src/FocusManager.mjs +34 -0
  7. package/esm2020/src/GuiConstants.mjs +68 -0
  8. package/esm2020/src/GuiEnums.mjs +300 -0
  9. package/esm2020/src/GuiEnvironment.mjs +4 -0
  10. package/esm2020/src/IFlowMonitorQueue.mjs +2 -0
  11. package/esm2020/src/Manager.mjs +91 -0
  12. package/esm2020/src/UIBridge.mjs +32 -0
  13. package/esm2020/src/env/IEnvironment.mjs +2 -0
  14. package/esm2020/src/gui/ControlBase.mjs +3 -0
  15. package/esm2020/src/gui/GuiMgControl.mjs +125 -0
  16. package/esm2020/src/gui/GuiMgForm.mjs +4 -0
  17. package/esm2020/src/gui/KeyboardItem.mjs +135 -0
  18. package/esm2020/src/gui/LastFocusedVal.mjs +11 -0
  19. package/esm2020/src/gui/MgValue.mjs +16 -0
  20. package/esm2020/src/gui/PropParentInterface.mjs +2 -0
  21. package/esm2020/src/gui/low/DialogHandler.mjs +7 -0
  22. package/esm2020/src/gui/low/GuiCommand.mjs +66 -0
  23. package/esm2020/src/gui/low/GuiCommandQueue.mjs +35 -0
  24. package/esm2020/src/gui/low/GuiInteractive.mjs +176 -0
  25. package/esm2020/src/gui/low/Style.mjs +20 -0
  26. package/esm2020/src/management/RuntimeContextBase.mjs +43 -0
  27. package/esm2020/src/management/data/BlobType.mjs +281 -0
  28. package/esm2020/src/management/data/DcValues.mjs +214 -0
  29. package/esm2020/src/management/data/DcValuesBuilderBase.mjs +96 -0
  30. package/esm2020/src/management/data/FieldDef.mjs +331 -0
  31. package/esm2020/src/management/data/FieldsTable.mjs +54 -0
  32. package/esm2020/src/management/data/GuiDataViewBase.mjs +90 -0
  33. package/esm2020/src/management/data/GuiFieldBase.mjs +82 -0
  34. package/esm2020/src/management/data/IRecord.mjs +2 -0
  35. package/esm2020/src/management/data/IReferencedObject.mjs +2 -0
  36. package/esm2020/src/management/data/NUM_TYPE.mjs +1741 -0
  37. package/esm2020/src/management/data/ObjectReferenceBase.mjs +48 -0
  38. package/esm2020/src/management/data/ObjectReferencesCollection.mjs +29 -0
  39. package/esm2020/src/management/data/RecordUtils.mjs +361 -0
  40. package/esm2020/src/management/data/VectorType.mjs +612 -0
  41. package/esm2020/src/management/data/VectorTypeBase.mjs +88 -0
  42. package/esm2020/src/management/events/IActionManager.mjs +2 -0
  43. package/esm2020/src/management/events/IGuiEventsManager.mjs +2 -0
  44. package/esm2020/src/management/exp/ExpressionInterface.mjs +244 -0
  45. package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +307 -0
  46. package/esm2020/src/management/gui/ControlTable.mjs +118 -0
  47. package/esm2020/src/management/gui/DisplayConvertor.mjs +1679 -0
  48. package/esm2020/src/management/gui/FieldValidator.mjs +711 -0
  49. package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +22 -0
  50. package/esm2020/src/management/gui/GuiFormPropertyAdapter.mjs +11 -0
  51. package/esm2020/src/management/gui/HebrewDate.mjs +278 -0
  52. package/esm2020/src/management/gui/Helps.mjs +237 -0
  53. package/esm2020/src/management/gui/MgControlBase.mjs +1858 -0
  54. package/esm2020/src/management/gui/MgFormBase.mjs +741 -0
  55. package/esm2020/src/management/gui/PIC.mjs +1185 -0
  56. package/esm2020/src/management/gui/PropDefaults.mjs +230 -0
  57. package/esm2020/src/management/gui/PropInterface.mjs +245 -0
  58. package/esm2020/src/management/gui/PropTable.mjs +221 -0
  59. package/esm2020/src/management/gui/Property.mjs +1356 -0
  60. package/esm2020/src/management/gui/ValidationDetails.mjs +248 -0
  61. package/esm2020/src/management/gui/ValidationDetailsBase.mjs +93 -0
  62. package/esm2020/src/management/gui/WrongFormatException.mjs +29 -0
  63. package/esm2020/src/management/tasks/GuiDataCollection.mjs +4 -0
  64. package/esm2020/src/management/tasks/GuiTaskBase.mjs +510 -0
  65. package/esm2020/src/management/tasks/IMGDataTable.mjs +2 -0
  66. package/esm2020/src/management/tasks/ITask.mjs +2 -0
  67. package/esm2020/src/management/tasks/MgTimer.mjs +21 -0
  68. package/esm2020/src/management/tasks/TaskDefinitionId.mjs +54 -0
  69. package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
  70. package/esm2020/src/util/MemoryUtil.mjs +35 -0
  71. package/esm2020/src/util/ObjectReference.mjs +36 -0
  72. package/esm2020/src/util/UsernamePasswordCredentials.mjs +52 -0
  73. package/fesm2015/magic-xpa-gui.mjs +16389 -0
  74. package/fesm2015/magic-xpa-gui.mjs.map +1 -1
  75. package/fesm2020/magic-xpa-gui.mjs +16203 -0
  76. package/fesm2020/magic-xpa-gui.mjs.map +1 -1
  77. package/index.d.ts +70 -1
  78. package/package.json +2 -2
  79. package/src/Commands.d.ts +40 -0
  80. package/src/Events.d.ts +155 -0
  81. package/src/EventsProcessor.d.ts +13 -0
  82. package/src/FocusManager.d.ts +8 -0
  83. package/src/GuiConstants.d.ts +65 -0
  84. package/src/GuiEnums.d.ts +282 -0
  85. package/src/GuiEnvironment.d.ts +4 -0
  86. package/src/IFlowMonitorQueue.d.ts +3 -0
  87. package/src/Manager.d.ts +26 -0
  88. package/src/UIBridge.d.ts +16 -0
  89. package/src/env/IEnvironment.d.ts +31 -0
  90. package/src/gui/ControlBase.d.ts +4 -0
  91. package/src/gui/GuiMgControl.d.ts +38 -0
  92. package/src/gui/GuiMgForm.d.ts +3 -0
  93. package/src/gui/KeyboardItem.d.ts +18 -0
  94. package/src/gui/LastFocusedVal.d.ts +7 -0
  95. package/src/gui/MgValue.d.ts +15 -0
  96. package/src/gui/PropParentInterface.d.ts +13 -0
  97. package/src/gui/low/DialogHandler.d.ts +4 -0
  98. package/src/gui/low/GuiCommand.d.ts +37 -0
  99. package/src/gui/low/GuiCommandQueue.d.ts +13 -0
  100. package/src/gui/low/GuiInteractive.d.ts +55 -0
  101. package/src/gui/low/Style.d.ts +19 -0
  102. package/src/management/RuntimeContextBase.d.ts +23 -0
  103. package/src/management/data/BlobType.d.ts +29 -0
  104. package/src/management/data/DcValues.d.ts +33 -0
  105. package/src/management/data/DcValuesBuilderBase.d.ts +17 -0
  106. package/src/management/data/FieldDef.d.ts +53 -0
  107. package/src/management/data/FieldsTable.d.ts +16 -0
  108. package/src/management/data/GuiDataViewBase.d.ts +27 -0
  109. package/src/management/data/GuiFieldBase.d.ts +17 -0
  110. package/src/management/data/IRecord.d.ts +12 -0
  111. package/src/management/data/IReferencedObject.d.ts +5 -0
  112. package/src/management/data/NUM_TYPE.d.ts +103 -0
  113. package/src/management/data/ObjectReferenceBase.d.ts +16 -0
  114. package/src/management/data/ObjectReferencesCollection.d.ts +10 -0
  115. package/src/management/data/RecordUtils.d.ts +21 -0
  116. package/src/management/data/VectorType.d.ts +52 -0
  117. package/src/management/data/VectorTypeBase.d.ts +8 -0
  118. package/src/management/events/IActionManager.d.ts +7 -0
  119. package/src/management/events/IGuiEventsManager.d.ts +20 -0
  120. package/src/management/exp/ExpressionInterface.d.ts +242 -0
  121. package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -0
  122. package/src/management/gui/ControlTable.d.ts +28 -0
  123. package/src/management/gui/DisplayConvertor.d.ts +103 -0
  124. package/src/management/gui/FieldValidator.d.ts +35 -0
  125. package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -0
  126. package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -0
  127. package/src/management/gui/HebrewDate.d.ts +46 -0
  128. package/src/management/gui/Helps.d.ts +51 -0
  129. package/src/management/gui/MgControlBase.d.ts +223 -0
  130. package/src/management/gui/MgFormBase.d.ts +160 -0
  131. package/src/management/gui/PIC.d.ts +108 -0
  132. package/src/management/gui/PropDefaults.d.ts +7 -0
  133. package/src/management/gui/PropInterface.d.ts +243 -0
  134. package/src/management/gui/PropTable.d.ts +33 -0
  135. package/src/management/gui/Property.d.ts +121 -0
  136. package/src/management/gui/ValidationDetails.d.ts +52 -0
  137. package/src/management/gui/ValidationDetailsBase.d.ts +14 -0
  138. package/src/management/gui/WrongFormatException.d.ts +9 -0
  139. package/src/management/tasks/GuiDataCollection.d.ts +4 -0
  140. package/src/management/tasks/GuiTaskBase.d.ts +150 -0
  141. package/src/management/tasks/IMGDataTable.d.ts +10 -0
  142. package/src/management/tasks/ITask.d.ts +6 -0
  143. package/src/management/tasks/MgTimer.d.ts +8 -0
  144. package/src/management/tasks/TaskDefinitionId.d.ts +16 -0
  145. package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -0
  146. package/src/util/MemoryUtil.d.ts +6 -0
  147. package/src/util/ObjectReference.d.ts +9 -0
  148. package/src/util/UsernamePasswordCredentials.d.ts +18 -0
@@ -0,0 +1,96 @@
1
+ import { DcValues } from './DcValues';
2
+ import { List, NNumber, NumberStyles, StringBuilder } from '@magic-xpa/mscorelib';
3
+ import { Base64, StorageAttribute } from '@magic-xpa/utils';
4
+ import { RecordUtils } from './RecordUtils';
5
+ import { GuiEnvironment } from '../../GuiEnvironment';
6
+ export class DcValuesBuilderBase {
7
+ CreateDcValues() {
8
+ return new DcValues(false);
9
+ }
10
+ SetId(dcValues, newId) {
11
+ dcValues.SetID(newId);
12
+ }
13
+ SetType(dcValues, type) {
14
+ dcValues.setType(type);
15
+ }
16
+ SetDisplayValues(dcValues, displayValues) {
17
+ dcValues.SetDisplayValues(displayValues);
18
+ }
19
+ SetLinkValues(dcValues, linkValues) {
20
+ dcValues.SetLinkValues(linkValues);
21
+ }
22
+ SetNullFlags(dcValues, nullFlagsStringOrNullFlags) {
23
+ if (arguments.length === 2 && (dcValues === null || dcValues instanceof DcValues) && (nullFlagsStringOrNullFlags === null || nullFlagsStringOrNullFlags.constructor === String)) {
24
+ this.SetNullFlags_0(dcValues, nullFlagsStringOrNullFlags);
25
+ return;
26
+ }
27
+ this.SetNullFlags_1(dcValues, nullFlagsStringOrNullFlags);
28
+ }
29
+ SetNullFlags_0(dcValues, nullFlagsString) {
30
+ let nullFlags = this.ParseNullFlags(nullFlagsString);
31
+ dcValues.setNullFlags(nullFlags);
32
+ }
33
+ SetNullFlags_1(dcValues, nullFlags) {
34
+ dcValues.setNullFlags(nullFlags);
35
+ }
36
+ ParseValues(valueStr, dataType, useHex) {
37
+ let snumber;
38
+ let tmpValue = null;
39
+ let buffer = new List();
40
+ let len;
41
+ let nextIdx;
42
+ let endIdx;
43
+ let suffixBuf = null;
44
+ switch (dataType) {
45
+ case StorageAttribute.NUMERIC:
46
+ case StorageAttribute.DATE:
47
+ case StorageAttribute.TIME:
48
+ if (useHex)
49
+ len = GuiEnvironment.Environment.GetSignificantNumSize() * 2;
50
+ else
51
+ len = Math.floor((GuiEnvironment.Environment.GetSignificantNumSize() + 2) / 3) * 4;
52
+ break;
53
+ case StorageAttribute.BOOLEAN:
54
+ len = 1;
55
+ break;
56
+ default:
57
+ len = 0;
58
+ break;
59
+ }
60
+ nextIdx = 0;
61
+ while (nextIdx < valueStr.length) {
62
+ if (dataType === StorageAttribute.ALPHA || dataType === StorageAttribute.UNICODE ||
63
+ dataType === StorageAttribute.BLOB || dataType === StorageAttribute.BLOB_VECTOR) {
64
+ snumber = valueStr.substr(nextIdx, 4);
65
+ len = NNumber.Parse(snumber, NumberStyles.HexNumber);
66
+ nextIdx += 4;
67
+ }
68
+ if (len >= 0x8000) {
69
+ suffixBuf = new StringBuilder();
70
+ len -= 0x8000;
71
+ nextIdx += RecordUtils.getSpannedField(valueStr, len, nextIdx, dataType, suffixBuf, useHex);
72
+ buffer.push(suffixBuf.ToString());
73
+ }
74
+ else {
75
+ endIdx = nextIdx + len;
76
+ if (useHex)
77
+ tmpValue = valueStr.substr(nextIdx, (endIdx) - (nextIdx));
78
+ else
79
+ tmpValue = Base64.decodeToHex(valueStr.substr(nextIdx, (endIdx) - (nextIdx)));
80
+ buffer.push(tmpValue);
81
+ nextIdx = endIdx;
82
+ }
83
+ }
84
+ return buffer.ToArray();
85
+ }
86
+ ParseNullFlags(nullFlagsString) {
87
+ let array = new Array(nullFlagsString.length);
88
+ for (let i = 0; i < nullFlagsString.length; i = i + 1) {
89
+ array[i] = (nullFlagsString.charAt(i) !== '0');
90
+ }
91
+ return array;
92
+ }
93
+ constructor() {
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXNCdWlsZGVyQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9kYXRhL0RjVmFsdWVzQnVpbGRlckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBdUJwRCxNQUFNLE9BQWdCLG1CQUFtQjtJQUl2QyxjQUFjO1FBQ1osT0FBTyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWtCLEVBQUUsS0FBYTtRQUNyQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBa0IsRUFBRSxJQUFzQjtRQUNoRCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFrQixFQUFFLGFBQXVCO1FBQzFELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWtCLEVBQUUsVUFBb0I7UUFDcEQsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBSUQsWUFBWSxDQUFDLFFBQWtCLEVBQUUsMEJBQStCO1FBQzlELElBQUksU0FB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Q0k7Z0JBQ0gsTUFBTSxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ3ZCLElBQUksTUFBTTtvQkFDUixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7O29CQUUxRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUtoRixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixPQUFPLEdBQUcsTUFBTSxDQUFDO2FBQ2xCO1NBQ0Y7UUFHRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLGVBQXVCO1FBQ3BDLElBQUksS0FBSyxHQUFjLElBQUksS0FBSyxDQUFVLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRSxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3RCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBUSxDQUFDO1NBQ3ZEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7SUFDQSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RjVmFsdWVzfSBmcm9tICcuL0RjVmFsdWVzJztcclxuaW1wb3J0IHtMaXN0LCBOTnVtYmVyLCBOdW1iZXJTdHlsZXMsIFN0cmluZ0J1aWxkZXJ9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtCYXNlNjQsIFN0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge1JlY29yZFV0aWxzfSBmcm9tICcuL1JlY29yZFV0aWxzJztcclxuaW1wb3J0IHtHdWlFbnZpcm9ubWVudH0gZnJvbSAnLi4vLi4vR3VpRW52aXJvbm1lbnQnO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gQmFzZSBjbGFzcyBmb3IgRGNWYWx1ZXMgYnVpbGRlci4gVGhlIGNsYXNzIGlzIGFic3RyYWN0IGFuZCwgdGh1cywgbXVzdCBiZSBpbmhlcml0ZWQuXHJcbi8vLyBUaGUgaW5oZXJpdGluZyBjbGFzcywgd2hpY2ggd2lsbCB1c3VhbGx5IGJlIGluIGFub3RoZXIgcGFja2FnZSwgd2lsbCBub3QgYmUgYWJsZSB0byBtb2RpZnlcclxuLy8vIGEgRGNWYWx1ZXMgb2JqZWN0IGRpcmVjdGx5LCBzaW5jZSBhbGwgaXRzIHNldHRlciBtZXRob2RzIGFyZSAnaW50ZXJuYWwnLiBUaGlzIGNsYXNzIHdpbGxcclxuLy8vIHByb3ZpZGUgdGhlIHNldHRlciBtZXRob2RzIGZvciB0aGUgaW5oZXJpdGluZyBidWlsZGVyLlxyXG4vLy8gPHBhcmE+SGVyZSdzIGEgdXNhZ2UgZXhhbXBsZTpcclxuLy8vIDxleGFtcGxlPlxyXG4vLy8gY2xhc3MgTXlDb25jcmV0ZUJ1aWxkZXIgOiBEY1ZhbHVlc0J1aWxkZXJCYXNlXHJcbi8vLyB7XHJcbi8vLyAgIHB1YmxpYyBvdmVycmlkZSBEY1ZhbHVlcyBCdWlsZCgpXHJcbi8vLyAgIHtcclxuLy8vICAgICAgdmFyIGRjVmFsdWVzID0gYmFzZS5DcmVhdGVEY1ZhbHVlcyhmYWxzZSk7XHJcbi8vLyAgICAgIFNldElkKG5ld0lkKTtcclxuLy8vICAgICAgU2V0VHlwZSh0aGVUeXBlKTtcclxuLy8vICAgICAgU2V0RGlzcGxheVZhbHVlcyh0aGVEaXNwbGF5VmFsdWVzKTtcclxuLy8vICAgICAgLi4uXHJcbi8vLyAgICAgIHJldHVybiBkY1ZhbHVlcztcclxuLy8vICAgfVxyXG4vLy8gfVxyXG4vLy8gPC9leGFtcGxlPlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGNWYWx1ZXNCdWlsZGVyQmFzZSB7XHJcblxyXG4gIGFic3RyYWN0IEJ1aWxkKCk6IERjVmFsdWVzO1xyXG5cclxuICBDcmVhdGVEY1ZhbHVlcygpOiBEY1ZhbHVlcyB7XHJcbiAgICByZXR1cm4gbmV3IERjVmFsdWVzKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIFNldElkKGRjVmFsdWVzOiBEY1ZhbHVlcywgbmV3SWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuU2V0SUQobmV3SWQpO1xyXG4gIH1cclxuXHJcbiAgU2V0VHlwZShkY1ZhbHVlczogRGNWYWx1ZXMsIHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiB2b2lkIHtcclxuICAgIGRjVmFsdWVzLnNldFR5cGUodHlwZSk7XHJcbiAgfVxyXG5cclxuICBTZXREaXNwbGF5VmFsdWVzKGRjVmFsdWVzOiBEY1ZhbHVlcywgZGlzcGxheVZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGRjVmFsdWVzLlNldERpc3BsYXlWYWx1ZXMoZGlzcGxheVZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBTZXRMaW5rVmFsdWVzKGRjVmFsdWVzOiBEY1ZhbHVlcywgbGlua1ZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGRjVmFsdWVzLlNldExpbmtWYWx1ZXMobGlua1ZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBTZXROdWxsRmxhZ3MoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmc6IHN0cmluZyk6IHZvaWQ7XHJcbiAgU2V0TnVsbEZsYWdzKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzOiBib29sZWFuW10pOiB2b2lkO1xyXG4gIFNldE51bGxGbGFncyhkY1ZhbHVlczogRGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZ09yTnVsbEZsYWdzOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmIChkY1ZhbHVlcyA9PT0gbnVsbCB8fCBkY1ZhbHVlcyBpbnN0YW5jZW9mIERjVmFsdWVzKSAmJiAobnVsbEZsYWdzU3RyaW5nT3JOdWxsRmxhZ3MgPT09IG51bGwgfHwgbnVsbEZsYWdzU3RyaW5nT3JOdWxsRmxhZ3MuY29uc3RydWN0b3IgPT09IFN0cmluZykpIHtcclxuICAgICAgdGhpcy5TZXROdWxsRmxhZ3NfMChkY1ZhbHVlcywgbnVsbEZsYWdzU3RyaW5nT3JOdWxsRmxhZ3MpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldE51bGxGbGFnc18xKGRjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNldE51bGxGbGFnc18wKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBudWxsRmxhZ3M6IGJvb2xlYW5bXSA9IHRoaXMuUGFyc2VOdWxsRmxhZ3MobnVsbEZsYWdzU3RyaW5nKTtcclxuICAgIGRjVmFsdWVzLnNldE51bGxGbGFncyhudWxsRmxhZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBTZXROdWxsRmxhZ3NfMShkY1ZhbHVlczogRGNWYWx1ZXMsIG51bGxGbGFnczogYm9vbGVhbltdKTogdm9pZCB7XHJcbiAgICBkY1ZhbHVlcy5zZXROdWxsRmxhZ3MobnVsbEZsYWdzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUGFyc2UgYSBzZXJpYWxpemVkIHZhbHVlcyBzdHJpbmcgYXMgYW4gYXJyYXkgb2YgdmFsdWVzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVTdHJcIj5UaGlzIGlzIHN0cmluZyBvZiB0aGUgY29uY2F0ZW5hdGVkIHZhbHVlcywgd2l0aCBlYWNoIHZhbHVlIHByZWNlZGVkIHdpdGggYSBoZXggbnVtYmVyIGRlbm90aW5nIGl0cyBsZW5ndGguPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRhVHlwZVwiPlRoZSBkYXRhIHR5cGUgb2YgdGhlIHZhbHVlcy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInVzZUhleFwiPjwvcGFyYW0+XHJcbiAgcHJvdGVjdGVkIFBhcnNlVmFsdWVzKHZhbHVlU3RyOiBzdHJpbmcsIGRhdGFUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCB1c2VIZXg6IGJvb2xlYW4pOiBzdHJpbmdbXSB7XHJcblxyXG4gICAgbGV0IHNudW1iZXI6IHN0cmluZztcclxuICAgIGxldCB0bXBWYWx1ZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBidWZmZXI6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGxldCBsZW46IG51bWJlcjtcclxuICAgIGxldCBuZXh0SWR4OiBudW1iZXI7XHJcbiAgICBsZXQgZW5kSWR4OiBudW1iZXI7XHJcbiAgICBsZXQgc3VmZml4QnVmOiBTdHJpbmdCdWlsZGVyID0gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgaWYgKHVzZUhleClcclxuICAgICAgICAgIGxlbiA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNpZ25pZmljYW50TnVtU2l6ZSgpICogMjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBsZW4gPSBNYXRoLmZsb29yKChHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSArIDIpIC8gMykgKiA0O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46XHJcbiAgICAgICAgbGVuID0gMTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgbGVuID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBuZXh0SWR4ID0gMDtcclxuICAgIHdoaWxlIChuZXh0SWR4IDwgdmFsdWVTdHIubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiBhbiBhbHBoYSBkYXRhXHJcbiAgICAgIGlmIChkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8XHJcbiAgICAgICAgZGF0YVR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUikge1xyXG4gICAgICAgIHNudW1iZXIgPSB2YWx1ZVN0ci5zdWJzdHIobmV4dElkeCwgNCk7XHJcbiAgICAgICAgbGVuID0gTk51bWJlci5QYXJzZShzbnVtYmVyLCBOdW1iZXJTdHlsZXMuSGV4TnVtYmVyKTtcclxuICAgICAgICBuZXh0SWR4ICs9IDQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHNwYW5uZWRcclxuICAgICAgaWYgKGxlbiA+PSAweDgwMDApIHtcclxuICAgICAgICBzdWZmaXhCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgIGxlbiAtPSAweDgwMDA7XHJcbiAgICAgICAgLy8gbmV4dCBzZWdtZW50IG1heSBhbHNvIGJlIHNwYW5uZWRcclxuICAgICAgICBuZXh0SWR4ICs9IFJlY29yZFV0aWxzLmdldFNwYW5uZWRGaWVsZCh2YWx1ZVN0ciwgbGVuLCBuZXh0SWR4LCBkYXRhVHlwZSwgc3VmZml4QnVmLCB1c2VIZXgpO1xyXG4gICAgICAgIGJ1ZmZlci5wdXNoKHN1ZmZpeEJ1Zi5Ub1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlbmRJZHggPSBuZXh0SWR4ICsgbGVuO1xyXG4gICAgICAgIGlmICh1c2VIZXgpXHJcbiAgICAgICAgICB0bXBWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihuZXh0SWR4LCAoZW5kSWR4KSAtIChuZXh0SWR4KSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG1wVmFsdWUgPSBCYXNlNjQuZGVjb2RlVG9IZXgodmFsdWVTdHIuc3Vic3RyKG5leHRJZHgsIChlbmRJZHgpIC0gKG5leHRJZHgpKSk7XHJcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYXJlIHJlZHVuZGFudCBzaW5jZSB0aGUgbWFrZVByaW50YWJsZSgpIGlzIGNhbGxlZFxyXG4gICAgICAgIC8vIGluIHRoZSBndWlNYW5hZ2VyIHdoZW4gYnVpbGRpbmcgdGhlIG9wdGlvbnNcclxuICAgICAgICAvKmlmIChkYXRhVHlwZSA9PSBEQVRBX1RZUEVfQUxQSEEpXHJcbiAgICAgICAgICAgICB0bXBWYWx1ZSA9IGd1aU1hbmFnZXIubWFrZVByaW50YWJsZSh0bXBWYWx1ZSk7Ki9cclxuICAgICAgICBidWZmZXIucHVzaCh0bXBWYWx1ZSk7XHJcbiAgICAgICAgbmV4dElkeCA9IGVuZElkeDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHZlY3RvciB0byBhcnJheVxyXG4gICAgcmV0dXJuIGJ1ZmZlci5Ub0FycmF5KCk7XHJcbiAgfVxyXG5cclxuICBQYXJzZU51bGxGbGFncyhudWxsRmxhZ3NTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW5bXSB7XHJcbiAgICBsZXQgYXJyYXk6IGJvb2xlYW5bXSA9IG5ldyBBcnJheTxib29sZWFuPihudWxsRmxhZ3NTdHJpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBudWxsRmxhZ3NTdHJpbmcubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgYXJyYXlbaV0gPSAobnVsbEZsYWdzU3RyaW5nLmNoYXJBdChpKSAhPT0gJzAnLyonMCcqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,331 @@
1
+ import { BlobType } from "./BlobType";
2
+ import { StorageAttribute, StrUtil, XmlParser, Base64, XMLConstants } from "@magic-xpa/utils";
3
+ import { NNumber, NString, Int32 } from "@magic-xpa/mscorelib";
4
+ import { Events } from "../../Events";
5
+ import { DisplayConvertor } from "../gui/DisplayConvertor";
6
+ import { VectorType } from "./VectorType";
7
+ import { GuiEnvironment } from "../../GuiEnvironment";
8
+ export class FieldDef {
9
+ set DbModifiable(value) {
10
+ this._dbModifiable = value;
11
+ }
12
+ get DbModifiable() {
13
+ return this._dbModifiable;
14
+ }
15
+ constructor(id) {
16
+ this.DefaultValue = null;
17
+ this.NullAllowed = false;
18
+ this._nullDefault = false;
19
+ this._nullValue = null;
20
+ this._nullDisplay = null;
21
+ this._dbModifiable = true;
22
+ this._partOfDataview = true;
23
+ this._picture = null;
24
+ this._size = 0;
25
+ this._varName = null;
26
+ this._contentType = BlobType.CONTENT_TYPE_UNKNOWN;
27
+ this._vecCellsContentType = BlobType.CONTENT_TYPE_UNKNOWN;
28
+ this._vecCellsSize = 0;
29
+ this._vecCellsType = StorageAttribute.NONE;
30
+ this._type = StorageAttribute.NONE;
31
+ this.Storage = 0;
32
+ this.VarDisplayName = null;
33
+ this._id = 0;
34
+ this._spaces = null;
35
+ this._id = id;
36
+ this.VarDisplayName = NString.Empty;
37
+ }
38
+ get PartOfDataview() {
39
+ return this._partOfDataview;
40
+ }
41
+ getId() {
42
+ return this._id;
43
+ }
44
+ getType() {
45
+ return this._type;
46
+ }
47
+ static getMagicDefaultNullDisplayValue(type) {
48
+ let val;
49
+ switch (type) {
50
+ case StorageAttribute.ALPHA:
51
+ case StorageAttribute.UNICODE:
52
+ case StorageAttribute.BOOLEAN:
53
+ val = "";
54
+ break;
55
+ case StorageAttribute.NUMERIC:
56
+ case StorageAttribute.DATE:
57
+ case StorageAttribute.TIME:
58
+ val = "";
59
+ break;
60
+ }
61
+ return val;
62
+ }
63
+ static getMagicDefaultValue(type) {
64
+ let val = null;
65
+ switch (type) {
66
+ case StorageAttribute.ALPHA:
67
+ case StorageAttribute.UNICODE:
68
+ val = "";
69
+ break;
70
+ case StorageAttribute.BLOB:
71
+ case StorageAttribute.BLOB_VECTOR:
72
+ val = BlobType.getEmptyBlobPrefix('\0') + ";";
73
+ break;
74
+ case StorageAttribute.NUMERIC:
75
+ case StorageAttribute.TIME:
76
+ val = "FF00000000000000000000000000000000000000";
77
+ break;
78
+ case StorageAttribute.DATE:
79
+ val = FieldDef._default_date;
80
+ break;
81
+ case StorageAttribute.BOOLEAN:
82
+ val = "0";
83
+ break;
84
+ }
85
+ return val;
86
+ }
87
+ getDefaultValue() {
88
+ let val = null;
89
+ if (this._type !== StorageAttribute.BLOB_VECTOR) {
90
+ if (this._nullDefault && this._nullValue !== null)
91
+ val = this._nullValue;
92
+ else if (this.DefaultValue !== null)
93
+ val = this.DefaultValue;
94
+ else
95
+ val = this.getMagicDefaultValue();
96
+ }
97
+ else
98
+ val = this.getMagicDefaultValue();
99
+ return val;
100
+ }
101
+ getCellDefualtValue() {
102
+ let val;
103
+ if (this._type === StorageAttribute.BLOB_VECTOR) {
104
+ if (this._nullDefault && this._nullValue !== null)
105
+ val = this._nullValue;
106
+ else if (this.DefaultValue !== null)
107
+ val = this.DefaultValue;
108
+ else {
109
+ val = FieldDef.getMagicDefaultValue(this._vecCellsType);
110
+ if (this._vecCellsType === StorageAttribute.BLOB)
111
+ val = BlobType.setContentType(val, this._vecCellsContentType);
112
+ }
113
+ }
114
+ else
115
+ val = this.getDefaultValue();
116
+ return val;
117
+ }
118
+ getMagicDefaultValue() {
119
+ let val = FieldDef.getMagicDefaultValue(this._type);
120
+ if (this._type === StorageAttribute.BLOB)
121
+ val = BlobType.setContentType(val, this._contentType);
122
+ else {
123
+ if (this._type === StorageAttribute.BLOB_VECTOR) {
124
+ val = BlobType.SetVecCellAttr(val, this._vecCellsType);
125
+ if (this._vecCellsType === StorageAttribute.BLOB)
126
+ val = BlobType.setContentType(val, this._vecCellsContentType);
127
+ }
128
+ }
129
+ return val;
130
+ }
131
+ getContentType() {
132
+ return this._contentType;
133
+ }
134
+ hasNullDisplayValue() {
135
+ return this._nullDisplay !== null;
136
+ }
137
+ getSize() {
138
+ return this._size;
139
+ }
140
+ getVecCellsSize() {
141
+ return (this._type === StorageAttribute.BLOB_VECTOR) ? this._vecCellsSize : this._size;
142
+ }
143
+ setLengths(type, vecCells) {
144
+ let res = this._size;
145
+ switch (type) {
146
+ case StorageAttribute.ALPHA:
147
+ case StorageAttribute.MEMO:
148
+ case StorageAttribute.UNICODE:
149
+ if (vecCells) {
150
+ res = this._vecCellsSize;
151
+ this._spaces = new Array(this._vecCellsSize);
152
+ }
153
+ else
154
+ this._spaces = new Array(this._size);
155
+ for (let i = 0; i < this._size; i = i + 1) {
156
+ this._spaces[i] = ' ';
157
+ }
158
+ break;
159
+ case StorageAttribute.NUMERIC:
160
+ case StorageAttribute.DATE:
161
+ case StorageAttribute.TIME:
162
+ res = GuiEnvironment.Environment.GetSignificantNumSize() * 2;
163
+ break;
164
+ case StorageAttribute.BOOLEAN:
165
+ res = (!vecCells ? 1 : 4);
166
+ break;
167
+ case StorageAttribute.BLOB:
168
+ res = (!vecCells ? Int32.MaxValue : VectorType.BLOB_TYPE_STRUCT_SIZE);
169
+ break;
170
+ case StorageAttribute.BLOB_VECTOR:
171
+ res = Int32.MaxValue;
172
+ if (!vecCells)
173
+ this.setLengths(this._vecCellsType, true);
174
+ else
175
+ res = VectorType.BLOB_TYPE_STRUCT_SIZE;
176
+ break;
177
+ }
178
+ if (vecCells)
179
+ this._vecCellsSize = res;
180
+ else
181
+ this._size = res;
182
+ }
183
+ getCellsType() {
184
+ return (this._type === StorageAttribute.BLOB_VECTOR) ? this._vecCellsType : this._type;
185
+ }
186
+ getVecCellsContentType() {
187
+ return this._vecCellsContentType;
188
+ }
189
+ getNullValue() {
190
+ return this._nullValue;
191
+ }
192
+ isNullDefault() {
193
+ return this._nullDefault;
194
+ }
195
+ getNullDisplay() {
196
+ let val;
197
+ switch (this._type) {
198
+ case StorageAttribute.ALPHA:
199
+ case StorageAttribute.UNICODE:
200
+ case StorageAttribute.BOOLEAN:
201
+ val = "";
202
+ break;
203
+ case StorageAttribute.NUMERIC:
204
+ case StorageAttribute.DATE:
205
+ case StorageAttribute.TIME:
206
+ val = null;
207
+ break;
208
+ }
209
+ return val;
210
+ }
211
+ IsContentUnicode() {
212
+ if (this._type === StorageAttribute.BLOB && this._contentType !== BlobType.CONTENT_TYPE_UNICODE)
213
+ return false;
214
+ return true;
215
+ }
216
+ GetPicture() {
217
+ return this._picture;
218
+ }
219
+ setAttribute(attribute, valueStr) {
220
+ let isTagProcessed = true;
221
+ switch (attribute) {
222
+ case XMLConstants.MG_ATTR_TYPE:
223
+ this._type = valueStr.charAt(0);
224
+ break;
225
+ case XMLConstants.MG_ATTR_SIZE:
226
+ this._size = XmlParser.getInt(valueStr);
227
+ if (this._size <= 0)
228
+ Events.WriteExceptionToLog("in Field.initElements(): size must be greater than zero");
229
+ break;
230
+ case XMLConstants.MG_ATTR_VAR_NAME:
231
+ this._varName = XmlParser.unescape(valueStr).toString();
232
+ break;
233
+ case XMLConstants.MG_ATTR_VAR_DISP_NAME:
234
+ this.VarDisplayName = XmlParser.unescape(valueStr).toString();
235
+ break;
236
+ case XMLConstants.MG_ATTR_PICTURE:
237
+ this._picture = XmlParser.unescape(valueStr).toString();
238
+ break;
239
+ case XMLConstants.MG_ATTR_VEC_CELLS_SIZE:
240
+ this._vecCellsSize = NNumber.Parse(valueStr);
241
+ break;
242
+ case XMLConstants.MG_ATTR_VEC_CELLS_ATTR:
243
+ this._vecCellsType = valueStr.charAt(0);
244
+ break;
245
+ case XMLConstants.MG_ATTR_VEC_CELLS_CONTENT:
246
+ this._vecCellsContentType = valueStr.charAt(0);
247
+ break;
248
+ case XMLConstants.MG_ATTR_NULLVALUE:
249
+ if (this._type === StorageAttribute.NUMERIC || this._type === StorageAttribute.DATE || this._type === StorageAttribute.TIME) {
250
+ if (GuiEnvironment.Environment.GetDebugLevel() > 1)
251
+ this._nullValue = XmlParser.unescape(valueStr).toString();
252
+ else
253
+ this._nullValue = Base64.decodeToHex(valueStr);
254
+ }
255
+ else
256
+ this._nullValue = XmlParser.unescape(valueStr).toString();
257
+ break;
258
+ case XMLConstants.MG_ATTR_NULLDISPLAY:
259
+ this._nullDisplay = XmlParser.unescape(valueStr).toString();
260
+ break;
261
+ case XMLConstants.MG_ATTR_NULLDEFAULT:
262
+ this._nullDefault = DisplayConvertor.toBoolean(valueStr);
263
+ break;
264
+ case XMLConstants.MG_ATTR_DB_MODIFIABLE:
265
+ this.DbModifiable = DisplayConvertor.toBoolean(valueStr);
266
+ break;
267
+ case XMLConstants.MG_ATTR_DEFAULTVALUE:
268
+ this.DefaultValue = valueStr;
269
+ if (this._type === StorageAttribute.ALPHA || this._type === StorageAttribute.UNICODE) {
270
+ this.DefaultValue = XmlParser.unescape(valueStr).toString();
271
+ this.DefaultValue = StrUtil.padStr(this.DefaultValue, this._size);
272
+ }
273
+ else if (this._type !== StorageAttribute.BLOB && this._type !== StorageAttribute.BOOLEAN) {
274
+ if ((this._type === StorageAttribute.BLOB_VECTOR &&
275
+ (this._vecCellsType === StorageAttribute.NUMERIC || this._vecCellsType === StorageAttribute.DATE || this._vecCellsType === StorageAttribute.TIME)) ||
276
+ (this._type === StorageAttribute.NUMERIC || this._type === StorageAttribute.DATE || this._type === StorageAttribute.TIME)) {
277
+ if (GuiEnvironment.Environment.GetDebugLevel() < 1)
278
+ this.DefaultValue = Base64.decodeToHex(valueStr);
279
+ }
280
+ }
281
+ else if (this.DefaultValue.length === 0 && this._type !== StorageAttribute.BLOB)
282
+ this.DefaultValue = null;
283
+ else if (this._type === StorageAttribute.BLOB)
284
+ this.DefaultValue = BlobType.createFromString(this.DefaultValue, this._contentType);
285
+ break;
286
+ case XMLConstants.MG_ATTR_NULLALLOWED:
287
+ this.NullAllowed = DisplayConvertor.toBoolean(valueStr);
288
+ break;
289
+ case XMLConstants.MG_ATTR_BLOB_CONTENT:
290
+ this._contentType = valueStr.charAt(0);
291
+ break;
292
+ case XMLConstants.MG_ATTR_PART_OF_DATAVIEW:
293
+ this._partOfDataview = DisplayConvertor.toBoolean(valueStr);
294
+ break;
295
+ case XMLConstants.MG_ATTR_STORAGE:
296
+ this.Storage = XmlParser.getInt(valueStr);
297
+ break;
298
+ default:
299
+ isTagProcessed = false;
300
+ break;
301
+ }
302
+ return isTagProcessed;
303
+ }
304
+ fillData(parser) {
305
+ let text = parser.ReadToEndOfCurrentElement();
306
+ text = text.substr(text.indexOf(XMLConstants.MG_TAG_FLDH) + XMLConstants.MG_TAG_FLDH.length);
307
+ let tokens = XmlParser.getTokens(text, XMLConstants.XML_ATTR_DELIM);
308
+ this.initElements(tokens);
309
+ }
310
+ initElements(tokensVector) {
311
+ for (let i = 0; i < tokensVector.length; i = i + 2) {
312
+ let attribute = tokensVector.get_Item(i);
313
+ let valueStr = tokensVector.get_Item(i + 1);
314
+ this.setAttribute(attribute, valueStr);
315
+ }
316
+ this.SetAfterParsing();
317
+ }
318
+ SetAfterParsing() {
319
+ this.setLengths(this._type, false);
320
+ if (this.NullAllowed && this._nullDisplay === null)
321
+ this._nullDisplay = "";
322
+ }
323
+ getVarName() {
324
+ return this._varName || "";
325
+ }
326
+ getName() {
327
+ return this.getVarName();
328
+ }
329
+ }
330
+ FieldDef._default_date = null;
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmllbGREZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9GaWVsZERlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RyxPQUFPLEVBQU8sT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE1BQU0sT0FBTyxRQUFRO0lBUW5CLElBQUksWUFBWSxDQUFDLEtBQWM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBeUJELFlBQVksRUFBVTtRQXJDdEIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixpQkFBWSxHQUFXLElBQUksQ0FBQztRQVM5QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUU5QixvQkFBZSxHQUFZLElBQUksQ0FBQztRQUM5QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLFVBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsYUFBUSxHQUFXLElBQUksQ0FBQztRQUcxQixpQkFBWSxHQUFXLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztRQUNuRCx5QkFBb0IsR0FBVyxRQUFRLENBQUMsb0JBQW9CLENBQUM7UUFDN0Qsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ3hELFVBQUssR0FBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQzFELFlBQU8sR0FBZSxDQUFDLENBQUM7UUFDeEIsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFHWCxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLFlBQU8sR0FBYSxJQUFJLENBQUM7UUFPakMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUtELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQU9ELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQU1ELE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxJQUFzQjtRQUMzRCxJQUFJLEdBQVcsQ0FBQztRQUVoQixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1lBQzVCLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzlCLEtBQUssZ0JBQWdCLENBQUMsT0FBTztnQkFDM0IsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxNQUFNO1lBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDOUIsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUV4QixHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU07U0FDVDtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQU1ELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFzQjtRQUNoRCxJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUM7UUFDdkIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLGdCQUFnQixDQUFDLEtBQUssQ0FBQztZQUM1QixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssZ0JBQWdCLENBQUMsV0FBVztnQkFDL0IsR0FBRyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQzlDLE1BQU07WUFDUixLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3hCLEdBQUcsR0FBRywwQ0FBMEMsQ0FBQztnQkFDakQsTUFBTTtZQUNSLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ1YsTUFBTTtTQUNUO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksR0FBRyxHQUFXLElBQUksQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUk7Z0JBQy9DLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2lCQUNuQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSTtnQkFDakMsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7O2dCQUV4QixHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDckM7O1lBRUUsR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRXJDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQU1ELG1CQUFtQjtRQUNqQixJQUFJLEdBQVcsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUk7Z0JBQy9DLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2lCQUNuQixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSTtnQkFDL0IsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7aUJBQ3ZCO2dCQUNILEdBQUcsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtvQkFDOUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ2pFO1NBQ0Y7O1lBRUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFLRCxvQkFBb0I7UUFDbEIsSUFBSSxHQUFHLEdBQVcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtZQUN0QyxHQUFHLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25EO1lBQ0gsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLFdBQVcsRUFBRTtnQkFDL0MsR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLGdCQUFnQixDQUFDLElBQUk7b0JBQzlDLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUNqRTtTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBS0QsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS0QsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQU1ELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUtELGVBQWU7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN6RixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQXNCLEVBQUUsUUFBaUI7UUFDbEQsSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUU3QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1lBQzVCLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssZ0JBQWdCLENBQUMsT0FBTztnQkFDM0IsSUFBSSxRQUFRLEVBQUU7b0JBQ1osR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN0RDs7b0JBRUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRS9DLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztpQkFDdkI7Z0JBQ0QsTUFBTTtZQUVSLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1lBQzlCLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtnQkFDeEIsR0FBRyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzdELE1BQU07WUFFUixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQzNCLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUd4QixHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3RFLE1BQU07WUFFUixLQUFLLGdCQUFnQixDQUFDLFdBQVc7Z0JBQy9CLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUTtvQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7O29CQUUxQyxHQUFHLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixDQUFDO2dCQUN6QyxNQUFNO1NBQ1Q7UUFFRCxJQUFJLFFBQVE7WUFDVixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQzs7WUFFekIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUtELFlBQVk7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN6RixDQUFDO0lBTUQsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFLRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFLRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFLRCxjQUFjO1FBQ1osSUFBSSxHQUFRLENBQUM7UUFFYixRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDNUIsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDOUIsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUMzQixHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNULE1BQU07WUFFUixLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUMzQixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBRXhCLEdBQUcsR0FBRyxJQUFJLENBQUM7Z0JBQ1gsTUFBTTtTQUNUO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBTUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsQ0FBQyxvQkFBb0I7WUFDN0YsT0FBTyxLQUFLLENBQUM7UUFFZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFLUSxZQUFZLENBQUMsU0FBaUIsRUFBRSxRQUFnQjtRQUN2RCxJQUFJLGNBQWMsR0FBWSxJQUFJLENBQUM7UUFFbkMsUUFBUSxTQUFTLEVBQUU7WUFDakIsS0FBSyxZQUFZLENBQUMsWUFBWTtnQkFDNUIsSUFBSSxDQUFDLEtBQUssR0FBcUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLFlBQVk7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2dCQUN4RixNQUFNO1lBQ1IsS0FBSyxZQUFZLENBQUMsZ0JBQWdCO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hELE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxxQkFBcUI7Z0JBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDOUQsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLGVBQWU7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDeEQsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLHNCQUFzQjtnQkFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO1lBQ1IsS0FBSyxZQUFZLENBQUMsc0JBQXNCO2dCQUN0QyxJQUFJLENBQUMsYUFBYSxHQUFxQixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxNQUFNO1lBQ1IsS0FBSyxZQUFZLENBQUMseUJBQXlCO2dCQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLGlCQUFpQjtnQkFDakMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtvQkFDM0gsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7d0JBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7d0JBRTFELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEQ7O29CQUVDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUQsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLG1CQUFtQjtnQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1RCxNQUFNO1lBQ1IsS0FBSyxZQUFZLENBQUMsbUJBQW1CO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekQsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLHFCQUFxQjtnQkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxvQkFBb0I7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxFQUFFO29CQUNwRixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbkU7cUJBQ0ksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtvQkFFeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsV0FBVzt3QkFDOUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNsSixDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzNILElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDOzRCQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ3BEO2lCQUNGO3FCQUNJLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsSUFBSTtvQkFDN0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7cUJBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO29CQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdEYsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLG1CQUFtQjtnQkFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hELE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxvQkFBb0I7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLHdCQUF3QjtnQkFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVELE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxlQUFlO2dCQUMvQixJQUFJLENBQUMsT0FBTyxHQUFlLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RELE1BQU07WUFDUjtnQkFDRSxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixNQUFNO1NBQ1Q7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBS0QsUUFBUSxDQUFDLE1BQWlCO1FBQ3hCLElBQUksSUFBSSxHQUFXLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3RELElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0YsSUFBSSxNQUFNLEdBQWlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFPRCxZQUFZLENBQUMsWUFBMEI7UUFDckMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxTQUFTLEdBQVcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLFFBQVEsR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUdwRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFLRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBUUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNCLENBQUM7O0FBaGJnQixzQkFBYSxHQUFXLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmxvYlR5cGV9IGZyb20gXCIuL0Jsb2JUeXBlXCI7XHJcbmltcG9ydCB7RmxkU3RvcmFnZSwgU3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCwgWG1sUGFyc2VyLCBCYXNlNjQsIFhNTENvbnN0YW50c30gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtMaXN0LCBOTnVtYmVyLCBOU3RyaW5nLCBJbnQzMn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tIFwiLi4vLi4vRXZlbnRzXCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbnZlcnRvcn0gZnJvbSBcIi4uL2d1aS9EaXNwbGF5Q29udmVydG9yXCI7XHJcbmltcG9ydCB7VmVjdG9yVHlwZX0gZnJvbSBcIi4vVmVjdG9yVHlwZVwiO1xyXG5pbXBvcnQgeyBHdWlFbnZpcm9ubWVudCB9IGZyb20gXCIuLi8uLi9HdWlFbnZpcm9ubWVudFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkRGVmIHtcclxuICBEZWZhdWx0VmFsdWU6IHN0cmluZyA9IG51bGw7XHJcbiAgTnVsbEFsbG93ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX251bGxEZWZhdWx0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIF9udWxsVmFsdWU6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIF9udWxsRGlzcGxheTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8gdHJ1ZSwgaWYgZmllbGQgaXMgbW9kaWZpYWJsZSBvbiBmaWVsZCBsZXZlbFxyXG4gIHNldCBEYk1vZGlmaWFibGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2RiTW9kaWZpYWJsZSA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgRGJNb2RpZmlhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RiTW9kaWZpYWJsZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGJNb2RpZmlhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBfcGFydE9mRGF0YXZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb3RlY3RlZCBfcGljdHVyZTogc3RyaW5nID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgX3NpemU6IG51bWJlciA9IDA7XHJcbiAgcHJvdGVjdGVkIF92YXJOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLyBPbmx5IGZvciBCTE9CIGZpZWxkLiBEb2VzIGl0IGNvbnRhaW4gYSB1bmljb2RlIG9yIEFOU0kgZGF0YT9cclxuICBwcml2YXRlIF9jb250ZW50VHlwZTogc3RyaW5nID0gQmxvYlR5cGUuQ09OVEVOVF9UWVBFX1VOS05PV047XHJcbiAgcHJvdGVjdGVkIF92ZWNDZWxsc0NvbnRlbnRUeXBlOiBzdHJpbmcgPSBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5LTk9XTjtcclxuICBwcm90ZWN0ZWQgX3ZlY0NlbGxzU2l6ZTogbnVtYmVyID0gMDtcclxuICBwcm90ZWN0ZWQgX3ZlY0NlbGxzVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTtcclxuICBwcm90ZWN0ZWQgX3R5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7XHJcbiAgU3RvcmFnZTogRmxkU3RvcmFnZSA9IDA7XHJcbiAgVmFyRGlzcGxheU5hbWU6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIHByb3RlY3RlZCBzdGF0aWMgX2RlZmF1bHRfZGF0ZTogc3RyaW5nID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lkOiBudW1iZXIgPSAwO1xyXG4gIHByb3RlY3RlZCBfc3BhY2VzOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaWRfXCI+IGlkeCBpbiBGaWVsZHNUYWJsZSA8L3BhcmFtPlxyXG4gIGNvbnN0cnVjdG9yKGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2lkID0gaWQ7XHJcbiAgICB0aGlzLlZhckRpc3BsYXlOYW1lID0gTlN0cmluZy5FbXB0eTtcclxuICB9XHJcblxyXG4gIGdldCBQYXJ0T2ZEYXRhdmlldygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9wYXJ0T2ZEYXRhdmlldztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJucyB0aGUgaWQgb2YgdGhlIGZpZWxkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzaXplIHR5cGUgb2YgY3VycmVudCBGaWVsZDogQSwgTiwgTCwgRCwgVFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBzaXplIG1lbWJlciBvZiBjdXJyZW50IEZpZWxkXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBnZXRUeXBlKCk6IFN0b3JhZ2VBdHRyaWJ1dGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiB0aGUgbWFnaWMgZGVmYXVsdCBudWxsIGRpc3BsYXkgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSB0eXBlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInR5cGVcIj5vZiB0aGUgZGF0YTwvcGFyYW0+XHJcbiAgc3RhdGljIGdldE1hZ2ljRGVmYXVsdE51bGxEaXNwbGF5VmFsdWUodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsOiBzdHJpbmc7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgIHZhbCA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQzpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICAgIC8vIHplcm9cclxuICAgICAgICB2YWwgPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIHRoZSBtYWdpYyBkZWZhdWx0IHZhbHVlIGFjY29yZGluZyB0byB0aGUgdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlXCI+b2YgdGhlIGRhdGE8L3BhcmFtPlxyXG4gIHN0YXRpYyBnZXRNYWdpY0RlZmF1bHRWYWx1ZSh0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogc3RyaW5nIHtcclxuICAgIGxldCB2YWw6IHN0cmluZyA9IG51bGw7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgICB2YWwgPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SOlxyXG4gICAgICAgIHZhbCA9IEJsb2JUeXBlLmdldEVtcHR5QmxvYlByZWZpeCgnXFwwJykgKyBcIjtcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICAgIHZhbCA9IFwiRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgICB2YWwgPSBGaWVsZERlZi5fZGVmYXVsdF9kYXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICB2YWwgPSBcIjBcIjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RGVmYXVsdFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpIHtcclxuICAgICAgaWYgKHRoaXMuX251bGxEZWZhdWx0ICYmIHRoaXMuX251bGxWYWx1ZSAhPT0gbnVsbClcclxuICAgICAgICB2YWwgPSB0aGlzLl9udWxsVmFsdWU7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuRGVmYXVsdFZhbHVlICE9PSBudWxsKVxyXG4gICAgICAgIHZhbCA9IHRoaXMuRGVmYXVsdFZhbHVlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdmFsID0gdGhpcy5nZXRNYWdpY0RlZmF1bHRWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgIGVsc2VcclxuICAgICAgIHZhbCA9IHRoaXMuZ2V0TWFnaWNEZWZhdWx0VmFsdWUoKTtcclxuXHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIHRoZSB2ZWN0b3JzIGNlbGxzIGRlZmF1bHQgdmFsdWVcclxuICAvLy8gaWYgdGhlIGZpZWxkIGlzIG5vdCBhIHZlY3RvciByZXR1cm5zIGZpZWxkIGRlZmF1bHQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldENlbGxEZWZ1YWx0VmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGxldCB2YWw6IHN0cmluZztcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKSB7XHJcbiAgICAgIGlmICh0aGlzLl9udWxsRGVmYXVsdCAmJiB0aGlzLl9udWxsVmFsdWUgIT09IG51bGwpXHJcbiAgICAgICAgdmFsID0gdGhpcy5fbnVsbFZhbHVlO1xyXG4gICAgICBlbHNlIGlmICh0aGlzLkRlZmF1bHRWYWx1ZSAhPT0gbnVsbClcclxuICAgICAgICAgIHZhbCA9IHRoaXMuRGVmYXVsdFZhbHVlO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YWwgPSBGaWVsZERlZi5nZXRNYWdpY0RlZmF1bHRWYWx1ZSh0aGlzLl92ZWNDZWxsc1R5cGUpO1xyXG4gICAgICAgIGlmICh0aGlzLl92ZWNDZWxsc1R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQilcclxuICAgICAgICAgIHZhbCA9IEJsb2JUeXBlLnNldENvbnRlbnRUeXBlKHZhbCwgdGhpcy5fdmVjQ2VsbHNDb250ZW50VHlwZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdmFsID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoKTtcclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiB0aGUgbWFnaWMgZGVmYXVsdCB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1hZ2ljRGVmYXVsdFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsOiBzdHJpbmcgPSBGaWVsZERlZi5nZXRNYWdpY0RlZmF1bHRWYWx1ZSh0aGlzLl90eXBlKTtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0IpXHJcbiAgICAgIHZhbCA9IEJsb2JUeXBlLnNldENvbnRlbnRUeXBlKHZhbCwgdGhpcy5fY29udGVudFR5cGUpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKSB7XHJcbiAgICAgICAgdmFsID0gQmxvYlR5cGUuU2V0VmVjQ2VsbEF0dHIodmFsLCB0aGlzLl92ZWNDZWxsc1R5cGUpO1xyXG4gICAgICAgIGlmICh0aGlzLl92ZWNDZWxsc1R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQilcclxuICAgICAgICAgIHZhbCA9IEJsb2JUeXBlLnNldENvbnRlbnRUeXBlKHZhbCwgdGhpcy5fdmVjQ2VsbHNDb250ZW50VHlwZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBjb250ZW50VHlwZSA8L3JldHVybnM+XHJcbiAgZ2V0Q29udGVudFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZW50VHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgdGhlIG51bGxEaXNwbGF5IGhhcyBhIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBoYXNOdWxsRGlzcGxheVZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX251bGxEaXNwbGF5ICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNpemUgbWVtYmVyIG9mIGN1cnJlbnQgRmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gc2l6ZSBtZW1iZXIgb2YgY3VycmVudCBGaWVsZCA8L3JldHVybnM+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NpemU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdmVjdG9yIGNlbGxzIHNpemVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFZlY0NlbGxzU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKSA/IHRoaXMuX3ZlY0NlbGxzU2l6ZSA6IHRoaXMuX3NpemU7XHJcbiAgfVxyXG5cclxuICBzZXRMZW5ndGhzKHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHZlY0NlbGxzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgcmVzOiBudW1iZXIgPSB0aGlzLl9zaXplO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5NRU1POlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgICBpZiAodmVjQ2VsbHMpIHtcclxuICAgICAgICAgIHJlcyA9IHRoaXMuX3ZlY0NlbGxzU2l6ZTtcclxuICAgICAgICAgIHRoaXMuX3NwYWNlcyA9IG5ldyBBcnJheTxzdHJpbmc+KHRoaXMuX3ZlY0NlbGxzU2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuX3NwYWNlcyA9IG5ldyBBcnJheTxzdHJpbmc+KHRoaXMuX3NpemUpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fc2l6ZTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgICB0aGlzLl9zcGFjZXNbaV0gPSAnICc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICByZXMgPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSAqIDI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICByZXMgPSAoIXZlY0NlbGxzID8gMSA6IDQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0I6XHJcbiAgICAgICAgLy8gUUNSIDc1ODkxMyBGT1IgVkVDVE9SUyBJTlRFUk5BTCBVU0UgT05MWSBUSEUgU0laRSBPRiBCTE9CUyBBTkQgVkVDVE9SXHJcbiAgICAgICAgLy8gSVMgVEhFIFNJWkUgT0YgVEhJRVIgU1RSVUNUUyBJTiBUSEUgTUFHSUMgRU5HSU5cclxuICAgICAgICByZXMgPSAoIXZlY0NlbGxzID8gSW50MzIuTWF4VmFsdWUgOiBWZWN0b3JUeXBlLkJMT0JfVFlQRV9TVFJVQ1RfU0laRSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgICAgcmVzID0gSW50MzIuTWF4VmFsdWU7XHJcbiAgICAgICAgaWYgKCF2ZWNDZWxscylcclxuICAgICAgICAgIHRoaXMuc2V0TGVuZ3Rocyh0aGlzLl92ZWNDZWxsc1R5cGUsIHRydWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJlcyA9IFZlY3RvclR5cGUuQkxPQl9UWVBFX1NUUlVDVF9TSVpFO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2ZWNDZWxscylcclxuICAgICAgdGhpcy5fdmVjQ2VsbHNTaXplID0gcmVzO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9zaXplID0gcmVzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGNlbGxzIHR5cGUgb2YgdmVjdG9ycyBlbGVzZSByZXR1cm5zIHRoZSBmaWVsZCB0eXBlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRDZWxsc1R5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gKHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpID8gdGhpcy5fdmVjQ2VsbHNUeXBlIDogdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjZWxsIGNvbnRlbnQgdHlwZSBvZiB2ZWN0b3IgZmllbGRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz52ZWN0b3IncyBjZWxsIGNvbnRlbnQgdHlwZTwvcmV0dXJucz5cclxuICBnZXRWZWNDZWxsc0NvbnRlbnRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmVjQ2VsbHNDb250ZW50VHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIE51bGwgVmFsdWUgdmFsdWUgb2YgdGhpcyBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TnVsbFZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbnVsbFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmllbGQgaXMgYSBOdWxsIERlZmF1bHRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzTnVsbERlZmF1bHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbnVsbERlZmF1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBOdWxsIERpc3BsYXkgdmFsdWUgb2YgdGhpcyBmaWVsZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TnVsbERpc3BsYXkoKTogYW55IHtcclxuICAgIGxldCB2YWw6IGFueTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46XHJcbiAgICAgICAgdmFsID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgLy8gemVyb1xyXG4gICAgICAgIHZhbCA9IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZvciBCTE9CIGZpZWxkcywgY2hlY2sgaWYgdGhleSBjb250YWluIFVOSUNPREUgb3IgQU5TSSBjaGFycy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5UUlVFIGlmIGNvbnRlbnQgaXMgVU5JQ09ERS4gRmFsc2Ugb3RoZXJ3aXNlPC9yZXR1cm5zPlxyXG4gIElzQ29udGVudFVuaWNvZGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CICYmIHRoaXMuX2NvbnRlbnRUeXBlICE9PSBCbG9iVHlwZS5DT05URU5UX1RZUEVfVU5JQ09ERSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgR2V0UGljdHVyZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldCB0aGUgZmllbGQgYXR0cmlidXRlIGluIHBhcnNpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gcHJvdGVjdGVkIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzVGFnUHJvY2Vzc2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1RZUEU6XHJcbiAgICAgICAgdGhpcy5fdHlwZSA9IDxTdG9yYWdlQXR0cmlidXRlPnZhbHVlU3RyLmNoYXJBdCgwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9TSVpFOlxyXG4gICAgICAgIHRoaXMuX3NpemUgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICBpZiAodGhpcy5fc2l6ZSA8PSAwKVxyXG4gICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coXCJpbiBGaWVsZC5pbml0RWxlbWVudHMoKTogc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1ZBUl9OQU1FOlxyXG4gICAgICAgIHRoaXMuX3Zhck5hbWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFSX0RJU1BfTkFNRTpcclxuICAgICAgICB0aGlzLlZhckRpc3BsYXlOYW1lID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1BJQ1RVUkU6XHJcbiAgICAgICAgdGhpcy5fcGljdHVyZSA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9WRUNfQ0VMTFNfU0laRTpcclxuICAgICAgICB0aGlzLl92ZWNDZWxsc1NpemUgPSBOTnVtYmVyLlBhcnNlKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9WRUNfQ0VMTFNfQVRUUjpcclxuICAgICAgICB0aGlzLl92ZWNDZWxsc1R5cGUgPSA8U3RvcmFnZUF0dHJpYnV0ZT52YWx1ZVN0ci5jaGFyQXQoMCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkVDX0NFTExTX0NPTlRFTlQ6XHJcbiAgICAgICAgdGhpcy5fdmVjQ2VsbHNDb250ZW50VHlwZSA9IHZhbHVlU3RyLmNoYXJBdCgwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9OVUxMVkFMVUU6XHJcbiAgICAgICAgaWYgKHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQyB8fCB0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkRBVEUgfHwgdGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5USU1FKSB7XHJcbiAgICAgICAgICBpZiAoR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0RGVidWdMZXZlbCgpID4gMSlcclxuICAgICAgICAgICAgdGhpcy5fbnVsbFZhbHVlID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLl9udWxsVmFsdWUgPSBCYXNlNjQuZGVjb2RlVG9IZXgodmFsdWVTdHIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl9udWxsVmFsdWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTlVMTERJU1BMQVk6XHJcbiAgICAgICAgdGhpcy5fbnVsbERpc3BsYXkgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTlVMTERFRkFVTFQ6XHJcbiAgICAgICAgdGhpcy5fbnVsbERlZmF1bHQgPSBEaXNwbGF5Q29udmVydG9yLnRvQm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfREJfTU9ESUZJQUJMRTpcclxuICAgICAgICB0aGlzLkRiTW9kaWZpYWJsZSA9IERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ERUZBVUxUVkFMVUU6XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUgPSB2YWx1ZVN0cjtcclxuICAgICAgICBpZiAodGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCB0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUpIHtcclxuICAgICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUgPSBTdHJVdGlsLnBhZFN0cih0aGlzLkRlZmF1bHRWYWx1ZSwgdGhpcy5fc2l6ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUgIT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiAmJiB0aGlzLl90eXBlICE9PSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU4pIHtcclxuICAgICAgICAgIC8vIHdvcmtpbmcgaW4gaGV4IG9yIGJhc2U2NFxyXG4gICAgICAgICAgaWYgKCh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SICYmXHJcbiAgICAgICAgICAgICh0aGlzLl92ZWNDZWxsc1R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQyB8fCB0aGlzLl92ZWNDZWxsc1R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuREFURSB8fCB0aGlzLl92ZWNDZWxsc1R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSkpIHx8XHJcbiAgICAgICAgICAgICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMgfHwgdGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5EQVRFIHx8IHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSkpIHtcclxuICAgICAgICAgICAgaWYgKEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERlYnVnTGV2ZWwoKSA8IDEpXHJcbiAgICAgICAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUgPSBCYXNlNjQuZGVjb2RlVG9IZXgodmFsdWVTdHIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLkRlZmF1bHRWYWx1ZS5sZW5ndGggPT09IDAgJiYgdGhpcy5fdHlwZSAhPT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CKVxyXG4gICAgICAgICAgdGhpcy5EZWZhdWx0VmFsdWUgPSBudWxsO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQilcclxuICAgICAgICAgIHRoaXMuRGVmYXVsdFZhbHVlID0gQmxvYlR5cGUuY3JlYXRlRnJvbVN0cmluZyh0aGlzLkRlZmF1bHRWYWx1ZSwgdGhpcy5fY29udGVudFR5cGUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX05VTExBTExPV0VEOlxyXG4gICAgICAgIHRoaXMuTnVsbEFsbG93ZWQgPSBEaXNwbGF5Q29udmVydG9yLnRvQm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfQkxPQl9DT05URU5UOlxyXG4gICAgICAgIHRoaXMuX2NvbnRlbnRUeXBlID0gdmFsdWVTdHIuY2hhckF0KDApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1BBUlRfT0ZfREFUQVZJRVc6XHJcbiAgICAgICAgdGhpcy5fcGFydE9mRGF0YXZpZXcgPSBEaXNwbGF5Q29udmVydG9yLnRvQm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfU1RPUkFHRTpcclxuICAgICAgICB0aGlzLlN0b3JhZ2UgPSA8RmxkU3RvcmFnZT5YbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpc1RhZ1Byb2Nlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc1RhZ1Byb2Nlc3NlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBOZWVkIHBhcnQgaW5wdXQgU3RyaW5nIHRvIHJlbGV2YW50IGZvciB0aGUgRmllbGQgY2xhc3MgZGF0YVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSBwYXJzZXIuUmVhZFRvRW5kT2ZDdXJyZW50RWxlbWVudCgpO1xyXG4gICAgdGV4dCA9IHRleHQuc3Vic3RyKHRleHQuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfVEFHX0ZMREgpICsgWE1MQ29uc3RhbnRzLk1HX1RBR19GTERILmxlbmd0aCk7XHJcbiAgICBsZXQgdG9rZW5zOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHRleHQsIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcbiAgICB0aGlzLmluaXRFbGVtZW50cyh0b2tlbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE1ha2UgaW5pdGlhbGl6YXRpb24gb2YgcHJpdmF0ZSBlbGVtZW50cyBieSBmb3VuZCB0b2tlbnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidG9rZW5zVmVjdG9yXCI+Zm91bmQgdG9rZW5zLCB3aGljaCBjb25zaXN0IGF0dHJpYnV0ZS92YWx1ZSBvZiBldmVyeSBmb3VuZGVsZW1lbnQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwVGFiXCI+cmVmZXJlbmNlIHRvIHJlbGV2YW50IGV4cC4gdGFibGU8L3BhcmFtPlxyXG4gIGluaXRFbGVtZW50cyh0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGkgPSBpICsgMikge1xyXG4gICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGkgKyAxKTtcclxuXHJcbiAgICAgIC8vIHRoZSBwYXJzaW5nIGlzIGZpbmlzaGVkIGhlcmVcclxuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICB9XHJcbiAgICB0aGlzLlNldEFmdGVyUGFyc2luZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzb21lIHByb3BlcnRpZXMgYXJlIG5lZWRlZCB0byBiZSBzZXQgYWZ0ZXIgcGFyc2luZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgU2V0QWZ0ZXJQYXJzaW5nKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRMZW5ndGhzKHRoaXMuX3R5cGUsIGZhbHNlKTtcclxuICAgIGlmICh0aGlzLk51bGxBbGxvd2VkICYmIHRoaXMuX251bGxEaXNwbGF5ID09PSBudWxsKVxyXG4gICAgICB0aGlzLl9udWxsRGlzcGxheSA9IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IG5hbWUgb2YgdmFyaWFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFZhck5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl92YXJOYW1lIHx8IFwiXCI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZm9yIGdldCBWQVJOQU1FIGZ1bmN0aW9uIHVzZVxyXG4gIC8vLyAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRhYmxlIG5hbWUgd2hlcmUgdGhlIHZhcmlhYmxlIG9yaWdpbmF0ZXMsXHJcbiAgLy8vICAgY29uY2F0ZW5hdGVkIHdpdGggJy4nIGFuZCB0aGUgdmFyaWFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlhYmxlIGluIHRoYXQgdGFibGUuXHJcbiAgLy8vICAgSWYgdGhlIHZhcmlhYmxlIGlzIGEgdmlydHVhbCBvbmUsIHRoZW4gdGhlIHRhYmxlIG5hbWUgd291bGQgaW5kaWNhdGUgJ1ZpcnR1YWwnLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFyTmFtZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,54 @@
1
+ import { List } from '@magic-xpa/mscorelib';
2
+ import { XMLConstants } from '@magic-xpa/utils';
3
+ import { Manager } from '../../Manager';
4
+ import { Events } from '../../Events';
5
+ export class FieldsTable {
6
+ constructor() {
7
+ this._fields = null;
8
+ this._fields = new List();
9
+ }
10
+ getField(idxOrFldName) {
11
+ if ((idxOrFldName === null || idxOrFldName.constructor === Number)) {
12
+ return this.getField_0(idxOrFldName);
13
+ }
14
+ return this.getField_1(idxOrFldName);
15
+ }
16
+ getField_0(idx) {
17
+ let fld = null;
18
+ if (idx >= 0 && idx < this._fields.length)
19
+ fld = this._fields.get_Item(idx);
20
+ return fld;
21
+ }
22
+ getSize() {
23
+ return this._fields.length;
24
+ }
25
+ fillData(parser, dataview) {
26
+ while (this.initInnerObjects(parser.getNextTag(), dataview)) {
27
+ }
28
+ }
29
+ initInnerObjects(foundTagName, dataview) {
30
+ if (foundTagName === null)
31
+ return false;
32
+ let parser = Manager.GetCurrentRuntimeContext().Parser;
33
+ if (foundTagName === XMLConstants.MG_TAG_FLDH) {
34
+ let field = this.initField(parser, dataview);
35
+ this._fields.push(field);
36
+ }
37
+ else if (foundTagName === XMLConstants.MG_TAG_DVHEADER)
38
+ parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) +
39
+ 1);
40
+ else if (foundTagName === "/" + XMLConstants.MG_TAG_DVHEADER) {
41
+ parser.setCurrIndex2EndOfTag();
42
+ return false;
43
+ }
44
+ else {
45
+ Events.WriteExceptionToLog("There is no such tag in FieldsTable. Insert else if to FieldsTable.initInnerObjects for " + foundTagName);
46
+ return false;
47
+ }
48
+ return true;
49
+ }
50
+ getField_1(fldName) {
51
+ return this._fields.find((field) => (field.getVarName() === fldName));
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmllbGRzVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9GaWVsZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHNUMsT0FBTyxFQUFFLFlBQVksRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0QyxNQUFNLE9BQWdCLFdBQVc7SUFNL0I7UUFMVSxZQUFPLEdBQW1CLElBQUksQ0FBQztRQU12QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxFQUFZLENBQUM7SUFDdEMsQ0FBQztJQUlELFFBQVEsQ0FBQyxZQUFpQjtRQUN4QixJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQyxFQUFFO1lBQ2xFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBT08sVUFBVSxDQUFDLEdBQVc7UUFDNUIsSUFBSSxHQUFHLEdBQWEsSUFBSSxDQUFDO1FBRXpCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ3ZDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFNRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBTUQsUUFBUSxDQUFDLE1BQWlCLEVBQUUsUUFBeUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1NBQzVEO0lBQ0gsQ0FBQztJQU9ELGdCQUFnQixDQUFDLFlBQW9CLEVBQUUsUUFBeUI7UUFDOUQsSUFBSSxZQUFZLEtBQUssSUFBSTtZQUN2QixPQUFPLEtBQUssQ0FBQztRQUVmLElBQUksTUFBTSxHQUFjLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNsRSxJQUFJLFlBQVksS0FBSyxZQUFZLENBQUMsV0FBVyxFQUFFO1lBQzdDLElBQUksS0FBSyxHQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO2FBQ0ksSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLGVBQWU7WUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM1RixDQUFDLENBQUMsQ0FBQzthQUNGLElBQUksWUFBWSxLQUFLLEdBQUcsR0FBRyxZQUFZLENBQUMsZUFBZSxFQUFFO1lBQzVELE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFDSTtZQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQywwRkFBMEYsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUN0SSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBZU8sVUFBVSxDQUFDLE9BQWU7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBGaWVsZERlZiB9IGZyb20gJy4vRmllbGREZWYnO1xyXG5pbXBvcnQgeyBHdWlEYXRhVmlld0Jhc2UgfSBmcm9tICcuL0d1aURhdGFWaWV3QmFzZSc7XHJcbmltcG9ydCB7IFhNTENvbnN0YW50cywgWG1sUGFyc2VyIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IE1hbmFnZXIgfSBmcm9tICcuLi8uLi9NYW5hZ2VyJztcclxuaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSAnLi4vLi4vRXZlbnRzJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWVsZHNUYWJsZSB7XHJcbiAgcHJvdGVjdGVkIF9maWVsZHM6IExpc3Q8RmllbGREZWY+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2ZpZWxkcyA9IG5ldyBMaXN0PEZpZWxkRGVmPigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGQoaWR4OiBudW1iZXIpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZChmbGROYW1lOiBzdHJpbmcpOiBGaWVsZERlZjtcclxuICBnZXRGaWVsZChpZHhPckZsZE5hbWU6IGFueSk6IEZpZWxkRGVmIHtcclxuICAgIGlmICgoaWR4T3JGbGROYW1lID09PSBudWxsIHx8IGlkeE9yRmxkTmFtZS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZF8wKGlkeE9yRmxkTmFtZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZF8xKGlkeE9yRmxkTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGEgRmllbGQgYnkgaXRzIGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgcmVxdWVzdGVkIGZpZWxkPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGEgcmVmZXJlbmNlIHRvIHRoZSBmaWVsZDwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEZpZWxkXzAoaWR4OiBudW1iZXIpOiBGaWVsZERlZiB7XHJcbiAgICBsZXQgZmxkOiBGaWVsZERlZiA9IG51bGw7XHJcblxyXG4gICAgaWYgKGlkeCA+PSAwICYmIGlkeCA8IHRoaXMuX2ZpZWxkcy5sZW5ndGgpXHJcbiAgICAgIGZsZCA9IHRoaXMuX2ZpZWxkcy5nZXRfSXRlbShpZHgpO1xyXG5cclxuICAgIHJldHVybiBmbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgZmllbGRzIGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBudW1iZXIgb2YgZmllbGRzIGluIHRoZSB0YWJsZTwvcmV0dXJucz5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVG8gcGFyc2UgaW5wdXQgc3RyaW5nIGFuZCBmaWxsIGlubmVyIGRhdGE6IFZlY3RvciBvZiBjb21tYW5kc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkYXRhdmlld1wiPnRvIHRoZSBwYXJlbnQ8L3BhcmFtPlxyXG4gIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyLCBkYXRhdmlldzogR3VpRGF0YVZpZXdCYXNlKTogdm9pZCB7XHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIGRhdGF2aWV3KSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUbyBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5uYW1lIG9mIHRhZywgb2Ygb2JqZWN0LCB3aGljaCBuZWVkIGJlIGFsbG9jYXRlZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkYXRhdmlld1wiPnRvIGRhdGEgdmlldzwvcGFyYW0+XHJcbiAgaW5pdElubmVyT2JqZWN0cyhmb3VuZFRhZ05hbWU6IHN0cmluZywgZGF0YXZpZXc6IEd1aURhdGFWaWV3QmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGxldCBwYXJzZXI6IFhtbFBhcnNlciA9IE1hbmFnZXIuR2V0Q3VycmVudFJ1bnRpbWVDb250ZXh0KCkuUGFyc2VyO1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19GTERIKSB7XHJcbiAgICAgIGxldCBmaWVsZDogRmllbGREZWYgPSB0aGlzLmluaXRGaWVsZChwYXJzZXIsIGRhdGF2aWV3KTtcclxuICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0RWSEVBREVSKVxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICtcclxuICAgICAgICAxKTsgLy8gbW92ZSBJbmRleCB0byBlbmQgb2YgPGR2aGVhZGVyPiArMSBmb3IgJz4nXHJcbiAgICBlbHNlIGlmIChmb3VuZFRhZ05hbWUgPT09IFwiL1wiICsgWE1MQ29uc3RhbnRzLk1HX1RBR19EVkhFQURFUikge1xyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIEZpZWxkc1RhYmxlLiBJbnNlcnQgZWxzZSBpZiB0byBGaWVsZHNUYWJsZS5pbml0SW5uZXJPYmplY3RzIGZvciBcIiArIGZvdW5kVGFnTmFtZSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY3JlYXRlIGEgZmllbGQgYW5kIGZpbGwgaXQgYnkgZGF0YVxyXG4gIC8vLyB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgdmlydHVhbCBiZWNhdXNlIGl0IGlzIHVzZWQgaW4gUmljaENsaWVudCBidXQgaXMgbm90IHVzZWQgaW4gTWd4cGFSdW50aW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImRhdGF2aWV3XCI+IERhdGF2aWV3IDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgY3JlYXRlZCBmaWxsZWQgZmllbGQgPC9yZXR1cm5zPlxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbml0RmllbGQocGFyc2VyOiBYbWxQYXJzZXIsIGRhdGF2aWV3OiBHdWlEYXRhVmlld0Jhc2UpOiBGaWVsZERlZjtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBhIEZpZWxkIGJ5IGl0cyBpbmRleFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGROYW1lXCI+aXMgdGhlIG5hbWUgb2YgdGhlIHJlcXVlc3RlZCBmaWVsZDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBhIHJlZmVyZW5jZSB0byB0aGUgZmllbGQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBnZXRGaWVsZF8xKGZsZE5hbWU6IHN0cmluZyk6IEZpZWxkRGVmIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZHMuZmluZCgoZmllbGQ6IEZpZWxkRGVmKSA9PiAoZmllbGQuZ2V0VmFyTmFtZSgpID09PSBmbGROYW1lKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==