@magic-xpa/gui 4.1000.0-dev4100.21 → 4.1000.0-dev4100.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/Commands.mjs +3 -3
- package/esm2020/src/Events.mjs +3 -3
- package/esm2020/src/management/data/DcValues.mjs +4 -4
- package/esm2020/src/management/data/FieldDef.mjs +7 -7
- package/esm2020/src/management/data/NUM_TYPE.mjs +7 -7
- package/esm2020/src/management/data/RecordUtils.mjs +4 -4
- package/esm2020/src/management/exp/ExpressionInterface.mjs +2 -1
- package/esm2020/src/management/gui/DisplayConvertor.mjs +6 -6
- package/esm2020/src/management/gui/Helps.mjs +16 -16
- package/esm2020/src/management/gui/MgControlBase.mjs +11 -11
- package/esm2020/src/management/gui/Property.mjs +4 -4
- package/esm2020/src/management/gui/ValidationDetails.mjs +10 -10
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +16 -16
- package/fesm2015/magic-xpa-gui.mjs +80 -79
- package/fesm2015/magic-xpa-gui.mjs.map +1 -1
- package/fesm2020/magic-xpa-gui.mjs +80 -79
- package/fesm2020/magic-xpa-gui.mjs.map +1 -1
- package/package.json +4 -4
- package/src/management/exp/ExpressionInterface.d.ts +1 -0
- package/magic-xpa-gui.d.ts +0 -2
|
@@ -4,6 +4,9 @@ import { Events } from "../../Events";
|
|
|
4
4
|
export class MagicHelp {
|
|
5
5
|
}
|
|
6
6
|
export class InternalHelp extends MagicHelp {
|
|
7
|
+
GetHelpType() {
|
|
8
|
+
return HelpType.Internal;
|
|
9
|
+
}
|
|
7
10
|
constructor() {
|
|
8
11
|
super();
|
|
9
12
|
this.val = null;
|
|
@@ -20,47 +23,44 @@ export class InternalHelp extends MagicHelp {
|
|
|
20
23
|
this.TitleBar = 0;
|
|
21
24
|
this.FontTableIndex = 0;
|
|
22
25
|
}
|
|
23
|
-
GetHelpType() {
|
|
24
|
-
return HelpType.Internal;
|
|
25
|
-
}
|
|
26
26
|
}
|
|
27
27
|
export class PromptpHelp extends MagicHelp {
|
|
28
|
+
GetHelpType() {
|
|
29
|
+
return HelpType.Prompt;
|
|
30
|
+
}
|
|
28
31
|
constructor() {
|
|
29
32
|
super();
|
|
30
33
|
this.PromptHelpText = null;
|
|
31
34
|
}
|
|
32
|
-
GetHelpType() {
|
|
33
|
-
return HelpType.Prompt;
|
|
34
|
-
}
|
|
35
35
|
}
|
|
36
36
|
export class ToolTipHelp extends MagicHelp {
|
|
37
|
+
GetHelpType() {
|
|
38
|
+
return HelpType.Tooltip;
|
|
39
|
+
}
|
|
37
40
|
constructor() {
|
|
38
41
|
super();
|
|
39
42
|
this.tooltipHelpText = null;
|
|
40
43
|
}
|
|
41
|
-
GetHelpType() {
|
|
42
|
-
return HelpType.Tooltip;
|
|
43
|
-
}
|
|
44
44
|
}
|
|
45
45
|
export class URLHelp extends MagicHelp {
|
|
46
|
+
GetHelpType() {
|
|
47
|
+
return HelpType.URL;
|
|
48
|
+
}
|
|
46
49
|
constructor() {
|
|
47
50
|
super();
|
|
48
51
|
this.urlHelpText = null;
|
|
49
52
|
}
|
|
50
|
-
GetHelpType() {
|
|
51
|
-
return HelpType.URL;
|
|
52
|
-
}
|
|
53
53
|
}
|
|
54
54
|
export class WindowsHelp extends MagicHelp {
|
|
55
|
+
GetHelpType() {
|
|
56
|
+
return HelpType.Windows;
|
|
57
|
+
}
|
|
55
58
|
constructor() {
|
|
56
59
|
super();
|
|
57
60
|
this.FilePath = null;
|
|
58
61
|
this.HelpCommand = 0;
|
|
59
62
|
this.HelpKey = null;
|
|
60
63
|
}
|
|
61
|
-
GetHelpType() {
|
|
62
|
-
return HelpType.Windows;
|
|
63
|
-
}
|
|
64
64
|
}
|
|
65
65
|
export class Helps {
|
|
66
66
|
constructor() {
|
|
@@ -234,4 +234,4 @@ export class Helps {
|
|
|
234
234
|
return result;
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL0hlbHBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBS3BDLE1BQU0sT0FBZ0IsU0FBUztDQUU5QjtBQUtELE1BQU0sT0FBTyxZQUFhLFNBQVEsU0FBUztJQW1CekM7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQW5CVixRQUFHLEdBQVcsSUFBSSxDQUFDO1FBQ25CLFNBQUksR0FBVyxJQUFJLENBQUM7UUFDcEIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsbUJBQWMsR0FBVyxDQUFDLENBQUM7SUFRM0IsQ0FBQztJQU5ELFdBQVc7UUFDVCxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDM0IsQ0FBQztDQUtGO0FBS0QsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUFTO0lBT3hDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFQVixtQkFBYyxHQUFXLElBQUksQ0FBQztJQVE5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QUVELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLElBQUksSUFBSSxHQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3pELElBQUksTUFBaUIsQ0FBQztRQUN0QixJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDZjthQUNJO1lBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZTY0LCBIZWxwQ29tbWFuZCwgSGVscFR5cGUsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtOTnVtYmVyLCBMaXN0LCBOU3RyaW5nfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuLi8uLi9FdmVudHNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIEJhc2UgY2xhc3MgZm9yIGFsbCB0aGUgaGVscCB0eXBlcyBzdXBwb3J0ZWQgaW4gbWFnaWMuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYWdpY0hlbHAge1xyXG4gIGFic3RyYWN0IEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlO1xyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBkcmF3IHRoZSBpbnRlcm5hbCBoZWxwIHdpbmRvdy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEludGVybmFsSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgdmFsOiBzdHJpbmcgPSBudWxsO1xyXG4gIE5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgRnJhbWVYOiBudW1iZXIgPSAwO1xyXG4gIEZyYW1lWTogbnVtYmVyID0gMDtcclxuICBGcmFtZUR4OiBudW1iZXIgPSAwO1xyXG4gIEZyYW1lRHk6IG51bWJlciA9IDA7XHJcbiAgU2l6ZWRYOiBudW1iZXIgPSAwO1xyXG4gIFNpemVkWTogbnVtYmVyID0gMDtcclxuICBGYWN0b3JYOiBudW1iZXIgPSAwO1xyXG4gIEZhY3Rvclk6IG51bWJlciA9IDA7XHJcbiAgQm9yZGVyc3R5bGU6IG51bWJlciA9IDA7XHJcbiAgVGl0bGVCYXI6IG51bWJlciA9IDA7XHJcbiAgRm9udFRhYmxlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5JbnRlcm5hbDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgcHJvbXB0IGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBQcm9tcHRwSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgUHJvbXB0SGVscFRleHQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5Qcm9tcHQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBUaGlzIGNsYXNzIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyByZXF1aXJlZCB0byBzaG93IHRvb2wgdGlwIGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBUb29sVGlwSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgdG9vbHRpcEhlbHBUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuVG9vbHRpcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgVVJMIGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBVUkxIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICB1cmxIZWxwVGV4dDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLlVSTDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgd2luZG93cyBoZWxwLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgV2luZG93c0hlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIEZpbGVQYXRoOiBzdHJpbmcgPSBudWxsO1xyXG4gIEhlbHBDb21tYW5kOiBIZWxwQ29tbWFuZCA9IDA7XHJcbiAgSGVscEtleTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLldpbmRvd3M7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBkYXRhIGZvciA8aGVscHRhYmxlPiA8aGVscGl0ZW0gdmFsdWUgPSBcInN0cmluZ1wiPiAuLi4gPC9oZWxwdGFibGU+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBIZWxwcyB7XHJcbiAgcHJpdmF0ZSBfaGVscHM6IExpc3Q8TWFnaWNIZWxwPiA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9oZWxwcyA9IG5ldyBMaXN0PE1hZ2ljSGVscD4oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVG8gcGFyc2UgdGhlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBkYXRhIGZpZWxkIChoZWxwcykgaW4gdGhlIGNsYXNzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUbyBpbml0aWFsIGlubmVyIG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5vZiBmb3VuZC9jdXJyZW50IHRhZzwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBwYXJzZXI6IFhtbFBhcnNlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IFhNTENvbnN0YW50cy5NR19UQUdfSEVMUFRBQkxFKSB7XHJcblxyXG4gICAgICAgIGxldCBjdXJycmVudEluZGV4ID0gcGFyc2VyLmdldEN1cnJJbmRleCgpOyAvLyBnZXQgdGhlIGN1cnJlbnRJbmRleCBvZiBIZWxwIHRhZ1xyXG4gICAgICAgIGxldCBlbmNvZGVkID0gcGFyc2VyLlJlYWRDb250ZW50T2ZDdXJyZW50RWxlbWVudCgpLnRyaW0oKTsgLy8gZ2V0IHZhbHVlIG9mIGVuY29kZWQgdmFsdWUgb2YgSGVscFxyXG4gICAgICAgIGxldCBkZWNvZGVkID0gQmFzZTY0LmRlY29kZShlbmNvZGVkLnN1YnN0cigwLCBlbmNvZGVkLmxlbmd0aCkudHJpbSgpKTsgLy9kZWNvZGUgdGhlIHZhbHVlIG9mIEhlbHBcclxuICAgICAgICBsZXQgbmV3WG1sRGF0YSA9IHBhcnNlci5nZXRYTUxkYXRhKCkucmVwbGFjZShlbmNvZGVkLnRyaW0oKSwgZGVjb2RlZCk7IC8vIHJlcGxhY2UgdGhlIGVuY29kZWQgdmFsdWUgd2l0aCBkZWNvZGVkIHZhbHVlXHJcbiAgICAgICAgcGFyc2VyLnNldFhNTGRhdGEobmV3WG1sRGF0YSk7IC8vY3JlYXRlIGEgcGFyc2VyIHdpdGggbmV3WE1MXHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChjdXJycmVudEluZGV4KTsgLy8gc2V0IHRoZSBjdXJyZW50IGluZGV4IG9mIHBhcnNlciB0byBIZWxwIHRhZ1xyXG5cclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICtcclxuICAgICAgICAgIDEpOyAvL2VuZCBvZiBvdXRlciB0YWQgYW5kIGl0cyBcIj5cIlxyXG4gICAgfVxyXG4gICAgLy8gZW5kIG9mIG91dGVyIHRhZCBhbmQgaXRzIFwiPlwiXHJcbiAgICBlbHNlIGlmIChmb3VuZFRhZ05hbWUgPT09IFhNTENvbnN0YW50cy5NR19UQUdfSEVMUElURU0pIHtcclxuICAgICAgbGV0IGVuZENvbnRleHQgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19URVJNLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEgJiYgZW5kQ29udGV4dCA8IHBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgICAgbGV0IHRhZzogc3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgICBwYXJzZXIuYWRkMkN1cnJJbmRleCh0YWcuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfVEFHX0hFTFBJVEVNKSArXHJcbiAgICAgICAgICBYTUxDb25zdGFudHMuTUdfVEFHX0hFTFBJVEVNLmxlbmd0aCk7XHJcbiAgICAgICAgbGV0IHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG4gICAgICAgIHRoaXMuZmlsbEhlbHBJdGVtKHRva2Vuc1ZlY3Rvcik7XHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChlbmRDb250ZXh0ICsgWE1MQ29uc3RhbnRzLlRBR19URVJNLmxlbmd0aCk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZvdW5kVGFnTmFtZSA9PT0gXCIvXCIgKyBYTUxDb25zdGFudHMuTUdfVEFHX0hFTFBUQUJMRSkge1xyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcImluIENvbW1hbmQuRmlsbERhdGEoKSBvdXQgb2Ygc3RyaW5nIGJvdW5kc1wiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEZpbGwgbWVtYmVyIGVsZW1lbnQgaGVscHMgYnkgPGhlbHBpdGVtPiB0YWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidG9rZW5zVmVjdG9yXCI+YXR0cmlidXRlL3ZhbHVlLy4uLmF0dHJpYnV0ZS92YWx1ZS8gdmVjdG9yPC9wYXJhbT5cclxuICBwcml2YXRlIGZpbGxIZWxwSXRlbSh0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPik6IHZvaWQge1xyXG4gICAgLy8gU2luY2UgdGhlIGZpcnN0IGF0dHJpYnV0ZSBpcyB0eXBlIG9mIGhlbHAuIEV4dHJhY3QgdGhpcyBhdHRyaWJ1dGUgdG8gY2hlY2sgdHlwZS5cclxuICAgIGxldCBqOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgbGV0IGhscFR5cGU6IHN0cmluZyA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuXHJcbiAgICBzd2l0Y2ggKGhscFR5cGUpIHtcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1RPT0xUSVA6XHJcbiAgICAgICAgbGV0IHRvb2xUaXBIZWxwOiBUb29sVGlwSGVscCA9IG5ldyBUb29sVGlwSGVscCgpO1xyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFKSB7XHJcbiAgICAgICAgICAgIC8vICM5MzIwODY6IFNwZWNpYWwgY2hhcmFjdGVycyBpbiBoZWxwcyB0ZXh0IGFyZSBlc2NhcGVkIHdoaWxlIHNlcmlhbGl6aW5nLFxyXG4gICAgICAgICAgICAvLyBzbyB1bmVzY2FwZSB0aGUgZXNjYXBlZCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICB0b29sVGlwSGVscC50b29sdGlwSGVscFRleHQgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faGVscHMucHVzaCh0b29sVGlwSGVscCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfUFJPTVBUOlxyXG4gICAgICAgIGxldCBwcm9tcHRwSGVscDogUHJvbXB0cEhlbHAgPSBuZXcgUHJvbXB0cEhlbHAoKTtcclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiA9IGogKyAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRSkge1xyXG4gICAgICAgICAgICAvLyAjOTMyMDg2OiBTcGVjaWFsIGNoYXJhY3RlcnMgaW4gaGVscHMgdGV4dCBhcmUgZXNjYXBlZCB3aGlsZSBzZXJpYWxpemluZyxcclxuICAgICAgICAgICAgLy8gc28gdW5lc2NhcGUgdGhlIGVzY2FwZWQgY2hhcmFjdGVycy5cclxuICAgICAgICAgICAgcHJvbXB0cEhlbHAuUHJvbXB0SGVscFRleHQgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faGVscHMucHVzaChwcm9tcHRwSGVscCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfVVJMOlxyXG4gICAgICAgIGxldCB1cmxIZWxwOiBVUkxIZWxwID0gbmV3IFVSTEhlbHAoKTtcclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiA9IGogKyAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRSlcclxuICAgICAgICAgICAgdXJsSGVscC51cmxIZWxwVGV4dCA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2hlbHBzLnB1c2godXJsSGVscCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfSU5URVJOQUw6XHJcbiAgICAgICAgbGV0IGludGVybmFsSGVscFdpbmRvd0RldGFpbHM6IEludGVybmFsSGVscCA9IG5ldyBJbnRlcm5hbEhlbHAoKTtcclxuICAgICAgICAvLyBJbml0IEludGVybmFsIEhlbHAgV2luZG93IERldGFpbHMuXHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG5cclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMudmFsID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX05BTUUpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5OYW1lID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZyYW1lWCA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVZKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRnJhbWVZID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRURYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRnJhbWVEeCA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVEWSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZyYW1lRHkgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NJWkVEWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLlNpemVkWCA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURZKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuU2l6ZWRZID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GQUNUT1JYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRmFjdG9yWCA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRkFDVE9SWSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZhY3RvclkgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0JPUkRFUlNUWUxFKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuQm9yZGVyc3R5bGUgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9USVRMRV9CQVIpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5UaXRsZUJhciA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfU1lTVEVNX01FTlUpIHtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRk9OVF9UQUJMRV9JTkRFWCkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLkZvbnRUYWJsZUluZGV4ID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIGhlbHAgb2JqZWN0IHRvIGNvbGxlY3Rpb24uXHJcbiAgICAgICAgdGhpcy5faGVscHMucHVzaChpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9XSU5ET1dTOlxyXG4gICAgICAgIGxldCB3bmRIZWxwRGV0YWlsczogV2luZG93c0hlbHAgPSBuZXcgV2luZG93c0hlbHAoKTtcclxuXHJcbiAgICAgICAgLy8gSW5pdCBXaW5kb3dzIEhlbHAgRGV0YWlscy5cclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiA9IGogKyAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9XSU5ET1dTX0hFTFBfRklMRSkge1xyXG4gICAgICAgICAgICB3bmRIZWxwRGV0YWlscy5GaWxlUGF0aCA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9XSU5ET1dTX0hFTFBfQ09NTUFORCkge1xyXG4gICAgICAgICAgICAgIHduZEhlbHBEZXRhaWxzLkhlbHBDb21tYW5kID0gPEhlbHBDb21tYW5kPk5OdW1iZXIuUGFyc2UodmFsdWVTdHIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9XSU5ET1dTX0hFTFBfS0VZKSB7XHJcbiAgICAgICAgICAgIHduZEhlbHBEZXRhaWxzLkhlbHBLZXkgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQWRkIGhlbHAgb2JqZWN0IHRvIGNvbGxlY3Rpb24uXHJcbiAgICAgICAgdGhpcy5faGVscHMucHVzaCh3bmRIZWxwRGV0YWlscyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIZWxwKGlkeDogbnVtYmVyKTogTWFnaWNIZWxwIHtcclxuICAgIGxldCBmbGFnOiBib29sZWFuID0gaWR4IDwgMCB8fCBpZHggPj0gdGhpcy5faGVscHMubGVuZ3RoO1xyXG4gICAgbGV0IHJlc3VsdDogTWFnaWNIZWxwO1xyXG4gICAgaWYgKGZsYWcpIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXN1bHQgPSB0aGlzLl9oZWxwcy5nZXRfSXRlbShpZHgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL0hlbHBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQWUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRixPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBS3BDLE1BQU0sT0FBZ0IsU0FBUztDQUU5QjtBQUtELE1BQU0sT0FBTyxZQUFhLFNBQVEsU0FBUztJQWV6QyxXQUFXO1FBQ1QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBbkJWLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsU0FBSSxHQUFXLElBQUksQ0FBQztRQUNwQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixZQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixtQkFBYyxHQUFXLENBQUMsQ0FBQztJQVEzQixDQUFDO0NBQ0Y7QUFLRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFHeEMsV0FBVztRQUNULE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQ7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RUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxJQUFJLEdBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekQsSUFBSSxNQUFpQixDQUFDO1FBQ3RCLElBQUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNmO2FBQ0k7WUFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlNjQsIEhlbHBDb21tYW5kLCBIZWxwVHlwZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge05OdW1iZXIsIExpc3QsIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gQmFzZSBjbGFzcyBmb3IgYWxsIHRoZSBoZWxwIHR5cGVzIHN1cHBvcnRlZCBpbiBtYWdpYy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1hZ2ljSGVscCB7XHJcbiAgYWJzdHJhY3QgR2V0SGVscFR5cGUoKTogSGVscFR5cGU7XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIGRyYXcgdGhlIGludGVybmFsIGhlbHAgd2luZG93LlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICB2YWw6IHN0cmluZyA9IG51bGw7XHJcbiAgTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBGcmFtZVg6IG51bWJlciA9IDA7XHJcbiAgRnJhbWVZOiBudW1iZXIgPSAwO1xyXG4gIEZyYW1lRHg6IG51bWJlciA9IDA7XHJcbiAgRnJhbWVEeTogbnVtYmVyID0gMDtcclxuICBTaXplZFg6IG51bWJlciA9IDA7XHJcbiAgU2l6ZWRZOiBudW1iZXIgPSAwO1xyXG4gIEZhY3Rvclg6IG51bWJlciA9IDA7XHJcbiAgRmFjdG9yWTogbnVtYmVyID0gMDtcclxuICBCb3JkZXJzdHlsZTogbnVtYmVyID0gMDtcclxuICBUaXRsZUJhcjogbnVtYmVyID0gMDtcclxuICBGb250VGFibGVJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLkludGVybmFsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyBwcm9tcHQgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFByb21wdHBIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICBQcm9tcHRIZWxwVGV4dDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgR2V0SGVscFR5cGUoKTogSGVscFR5cGUge1xyXG4gICAgcmV0dXJuIEhlbHBUeXBlLlByb21wdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3Mgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIHJlcXVpcmVkIHRvIHNob3cgdG9vbCB0aXAgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFRvb2xUaXBIZWxwIGV4dGVuZHMgTWFnaWNIZWxwIHtcclxuICB0b29sdGlwSGVscFRleHQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEdldEhlbHBUeXBlKCk6IEhlbHBUeXBlIHtcclxuICAgIHJldHVybiBIZWxwVHlwZS5Ub29sdGlwO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyBVUkwgaGVscC5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFVSTEhlbHAgZXh0ZW5kcyBNYWdpY0hlbHAge1xyXG4gIHVybEhlbHBUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuVVJMO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gVGhpcyBjbGFzcyB3aWxsIGNvbnRhaW4gdGhlIGRldGFpbHMgcmVxdWlyZWQgdG8gc2hvdyB3aW5kb3dzIGhlbHAuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBXaW5kb3dzSGVscCBleHRlbmRzIE1hZ2ljSGVscCB7XHJcbiAgRmlsZVBhdGg6IHN0cmluZyA9IG51bGw7XHJcbiAgSGVscENvbW1hbmQ6IEhlbHBDb21tYW5kID0gMDtcclxuICBIZWxwS2V5OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBHZXRIZWxwVHlwZSgpOiBIZWxwVHlwZSB7XHJcbiAgICByZXR1cm4gSGVscFR5cGUuV2luZG93cztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIGRhdGEgZm9yIDxoZWxwdGFibGU+IDxoZWxwaXRlbSB2YWx1ZSA9IFwic3RyaW5nXCI+IC4uLiA8L2hlbHB0YWJsZT5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEhlbHBzIHtcclxuICBwcml2YXRlIF9oZWxwczogTGlzdDxNYWdpY0hlbHA+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX2hlbHBzID0gbmV3IExpc3Q8TWFnaWNIZWxwPigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUbyBwYXJzZSB0aGUgaW5wdXQgc3RyaW5nIGFuZCBmaWxsIGRhdGEgZmllbGQgKGhlbHBzKSBpbiB0aGUgY2xhc3MuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBmaWxsRGF0YShwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIuZ2V0TmV4dFRhZygpLCBwYXJzZXIpKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRvIGluaXRpYWwgaW5uZXIgb2JqZWN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvdW5kVGFnTmFtZVwiPm9mIGZvdW5kL2N1cnJlbnQgdGFnPC9wYXJhbT5cclxuICBwcml2YXRlIGluaXRJbm5lck9iamVjdHMoZm91bmRUYWdOYW1lOiBzdHJpbmcsIHBhcnNlcjogWG1sUGFyc2VyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQVEFCTEUpIHtcclxuXHJcbiAgICAgICAgbGV0IGN1cnJyZW50SW5kZXggPSBwYXJzZXIuZ2V0Q3VyckluZGV4KCk7IC8vIGdldCB0aGUgY3VycmVudEluZGV4IG9mIEhlbHAgdGFnXHJcbiAgICAgICAgbGV0IGVuY29kZWQgPSBwYXJzZXIuUmVhZENvbnRlbnRPZkN1cnJlbnRFbGVtZW50KCkudHJpbSgpOyAvLyBnZXQgdmFsdWUgb2YgZW5jb2RlZCB2YWx1ZSBvZiBIZWxwXHJcbiAgICAgICAgbGV0IGRlY29kZWQgPSBCYXNlNjQuZGVjb2RlKGVuY29kZWQuc3Vic3RyKDAsIGVuY29kZWQubGVuZ3RoKS50cmltKCkpOyAvL2RlY29kZSB0aGUgdmFsdWUgb2YgSGVscFxyXG4gICAgICAgIGxldCBuZXdYbWxEYXRhID0gcGFyc2VyLmdldFhNTGRhdGEoKS5yZXBsYWNlKGVuY29kZWQudHJpbSgpLCBkZWNvZGVkKTsgLy8gcmVwbGFjZSB0aGUgZW5jb2RlZCB2YWx1ZSB3aXRoIGRlY29kZWQgdmFsdWVcclxuICAgICAgICBwYXJzZXIuc2V0WE1MZGF0YShuZXdYbWxEYXRhKTsgLy9jcmVhdGUgYSBwYXJzZXIgd2l0aCBuZXdYTUxcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGN1cnJyZW50SW5kZXgpOyAvLyBzZXQgdGhlIGN1cnJlbnQgaW5kZXggb2YgcGFyc2VyIHRvIEhlbHAgdGFnXHJcblxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgK1xyXG4gICAgICAgICAgMSk7IC8vZW5kIG9mIG91dGVyIHRhZCBhbmQgaXRzIFwiPlwiXHJcbiAgICB9XHJcbiAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFkIGFuZCBpdHMgXCI+XCJcclxuICAgIGVsc2UgaWYgKGZvdW5kVGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19IRUxQSVRFTSkge1xyXG4gICAgICBsZXQgZW5kQ29udGV4dCA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX1RFUk0sIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgICBsZXQgdGFnOiBzdHJpbmcgPSBwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpO1xyXG4gICAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKFhNTENvbnN0YW50cy5NR19UQUdfSEVMUElURU0pICtcclxuICAgICAgICAgIFhNTENvbnN0YW50cy5NR19UQUdfSEVMUElURU0ubGVuZ3RoKTtcclxuICAgICAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcbiAgICAgICAgdGhpcy5maWxsSGVscEl0ZW0odG9rZW5zVmVjdG9yKTtcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSBcIi9cIiArIFhNTENvbnN0YW50cy5NR19UQUdfSEVMUFRBQkxFKSB7XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKFwiaW4gQ29tbWFuZC5GaWxsRGF0YSgpIG91dCBvZiBzdHJpbmcgYm91bmRzXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gRmlsbCBtZW1iZXIgZWxlbWVudCBoZWxwcyBieSA8aGVscGl0ZW0+IHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0b2tlbnNWZWN0b3JcIj5hdHRyaWJ1dGUvdmFsdWUvLi4uYXR0cmlidXRlL3ZhbHVlLyB2ZWN0b3I8L3BhcmFtPlxyXG4gIHByaXZhdGUgZmlsbEhlbHBJdGVtKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICAvLyBTaW5jZSB0aGUgZmlyc3QgYXR0cmlidXRlIGlzIHR5cGUgb2YgaGVscC4gRXh0cmFjdCB0aGlzIGF0dHJpYnV0ZSB0byBjaGVjayB0eXBlLlxyXG4gICAgbGV0IGo6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICBsZXQgdmFsdWVTdHI6IHN0cmluZyA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcbiAgICBsZXQgaGxwVHlwZTogc3RyaW5nID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKS50b1N0cmluZygpO1xyXG5cclxuICAgIHN3aXRjaCAoaGxwVHlwZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0hMUF9UWVBfVE9PTFRJUDpcclxuICAgICAgICBsZXQgdG9vbFRpcEhlbHA6IFRvb2xUaXBIZWxwID0gbmV3IFRvb2xUaXBIZWxwKCk7XHJcbiAgICAgICAgZm9yIChqID0gMjsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogPSBqICsgMikge1xyXG4gICAgICAgICAgYXR0cmlidXRlID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGopO1xyXG4gICAgICAgICAgdmFsdWVTdHIgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpIHtcclxuICAgICAgICAgICAgLy8gIzkzMjA4NjogU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGhlbHBzIHRleHQgYXJlIGVzY2FwZWQgd2hpbGUgc2VyaWFsaXppbmcsXHJcbiAgICAgICAgICAgIC8vIHNvIHVuZXNjYXBlIHRoZSBlc2NhcGVkIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgICAgIHRvb2xUaXBIZWxwLnRvb2x0aXBIZWxwVGV4dCA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHRvb2xUaXBIZWxwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9QUk9NUFQ6XHJcbiAgICAgICAgbGV0IHByb21wdHBIZWxwOiBQcm9tcHRwSGVscCA9IG5ldyBQcm9tcHRwSGVscCgpO1xyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFKSB7XHJcbiAgICAgICAgICAgIC8vICM5MzIwODY6IFNwZWNpYWwgY2hhcmFjdGVycyBpbiBoZWxwcyB0ZXh0IGFyZSBlc2NhcGVkIHdoaWxlIHNlcmlhbGl6aW5nLFxyXG4gICAgICAgICAgICAvLyBzbyB1bmVzY2FwZSB0aGUgZXNjYXBlZCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICBwcm9tcHRwSGVscC5Qcm9tcHRIZWxwVGV4dCA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHByb21wdHBIZWxwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9VUkw6XHJcbiAgICAgICAgbGV0IHVybEhlbHA6IFVSTEhlbHAgPSBuZXcgVVJMSGVscCgpO1xyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFKVxyXG4gICAgICAgICAgICB1cmxIZWxwLnVybEhlbHBUZXh0ID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gPGhlbHB0YWJsZT48aGVscGl0ZW0gLi4+Lkluc2VydCBjYXNlIHRvIEhlbHBUYWJsZS5GaWxsSGVscEl0ZW0gZm9yIHswfVwiLCBhdHRyaWJ1dGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faGVscHMucHVzaCh1cmxIZWxwKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfSExQX1RZUF9JTlRFUk5BTDpcclxuICAgICAgICBsZXQgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlsczogSW50ZXJuYWxIZWxwID0gbmV3IEludGVybmFsSGVscCgpO1xyXG4gICAgICAgIC8vIEluaXQgSW50ZXJuYWwgSGVscCBXaW5kb3cgRGV0YWlscy5cclxuICAgICAgICBmb3IgKGogPSAyOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiArPSAyKSB7XHJcbiAgICAgICAgICBhdHRyaWJ1dGUgPSB0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgICAgICB2YWx1ZVN0ciA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVkFMVUUpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy52YWwgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfTkFNRSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLk5hbWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRnJhbWVYID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRVkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZVkgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FRFgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GcmFtZUR4ID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRURZKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRnJhbWVEeSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuU2l6ZWRYID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9TSVpFRFkpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5TaXplZFkgPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZBQ1RPUlgpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5GYWN0b3JYID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GQUNUT1JZKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRmFjdG9yWSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX0hFTFBfQk9SREVSU1RZTEUpIHtcclxuICAgICAgICAgICAgaW50ZXJuYWxIZWxwV2luZG93RGV0YWlscy5Cb3JkZXJzdHlsZSA9IE5OdW1iZXIuUGFyc2UoWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX0lOVEVSTkFMX1RJVExFX0JBUikge1xyXG4gICAgICAgICAgICBpbnRlcm5hbEhlbHBXaW5kb3dEZXRhaWxzLlRpdGxlQmFyID0gTk51bWJlci5QYXJzZShYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9TWVNURU1fTUVOVSkge1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSU5URVJOQUxfSEVMUF9GT05UX1RBQkxFX0lOREVYKSB7XHJcbiAgICAgICAgICAgIGludGVybmFsSGVscFdpbmRvd0RldGFpbHMuRm9udFRhYmxlSW5kZXggPSBOTnVtYmVyLlBhcnNlKFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxoZWxwdGFibGU+PGhlbHBpdGVtIC4uPi5JbnNlcnQgY2FzZSB0byBIZWxwVGFibGUuRmlsbEhlbHBJdGVtIGZvciB7MH1cIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgaGVscCBvYmplY3QgdG8gY29sbGVjdGlvbi5cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKGludGVybmFsSGVscFdpbmRvd0RldGFpbHMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9ITFBfVFlQX1dJTkRPV1M6XHJcbiAgICAgICAgbGV0IHduZEhlbHBEZXRhaWxzOiBXaW5kb3dzSGVscCA9IG5ldyBXaW5kb3dzSGVscCgpO1xyXG5cclxuICAgICAgICAvLyBJbml0IFdpbmRvd3MgSGVscCBEZXRhaWxzLlxyXG4gICAgICAgIGZvciAoaiA9IDI7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgICAgIGF0dHJpYnV0ZSA9IHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKTtcclxuICAgICAgICAgIHZhbHVlU3RyID0gdG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKTtcclxuICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1dJTkRPV1NfSEVMUF9GSUxFKSB7XHJcbiAgICAgICAgICAgIHduZEhlbHBEZXRhaWxzLkZpbGVQYXRoID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1dJTkRPV1NfSEVMUF9DT01NQU5EKSB7XHJcbiAgICAgICAgICAgICAgd25kSGVscERldGFpbHMuSGVscENvbW1hbmQgPSA8SGVscENvbW1hbmQ+Tk51bWJlci5QYXJzZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1dJTkRPV1NfSEVMUF9LRVkpIHtcclxuICAgICAgICAgICAgd25kSGVscERldGFpbHMuSGVscEtleSA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cikudG9TdHJpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8aGVscHRhYmxlPjxoZWxwaXRlbSAuLj4uSW5zZXJ0IGNhc2UgdG8gSGVscFRhYmxlLkZpbGxIZWxwSXRlbSBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBBZGQgaGVscCBvYmplY3QgdG8gY29sbGVjdGlvbi5cclxuICAgICAgICB0aGlzLl9oZWxwcy5wdXNoKHduZEhlbHBEZXRhaWxzKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEhlbHAoaWR4OiBudW1iZXIpOiBNYWdpY0hlbHAge1xyXG4gICAgbGV0IGZsYWc6IGJvb2xlYW4gPSBpZHggPCAwIHx8IGlkeCA+PSB0aGlzLl9oZWxwcy5sZW5ndGg7XHJcbiAgICBsZXQgcmVzdWx0OiBNYWdpY0hlbHA7XHJcbiAgICBpZiAoZmxhZykge1xyXG4gICAgICByZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2hlbHBzLmdldF9JdGVtKGlkeCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=
|