@payloadcms/richtext-lexical 0.1.16 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cell/index.d.ts.map +1 -1
- package/dist/cell/index.js +2 -6
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +2 -2
- package/dist/field/features/Blocks/component/BlockContent.d.ts +3 -2
- package/dist/field/features/Blocks/component/BlockContent.d.ts.map +1 -1
- package/dist/field/features/Blocks/component/BlockContent.js +48 -28
- package/dist/field/features/Blocks/component/FormSavePlugin.d.ts +4 -6
- package/dist/field/features/Blocks/component/FormSavePlugin.d.ts.map +1 -1
- package/dist/field/features/Blocks/component/FormSavePlugin.js +5 -6
- package/dist/field/features/Blocks/component/index.d.ts +5 -4
- package/dist/field/features/Blocks/component/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/component/index.js +33 -22
- package/dist/field/features/Blocks/drawer/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/drawer/index.js +7 -9
- package/dist/field/features/Blocks/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/index.js +11 -22
- package/dist/field/features/Blocks/nodes/BlocksNode.d.ts +5 -7
- package/dist/field/features/Blocks/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/field/features/Blocks/nodes/BlocksNode.js +31 -10
- package/dist/field/features/Blocks/plugin/index.d.ts +1 -1
- package/dist/field/features/Blocks/plugin/index.d.ts.map +1 -1
- package/dist/field/features/Blocks/plugin/index.js +1 -1
- package/dist/field/features/Blocks/populationPromise.js +2 -2
- package/dist/field/features/Blocks/utils/transformInputFormData.d.ts +11 -0
- package/dist/field/features/Blocks/utils/transformInputFormData.d.ts.map +1 -0
- package/dist/field/features/Blocks/utils/transformInputFormData.js +35 -0
- package/dist/field/features/Blocks/utils/transformInputFormSchema.d.ts +3 -0
- package/dist/field/features/Blocks/utils/transformInputFormSchema.d.ts.map +1 -0
- package/dist/field/features/Blocks/utils/transformInputFormSchema.js +43 -0
- package/dist/field/features/Blocks/validate.d.ts.map +1 -1
- package/dist/field/features/Blocks/validate.js +11 -4
- package/dist/field/features/Link/plugins/autoLink/index.d.ts.map +1 -1
- package/dist/field/features/Link/plugins/autoLink/index.js +142 -32
- package/dist/field/features/Relationship/nodes/RelationshipNode.js +2 -2
- package/dist/field/features/converters/html/field/index.d.ts +17 -1
- package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
- package/dist/field/features/converters/html/field/index.js +57 -18
- package/dist/field/features/debug/TestRecorder/index.d.ts +3 -0
- package/dist/field/features/debug/TestRecorder/index.d.ts.map +1 -0
- package/dist/field/features/debug/TestRecorder/index.js +29 -0
- package/dist/field/features/debug/TestRecorder/plugin/index.d.ts +5 -0
- package/dist/field/features/debug/TestRecorder/plugin/index.d.ts.map +1 -0
- package/dist/field/features/debug/TestRecorder/plugin/index.js +498 -0
- package/dist/field/features/debug/TestRecorder/plugin/index.scss +51 -0
- package/dist/field/features/debug/TreeView/index.js +2 -2
- package/dist/field/features/types.d.ts +16 -0
- package/dist/field/features/types.d.ts.map +1 -1
- package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/field/lexical/LexicalEditor.js +14 -2
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +7 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +7 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +2 -2
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +2 -1
- package/dist/field/lexical/ui/ContentEditable.scss +0 -1
- package/dist/field/lexical/utils/environment.d.ts +18 -0
- package/dist/field/lexical/utils/environment.d.ts.map +1 -0
- package/dist/field/lexical/utils/environment.js +58 -0
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +1 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.js +14 -3
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts +1 -1
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -1
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -1
- package/package.json +16 -16
|
@@ -32,7 +32,7 @@ function createLinkMatcherWithRegExp(regExp, urlTransformer = (text)=>text) {
|
|
|
32
32
|
index: match.index,
|
|
33
33
|
length: match[0].length,
|
|
34
34
|
text: match[0],
|
|
35
|
-
url: urlTransformer(
|
|
35
|
+
url: urlTransformer(match[0])
|
|
36
36
|
};
|
|
37
37
|
};
|
|
38
38
|
}
|
|
@@ -69,45 +69,139 @@ function isNextNodeValid(node) {
|
|
|
69
69
|
}
|
|
70
70
|
return nextNode === null || (0, _lexical.$isLineBreakNode)(nextNode) || (0, _lexical.$isTextNode)(nextNode) && startsWithSeparator(nextNode.getTextContent());
|
|
71
71
|
}
|
|
72
|
-
function isContentAroundIsValid(matchStart, matchEnd, text,
|
|
73
|
-
const contentBeforeIsValid = matchStart > 0 ? isSeparator(text[matchStart - 1]) : isPreviousNodeValid(
|
|
72
|
+
function isContentAroundIsValid(matchStart, matchEnd, text, nodes) {
|
|
73
|
+
const contentBeforeIsValid = matchStart > 0 ? isSeparator(text[matchStart - 1]) : isPreviousNodeValid(nodes[0]);
|
|
74
74
|
if (!contentBeforeIsValid) {
|
|
75
75
|
return false;
|
|
76
76
|
}
|
|
77
|
-
const contentAfterIsValid = matchEnd < text.length ? isSeparator(text[matchEnd]) : isNextNodeValid(
|
|
77
|
+
const contentAfterIsValid = matchEnd < text.length ? isSeparator(text[matchEnd]) : isNextNodeValid(nodes[nodes.length - 1]);
|
|
78
78
|
return contentAfterIsValid;
|
|
79
79
|
}
|
|
80
|
-
function
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
let
|
|
80
|
+
function extractMatchingNodes(nodes, startIndex, endIndex) {
|
|
81
|
+
const unmodifiedBeforeNodes = [];
|
|
82
|
+
const matchingNodes = [];
|
|
83
|
+
const unmodifiedAfterNodes = [];
|
|
84
|
+
let matchingOffset = 0;
|
|
85
|
+
let currentOffset = 0;
|
|
86
|
+
const currentNodes = [
|
|
87
|
+
...nodes
|
|
88
|
+
];
|
|
89
|
+
while(currentNodes.length > 0){
|
|
90
|
+
const currentNode = currentNodes[0];
|
|
91
|
+
const currentNodeText = currentNode.getTextContent();
|
|
92
|
+
const currentNodeLength = currentNodeText.length;
|
|
93
|
+
const currentNodeStart = currentOffset;
|
|
94
|
+
const currentNodeEnd = currentOffset + currentNodeLength;
|
|
95
|
+
if (currentNodeEnd <= startIndex) {
|
|
96
|
+
unmodifiedBeforeNodes.push(currentNode);
|
|
97
|
+
matchingOffset += currentNodeLength;
|
|
98
|
+
} else if (currentNodeStart >= endIndex) {
|
|
99
|
+
unmodifiedAfterNodes.push(currentNode);
|
|
100
|
+
} else {
|
|
101
|
+
matchingNodes.push(currentNode);
|
|
102
|
+
}
|
|
103
|
+
currentOffset += currentNodeLength;
|
|
104
|
+
currentNodes.shift();
|
|
105
|
+
}
|
|
106
|
+
return [
|
|
107
|
+
matchingOffset,
|
|
108
|
+
unmodifiedBeforeNodes,
|
|
109
|
+
matchingNodes,
|
|
110
|
+
unmodifiedAfterNodes
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
function createAutoLinkNode(nodes, startIndex, endIndex, match) {
|
|
114
|
+
const fields = {
|
|
115
|
+
linkType: 'custom',
|
|
116
|
+
url: match.url,
|
|
117
|
+
...match.fields
|
|
118
|
+
};
|
|
119
|
+
const linkNode = (0, _AutoLinkNode.$createAutoLinkNode)({
|
|
120
|
+
fields
|
|
121
|
+
});
|
|
122
|
+
if (nodes.length === 1) {
|
|
123
|
+
let remainingTextNode = nodes[0];
|
|
124
|
+
let linkTextNode;
|
|
125
|
+
if (startIndex === 0) {
|
|
126
|
+
[linkTextNode, remainingTextNode] = remainingTextNode.splitText(endIndex);
|
|
127
|
+
} else {
|
|
128
|
+
[, linkTextNode, remainingTextNode] = remainingTextNode.splitText(startIndex, endIndex);
|
|
129
|
+
}
|
|
130
|
+
const textNode = (0, _lexical.$createTextNode)(match.text);
|
|
131
|
+
textNode.setFormat(linkTextNode.getFormat());
|
|
132
|
+
textNode.setDetail(linkTextNode.getDetail());
|
|
133
|
+
linkNode.append(textNode);
|
|
134
|
+
linkTextNode.replace(linkNode);
|
|
135
|
+
return remainingTextNode;
|
|
136
|
+
} else if (nodes.length > 1) {
|
|
137
|
+
const firstTextNode = nodes[0];
|
|
138
|
+
let offset = firstTextNode.getTextContent().length;
|
|
139
|
+
let firstLinkTextNode;
|
|
140
|
+
if (startIndex === 0) {
|
|
141
|
+
firstLinkTextNode = firstTextNode;
|
|
142
|
+
} else {
|
|
143
|
+
[, firstLinkTextNode] = firstTextNode.splitText(startIndex);
|
|
144
|
+
}
|
|
145
|
+
const linkNodes = [];
|
|
146
|
+
let remainingTextNode;
|
|
147
|
+
for(let i = 1; i < nodes.length; i++){
|
|
148
|
+
const currentNode = nodes[i];
|
|
149
|
+
const currentNodeText = currentNode.getTextContent();
|
|
150
|
+
const currentNodeLength = currentNodeText.length;
|
|
151
|
+
const currentNodeStart = offset;
|
|
152
|
+
const currentNodeEnd = offset + currentNodeLength;
|
|
153
|
+
if (currentNodeStart < endIndex) {
|
|
154
|
+
if (currentNodeEnd <= endIndex) {
|
|
155
|
+
linkNodes.push(currentNode);
|
|
156
|
+
} else {
|
|
157
|
+
const [linkTextNode, endNode] = currentNode.splitText(endIndex - currentNodeStart);
|
|
158
|
+
linkNodes.push(linkTextNode);
|
|
159
|
+
remainingTextNode = endNode;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
offset += currentNodeLength;
|
|
163
|
+
}
|
|
164
|
+
const selection = (0, _lexical.$getSelection)();
|
|
165
|
+
const selectedTextNode = selection ? selection.getNodes().find(_lexical.$isTextNode) : undefined;
|
|
166
|
+
const textNode = (0, _lexical.$createTextNode)(firstLinkTextNode.getTextContent());
|
|
167
|
+
textNode.setFormat(firstLinkTextNode.getFormat());
|
|
168
|
+
textNode.setDetail(firstLinkTextNode.getDetail());
|
|
169
|
+
linkNode.append(textNode, ...linkNodes);
|
|
170
|
+
// it does not preserve caret position if caret was at the first text node
|
|
171
|
+
// so we need to restore caret position
|
|
172
|
+
if (selectedTextNode && selectedTextNode === firstLinkTextNode) {
|
|
173
|
+
if ((0, _lexical.$isRangeSelection)(selection)) {
|
|
174
|
+
textNode.select(selection.anchor.offset, selection.focus.offset);
|
|
175
|
+
} else if ((0, _lexical.$isNodeSelection)(selection)) {
|
|
176
|
+
textNode.select(0, textNode.getTextContent().length);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
firstLinkTextNode.replace(linkNode);
|
|
180
|
+
return remainingTextNode;
|
|
181
|
+
}
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
function handleLinkCreation(nodes, matchers, onChange) {
|
|
185
|
+
let currentNodes = [
|
|
186
|
+
...nodes
|
|
187
|
+
];
|
|
188
|
+
let text = currentNodes.map((node)=>node.getTextContent()).join('');
|
|
85
189
|
let match;
|
|
190
|
+
let invalidMatchEnd = 0;
|
|
86
191
|
while((match = findFirstMatch(text, matchers)) != null && match !== null){
|
|
87
192
|
const matchStart = match.index;
|
|
88
193
|
const matchLength = match.length;
|
|
89
194
|
const matchEnd = matchStart + matchLength;
|
|
90
|
-
const isValid = isContentAroundIsValid(invalidMatchEnd + matchStart, invalidMatchEnd + matchEnd,
|
|
195
|
+
const isValid = isContentAroundIsValid(invalidMatchEnd + matchStart, invalidMatchEnd + matchEnd, text, currentNodes);
|
|
91
196
|
if (isValid) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
url: match.url,
|
|
101
|
-
...match.attributes
|
|
102
|
-
};
|
|
103
|
-
const linkNode = (0, _AutoLinkNode.$createAutoLinkNode)({
|
|
104
|
-
fields
|
|
105
|
-
});
|
|
106
|
-
const textNode = (0, _lexical.$createTextNode)(match.text);
|
|
107
|
-
textNode.setFormat(linkTextNode.getFormat());
|
|
108
|
-
textNode.setDetail(linkTextNode.getDetail());
|
|
109
|
-
linkNode.append(textNode);
|
|
110
|
-
linkTextNode.replace(linkNode);
|
|
197
|
+
const [matchingOffset, , matchingNodes, unmodifiedAfterNodes] = extractMatchingNodes(currentNodes, invalidMatchEnd + matchStart, invalidMatchEnd + matchEnd);
|
|
198
|
+
const actualMatchStart = invalidMatchEnd + matchStart - matchingOffset;
|
|
199
|
+
const actualMatchEnd = invalidMatchEnd + matchEnd - matchingOffset;
|
|
200
|
+
const remainingTextNode = createAutoLinkNode(matchingNodes, actualMatchStart, actualMatchEnd, match);
|
|
201
|
+
currentNodes = remainingTextNode ? [
|
|
202
|
+
remainingTextNode,
|
|
203
|
+
...unmodifiedAfterNodes
|
|
204
|
+
] : unmodifiedAfterNodes;
|
|
111
205
|
onChange(match.url, null);
|
|
112
206
|
invalidMatchEnd = 0;
|
|
113
207
|
} else {
|
|
@@ -150,7 +244,7 @@ function handleLinkEdit(linkNode, matchers, onChange) {
|
|
|
150
244
|
onChange(match.url, url ?? null);
|
|
151
245
|
}
|
|
152
246
|
}
|
|
153
|
-
// Bad
|
|
247
|
+
// Bad neighbors are edits in neighbor nodes that make AutoLinks incompatible.
|
|
154
248
|
// Given the creation preconditions, these can only be simple text nodes.
|
|
155
249
|
function handleBadNeighbors(textNode, matchers, onChange) {
|
|
156
250
|
const previousSibling = textNode.getPreviousSibling();
|
|
@@ -176,6 +270,21 @@ function replaceWithChildren(node) {
|
|
|
176
270
|
node.remove();
|
|
177
271
|
return children.map((child)=>child.getLatest());
|
|
178
272
|
}
|
|
273
|
+
function getTextNodesToMatch(textNode) {
|
|
274
|
+
// check if next siblings are simple text nodes till a node contains a space separator
|
|
275
|
+
const textNodesToMatch = [
|
|
276
|
+
textNode
|
|
277
|
+
];
|
|
278
|
+
let nextSibling = textNode.getNextSibling();
|
|
279
|
+
while(nextSibling !== null && (0, _lexical.$isTextNode)(nextSibling) && nextSibling.isSimpleText()){
|
|
280
|
+
textNodesToMatch.push(nextSibling);
|
|
281
|
+
if (/\s/.test(nextSibling.getTextContent())) {
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
nextSibling = nextSibling.getNextSibling();
|
|
285
|
+
}
|
|
286
|
+
return textNodesToMatch;
|
|
287
|
+
}
|
|
179
288
|
function useAutoLink(editor, matchers, onChange) {
|
|
180
289
|
(0, _react.useEffect)(()=>{
|
|
181
290
|
if (!editor.hasNodes([
|
|
@@ -195,7 +304,8 @@ function useAutoLink(editor, matchers, onChange) {
|
|
|
195
304
|
handleLinkEdit(parent, matchers, onChangeWrapped);
|
|
196
305
|
} else if (!(0, _LinkNode.$isLinkNode)(parent)) {
|
|
197
306
|
if (textNode.isSimpleText() && (startsWithSeparator(textNode.getTextContent()) || !(0, _AutoLinkNode.$isAutoLinkNode)(previous))) {
|
|
198
|
-
|
|
307
|
+
const textNodesToMatch = getTextNodesToMatch(textNode);
|
|
308
|
+
handleLinkCreation(textNodesToMatch, matchers, onChangeWrapped);
|
|
199
309
|
}
|
|
200
310
|
handleBadNeighbors(textNode, matchers, onChangeWrapped);
|
|
201
311
|
}
|
|
@@ -222,4 +332,4 @@ function AutoLinkPlugin() {
|
|
|
222
332
|
return null;
|
|
223
333
|
}
|
|
224
334
|
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9MaW5rL3BsdWdpbnMvYXV0b0xpbmsvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Tm9kZSwgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7ICRjcmVhdGVUZXh0Tm9kZSwgJGlzRWxlbWVudE5vZGUsICRpc0xpbmVCcmVha05vZGUsICRpc1RleHROb2RlLCBUZXh0Tm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbGV4aWNhbC91dGlscy9pbnZhcmlhbnQnXG5pbXBvcnQgeyAkY3JlYXRlQXV0b0xpbmtOb2RlLCAkaXNBdXRvTGlua05vZGUsIEF1dG9MaW5rTm9kZSB9IGZyb20gJy4uLy4uL25vZGVzL0F1dG9MaW5rTm9kZSdcbmltcG9ydCB7ICRpc0xpbmtOb2RlLCB0eXBlIExpbmtGaWVsZHMgfSBmcm9tICcuLi8uLi9ub2Rlcy9MaW5rTm9kZSdcblxudHlwZSBDaGFuZ2VIYW5kbGVyID0gKHVybDogbnVsbCB8IHN0cmluZywgcHJldlVybDogbnVsbCB8IHN0cmluZykgPT4gdm9pZFxuXG5pbnRlcmZhY2UgTGlua01hdGNoZXJSZXN1bHQge1xuICBmaWVsZHM/OiBMaW5rRmllbGRzXG4gIGluZGV4OiBudW1iZXJcbiAgbGVuZ3RoOiBudW1iZXJcbiAgdGV4dDogc3RyaW5nXG4gIHVybDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExpbmtNYXRjaGVyID0gKHRleHQ6IHN0cmluZykgPT4gTGlua01hdGNoZXJSZXN1bHQgfCBudWxsXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaW5rTWF0Y2hlcldpdGhSZWdFeHAoXG4gIHJlZ0V4cDogUmVnRXhwLFxuICB1cmxUcmFuc2Zvcm1lcjogKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nID0gKHRleHQpID0+IHRleHQsXG4pIHtcbiAgcmV0dXJuICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IHJlZ0V4cC5leGVjKHRleHQpXG4gICAgaWYgKG1hdGNoID09PSBudWxsKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiB7XG4gICAgICBpbmRleDogbWF0Y2guaW5kZXgsXG4gICAgICBsZW5ndGg6IG1hdGNoWzBdLmxlbmd0aCxcbiAgICAgIHRleHQ6IG1hdGNoWzBdLFxuICAgICAgdXJsOiB1cmxUcmFuc2Zvcm1lcih0ZXh0KSxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEZpcnN0TWF0Y2godGV4dDogc3RyaW5nLCBtYXRjaGVyczogTGlua01hdGNoZXJbXSk6IExpbmtNYXRjaGVyUmVzdWx0IHwgbnVsbCB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXJzW2ldKHRleHQpXG5cbiAgICBpZiAobWF0Y2ggIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1hdGNoXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgUFVOQ1RVQVRJT05fT1JfU1BBQ0UgPSAvWy4sO1xcc10vXG5cbmZ1bmN0aW9uIGlzU2VwYXJhdG9yKGNoYXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gUFVOQ1RVQVRJT05fT1JfU1BBQ0UudGVzdChjaGFyKVxufVxuXG5mdW5jdGlvbiBlbmRzV2l0aFNlcGFyYXRvcih0ZXh0Q29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcGFyYXRvcih0ZXh0Q29udGVudFt0ZXh0Q29udGVudC5sZW5ndGggLSAxXSlcbn1cblxuZnVuY3Rpb24gc3RhcnRzV2l0aFNlcGFyYXRvcih0ZXh0Q29udGVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1NlcGFyYXRvcih0ZXh0Q29udGVudFswXSlcbn1cblxuZnVuY3Rpb24gaXNQcmV2aW91c05vZGVWYWxpZChub2RlOiBMZXhpY2FsTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgcHJldmlvdXNOb2RlID0gbm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICBpZiAoJGlzRWxlbWVudE5vZGUocHJldmlvdXNOb2RlKSkge1xuICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS5nZXRMYXN0RGVzY2VuZGFudCgpXG4gIH1cbiAgcmV0dXJuIChcbiAgICBwcmV2aW91c05vZGUgPT09IG51bGwgfHxcbiAgICAkaXNMaW5lQnJlYWtOb2RlKHByZXZpb3VzTm9kZSkgfHxcbiAgICAoJGlzVGV4dE5vZGUocHJldmlvdXNOb2RlKSAmJiBlbmRzV2l0aFNlcGFyYXRvcihwcmV2aW91c05vZGUuZ2V0VGV4dENvbnRlbnQoKSkpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNOZXh0Tm9kZVZhbGlkKG5vZGU6IExleGljYWxOb2RlKTogYm9vbGVhbiB7XG4gIGxldCBuZXh0Tm9kZSA9IG5vZGUuZ2V0TmV4dFNpYmxpbmcoKVxuICBpZiAoJGlzRWxlbWVudE5vZGUobmV4dE5vZGUpKSB7XG4gICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5nZXRGaXJzdERlc2NlbmRhbnQoKVxuICB9XG4gIHJldHVybiAoXG4gICAgbmV4dE5vZGUgPT09IG51bGwgfHxcbiAgICAkaXNMaW5lQnJlYWtOb2RlKG5leHROb2RlKSB8fFxuICAgICgkaXNUZXh0Tm9kZShuZXh0Tm9kZSkgJiYgc3RhcnRzV2l0aFNlcGFyYXRvcihuZXh0Tm9kZS5nZXRUZXh0Q29udGVudCgpKSlcbiAgKVxufVxuXG5mdW5jdGlvbiBpc0NvbnRlbnRBcm91bmRJc1ZhbGlkKFxuICBtYXRjaFN0YXJ0OiBudW1iZXIsXG4gIG1hdGNoRW5kOiBudW1iZXIsXG4gIHRleHQ6IHN0cmluZyxcbiAgbm9kZTogVGV4dE5vZGUsXG4pOiBib29sZWFuIHtcbiAgY29uc3QgY29udGVudEJlZm9yZUlzVmFsaWQgPVxuICAgIG1hdGNoU3RhcnQgPiAwID8gaXNTZXBhcmF0b3IodGV4dFttYXRjaFN0YXJ0IC0gMV0pIDogaXNQcmV2aW91c05vZGVWYWxpZChub2RlKVxuICBpZiAoIWNvbnRlbnRCZWZvcmVJc1ZhbGlkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBjb250ZW50QWZ0ZXJJc1ZhbGlkID1cbiAgICBtYXRjaEVuZCA8IHRleHQubGVuZ3RoID8gaXNTZXBhcmF0b3IodGV4dFttYXRjaEVuZF0pIDogaXNOZXh0Tm9kZVZhbGlkKG5vZGUpXG4gIHJldHVybiBjb250ZW50QWZ0ZXJJc1ZhbGlkXG59XG5cbmZ1bmN0aW9uIGhhbmRsZUxpbmtDcmVhdGlvbihcbiAgbm9kZTogVGV4dE5vZGUsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZTogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICBjb25zdCBub2RlVGV4dCA9IG5vZGUuZ2V0VGV4dENvbnRlbnQoKVxuICBsZXQgdGV4dCA9IG5vZGVUZXh0XG4gIGxldCBpbnZhbGlkTWF0Y2hFbmQgPSAwXG4gIGxldCByZW1haW5pbmdUZXh0Tm9kZSA9IG5vZGVcbiAgbGV0IG1hdGNoXG5cbiAgd2hpbGUgKChtYXRjaCA9IGZpbmRGaXJzdE1hdGNoKHRleHQsIG1hdGNoZXJzKSkgIT0gbnVsbCAmJiBtYXRjaCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1hdGNoU3RhcnQ6IG51bWJlciA9IG1hdGNoLmluZGV4XG4gICAgY29uc3QgbWF0Y2hMZW5ndGg6IG51bWJlciA9IG1hdGNoLmxlbmd0aFxuICAgIGNvbnN0IG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIG1hdGNoTGVuZ3RoXG4gICAgY29uc3QgaXNWYWxpZCA9IGlzQ29udGVudEFyb3VuZElzVmFsaWQoXG4gICAgICBpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaFN0YXJ0LFxuICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hFbmQsXG4gICAgICBub2RlVGV4dCxcbiAgICAgIG5vZGUsXG4gICAgKVxuXG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIGxldCBsaW5rVGV4dE5vZGVcbiAgICAgIGlmIChpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaFN0YXJ0ID09PSAwKSB7XG4gICAgICAgIDtbbGlua1RleHROb2RlLCByZW1haW5pbmdUZXh0Tm9kZV0gPSByZW1haW5pbmdUZXh0Tm9kZS5zcGxpdFRleHQoXG4gICAgICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hMZW5ndGgsXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDtbLCBsaW5rVGV4dE5vZGUsIHJlbWFpbmluZ1RleHROb2RlXSA9IHJlbWFpbmluZ1RleHROb2RlLnNwbGl0VGV4dChcbiAgICAgICAgICBpbnZhbGlkTWF0Y2hFbmQgKyBtYXRjaFN0YXJ0LFxuICAgICAgICAgIGludmFsaWRNYXRjaEVuZCArIG1hdGNoU3RhcnQgKyBtYXRjaExlbmd0aCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzOiBMaW5rRmllbGRzID0ge1xuICAgICAgICBsaW5rVHlwZTogJ2N1c3RvbScsXG4gICAgICAgIHVybDogbWF0Y2gudXJsLFxuICAgICAgICAuLi5tYXRjaC5hdHRyaWJ1dGVzLFxuICAgICAgfVxuXG4gICAgICBjb25zdCBsaW5rTm9kZSA9ICRjcmVhdGVBdXRvTGlua05vZGUoeyBmaWVsZHMgfSlcbiAgICAgIGNvbnN0IHRleHROb2RlID0gJGNyZWF0ZVRleHROb2RlKG1hdGNoLnRleHQpXG4gICAgICB0ZXh0Tm9kZS5zZXRGb3JtYXQobGlua1RleHROb2RlLmdldEZvcm1hdCgpKVxuICAgICAgdGV4dE5vZGUuc2V0RGV0YWlsKGxpbmtUZXh0Tm9kZS5nZXREZXRhaWwoKSlcbiAgICAgIGxpbmtOb2RlLmFwcGVuZCh0ZXh0Tm9kZSlcbiAgICAgIGxpbmtUZXh0Tm9kZS5yZXBsYWNlKGxpbmtOb2RlKVxuICAgICAgb25DaGFuZ2UobWF0Y2gudXJsLCBudWxsKVxuICAgICAgaW52YWxpZE1hdGNoRW5kID0gMFxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZhbGlkTWF0Y2hFbmQgKz0gbWF0Y2hFbmRcbiAgICB9XG5cbiAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWF0Y2hFbmQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlTGlua0VkaXQoXG4gIGxpbmtOb2RlOiBBdXRvTGlua05vZGUsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZTogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICAvLyBDaGVjayBjaGlsZHJlbiBhcmUgc2ltcGxlIHRleHRcbiAgY29uc3QgY2hpbGRyZW4gPSBsaW5rTm9kZS5nZXRDaGlsZHJlbigpXG4gIGNvbnN0IGNoaWxkcmVuTGVuZ3RoID0gY2hpbGRyZW4ubGVuZ3RoXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baV1cbiAgICBpZiAoISRpc1RleHROb2RlKGNoaWxkKSB8fCAhY2hpbGQuaXNTaW1wbGVUZXh0KCkpIHtcbiAgICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obGlua05vZGUpXG4gICAgICBvbkNoYW5nZShudWxsLCBsaW5rTm9kZS5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayB0ZXh0IGNvbnRlbnQgZnVsbHkgbWF0Y2hlc1xuICBjb25zdCB0ZXh0ID0gbGlua05vZGUuZ2V0VGV4dENvbnRlbnQoKVxuICBjb25zdCBtYXRjaCA9IGZpbmRGaXJzdE1hdGNoKHRleHQsIG1hdGNoZXJzKVxuICBpZiAobWF0Y2ggPT09IG51bGwgfHwgbWF0Y2gudGV4dCAhPT0gdGV4dCkge1xuICAgIHJlcGxhY2VXaXRoQ2hpbGRyZW4obGlua05vZGUpXG4gICAgb25DaGFuZ2UobnVsbCwgbGlua05vZGUuZ2V0RmllbGRzKCk/LnVybCA/PyBudWxsKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQ2hlY2sgbmVpZ2hib3JzXG4gIGlmICghaXNQcmV2aW91c05vZGVWYWxpZChsaW5rTm9kZSkgfHwgIWlzTmV4dE5vZGVWYWxpZChsaW5rTm9kZSkpIHtcbiAgICByZXBsYWNlV2l0aENoaWxkcmVuKGxpbmtOb2RlKVxuICAgIG9uQ2hhbmdlKG51bGwsIGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmwgPz8gbnVsbClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHVybCA9IGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmxcbiAgaWYgKHVybCAhPT0gbWF0Y2g/LnVybCkge1xuICAgIGNvbnN0IGZsZHMgPSBsaW5rTm9kZS5nZXRGaWVsZHMoKVxuICAgIGZsZHMudXJsID0gbWF0Y2g/LnVybFxuICAgIGxpbmtOb2RlLnNldEZpZWxkcyhmbGRzKVxuICAgIG9uQ2hhbmdlKG1hdGNoLnVybCwgdXJsID8/IG51bGwpXG4gIH1cbn1cblxuLy8gQmFkIG5laWdoYm91cnMgYXJlIGVkaXRzIGluIG5laWdoYm9yIG5vZGVzIHRoYXQgbWFrZSBBdXRvTGlua3MgaW5jb21wYXRpYmxlLlxuLy8gR2l2ZW4gdGhlIGNyZWF0aW9uIHByZWNvbmRpdGlvbnMsIHRoZXNlIGNhbiBvbmx5IGJlIHNpbXBsZSB0ZXh0IG5vZGVzLlxuZnVuY3Rpb24gaGFuZGxlQmFkTmVpZ2hib3JzKFxuICB0ZXh0Tm9kZTogVGV4dE5vZGUsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZTogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICBjb25zdCBwcmV2aW91c1NpYmxpbmcgPSB0ZXh0Tm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICBjb25zdCBuZXh0U2libGluZyA9IHRleHROb2RlLmdldE5leHRTaWJsaW5nKClcbiAgY29uc3QgdGV4dCA9IHRleHROb2RlLmdldFRleHRDb250ZW50KClcblxuICBpZiAoJGlzQXV0b0xpbmtOb2RlKHByZXZpb3VzU2libGluZykgJiYgIXN0YXJ0c1dpdGhTZXBhcmF0b3IodGV4dCkpIHtcbiAgICBwcmV2aW91c1NpYmxpbmcuYXBwZW5kKHRleHROb2RlKVxuICAgIGhhbmRsZUxpbmtFZGl0KHByZXZpb3VzU2libGluZywgbWF0Y2hlcnMsIG9uQ2hhbmdlKVxuICAgIG9uQ2hhbmdlKG51bGwsIHByZXZpb3VzU2libGluZy5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gIH1cblxuICBpZiAoJGlzQXV0b0xpbmtOb2RlKG5leHRTaWJsaW5nKSAmJiAhZW5kc1dpdGhTZXBhcmF0b3IodGV4dCkpIHtcbiAgICByZXBsYWNlV2l0aENoaWxkcmVuKG5leHRTaWJsaW5nKVxuICAgIGhhbmRsZUxpbmtFZGl0KG5leHRTaWJsaW5nLCBtYXRjaGVycywgb25DaGFuZ2UpXG4gICAgb25DaGFuZ2UobnVsbCwgbmV4dFNpYmxpbmcuZ2V0RmllbGRzKCk/LnVybCA/PyBudWxsKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VXaXRoQ2hpbGRyZW4obm9kZTogRWxlbWVudE5vZGUpOiBMZXhpY2FsTm9kZVtdIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmdldENoaWxkcmVuKClcbiAgY29uc3QgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICBmb3IgKGxldCBqID0gY2hpbGRyZW5MZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgIG5vZGUuaW5zZXJ0QWZ0ZXIoY2hpbGRyZW5bal0pXG4gIH1cblxuICBub2RlLnJlbW92ZSgpXG4gIHJldHVybiBjaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiBjaGlsZC5nZXRMYXRlc3QoKSlcbn1cblxuZnVuY3Rpb24gdXNlQXV0b0xpbmsoXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgbWF0Y2hlcnM6IExpbmtNYXRjaGVyW10sXG4gIG9uQ2hhbmdlPzogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yLmhhc05vZGVzKFtBdXRvTGlua05vZGVdKSkge1xuICAgICAgaW52YXJpYW50KGZhbHNlLCAnTGV4aWNhbEF1dG9MaW5rUGx1Z2luOiBBdXRvTGlua05vZGUgbm90IHJlZ2lzdGVyZWQgb24gZWRpdG9yJylcbiAgICB9XG5cbiAgICBjb25zdCBvbkNoYW5nZVdyYXBwZWQgPSAodXJsOiBudWxsIHwgc3RyaW5nLCBwcmV2VXJsOiBudWxsIHwgc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICBpZiAob25DaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICBvbkNoYW5nZSh1cmwsIHByZXZVcmwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJOb2RlVHJhbnNmb3JtKFRleHROb2RlLCAodGV4dE5vZGU6IFRleHROb2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLmdldFBhcmVudE9yVGhyb3coKVxuICAgICAgICBjb25zdCBwcmV2aW91cyA9IHRleHROb2RlLmdldFByZXZpb3VzU2libGluZygpXG4gICAgICAgIGlmICgkaXNBdXRvTGlua05vZGUocGFyZW50KSkge1xuICAgICAgICAgIGhhbmRsZUxpbmtFZGl0KHBhcmVudCwgbWF0Y2hlcnMsIG9uQ2hhbmdlV3JhcHBlZClcbiAgICAgICAgfSBlbHNlIGlmICghJGlzTGlua05vZGUocGFyZW50KSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRleHROb2RlLmlzU2ltcGxlVGV4dCgpICYmXG4gICAgICAgICAgICAoc3RhcnRzV2l0aFNlcGFyYXRvcih0ZXh0Tm9kZS5nZXRUZXh0Q29udGVudCgpKSB8fCAhJGlzQXV0b0xpbmtOb2RlKHByZXZpb3VzKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhhbmRsZUxpbmtDcmVhdGlvbih0ZXh0Tm9kZSwgbWF0Y2hlcnMsIG9uQ2hhbmdlV3JhcHBlZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBoYW5kbGVCYWROZWlnaGJvcnModGV4dE5vZGUsIG1hdGNoZXJzLCBvbkNoYW5nZVdyYXBwZWQpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgbWF0Y2hlcnMsIG9uQ2hhbmdlXSlcbn1cblxuY29uc3QgVVJMX1JFR0VYID1cbiAgLygoaHR0cHM/OlxcL1xcLyh3d3dcXC4pPyl8KHd3d1xcLikpWy1cXHdAOiUuK34jPV17MSwyNTZ9XFwuW2EtekEtWlxcZCgpXXsxLDZ9XFxiKFstXFx3KClAOiUrLn4jPyYvPV0qKS9cblxuY29uc3QgRU1BSUxfUkVHRVggPVxuICAvKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtcXGR7MSwzfVxcLlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcXSl8KChbYS16QS1aXFwtXFxkXStcXC4pK1thLXpBLVpdezIsfSkpL1xuXG5jb25zdCBNQVRDSEVSUyA9IFtcbiAgY3JlYXRlTGlua01hdGNoZXJXaXRoUmVnRXhwKFVSTF9SRUdFWCwgKHRleHQpID0+IHtcbiAgICByZXR1cm4gdGV4dC5zdGFydHNXaXRoKCdodHRwJykgPyB0ZXh0IDogYGh0dHBzOi8vJHt0ZXh0fWBcbiAgfSksXG4gIGNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cChFTUFJTF9SRUdFWCwgKHRleHQpID0+IHtcbiAgICByZXR1cm4gYG1haWx0bzoke3RleHR9YFxuICB9KSxcbl1cblxuZXhwb3J0IGZ1bmN0aW9uIEF1dG9MaW5rUGx1Z2luKCk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG5cbiAgdXNlQXV0b0xpbmsoZWRpdG9yLCBNQVRDSEVSUylcblxuICByZXR1cm4gbnVsbFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cCIsIkF1dG9MaW5rUGx1Z2luIiwicmVnRXhwIiwidXJsVHJhbnNmb3JtZXIiLCJ0ZXh0IiwibWF0Y2giLCJleGVjIiwiaW5kZXgiLCJsZW5ndGgiLCJ1cmwiLCJmaW5kRmlyc3RNYXRjaCIsIm1hdGNoZXJzIiwiaSIsIlBVTkNUVUFUSU9OX09SX1NQQUNFIiwiaXNTZXBhcmF0b3IiLCJjaGFyIiwidGVzdCIsImVuZHNXaXRoU2VwYXJhdG9yIiwidGV4dENvbnRlbnQiLCJzdGFydHNXaXRoU2VwYXJhdG9yIiwiaXNQcmV2aW91c05vZGVWYWxpZCIsIm5vZGUiLCJwcmV2aW91c05vZGUiLCJnZXRQcmV2aW91c1NpYmxpbmciLCIkaXNFbGVtZW50Tm9kZSIsImdldExhc3REZXNjZW5kYW50IiwiJGlzTGluZUJyZWFrTm9kZSIsIiRpc1RleHROb2RlIiwiZ2V0VGV4dENvbnRlbnQiLCJpc05leHROb2RlVmFsaWQiLCJuZXh0Tm9kZSIsImdldE5leHRTaWJsaW5nIiwiZ2V0Rmlyc3REZXNjZW5kYW50IiwiaXNDb250ZW50QXJvdW5kSXNWYWxpZCIsIm1hdGNoU3RhcnQiLCJtYXRjaEVuZCIsImNvbnRlbnRCZWZvcmVJc1ZhbGlkIiwiY29udGVudEFmdGVySXNWYWxpZCIsImhhbmRsZUxpbmtDcmVhdGlvbiIsIm9uQ2hhbmdlIiwibm9kZVRleHQiLCJpbnZhbGlkTWF0Y2hFbmQiLCJyZW1haW5pbmdUZXh0Tm9kZSIsIm1hdGNoTGVuZ3RoIiwiaXNWYWxpZCIsImxpbmtUZXh0Tm9kZSIsInNwbGl0VGV4dCIsImZpZWxkcyIsImxpbmtUeXBlIiwiYXR0cmlidXRlcyIsImxpbmtOb2RlIiwiJGNyZWF0ZUF1dG9MaW5rTm9kZSIsInRleHROb2RlIiwiJGNyZWF0ZVRleHROb2RlIiwic2V0Rm9ybWF0IiwiZ2V0Rm9ybWF0Iiwic2V0RGV0YWlsIiwiZ2V0RGV0YWlsIiwiYXBwZW5kIiwicmVwbGFjZSIsInN1YnN0cmluZyIsImhhbmRsZUxpbmtFZGl0IiwiY2hpbGRyZW4iLCJnZXRDaGlsZHJlbiIsImNoaWxkcmVuTGVuZ3RoIiwiY2hpbGQiLCJpc1NpbXBsZVRleHQiLCJyZXBsYWNlV2l0aENoaWxkcmVuIiwiZ2V0RmllbGRzIiwiZmxkcyIsInNldEZpZWxkcyIsImhhbmRsZUJhZE5laWdoYm9ycyIsInByZXZpb3VzU2libGluZyIsIm5leHRTaWJsaW5nIiwiJGlzQXV0b0xpbmtOb2RlIiwiaiIsImluc2VydEFmdGVyIiwicmVtb3ZlIiwibWFwIiwiZ2V0TGF0ZXN0IiwidXNlQXV0b0xpbmsiLCJlZGl0b3IiLCJ1c2VFZmZlY3QiLCJoYXNOb2RlcyIsIkF1dG9MaW5rTm9kZSIsImludmFyaWFudCIsIm9uQ2hhbmdlV3JhcHBlZCIsInByZXZVcmwiLCJtZXJnZVJlZ2lzdGVyIiwicmVnaXN0ZXJOb2RlVHJhbnNmb3JtIiwiVGV4dE5vZGUiLCJwYXJlbnQiLCJnZXRQYXJlbnRPclRocm93IiwicHJldmlvdXMiLCIkaXNMaW5rTm9kZSIsIlVSTF9SRUdFWCIsIkVNQUlMX1JFR0VYIiwiTUFUQ0hFUlMiLCJzdGFydHNXaXRoIiwidXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztJQXdCZ0JBLDJCQUEyQjtlQUEzQkE7O0lBNlFBQyxjQUFjO2VBQWRBOzs7d0NBbFMwQjt1QkFDWjt5QkFDMkQ7dUJBQy9EOzJCQUVBOzhCQUN5QzswQkFDdEI7QUFjdEMsU0FBU0QsNEJBQ2RFLE1BQWMsRUFDZEMsaUJBQTJDLENBQUNDLE9BQVNBLElBQUk7SUFFekQsT0FBTyxDQUFDQTtRQUNOLE1BQU1DLFFBQVFILE9BQU9JLElBQUksQ0FBQ0Y7UUFDMUIsSUFBSUMsVUFBVSxNQUFNLE9BQU87UUFDM0IsT0FBTztZQUNMRSxPQUFPRixNQUFNRSxLQUFLO1lBQ2xCQyxRQUFRSCxLQUFLLENBQUMsRUFBRSxDQUFDRyxNQUFNO1lBQ3ZCSixNQUFNQyxLQUFLLENBQUMsRUFBRTtZQUNkSSxLQUFLTixlQUFlQztRQUN0QjtJQUNGO0FBQ0Y7QUFFQSxTQUFTTSxlQUFlTixJQUFZLEVBQUVPLFFBQXVCO0lBQzNELElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJRCxTQUFTSCxNQUFNLEVBQUVJLElBQUs7UUFDeEMsTUFBTVAsUUFBUU0sUUFBUSxDQUFDQyxFQUFFLENBQUNSO1FBRTFCLElBQUlDLFNBQVMsTUFBTTtZQUNqQixPQUFPQTtRQUNUO0lBQ0Y7SUFFQSxPQUFPO0FBQ1Q7QUFFQSxNQUFNUSx1QkFBdUI7QUFFN0IsU0FBU0MsWUFBWUMsSUFBWTtJQUMvQixPQUFPRixxQkFBcUJHLElBQUksQ0FBQ0Q7QUFDbkM7QUFFQSxTQUFTRSxrQkFBa0JDLFdBQW1CO0lBQzVDLE9BQU9KLFlBQVlJLFdBQVcsQ0FBQ0EsWUFBWVYsTUFBTSxHQUFHLEVBQUU7QUFDeEQ7QUFFQSxTQUFTVyxvQkFBb0JELFdBQW1CO0lBQzlDLE9BQU9KLFlBQVlJLFdBQVcsQ0FBQyxFQUFFO0FBQ25DO0FBRUEsU0FBU0Usb0JBQW9CQyxJQUFpQjtJQUM1QyxJQUFJQyxlQUFlRCxLQUFLRSxrQkFBa0I7SUFDMUMsSUFBSUMsSUFBQUEsdUJBQWMsRUFBQ0YsZUFBZTtRQUNoQ0EsZUFBZUEsYUFBYUcsaUJBQWlCO0lBQy9DO0lBQ0EsT0FDRUgsaUJBQWlCLFFBQ2pCSSxJQUFBQSx5QkFBZ0IsRUFBQ0osaUJBQ2hCSyxJQUFBQSxvQkFBVyxFQUFDTCxpQkFBaUJMLGtCQUFrQkssYUFBYU0sY0FBYztBQUUvRTtBQUVBLFNBQVNDLGdCQUFnQlIsSUFBaUI7SUFDeEMsSUFBSVMsV0FBV1QsS0FBS1UsY0FBYztJQUNsQyxJQUFJUCxJQUFBQSx1QkFBYyxFQUFDTSxXQUFXO1FBQzVCQSxXQUFXQSxTQUFTRSxrQkFBa0I7SUFDeEM7SUFDQSxPQUNFRixhQUFhLFFBQ2JKLElBQUFBLHlCQUFnQixFQUFDSSxhQUNoQkgsSUFBQUEsb0JBQVcsRUFBQ0csYUFBYVgsb0JBQW9CVyxTQUFTRixjQUFjO0FBRXpFO0FBRUEsU0FBU0ssdUJBQ1BDLFVBQWtCLEVBQ2xCQyxRQUFnQixFQUNoQi9CLElBQVksRUFDWmlCLElBQWM7SUFFZCxNQUFNZSx1QkFDSkYsYUFBYSxJQUFJcEIsWUFBWVYsSUFBSSxDQUFDOEIsYUFBYSxFQUFFLElBQUlkLG9CQUFvQkM7SUFDM0UsSUFBSSxDQUFDZSxzQkFBc0I7UUFDekIsT0FBTztJQUNUO0lBRUEsTUFBTUMsc0JBQ0pGLFdBQVcvQixLQUFLSSxNQUFNLEdBQUdNLFlBQVlWLElBQUksQ0FBQytCLFNBQVMsSUFBSU4sZ0JBQWdCUjtJQUN6RSxPQUFPZ0I7QUFDVDtBQUVBLFNBQVNDLG1CQUNQakIsSUFBYyxFQUNkVixRQUF1QixFQUN2QjRCLFFBQXVCO0lBRXZCLE1BQU1DLFdBQVduQixLQUFLTyxjQUFjO0lBQ3BDLElBQUl4QixPQUFPb0M7SUFDWCxJQUFJQyxrQkFBa0I7SUFDdEIsSUFBSUMsb0JBQW9CckI7SUFDeEIsSUFBSWhCO0lBRUosTUFBTyxBQUFDQSxDQUFBQSxRQUFRSyxlQUFlTixNQUFNTyxTQUFRLEtBQU0sUUFBUU4sVUFBVSxLQUFNO1FBQ3pFLE1BQU02QixhQUFxQjdCLE1BQU1FLEtBQUs7UUFDdEMsTUFBTW9DLGNBQXNCdEMsTUFBTUcsTUFBTTtRQUN4QyxNQUFNMkIsV0FBV0QsYUFBYVM7UUFDOUIsTUFBTUMsVUFBVVgsdUJBQ2RRLGtCQUFrQlAsWUFDbEJPLGtCQUFrQk4sVUFDbEJLLFVBQ0FuQjtRQUdGLElBQUl1QixTQUFTO1lBQ1gsSUFBSUM7WUFDSixJQUFJSixrQkFBa0JQLGVBQWUsR0FBRztnQkFDckMsQ0FBQ1csY0FBY0gsa0JBQWtCLEdBQUdBLGtCQUFrQkksU0FBUyxDQUM5REwsa0JBQWtCRTtZQUV0QixPQUFPO2dCQUNKLEdBQUdFLGNBQWNILGtCQUFrQixHQUFHQSxrQkFBa0JJLFNBQVMsQ0FDaEVMLGtCQUFrQlAsWUFDbEJPLGtCQUFrQlAsYUFBYVM7WUFFbkM7WUFDQSxNQUFNSSxTQUFxQjtnQkFDekJDLFVBQVU7Z0JBQ1Z2QyxLQUFLSixNQUFNSSxHQUFHO2dCQUNkLEdBQUdKLE1BQU00QyxVQUFVO1lBQ3JCO1lBRUEsTUFBTUMsV0FBV0MsSUFBQUEsaUNBQW1CLEVBQUM7Z0JBQUVKO1lBQU87WUFDOUMsTUFBTUssV0FBV0MsSUFBQUEsd0JBQWUsRUFBQ2hELE1BQU1ELElBQUk7WUFDM0NnRCxTQUFTRSxTQUFTLENBQUNULGFBQWFVLFNBQVM7WUFDekNILFNBQVNJLFNBQVMsQ0FBQ1gsYUFBYVksU0FBUztZQUN6Q1AsU0FBU1EsTUFBTSxDQUFDTjtZQUNoQlAsYUFBYWMsT0FBTyxDQUFDVDtZQUNyQlgsU0FBU2xDLE1BQU1JLEdBQUcsRUFBRTtZQUNwQmdDLGtCQUFrQjtRQUNwQixPQUFPO1lBQ0xBLG1CQUFtQk47UUFDckI7UUFFQS9CLE9BQU9BLEtBQUt3RCxTQUFTLENBQUN6QjtJQUN4QjtBQUNGO0FBRUEsU0FBUzBCLGVBQ1BYLFFBQXNCLEVBQ3RCdkMsUUFBdUIsRUFDdkI0QixRQUF1QjtJQUV2QixpQ0FBaUM7SUFDakMsTUFBTXVCLFdBQVdaLFNBQVNhLFdBQVc7SUFDckMsTUFBTUMsaUJBQWlCRixTQUFTdEQsTUFBTTtJQUN0QyxJQUFLLElBQUlJLElBQUksR0FBR0EsSUFBSW9ELGdCQUFnQnBELElBQUs7UUFDdkMsTUFBTXFELFFBQVFILFFBQVEsQ0FBQ2xELEVBQUU7UUFDekIsSUFBSSxDQUFDZSxJQUFBQSxvQkFBVyxFQUFDc0MsVUFBVSxDQUFDQSxNQUFNQyxZQUFZLElBQUk7WUFDaERDLG9CQUFvQmpCO1lBQ3BCWCxTQUFTLE1BQU1XLFNBQVNrQixTQUFTLElBQUkzRCxPQUFPO1lBQzVDO1FBQ0Y7SUFDRjtJQUVBLG1DQUFtQztJQUNuQyxNQUFNTCxPQUFPOEMsU0FBU3RCLGNBQWM7SUFDcEMsTUFBTXZCLFFBQVFLLGVBQWVOLE1BQU1PO0lBQ25DLElBQUlOLFVBQVUsUUFBUUEsTUFBTUQsSUFBSSxLQUFLQSxNQUFNO1FBQ3pDK0Qsb0JBQW9CakI7UUFDcEJYLFNBQVMsTUFBTVcsU0FBU2tCLFNBQVMsSUFBSTNELE9BQU87UUFDNUM7SUFDRjtJQUVBLGtCQUFrQjtJQUNsQixJQUFJLENBQUNXLG9CQUFvQjhCLGFBQWEsQ0FBQ3JCLGdCQUFnQnFCLFdBQVc7UUFDaEVpQixvQkFBb0JqQjtRQUNwQlgsU0FBUyxNQUFNVyxTQUFTa0IsU0FBUyxJQUFJM0QsT0FBTztRQUM1QztJQUNGO0lBRUEsTUFBTUEsTUFBTXlDLFNBQVNrQixTQUFTLElBQUkzRDtJQUNsQyxJQUFJQSxRQUFRSixPQUFPSSxLQUFLO1FBQ3RCLE1BQU00RCxPQUFPbkIsU0FBU2tCLFNBQVM7UUFDL0JDLEtBQUs1RCxHQUFHLEdBQUdKLE9BQU9JO1FBQ2xCeUMsU0FBU29CLFNBQVMsQ0FBQ0Q7UUFDbkI5QixTQUFTbEMsTUFBTUksR0FBRyxFQUFFQSxPQUFPO0lBQzdCO0FBQ0Y7QUFFQSwrRUFBK0U7QUFDL0UseUVBQXlFO0FBQ3pFLFNBQVM4RCxtQkFDUG5CLFFBQWtCLEVBQ2xCekMsUUFBdUIsRUFDdkI0QixRQUF1QjtJQUV2QixNQUFNaUMsa0JBQWtCcEIsU0FBUzdCLGtCQUFrQjtJQUNuRCxNQUFNa0QsY0FBY3JCLFNBQVNyQixjQUFjO0lBQzNDLE1BQU0zQixPQUFPZ0QsU0FBU3hCLGNBQWM7SUFFcEMsSUFBSThDLElBQUFBLDZCQUFlLEVBQUNGLG9CQUFvQixDQUFDckQsb0JBQW9CZixPQUFPO1FBQ2xFb0UsZ0JBQWdCZCxNQUFNLENBQUNOO1FBQ3ZCUyxlQUFlVyxpQkFBaUI3RCxVQUFVNEI7UUFDMUNBLFNBQVMsTUFBTWlDLGdCQUFnQkosU0FBUyxJQUFJM0QsT0FBTztJQUNyRDtJQUVBLElBQUlpRSxJQUFBQSw2QkFBZSxFQUFDRCxnQkFBZ0IsQ0FBQ3hELGtCQUFrQmIsT0FBTztRQUM1RCtELG9CQUFvQk07UUFDcEJaLGVBQWVZLGFBQWE5RCxVQUFVNEI7UUFDdENBLFNBQVMsTUFBTWtDLFlBQVlMLFNBQVMsSUFBSTNELE9BQU87SUFDakQ7QUFDRjtBQUVBLFNBQVMwRCxvQkFBb0I5QyxJQUFpQjtJQUM1QyxNQUFNeUMsV0FBV3pDLEtBQUswQyxXQUFXO0lBQ2pDLE1BQU1DLGlCQUFpQkYsU0FBU3RELE1BQU07SUFFdEMsSUFBSyxJQUFJbUUsSUFBSVgsaUJBQWlCLEdBQUdXLEtBQUssR0FBR0EsSUFBSztRQUM1Q3RELEtBQUt1RCxXQUFXLENBQUNkLFFBQVEsQ0FBQ2EsRUFBRTtJQUM5QjtJQUVBdEQsS0FBS3dELE1BQU07SUFDWCxPQUFPZixTQUFTZ0IsR0FBRyxDQUFDLENBQUNiLFFBQVVBLE1BQU1jLFNBQVM7QUFDaEQ7QUFFQSxTQUFTQyxZQUNQQyxNQUFxQixFQUNyQnRFLFFBQXVCLEVBQ3ZCNEIsUUFBd0I7SUFFeEIyQyxJQUFBQSxnQkFBUyxFQUFDO1FBQ1IsSUFBSSxDQUFDRCxPQUFPRSxRQUFRLENBQUM7WUFBQ0MsMEJBQVk7U0FBQyxHQUFHO1lBQ3BDQyxJQUFBQSxvQkFBUyxFQUFDLE9BQU87UUFDbkI7UUFFQSxNQUFNQyxrQkFBa0IsQ0FBQzdFLEtBQW9COEU7WUFDM0MsSUFBSWhELFlBQVksTUFBTTtnQkFDcEJBLFNBQVM5QixLQUFLOEU7WUFDaEI7UUFDRjtRQUVBLE9BQU9DLElBQUFBLG9CQUFhLEVBQ2xCUCxPQUFPUSxxQkFBcUIsQ0FBQ0MsaUJBQVEsRUFBRSxDQUFDdEM7WUFDdEMsTUFBTXVDLFNBQVN2QyxTQUFTd0MsZ0JBQWdCO1lBQ3hDLE1BQU1DLFdBQVd6QyxTQUFTN0Isa0JBQWtCO1lBQzVDLElBQUltRCxJQUFBQSw2QkFBZSxFQUFDaUIsU0FBUztnQkFDM0I5QixlQUFlOEIsUUFBUWhGLFVBQVUyRTtZQUNuQyxPQUFPLElBQUksQ0FBQ1EsSUFBQUEscUJBQVcsRUFBQ0gsU0FBUztnQkFDL0IsSUFDRXZDLFNBQVNjLFlBQVksTUFDcEIvQyxDQUFBQSxvQkFBb0JpQyxTQUFTeEIsY0FBYyxPQUFPLENBQUM4QyxJQUFBQSw2QkFBZSxFQUFDbUIsU0FBUSxHQUM1RTtvQkFDQXZELG1CQUFtQmMsVUFBVXpDLFVBQVUyRTtnQkFDekM7Z0JBRUFmLG1CQUFtQm5CLFVBQVV6QyxVQUFVMkU7WUFDekM7UUFDRjtJQUVKLEdBQUc7UUFBQ0w7UUFBUXRFO1FBQVU0QjtLQUFTO0FBQ2pDO0FBRUEsTUFBTXdELFlBQ0o7QUFFRixNQUFNQyxjQUNKO0FBRUYsTUFBTUMsV0FBVztJQUNmakcsNEJBQTRCK0YsV0FBVyxDQUFDM0Y7UUFDdEMsT0FBT0EsS0FBSzhGLFVBQVUsQ0FBQyxVQUFVOUYsT0FBTyxDQUFDLFFBQVEsRUFBRUEsS0FBSyxDQUFDO0lBQzNEO0lBQ0FKLDRCQUE0QmdHLGFBQWEsQ0FBQzVGO1FBQ3hDLE9BQU8sQ0FBQyxPQUFPLEVBQUVBLEtBQUssQ0FBQztJQUN6QjtDQUNEO0FBRU0sU0FBU0g7SUFDZCxNQUFNLENBQUNnRixPQUFPLEdBQUdrQixJQUFBQSxpREFBeUI7SUFFMUNuQixZQUFZQyxRQUFRZ0I7SUFFcEIsT0FBTztBQUNUIn0=
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9MaW5rL3BsdWdpbnMvYXV0b0xpbmsvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50Tm9kZSwgTGV4aWNhbEVkaXRvciwgTGV4aWNhbE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRjcmVhdGVUZXh0Tm9kZSxcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzRWxlbWVudE5vZGUsXG4gICRpc0xpbmVCcmVha05vZGUsXG4gICRpc05vZGVTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICAkaXNUZXh0Tm9kZSxcbiAgVGV4dE5vZGUsXG59IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbGV4aWNhbC91dGlscy9pbnZhcmlhbnQnXG5pbXBvcnQgeyAkY3JlYXRlQXV0b0xpbmtOb2RlLCAkaXNBdXRvTGlua05vZGUsIEF1dG9MaW5rTm9kZSB9IGZyb20gJy4uLy4uL25vZGVzL0F1dG9MaW5rTm9kZSdcbmltcG9ydCB7ICRpc0xpbmtOb2RlLCB0eXBlIExpbmtGaWVsZHMgfSBmcm9tICcuLi8uLi9ub2Rlcy9MaW5rTm9kZSdcblxudHlwZSBDaGFuZ2VIYW5kbGVyID0gKHVybDogbnVsbCB8IHN0cmluZywgcHJldlVybDogbnVsbCB8IHN0cmluZykgPT4gdm9pZFxuXG5pbnRlcmZhY2UgTGlua01hdGNoZXJSZXN1bHQge1xuICBmaWVsZHM/OiBMaW5rRmllbGRzXG4gIGluZGV4OiBudW1iZXJcbiAgbGVuZ3RoOiBudW1iZXJcbiAgdGV4dDogc3RyaW5nXG4gIHVybDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIExpbmtNYXRjaGVyID0gKHRleHQ6IHN0cmluZykgPT4gTGlua01hdGNoZXJSZXN1bHQgfCBudWxsXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaW5rTWF0Y2hlcldpdGhSZWdFeHAoXG4gIHJlZ0V4cDogUmVnRXhwLFxuICB1cmxUcmFuc2Zvcm1lcjogKHRleHQ6IHN0cmluZykgPT4gc3RyaW5nID0gKHRleHQpID0+IHRleHQsXG4pIHtcbiAgcmV0dXJuICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IHJlZ0V4cC5leGVjKHRleHQpXG4gICAgaWYgKG1hdGNoID09PSBudWxsKSByZXR1cm4gbnVsbFxuICAgIHJldHVybiB7XG4gICAgICBpbmRleDogbWF0Y2guaW5kZXgsXG4gICAgICBsZW5ndGg6IG1hdGNoWzBdLmxlbmd0aCxcbiAgICAgIHRleHQ6IG1hdGNoWzBdLFxuICAgICAgdXJsOiB1cmxUcmFuc2Zvcm1lcihtYXRjaFswXSksXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdE1hdGNoKHRleHQ6IHN0cmluZywgbWF0Y2hlcnM6IExpbmtNYXRjaGVyW10pOiBMaW5rTWF0Y2hlclJlc3VsdCB8IG51bGwge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyc1tpXSh0ZXh0KVxuXG4gICAgaWYgKG1hdGNoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBtYXRjaFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmNvbnN0IFBVTkNUVUFUSU9OX09SX1NQQUNFID0gL1suLDtcXHNdL1xuXG5mdW5jdGlvbiBpc1NlcGFyYXRvcihjaGFyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFBVTkNUVUFUSU9OX09SX1NQQUNFLnRlc3QoY2hhcilcbn1cblxuZnVuY3Rpb24gZW5kc1dpdGhTZXBhcmF0b3IodGV4dENvbnRlbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNTZXBhcmF0b3IodGV4dENvbnRlbnRbdGV4dENvbnRlbnQubGVuZ3RoIC0gMV0pXG59XG5cbmZ1bmN0aW9uIHN0YXJ0c1dpdGhTZXBhcmF0b3IodGV4dENvbnRlbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNTZXBhcmF0b3IodGV4dENvbnRlbnRbMF0pXG59XG5cbmZ1bmN0aW9uIGlzUHJldmlvdXNOb2RlVmFsaWQobm9kZTogTGV4aWNhbE5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHByZXZpb3VzTm9kZSA9IG5vZGUuZ2V0UHJldmlvdXNTaWJsaW5nKClcbiAgaWYgKCRpc0VsZW1lbnROb2RlKHByZXZpb3VzTm9kZSkpIHtcbiAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c05vZGUuZ2V0TGFzdERlc2NlbmRhbnQoKVxuICB9XG4gIHJldHVybiAoXG4gICAgcHJldmlvdXNOb2RlID09PSBudWxsIHx8XG4gICAgJGlzTGluZUJyZWFrTm9kZShwcmV2aW91c05vZGUpIHx8XG4gICAgKCRpc1RleHROb2RlKHByZXZpb3VzTm9kZSkgJiYgZW5kc1dpdGhTZXBhcmF0b3IocHJldmlvdXNOb2RlLmdldFRleHRDb250ZW50KCkpKVxuICApXG59XG5cbmZ1bmN0aW9uIGlzTmV4dE5vZGVWYWxpZChub2RlOiBMZXhpY2FsTm9kZSk6IGJvb2xlYW4ge1xuICBsZXQgbmV4dE5vZGUgPSBub2RlLmdldE5leHRTaWJsaW5nKClcbiAgaWYgKCRpc0VsZW1lbnROb2RlKG5leHROb2RlKSkge1xuICAgIG5leHROb2RlID0gbmV4dE5vZGUuZ2V0Rmlyc3REZXNjZW5kYW50KClcbiAgfVxuICByZXR1cm4gKFxuICAgIG5leHROb2RlID09PSBudWxsIHx8XG4gICAgJGlzTGluZUJyZWFrTm9kZShuZXh0Tm9kZSkgfHxcbiAgICAoJGlzVGV4dE5vZGUobmV4dE5vZGUpICYmIHN0YXJ0c1dpdGhTZXBhcmF0b3IobmV4dE5vZGUuZ2V0VGV4dENvbnRlbnQoKSkpXG4gIClcbn1cblxuZnVuY3Rpb24gaXNDb250ZW50QXJvdW5kSXNWYWxpZChcbiAgbWF0Y2hTdGFydDogbnVtYmVyLFxuICBtYXRjaEVuZDogbnVtYmVyLFxuICB0ZXh0OiBzdHJpbmcsXG4gIG5vZGVzOiBUZXh0Tm9kZVtdLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNvbnRlbnRCZWZvcmVJc1ZhbGlkID1cbiAgICBtYXRjaFN0YXJ0ID4gMCA/IGlzU2VwYXJhdG9yKHRleHRbbWF0Y2hTdGFydCAtIDFdKSA6IGlzUHJldmlvdXNOb2RlVmFsaWQobm9kZXNbMF0pXG4gIGlmICghY29udGVudEJlZm9yZUlzVmFsaWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnRBZnRlcklzVmFsaWQgPVxuICAgIG1hdGNoRW5kIDwgdGV4dC5sZW5ndGggPyBpc1NlcGFyYXRvcih0ZXh0W21hdGNoRW5kXSkgOiBpc05leHROb2RlVmFsaWQobm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0pXG4gIHJldHVybiBjb250ZW50QWZ0ZXJJc1ZhbGlkXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RNYXRjaGluZ05vZGVzKFxuICBub2RlczogVGV4dE5vZGVbXSxcbiAgc3RhcnRJbmRleDogbnVtYmVyLFxuICBlbmRJbmRleDogbnVtYmVyLFxuKTogW1xuICBtYXRjaGluZ09mZnNldDogbnVtYmVyLFxuICB1bm1vZGlmaWVkQmVmb3JlTm9kZXM6IFRleHROb2RlW10sXG4gIG1hdGNoaW5nTm9kZXM6IFRleHROb2RlW10sXG4gIHVubW9kaWZpZWRBZnRlck5vZGVzOiBUZXh0Tm9kZVtdLFxuXSB7XG4gIGNvbnN0IHVubW9kaWZpZWRCZWZvcmVOb2RlczogVGV4dE5vZGVbXSA9IFtdXG4gIGNvbnN0IG1hdGNoaW5nTm9kZXM6IFRleHROb2RlW10gPSBbXVxuICBjb25zdCB1bm1vZGlmaWVkQWZ0ZXJOb2RlczogVGV4dE5vZGVbXSA9IFtdXG4gIGxldCBtYXRjaGluZ09mZnNldCA9IDBcblxuICBsZXQgY3VycmVudE9mZnNldCA9IDBcbiAgY29uc3QgY3VycmVudE5vZGVzID0gWy4uLm5vZGVzXVxuXG4gIHdoaWxlIChjdXJyZW50Tm9kZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGN1cnJlbnROb2RlID0gY3VycmVudE5vZGVzWzBdXG4gICAgY29uc3QgY3VycmVudE5vZGVUZXh0ID0gY3VycmVudE5vZGUuZ2V0VGV4dENvbnRlbnQoKVxuICAgIGNvbnN0IGN1cnJlbnROb2RlTGVuZ3RoID0gY3VycmVudE5vZGVUZXh0Lmxlbmd0aFxuICAgIGNvbnN0IGN1cnJlbnROb2RlU3RhcnQgPSBjdXJyZW50T2Zmc2V0XG4gICAgY29uc3QgY3VycmVudE5vZGVFbmQgPSBjdXJyZW50T2Zmc2V0ICsgY3VycmVudE5vZGVMZW5ndGhcblxuICAgIGlmIChjdXJyZW50Tm9kZUVuZCA8PSBzdGFydEluZGV4KSB7XG4gICAgICB1bm1vZGlmaWVkQmVmb3JlTm9kZXMucHVzaChjdXJyZW50Tm9kZSlcbiAgICAgIG1hdGNoaW5nT2Zmc2V0ICs9IGN1cnJlbnROb2RlTGVuZ3RoXG4gICAgfSBlbHNlIGlmIChjdXJyZW50Tm9kZVN0YXJ0ID49IGVuZEluZGV4KSB7XG4gICAgICB1bm1vZGlmaWVkQWZ0ZXJOb2Rlcy5wdXNoKGN1cnJlbnROb2RlKVxuICAgIH0gZWxzZSB7XG4gICAgICBtYXRjaGluZ05vZGVzLnB1c2goY3VycmVudE5vZGUpXG4gICAgfVxuICAgIGN1cnJlbnRPZmZzZXQgKz0gY3VycmVudE5vZGVMZW5ndGhcbiAgICBjdXJyZW50Tm9kZXMuc2hpZnQoKVxuICB9XG4gIHJldHVybiBbbWF0Y2hpbmdPZmZzZXQsIHVubW9kaWZpZWRCZWZvcmVOb2RlcywgbWF0Y2hpbmdOb2RlcywgdW5tb2RpZmllZEFmdGVyTm9kZXNdXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUF1dG9MaW5rTm9kZShcbiAgbm9kZXM6IFRleHROb2RlW10sXG4gIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgZW5kSW5kZXg6IG51bWJlcixcbiAgbWF0Y2g6IExpbmtNYXRjaGVyUmVzdWx0LFxuKTogVGV4dE5vZGUgfCB1bmRlZmluZWQge1xuICBjb25zdCBmaWVsZHM6IExpbmtGaWVsZHMgPSB7XG4gICAgbGlua1R5cGU6ICdjdXN0b20nLFxuICAgIHVybDogbWF0Y2gudXJsLFxuICAgIC4uLm1hdGNoLmZpZWxkcyxcbiAgfVxuXG4gIGNvbnN0IGxpbmtOb2RlID0gJGNyZWF0ZUF1dG9MaW5rTm9kZSh7IGZpZWxkcyB9KVxuICBpZiAobm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IHJlbWFpbmluZ1RleHROb2RlID0gbm9kZXNbMF1cbiAgICBsZXQgbGlua1RleHROb2RlXG4gICAgaWYgKHN0YXJ0SW5kZXggPT09IDApIHtcbiAgICAgIDtbbGlua1RleHROb2RlLCByZW1haW5pbmdUZXh0Tm9kZV0gPSByZW1haW5pbmdUZXh0Tm9kZS5zcGxpdFRleHQoZW5kSW5kZXgpXG4gICAgfSBlbHNlIHtcbiAgICAgIDtbLCBsaW5rVGV4dE5vZGUsIHJlbWFpbmluZ1RleHROb2RlXSA9IHJlbWFpbmluZ1RleHROb2RlLnNwbGl0VGV4dChzdGFydEluZGV4LCBlbmRJbmRleClcbiAgICB9XG4gICAgY29uc3QgdGV4dE5vZGUgPSAkY3JlYXRlVGV4dE5vZGUobWF0Y2gudGV4dClcbiAgICB0ZXh0Tm9kZS5zZXRGb3JtYXQobGlua1RleHROb2RlLmdldEZvcm1hdCgpKVxuICAgIHRleHROb2RlLnNldERldGFpbChsaW5rVGV4dE5vZGUuZ2V0RGV0YWlsKCkpXG4gICAgbGlua05vZGUuYXBwZW5kKHRleHROb2RlKVxuICAgIGxpbmtUZXh0Tm9kZS5yZXBsYWNlKGxpbmtOb2RlKVxuICAgIHJldHVybiByZW1haW5pbmdUZXh0Tm9kZVxuICB9IGVsc2UgaWYgKG5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCBmaXJzdFRleHROb2RlID0gbm9kZXNbMF1cbiAgICBsZXQgb2Zmc2V0ID0gZmlyc3RUZXh0Tm9kZS5nZXRUZXh0Q29udGVudCgpLmxlbmd0aFxuICAgIGxldCBmaXJzdExpbmtUZXh0Tm9kZVxuICAgIGlmIChzdGFydEluZGV4ID09PSAwKSB7XG4gICAgICBmaXJzdExpbmtUZXh0Tm9kZSA9IGZpcnN0VGV4dE5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgO1ssIGZpcnN0TGlua1RleHROb2RlXSA9IGZpcnN0VGV4dE5vZGUuc3BsaXRUZXh0KHN0YXJ0SW5kZXgpXG4gICAgfVxuICAgIGNvbnN0IGxpbmtOb2RlcyA9IFtdXG4gICAgbGV0IHJlbWFpbmluZ1RleHROb2RlXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY3VycmVudE5vZGUgPSBub2Rlc1tpXVxuICAgICAgY29uc3QgY3VycmVudE5vZGVUZXh0ID0gY3VycmVudE5vZGUuZ2V0VGV4dENvbnRlbnQoKVxuICAgICAgY29uc3QgY3VycmVudE5vZGVMZW5ndGggPSBjdXJyZW50Tm9kZVRleHQubGVuZ3RoXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZVN0YXJ0ID0gb2Zmc2V0XG4gICAgICBjb25zdCBjdXJyZW50Tm9kZUVuZCA9IG9mZnNldCArIGN1cnJlbnROb2RlTGVuZ3RoXG4gICAgICBpZiAoY3VycmVudE5vZGVTdGFydCA8IGVuZEluZGV4KSB7XG4gICAgICAgIGlmIChjdXJyZW50Tm9kZUVuZCA8PSBlbmRJbmRleCkge1xuICAgICAgICAgIGxpbmtOb2Rlcy5wdXNoKGN1cnJlbnROb2RlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IFtsaW5rVGV4dE5vZGUsIGVuZE5vZGVdID0gY3VycmVudE5vZGUuc3BsaXRUZXh0KGVuZEluZGV4IC0gY3VycmVudE5vZGVTdGFydClcbiAgICAgICAgICBsaW5rTm9kZXMucHVzaChsaW5rVGV4dE5vZGUpXG4gICAgICAgICAgcmVtYWluaW5nVGV4dE5vZGUgPSBlbmROb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9mZnNldCArPSBjdXJyZW50Tm9kZUxlbmd0aFxuICAgIH1cbiAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICBjb25zdCBzZWxlY3RlZFRleHROb2RlID0gc2VsZWN0aW9uID8gc2VsZWN0aW9uLmdldE5vZGVzKCkuZmluZCgkaXNUZXh0Tm9kZSkgOiB1bmRlZmluZWRcbiAgICBjb25zdCB0ZXh0Tm9kZSA9ICRjcmVhdGVUZXh0Tm9kZShmaXJzdExpbmtUZXh0Tm9kZS5nZXRUZXh0Q29udGVudCgpKVxuICAgIHRleHROb2RlLnNldEZvcm1hdChmaXJzdExpbmtUZXh0Tm9kZS5nZXRGb3JtYXQoKSlcbiAgICB0ZXh0Tm9kZS5zZXREZXRhaWwoZmlyc3RMaW5rVGV4dE5vZGUuZ2V0RGV0YWlsKCkpXG4gICAgbGlua05vZGUuYXBwZW5kKHRleHROb2RlLCAuLi5saW5rTm9kZXMpXG4gICAgLy8gaXQgZG9lcyBub3QgcHJlc2VydmUgY2FyZXQgcG9zaXRpb24gaWYgY2FyZXQgd2FzIGF0IHRoZSBmaXJzdCB0ZXh0IG5vZGVcbiAgICAvLyBzbyB3ZSBuZWVkIHRvIHJlc3RvcmUgY2FyZXQgcG9zaXRpb25cbiAgICBpZiAoc2VsZWN0ZWRUZXh0Tm9kZSAmJiBzZWxlY3RlZFRleHROb2RlID09PSBmaXJzdExpbmtUZXh0Tm9kZSkge1xuICAgICAgaWYgKCRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikpIHtcbiAgICAgICAgdGV4dE5vZGUuc2VsZWN0KHNlbGVjdGlvbi5hbmNob3Iub2Zmc2V0LCBzZWxlY3Rpb24uZm9jdXMub2Zmc2V0KVxuICAgICAgfSBlbHNlIGlmICgkaXNOb2RlU2VsZWN0aW9uKHNlbGVjdGlvbikpIHtcbiAgICAgICAgdGV4dE5vZGUuc2VsZWN0KDAsIHRleHROb2RlLmdldFRleHRDb250ZW50KCkubGVuZ3RoKVxuICAgICAgfVxuICAgIH1cbiAgICBmaXJzdExpbmtUZXh0Tm9kZS5yZXBsYWNlKGxpbmtOb2RlKVxuICAgIHJldHVybiByZW1haW5pbmdUZXh0Tm9kZVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gaGFuZGxlTGlua0NyZWF0aW9uKFxuICBub2RlczogVGV4dE5vZGVbXSxcbiAgbWF0Y2hlcnM6IExpbmtNYXRjaGVyW10sXG4gIG9uQ2hhbmdlOiBDaGFuZ2VIYW5kbGVyLFxuKTogdm9pZCB7XG4gIGxldCBjdXJyZW50Tm9kZXMgPSBbLi4ubm9kZXNdXG4gIGxldCB0ZXh0ID0gY3VycmVudE5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5nZXRUZXh0Q29udGVudCgpKS5qb2luKCcnKVxuXG4gIGxldCBtYXRjaFxuICBsZXQgaW52YWxpZE1hdGNoRW5kID0gMFxuXG4gIHdoaWxlICgobWF0Y2ggPSBmaW5kRmlyc3RNYXRjaCh0ZXh0LCBtYXRjaGVycykpICE9IG51bGwgJiYgbWF0Y2ggIT09IG51bGwpIHtcbiAgICBjb25zdCBtYXRjaFN0YXJ0OiBudW1iZXIgPSBtYXRjaC5pbmRleFxuICAgIGNvbnN0IG1hdGNoTGVuZ3RoOiBudW1iZXIgPSBtYXRjaC5sZW5ndGhcbiAgICBjb25zdCBtYXRjaEVuZCA9IG1hdGNoU3RhcnQgKyBtYXRjaExlbmd0aFxuICAgIGNvbnN0IGlzVmFsaWQgPSBpc0NvbnRlbnRBcm91bmRJc1ZhbGlkKFxuICAgICAgaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hTdGFydCxcbiAgICAgIGludmFsaWRNYXRjaEVuZCArIG1hdGNoRW5kLFxuICAgICAgdGV4dCxcbiAgICAgIGN1cnJlbnROb2RlcyxcbiAgICApXG5cbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgY29uc3QgW21hdGNoaW5nT2Zmc2V0LCAsIG1hdGNoaW5nTm9kZXMsIHVubW9kaWZpZWRBZnRlck5vZGVzXSA9IGV4dHJhY3RNYXRjaGluZ05vZGVzKFxuICAgICAgICBjdXJyZW50Tm9kZXMsXG4gICAgICAgIGludmFsaWRNYXRjaEVuZCArIG1hdGNoU3RhcnQsXG4gICAgICAgIGludmFsaWRNYXRjaEVuZCArIG1hdGNoRW5kLFxuICAgICAgKVxuXG4gICAgICBjb25zdCBhY3R1YWxNYXRjaFN0YXJ0ID0gaW52YWxpZE1hdGNoRW5kICsgbWF0Y2hTdGFydCAtIG1hdGNoaW5nT2Zmc2V0XG4gICAgICBjb25zdCBhY3R1YWxNYXRjaEVuZCA9IGludmFsaWRNYXRjaEVuZCArIG1hdGNoRW5kIC0gbWF0Y2hpbmdPZmZzZXRcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RleHROb2RlID0gY3JlYXRlQXV0b0xpbmtOb2RlKFxuICAgICAgICBtYXRjaGluZ05vZGVzLFxuICAgICAgICBhY3R1YWxNYXRjaFN0YXJ0LFxuICAgICAgICBhY3R1YWxNYXRjaEVuZCxcbiAgICAgICAgbWF0Y2gsXG4gICAgICApXG4gICAgICBjdXJyZW50Tm9kZXMgPSByZW1haW5pbmdUZXh0Tm9kZVxuICAgICAgICA/IFtyZW1haW5pbmdUZXh0Tm9kZSwgLi4udW5tb2RpZmllZEFmdGVyTm9kZXNdXG4gICAgICAgIDogdW5tb2RpZmllZEFmdGVyTm9kZXNcbiAgICAgIG9uQ2hhbmdlKG1hdGNoLnVybCwgbnVsbClcbiAgICAgIGludmFsaWRNYXRjaEVuZCA9IDBcbiAgICB9IGVsc2Uge1xuICAgICAgaW52YWxpZE1hdGNoRW5kICs9IG1hdGNoRW5kXG4gICAgfVxuXG4gICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1hdGNoRW5kKVxuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUxpbmtFZGl0KFxuICBsaW5rTm9kZTogQXV0b0xpbmtOb2RlLFxuICBtYXRjaGVyczogTGlua01hdGNoZXJbXSxcbiAgb25DaGFuZ2U6IENoYW5nZUhhbmRsZXIsXG4pOiB2b2lkIHtcbiAgLy8gQ2hlY2sgY2hpbGRyZW4gYXJlIHNpbXBsZSB0ZXh0XG4gIGNvbnN0IGNoaWxkcmVuID0gbGlua05vZGUuZ2V0Q2hpbGRyZW4oKVxuICBjb25zdCBjaGlsZHJlbkxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgaWYgKCEkaXNUZXh0Tm9kZShjaGlsZCkgfHwgIWNoaWxkLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgICByZXBsYWNlV2l0aENoaWxkcmVuKGxpbmtOb2RlKVxuICAgICAgb25DaGFuZ2UobnVsbCwgbGlua05vZGUuZ2V0RmllbGRzKCk/LnVybCA/PyBudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgdGV4dCBjb250ZW50IGZ1bGx5IG1hdGNoZXNcbiAgY29uc3QgdGV4dCA9IGxpbmtOb2RlLmdldFRleHRDb250ZW50KClcbiAgY29uc3QgbWF0Y2ggPSBmaW5kRmlyc3RNYXRjaCh0ZXh0LCBtYXRjaGVycylcbiAgaWYgKG1hdGNoID09PSBudWxsIHx8IG1hdGNoLnRleHQgIT09IHRleHQpIHtcbiAgICByZXBsYWNlV2l0aENoaWxkcmVuKGxpbmtOb2RlKVxuICAgIG9uQ2hhbmdlKG51bGwsIGxpbmtOb2RlLmdldEZpZWxkcygpPy51cmwgPz8gbnVsbClcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIENoZWNrIG5laWdoYm9yc1xuICBpZiAoIWlzUHJldmlvdXNOb2RlVmFsaWQobGlua05vZGUpIHx8ICFpc05leHROb2RlVmFsaWQobGlua05vZGUpKSB7XG4gICAgcmVwbGFjZVdpdGhDaGlsZHJlbihsaW5rTm9kZSlcbiAgICBvbkNoYW5nZShudWxsLCBsaW5rTm9kZS5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCB1cmwgPSBsaW5rTm9kZS5nZXRGaWVsZHMoKT8udXJsXG4gIGlmICh1cmwgIT09IG1hdGNoPy51cmwpIHtcbiAgICBjb25zdCBmbGRzID0gbGlua05vZGUuZ2V0RmllbGRzKClcbiAgICBmbGRzLnVybCA9IG1hdGNoPy51cmxcbiAgICBsaW5rTm9kZS5zZXRGaWVsZHMoZmxkcylcbiAgICBvbkNoYW5nZShtYXRjaC51cmwsIHVybCA/PyBudWxsKVxuICB9XG59XG5cbi8vIEJhZCBuZWlnaGJvcnMgYXJlIGVkaXRzIGluIG5laWdoYm9yIG5vZGVzIHRoYXQgbWFrZSBBdXRvTGlua3MgaW5jb21wYXRpYmxlLlxuLy8gR2l2ZW4gdGhlIGNyZWF0aW9uIHByZWNvbmRpdGlvbnMsIHRoZXNlIGNhbiBvbmx5IGJlIHNpbXBsZSB0ZXh0IG5vZGVzLlxuZnVuY3Rpb24gaGFuZGxlQmFkTmVpZ2hib3JzKFxuICB0ZXh0Tm9kZTogVGV4dE5vZGUsXG4gIG1hdGNoZXJzOiBMaW5rTWF0Y2hlcltdLFxuICBvbkNoYW5nZTogQ2hhbmdlSGFuZGxlcixcbik6IHZvaWQge1xuICBjb25zdCBwcmV2aW91c1NpYmxpbmcgPSB0ZXh0Tm9kZS5nZXRQcmV2aW91c1NpYmxpbmcoKVxuICBjb25zdCBuZXh0U2libGluZyA9IHRleHROb2RlLmdldE5leHRTaWJsaW5nKClcbiAgY29uc3QgdGV4dCA9IHRleHROb2RlLmdldFRleHRDb250ZW50KClcblxuICBpZiAoJGlzQXV0b0xpbmtOb2RlKHByZXZpb3VzU2libGluZykgJiYgIXN0YXJ0c1dpdGhTZXBhcmF0b3IodGV4dCkpIHtcbiAgICBwcmV2aW91c1NpYmxpbmcuYXBwZW5kKHRleHROb2RlKVxuICAgIGhhbmRsZUxpbmtFZGl0KHByZXZpb3VzU2libGluZywgbWF0Y2hlcnMsIG9uQ2hhbmdlKVxuICAgIG9uQ2hhbmdlKG51bGwsIHByZXZpb3VzU2libGluZy5nZXRGaWVsZHMoKT8udXJsID8/IG51bGwpXG4gIH1cblxuICBpZiAoJGlzQXV0b0xpbmtOb2RlKG5leHRTaWJsaW5nKSAmJiAhZW5kc1dpdGhTZXBhcmF0b3IodGV4dCkpIHtcbiAgICByZXBsYWNlV2l0aENoaWxkcmVuKG5leHRTaWJsaW5nKVxuICAgIGhhbmRsZUxpbmtFZGl0KG5leHRTaWJsaW5nLCBtYXRjaGVycywgb25DaGFuZ2UpXG4gICAgb25DaGFuZ2UobnVsbCwgbmV4dFNpYmxpbmcuZ2V0RmllbGRzKCk/LnVybCA/PyBudWxsKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VXaXRoQ2hpbGRyZW4obm9kZTogRWxlbWVudE5vZGUpOiBMZXhpY2FsTm9kZVtdIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmdldENoaWxkcmVuKClcbiAgY29uc3QgY2hpbGRyZW5MZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICBmb3IgKGxldCBqID0gY2hpbGRyZW5MZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgIG5vZGUuaW5zZXJ0QWZ0ZXIoY2hpbGRyZW5bal0pXG4gIH1cblxuICBub2RlLnJlbW92ZSgpXG4gIHJldHVybiBjaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiBjaGlsZC5nZXRMYXRlc3QoKSlcbn1cblxuZnVuY3Rpb24gZ2V0VGV4dE5vZGVzVG9NYXRjaCh0ZXh0Tm9kZTogVGV4dE5vZGUpOiBUZXh0Tm9kZVtdIHtcbiAgLy8gY2hlY2sgaWYgbmV4dCBzaWJsaW5ncyBhcmUgc2ltcGxlIHRleHQgbm9kZXMgdGlsbCBhIG5vZGUgY29udGFpbnMgYSBzcGFjZSBzZXBhcmF0b3JcbiAgY29uc3QgdGV4dE5vZGVzVG9NYXRjaCA9IFt0ZXh0Tm9kZV1cbiAgbGV0IG5leHRTaWJsaW5nID0gdGV4dE5vZGUuZ2V0TmV4dFNpYmxpbmcoKVxuICB3aGlsZSAobmV4dFNpYmxpbmcgIT09IG51bGwgJiYgJGlzVGV4dE5vZGUobmV4dFNpYmxpbmcpICYmIG5leHRTaWJsaW5nLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgdGV4dE5vZGVzVG9NYXRjaC5wdXNoKG5leHRTaWJsaW5nKVxuICAgIGlmICgvXFxzLy50ZXN0KG5leHRTaWJsaW5nLmdldFRleHRDb250ZW50KCkpKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgICBuZXh0U2libGluZyA9IG5leHRTaWJsaW5nLmdldE5leHRTaWJsaW5nKClcbiAgfVxuICByZXR1cm4gdGV4dE5vZGVzVG9NYXRjaFxufVxuXG5mdW5jdGlvbiB1c2VBdXRvTGluayhcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBtYXRjaGVyczogTGlua01hdGNoZXJbXSxcbiAgb25DaGFuZ2U/OiBDaGFuZ2VIYW5kbGVyLFxuKTogdm9pZCB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlZGl0b3IuaGFzTm9kZXMoW0F1dG9MaW5rTm9kZV0pKSB7XG4gICAgICBpbnZhcmlhbnQoZmFsc2UsICdMZXhpY2FsQXV0b0xpbmtQbHVnaW46IEF1dG9MaW5rTm9kZSBub3QgcmVnaXN0ZXJlZCBvbiBlZGl0b3InKVxuICAgIH1cblxuICAgIGNvbnN0IG9uQ2hhbmdlV3JhcHBlZCA9ICh1cmw6IG51bGwgfCBzdHJpbmcsIHByZXZVcmw6IG51bGwgfCBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgIGlmIChvbkNoYW5nZSAhPSBudWxsKSB7XG4gICAgICAgIG9uQ2hhbmdlKHVybCwgcHJldlVybClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3Rlck5vZGVUcmFuc2Zvcm0oVGV4dE5vZGUsICh0ZXh0Tm9kZTogVGV4dE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGV4dE5vZGUuZ2V0UGFyZW50T3JUaHJvdygpXG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gdGV4dE5vZGUuZ2V0UHJldmlvdXNTaWJsaW5nKClcbiAgICAgICAgaWYgKCRpc0F1dG9MaW5rTm9kZShwYXJlbnQpKSB7XG4gICAgICAgICAgaGFuZGxlTGlua0VkaXQocGFyZW50LCBtYXRjaGVycywgb25DaGFuZ2VXcmFwcGVkKVxuICAgICAgICB9IGVsc2UgaWYgKCEkaXNMaW5rTm9kZShwYXJlbnQpKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGV4dE5vZGUuaXNTaW1wbGVUZXh0KCkgJiZcbiAgICAgICAgICAgIChzdGFydHNXaXRoU2VwYXJhdG9yKHRleHROb2RlLmdldFRleHRDb250ZW50KCkpIHx8ICEkaXNBdXRvTGlua05vZGUocHJldmlvdXMpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgdGV4dE5vZGVzVG9NYXRjaCA9IGdldFRleHROb2Rlc1RvTWF0Y2godGV4dE5vZGUpXG4gICAgICAgICAgICBoYW5kbGVMaW5rQ3JlYXRpb24odGV4dE5vZGVzVG9NYXRjaCwgbWF0Y2hlcnMsIG9uQ2hhbmdlV3JhcHBlZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBoYW5kbGVCYWROZWlnaGJvcnModGV4dE5vZGUsIG1hdGNoZXJzLCBvbkNoYW5nZVdyYXBwZWQpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgbWF0Y2hlcnMsIG9uQ2hhbmdlXSlcbn1cblxuY29uc3QgVVJMX1JFR0VYID1cbiAgLygoaHR0cHM/OlxcL1xcLyh3d3dcXC4pPyl8KHd3d1xcLikpWy1cXHdAOiUuK34jPV17MSwyNTZ9XFwuW2EtekEtWlxcZCgpXXsxLDZ9XFxiKFstXFx3KClAOiUrLn4jPyYvPV0qKS9cblxuY29uc3QgRU1BSUxfUkVHRVggPVxuICAvKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtcXGR7MSwzfVxcLlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcXSl8KChbYS16QS1aXFwtXFxkXStcXC4pK1thLXpBLVpdezIsfSkpL1xuXG5jb25zdCBNQVRDSEVSUyA9IFtcbiAgY3JlYXRlTGlua01hdGNoZXJXaXRoUmVnRXhwKFVSTF9SRUdFWCwgKHRleHQpID0+IHtcbiAgICByZXR1cm4gdGV4dC5zdGFydHNXaXRoKCdodHRwJykgPyB0ZXh0IDogYGh0dHBzOi8vJHt0ZXh0fWBcbiAgfSksXG4gIGNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cChFTUFJTF9SRUdFWCwgKHRleHQpID0+IHtcbiAgICByZXR1cm4gYG1haWx0bzoke3RleHR9YFxuICB9KSxcbl1cblxuZXhwb3J0IGZ1bmN0aW9uIEF1dG9MaW5rUGx1Z2luKCk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG5cbiAgdXNlQXV0b0xpbmsoZWRpdG9yLCBNQVRDSEVSUylcblxuICByZXR1cm4gbnVsbFxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUxpbmtNYXRjaGVyV2l0aFJlZ0V4cCIsIkF1dG9MaW5rUGx1Z2luIiwicmVnRXhwIiwidXJsVHJhbnNmb3JtZXIiLCJ0ZXh0IiwibWF0Y2giLCJleGVjIiwiaW5kZXgiLCJsZW5ndGgiLCJ1cmwiLCJmaW5kRmlyc3RNYXRjaCIsIm1hdGNoZXJzIiwiaSIsIlBVTkNUVUFUSU9OX09SX1NQQUNFIiwiaXNTZXBhcmF0b3IiLCJjaGFyIiwidGVzdCIsImVuZHNXaXRoU2VwYXJhdG9yIiwidGV4dENvbnRlbnQiLCJzdGFydHNXaXRoU2VwYXJhdG9yIiwiaXNQcmV2aW91c05vZGVWYWxpZCIsIm5vZGUiLCJwcmV2aW91c05vZGUiLCJnZXRQcmV2aW91c1NpYmxpbmciLCIkaXNFbGVtZW50Tm9kZSIsImdldExhc3REZXNjZW5kYW50IiwiJGlzTGluZUJyZWFrTm9kZSIsIiRpc1RleHROb2RlIiwiZ2V0VGV4dENvbnRlbnQiLCJpc05leHROb2RlVmFsaWQiLCJuZXh0Tm9kZSIsImdldE5leHRTaWJsaW5nIiwiZ2V0Rmlyc3REZXNjZW5kYW50IiwiaXNDb250ZW50QXJvdW5kSXNWYWxpZCIsIm1hdGNoU3RhcnQiLCJtYXRjaEVuZCIsIm5vZGVzIiwiY29udGVudEJlZm9yZUlzVmFsaWQiLCJjb250ZW50QWZ0ZXJJc1ZhbGlkIiwiZXh0cmFjdE1hdGNoaW5nTm9kZXMiLCJzdGFydEluZGV4IiwiZW5kSW5kZXgiLCJ1bm1vZGlmaWVkQmVmb3JlTm9kZXMiLCJtYXRjaGluZ05vZGVzIiwidW5tb2RpZmllZEFmdGVyTm9kZXMiLCJtYXRjaGluZ09mZnNldCIsImN1cnJlbnRPZmZzZXQiLCJjdXJyZW50Tm9kZXMiLCJjdXJyZW50Tm9kZSIsImN1cnJlbnROb2RlVGV4dCIsImN1cnJlbnROb2RlTGVuZ3RoIiwiY3VycmVudE5vZGVTdGFydCIsImN1cnJlbnROb2RlRW5kIiwicHVzaCIsInNoaWZ0IiwiY3JlYXRlQXV0b0xpbmtOb2RlIiwiZmllbGRzIiwibGlua1R5cGUiLCJsaW5rTm9kZSIsIiRjcmVhdGVBdXRvTGlua05vZGUiLCJyZW1haW5pbmdUZXh0Tm9kZSIsImxpbmtUZXh0Tm9kZSIsInNwbGl0VGV4dCIsInRleHROb2RlIiwiJGNyZWF0ZVRleHROb2RlIiwic2V0Rm9ybWF0IiwiZ2V0Rm9ybWF0Iiwic2V0RGV0YWlsIiwiZ2V0RGV0YWlsIiwiYXBwZW5kIiwicmVwbGFjZSIsImZpcnN0VGV4dE5vZGUiLCJvZmZzZXQiLCJmaXJzdExpbmtUZXh0Tm9kZSIsImxpbmtOb2RlcyIsImVuZE5vZGUiLCJzZWxlY3Rpb24iLCIkZ2V0U2VsZWN0aW9uIiwic2VsZWN0ZWRUZXh0Tm9kZSIsImdldE5vZGVzIiwiZmluZCIsInVuZGVmaW5lZCIsIiRpc1JhbmdlU2VsZWN0aW9uIiwic2VsZWN0IiwiYW5jaG9yIiwiZm9jdXMiLCIkaXNOb2RlU2VsZWN0aW9uIiwiaGFuZGxlTGlua0NyZWF0aW9uIiwib25DaGFuZ2UiLCJtYXAiLCJqb2luIiwiaW52YWxpZE1hdGNoRW5kIiwibWF0Y2hMZW5ndGgiLCJpc1ZhbGlkIiwiYWN0dWFsTWF0Y2hTdGFydCIsImFjdHVhbE1hdGNoRW5kIiwic3Vic3RyaW5nIiwiaGFuZGxlTGlua0VkaXQiLCJjaGlsZHJlbiIsImdldENoaWxkcmVuIiwiY2hpbGRyZW5MZW5ndGgiLCJjaGlsZCIsImlzU2ltcGxlVGV4dCIsInJlcGxhY2VXaXRoQ2hpbGRyZW4iLCJnZXRGaWVsZHMiLCJmbGRzIiwic2V0RmllbGRzIiwiaGFuZGxlQmFkTmVpZ2hib3JzIiwicHJldmlvdXNTaWJsaW5nIiwibmV4dFNpYmxpbmciLCIkaXNBdXRvTGlua05vZGUiLCJqIiwiaW5zZXJ0QWZ0ZXIiLCJyZW1vdmUiLCJnZXRMYXRlc3QiLCJnZXRUZXh0Tm9kZXNUb01hdGNoIiwidGV4dE5vZGVzVG9NYXRjaCIsInVzZUF1dG9MaW5rIiwiZWRpdG9yIiwidXNlRWZmZWN0IiwiaGFzTm9kZXMiLCJBdXRvTGlua05vZGUiLCJpbnZhcmlhbnQiLCJvbkNoYW5nZVdyYXBwZWQiLCJwcmV2VXJsIiwibWVyZ2VSZWdpc3RlciIsInJlZ2lzdGVyTm9kZVRyYW5zZm9ybSIsIlRleHROb2RlIiwicGFyZW50IiwiZ2V0UGFyZW50T3JUaHJvdyIsInByZXZpb3VzIiwiJGlzTGlua05vZGUiLCJVUkxfUkVHRVgiLCJFTUFJTF9SRUdFWCIsIk1BVENIRVJTIiwic3RhcnRzV2l0aCIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFpQ2dCQSwyQkFBMkI7ZUFBM0JBOztJQXlZQUMsY0FBYztlQUFkQTs7O3dDQXZhMEI7dUJBQ1o7eUJBVXZCO3VCQUNtQjsyQkFFQTs4QkFDeUM7MEJBQ3RCO0FBY3RDLFNBQVNELDRCQUNkRSxNQUFjLEVBQ2RDLGlCQUEyQyxDQUFDQyxPQUFTQSxJQUFJO0lBRXpELE9BQU8sQ0FBQ0E7UUFDTixNQUFNQyxRQUFRSCxPQUFPSSxJQUFJLENBQUNGO1FBQzFCLElBQUlDLFVBQVUsTUFBTSxPQUFPO1FBQzNCLE9BQU87WUFDTEUsT0FBT0YsTUFBTUUsS0FBSztZQUNsQkMsUUFBUUgsS0FBSyxDQUFDLEVBQUUsQ0FBQ0csTUFBTTtZQUN2QkosTUFBTUMsS0FBSyxDQUFDLEVBQUU7WUFDZEksS0FBS04sZUFBZUUsS0FBSyxDQUFDLEVBQUU7UUFDOUI7SUFDRjtBQUNGO0FBRUEsU0FBU0ssZUFBZU4sSUFBWSxFQUFFTyxRQUF1QjtJQUMzRCxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUQsU0FBU0gsTUFBTSxFQUFFSSxJQUFLO1FBQ3hDLE1BQU1QLFFBQVFNLFFBQVEsQ0FBQ0MsRUFBRSxDQUFDUjtRQUUxQixJQUFJQyxTQUFTLE1B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
|
|
@@ -151,7 +151,7 @@ class RelationshipNode extends _LexicalDecoratorBlockNode.DecoratorBlockNode {
|
|
|
151
151
|
return this.__id;
|
|
152
152
|
}
|
|
153
153
|
getTextContent() {
|
|
154
|
-
return `${this
|
|
154
|
+
return `${this.__data?.relationTo} relation to ${this.__data?.value?.id}`;
|
|
155
155
|
}
|
|
156
156
|
setData(data) {
|
|
157
157
|
const writable = this.getWritable();
|
|
@@ -167,4 +167,4 @@ function $isRelationshipNode(node) {
|
|
|
167
167
|
return node instanceof RelationshipNode;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9SZWxhdGlvbnNoaXAvbm9kZXMvUmVsYXRpb25zaGlwTm9kZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBET01Db252ZXJzaW9uTWFwLFxuICBET01Db252ZXJzaW9uT3V0cHV0LFxuICBET01FeHBvcnRPdXRwdXQsXG4gIEVkaXRvckNvbmZpZyxcbiAgRWxlbWVudEZvcm1hdFR5cGUsXG4gIExleGljYWxFZGl0b3IsXG4gIExleGljYWxOb2RlLFxuICBOb2RlS2V5LFxuICBTcHJlYWQsXG59IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7XG4gIERlY29yYXRvckJsb2NrTm9kZSxcbiAgdHlwZSBTZXJpYWxpemVkRGVjb3JhdG9yQmxvY2tOb2RlLFxufSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsRGVjb3JhdG9yQmxvY2tOb2RlJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFJlbGF0aW9uc2hpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9SZWxhdGlvbnNoaXBDb21wb25lbnQnXG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcERhdGEgPSB7XG4gIHJlbGF0aW9uVG86IHN0cmluZ1xuICB2YWx1ZToge1xuICAgIC8vIEFjdHVhbCByZWxhdGlvbnNoaXAsIHBvcHVsYXRlZCBpbiBhZnRlclJlYWQgaG9va1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd25cbiAgICBpZDogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFJlbGF0aW9uc2hpcE5vZGUgPSBTcHJlYWQ8UmVsYXRpb25zaGlwRGF0YSwgU2VyaWFsaXplZERlY29yYXRvckJsb2NrTm9kZT5cblxuZnVuY3Rpb24gcmVsYXRpb25zaGlwRWxlbWVudFRvTm9kZShkb21Ob2RlOiBIVE1MRGl2RWxlbWVudCk6IERPTUNvbnZlcnNpb25PdXRwdXQgfCBudWxsIHtcbiAgY29uc3QgaWQgPSBkb21Ob2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1sZXhpY2FsLXJlbGF0aW9uc2hpcC1pZCcpXG4gIGNvbnN0IHJlbGF0aW9uVG8gPSBkb21Ob2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1sZXhpY2FsLXJlbGF0aW9uc2hpcC1yZWxhdGlvblRvJylcblxuICBpZiAoaWQgIT0gbnVsbCAmJiByZWxhdGlvblRvICE9IG51bGwpIHtcbiAgICBjb25zdCBub2RlID0gJGNyZWF0ZVJlbGF0aW9uc2hpcE5vZGUoe1xuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIGlkLFxuICAgICAgfSxcbiAgICB9KVxuICAgIHJldHVybiB7IG5vZGUgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjbGFzcyBSZWxhdGlvbnNoaXBOb2RlIGV4dGVuZHMgRGVjb3JhdG9yQmxvY2tOb2RlIHtcbiAgX19kYXRhOiBSZWxhdGlvbnNoaXBEYXRhXG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGRhdGEsXG4gICAgZm9ybWF0LFxuICAgIGtleSxcbiAgfToge1xuICAgIGRhdGE6IFJlbGF0aW9uc2hpcERhdGFcbiAgICBmb3JtYXQ/OiBFbGVtZW50Rm9ybWF0VHlwZVxuICAgIGtleT86IE5vZGVLZXlcbiAgfSkge1xuICAgIHN1cGVyKGZvcm1hdCwga2V5KVxuICAgIHRoaXMuX19kYXRhID0gZGF0YVxuICB9XG5cbiAgc3RhdGljIGNsb25lKG5vZGU6IFJlbGF0aW9uc2hpcE5vZGUpOiBSZWxhdGlvbnNoaXBOb2RlIHtcbiAgICByZXR1cm4gbmV3IFJlbGF0aW9uc2hpcE5vZGUoe1xuICAgICAgZGF0YTogbm9kZS5fX2RhdGEsXG4gICAgICBmb3JtYXQ6IG5vZGUuX19mb3JtYXQsXG4gICAgICBrZXk6IG5vZGUuX19rZXksXG4gICAgfSlcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdyZWxhdGlvbnNoaXAnXG4gIH1cblxuICBzdGF0aWMgaW1wb3J0RE9NKCk6IERPTUNvbnZlcnNpb25NYXA8SFRNTERpdkVsZW1lbnQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogKGRvbU5vZGU6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhZG9tTm9kZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtbGV4aWNhbC1yZWxhdGlvbnNoaXAtcmVsYXRpb25UbycpIHx8XG4gICAgICAgICAgIWRvbU5vZGUuaGFzQXR0cmlidXRlKCdkYXRhLWxleGljYWwtcmVsYXRpb25zaGlwLWlkJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnZlcnNpb246IHJlbGF0aW9uc2hpcEVsZW1lbnRUb05vZGUsXG4gICAgICAgICAgcHJpb3JpdHk6IDIsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGltcG9ydEpTT04oc2VyaWFsaXplZE5vZGU6IFNlcmlhbGl6ZWRSZWxhdGlvbnNoaXBOb2RlKTogUmVsYXRpb25zaGlwTm9kZSB7XG4gICAgY29uc3QgaW1wb3J0ZWREYXRhOiBSZWxhdGlvbnNoaXBEYXRhID0ge1xuICAgICAgcmVsYXRpb25Ubzogc2VyaWFsaXplZE5vZGUucmVsYXRpb25UbyxcbiAgICAgIHZhbHVlOiBzZXJpYWxpemVkTm9kZS52YWx1ZSxcbiAgICB9XG4gICAgY29uc3Qgbm9kZSA9ICRjcmVhdGVSZWxhdGlvbnNoaXBOb2RlKGltcG9ydGVkRGF0YSlcbiAgICBub2RlLnNldEZvcm1hdChzZXJpYWxpemVkTm9kZS5mb3JtYXQpXG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIHN0YXRpYyBpc0lubGluZSgpOiBmYWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZGVjb3JhdGUoZWRpdG9yOiBMZXhpY2FsRWRpdG9yLCBjb25maWc6IEVkaXRvckNvbmZpZyk6IEpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFJlbGF0aW9uc2hpcENvbXBvbmVudFxuICAgICAgICBjbGFzc05hbWU9e2NvbmZpZy50aGVtZS5yZWxhdGlvbnNoaXAgPz8gJ0xleGljYWxFZGl0b3JUaGVtZV9fcmVsYXRpb25zaGlwJ31cbiAgICAgICAgZGF0YT17dGhpcy5fX2RhdGF9XG4gICAgICAgIGZvcm1hdD17dGhpcy5fX2Zvcm1hdH1cbiAgICAgICAgbm9kZUtleT17dGhpcy5nZXRLZXkoKX1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgZXhwb3J0RE9NKCk6IERPTUV4cG9ydE91dHB1dCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGV4aWNhbC1yZWxhdGlvbnNoaXAtaWQnLCB0aGlzLl9fZGF0YT8udmFsdWU/
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9SZWxhdGlvbnNoaXAvbm9kZXMvUmVsYXRpb25zaGlwTm9kZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBET01Db252ZXJzaW9uTWFwLFxuICBET01Db252ZXJzaW9uT3V0cHV0LFxuICBET01FeHBvcnRPdXRwdXQsXG4gIEVkaXRvckNvbmZpZyxcbiAgRWxlbWVudEZvcm1hdFR5cGUsXG4gIExleGljYWxFZGl0b3IsXG4gIExleGljYWxOb2RlLFxuICBOb2RlS2V5LFxuICBTcHJlYWQsXG59IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7XG4gIERlY29yYXRvckJsb2NrTm9kZSxcbiAgdHlwZSBTZXJpYWxpemVkRGVjb3JhdG9yQmxvY2tOb2RlLFxufSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsRGVjb3JhdG9yQmxvY2tOb2RlJ1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IFJlbGF0aW9uc2hpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9SZWxhdGlvbnNoaXBDb21wb25lbnQnXG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uc2hpcERhdGEgPSB7XG4gIHJlbGF0aW9uVG86IHN0cmluZ1xuICB2YWx1ZToge1xuICAgIC8vIEFjdHVhbCByZWxhdGlvbnNoaXAsIHBvcHVsYXRlZCBpbiBhZnRlclJlYWQgaG9va1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd25cbiAgICBpZDogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFJlbGF0aW9uc2hpcE5vZGUgPSBTcHJlYWQ8UmVsYXRpb25zaGlwRGF0YSwgU2VyaWFsaXplZERlY29yYXRvckJsb2NrTm9kZT5cblxuZnVuY3Rpb24gcmVsYXRpb25zaGlwRWxlbWVudFRvTm9kZShkb21Ob2RlOiBIVE1MRGl2RWxlbWVudCk6IERPTUNvbnZlcnNpb25PdXRwdXQgfCBudWxsIHtcbiAgY29uc3QgaWQgPSBkb21Ob2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1sZXhpY2FsLXJlbGF0aW9uc2hpcC1pZCcpXG4gIGNvbnN0IHJlbGF0aW9uVG8gPSBkb21Ob2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1sZXhpY2FsLXJlbGF0aW9uc2hpcC1yZWxhdGlvblRvJylcblxuICBpZiAoaWQgIT0gbnVsbCAmJiByZWxhdGlvblRvICE9IG51bGwpIHtcbiAgICBjb25zdCBub2RlID0gJGNyZWF0ZVJlbGF0aW9uc2hpcE5vZGUoe1xuICAgICAgcmVsYXRpb25UbyxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIGlkLFxuICAgICAgfSxcbiAgICB9KVxuICAgIHJldHVybiB7IG5vZGUgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjbGFzcyBSZWxhdGlvbnNoaXBOb2RlIGV4dGVuZHMgRGVjb3JhdG9yQmxvY2tOb2RlIHtcbiAgX19kYXRhOiBSZWxhdGlvbnNoaXBEYXRhXG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGRhdGEsXG4gICAgZm9ybWF0LFxuICAgIGtleSxcbiAgfToge1xuICAgIGRhdGE6IFJlbGF0aW9uc2hpcERhdGFcbiAgICBmb3JtYXQ/OiBFbGVtZW50Rm9ybWF0VHlwZVxuICAgIGtleT86IE5vZGVLZXlcbiAgfSkge1xuICAgIHN1cGVyKGZvcm1hdCwga2V5KVxuICAgIHRoaXMuX19kYXRhID0gZGF0YVxuICB9XG5cbiAgc3RhdGljIGNsb25lKG5vZGU6IFJlbGF0aW9uc2hpcE5vZGUpOiBSZWxhdGlvbnNoaXBOb2RlIHtcbiAgICByZXR1cm4gbmV3IFJlbGF0aW9uc2hpcE5vZGUoe1xuICAgICAgZGF0YTogbm9kZS5fX2RhdGEsXG4gICAgICBmb3JtYXQ6IG5vZGUuX19mb3JtYXQsXG4gICAgICBrZXk6IG5vZGUuX19rZXksXG4gICAgfSlcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdyZWxhdGlvbnNoaXAnXG4gIH1cblxuICBzdGF0aWMgaW1wb3J0RE9NKCk6IERPTUNvbnZlcnNpb25NYXA8SFRNTERpdkVsZW1lbnQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogKGRvbU5vZGU6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhZG9tTm9kZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtbGV4aWNhbC1yZWxhdGlvbnNoaXAtcmVsYXRpb25UbycpIHx8XG4gICAgICAgICAgIWRvbU5vZGUuaGFzQXR0cmlidXRlKCdkYXRhLWxleGljYWwtcmVsYXRpb25zaGlwLWlkJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnZlcnNpb246IHJlbGF0aW9uc2hpcEVsZW1lbnRUb05vZGUsXG4gICAgICAgICAgcHJpb3JpdHk6IDIsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGltcG9ydEpTT04oc2VyaWFsaXplZE5vZGU6IFNlcmlhbGl6ZWRSZWxhdGlvbnNoaXBOb2RlKTogUmVsYXRpb25zaGlwTm9kZSB7XG4gICAgY29uc3QgaW1wb3J0ZWREYXRhOiBSZWxhdGlvbnNoaXBEYXRhID0ge1xuICAgICAgcmVsYXRpb25Ubzogc2VyaWFsaXplZE5vZGUucmVsYXRpb25UbyxcbiAgICAgIHZhbHVlOiBzZXJpYWxpemVkTm9kZS52YWx1ZSxcbiAgICB9XG4gICAgY29uc3Qgbm9kZSA9ICRjcmVhdGVSZWxhdGlvbnNoaXBOb2RlKGltcG9ydGVkRGF0YSlcbiAgICBub2RlLnNldEZvcm1hdChzZXJpYWxpemVkTm9kZS5mb3JtYXQpXG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIHN0YXRpYyBpc0lubGluZSgpOiBmYWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZGVjb3JhdGUoZWRpdG9yOiBMZXhpY2FsRWRpdG9yLCBjb25maWc6IEVkaXRvckNvbmZpZyk6IEpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFJlbGF0aW9uc2hpcENvbXBvbmVudFxuICAgICAgICBjbGFzc05hbWU9e2NvbmZpZy50aGVtZS5yZWxhdGlvbnNoaXAgPz8gJ0xleGljYWxFZGl0b3JUaGVtZV9fcmVsYXRpb25zaGlwJ31cbiAgICAgICAgZGF0YT17dGhpcy5fX2RhdGF9XG4gICAgICAgIGZvcm1hdD17dGhpcy5fX2Zvcm1hdH1cbiAgICAgICAgbm9kZUtleT17dGhpcy5nZXRLZXkoKX1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgZXhwb3J0RE9NKCk6IERPTUV4cG9ydE91dHB1dCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGV4aWNhbC1yZWxhdGlvbnNoaXAtaWQnLCB0aGlzLl9fZGF0YT8udmFsdWU/LmlkKVxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWxleGljYWwtcmVsYXRpb25zaGlwLXJlbGF0aW9uVG8nLCB0aGlzLl9fZGF0YT8ucmVsYXRpb25UbylcblxuICAgIGNvbnN0IHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aGlzLmdldFRleHRDb250ZW50KCkpXG4gICAgZWxlbWVudC5hcHBlbmQodGV4dClcbiAgICByZXR1cm4geyBlbGVtZW50IH1cbiAgfVxuXG4gIGV4cG9ydEpTT04oKTogU2VyaWFsaXplZFJlbGF0aW9uc2hpcE5vZGUge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5leHBvcnRKU09OKCksXG4gICAgICAuLi50aGlzLmdldERhdGEoKSxcbiAgICAgIHR5cGU6IHRoaXMuZ2V0VHlwZSgpLFxuICAgICAgdmVyc2lvbjogMSxcbiAgICB9XG4gIH1cblxuICBnZXREYXRhKCk6IFJlbGF0aW9uc2hpcERhdGEge1xuICAgIHJldHVybiB0aGlzLmdldExhdGVzdCgpLl9fZGF0YVxuICB9XG5cbiAgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fX2lkXG4gIH1cblxuICBnZXRUZXh0Q29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLl9fZGF0YT8ucmVsYXRpb25Ub30gcmVsYXRpb24gdG8gJHt0aGlzLl9fZGF0YT8udmFsdWU/LmlkfWBcbiAgfVxuXG4gIHNldERhdGEoZGF0YTogUmVsYXRpb25zaGlwRGF0YSk6IHZvaWQge1xuICAgIGNvbnN0IHdyaXRhYmxlID0gdGhpcy5nZXRXcml0YWJsZSgpXG4gICAgd3JpdGFibGUuX19kYXRhID0gZGF0YVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAkY3JlYXRlUmVsYXRpb25zaGlwTm9kZShkYXRhOiBSZWxhdGlvbnNoaXBEYXRhKTogUmVsYXRpb25zaGlwTm9kZSB7XG4gIHJldHVybiBuZXcgUmVsYXRpb25zaGlwTm9kZSh7XG4gICAgZGF0YSxcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uICRpc1JlbGF0aW9uc2hpcE5vZGUoXG4gIG5vZGU6IExleGljYWxOb2RlIHwgUmVsYXRpb25zaGlwTm9kZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBub2RlIGlzIFJlbGF0aW9uc2hpcE5vZGUge1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIFJlbGF0aW9uc2hpcE5vZGVcbn1cbiJdLCJuYW1lcyI6WyJSZWxhdGlvbnNoaXBOb2RlIiwiJGNyZWF0ZVJlbGF0aW9uc2hpcE5vZGUiLCIkaXNSZWxhdGlvbnNoaXBOb2RlIiwicmVsYXRpb25zaGlwRWxlbWVudFRvTm9kZSIsImRvbU5vZGUiLCJpZCIsImdldEF0dHJpYnV0ZSIsInJlbGF0aW9uVG8iLCJub2RlIiwidmFsdWUiLCJEZWNvcmF0b3JCbG9ja05vZGUiLCJfX2RhdGEiLCJjb25zdHJ1Y3RvciIsImRhdGEiLCJmb3JtYXQiLCJrZXkiLCJjbG9uZSIsIl9fZm9ybWF0IiwiX19rZXkiLCJnZXRUeXBlIiwiaW1wb3J0RE9NIiwiZGl2IiwiaGFzQXR0cmlidXRlIiwiY29udmVyc2lvbiIsInByaW9yaXR5IiwiaW1wb3J0SlNPTiIsInNlcmlhbGl6ZWROb2RlIiwiaW1wb3J0ZWREYXRhIiwic2V0Rm9ybWF0IiwiaXNJbmxpbmUiLCJkZWNvcmF0ZSIsImVkaXRvciIsImNvbmZpZyIsIlJlbGF0aW9uc2hpcENvbXBvbmVudCIsImNsYXNzTmFtZSIsInRoZW1lIiwicmVsYXRpb25zaGlwIiwibm9kZUtleSIsImdldEtleSIsImV4cG9ydERPTSIsImVsZW1lbnQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJ0ZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJnZXRUZXh0Q29udGVudCIsImFwcGVuZCIsImV4cG9ydEpTT04iLCJnZXREYXRhIiwidHlwZSIsInZlcnNpb24iLCJnZXRMYXRlc3QiLCJnZXRJZCIsIl9faWQiLCJzZXREYXRhIiwid3JpdGFibGUiLCJnZXRXcml0YWJsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUErQ2FBLGdCQUFnQjtlQUFoQkE7O0lBMEdHQyx1QkFBdUI7ZUFBdkJBOztJQU1BQyxtQkFBbUI7ZUFBbkJBOzs7MkNBaEpUOytEQUNnQjt1Q0FFZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWF0QyxTQUFTQywwQkFBMEJDLE9BQXVCO0lBQ3hELE1BQU1DLEtBQUtELFFBQVFFLFlBQVksQ0FBQztJQUNoQyxNQUFNQyxhQUFhSCxRQUFRRSxZQUFZLENBQUM7SUFFeEMsSUFBSUQsTUFBTSxRQUFRRSxjQUFjLE1BQU07UUFDcEMsTUFBTUMsT0FBT1Asd0JBQXdCO1lBQ25DTTtZQUNBRSxPQUFPO2dCQUNMSjtZQUNGO1FBQ0Y7UUFDQSxPQUFPO1lBQUVHO1FBQUs7SUFDaEI7SUFDQSxPQUFPO0FBQ1Q7QUFFTyxNQUFNUix5QkFBeUJVLDZDQUFrQjtJQUN0REMsT0FBd0I7SUFFeEJDLFlBQVksRUFDVkMsSUFBSSxFQUNKQyxNQUFNLEVBQ05DLEdBQUcsRUFLSixDQUFFO1FBQ0QsS0FBSyxDQUFDRCxRQUFRQztRQUNkLElBQUksQ0FBQ0osTUFBTSxHQUFHRTtJQUNoQjtJQUVBLE9BQU9HLE1BQU1SLElBQXNCLEVBQW9CO1FBQ3JELE9BQU8sSUFBSVIsaUJBQWlCO1lBQzFCYSxNQUFNTCxLQUFLRyxNQUFNO1lBQ2pCRyxRQUFRTixLQUFLUyxRQUFRO1lBQ3JCRixLQUFLUCxLQUFLVSxLQUFLO1FBQ2pCO0lBQ0Y7SUFFQSxPQUFPQyxVQUFrQjtRQUN2QixPQUFPO0lBQ1Q7SUFFQSxPQUFPQyxZQUFxRDtRQUMxRCxPQUFPO1lBQ0xDLEtBQUssQ0FBQ2pCO2dCQUNKLElBQ0UsQ0FBQ0EsUUFBUWtCLFlBQVksQ0FBQywyQ0FDdEIsQ0FBQ2xCLFFBQVFrQixZQUFZLENBQUMsaUNBQ3RCO29CQUNBLE9BQU87Z0JBQ1Q7Z0JBQ0EsT0FBTztvQkFDTEMsWUFBWXBCO29CQUNacUIsVUFBVTtnQkFDWjtZQUNGO1FBQ0Y7SUFDRjtJQUVBLE9BQU9DLFdBQVdDLGNBQTBDLEVBQW9CO1FBQzlFLE1BQU1DLGVBQWlDO1lBQ3JDcEIsWUFBWW1CLGVBQWVuQixVQUFVO1lBQ3JDRSxPQUFPaUIsZUFBZWpCLEtBQUs7UUFDN0I7UUFDQSxNQUFNRCxPQUFPUCx3QkFBd0IwQjtRQUNyQ25CLEtBQUtvQixTQUFTLENBQUNGLGVBQWVaLE1BQU07UUFDcEMsT0FBT047SUFDVDtJQUVBLE9BQU9xQixXQUFrQjtRQUN2QixPQUFPO0lBQ1Q7SUFDQUMsU0FBU0MsTUFBcUIsRUFBRUMsTUFBb0IsRUFBZTtRQUNqRSxxQkFDRSxxQkFBQ0MsNENBQXFCO1lBQ3BCQyxXQUFXRixPQUFPRyxLQUFLLENBQUNDLFlBQVksSUFBSTtZQUN4Q3ZCLE1BQU0sSUFBSSxDQUFDRixNQUFNO1lBQ2pCRyxRQUFRLElBQUksQ0FBQ0csUUFBUTtZQUNyQm9CLFNBQVMsSUFBSSxDQUFDQyxNQUFNOztJQUcxQjtJQUVBQyxZQUE2QjtRQUMzQixNQUFNQyxVQUFVQyxTQUFTQyxhQUFhLENBQUM7UUFDdkNGLFFBQVFHLFlBQVksQ0FBQyxnQ0FBZ0MsSUFBSSxDQUFDaEMsTUFBTSxFQUFFRixPQUFPSjtRQUN6RW1DLFFBQVFHLFlBQVksQ0FBQyx3Q0FBd0MsSUFBSSxDQUFDaEMsTUFBTSxFQUFFSjtRQUUxRSxNQUFNcUMsT0FBT0gsU0FBU0ksY0FBYyxDQUFDLElBQUksQ0FBQ0MsY0FBYztRQUN4RE4sUUFBUU8sTUFBTSxDQUFDSDtRQUNmLE9BQU87WUFBRUo7UUFBUTtJQUNuQjtJQUVBUSxhQUF5QztRQUN2QyxPQUFPO1lBQ0wsR0FBRyxLQUFLLENBQUNBLFlBQVk7WUFDckIsR0FBRyxJQUFJLENBQUNDLE9BQU8sRUFBRTtZQUNqQkMsTUFBTSxJQUFJLENBQUMvQixPQUFPO1lBQ2xCZ0MsU0FBUztRQUNYO0lBQ0Y7SUFFQUYsVUFBNEI7UUFDMUIsT0FBTyxJQUFJLENBQUNHLFNBQVMsR0FBR3pDLE1BQU07SUFDaEM7SUFFQTBDLFFBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNDLElBQUk7SUFDbEI7SUFFQVIsaUJBQXlCO1FBQ3ZCLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQ25DLE1BQU0sRUFBRUosV0FBVyxhQUFhLEVBQUUsSUFBSSxDQUFDSSxNQUFNLEVBQUVGLE9BQU9KLEdBQUcsQ0FBQztJQUMzRTtJQUVBa0QsUUFBUTFDLElBQXNCLEVBQVE7UUFDcEMsTUFBTTJDLFdBQVcsSUFBSSxDQUFDQyxXQUFXO1FBQ2pDRCxTQUFTN0MsTUFBTSxHQUFHRTtJQUNwQjtBQUNGO0FBRU8sU0FBU1osd0JBQXdCWSxJQUFzQjtJQUM1RCxPQUFPLElBQUliLGlCQUFpQjtRQUMxQmE7SUFDRjtBQUNGO0FBRU8sU0FBU1gsb0JBQ2RNLElBQXVEO0lBRXZELE9BQU9BLGdCQUFnQlI7QUFDekIifQ==
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import type { TextField } from 'payload/types';
|
|
2
|
+
import type { SanitizedEditorConfig } from '../../../../../index';
|
|
3
|
+
import type { HTMLConverter } from '../converter/types';
|
|
2
4
|
type Props = {
|
|
3
5
|
name: string;
|
|
4
6
|
};
|
|
5
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Combines the default HTML converters with HTML converters found in the features, and with HTML converters configured in the htmlConverter feature.
|
|
9
|
+
*
|
|
10
|
+
* @param editorConfig
|
|
11
|
+
*/
|
|
12
|
+
export declare const consolidateHTMLConverters: ({ editorConfig, }: {
|
|
13
|
+
editorConfig: SanitizedEditorConfig;
|
|
14
|
+
}) => HTMLConverter[];
|
|
15
|
+
export declare const lexicalHTML: (
|
|
16
|
+
/**
|
|
17
|
+
* A string which matches the lexical field name you want to convert to HTML.
|
|
18
|
+
*
|
|
19
|
+
* This has to be a SIBLING field of this lexicalHTML field - otherwise, it won't be able to find the lexical field.
|
|
20
|
+
**/
|
|
21
|
+
lexicalFieldName: string, props: Props) => TextField;
|
|
6
22
|
export {};
|
|
7
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/converters/html/field/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/converters/html/field/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,SAAS,EAAE,MAAM,eAAe,CAAA;AAEpE,OAAO,KAAK,EAA0B,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMvD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;kBAGtB,qBAAqB;qBAqBpC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE;AACxB;;;;IAII;AACJ,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,KAAK,KACT,SAuFJ,CAAA"}
|
|
@@ -2,15 +2,34 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
consolidateHTMLConverters: function() {
|
|
13
|
+
return consolidateHTMLConverters;
|
|
14
|
+
},
|
|
15
|
+
lexicalHTML: function() {
|
|
8
16
|
return lexicalHTML;
|
|
9
17
|
}
|
|
10
18
|
});
|
|
11
|
-
const _index = require("../../../../../index");
|
|
12
19
|
const _converter = require("../converter");
|
|
13
20
|
const _defaultConverters = require("../converter/defaultConverters");
|
|
21
|
+
const consolidateHTMLConverters = ({ editorConfig })=>{
|
|
22
|
+
const htmlConverterFeature = editorConfig.resolvedFeatureMap.get('htmlConverter');
|
|
23
|
+
const htmlConverterFeatureProps = htmlConverterFeature?.props;
|
|
24
|
+
const defaultConvertersWithConvertersFromFeatures = _defaultConverters.defaultHTMLConverters;
|
|
25
|
+
for (const converter of editorConfig.features.converters.html){
|
|
26
|
+
defaultConvertersWithConvertersFromFeatures.push(converter);
|
|
27
|
+
}
|
|
28
|
+
const finalConverters = htmlConverterFeatureProps?.converters && typeof htmlConverterFeatureProps?.converters === 'function' ? htmlConverterFeatureProps.converters({
|
|
29
|
+
defaultConverters: defaultConvertersWithConvertersFromFeatures
|
|
30
|
+
}) : (htmlConverterFeatureProps?.converters) || defaultConvertersWithConvertersFromFeatures;
|
|
31
|
+
return finalConverters;
|
|
32
|
+
};
|
|
14
33
|
const lexicalHTML = (lexicalFieldName, props)=>{
|
|
15
34
|
const { name = 'lexicalHTML' } = props;
|
|
16
35
|
return {
|
|
@@ -20,31 +39,51 @@ const lexicalHTML = (lexicalFieldName, props)=>{
|
|
|
20
39
|
},
|
|
21
40
|
hooks: {
|
|
22
41
|
afterRead: [
|
|
23
|
-
async ({ collection,
|
|
24
|
-
const
|
|
42
|
+
async ({ collection, field, global, siblingData })=>{
|
|
43
|
+
const fields = collection ? collection.fields : global.fields;
|
|
44
|
+
// find the path of this field, as well as its sibling fields, by looking for this `field` in fields and traversing it recursively
|
|
45
|
+
function findFieldPathAndSiblingFields(fields, path) {
|
|
46
|
+
for (const curField of fields){
|
|
47
|
+
if (curField === field) {
|
|
48
|
+
return {
|
|
49
|
+
path: [
|
|
50
|
+
...path,
|
|
51
|
+
curField.name
|
|
52
|
+
],
|
|
53
|
+
siblingFields: fields
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if ('fields' in curField && 'name' in curField) {
|
|
57
|
+
const result = findFieldPathAndSiblingFields(curField.fields, [
|
|
58
|
+
...path,
|
|
59
|
+
curField.name
|
|
60
|
+
]);
|
|
61
|
+
if (result) {
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const { path, siblingFields } = findFieldPathAndSiblingFields(fields, []);
|
|
69
|
+
const lexicalField = siblingFields.find((field)=>'name' in field && field.name === lexicalFieldName);
|
|
25
70
|
const lexicalFieldData = siblingData[lexicalFieldName];
|
|
26
71
|
if (!lexicalFieldData) {
|
|
27
72
|
return '';
|
|
28
73
|
}
|
|
29
74
|
if (!lexicalField) {
|
|
30
|
-
throw new Error('You cannot use the lexicalHTML field because the lexical field was not found');
|
|
75
|
+
throw new Error('You cannot use the lexicalHTML field because the referenced lexical field was not found');
|
|
31
76
|
}
|
|
32
77
|
const config = (lexicalField?.editor)?.editorConfig;
|
|
33
78
|
if (!config) {
|
|
34
79
|
throw new Error('The linked lexical field does not have an editorConfig. This is needed for the lexicalHTML field.');
|
|
35
80
|
}
|
|
36
81
|
if (!config?.resolvedFeatureMap?.has('htmlConverter')) {
|
|
37
|
-
throw new Error('You cannot use the lexicalHTML field because the
|
|
82
|
+
throw new Error('You cannot use the lexicalHTML field because the linked lexical field does not have a HTMLConverterFeature');
|
|
38
83
|
}
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
for (const converter of config.features.converters.html){
|
|
43
|
-
defaultConvertersWithConvertersFromFeatures.push(converter);
|
|
44
|
-
}
|
|
45
|
-
const finalConverters = htmlConverterFeatureProps?.converters && typeof htmlConverterFeatureProps?.converters === 'function' ? htmlConverterFeatureProps.converters({
|
|
46
|
-
defaultConverters: defaultConvertersWithConvertersFromFeatures
|
|
47
|
-
}) : (htmlConverterFeatureProps?.converters) || defaultConvertersWithConvertersFromFeatures;
|
|
84
|
+
const finalConverters = consolidateHTMLConverters({
|
|
85
|
+
editorConfig: config
|
|
86
|
+
});
|
|
48
87
|
return await (0, _converter.convertLexicalToHTML)({
|
|
49
88
|
converters: finalConverters,
|
|
50
89
|
data: lexicalFieldData
|
|
@@ -56,4 +95,4 @@ const lexicalHTML = (lexicalFieldName, props)=>{
|
|
|
56
95
|
};
|
|
57
96
|
};
|
|
58
97
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9jb252ZXJ0ZXJzL2h0bWwvZmllbGQvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZXJpYWxpemVkRWRpdG9yU3RhdGUgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgUmljaFRleHRGaWVsZCwgVGV4dEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBMZXhpY2FsUmljaFRleHRBZGFwdGVyLCBTYW5pdGl6ZWRFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9pbmRleCdcbmltcG9ydCB0eXBlIHsgQWRhcHRlclByb3BzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEhUTUxDb252ZXJ0ZXIgfSBmcm9tICcuLi9jb252ZXJ0ZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEhUTUxDb252ZXJ0ZXJGZWF0dXJlUHJvcHMgfSBmcm9tICcuLi9pbmRleCdcblxuaW1wb3J0IHsgY29udmVydExleGljYWxUb0hUTUwgfSBmcm9tICcuLi9jb252ZXJ0ZXInXG5pbXBvcnQgeyBkZWZhdWx0SFRNTENvbnZlcnRlcnMgfSBmcm9tICcuLi9jb252ZXJ0ZXIvZGVmYXVsdENvbnZlcnRlcnMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIG5hbWU6IHN0cmluZ1xufVxuXG4vKipcbiAqIENvbWJpbmVzIHRoZSBkZWZhdWx0IEhUTUwgY29udmVydGVycyB3aXRoIEhUTUwgY29udmVydGVycyBmb3VuZCBpbiB0aGUgZmVhdHVyZXMsIGFuZCB3aXRoIEhUTUwgY29udmVydGVycyBjb25maWd1cmVkIGluIHRoZSBodG1sQ29udmVydGVyIGZlYXR1cmUuXG4gKlxuICogQHBhcmFtIGVkaXRvckNvbmZpZ1xuICovXG5leHBvcnQgY29uc3QgY29uc29saWRhdGVIVE1MQ29udmVydGVycyA9ICh7XG4gIGVkaXRvckNvbmZpZyxcbn06IHtcbiAgZWRpdG9yQ29uZmlnOiBTYW5pdGl6ZWRFZGl0b3JDb25maWdcbn0pID0+IHtcbiAgY29uc3QgaHRtbENvbnZlcnRlckZlYXR1cmUgPSBlZGl0b3JDb25maWcucmVzb2x2ZWRGZWF0dXJlTWFwLmdldCgnaHRtbENvbnZlcnRlcicpXG4gIGNvbnN0IGh0bWxDb252ZXJ0ZXJGZWF0dXJlUHJvcHM6IEhUTUxDb252ZXJ0ZXJGZWF0dXJlUHJvcHMgPSBodG1sQ29udmVydGVyRmVhdHVyZT8ucHJvcHNcblxuICBjb25zdCBkZWZhdWx0Q29udmVydGVyc1dpdGhDb252ZXJ0ZXJzRnJvbUZlYXR1cmVzID0gZGVmYXVsdEhUTUxDb252ZXJ0ZXJzXG5cbiAgZm9yIChjb25zdCBjb252ZXJ0ZXIgb2YgZWRpdG9yQ29uZmlnLmZlYXR1cmVzLmNvbnZlcnRlcnMuaHRtbCkge1xuICAgIGRlZmF1bHRDb252ZXJ0ZXJzV2l0aENvbnZlcnRlcnNGcm9tRmVhdHVyZXMucHVzaChjb252ZXJ0ZXIpXG4gIH1cblxuICBjb25zdCBmaW5hbENvbnZlcnRlcnMgPVxuICAgIGh0bWxDb252ZXJ0ZXJGZWF0dXJlUHJvcHM/LmNvbnZlcnRlcnMgJiZcbiAgICB0eXBlb2YgaHRtbENvbnZlcnRlckZlYXR1cmVQcm9wcz8uY29udmVydGVycyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBodG1sQ29udmVydGVyRmVhdHVyZVByb3BzLmNvbnZlcnRlcnMoe1xuICAgICAgICAgIGRlZmF1bHRDb252ZXJ0ZXJzOiBkZWZhdWx0Q29udmVydGVyc1dpdGhDb252ZXJ0ZXJzRnJvbUZlYXR1cmVzLFxuICAgICAgICB9KVxuICAgICAgOiAoaHRtbENvbnZlcnRlckZlYXR1cmVQcm9wcz8uY29udmVydGVycyBhcyBIVE1MQ29udmVydGVyW10pIHx8XG4gICAgICAgIGRlZmF1bHRDb252ZXJ0ZXJzV2l0aENvbnZlcnRlcnNGcm9tRmVhdHVyZXNcblxuICByZXR1cm4gZmluYWxDb252ZXJ0ZXJzXG59XG5cbmV4cG9ydCBjb25zdCBsZXhpY2FsSFRNTDogKFxuICAvKipcbiAgICogQSBzdHJpbmcgd2hpY2ggbWF0Y2hlcyB0aGUgbGV4aWNhbCBmaWVsZCBuYW1lIHlvdSB3YW50IHRvIGNvbnZlcnQgdG8gSFRNTC5cbiAgICpcbiAgICogVGhpcyBoYXMgdG8gYmUgYSBTSUJMSU5HIGZpZWxkIG9mIHRoaXMgbGV4aWNhbEhUTUwgZmllbGQgLSBvdGhlcndpc2UsIGl0IHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgbGV4aWNhbCBmaWVsZC5cbiAgICoqL1xuICBsZXhpY2FsRmllbGROYW1lOiBzdHJpbmcsXG4gIHByb3BzOiBQcm9wcyxcbikgPT4gVGV4dEZpZWxkID0gKGxleGljYWxGaWVsZE5hbWUsIHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgbmFtZSA9ICdsZXhpY2FsSFRNTCcgfSA9IHByb3BzXG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBhZG1pbjoge1xuICAgICAgaGlkZGVuOiB0cnVlLFxuICAgIH0sXG4gICAgaG9va3M6IHtcbiAgICAgIGFmdGVyUmVhZDogW1xuICAgICAgICBhc3luYyAoeyBjb2xsZWN0aW9uLCBmaWVsZCwgZ2xvYmFsLCBzaWJsaW5nRGF0YSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGRzID0gY29sbGVjdGlvbiA/IGNvbGxlY3Rpb24uZmllbGRzIDogZ2xvYmFsLmZpZWxkc1xuXG4gICAgICAgICAgLy8gZmluZCB0aGUgcGF0aCBvZiB0aGlzIGZpZWxkLCBhcyB3ZWxsIGFzIGl0cyBzaWJsaW5nIGZpZWxkcywgYnkgbG9va2luZyBmb3IgdGhpcyBgZmllbGRgIGluIGZpZWxkcyBhbmQgdHJhdmVyc2luZyBpdCByZWN1cnNpdmVseVxuICAgICAgICAgIGZ1bmN0aW9uIGZpbmRGaWVsZFBhdGhBbmRTaWJsaW5nRmllbGRzKFxuICAgICAgICAgICAgZmllbGRzOiBGaWVsZFtdLFxuICAgICAgICAgICAgcGF0aDogc3RyaW5nW10sXG4gICAgICAgICAgKToge1xuICAgICAgICAgICAgcGF0aDogc3RyaW5nW11cbiAgICAgICAgICAgIHNpYmxpbmdGaWVsZHM6IEZpZWxkW11cbiAgICAgICAgICB9IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY3VyRmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgICAgIGlmIChjdXJGaWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhdGgsIGN1ckZpZWxkLm5hbWVdLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0ZpZWxkczogZmllbGRzLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICgnZmllbGRzJyBpbiBjdXJGaWVsZCAmJiAnbmFtZScgaW4gY3VyRmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmaW5kRmllbGRQYXRoQW5kU2libGluZ0ZpZWxkcyhjdXJGaWVsZC5maWVsZHMsIFtcbiAgICAgICAgICAgICAgICAgIC4uLnBhdGgsXG4gICAgICAgICAgICAgICAgICBjdXJGaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IHBhdGgsIHNpYmxpbmdGaWVsZHMgfSA9IGZpbmRGaWVsZFBhdGhBbmRTaWJsaW5nRmllbGRzKGZpZWxkcywgW10pXG5cbiAgICAgICAgICBjb25zdCBsZXhpY2FsRmllbGQ6IFJpY2hUZXh0RmllbGQ8U2VyaWFsaXplZEVkaXRvclN0YXRlLCBBZGFwdGVyUHJvcHM+ID1cbiAgICAgICAgICAgIHNpYmxpbmdGaWVsZHMuZmluZChcbiAgICAgICAgICAgICAgKGZpZWxkKSA9PiAnbmFtZScgaW4gZmllbGQgJiYgZmllbGQubmFtZSA9PT0gbGV4aWNhbEZpZWxkTmFtZSxcbiAgICAgICAgICAgICkgYXMgUmljaFRleHRGaWVsZDxTZXJpYWxpemVkRWRpdG9yU3RhdGUsIEFkYXB0ZXJQcm9wcz5cblxuICAgICAgICAgIGNvbnN0IGxleGljYWxGaWVsZERhdGE6IFNlcmlhbGl6ZWRFZGl0b3JTdGF0ZSA9IHNpYmxpbmdEYXRhW2xleGljYWxGaWVsZE5hbWVdXG5cbiAgICAgICAgICBpZiAoIWxleGljYWxGaWVsZERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiAnJ1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghbGV4aWNhbEZpZWxkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICdZb3UgY2Fubm90IHVzZSB0aGUgbGV4aWNhbEhUTUwgZmllbGQgYmVjYXVzZSB0aGUgcmVmZXJlbmNlZCBsZXhpY2FsIGZpZWxkIHdhcyBub3QgZm91bmQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IChsZXhpY2FsRmllbGQ/LmVkaXRvciBhcyBMZXhpY2FsUmljaFRleHRBZGFwdGVyKT8uZWRpdG9yQ29uZmlnXG5cbiAgICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnVGhlIGxpbmtlZCBsZXhpY2FsIGZpZWxkIGRvZXMgbm90IGhhdmUgYW4gZWRpdG9yQ29uZmlnLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIGxleGljYWxIVE1MIGZpZWxkLicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFjb25maWc/LnJlc29sdmVkRmVhdHVyZU1hcD8uaGFzKCdodG1sQ29udmVydGVyJykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgdXNlIHRoZSBsZXhpY2FsSFRNTCBmaWVsZCBiZWNhdXNlIHRoZSBsaW5rZWQgbGV4aWNhbCBmaWVsZCBkb2VzIG5vdCBoYXZlIGEgSFRNTENvbnZlcnRlckZlYXR1cmUnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGZpbmFsQ29udmVydGVycyA9IGNvbnNvbGlkYXRlSFRNTENvbnZlcnRlcnMoe1xuICAgICAgICAgICAgZWRpdG9yQ29uZmlnOiBjb25maWcsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiBhd2FpdCBjb252ZXJ0TGV4aWNhbFRvSFRNTCh7XG4gICAgICAgICAgICBjb252ZXJ0ZXJzOiBmaW5hbENvbnZlcnRlcnMsXG4gICAgICAgICAgICBkYXRhOiBsZXhpY2FsRmllbGREYXRhLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAgdHlwZTogJ3RleHQnLFxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uc29saWRhdGVIVE1MQ29udmVydGVycyIsImxleGljYWxIVE1MIiwiZWRpdG9yQ29uZmlnIiwiaHRtbENvbnZlcnRlckZlYXR1cmUiLCJyZXNvbHZlZEZlYXR1cmVNYXAiLCJnZXQiLCJodG1sQ29udmVydGVyRmVhdHVyZVByb3BzIiwicHJvcHMiLCJkZWZhdWx0Q29udmVydGVyc1dpdGhDb252ZXJ0ZXJzRnJvbUZlYXR1cmVzIiwiZGVmYXVsdEhUTUxDb252ZXJ0ZXJzIiwiY29udmVydGVyIiwiZmVhdHVyZXMiLCJjb252ZXJ0ZXJzIiwiaHRtbCIsInB1c2giLCJmaW5hbENvbnZlcnRlcnMiLCJkZWZhdWx0Q29udmVydGVycyIsImxleGljYWxGaWVsZE5hbWUiLCJuYW1lIiwiYWRtaW4iLCJoaWRkZW4iLCJob29rcyIsImFmdGVyUmVhZCIsImNvbGxlY3Rpb24iLCJmaWVsZCIsImdsb2JhbCIsInNpYmxpbmdEYXRhIiwiZmllbGRzIiwiZmluZEZpZWxkUGF0aEFuZFNpYmxpbmdGaWVsZHMiLCJwYXRoIiwiY3VyRmllbGQiLCJzaWJsaW5nRmllbGRzIiwicmVzdWx0IiwibGV4aWNhbEZpZWxkIiwiZmluZCIsImxleGljYWxGaWVsZERhdGEiLCJFcnJvciIsImNvbmZpZyIsImVkaXRvciIsImhhcyIsImNvbnZlcnRMZXhpY2FsVG9IVE1MIiwiZGF0YSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBb0JhQSx5QkFBeUI7ZUFBekJBOztJQTBCQUMsV0FBVztlQUFYQTs7OzJCQXRDd0I7bUNBQ0M7QUFXL0IsTUFBTUQsNEJBQTRCLENBQUMsRUFDeENFLFlBQVksRUFHYjtJQUNDLE1BQU1DLHVCQUF1QkQsYUFBYUUsa0JBQWtCLENBQUNDLEdBQUcsQ0FBQztJQUNqRSxNQUFNQyw0QkFBdURILHNCQUFzQkk7SUFFbkYsTUFBTUMsOENBQThDQyx3Q0FBcUI7SUFFekUsS0FBSyxNQUFNQyxhQUFhUixhQUFhUyxRQUFRLENBQUNDLFVBQVUsQ0FBQ0MsSUFBSSxDQUFFO1FBQzdETCw0Q0FBNENNLElBQUksQ0FBQ0o7SUFDbkQ7SUFFQSxNQUFNSyxrQkFDSlQsMkJBQTJCTSxjQUMzQixPQUFPTiwyQkFBMkJNLGVBQWUsYUFDN0NOLDBCQUEwQk0sVUFBVSxDQUFDO1FBQ25DSSxtQkFBbUJSO0lBQ3JCLEtBQ0EsQ0FBQ0YsMkJBQTJCTSxVQUE2QixLQUN6REo7SUFFTixPQUFPTztBQUNUO0FBRU8sTUFBTWQsY0FRSSxDQUFDZ0Isa0JBQWtCVjtJQUNsQyxNQUFNLEVBQUVXLE9BQU8sYUFBYSxFQUFFLEdBQUdYO0lBQ2pDLE9BQU87UUFDTFcsTUFBTUE7UUFDTkMsT0FBTztZQUNMQyxRQUFRO1FBQ1Y7UUFDQUMsT0FBTztZQUNMQyxXQUFXO2dCQUNULE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxFQUFFO29CQUMvQyxNQUFNQyxTQUFTSixhQUFhQSxXQUFXSSxNQUFNLEdBQUdGLE9BQU9FLE1BQU07b0JBRTdELGtJQUFrSTtvQkFDbEksU0FBU0MsOEJBQ1BELE1BQWUsRUFDZkUsSUFBYzt3QkFLZCxLQUFLLE1BQU1DLFlBQVlILE9BQVE7NEJBQzdCLElBQUlHLGFBQWFOLE9BQU87Z0NBQ3RCLE9BQU87b0NBQ0xLLE1BQU07MkNBQUlBO3dDQUFNQyxTQUFTWixJQUFJO3FDQUFDO29DQUM5QmEsZUFBZUo7Z0NBQ2pCOzRCQUNGOzRCQUVBLElBQUksWUFBWUcsWUFBWSxVQUFVQSxVQUFVO2dDQUM5QyxNQUFNRSxTQUFTSiw4QkFBOEJFLFNBQVNILE1BQU0sRUFBRTt1Q0FDekRFO29DQUNIQyxTQUFTWixJQUFJO2lDQUNkO2dDQUNELElBQUljLFFBQVE7b0NBQ1YsT0FBT0E7Z0NBQ1Q7NEJBQ0Y7d0JBQ0Y7d0JBRUEsT0FBTztvQkFDVDtvQkFDQSxNQUFNLEVBQUVILElBQUksRUFBRUUsYUFBYSxFQUFFLEdBQUdILDhCQUE4QkQsUUFBUSxFQUFFO29CQUV4RSxNQUFNTSxlQUNKRixjQUFjRyxJQUFJLENBQ2hCLENBQUNWLFFBQVUsVUFBVUEsU0FBU0EsTUFBTU4sSUFBSSxLQUFLRDtvQkFHakQsTUFBTWtCLG1CQUEwQ1QsV0FBVyxDQUFDVCxpQkFBaUI7b0JBRTdFLElBQUksQ0FBQ2tCLGtCQUFrQjt3QkFDckIsT0FBTztvQkFDVDtvQkFFQSxJQUFJLENBQUNGLGNBQWM7d0JBQ2pCLE1BQU0sSUFBSUcsTUFDUjtvQkFFSjtvQkFFQSxNQUFNQyxTQUFTLENBQUNKLGNBQWNLLE1BQWdDLEdBQUdwQztvQkFFakUsSUFBSSxDQUFDbUMsUUFBUTt3QkFDWCxNQUFNLElBQUlELE1BQ1I7b0JBRUo7b0JBRUEsSUFBSSxDQUFDQyxRQUFRakMsb0JBQW9CbUMsSUFBSSxrQkFBa0I7d0JBQ3JELE1BQU0sSUFBSUgsTUFDUjtvQkFFSjtvQkFFQSxNQUFNckIsa0JBQWtCZiwwQkFBMEI7d0JBQ2hERSxjQUFjbUM7b0JBQ2hCO29CQUVBLE9BQU8sTUFBTUcsSUFBQUEsK0JBQW9CLEVBQUM7d0JBQ2hDNUIsWUFBWUc7d0JBQ1owQixNQUFNTjtvQkFDUjtnQkFDRjthQUNEO1FBQ0g7UUFDQU8sTUFBTTtJQUNSO0FBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/debug/TestRecorder/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,eAAO,MAAM,mBAAmB,QAAO,eAetC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "TestRecorderFeature", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return TestRecorderFeature;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _plugin = require("./plugin");
|
|
12
|
+
const TestRecorderFeature = ()=>{
|
|
13
|
+
return {
|
|
14
|
+
feature: ()=>{
|
|
15
|
+
return {
|
|
16
|
+
plugins: [
|
|
17
|
+
{
|
|
18
|
+
Component: _plugin.TestRecorderPlugin,
|
|
19
|
+
position: 'bottom'
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
props: null
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
key: 'debug-testrecorder'
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9mZWF0dXJlcy9kZWJ1Zy9UZXN0UmVjb3JkZXIvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGZWF0dXJlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi90eXBlcydcblxuaW1wb3J0IHsgVGVzdFJlY29yZGVyUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4nXG5cbmV4cG9ydCBjb25zdCBUZXN0UmVjb3JkZXJGZWF0dXJlID0gKCk6IEZlYXR1cmVQcm92aWRlciA9PiB7XG4gIHJldHVybiB7XG4gICAgZmVhdHVyZTogKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGx1Z2luczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIENvbXBvbmVudDogVGVzdFJlY29yZGVyUGx1Z2luLFxuICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgfVxuICAgIH0sXG4gICAga2V5OiAnZGVidWctdGVzdHJlY29yZGVyJyxcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRlc3RSZWNvcmRlckZlYXR1cmUiLCJmZWF0dXJlIiwicGx1Z2lucyIsIkNvbXBvbmVudCIsIlRlc3RSZWNvcmRlclBsdWdpbiIsInBvc2l0aW9uIiwicHJvcHMiLCJrZXkiXSwibWFwcGluZ3MiOiI7Ozs7K0JBSWFBOzs7ZUFBQUE7Ozt3QkFGc0I7QUFFNUIsTUFBTUEsc0JBQXNCO0lBQ2pDLE9BQU87UUFDTEMsU0FBUztZQUNQLE9BQU87Z0JBQ0xDLFNBQVM7b0JBQ1A7d0JBQ0VDLFdBQVdDLDBCQUFrQjt3QkFDN0JDLFVBQVU7b0JBQ1o7aUJBQ0Q7Z0JBQ0RDLE9BQU87WUFDVDtRQUNGO1FBQ0FDLEtBQUs7SUFDUDtBQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/debug/TestRecorder/plugin/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,cAAc,CAAA;AA8ErB,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEzD;AA+VD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAYtC,CAAA"}
|