@plumile/router 0.1.20 → 0.1.21
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/lib/esm/routing/Link.js +2 -2
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +17 -31
- package/lib/esm/routing/useFilters.js +9 -9
- package/lib/esm/tools/buildCombinedSearch.d.ts +1 -1
- package/lib/esm/tools/buildCombinedSearch.d.ts.map +1 -1
- package/lib/esm/tools/buildCombinedSearch.js +4 -4
- package/lib/esm/types.js +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/tools/buildCombinedSearch.d.ts +1 -1
- package/lib/types/tools/buildCombinedSearch.d.ts.map +1 -1
- package/package.json +3 -3
package/lib/esm/routing/Link.js
CHANGED
|
@@ -43,7 +43,7 @@ const Link = forwardRef((props, ref) => {
|
|
|
43
43
|
const entry = router.get();
|
|
44
44
|
return buildCombinedSearch({
|
|
45
45
|
filters: query,
|
|
46
|
-
|
|
46
|
+
querySchema: entry.activeQuerySchema,
|
|
47
47
|
});
|
|
48
48
|
}, [query, router]);
|
|
49
49
|
const initialIsActive = isCurrentPathname(exact, router?.history, pathname);
|
|
@@ -111,4 +111,4 @@ const Link = forwardRef((props, ref) => {
|
|
|
111
111
|
return (_jsx("a", { className: cx(classNames), href: hrefValue, onClick: handleClick, onFocus: onFocus, onMouseDown: handleMouseDown, onMouseEnter: handleMouseEnter, onMouseOver: onMouseOver, ref: ref, target: target, children: children }));
|
|
112
112
|
});
|
|
113
113
|
export default Link;
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQUlaLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sT0FBTyxDQUFDO0FBSWYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pDLE9BQU8sbUJBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFHakQsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFjLEVBQ2QsT0FBbUMsRUFDbkMsUUFBZ0I7SUFFaEIsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFFOUMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBMkRELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBMkIsQ0FBQyxLQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDdEUsTUFB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R0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hELE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFdkQsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxPQUFPLENBQ0wsWUFDRSxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUN6QixJQUFJLEVBQUUsU0FBUyxFQUNmLE9BQU8sRUFBRSxXQUFXLEVBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxlQUFlLEVBQzVCLFlBQVksRUFBRSxnQkFBZ0IsRUFDOUIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsR0FBRyxFQUFFLEdBQUcsRUFDUixNQUFNLEVBQUUsTUFBTSxZQUViLFFBQVEsR0FDUCxDQUNMLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCxcbiAgdHlwZSBNb3VzZUV2ZW50LFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgZm9yd2FyZFJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHsgQnJvd3Nlckhpc3RvcnksIEhpc3RvcnlMb2NhdGlvbiB9IGZyb20gJy4uL2hpc3RvcnkvaW5kZXguanMnO1xuXG5pbXBvcnQgeyBjeCB9IGZyb20gJy4vLi4vdG9vbHMvaW5kZXguanMnO1xuaW1wb3J0IGJ1aWxkQ29tYmluZWRTZWFyY2ggZnJvbSAnLi4vdG9vbHMvYnVpbGRDb21iaW5lZFNlYXJjaC5qcyc7XG5cbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbi8vIChmaWx0ZXItcXVlcnkgc3RyaW5naWZ5IG5vdCB1c2VkIGhlcmUgYWZ0ZXIgc2ltcGxpZnlpbmcgbWFudWFsIHNlcmlhbGl6YXRpb24pXG5cbmNvbnN0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQgfSA9IFJlYWN0O1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBjdXJyZW50IHBhdGhuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHBhdGhuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDdXJyZW50UGF0aG5hbWUoXG4gIGV4YWN0OiBib29sZWFuLFxuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeSB8IHVuZGVmaW5lZCxcbiAgcGF0aG5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICBpZiAoaGlzdG9yeSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgY29uc3QgcmVzb2x2ZWRVcmwgPSBuZXcgVVJMKHBhdGhuYW1lLCBkb2N1bWVudC5sb2NhdGlvbik7XG5cbiAgY29uc3QgcmVzb2x2ZWRQYXRobmFtZSA9IHJlc29sdmVkVXJsLnBhdGhuYW1lO1xuXG4gIGlmIChleGFjdCAmJiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lID09PSByZXNvbHZlZFBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWV4YWN0ICYmIGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUuc3RhcnRzV2l0aChyZXNvbHZlZFBhdGhuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgTGluayBjb21wb25lbnQuXG4gKi9cbnR5cGUgUHJvcHM8VFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7XG4gIC8qKiBDU1MgY2xhc3MgdG8gYXBwbHkgd2hlbiB0aGUgbGluayBpcyBhY3RpdmUgKG1hdGNoZXMgY3VycmVudCByb3V0ZSkgKi9cbiAgYWN0aXZlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgaW5zaWRlIHRoZSBsaW5rICovXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIC8qKiBCYXNlIENTUyBjbGFzcyBmb3IgdGhlIGxpbmsgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byB1c2UgZXhhY3QgcGF0aCBtYXRjaGluZyBmb3IgYWN0aXZlIHN0YXRlICovXG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gcHJlbG9hZCB0aGUgcm91dGUgd2hlbiBtb3VzZSBlbnRlcnMgdGhlIGxpbmsgKi9cbiAgcHJlbG9hZE9uTW91c2VFbnRlcj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIHByZWxvYWQgdGhlIHJvdXRlIHdoZW4gbW91c2UgaXMgcHJlc3NlZCBkb3duICovXG4gIHByZWxvYWRPbk1vdXNlRG93bj86IGJvb2xlYW47XG4gIC8qKiBEaXJlY3QgaHJlZiBhdHRyaWJ1dGUgKG92ZXJyaWRlcyAndG8nIHByb3ApICovXG4gIGhyZWY/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBsaW5rIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIENsaWNrIGhhbmRsZXIgKi9cbiAgb25DbGljaz86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIEZvY3VzIGhhbmRsZXIgKi9cbiAgb25Gb2N1cz86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIG92ZXIgaGFuZGxlciAqL1xuICBvbk1vdXNlT3Zlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIFRhcmdldCBhdHRyaWJ1dGUgZm9yIHRoZSBsaW5rICovXG4gIHRhcmdldD86IEhUTUxBdHRyaWJ1dGVBbmNob3JUYXJnZXQ7XG4gIC8qKiBEZXN0aW5hdGlvbiBmb3IgdGhlIGxpbmsgKGNhbiBiZSBzdHJpbmcgcGF0aCBvciBsb2NhdGlvbiBvYmplY3QpICovXG4gIHRvPzogSGlzdG9yeUxvY2F0aW9uIHwgc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgcXVlcnkgb2JqZWN0IHRvIHNlcmlhbGl6ZSB1c2luZyBkZXN0aW5hdGlvbiByb3V0ZSBzY2hlbWEgKi9cbiAgcXVlcnk/OiBUUXVlcnk7XG59O1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgY2xpZW50LXNpZGUgcm91dGluZyB3aXRoIHByZWxvYWRpbmcgY2FwYWJpbGl0aWVzLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgd2l0aCB0aGUgcm91dGVyJ3MgUm91dGluZ0NvbnRleHQgdG8gcHJvdmlkZSBzbW9vdGggbmF2aWdhdGlvblxuICogd2l0aCBvcHRpb25hbCBwcmVsb2FkaW5nIG9mIHJvdXRlIGNvbXBvbmVudHMgYW5kIGRhdGEuIEl0IGF1dG9tYXRpY2FsbHkgYXBwbGllcyBhY3RpdmVcbiAqIHN0eWxpbmcgd2hlbiB0aGUgY3VycmVudCByb3V0ZSBtYXRjaGVzIHRoZSBsaW5rJ3MgZGVzdGluYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogLy8gQmFzaWMgdXNhZ2VcbiAqIDxMaW5rIHRvPVwiL3VzZXJzLzEyM1wiPlZpZXcgUHJvZmlsZTwvTGluaz5cbiAqXG4gKiAvLyBXaXRoIGFjdGl2ZSBzdHlsaW5nXG4gKiA8TGluayB0bz1cIi9kYXNoYm9hcmRcIiBhY3RpdmVDbGFzc05hbWU9XCJhY3RpdmVcIiBleGFjdD5cbiAqICAgRGFzaGJvYXJkXG4gKiA8L0xpbms+XG4gKlxuICogLy8gV2l0aCBwcmVsb2FkaW5nIG9uIGhvdmVyXG4gKiA8TGluayB0bz1cIi9oZWF2eS1wYWdlXCIgcHJlbG9hZE9uTW91c2VFbnRlcj5cbiAqICAgSGVhdnkgUGFnZVxuICogPC9MaW5rPlxuICogYGBgXG4gKi9cbmNvbnN0IExpbmsgPSBmb3J3YXJkUmVmPEhUTUxBbmNob3JFbGVtZW50LCBQcm9wcz4oKHByb3BzOiBQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCB7XG4gICAgYWN0aXZlQ2xhc3NOYW1lLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBleGFjdCA9IGZhbHNlLFxuICAgIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uRm9jdXMsXG4gICAgb25Nb3VzZU92ZXIsXG4gICAgcHJlbG9hZE9uTW91c2VFbnRlciA9IGZhbHNlLFxuICAgIHByZWxvYWRPbk1vdXNlRG93biA9IHRydWUsXG4gICAgdGFyZ2V0LFxuICAgIHRvLFxuICAgIGhyZWYsXG4gICAgcXVlcnksXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBwYXRobmFtZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyMnO1xuICAgIH1cblxuICAgIGxldCBuZXdIcmVmID0gaHJlZjtcblxuICAgIGlmIChuZXdIcmVmID09IG51bGwpIHtcbiAgICAgIGlmICh0eXBlb2YgdG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5ld0hyZWYgPSB0bztcbiAgICAgIH0gZWxzZSBpZiAodG8/LnBhdGhuYW1lICE9IG51bGwpIHtcbiAgICAgICAgbmV3SHJlZiA9IHRvLnBhdGhuYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5ld0hyZWYgPz89ICcjJztcblxuICAgIHJldHVybiBuZXdIcmVmO1xuICB9LCBbaHJlZiwgaXNEaXNhYmxlZCwgdG9dKTtcblxuICAvLyBSZXNvbHZlIHNlYXJjaCBzdHJpbmcgZnJvbSBwcm92aWRlZCBxdWVyeSB0cmVhdGVkIGFzIGZpbHRlcnMgdy8gYWN0aXZlIHNjaGVtYS5cbiAgY29uc3Qgc2VhcmNoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHF1ZXJ5ID09IG51bGwgfHwgcm91dGVyID09IG51bGwpIHJldHVybiAnJztcbiAgICBjb25zdCBlbnRyeSA9IHJvdXRlci5nZXQoKTtcbiAgICByZXR1cm4gYnVpbGRDb21iaW5lZFNlYXJjaCh7XG4gICAgICBmaWx0ZXJzOiBxdWVyeSBhcyBhbnksXG4gICAgICBmaWx0ZXJTY2hlbWE6IGVudHJ5LmFjdGl2ZVF1ZXJ5U2NoZW1hIGFzIGFueSxcbiAgICB9KTtcbiAgfSwgW3F1ZXJ5LCByb3V0ZXJdKTtcblxuICBjb25zdCBpbml0aWFsSXNBY3RpdmUgPSBpc0N1cnJlbnRQYXRobmFtZShleGFjdCwgcm91dGVyPy5oaXN0b3J5LCBwYXRobmFtZSk7XG4gIGNvbnN0IFtpc0FjdGl2ZSwgc2V0SXNBY3RpdmVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbElzQWN0aXZlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgY29uc3QgbmV3SXNBY3RpdmUgPSBpc0N1cnJlbnRQYXRobmFtZShleGFjdCwgcm91dGVyPy5oaXN0b3J5LCBwYXRobmFtZSk7XG4gICAgICBzZXRJc0FjdGl2ZShuZXdJc0FjdGl2ZSk7XG4gICAgfTtcblxuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH1cblxuICAgIHJvdXRlci5oaXN0b3J5LnN1YnNjcmliZShvbkNoYW5nZSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcm91dGVyLmhpc3RvcnkudW5zdWJzY3JpYmUob25DaGFuZ2UpO1xuICAgIH07XG4gIH0sIFtleGFjdCwgcGF0aG5hbWUsIHJvdXRlcl0pO1xuXG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBbY2xhc3NOYW1lXTtcblxuICBpZiAoaXNBY3RpdmUpIHtcbiAgICBjbGFzc05hbWVzLnB1c2goYWN0aXZlQ2xhc3NOYW1lKTtcbiAgfVxuXG4gIC8vIFdoZW4gdGhlIHVzZXIgY2xpY2tzLCBjaGFuZ2Ugcm91dGVcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWlzRGlzYWJsZWQgJiYgdHlwZW9mIG9uQ2xpY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25DbGljayhldmVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fFxuICAgICAgICBldmVudC5tZXRhS2V5IHx8XG4gICAgICAgIGV2ZW50LmFsdEtleSB8fFxuICAgICAgICBldmVudC5jdHJsS2V5IHx8XG4gICAgICAgIGV2ZW50LnNoaWZ0S2V5IHx8XG4gICAgICAgIGV2ZW50LmJ1dHRvbiAhPT0gMCB8fFxuICAgICAgICAodGFyZ2V0ICE9IG51bGwgJiYgdGFyZ2V0ICE9PSAnX3NlbGYnKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcm91dGVyLmhpc3RvcnkucHVzaCh7XG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgICBzZWFyY2gsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtpc0Rpc2FibGVkLCBvbkNsaWNrLCBwYXRobmFtZSwgcm91dGVyLCB0YXJnZXQsIHNlYXJjaF0sXG4gICk7XG5cbiAgLy8gQ2FsbGJhY2sgdG8gcHJlbG9hZCBqdXN0IHRoZSBjb2RlIGZvciB0aGUgcm91dGU6XG4gIC8vIHdlIHBhc3MgdGhpcyB0byBvbk1vdXNlRW50ZXIsIHdoaWNoIGlzIGEgd2Vha2VyIHNpZ25hbFxuICAvLyB0aGF0IHRoZSB1c2VyICptYXkqIG5hdmlnYXRlIHRvIHRoZSByb3V0ZS5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocm91dGVyID09IG51bGwgfHwgaXNEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwcmVsb2FkT25Nb3VzZUVudGVyKSB7XG4gICAgICByb3V0ZXIucHJlbG9hZChwYXRobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvdXRlci5wcmVsb2FkQ29kZShwYXRobmFtZSk7XG4gICAgfVxuICB9LCBbcm91dGVyLCBpc0Rpc2FibGVkLCBwcmVsb2FkT25Nb3VzZUVudGVyLCBwYXRobmFtZV0pO1xuXG4gIC8vIENhbGxiYWNrIHRvIHByZWxvYWQgdGhlIGNvZGUgYW5kIGRhdGEgZm9yIHRoZSByb3V0ZTpcbiAgLy8gd2UgcGFzcyB0aGlzIHRvIG9uTW91c2VEb3duLCBzaW5jZSB0aGlzIGlzIGEgc3Ryb25nZXJcbiAgLy8gc2lnbmFsIHRoYXQgdGhlIHVzZXIgd2lsbCBsaWtlbHkgY29tcGxldGUgdGhlIG5hdmlnYXRpb25cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkIHx8ICFwcmVsb2FkT25Nb3VzZURvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcm91dGVyLnByZWxvYWQocGF0aG5hbWUpO1xuICB9LCBbcm91dGVyLCBpc0Rpc2FibGVkLCBwcmVsb2FkT25Nb3VzZURvd24sIHBhdGhuYW1lXSk7XG5cbiAgbGV0IGhyZWZWYWx1ZSA9IHBhdGhuYW1lO1xuICBpZiAodHlwZW9mIHNlYXJjaCA9PT0gJ3N0cmluZycgJiYgc2VhcmNoLmxlbmd0aCA+IDApIHtcbiAgICBocmVmVmFsdWUgPSBgJHtwYXRobmFtZX0ke3NlYXJjaH1gO1xuICB9XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NOYW1lcyl9XG4gICAgICBocmVmPXtocmVmVmFsdWV9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICBvbk1vdXNlRG93bj17aGFuZGxlTW91c2VEb3dufVxuICAgICAgb25Nb3VzZUVudGVyPXtoYW5kbGVNb3VzZUVudGVyfVxuICAgICAgb25Nb3VzZU92ZXI9e29uTW91c2VPdmVyfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YXJnZXQ9e3RhcmdldH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9hPlxuICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IExpbms7XG4iXX0=
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQUlaLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sT0FBTyxDQUFDO0FBSWYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pDLE9BQU8sbUJBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFFbEUsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFHakQsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFLMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFjLEVBQ2QsT0FBbUMsRUFDbkMsUUFBZ0I7SUFFaEIsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFFOUMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBMkRELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBMkIsQ0FBQyxLQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUU7SUFDdEUsTUFB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R0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxVQUFVLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hELE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFdkQsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQ3pCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsU0FBUyxHQUFHLEdBQUcsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxPQUFPLENBQ0wsWUFDRSxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUN6QixJQUFJLEVBQUUsU0FBUyxFQUNmLE9BQU8sRUFBRSxXQUFXLEVBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFdBQVcsRUFBRSxlQUFlLEVBQzVCLFlBQVksRUFBRSxnQkFBZ0IsRUFDOUIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsR0FBRyxFQUFFLEdBQUcsRUFDUixNQUFNLEVBQUUsTUFBTSxZQUViLFFBQVEsR0FDUCxDQUNMLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCxcbiAgdHlwZSBNb3VzZUV2ZW50LFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgZm9yd2FyZFJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHsgQnJvd3Nlckhpc3RvcnksIEhpc3RvcnlMb2NhdGlvbiB9IGZyb20gJy4uL2hpc3RvcnkvaW5kZXguanMnO1xuXG5pbXBvcnQgeyBjeCB9IGZyb20gJy4vLi4vdG9vbHMvaW5kZXguanMnO1xuaW1wb3J0IGJ1aWxkQ29tYmluZWRTZWFyY2ggZnJvbSAnLi4vdG9vbHMvYnVpbGRDb21iaW5lZFNlYXJjaC5qcyc7XG5cbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbi8vIChmaWx0ZXItcXVlcnkgc3RyaW5naWZ5IG5vdCB1c2VkIGhlcmUgYWZ0ZXIgc2ltcGxpZnlpbmcgbWFudWFsIHNlcmlhbGl6YXRpb24pXG5cbmNvbnN0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQgfSA9IFJlYWN0O1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBjdXJyZW50IHBhdGhuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHBhdGhuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDdXJyZW50UGF0aG5hbWUoXG4gIGV4YWN0OiBib29sZWFuLFxuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeSB8IHVuZGVmaW5lZCxcbiAgcGF0aG5hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICBpZiAoaGlzdG9yeSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgY29uc3QgcmVzb2x2ZWRVcmwgPSBuZXcgVVJMKHBhdGhuYW1lLCBkb2N1bWVudC5sb2NhdGlvbik7XG5cbiAgY29uc3QgcmVzb2x2ZWRQYXRobmFtZSA9IHJlc29sdmVkVXJsLnBhdGhuYW1lO1xuXG4gIGlmIChleGFjdCAmJiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lID09PSByZXNvbHZlZFBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWV4YWN0ICYmIGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUuc3RhcnRzV2l0aChyZXNvbHZlZFBhdGhuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgTGluayBjb21wb25lbnQuXG4gKi9cbnR5cGUgUHJvcHM8VFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7XG4gIC8qKiBDU1MgY2xhc3MgdG8gYXBwbHkgd2hlbiB0aGUgbGluayBpcyBhY3RpdmUgKG1hdGNoZXMgY3VycmVudCByb3V0ZSkgKi9cbiAgYWN0aXZlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgaW5zaWRlIHRoZSBsaW5rICovXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIC8qKiBCYXNlIENTUyBjbGFzcyBmb3IgdGhlIGxpbmsgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byB1c2UgZXhhY3QgcGF0aCBtYXRjaGluZyBmb3IgYWN0aXZlIHN0YXRlICovXG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gcHJlbG9hZCB0aGUgcm91dGUgd2hlbiBtb3VzZSBlbnRlcnMgdGhlIGxpbmsgKi9cbiAgcHJlbG9hZE9uTW91c2VFbnRlcj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIHByZWxvYWQgdGhlIHJvdXRlIHdoZW4gbW91c2UgaXMgcHJlc3NlZCBkb3duICovXG4gIHByZWxvYWRPbk1vdXNlRG93bj86IGJvb2xlYW47XG4gIC8qKiBEaXJlY3QgaHJlZiBhdHRyaWJ1dGUgKG92ZXJyaWRlcyAndG8nIHByb3ApICovXG4gIGhyZWY/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBsaW5rIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIENsaWNrIGhhbmRsZXIgKi9cbiAgb25DbGljaz86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIEZvY3VzIGhhbmRsZXIgKi9cbiAgb25Gb2N1cz86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIG92ZXIgaGFuZGxlciAqL1xuICBvbk1vdXNlT3Zlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIFRhcmdldCBhdHRyaWJ1dGUgZm9yIHRoZSBsaW5rICovXG4gIHRhcmdldD86IEhUTUxBdHRyaWJ1dGVBbmNob3JUYXJnZXQ7XG4gIC8qKiBEZXN0aW5hdGlvbiBmb3IgdGhlIGxpbmsgKGNhbiBiZSBzdHJpbmcgcGF0aCBvciBsb2NhdGlvbiBvYmplY3QpICovXG4gIHRvPzogSGlzdG9yeUxvY2F0aW9uIHwgc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgcXVlcnkgb2JqZWN0IHRvIHNlcmlhbGl6ZSB1c2luZyBkZXN0aW5hdGlvbiByb3V0ZSBzY2hlbWEgKi9cbiAgcXVlcnk/OiBUUXVlcnk7XG59O1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgY2xpZW50LXNpZGUgcm91dGluZyB3aXRoIHByZWxvYWRpbmcgY2FwYWJpbGl0aWVzLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgd2l0aCB0aGUgcm91dGVyJ3MgUm91dGluZ0NvbnRleHQgdG8gcHJvdmlkZSBzbW9vdGggbmF2aWdhdGlvblxuICogd2l0aCBvcHRpb25hbCBwcmVsb2FkaW5nIG9mIHJvdXRlIGNvbXBvbmVudHMgYW5kIGRhdGEuIEl0IGF1dG9tYXRpY2FsbHkgYXBwbGllcyBhY3RpdmVcbiAqIHN0eWxpbmcgd2hlbiB0aGUgY3VycmVudCByb3V0ZSBtYXRjaGVzIHRoZSBsaW5rJ3MgZGVzdGluYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogLy8gQmFzaWMgdXNhZ2VcbiAqIDxMaW5rIHRvPVwiL3VzZXJzLzEyM1wiPlZpZXcgUHJvZmlsZTwvTGluaz5cbiAqXG4gKiAvLyBXaXRoIGFjdGl2ZSBzdHlsaW5nXG4gKiA8TGluayB0bz1cIi9kYXNoYm9hcmRcIiBhY3RpdmVDbGFzc05hbWU9XCJhY3RpdmVcIiBleGFjdD5cbiAqICAgRGFzaGJvYXJkXG4gKiA8L0xpbms+XG4gKlxuICogLy8gV2l0aCBwcmVsb2FkaW5nIG9uIGhvdmVyXG4gKiA8TGluayB0bz1cIi9oZWF2eS1wYWdlXCIgcHJlbG9hZE9uTW91c2VFbnRlcj5cbiAqICAgSGVhdnkgUGFnZVxuICogPC9MaW5rPlxuICogYGBgXG4gKi9cbmNvbnN0IExpbmsgPSBmb3J3YXJkUmVmPEhUTUxBbmNob3JFbGVtZW50LCBQcm9wcz4oKHByb3BzOiBQcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCB7XG4gICAgYWN0aXZlQ2xhc3NOYW1lLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBleGFjdCA9IGZhbHNlLFxuICAgIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uRm9jdXMsXG4gICAgb25Nb3VzZU92ZXIsXG4gICAgcHJlbG9hZE9uTW91c2VFbnRlciA9IGZhbHNlLFxuICAgIHByZWxvYWRPbk1vdXNlRG93biA9IHRydWUsXG4gICAgdGFyZ2V0LFxuICAgIHRvLFxuICAgIGhyZWYsXG4gICAgcXVlcnksXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBwYXRobmFtZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJyMnO1xuICAgIH1cblxuICAgIGxldCBuZXdIcmVmID0gaHJlZjtcblxuICAgIGlmIChuZXdIcmVmID09IG51bGwpIHtcbiAgICAgIGlmICh0eXBlb2YgdG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5ld0hyZWYgPSB0bztcbiAgICAgIH0gZWxzZSBpZiAodG8/LnBhdGhuYW1lICE9IG51bGwpIHtcbiAgICAgICAgbmV3SHJlZiA9IHRvLnBhdGhuYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5ld0hyZWYgPz89ICcjJztcblxuICAgIHJldHVybiBuZXdIcmVmO1xuICB9LCBbaHJlZiwgaXNEaXNhYmxlZCwgdG9dKTtcblxuICAvLyBSZXNvbHZlIHNlYXJjaCBzdHJpbmcgZnJvbSBwcm92aWRlZCBxdWVyeSB0cmVhdGVkIGFzIGZpbHRlcnMgdy8gYWN0aXZlIHNjaGVtYS5cbiAgY29uc3Qgc2VhcmNoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHF1ZXJ5ID09IG51bGwgfHwgcm91dGVyID09IG51bGwpIHJldHVybiAnJztcbiAgICBjb25zdCBlbnRyeSA9IHJvdXRlci5nZXQoKTtcbiAgICByZXR1cm4gYnVpbGRDb21iaW5lZFNlYXJjaCh7XG4gICAgICBmaWx0ZXJzOiBxdWVyeSBhcyBhbnksXG4gICAgICBxdWVyeVNjaGVtYTogZW50cnkuYWN0aXZlUXVlcnlTY2hlbWEgYXMgYW55LFxuICAgIH0pO1xuICB9LCBbcXVlcnksIHJvdXRlcl0pO1xuXG4gIGNvbnN0IGluaXRpYWxJc0FjdGl2ZSA9IGlzQ3VycmVudFBhdGhuYW1lKGV4YWN0LCByb3V0ZXI/Lmhpc3RvcnksIHBhdGhuYW1lKTtcbiAgY29uc3QgW2lzQWN0aXZlLCBzZXRJc0FjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsSXNBY3RpdmUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBuZXdJc0FjdGl2ZSA9IGlzQ3VycmVudFBhdGhuYW1lKGV4YWN0LCByb3V0ZXI/Lmhpc3RvcnksIHBhdGhuYW1lKTtcbiAgICAgIHNldElzQWN0aXZlKG5ld0lzQWN0aXZlKTtcbiAgICB9O1xuXG4gICAgaWYgKHJvdXRlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfVxuXG4gICAgcm91dGVyLmhpc3Rvcnkuc3Vic2NyaWJlKG9uQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByb3V0ZXIuaGlzdG9yeS51bnN1YnNjcmliZShvbkNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW2V4YWN0LCBwYXRobmFtZSwgcm91dGVyXSk7XG5cbiAgY29uc3QgY2xhc3NOYW1lcyA9IFtjbGFzc05hbWVdO1xuXG4gIGlmIChpc0FjdGl2ZSkge1xuICAgIGNsYXNzTmFtZXMucHVzaChhY3RpdmVDbGFzc05hbWUpO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgdXNlciBjbGlja3MsIGNoYW5nZSByb3V0ZVxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNEaXNhYmxlZCAmJiB0eXBlb2Ygb25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbkNsaWNrKGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBldmVudC5kZWZhdWx0UHJldmVudGVkIHx8XG4gICAgICAgIGV2ZW50Lm1ldGFLZXkgfHxcbiAgICAgICAgZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgZXZlbnQuc2hpZnRLZXkgfHxcbiAgICAgICAgZXZlbnQuYnV0dG9uICE9PSAwIHx8XG4gICAgICAgICh0YXJnZXQgIT0gbnVsbCAmJiB0YXJnZXQgIT09ICdfc2VsZicpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHJvdXRlciA9PSBudWxsIHx8IGlzRGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByb3V0ZXIuaGlzdG9yeS5wdXNoKHtcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2lzRGlzYWJsZWQsIG9uQ2xpY2ssIHBhdGhuYW1lLCByb3V0ZXIsIHRhcmdldCwgc2VhcmNoXSxcbiAgKTtcblxuICAvLyBDYWxsYmFjayB0byBwcmVsb2FkIGp1c3QgdGhlIGNvZGUgZm9yIHRoZSByb3V0ZTpcbiAgLy8gd2UgcGFzcyB0aGlzIHRvIG9uTW91c2VFbnRlciwgd2hpY2ggaXMgYSB3ZWFrZXIgc2lnbmFsXG4gIC8vIHRoYXQgdGhlIHVzZXIgKm1heSogbmF2aWdhdGUgdG8gdGhlIHJvdXRlLlxuICBjb25zdCBoYW5kbGVNb3VzZUVudGVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByZWxvYWRPbk1vdXNlRW50ZXIpIHtcbiAgICAgIHJvdXRlci5wcmVsb2FkKHBhdGhuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm91dGVyLnByZWxvYWRDb2RlKHBhdGhuYW1lKTtcbiAgICB9XG4gIH0sIFtyb3V0ZXIsIGlzRGlzYWJsZWQsIHByZWxvYWRPbk1vdXNlRW50ZXIsIHBhdGhuYW1lXSk7XG5cbiAgLy8gQ2FsbGJhY2sgdG8gcHJlbG9hZCB0aGUgY29kZSBhbmQgZGF0YSBmb3IgdGhlIHJvdXRlOlxuICAvLyB3ZSBwYXNzIHRoaXMgdG8gb25Nb3VzZURvd24sIHNpbmNlIHRoaXMgaXMgYSBzdHJvbmdlclxuICAvLyBzaWduYWwgdGhhdCB0aGUgdXNlciB3aWxsIGxpa2VseSBjb21wbGV0ZSB0aGUgbmF2aWdhdGlvblxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHJvdXRlciA9PSBudWxsIHx8IGlzRGlzYWJsZWQgfHwgIXByZWxvYWRPbk1vdXNlRG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByb3V0ZXIucHJlbG9hZChwYXRobmFtZSk7XG4gIH0sIFtyb3V0ZXIsIGlzRGlzYWJsZWQsIHByZWxvYWRPbk1vdXNlRG93biwgcGF0aG5hbWVdKTtcblxuICBsZXQgaHJlZlZhbHVlID0gcGF0aG5hbWU7XG4gIGlmICh0eXBlb2Ygc2VhcmNoID09PSAnc3RyaW5nJyAmJiBzZWFyY2gubGVuZ3RoID4gMCkge1xuICAgIGhyZWZWYWx1ZSA9IGAke3BhdGhuYW1lfSR7c2VhcmNofWA7XG4gIH1cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc05hbWVzKX1cbiAgICAgIGhyZWY9e2hyZWZWYWx1ZX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVNb3VzZURvd259XG4gICAgICBvbk1vdXNlRW50ZXI9e2hhbmRsZU1vdXNlRW50ZXJ9XG4gICAgICBvbk1vdXNlT3Zlcj17b25Nb3VzZU92ZXJ9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhcmdldD17dGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTGluaztcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,kBAAkB,EAElB,QAAQ,EACR,cAAc,EAEf,MAAM,aAAa,CAAC;AAKrB,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI;IAErD,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;AAqCF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,EACvD,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,IAAI,GAAE;IACJ,QAAQ,CAAC,EACL,OAAO,GACP;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD,GACL,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,kBAAkB,EAElB,QAAQ,EACR,cAAc,EAEf,MAAM,aAAa,CAAC;AAKrB,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI;IAErD,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;AAqCF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,EACvD,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,EAC3B,IAAI,GAAE;IACJ,QAAQ,CAAC,EACL,OAAO,GACP;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD,GACL,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EAAE,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,CA2sB3D"}
|
|
@@ -47,12 +47,7 @@ export default function createRouter(routes, opts = {}) {
|
|
|
47
47
|
if (route != null) {
|
|
48
48
|
const collected = [];
|
|
49
49
|
for (const r of route.route.routes) {
|
|
50
|
-
|
|
51
|
-
const obj = r;
|
|
52
|
-
if (obj.querySchema != null)
|
|
53
|
-
maybe = obj.querySchema;
|
|
54
|
-
else if (obj.filterSchema != null)
|
|
55
|
-
maybe = obj.filterSchema;
|
|
50
|
+
const maybe = r.querySchema;
|
|
56
51
|
if (maybe != null)
|
|
57
52
|
collected.push(maybe);
|
|
58
53
|
}
|
|
@@ -100,7 +95,7 @@ export default function createRouter(routes, opts = {}) {
|
|
|
100
95
|
currentEntry.filters = norm;
|
|
101
96
|
const normalizedSearch = buildCombinedSearch({
|
|
102
97
|
filters: norm,
|
|
103
|
-
|
|
98
|
+
querySchema: initialUnifiedSchema,
|
|
104
99
|
});
|
|
105
100
|
if (normalizedSearch !== history.location.search) {
|
|
106
101
|
history.set({
|
|
@@ -129,27 +124,22 @@ export default function createRouter(routes, opts = {}) {
|
|
|
129
124
|
nextRoute = getMatchedRoute(flatRoutes, history.location);
|
|
130
125
|
}
|
|
131
126
|
const query = parseRawQuery(location.search);
|
|
132
|
-
let
|
|
127
|
+
let querySchema;
|
|
133
128
|
if (nextRoute != null) {
|
|
134
129
|
const collected = [];
|
|
135
130
|
for (const r of nextRoute.route.routes) {
|
|
136
|
-
|
|
137
|
-
const obj = r;
|
|
138
|
-
if (obj.querySchema != null)
|
|
139
|
-
maybeF = obj.querySchema;
|
|
140
|
-
else if (obj.filterSchema != null)
|
|
141
|
-
maybeF = obj.filterSchema;
|
|
131
|
+
const maybeF = r.querySchema;
|
|
142
132
|
if (maybeF != null)
|
|
143
133
|
collected.push(maybeF);
|
|
144
134
|
}
|
|
145
135
|
if (collected.length > 0) {
|
|
146
|
-
|
|
136
|
+
querySchema = collected.at(-1);
|
|
147
137
|
}
|
|
148
138
|
}
|
|
149
139
|
let filters;
|
|
150
140
|
let filterDiagnostics;
|
|
151
|
-
if (
|
|
152
|
-
const parsedF = parseFilters(location.search,
|
|
141
|
+
if (querySchema != null) {
|
|
142
|
+
const parsedF = parseFilters(location.search, querySchema);
|
|
153
143
|
filters = parsedF.filters;
|
|
154
144
|
filterDiagnostics = parsedF.diagnostics;
|
|
155
145
|
}
|
|
@@ -185,12 +175,12 @@ export default function createRouter(routes, opts = {}) {
|
|
|
185
175
|
query,
|
|
186
176
|
filters,
|
|
187
177
|
filterDiagnostics,
|
|
188
|
-
activeQuerySchema:
|
|
178
|
+
activeQuerySchema: querySchema,
|
|
189
179
|
};
|
|
190
|
-
if (normalized &&
|
|
180
|
+
if (normalized && querySchema != null) {
|
|
191
181
|
const normalizedSearch = buildCombinedSearch({
|
|
192
182
|
filters,
|
|
193
|
-
|
|
183
|
+
querySchema,
|
|
194
184
|
});
|
|
195
185
|
if (normalizedSearch !== location.search) {
|
|
196
186
|
let nextSearchStr = normalizedSearch;
|
|
@@ -252,24 +242,20 @@ export default function createRouter(routes, opts = {}) {
|
|
|
252
242
|
navigate({ pathname, query, filters: navFilters, replace }) {
|
|
253
243
|
const current = currentEntry;
|
|
254
244
|
const targetPathname = pathname ?? current.location.pathname;
|
|
255
|
-
let
|
|
245
|
+
let destSchema;
|
|
256
246
|
function collectSchema(routesArr) {
|
|
257
247
|
if (routesArr == null) {
|
|
258
248
|
return;
|
|
259
249
|
}
|
|
260
250
|
const collected = [];
|
|
261
251
|
for (const r of routesArr) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
if (obj.querySchema != null)
|
|
265
|
-
maybeF = obj.querySchema;
|
|
266
|
-
else if (obj.filterSchema != null)
|
|
267
|
-
maybeF = obj.filterSchema;
|
|
252
|
+
const maybeF = r
|
|
253
|
+
.querySchema;
|
|
268
254
|
if (maybeF != null)
|
|
269
255
|
collected.push(maybeF);
|
|
270
256
|
}
|
|
271
257
|
if (collected.length > 0) {
|
|
272
|
-
|
|
258
|
+
destSchema = collected.at(-1);
|
|
273
259
|
}
|
|
274
260
|
}
|
|
275
261
|
const destRoute = getMatchedRoute(flatRoutes, {
|
|
@@ -277,12 +263,12 @@ export default function createRouter(routes, opts = {}) {
|
|
|
277
263
|
pathname: targetPathname,
|
|
278
264
|
});
|
|
279
265
|
collectSchema(destRoute?.route.routes);
|
|
280
|
-
|
|
266
|
+
destSchema ??= current.activeQuerySchema;
|
|
281
267
|
const effectiveFilters = navFilters ?? current.filters;
|
|
282
268
|
const filtersInput = effectiveFilters ?? query;
|
|
283
269
|
const search = buildCombinedSearch({
|
|
284
270
|
filters: filtersInput,
|
|
285
|
-
|
|
271
|
+
querySchema: destSchema,
|
|
286
272
|
});
|
|
287
273
|
const locationObj = { pathname: targetPathname, search, hash: '' };
|
|
288
274
|
if (replace === true) {
|
|
@@ -644,4 +630,4 @@ export default function createRouter(routes, opts = {}) {
|
|
|
644
630
|
}
|
|
645
631
|
return { cleanup, context };
|
|
646
632
|
}
|
|
647
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLElBQUksWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUF1RDlELE1BQU0sQ0FBQyxPQUFPLFVBQVUsWUFBWSxDQUNsQyxNQUEyQixFQUMzQixPQUlJLEVBQUU7SUFHTixJQUFJLGNBQXVCLENBQUM7SUFDNUIsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzFCLElBQUksZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQztnQkFDSCxPQUFPLENBQ0wsT0FBTyxPQUFPLEtBQUssV0FBVztvQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUN0QyxDQUFDO1lBQ0osQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQztRQUNyRCxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FB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ZGVyLmpzJztcbmltcG9ydCB7IEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi4vaGlzdG9yeS9pbmRleC5qcyc7XG5pbXBvcnQgeyBnZXRNYXRjaGVkUm91dGUsIHByZXBhcmVNYXRjaCB9IGZyb20gJy4uL3Rvb2xzLmpzJztcbmltcG9ydCB7IHBhcnNlUmF3UXVlcnkgfSBmcm9tICcuLi90b29scy9xdWVyeS5qcyc7XG5pbXBvcnQgYnVpbGRDb21iaW5lZFNlYXJjaCBmcm9tICcuLi90b29scy9idWlsZENvbWJpbmVkU2VhcmNoLmpzJztcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlRmlsdGVycyB9IGZyb20gJ0BwbHVtaWxlL2ZpbHRlci1xdWVyeSc7XG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlRW50cnksXG4gIFJvdXRpbmdDb250ZXh0VHlwZSxcbiAgU3Vic2NyaWJlQ2FsbGJhY2ssXG4gIEFueVJvdXRlLFxuICBQcmVwYXJlZEFjY2VzcyxcbiAgTmF2aWdhdGVPdmVybG9hZHMsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBmb3IgdGhlIGNyZWF0ZVJvdXRlciBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlUm91dGVyUmV0dXJuPFIgZXh0ZW5kcyBBbnlSb3V0ZVtdPiA9IHtcbiAgLyoqIEZ1bmN0aW9uIHRvIGNsZWFuIHVwIHJvdXRlciBsaXN0ZW5lcnMgYW5kIHJlc291cmNlcyAqL1xuICBjbGVhbnVwOiAoKSA9PiB2b2lkO1xuICAvKiogUm91dGVyIGNvbnRleHQgb2JqZWN0IGZvciB0aGUgUmVhY3QgQ29udGV4dCBQcm92aWRlciAqL1xuICBjb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8YW55PiAmIFByZXBhcmVkQWNjZXNzPFI+O1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29tcGxldGUgcm91dGVyIHN5c3RlbSBmcm9tIHJvdXRlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFRoaXMgcm91dGVyIGlzIGJ1aWx0IGZyb20gdGhlIHNhbWUgcHJpbWl0aXZlcyBhcyByZWFjdC1yb3V0ZXIgYnV0IHdpdGggYWRkaXRpb25hbFxuICogZmVhdHVyZXMgZm9yIGRhdGEgcHJlbG9hZGluZyBhbmQgY29kZSBzcGxpdHRpbmcuIEVhY2ggcm91dGUgY2FuIGNvbnRhaW4gYm90aCBhXG4gKiBDb21wb25lbnQgYW5kIGEgcHJlcGFyZSgpIGZ1bmN0aW9uIHRoYXQgY2FuIHByZWxvYWQgZGF0YSBmb3IgdGhlIGNvbXBvbmVudC5cbiAqXG4gKiBUaGUgcm91dGVyIHdhdGNoZXMgZm9yIGNoYW5nZXMgdG8gdGhlIGN1cnJlbnQgbG9jYXRpb24gdmlhIHRoZSBIVE1MNSBIaXN0b3J5IEFQSSxcbiAqIG1hcHMgdGhlIGxvY2F0aW9uIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJvdXRlIGVudHJ5LCBhbmQgdGhlbiBwcmVsb2FkcyB0aGUgY29kZVxuICogYW5kIGRhdGEgZm9yIHRoZSByb3V0ZSBiZWZvcmUgcmVuZGVyaW5nLlxuICpcbiAqIEBwYXJhbSByb3V0ZXMgLSBBcnJheSBvZiByb3V0ZSBjb25maWd1cmF0aW9uc1xuICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJvdXRlciBjb250ZXh0IGFuZCBjbGVhbnVwIGZ1bmN0aW9uXG4gKlxuICBwcmVwYXJlZE1hdGNoOiBwcmVwYXJlTWF0Y2gocm91dGUsIHBhcnNlUmF3UXVlcnkoaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gpKSxcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJvdXRlcyA9IFtcbiAqICAge1xuICogICAgIHBhdGg6ICcvdXNlcnMvOmlkJyxcbiAqICAgICByZXNvdXJjZVBhZ2U6IGdldFJlc291cmNlUGFnZSgnVXNlclByb2ZpbGUnLCAoKSA9PiBpbXBvcnQoJy4vVXNlclByb2ZpbGUnKSksXG4gKiAgICAgcHJlcGFyZTogKHsgdmFyaWFibGVzIH0pID0+ICh7IHVzZXJJZDogdmFyaWFibGVzLmlkIH0pXG4gKiAgIH1cbiAqIF07XG4gKlxuICogY29uc3QgeyBjb250ZXh0LCBjbGVhbnVwIH0gPSBjcmVhdGVSb3V0ZXIocm91dGVzKTtcbiAqXG4gKiAvLyBVc2UgaW4gUmVhY3QgYXBwXG4gKiA8Um91dGluZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICogICA8Um91dGVyUmVuZGVyZXIgLz5cbiAqIDwvUm91dGluZ0NvbnRleHQuUHJvdmlkZXI+XG4gKiBgYGBcbiAqL1xuLyoqXG4gKiBDcmVhdGUgYSByb3V0ZXIgKHR5cGVkIG92ZXJsb2FkKS4gV2hlbiBjYWxsZWQgd2l0aCBhIGNvbnN0IHR1cGxlIG9mIHJvdXRlcywgZ2VuZXJpY3MgYXJlIHByZXNlcnZlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUm91dGVyPFIgZXh0ZW5kcyBBbnlSb3V0ZVtdPihcbiAgcm91dGVzOiBbLi4uUl0gfCBBbnlSb3V0ZVtdLFxuICBvcHRzOiB7XG4gICAgZGV2dG9vbHM/OlxuICAgICAgfCBib29sZWFuXG4gICAgICB8IHsgZ2xvYmFsPzogYm9vbGVhbjsgcGFuZWw/OiBib29sZWFuOyBzaG9ydGN1dD86IHN0cmluZyB9O1xuICB9ID0ge30sXG4pOiBDcmVhdGVSb3V0ZXJSZXR1cm48UiBleHRlbmRzIEFueVJvdXRlW10gPyBSIDogQW55Um91dGVbXT4ge1xuICAvLyBOb3JtYWxpemUgZGV2dG9vbHMgb3B0aW9ucyBtYWludGFpbmluZyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICBsZXQgZGV2dG9vbHNHbG9iYWw6IGJvb2xlYW47XG4gIGxldCBkZXZ0b29sc1BhbmVsID0gZmFsc2U7XG4gIGxldCBkZXZ0b29sc1Nob3J0Y3V0ID0gJ0FsdCtTaGlmdCtSJztcbiAgaWYgKHR5cGVvZiBvcHRzLmRldnRvb2xzID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGJhc2VFbmFibGVkID0gKCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICAgIGRldnRvb2xzR2xvYmFsID0gb3B0cy5kZXZ0b29scy5nbG9iYWwgPz8gYmFzZUVuYWJsZWQ7XG4gICAgZGV2dG9vbHNQYW5lbCA9ICEhb3B0cy5kZXZ0b29scy5wYW5lbDtcbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygb3B0cy5kZXZ0b29scy5zaG9ydGN1dCA9PT0gJ3N0cmluZycgJiZcbiAgICAgIG9wdHMuZGV2dG9vbHMuc2hvcnRjdXQudHJpbSgpICE9PSAnJ1xuICAgICkge1xuICAgICAgZGV2dG9vbHNTaG9ydGN1dCA9IG9wdHMuZGV2dG9vbHMuc2hvcnRjdXQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGJvb2xlYW4gb3IgdW5kZWZpbmVkXG4gICAgY29uc3QgZW5hYmxlZCA9ICgoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMuZGV2dG9vbHMgPT09ICdib29sZWFuJykgcmV0dXJuIG9wdHMuZGV2dG9vbHM7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICBkZXZ0b29sc0dsb2JhbCA9IGVuYWJsZWQ7XG4gIH1cbiAgLy8gSW5pdGlhbGl6ZSBicm93c2VyIGhpc3RvcnkgbWFuYWdlclxuICBjb25zdCBoaXN0b3J5ID0gbmV3IEJyb3dzZXJIaXN0b3J5KCk7XG5cbiAgLy8gQnVpbGQgYSBmbGF0IGxpc3Qgb2Ygcm91dGVzIGZvciBlZmZpY2llbnQgbWF0Y2hpbmdcbiAgY29uc3QgZmxhdFJvdXRlcyA9IGJ1aWxkUm91dGVzKHJvdXRlcyk7XG5cbiAgLy8gRmluZCB0aGUgaW5pdGlhbCByb3V0ZSBtYXRjaCBhbmQgcHJlcGFyZSBpdCBmb3IgcmVuZGVyaW5nXG4gIGNvbnN0IHJvdXRlID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIGhpc3RvcnkubG9jYXRpb24pO1xuICBjb25zdCBpbml0aWFsUmF3UXVlcnkgPSBwYXJzZVJhd1F1ZXJ5KGhpc3RvcnkubG9jYXRpb24uc2VhcmNoKTtcbiAgLy8gRGV0ZXJtaW5lIHVuaWZpZWQgc2NoZW1hIChxdWVyeVNjaGVtYSkgZnJvbSBkZWVwZXN0IHJvdXRlXG4gIGxldCBpbml0aWFsVW5pZmllZFNjaGVtYTogYW55O1xuICBpZiAocm91dGUgIT0gbnVsbCkge1xuICAgIGNvbnN0IGNvbGxlY3RlZDogYW55W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHIgb2Ygcm91dGUucm91dGUucm91dGVzKSB7XG4gICAgICBsZXQgbWF5YmU6IHVua25vd247XG4gICAgICBjb25zdCBvYmogPSByIGFzIHVua25vd24gYXMge1xuICAgICAgICBxdWVyeVNjaGVtYT86IHVua25vd247XG4gICAgICAgIGZpbHRlclNjaGVtYT86IHVua25vd247XG4gICAgICB9O1xuICAgICAgaWYgKG9iai5xdWVyeVNjaGVtYSAhPSBudWxsKSBtYXliZSA9IG9iai5xdWVyeVNjaGVtYTtcbiAgICAgIGVsc2UgaWYgKG9iai5maWx0ZXJTY2hlbWEgIT0gbnVsbCkgbWF5YmUgPSBvYmouZmlsdGVyU2NoZW1hOyAvLyBsZWdhY3kgcHJvcGVydHkgbmFtZVxuICAgICAgaWYgKG1heWJlICE9IG51bGwpIGNvbGxlY3RlZC5wdXNoKG1heWJlKTtcbiAgICB9XG4gICAgaWYgKGNvbGxlY3RlZC5sZW5ndGggPiAwKSBpbml0aWFsVW5pZmllZFNjaGVtYSA9IGNvbGxlY3RlZC5hdCgtMSk7XG4gIH1cbiAgbGV0IGluaXRpYWxGaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgbGV0IGluaXRpYWxGaWx0ZXJEaWFnbm9zdGljczogYW55W10gfCB1bmRlZmluZWQ7XG4gIGlmIChpbml0aWFsVW5pZmllZFNjaGVtYSAhPSBudWxsKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VGaWx0ZXJzKGhpc3RvcnkubG9jYXRpb24uc2VhcmNoLCBpbml0aWFsVW5pZmllZFNjaGVtYSk7XG4gICAgaW5pdGlhbEZpbHRlcnMgPSBwYXJzZWQuZmlsdGVycyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGluaXRpYWxGaWx0ZXJEaWFnbm9zdGljcyA9IHBhcnNlZC5kaWFnbm9zdGljcyBhcyB1bmtub3duW107XG4gIH1cbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChyb3V0ZSwgaW5pdGlhbEZpbHRlcnMpO1xuICAvLyBIZWxwZXIgdG8gYnVpbGQgdGhlIHJhdyBxdWVyeSBvYmplY3QgZnJvbSBhIHNlYXJjaCBzdHJpbmdcbiAgbGV0IGN1cnJlbnRFbnRyeTogUm91dGVFbnRyeTxhbnk+ID0ge1xuICAgIGZvcmNlUmVyZW5kZXI6IGZhbHNlLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLFxuICAgIHJvdXRlLFxuICAgIHByZXBhcmVkTWF0Y2gsXG4gICAgcmF3U2VhcmNoOiBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCxcbiAgICBxdWVyeTogaW5pdGlhbFJhd1F1ZXJ5LFxuICAgIC8vIHR5cGVkUXVlcnkgcmVtb3ZlZCAodW5pZmllZCBpbnRvIGZpbHRlcnMvcXVlcnkpXG4gICAgZmlsdGVyczogaW5pdGlhbEZpbHRlcnMsXG4gICAgZmlsdGVyRGlhZ25vc3RpY3M6IGluaXRpYWxGaWx0ZXJEaWFnbm9zdGljcyxcbiAgICBhY3RpdmVRdWVyeVNjaGVtYTogaW5pdGlhbFVuaWZpZWRTY2hlbWEsXG4gIH07XG5cbiAgLy8gSW5pdGlhbCBub3JtYWxpemF0aW9uIHBhc3MgKGUuZy4sIGNsYW1wIHBhZ2UpXG4gIGNvbnN0IGluaXRUeXBlZCA9IGN1cnJlbnRFbnRyeS5maWx0ZXJzIGFzIHVua25vd24gYXNcbiAgICB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGxldCBpbml0UGFnZU51bWVyaWM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaWYgKGluaXRUeXBlZCAhPSBudWxsKSB7XG4gICAgY29uc3QgcmF3UGFnZSA9IGluaXRUeXBlZC5wYWdlO1xuICAgIGlmICh0eXBlb2YgcmF3UGFnZSA9PT0gJ251bWJlcicpIGluaXRQYWdlTnVtZXJpYyA9IHJhd1BhZ2U7XG4gICAgZWxzZSBpZiAoXG4gICAgICByYXdQYWdlICE9IG51bGwgJiZcbiAgICAgIHR5cGVvZiByYXdQYWdlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkocmF3UGFnZSkgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyYXdQYWdlLCAnZXEnKSAmJlxuICAgICAgdHlwZW9mIChyYXdQYWdlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5lcSA9PT0gJ251bWJlcidcbiAgICApIHtcbiAgICAgIGluaXRQYWdlTnVtZXJpYyA9IChyYXdQYWdlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5lcSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG4gIGlmIChcbiAgICB0eXBlb2YgaW5pdFBhZ2VOdW1lcmljID09PSAnbnVtYmVyJyAmJlxuICAgIGluaXRQYWdlTnVtZXJpYyA8IDEgJiZcbiAgICBpbml0aWFsVW5pZmllZFNjaGVtYSAhPSBudWxsICYmXG4gICAgaW5pdFR5cGVkICE9IG51bGxcbiAgKSB7XG4gICAgY29uc3Qgbm9ybSA9IHsgLi4uaW5pdFR5cGVkLCBwYWdlOiB7IGVxOiAxIH0gfSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjdXJyZW50RW50cnkuZmlsdGVycyA9IG5vcm07IC8vIGltbWVkaWF0ZSB2aXNpYmlsaXR5XG4gICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaCA9IGJ1aWxkQ29tYmluZWRTZWFyY2goe1xuICAgICAgZmlsdGVyczogbm9ybSxcbiAgICAgIGZpbHRlclNjaGVtYTogaW5pdGlhbFVuaWZpZWRTY2hlbWEsXG4gICAgfSk7IC8vIHJldHVybnMgJycgb3Igc3RyaW5nIHN0YXJ0aW5nIHdpdGggJz8nXG4gICAgaWYgKG5vcm1hbGl6ZWRTZWFyY2ggIT09IGhpc3RvcnkubG9jYXRpb24uc2VhcmNoKSB7XG4gICAgICBoaXN0b3J5LnNldCh7XG4gICAgICAgIHBhdGhuYW1lOiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICBzZWFyY2g6IG5vcm1hbGl6ZWRTZWFyY2gsXG4gICAgICAgIGhhc2g6ICcnLFxuICAgICAgfSk7XG4gICAgICAvLyBVcGRhdGUgY3VycmVudEVudHJ5LmxvY2F0aW9uIHRvIHJlZmxlY3QgbmV3IHNlYXJjaCBkaXJlY3RseSAoaGlzdG9yeS5zZXQgdHJpZ2dlcnMgYXN5bmMgc3Vic2NyaWJlcilcbiAgICAgIGN1cnJlbnRFbnRyeSA9IHtcbiAgICAgICAgLi4uY3VycmVudEVudHJ5LFxuICAgICAgICBsb2NhdGlvbjogeyAuLi5jdXJyZW50RW50cnkubG9jYXRpb24sIHNlYXJjaDogbm9ybWFsaXplZFNlYXJjaCB9LFxuICAgICAgICByYXdTZWFyY2g6IG5vcm1hbGl6ZWRTZWFyY2gsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIE1haW50YWluIGEgc2V0IG9mIHN1YnNjcmliZXJzIHRvIHRoZSBhY3RpdmUgcm91dGUgZW50cnlcbiAgbGV0IG5leHRJZCA9IDA7XG4gIGNvbnN0IHN1YnNjcmliZXJzID0gbmV3IE1hcDxudW1iZXIsIFN1YnNjcmliZUNhbGxiYWNrPGFueT4+KCk7XG5cbiAgLy8gTGlzdGVuIGZvciBsb2NhdGlvbiBjaGFuZ2VzLCBtYXRjaCB0byB0aGUgcm91dGUgZW50cnksIHByZXBhcmUgdGhlIGVudHJ5LFxuICAvLyBhbmQgbm90aWZ5IHN1YnNjcmliZXJzLiBUaGlzIHBhdHRlcm4gZW5zdXJlcyB0aGF0IGRhdGEtbG9hZGluZ1xuICAvLyBvY2N1cnMgKm91dHNpZGUqIG9mIC0gYW5kICpiZWZvcmUqIC0gcmVuZGVyaW5nLlxuICBjb25zdCBjbGVhbnVwID0gaGlzdG9yeS5zdWJzY3JpYmUoKGxvY2F0aW9uLCBmb3JjZVJlcmVuZGVyKSA9PiB7XG4gICAgY29uc3Qgc2FtZVBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWUgPT09IGN1cnJlbnRFbnRyeS5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICBjb25zdCBzYW1lU2VhcmNoID0gbG9jYXRpb24uc2VhcmNoID09PSBjdXJyZW50RW50cnkucmF3U2VhcmNoO1xuXG4gICAgaWYgKCFmb3JjZVJlcmVuZGVyICYmIHNhbWVQYXRobmFtZSAmJiBzYW1lU2VhcmNoKSB7XG4gICAgICAvLyBOb3RoaW5nIGNoYW5nZWQgdGhhdCB3ZSBjYXJlIGFib3V0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgb25seSB0aGUgc2VhcmNoIGNoYW5nZWQgd2Ugc3RpbGwgd2FudCB0byBwcm9wYWdhdGUgdGhlIGNoYW5nZS5cbiAgICAvLyBLZWVwIHRoZSBleGlzdGluZyBwcmVwYXJlZE1hdGNoIHdoZW4gcGF0aG5hbWUgaXMgaWRlbnRpY2FsIHRvIGF2b2lkIHJlZHVuZGFudCB3b3JrLlxuICAgIGxldCBuZXh0UHJlcGFyZWRNYXRjaCA9IGN1cnJlbnRFbnRyeS5wcmVwYXJlZE1hdGNoO1xuICAgIGxldCBuZXh0Um91dGUgPSBjdXJyZW50RW50cnkucm91dGU7XG5cbiAgICBpZiAoIXNhbWVQYXRobmFtZSkge1xuICAgICAgLy8gUGF0aCBjaGFuZ2VkOiByZWNvbXB1dGUgbWF0Y2ggKyBwcmVwYXJlZCBkYXRhIGluY2x1ZGluZyBxdWVyeVxuICAgICAgbmV4dFJvdXRlID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIGhpc3RvcnkubG9jYXRpb24pO1xuICAgICAgLy8gd2Ugd2lsbCBzZXQgYmVsb3cgYWZ0ZXIgY29tcHV0aW5nIHR5cGVkIHF1ZXJ5XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgcmF3IHF1ZXJ5IG9iamVjdCAoYmFzaWMgYWdncmVnYXRpb24pIGZyb20gbG9jYXRpb24uc2VhcmNoXG4gICAgY29uc3QgcXVlcnkgPSBwYXJzZVJhd1F1ZXJ5KGxvY2F0aW9uLnNlYXJjaCk7XG4gICAgLy8gRGV0ZXJtaW5lIHNjaGVtYSBmcm9tIGRlZXBlc3QgbWF0Y2hlZCByb3V0ZVxuICAgIGxldCBmaWx0ZXJTY2hlbWE6IGFueTtcbiAgICBpZiAobmV4dFJvdXRlICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbGxlY3RlZDogYW55W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgciBvZiBuZXh0Um91dGUucm91dGUucm91dGVzKSB7XG4gICAgICAgIGxldCBtYXliZUY6IHVua25vd247XG4gICAgICAgIGNvbnN0IG9iaiA9IHIgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgcXVlcnlTY2hlbWE/OiB1bmtub3duO1xuICAgICAgICAgIGZpbHRlclNjaGVtYT86IHVua25vd247XG4gICAgICAgIH07XG4gICAgICAgIGlmIChvYmoucXVlcnlTY2hlbWEgIT0gbnVsbCkgbWF5YmVGID0gb2JqLnF1ZXJ5U2NoZW1hO1xuICAgICAgICBlbHNlIGlmIChvYmouZmlsdGVyU2NoZW1hICE9IG51bGwpIG1heWJlRiA9IG9iai5maWx0ZXJTY2hlbWE7XG4gICAgICAgIGlmIChtYXliZUYgIT0gbnVsbCkgY29sbGVjdGVkLnB1c2gobWF5YmVGKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb2xsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWx0ZXJTY2hlbWEgPSBjb2xsZWN0ZWQuYXQoLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSB1bmlmaWVkIGZpbHRlcnNcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZpbHRlckRpYWdub3N0aWNzOiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZmlsdGVyU2NoZW1hICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHBhcnNlZEYgPSBwYXJzZUZpbHRlcnMobG9jYXRpb24uc2VhcmNoLCBmaWx0ZXJTY2hlbWEpO1xuICAgICAgZmlsdGVycyA9IHBhcnNlZEYuZmlsdGVycyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgZmlsdGVyRGlhZ25vc3RpY3MgPSBwYXJzZWRGLmRpYWdub3N0aWNzIGFzIHVua25vd25bXTtcbiAgICB9XG4gICAgLy8gTm9ybWFsaXphdGlvbjogY2xhbXAgcGFnZSA+PSAxIGlmIG51bWVyaWMgcGFnZSBwcmVzZW50XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBmYWxzZTtcbiAgICBsZXQgcGc6IHVua25vd247XG4gICAgaWYgKGZpbHRlcnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBmaWx0ZXJzO1xuICAgICAgY29uc3QgbWF5YmUgPSBmLnBhZ2U7XG4gICAgICBpZiAoXG4gICAgICAgIG1heWJlICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIG1heWJlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAhQXJyYXkuaXNBcnJheShtYXliZSkgJiZcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1heWJlLCAnZXEnKVxuICAgICAgKSB7XG4gICAgICAgIHBnID0gKG1heWJlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5lcTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBnID0gbWF5YmU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcGcgPT09ICdudW1iZXInICYmIHBnIDwgMSkge1xuICAgICAgY29uc3QgY2xvbmUgPSB7IC4uLihmaWx0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pLCBwYWdlOiB7IGVxOiAxIH0gfTtcbiAgICAgIGZpbHRlcnMgPSBjbG9uZTtcbiAgICAgIG5vcm1hbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIElmIG9ubHkgdGhlIHNlYXJjaCBjaGFuZ2VkIChzYW1lIHBhdGhuYW1lKSB3ZSBzdGlsbCBuZWVkIHRvIHJlLXJ1biBwcmVwYXJlXG4gICAgaWYgKCFzYW1lUGF0aG5hbWUgfHwgIXNhbWVTZWFyY2gpIHtcbiAgICAgIG5leHRQcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKG5leHRSb3V0ZSwgdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0RW50cnk6IFJvdXRlRW50cnk8YW55PiA9IHtcbiAgICAgIGZvcmNlUmVyZW5kZXI6IGZvcmNlUmVyZW5kZXIgfHwgKHNhbWVQYXRobmFtZSAmJiAhc2FtZVNlYXJjaCksXG4gICAgICBsb2NhdGlvbixcbiAgICAgIHJvdXRlOiBuZXh0Um91dGUsXG4gICAgICBwcmVwYXJlZE1hdGNoOiBuZXh0UHJlcGFyZWRNYXRjaCxcbiAgICAgIHJhd1NlYXJjaDogbG9jYXRpb24uc2VhcmNoLFxuICAgICAgcXVlcnksXG4gICAgICBmaWx0ZXJzLFxuICAgICAgZmlsdGVyRGlhZ25vc3RpY3MsXG4gICAgICBhY3RpdmVRdWVyeVNjaGVtYTogZmlsdGVyU2NoZW1hLFxuICAgIH07XG5cbiAgICAvLyBJZiBub3JtYWxpemF0aW9uIGNoYW5nZWQgdGhlIHR5cGVkIHF1ZXJ5IHdlIHRyaWdnZXIgYSByZXBsYWNlIHdpdGggbm9ybWFsaXplZCBzZWFyY2hcbiAgICBpZiAobm9ybWFsaXplZCAmJiBmaWx0ZXJTY2hlbWEgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaCA9IGJ1aWxkQ29tYmluZWRTZWFyY2goe1xuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBmaWx0ZXJTY2hlbWEsXG4gICAgICB9KTtcbiAgICAgIGlmIChub3JtYWxpemVkU2VhcmNoICE9PSBsb2NhdGlvbi5zZWFyY2gpIHtcbiAgICAgICAgbGV0IG5leHRTZWFyY2hTdHIgPSBub3JtYWxpemVkU2VhcmNoO1xuICAgICAgICBpZiAoIW5leHRTZWFyY2hTdHIuc3RhcnRzV2l0aCgnPycpKSB7XG4gICAgICAgICAgaWYgKG5leHRTZWFyY2hTdHIgPT09ICcnKSBuZXh0U2VhcmNoU3RyID0gJyc7XG4gICAgICAgICAgZWxzZSBuZXh0U2VhcmNoU3RyID0gYD8ke25leHRTZWFyY2hTdHJ9YDtcbiAgICAgICAgfVxuICAgICAgICBoaXN0b3J5LnNldCh7XG4gICAgICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgIHNlYXJjaDogbmV4dFNlYXJjaFN0cixcbiAgICAgICAgICBoYXNoOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjsgLy8gZWFybHk6IHN1YnNlcXVlbnQgc2V0IHdpbGwgdHJpZ2dlciByZXJ1blxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBjdXJyZW50IGVudHJ5IGFuZCBub3RpZnkgYWxsIHN1YnNjcmliZXJzXG4gICAgY3VycmVudEVudHJ5ID0gbmV4dEVudHJ5O1xuICAgIHN1YnNjcmliZXJzLmZvckVhY2goKGNhbGxiYWNrKSA9PiB7XG4gICAgICBjYWxsYmFjayhuZXh0RW50cnkpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBUaGUgcm91dGVyIGNvbnRleHQgb2JqZWN0IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gUmVhY3QgQ29udGV4dFxuICBjb25zdCBjb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8YW55PiAmXG4gICAgUHJlcGFyZWRBY2Nlc3M8QW55Um91dGVbXT4gJiB7XG4gICAgICBuYXZpZ2F0ZTogTmF2aWdhdGVPdmVybG9hZHM8QW55Um91dGVbXT47XG4gICAgfSA9IHtcbiAgICBoaXN0b3J5LFxuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBjdXJyZW50RW50cnk7XG4gICAgfSxcbiAgICBwcmVsb2FkQ29kZShwYXRobmFtZSkge1xuICAgICAgLy8gUHJlbG9hZCBqdXN0IHRoZSBjb21wb25lbnQgY29kZSBmb3IgYSByb3V0ZSB3aXRob3V0IHN0b3JpbmcgdGhlIHJlc3VsdFxuICAgICAgY29uc3QgbWF0Y2hlcyA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCB7XG4gICAgICAgIC4uLndpbmRvdy5sb2NhdGlvbixcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIExvYWQgYWxsIHJlc291cmNlIHBhZ2VzIGZvciB0aGUgbWF0Y2hlZCByb3V0ZVxuICAgICAgbWF0Y2hlcy5yb3V0ZS5yb3V0ZXMuZm9yRWFjaCgoeyByZXNvdXJjZVBhZ2UgfSkgPT4ge1xuICAgICAgICBpZiAocmVzb3VyY2VQYWdlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICByZXNvdXJjZVBhZ2UubG9hZCgpO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBwcmVsb2FkKHBhdGhuYW1lKSB7XG4gICAgICAvLyBQcmVsb2FkIGJvdGggdGhlIGNvbXBvbmVudCBjb2RlIGFuZCBwcmVwYXJlZCBkYXRhIGZvciBhIHJvdXRlXG4gICAgICBjb25zdCBtYXRjaGVzID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIHtcbiAgICAgICAgLi4ud2luZG93LmxvY2F0aW9uLFxuICAgICAgICBwYXRobmFtZSxcbiAgICAgIH0pO1xuICAgICAgcHJlcGFyZU1hdGNoKG1hdGNoZXMpO1xuICAgIH0sXG4gICAgc3Vic2NyaWJlKGNhbGxiYWNrKSB7XG4gICAgICAvLyBBZGQgYSBuZXcgc3Vic2NyaWJlciBhbmQgcmV0dXJuIHVuc3Vic2NyaWJlIGZ1bmN0aW9uXG4gICAgICBuZXh0SWQgKz0gMTtcbiAgICAgIGNvbnN0IGlkID0gbmV4dElkO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtc3R5bGVcbiAgICAgIGNvbnN0IGRpc3Bvc2UgPSAoKSA9PiB7XG4gICAgICAgIHN1YnNjcmliZXJzLmRlbGV0ZShpZCk7XG4gICAgICB9O1xuICAgICAgc3Vic2NyaWJlcnMuc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm4gZGlzcG9zZTtcbiAgICB9LFxuICAgIG5hdmlnYXRlKHsgcGF0aG5hbWUsIHF1ZXJ5LCBmaWx0ZXJzOiBuYXZGaWx0ZXJzLCByZXBsYWNlIH06IGFueSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGN1cnJlbnRFbnRyeTtcbiAgICAgIGNvbnN0IHRhcmdldFBhdGhuYW1lID0gcGF0aG5hbWUgPz8gY3VycmVudC5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgIC8vIERldGVybWluZSBzY2hlbWEgb2YgZGVzdGluYXRpb24gKGlmIHNhbWUgcGF0aCBhbmQgd2UgaGF2ZSByb3V0ZSB3ZSBjYW4gcmV1c2UsIGVsc2UgcmVtYXRjaClcbiAgICAgIGxldCBmaWx0ZXJTY2hlbWE6IGFueTtcbiAgICAgIC8qKiBDb2xsZWN0IGRlZXBlc3QgcXVlcnkgc2NoZW1hIGZyb20gcm91dGUgY2hhaW4gKi9cbiAgICAgIGZ1bmN0aW9uIGNvbGxlY3RTY2hlbWEocm91dGVzQXJyOiBhbnlbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAocm91dGVzQXJyID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sbGVjdGVkOiBhbnlbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHIgb2Ygcm91dGVzQXJyKSB7XG4gICAgICAgICAgbGV0IG1heWJlRjogdW5rbm93bjtcbiAgICAgICAgICBjb25zdCBvYmogPSByIGFzIHVua25vd24gYXMge1xuICAgICAgICAgICAgcXVlcnlTY2hlbWE/OiB1bmtub3duO1xuICAgICAgICAgICAgZmlsdGVyU2NoZW1hPzogdW5rbm93bjtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChvYmoucXVlcnlTY2hlbWEgIT0gbnVsbCkgbWF5YmVGID0gb2JqLnF1ZXJ5U2NoZW1hO1xuICAgICAgICAgIGVsc2UgaWYgKG9iai5maWx0ZXJTY2hlbWEgIT0gbnVsbCkgbWF5YmVGID0gb2JqLmZpbHRlclNjaGVtYTtcbiAgICAgICAgICBpZiAobWF5YmVGICE9IG51bGwpIGNvbGxlY3RlZC5wdXNoKG1heWJlRik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbGxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZmlsdGVyU2NoZW1hID0gY29sbGVjdGVkLmF0KC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQWx3YXlzIGF0dGVtcHQgZnVsbCBtYXRjaCBmb3IgZGVzdGluYXRpb24gdG8gZW5zdXJlIHNjaGVtYSBwcmVzZW50IGV2ZW4gaWYgc2FtZSBwYXRobmFtZVxuICAgICAgY29uc3QgZGVzdFJvdXRlID0gZ2V0TWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIHtcbiAgICAgICAgLi4ud2luZG93LmxvY2F0aW9uLFxuICAgICAgICBwYXRobmFtZTogdGFyZ2V0UGF0aG5hbWUsXG4gICAgICB9KTtcbiAgICAgIGNvbGxlY3RTY2hlbWEoZGVzdFJvdXRlPy5yb3V0ZS5yb3V0ZXMpO1xuICAgICAgLy8gRmFsbGJhY2sgdG8gY3VycmVudGx5IGFjdGl2ZSBzY2hlbWEgaWYgZGVzdGluYXRpb24gc2NoZW1hIG5vdCBmb3VuZCAoZS5nLiwgcmFjZSBjb25kaXRpb25zKVxuICAgICAgZmlsdGVyU2NoZW1hID8/PSBjdXJyZW50LmFjdGl2ZVF1ZXJ5U2NoZW1hO1xuICAgICAgY29uc3QgZWZmZWN0aXZlRmlsdGVycyA9IG5hdkZpbHRlcnMgPz8gY3VycmVudC5maWx0ZXJzO1xuICAgICAgLy8gVHJlYXQgbGVnYWN5IG5hdmlnYXRlKHsgcXVlcnkgfSkgYXMgZmlsdGVycyBpbiB1bmlmaWVkIG1vZGVsIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICBjb25zdCBmaWx0ZXJzSW5wdXQgPVxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzID8/IChxdWVyeSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCk7XG4gICAgICBjb25zdCBzZWFyY2ggPSBidWlsZENvbWJpbmVkU2VhcmNoKHtcbiAgICAgICAgZmlsdGVyczogZmlsdGVyc0lucHV0LFxuICAgICAgICBmaWx0ZXJTY2hlbWEsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxvY2F0aW9uT2JqID0geyBwYXRobmFtZTogdGFyZ2V0UGF0aG5hbWUsIHNlYXJjaCwgaGFzaDogJycgfTtcbiAgICAgIGlmIChyZXBsYWNlID09PSB0cnVlKSB7XG4gICAgICAgIGhpc3Rvcnkuc2V0KGxvY2F0aW9uT2JqKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhpc3RvcnkucHVzaChsb2NhdGlvbk9iaik7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRQcmVwYXJlZChwYXRoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlbnRyeSA9IGN1cnJlbnRFbnRyeTtcbiAgICAgICAgLy8gRmluZCBsYXN0IHByZXBhcmVkIHJvdXRlIHdpdGggbWF0Y2hpbmcgcGF0aFxuICAgICAgICBmb3IgKGNvbnN0IHByIG9mIGVudHJ5LnByZXBhcmVkTWF0Y2gucm91dGVzKSB7XG4gICAgICAgICAgaWYgKHByLnBhdGggPT09IHBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBwci5wcmVwYXJlZCBhcyBhbnk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIGdldFR5cGVkUXVlcnkgcmVtb3ZlZFxuICB9O1xuXG4gIC8vIFJldHVybiBib3RoIHRoZSBjb250ZXh0IG9iamVjdCBhbmQgYSBjbGVhbnVwIGZ1bmN0aW9uXG4gIC8vIERldnRvb2xzIGV4cG9zdXJlIChkZXZlbG9wbWVudCBvbmx5KVxuICBpZiAoZGV2dG9vbHNHbG9iYWwpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICh3aW5kb3cgYXMgdW5rbm93biBhcyB7IF9fUExVTUlMRV9ST1VURVJfXz86IGFueSB9KS5fX1BMVU1JTEVfUk9VVEVSX18gPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGdldDogY29udGV4dC5nZXQsXG4gICAgICAgICAgICBzdWJzY3JpYmU6IGNvbnRleHQuc3Vic2NyaWJlLFxuICAgICAgICAgIH07XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBpZ25vcmUgKi9cbiAgICB9XG4gIH1cbiAgLy8gT3B0aW9uYWwgaW4tcGFnZSBkZXZ0b29scyBwYW5lbCAobGlnaHR3ZWlnaHQgb3ZlcmxheSlcbiAgaWYgKGRldnRvb2xzUGFuZWwpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXBsdW1pbGUtcm91dGVyLWRldnRvb2xzLXBhbmVsXScpID09IG51bGxcbiAgICAgICkge1xuICAgICAgICBjb25zdCBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGhvc3Quc2V0QXR0cmlidXRlKCdkYXRhLXBsdW1pbGUtcm91dGVyLWRldnRvb2xzLXBhbmVsJywgJycpO1xuICAgICAgICBob3N0LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICAgICAgaG9zdC5zdHlsZS56SW5kZXggPSAnMjE0NzQ4MzY0Nic7XG4gICAgICAgIGhvc3Quc3R5bGUuYm90dG9tID0gJzhweCc7XG4gICAgICAgIGhvc3Quc3R5bGUucmlnaHQgPSAnOHB4JztcbiAgICAgICAgaG9zdC5zdHlsZS5mb250RmFtaWx5ID1cbiAgICAgICAgICAndWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIG1vbm9zcGFjZSc7XG4gICAgICAgIGhvc3Quc3R5bGUuZm9udFNpemUgPSAnMTJweCc7XG4gICAgICAgIGhvc3Quc3R5bGUubGluZUhlaWdodCA9ICcxLjMnO1xuICAgICAgICBob3N0LnN0eWxlLmNvbG9yID0gJyMxMTEnO1xuICAgICAgICBob3N0LnN0eWxlLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnO1xuICAgICAgICBob3N0LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIGNvbnN0IHNoYWRvdyA9IGhvc3QuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pO1xuICAgICAgICBjb25zdCBwYW5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBwYW5lbC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ2F1dG8nO1xuICAgICAgICBwYW5lbC5zdHlsZS5taW5XaWR0aCA9ICcyNjBweCc7XG4gICAgICAgIHBhbmVsLnN0eWxlLm1heFdpZHRoID0gJzQyMHB4JztcbiAgICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gJzUwdmgnO1xuICAgICAgICBwYW5lbC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgcGFuZWwuc3R5bGUuYmFja2dyb3VuZCA9ICdyZ2JhKDI1NSwyNTUsMjU1LDAuOTUpJztcbiAgICAgICAgcGFuZWwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjY2NjJztcbiAgICAgICAgcGFuZWwuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzZweCc7XG4gICAgICAgIHBhbmVsLnN0eWxlLmJveFNoYWRvdyA9ICcwIDJweCA4cHggcmdiYSgwLDAsMCwwLjE1KSc7XG4gICAgICAgIHBhbmVsLnN0eWxlLnBhZGRpbmcgPSAnNnB4IDhweCA4cHgnO1xuICAgICAgICBwYW5lbC5zdHlsZS5iYWNrZHJvcEZpbHRlciA9ICdibHVyKDRweCknO1xuICAgICAgICBwYW5lbC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBwYW5lbC5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbic7XG4gICAgICAgIHBhbmVsLnN0eWxlLnJvd0dhcCA9ICc0cHgnO1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaGVhZGVyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIGhlYWRlci5zdHlsZS5hbGlnbkl0ZW1zID0gJ2NlbnRlcic7XG4gICAgICAgIGhlYWRlci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdzcGFjZS1iZXR3ZWVuJztcbiAgICAgICAgaGVhZGVyLnN0eWxlLmdhcCA9ICc4cHgnO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgdGl0bGUudGV4dENvbnRlbnQgPSAnUGx1bWlsZSBSb3V0ZXInO1xuICAgICAgICB0aXRsZS5zdHlsZS5mb250V2VpZ2h0ID0gJzYwMCc7XG4gICAgICAgIGNvbnN0IGJ1dHRvbnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgYnV0dG9ucy5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBidXR0b25zLnN0eWxlLmdhcCA9ICc0cHgnO1xuICAgICAgICBjb25zdCBjb2xsYXBzZUJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBjb2xsYXBzZUJ0bi50ZXh0Q29udGVudCA9ICfiiJInO1xuICAgICAgICBjb25zdCBjbG9zZUJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBjbG9zZUJ0bi50ZXh0Q29udGVudCA9ICfDlyc7XG4gICAgICAgIGNvbnN0IGJ0bnM6IEhUTUxCdXR0b25FbGVtZW50W10gPSBbY29sbGFwc2VCdG4sIGNsb3NlQnRuXTtcbiAgICAgICAgZm9yIChjb25zdCBiIG9mIGJ0bnMpIHtcbiAgICAgICAgICBiLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICAgICAgICBiLnN0eWxlLmJhY2tncm91bmQgPSAnI2VlZSc7XG4gICAgICAgICAgYi5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNjY2MnO1xuICAgICAgICAgIGIuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzRweCc7XG4gICAgICAgICAgYi5zdHlsZS5mb250U2l6ZSA9ICcxMXB4JztcbiAgICAgICAgICBiLnN0eWxlLmxpbmVIZWlnaHQgPSAnMSc7XG4gICAgICAgICAgYi5zdHlsZS5wYWRkaW5nID0gJzJweCA1cHgnO1xuICAgICAgICB9XG4gICAgICAgIGhlYWRlci5hcHBlbmRDaGlsZCh0aXRsZSk7XG4gICAgICAgIGJ1dHRvbnMuYXBwZW5kQ2hpbGQoY29sbGFwc2VCdG4pO1xuICAgICAgICBidXR0b25zLmFwcGVuZENoaWxkKGNsb3NlQnRuKTtcbiAgICAgICAgaGVhZGVyLmFwcGVuZENoaWxkKGJ1dHRvbnMpO1xuICAgICAgICBjb25zdCBwYXRoRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcGF0aEVsLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcbiAgICAgICAgY29uc3QgdmFyc0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7XG4gICAgICAgIGNvbnN0IHF1ZXJ5RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTtcbiAgICAgICAgLy8gdHlwZWQgcXVlcnkgZWxlbWVudCByZW1vdmVkXG4gICAgICAgIGNvbnN0IGZpbHRlcnNFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpO1xuICAgICAgICBjb25zdCBmaWx0ZXJEaWFnRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTtcbiAgICAgICAgLy8gVGltZWxpbmUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IHRpbWVsaW5lV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aW1lbGluZVdyYXAuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgdGltZWxpbmVXcmFwLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAnY29sdW1uJztcbiAgICAgICAgdGltZWxpbmVXcmFwLnN0eWxlLmdhcCA9ICcycHgnO1xuICAgICAgICB0aW1lbGluZVdyYXAuc3R5bGUubWFyZ2luVG9wID0gJzRweCc7XG4gICAgICAgIGNvbnN0IHRpbWVsaW5lSGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRpbWVsaW5lSGVhZGVyLnRleHRDb250ZW50ID0gJ1RpbWVsaW5lIChxdWVyeSBjaGFuZ2VzKSc7XG4gICAgICAgIHRpbWVsaW5lSGVhZGVyLnN0eWxlLmZvbnRXZWlnaHQgPSAnNjAwJztcbiAgICAgICAgdGltZWxpbmVIZWFkZXIuc3R5bGUuZm9udFNpemUgPSAnMTFweCc7XG4gICAgICAgIGNvbnN0IHRpbWVsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAnY29sdW1uLXJldmVyc2UnOyAvLyBuZXdlc3Qgb24gdG9wIHZpc3VhbGx5IHdoaWxlIGFwcGVuZGluZyBhdCBlbmQgZm9yIGNoZWFwZXIgb3BzXG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLm1heEhlaWdodCA9ICcxNDBweCc7XG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLm92ZXJmbG93WSA9ICdhdXRvJztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjZTJlMmUyJztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzRweCc7XG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZhZmJmYyc7XG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLmZvbnRGYW1pbHkgPSAnaW5oZXJpdCc7XG4gICAgICAgIHRpbWVsaW5lLnN0eWxlLmZvbnRTaXplID0gJzExcHgnO1xuICAgICAgICB0aW1lbGluZVdyYXAuYXBwZW5kQ2hpbGQodGltZWxpbmVIZWFkZXIpO1xuICAgICAgICB0aW1lbGluZVdyYXAuYXBwZW5kQ2hpbGQodGltZWxpbmUpO1xuICAgICAgICBjb25zdCBwcmVzOiBIVE1MUHJlRWxlbWVudFtdID0gW1xuICAgICAgICAgIHZhcnNFbCxcbiAgICAgICAgICBxdWVyeUVsLFxuICAgICAgICAgIGZpbHRlcnNFbCxcbiAgICAgICAgICBmaWx0ZXJEaWFnRWwsXG4gICAgICAgIF07XG4gICAgICAgIGZvciAoY29uc3QgcCBvZiBwcmVzKSB7XG4gICAgICAgICAgcC5zdHlsZS5tYXJnaW4gPSAnMCc7XG4gICAgICAgICAgcC5zdHlsZS5wYWRkaW5nID0gJzRweCc7XG4gICAgICAgICAgcC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmNmY4ZmEnO1xuICAgICAgICAgIHAuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCAjZTJlMmUyJztcbiAgICAgICAgICBwLnN0eWxlLmJvcmRlclJhZGl1cyA9ICc0cHgnO1xuICAgICAgICAgIHAuc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8nO1xuICAgICAgICAgIHAuc3R5bGUubWF4SGVpZ2h0ID0gJzE2MHB4JztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzbWFsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBzbWFsbC5zdHlsZS5mb250U2l6ZSA9ICcxMHB4JztcbiAgICAgICAgc21hbGwuc3R5bGUub3BhY2l0eSA9ICcwLjcnO1xuICAgICAgICBzbWFsbC50ZXh0Q29udGVudCA9IGBTaG9ydGN1dDogJHtkZXZ0b29sc1Nob3J0Y3V0fWA7XG4gICAgICAgIHBhbmVsLmFwcGVuZENoaWxkKGhlYWRlcik7XG4gICAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHBhdGhFbCk7XG4gICAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHZhcnNFbCk7XG4gICAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHF1ZXJ5RWwpO1xuICAgICAgICAvLyB0eXBlZEVsIHJlbW92ZWRcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQodGltZWxpbmVXcmFwKTtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQoZmlsdGVyc0VsKTtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQoZmlsdGVyRGlhZ0VsKTtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQoc21hbGwpO1xuICAgICAgICBzaGFkb3cuYXBwZW5kQ2hpbGQocGFuZWwpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpO1xuICAgICAgICBsZXQgY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIGNvbGxhcHNlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIGNvbGxhcHNlZCA9ICFjb2xsYXBzZWQ7XG4gICAgICAgICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gJzI0cHgnO1xuICAgICAgICAgICAgcGFuZWwuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIGNvbGxhcHNlQnRuLnRleHRDb250ZW50ID0gJysnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSAnNTB2aCc7XG4gICAgICAgICAgICBwYW5lbC5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIGNvbGxhcHNlQnRuLnRleHRDb250ZW50ID0gJ+KIkic7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IHVuc3ViOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNsb3NlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIGhvc3QucmVtb3ZlKCk7XG4gICAgICAgICAgaWYgKHR5cGVvZiB1bnN1YiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdW5zdWIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvKiogVXBkYXRlIHBhbmVsIGNvbnRlbnQgZnJvbSBjdXJyZW50IHJvdXRlIGVudHJ5ICovXG4gICAgICAgIC8vIEtlZXAgbGFzdCBxdWVyeSBzbmFwc2hvdCBmb3IgZGlmZlxuICAgICAgICBsZXQgbGFzdFF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGxhc3RTZWFyY2g6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbXB1dGUgZGlmZiBjbGFzc2lmaWNhdGlvbiBiZXR3ZWVuIHR3byBxdWVyeSBvYmplY3RzLlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZGlmZlF1ZXJpZXMoXG4gICAgICAgICAgcHJldjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgICAgICAgbmV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICk6IHtcbiAgICAgICAgICBhZGRlZDogc3RyaW5nW107XG4gICAgICAgICAgcmVtb3ZlZDogc3RyaW5nW107XG4gICAgICAgICAgY2hhbmdlZDogc3RyaW5nW107XG4gICAgICAgICAgdW5jaGFuZ2VkOiBzdHJpbmdbXTtcbiAgICAgICAgfSB7XG4gICAgICAgICAgY29uc3QgYWRkZWQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgY29uc3QgcmVtb3ZlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICBjb25zdCBjaGFuZ2VkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IHVuY2hhbmdlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICBjb25zdCBwcmV2S2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMocHJldiA/PyB7fSkpO1xuICAgICAgICAgIGNvbnN0IG5leHRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhuZXh0KSk7XG4gICAgICAgICAgbmV4dEtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgaWYgKCFwcmV2S2V5cy5oYXMoaykpIHtcbiAgICAgICAgICAgICAgYWRkZWQucHVzaChrKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHB2OiB1bmtub3duO1xuICAgICAgICAgICAgaWYgKHByZXYgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyBwcmV2IGlzIGEgcGxhaW4gcmVjb3JkOyBkaXJlY3QgaW5kZXggKHJ1bnRpbWUgc2FmZSlcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICAgICAgICBwdiA9IChwcmV2IGFzIGFueSlba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBudiA9IG5leHRba107XG4gICAgICAgICAgICBsZXQgc2FtZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHYpICYmIEFycmF5LmlzQXJyYXkobnYpKSB7XG4gICAgICAgICAgICAgIGlmIChwdi5sZW5ndGggPT09IChudiBhcyB1bmtub3duW10pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNhbWUgPSBwdi5ldmVyeSgodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHYgPT09IChudiBhcyB1bmtub3duW10pW2ldO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzYW1lID0gcHYgPT09IG52O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNhbWUpIHtcbiAgICAgICAgICAgICAgdW5jaGFuZ2VkLnB1c2goayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaGFuZ2VkLnB1c2goayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2S2V5cy5kZWxldGUoayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJldktleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGspO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB7IGFkZGVkLCByZW1vdmVkLCBjaGFuZ2VkLCB1bmNoYW5nZWQgfTtcbiAgICAgICAgfVxuICAgICAgICAvKiogVXBkYXRlIHBhbmVsIGNvbnRlbnQgYW5kIG1heWJlIHB1c2ggdGltZWxpbmUgZW50cnkgKi9cbiAgICAgICAgZnVuY3Rpb24gcmVuZGVyKCk6IHZvaWQge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGNvbnRleHQuZ2V0KCk7XG4gICAgICAgICAgICBwYXRoRWwudGV4dENvbnRlbnQgPSBgJHtlbnRyeS5sb2NhdGlvbi5wYXRobmFtZX0ke2VudHJ5LmxvY2F0aW9uLnNlYXJjaH1gO1xuICAgICAgICAgICAgY29uc3QgdmFyc0pzb24gPSBKU09OLnN0cmluZ2lmeShlbnRyeS5yb3V0ZT8ucGFyYW1zID8/IHt9LCBudWxsLCAyKTtcbiAgICAgICAgICAgIHZhcnNFbC50ZXh0Q29udGVudCA9IGB2YXJzOiAke3ZhcnNKc29ufWA7XG4gICAgICAgICAgICBjb25zdCByYXdKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50cnkucXVlcnksIG51bGwsIDIpO1xuICAgICAgICAgICAgcXVlcnlFbC50ZXh0Q29udGVudCA9IGByYXc6ICAke3Jhd0pzb259YDtcbiAgICAgICAgICAgIC8vIHR5cGVkIHF1ZXJ5IHJlbW92ZWRcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnNKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50cnkuZmlsdGVycywgbnVsbCwgMik7XG4gICAgICAgICAgICBmaWx0ZXJzRWwudGV4dENvbnRlbnQgPSBgZmlsdGVyczoke2ZpbHRlcnNKc29ufWA7XG4gICAgICAgICAgICBjb25zdCBkaWFnID0gZW50cnkuZmlsdGVyRGlhZ25vc3RpY3MgPz8gW107XG4gICAgICAgICAgICBmaWx0ZXJEaWFnRWwudGV4dENvbnRlbnQgPSBgZmlsdGVyRGlhZ25vc3RpY3M6ICR7ZGlhZy5sZW5ndGh9YDtcbiAgICAgICAgICAgIC8vIFRpbWVsaW5lIGxvZyBpZiBxdWVyeSBzZWFyY2ggY2hhbmdlZFxuICAgICAgICAgICAgaWYgKGVudHJ5LnJhd1NlYXJjaCAhPT0gbGFzdFNlYXJjaCkge1xuICAgICAgICAgICAgICBjb25zdCBub3dRdWVyeSA9IGVudHJ5LnF1ZXJ5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgICAgICBjb25zdCBkaWZmID0gZGlmZlF1ZXJpZXMobGFzdFF1ZXJ5LCBub3dRdWVyeSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICByb3cuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgICAgICAgcm93LnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAnY29sdW1uJztcbiAgICAgICAgICAgICAgcm93LnN0eWxlLmJvcmRlckJvdHRvbSA9ICcxcHggc29saWQgI2U5ZTllOSc7XG4gICAgICAgICAgICAgIHJvdy5zdHlsZS5wYWRkaW5nID0gJzNweCA0cHgnO1xuICAgICAgICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgIGhlYWQuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgICAgICAgaGVhZC5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdzcGFjZS1iZXR3ZWVuJztcbiAgICAgICAgICAgICAgY29uc3QgdHMgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICAgICAgICBsZXQgc2VhcmNoRGlzcGxheSA9ICcoZW1wdHkpJztcbiAgICAgICAgICAgICAgaWYgKGVudHJ5LmxvY2F0aW9uLnNlYXJjaCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZWFyY2hEaXNwbGF5ID0gZW50cnkubG9jYXRpb24uc2VhcmNoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGhlYWQuaW5uZXJIVE1MID0gYDxzdHJvbmc+JHt0c308L3N0cm9uZz4gPGNvZGUgc3R5bGU9XCJiYWNrZ3JvdW5kOiNlZWU7cGFkZGluZzoxcHggM3B4O2JvcmRlci1yYWRpdXM6M3B4O1wiPiR7c2VhcmNoRGlzcGxheX08L2NvZGU+YDtcbiAgICAgICAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICBib2R5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICAgIGJvZHkuc3R5bGUuZmxleFdyYXAgPSAnd3JhcCc7XG4gICAgICAgICAgICAgIGJvZHkuc3R5bGUuZ2FwID0gJzRweCc7XG4gICAgICAgICAgICAgIC8qKiBDcmVhdGUgYSBjb2xvcmVkIHBpbGwgZWxlbWVudCAqL1xuICAgICAgICAgICAgICBmdW5jdGlvbiBwaWxsKFxuICAgICAgICAgICAgICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAga2luZDogJ2FkZGVkJyB8ICdyZW1vdmVkJyB8ICdjaGFuZ2VkJyB8ICd1bmNoYW5nZWQnLFxuICAgICAgICAgICAgICApOiBIVE1MU3BhbkVsZW1lbnQge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUucGFkZGluZyA9ICcxcHggNHB4JztcbiAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJvcmRlclJhZGl1cyA9ICcxMHB4JztcbiAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmZvbnRTaXplID0gJzEwcHgnO1xuICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCc7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZCA9ICcjZTZmZmVkJztcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5ib3JkZXJDb2xvciA9ICcjMmNiZTRlJztcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5jb2xvciA9ICcjMjI4NjNhJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdyZW1vdmVkJzpcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmVlZjAnO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJvcmRlckNvbG9yID0gJyNkNzNhNDknO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmNvbG9yID0gJyNjYjI0MzEnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2NoYW5nZWQnOlxuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZjViMSc7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IgPSAnI2ZmZDMzZCc7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuY29sb3IgPSAnIzczNWMwZic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSAndW5jaGFuZ2VkJzpcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gJyNmMWY4ZmYnO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJvcmRlckNvbG9yID0gJyM3OWI4ZmYnO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmNvbG9yID0gJyMwMzY2ZDYnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBleGhhdXN0aXZlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzcGFuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkaWZmLmFkZGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBib2R5LmFwcGVuZChcbiAgICAgICAgICAgICAgICAgIC4uLmRpZmYuYWRkZWQubWFwKChrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWxsKGArJHtrfWAsICdhZGRlZCcpO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZGlmZi5jaGFuZ2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBib2R5LmFwcGVuZChcbiAgICAgICAgICAgICAgICAgIC4uLmRpZmYuY2hhbmdlZC5tYXAoKGspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpbGwoYH4ke2t9YCwgJ2NoYW5nZWQnKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGRpZmYucmVtb3ZlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYm9keS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAuLi5kaWZmLnJlbW92ZWQubWFwKChrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWxsKGAtJHtrfWAsICdyZW1vdmVkJyk7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG5vQWRkcyA9IGRpZmYuYWRkZWQubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgICBjb25zdCBub0NoYW5nZXMgPSBkaWZmLmNoYW5nZWQubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgICBjb25zdCBub1JlbW92YWxzID0gZGlmZi5yZW1vdmVkLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgICAgaWYgKG5vQWRkcyAmJiBub0NoYW5nZXMgJiYgbm9SZW1vdmFscykge1xuICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kKHBpbGwoJ25vLWNoYW5nZScsICd1bmNoYW5nZWQnKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGhlYWQpO1xuICAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoYm9keSk7XG4gICAgICAgICAgICAgIHRpbWVsaW5lLmFwcGVuZENoaWxkKHJvdyk7XG4gICAgICAgICAgICAgIGlmICh0aW1lbGluZS5jaGlsZEVsZW1lbnRDb3VudCA+IDUwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSB0aW1lbGluZS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgdGltZWxpbmUucmVtb3ZlQ2hpbGQoZmlyc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYXN0UXVlcnkgPSBub3dRdWVyeTtcbiAgICAgICAgICAgICAgbGFzdFNlYXJjaCA9IGVudHJ5LnJhd1NlYXJjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8qIGlnbm9yZSAqL1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKTtcbiAgICAgICAgdW5zdWIgPSBjb250ZXh0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgcmVuZGVyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldikgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGlmIChldi5hbHRLZXkpIHBhcnRzLnB1c2goJ0FsdCcpO1xuICAgICAgICAgICAgaWYgKGV2LnNoaWZ0S2V5KSBwYXJ0cy5wdXNoKCdTaGlmdCcpO1xuICAgICAgICAgICAgaWYgKGV2LmN0cmxLZXkpIHBhcnRzLnB1c2goJ0N0cmwnKTtcbiAgICAgICAgICAgIGxldCBrZXlQYXJ0ID0gZXYua2V5O1xuICAgICAgICAgICAgaWYgKGV2LmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAga2V5UGFydCA9IGV2LmtleS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHMucHVzaChrZXlQYXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbWJvID0gcGFydHMuam9pbignKycpO1xuICAgICAgICAgICAgaWYgKGNvbWJvID09PSBkZXZ0b29sc1Nob3J0Y3V0LnJlcGxhY2UoL1xccysvZywgJycpKSB7XG4gICAgICAgICAgICAgIGlmIChob3N0LnN0eWxlLmRpc3BsYXkgPT09ICdub25lJykge1xuICAgICAgICAgICAgICAgIGhvc3Quc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvKiBpZ25vcmUgKi9cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLyogaWdub3JlICovXG4gICAgfVxuICB9XG4gIHJldHVybiB7IGNsZWFudXAsIGNvbnRleHQgfSBhcyBDcmVhdGVSb3V0ZXJSZXR1cm48YW55Pjtcbn1cbiJdfQ==
|
|
633
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLElBQUksWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUF1RDlELE1BQU0sQ0FBQyxPQUFPLFVBQVUsWUFBWSxDQUNsQyxNQUEyQixFQUMzQixPQUlJLEVBQUU7SUFHTixJQUFJLGNBQXVCLENBQUM7SUFDNUIsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzFCLElBQUksZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0lBQ3JDLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQztnQkFDSCxPQUFPLENBQ0wsT0FBTyxPQUFPLEtBQUssV0FBVztvQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUN0QyxDQUFDO1lBQ0osQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQztRQUNyRCxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FB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TSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7NEJBQ25ELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7Z0NBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQzs0QkFDL0IsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQzs0QkFDOUIsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7b0JBQUMsTUFBTSxDQUFDO29CQUVULENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztRQUVULENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQTZCLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWxkUm91dGVzIH0gZnJvbSAnLi4vYnVpbGRlci5qcyc7XG5pbXBvcnQgeyBCcm93c2VySGlzdG9yeSB9IGZyb20gJy4uL2hpc3RvcnkvaW5kZXguanMnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hlZFJvdXRlLCBwcmVwYXJlTWF0Y2ggfSBmcm9tICcuLi90b29scy5qcyc7XG5pbXBvcnQgeyBwYXJzZVJhd1F1ZXJ5IH0gZnJvbSAnLi4vdG9vbHMvcXVlcnkuanMnO1xuaW1wb3J0IGJ1aWxkQ29tYmluZWRTZWFyY2ggZnJvbSAnLi4vdG9vbHMvYnVpbGRDb21iaW5lZFNlYXJjaC5qcyc7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZUZpbHRlcnMgfSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnknO1xuaW1wb3J0IHR5cGUge1xuICBSb3V0ZUVudHJ5LFxuICBSb3V0aW5nQ29udGV4dFR5cGUsXG4gIFN1YnNjcmliZUNhbGxiYWNrLFxuICBBbnlSb3V0ZSxcbiAgUHJlcGFyZWRBY2Nlc3MsXG4gIE5hdmlnYXRlT3ZlcmxvYWRzLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZm9yIHRoZSBjcmVhdGVSb3V0ZXIgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVJvdXRlclJldHVybjxSIGV4dGVuZHMgQW55Um91dGVbXT4gPSB7XG4gIC8qKiBGdW5jdGlvbiB0byBjbGVhbiB1cCByb3V0ZXIgbGlzdGVuZXJzIGFuZCByZXNvdXJjZXMgKi9cbiAgY2xlYW51cDogKCkgPT4gdm9pZDtcbiAgLyoqIFJvdXRlciBjb250ZXh0IG9iamVjdCBmb3IgdGhlIFJlYWN0IENvbnRleHQgUHJvdmlkZXIgKi9cbiAgY29udGV4dDogUm91dGluZ0NvbnRleHRUeXBlPGFueT4gJiBQcmVwYXJlZEFjY2VzczxSPjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBsZXRlIHJvdXRlciBzeXN0ZW0gZnJvbSByb3V0ZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBUaGlzIHJvdXRlciBpcyBidWlsdCBmcm9tIHRoZSBzYW1lIHByaW1pdGl2ZXMgYXMgcmVhY3Qtcm91dGVyIGJ1dCB3aXRoIGFkZGl0aW9uYWxcbiAqIGZlYXR1cmVzIGZvciBkYXRhIHByZWxvYWRpbmcgYW5kIGNvZGUgc3BsaXR0aW5nLiBFYWNoIHJvdXRlIGNhbiBjb250YWluIGJvdGggYVxuICogQ29tcG9uZW50IGFuZCBhIHByZXBhcmUoKSBmdW5jdGlvbiB0aGF0IGNhbiBwcmVsb2FkIGRhdGEgZm9yIHRoZSBjb21wb25lbnQuXG4gKlxuICogVGhlIHJvdXRlciB3YXRjaGVzIGZvciBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IGxvY2F0aW9uIHZpYSB0aGUgSFRNTDUgSGlzdG9yeSBBUEksXG4gKiBtYXBzIHRoZSBsb2NhdGlvbiB0byB0aGUgY29ycmVzcG9uZGluZyByb3V0ZSBlbnRyeSwgYW5kIHRoZW4gcHJlbG9hZHMgdGhlIGNvZGVcbiAqIGFuZCBkYXRhIGZvciB0aGUgcm91dGUgYmVmb3JlIHJlbmRlcmluZy5cbiAqXG4gKiBAcGFyYW0gcm91dGVzIC0gQXJyYXkgb2Ygcm91dGUgY29uZmlndXJhdGlvbnNcbiAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHRoZSByb3V0ZXIgY29udGV4dCBhbmQgY2xlYW51cCBmdW5jdGlvblxuICpcbiAgcHJlcGFyZWRNYXRjaDogcHJlcGFyZU1hdGNoKHJvdXRlLCBwYXJzZVJhd1F1ZXJ5KGhpc3RvcnkubG9jYXRpb24uc2VhcmNoKSksXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByb3V0ZXMgPSBbXG4gKiAgIHtcbiAqICAgICBwYXRoOiAnL3VzZXJzLzppZCcsXG4gKiAgICAgcmVzb3VyY2VQYWdlOiBnZXRSZXNvdXJjZVBhZ2UoJ1VzZXJQcm9maWxlJywgKCkgPT4gaW1wb3J0KCcuL1VzZXJQcm9maWxlJykpLFxuICogICAgIHByZXBhcmU6ICh7IHZhcmlhYmxlcyB9KSA9PiAoeyB1c2VySWQ6IHZhcmlhYmxlcy5pZCB9KVxuICogICB9XG4gKiBdO1xuICpcbiAqIGNvbnN0IHsgY29udGV4dCwgY2xlYW51cCB9ID0gY3JlYXRlUm91dGVyKHJvdXRlcyk7XG4gKlxuICogLy8gVXNlIGluIFJlYWN0IGFwcFxuICogPFJvdXRpbmdDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0fT5cbiAqICAgPFJvdXRlclJlbmRlcmVyIC8+XG4gKiA8L1JvdXRpbmdDb250ZXh0LlByb3ZpZGVyPlxuICogYGBgXG4gKi9cbi8qKlxuICogQ3JlYXRlIGEgcm91dGVyICh0eXBlZCBvdmVybG9hZCkuIFdoZW4gY2FsbGVkIHdpdGggYSBjb25zdCB0dXBsZSBvZiByb3V0ZXMsIGdlbmVyaWNzIGFyZSBwcmVzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlcjxSIGV4dGVuZHMgQW55Um91dGVbXT4oXG4gIHJvdXRlczogWy4uLlJdIHwgQW55Um91dGVbXSxcbiAgb3B0czoge1xuICAgIGRldnRvb2xzPzpcbiAgICAgIHwgYm9vbGVhblxuICAgICAgfCB7IGdsb2JhbD86IGJvb2xlYW47IHBhbmVsPzogYm9vbGVhbjsgc2hvcnRjdXQ/OiBzdHJpbmcgfTtcbiAgfSA9IHt9LFxuKTogQ3JlYXRlUm91dGVyUmV0dXJuPFIgZXh0ZW5kcyBBbnlSb3V0ZVtdID8gUiA6IEFueVJvdXRlW10+IHtcbiAgLy8gTm9ybWFsaXplIGRldnRvb2xzIG9wdGlvbnMgbWFpbnRhaW5pbmcgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgbGV0IGRldnRvb2xzR2xvYmFsOiBib29sZWFuO1xuICBsZXQgZGV2dG9vbHNQYW5lbCA9IGZhbHNlO1xuICBsZXQgZGV2dG9vbHNTaG9ydGN1dCA9ICdBbHQrU2hpZnQrUic7XG4gIGlmICh0eXBlb2Ygb3B0cy5kZXZ0b29scyA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBiYXNlRW5hYmxlZCA9ICgoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgICBkZXZ0b29sc0dsb2JhbCA9IG9wdHMuZGV2dG9vbHMuZ2xvYmFsID8/IGJhc2VFbmFibGVkO1xuICAgIGRldnRvb2xzUGFuZWwgPSAhIW9wdHMuZGV2dG9vbHMucGFuZWw7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG9wdHMuZGV2dG9vbHMuc2hvcnRjdXQgPT09ICdzdHJpbmcnICYmXG4gICAgICBvcHRzLmRldnRvb2xzLnNob3J0Y3V0LnRyaW0oKSAhPT0gJydcbiAgICApIHtcbiAgICAgIGRldnRvb2xzU2hvcnRjdXQgPSBvcHRzLmRldnRvb2xzLnNob3J0Y3V0O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBib29sZWFuIG9yIHVuZGVmaW5lZFxuICAgIGNvbnN0IGVuYWJsZWQgPSAoKCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvcHRzLmRldnRvb2xzID09PSAnYm9vbGVhbicpIHJldHVybiBvcHRzLmRldnRvb2xzO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pKCk7XG4gICAgZGV2dG9vbHNHbG9iYWwgPSBlbmFibGVkO1xuICB9XG4gIC8vIEluaXRpYWxpemUgYnJvd3NlciBoaXN0b3J5IG1hbmFnZXJcbiAgY29uc3QgaGlzdG9yeSA9IG5ldyBCcm93c2VySGlzdG9yeSgpO1xuXG4gIC8vIEJ1aWxkIGEgZmxhdCBsaXN0IG9mIHJvdXRlcyBmb3IgZWZmaWNpZW50IG1hdGNoaW5nXG4gIGNvbnN0IGZsYXRSb3V0ZXMgPSBidWlsZFJvdXRlcyhyb3V0ZXMpO1xuXG4gIC8vIEZpbmQgdGhlIGluaXRpYWwgcm91dGUgbWF0Y2ggYW5kIHByZXBhcmUgaXQgZm9yIHJlbmRlcmluZ1xuICBjb25zdCByb3V0ZSA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgY29uc3QgaW5pdGlhbFJhd1F1ZXJ5ID0gcGFyc2VSYXdRdWVyeShoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCk7XG4gIC8vIERldGVybWluZSB1bmlmaWVkIHNjaGVtYSAocXVlcnlTY2hlbWEpIGZyb20gZGVlcGVzdCByb3V0ZVxuICBsZXQgaW5pdGlhbFVuaWZpZWRTY2hlbWE6IGFueTtcbiAgaWYgKHJvdXRlICE9IG51bGwpIHtcbiAgICBjb25zdCBjb2xsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCByIG9mIHJvdXRlLnJvdXRlLnJvdXRlcykge1xuICAgICAgY29uc3QgbWF5YmUgPSAociBhcyB1bmtub3duIGFzIHsgcXVlcnlTY2hlbWE/OiB1bmtub3duIH0pLnF1ZXJ5U2NoZW1hO1xuICAgICAgaWYgKG1heWJlICE9IG51bGwpIGNvbGxlY3RlZC5wdXNoKG1heWJlKTtcbiAgICB9XG4gICAgaWYgKGNvbGxlY3RlZC5sZW5ndGggPiAwKSBpbml0aWFsVW5pZmllZFNjaGVtYSA9IGNvbGxlY3RlZC5hdCgtMSk7XG4gIH1cbiAgbGV0IGluaXRpYWxGaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgbGV0IGluaXRpYWxGaWx0ZXJEaWFnbm9zdGljczogYW55W10gfCB1bmRlZmluZWQ7XG4gIGlmIChpbml0aWFsVW5pZmllZFNjaGVtYSAhPSBudWxsKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VGaWx0ZXJzKGhpc3RvcnkubG9jYXRpb24uc2VhcmNoLCBpbml0aWFsVW5pZmllZFNjaGVtYSk7XG4gICAgaW5pdGlhbEZpbHRlcnMgPSBwYXJzZWQuZmlsdGVycyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGluaXRpYWxGaWx0ZXJEaWFnbm9zdGljcyA9IHBhcnNlZC5kaWFnbm9zdGljcyBhcyB1bmtub3duW107XG4gIH1cbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChyb3V0ZSwgaW5pdGlhbEZpbHRlcnMpO1xuICAvLyBIZWxwZXIgdG8gYnVpbGQgdGhlIHJhdyBxdWVyeSBvYmplY3QgZnJvbSBhIHNlYXJjaCBzdHJpbmdcbiAgbGV0IGN1cnJlbnRFbnRyeTogUm91dGVFbnRyeTxhbnk+ID0ge1xuICAgIGZvcmNlUmVyZW5kZXI6IGZhbHNlLFxuICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLFxuICAgIHJvdXRlLFxuICAgIHByZXBhcmVkTWF0Y2gsXG4gICAgcmF3U2VhcmNoOiBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCxcbiAgICBxdWVyeTogaW5pdGlhbFJhd1F1ZXJ5LFxuICAgIC8vIHR5cGVkUXVlcnkgcmVtb3ZlZCAodW5pZmllZCBpbnRvIGZpbHRlcnMvcXVlcnkpXG4gICAgZmlsdGVyczogaW5pdGlhbEZpbHRlcnMsXG4gICAgZmlsdGVyRGlhZ25vc3RpY3M6IGluaXRpYWxGaWx0ZXJEaWFnbm9zdGljcyxcbiAgICBhY3RpdmVRdWVyeVNjaGVtYTogaW5pdGlhbFVuaWZpZWRTY2hlbWEsXG4gIH07XG5cbiAgLy8gSW5pdGlhbCBub3JtYWxpemF0aW9uIHBhc3MgKGUuZy4sIGNsYW1wIHBhZ2UpXG4gIGNvbnN0IGluaXRUeXBlZCA9IGN1cnJlbnRFbnRyeS5maWx0ZXJzIGFzIHVua25vd24gYXNcbiAgICB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgfCB1bmRlZmluZWQ7XG4gIGxldCBpbml0UGFnZU51bWVyaWM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaWYgKGluaXRUeXBlZCAhPSBudWxsKSB7XG4gICAgY29uc3QgcmF3UGFnZSA9IGluaXRUeXBlZC5wYWdlO1xuICAgIGlmICh0eXBlb2YgcmF3UGFnZSA9PT0gJ251bWJlcicpIGluaXRQYWdlTnVtZXJpYyA9IHJhd1BhZ2U7XG4gICAgZWxzZSBpZiAoXG4gICAgICByYXdQYWdlICE9IG51bGwgJiZcbiAgICAgIHR5cGVvZiByYXdQYWdlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkocmF3UGFnZSkgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyYXdQYWdlLCAnZXEnKSAmJlxuICAgICAgdHlwZW9mIChyYXdQYWdlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5lcSA9PT0gJ251bWJlcidcbiAgICApIHtcbiAgICAgIGluaXRQYWdlTnVtZXJpYyA9IChyYXdQYWdlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5lcSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG4gIGlmIChcbiAgICB0eXBlb2YgaW5pdFBhZ2VOdW1lcmljID09PSAnbnVtYmVyJyAmJlxuICAgIGluaXRQYWdlTnVtZXJpYyA8IDEgJiZcbiAgICBpbml0aWFsVW5pZmllZFNjaGVtYSAhPSBudWxsICYmXG4gICAgaW5pdFR5cGVkICE9IG51bGxcbiAgKSB7XG4gICAgY29uc3Qgbm9ybSA9IHsgLi4uaW5pdFR5cGVkLCBwYWdlOiB7IGVxOiAxIH0gfSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjdXJyZW50RW50cnkuZmlsdGVycyA9IG5vcm07IC8vIGltbWVkaWF0ZSB2aXNpYmlsaXR5XG4gICAgY29uc3Qgbm9ybWFsaXplZFNlYXJjaCA9IGJ1aWxkQ29tYmluZWRTZWFyY2goe1xuICAgICAgZmlsdGVyczogbm9ybSxcbiAgICAgIHF1ZXJ5U2NoZW1hOiBpbml0aWFsVW5pZmllZFNjaGVtYSxcbiAgICB9KTsgLy8gcmV0dXJucyAnJyBvciBzdHJpbmcgc3RhcnRpbmcgd2l0aCAnPydcbiAgICBpZiAobm9ybWFsaXplZFNlYXJjaCAhPT0gaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gpIHtcbiAgICAgIGhpc3Rvcnkuc2V0KHtcbiAgICAgICAgcGF0aG5hbWU6IGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaDogbm9ybWFsaXplZFNlYXJjaCxcbiAgICAgICAgaGFzaDogJycsXG4gICAgICB9KTtcbiAgICAgIC8vIFVwZGF0ZSBjdXJyZW50RW50cnkubG9jYXRpb24gdG8gcmVmbGVjdCBuZXcgc2VhcmNoIGRpcmVjdGx5IChoaXN0b3J5LnNldCB0cmlnZ2VycyBhc3luYyBzdWJzY3JpYmVyKVxuICAgICAgY3VycmVudEVudHJ5ID0ge1xuICAgICAgICAuLi5jdXJyZW50RW50cnksXG4gICAgICAgIGxvY2F0aW9uOiB7IC4uLmN1cnJlbnRFbnRyeS5sb2NhdGlvbiwgc2VhcmNoOiBub3JtYWxpemVkU2VhcmNoIH0sXG4gICAgICAgIHJhd1NlYXJjaDogbm9ybWFsaXplZFNlYXJjaCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gTWFpbnRhaW4gYSBzZXQgb2Ygc3Vic2NyaWJlcnMgdG8gdGhlIGFjdGl2ZSByb3V0ZSBlbnRyeVxuICBsZXQgbmV4dElkID0gMDtcbiAgY29uc3Qgc3Vic2NyaWJlcnMgPSBuZXcgTWFwPG51bWJlciwgU3Vic2NyaWJlQ2FsbGJhY2s8YW55Pj4oKTtcblxuICAvLyBMaXN0ZW4gZm9yIGxvY2F0aW9uIGNoYW5nZXMsIG1hdGNoIHRvIHRoZSByb3V0ZSBlbnRyeSwgcHJlcGFyZSB0aGUgZW50cnksXG4gIC8vIGFuZCBub3RpZnkgc3Vic2NyaWJlcnMuIFRoaXMgcGF0dGVybiBlbnN1cmVzIHRoYXQgZGF0YS1sb2FkaW5nXG4gIC8vIG9jY3VycyAqb3V0c2lkZSogb2YgLSBhbmQgKmJlZm9yZSogLSByZW5kZXJpbmcuXG4gIGNvbnN0IGNsZWFudXAgPSBoaXN0b3J5LnN1YnNjcmliZSgobG9jYXRpb24sIGZvcmNlUmVyZW5kZXIpID0+IHtcbiAgICBjb25zdCBzYW1lUGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZSA9PT0gY3VycmVudEVudHJ5LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIGNvbnN0IHNhbWVTZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2ggPT09IGN1cnJlbnRFbnRyeS5yYXdTZWFyY2g7XG5cbiAgICBpZiAoIWZvcmNlUmVyZW5kZXIgJiYgc2FtZVBhdGhuYW1lICYmIHNhbWVTZWFyY2gpIHtcbiAgICAgIC8vIE5vdGhpbmcgY2hhbmdlZCB0aGF0IHdlIGNhcmUgYWJvdXRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBvbmx5IHRoZSBzZWFyY2ggY2hhbmdlZCB3ZSBzdGlsbCB3YW50IHRvIHByb3BhZ2F0ZSB0aGUgY2hhbmdlLlxuICAgIC8vIEtlZXAgdGhlIGV4aXN0aW5nIHByZXBhcmVkTWF0Y2ggd2hlbiBwYXRobmFtZSBpcyBpZGVudGljYWwgdG8gYXZvaWQgcmVkdW5kYW50IHdvcmsuXG4gICAgbGV0IG5leHRQcmVwYXJlZE1hdGNoID0gY3VycmVudEVudHJ5LnByZXBhcmVkTWF0Y2g7XG4gICAgbGV0IG5leHRSb3V0ZSA9IGN1cnJlbnRFbnRyeS5yb3V0ZTtcblxuICAgIGlmICghc2FtZVBhdGhuYW1lKSB7XG4gICAgICAvLyBQYXRoIGNoYW5nZWQ6IHJlY29tcHV0ZSBtYXRjaCArIHByZXBhcmVkIGRhdGEgaW5jbHVkaW5nIHF1ZXJ5XG4gICAgICBuZXh0Um91dGUgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywgaGlzdG9yeS5sb2NhdGlvbik7XG4gICAgICAvLyB3ZSB3aWxsIHNldCBiZWxvdyBhZnRlciBjb21wdXRpbmcgdHlwZWQgcXVlcnlcbiAgICB9XG5cbiAgICAvLyBCdWlsZCByYXcgcXVlcnkgb2JqZWN0IChiYXNpYyBhZ2dyZWdhdGlvbikgZnJvbSBsb2NhdGlvbi5zZWFyY2hcbiAgICBjb25zdCBxdWVyeSA9IHBhcnNlUmF3UXVlcnkobG9jYXRpb24uc2VhcmNoKTtcbiAgICAvLyBEZXRlcm1pbmUgc2NoZW1hIGZyb20gZGVlcGVzdCBtYXRjaGVkIHJvdXRlXG4gICAgbGV0IHF1ZXJ5U2NoZW1hOiBhbnk7XG4gICAgaWYgKG5leHRSb3V0ZSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjb2xsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHIgb2YgbmV4dFJvdXRlLnJvdXRlLnJvdXRlcykge1xuICAgICAgICBjb25zdCBtYXliZUYgPSAociBhcyB1bmtub3duIGFzIHsgcXVlcnlTY2hlbWE/OiB1bmtub3duIH0pLnF1ZXJ5U2NoZW1hO1xuICAgICAgICBpZiAobWF5YmVGICE9IG51bGwpIGNvbGxlY3RlZC5wdXNoKG1heWJlRik7XG4gICAgICB9XG4gICAgICBpZiAoY29sbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcXVlcnlTY2hlbWEgPSBjb2xsZWN0ZWQuYXQoLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSB1bmlmaWVkIGZpbHRlcnNcbiAgICBsZXQgZmlsdGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZpbHRlckRpYWdub3N0aWNzOiBhbnlbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAocXVlcnlTY2hlbWEgIT0gbnVsbCkge1xuICAgICAgY29uc3QgcGFyc2VkRiA9IHBhcnNlRmlsdGVycyhsb2NhdGlvbi5zZWFyY2gsIHF1ZXJ5U2NoZW1hKTtcbiAgICAgIGZpbHRlcnMgPSBwYXJzZWRGLmZpbHRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgIGZpbHRlckRpYWdub3N0aWNzID0gcGFyc2VkRi5kaWFnbm9zdGljcyBhcyB1bmtub3duW107XG4gICAgfVxuICAgIC8vIE5vcm1hbGl6YXRpb246IGNsYW1wIHBhZ2UgPj0gMSBpZiBudW1lcmljIHBhZ2UgcHJlc2VudFxuICAgIGxldCBub3JtYWxpemVkID0gZmFsc2U7XG4gICAgbGV0IHBnOiB1bmtub3duO1xuICAgIGlmIChmaWx0ZXJzICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gZmlsdGVycztcbiAgICAgIGNvbnN0IG1heWJlID0gZi5wYWdlO1xuICAgICAgaWYgKFxuICAgICAgICBtYXliZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiBtYXliZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgIUFycmF5LmlzQXJyYXkobWF5YmUpICYmXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtYXliZSwgJ2VxJylcbiAgICAgICkge1xuICAgICAgICBwZyA9IChtYXliZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuZXE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZyA9IG1heWJlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHBnID09PSAnbnVtYmVyJyAmJiBwZyA8IDEpIHtcbiAgICAgIGNvbnN0IGNsb25lID0geyAuLi4oZmlsdGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KSwgcGFnZTogeyBlcTogMSB9IH07XG4gICAgICBmaWx0ZXJzID0gY2xvbmU7XG4gICAgICBub3JtYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJZiBvbmx5IHRoZSBzZWFyY2ggY2hhbmdlZCAoc2FtZSBwYXRobmFtZSkgd2Ugc3RpbGwgbmVlZCB0byByZS1ydW4gcHJlcGFyZVxuICAgIGlmICghc2FtZVBhdGhuYW1lIHx8ICFzYW1lU2VhcmNoKSB7XG4gICAgICBuZXh0UHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChuZXh0Um91dGUsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dEVudHJ5OiBSb3V0ZUVudHJ5PGFueT4gPSB7XG4gICAgICBmb3JjZVJlcmVuZGVyOiBmb3JjZVJlcmVuZGVyIHx8IChzYW1lUGF0aG5hbWUgJiYgIXNhbWVTZWFyY2gpLFxuICAgICAgbG9jYXRpb24sXG4gICAgICByb3V0ZTogbmV4dFJvdXRlLFxuICAgICAgcHJlcGFyZWRNYXRjaDogbmV4dFByZXBhcmVkTWF0Y2gsXG4gICAgICByYXdTZWFyY2g6IGxvY2F0aW9uLnNlYXJjaCxcbiAgICAgIHF1ZXJ5LFxuICAgICAgZmlsdGVycyxcbiAgICAgIGZpbHRlckRpYWdub3N0aWNzLFxuICAgICAgYWN0aXZlUXVlcnlTY2hlbWE6IHF1ZXJ5U2NoZW1hLFxuICAgIH07XG5cbiAgICAvLyBJZiBub3JtYWxpemF0aW9uIGNoYW5nZWQgdGhlIHR5cGVkIHF1ZXJ5IHdlIHRyaWdnZXIgYSByZXBsYWNlIHdpdGggbm9ybWFsaXplZCBzZWFyY2hcbiAgICBpZiAobm9ybWFsaXplZCAmJiBxdWVyeVNjaGVtYSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkU2VhcmNoID0gYnVpbGRDb21iaW5lZFNlYXJjaCh7XG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgfSk7XG4gICAgICBpZiAobm9ybWFsaXplZFNlYXJjaCAhPT0gbG9jYXRpb24uc2VhcmNoKSB7XG4gICAgICAgIGxldCBuZXh0U2VhcmNoU3RyID0gbm9ybWFsaXplZFNlYXJjaDtcbiAgICAgICAgaWYgKCFuZXh0U2VhcmNoU3RyLnN0YXJ0c1dpdGgoJz8nKSkge1xuICAgICAgICAgIGlmIChuZXh0U2VhcmNoU3RyID09PSAnJykgbmV4dFNlYXJjaFN0ciA9ICcnO1xuICAgICAgICAgIGVsc2UgbmV4dFNlYXJjaFN0ciA9IGA/JHtuZXh0U2VhcmNoU3RyfWA7XG4gICAgICAgIH1cbiAgICAgICAgaGlzdG9yeS5zZXQoe1xuICAgICAgICAgIHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICBzZWFyY2g6IG5leHRTZWFyY2hTdHIsXG4gICAgICAgICAgaGFzaDogJycsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47IC8vIGVhcmx5OiBzdWJzZXF1ZW50IHNldCB3aWxsIHRyaWdnZXIgcmVydW5cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY3VycmVudCBlbnRyeSBhbmQgbm90aWZ5IGFsbCBzdWJzY3JpYmVyc1xuICAgIGN1cnJlbnRFbnRyeSA9IG5leHRFbnRyeTtcbiAgICBzdWJzY3JpYmVycy5mb3JFYWNoKChjYWxsYmFjaykgPT4ge1xuICAgICAgY2FsbGJhY2sobmV4dEVudHJ5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVGhlIHJvdXRlciBjb250ZXh0IG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIFJlYWN0IENvbnRleHRcbiAgY29uc3QgY29udGV4dDogUm91dGluZ0NvbnRleHRUeXBlPGFueT4gJlxuICAgIFByZXBhcmVkQWNjZXNzPEFueVJvdXRlW10+ICYge1xuICAgICAgbmF2aWdhdGU6IE5hdmlnYXRlT3ZlcmxvYWRzPEFueVJvdXRlW10+O1xuICAgIH0gPSB7XG4gICAgaGlzdG9yeSxcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gY3VycmVudEVudHJ5O1xuICAgIH0sXG4gICAgcHJlbG9hZENvZGUocGF0aG5hbWUpIHtcbiAgICAgIC8vIFByZWxvYWQganVzdCB0aGUgY29tcG9uZW50IGNvZGUgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHRcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywge1xuICAgICAgICAuLi53aW5kb3cubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtYXRjaGVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBMb2FkIGFsbCByZXNvdXJjZSBwYWdlcyBmb3IgdGhlIG1hdGNoZWQgcm91dGVcbiAgICAgIG1hdGNoZXMucm91dGUucm91dGVzLmZvckVhY2goKHsgcmVzb3VyY2VQYWdlIH0pID0+IHtcbiAgICAgICAgaWYgKHJlc291cmNlUGFnZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgcmVzb3VyY2VQYWdlLmxvYWQoKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcHJlbG9hZChwYXRobmFtZSkge1xuICAgICAgLy8gUHJlbG9hZCBib3RoIHRoZSBjb21wb25lbnQgY29kZSBhbmQgcHJlcGFyZWQgZGF0YSBmb3IgYSByb3V0ZVxuICAgICAgY29uc3QgbWF0Y2hlcyA9IGdldE1hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCB7XG4gICAgICAgIC4uLndpbmRvdy5sb2NhdGlvbixcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICB9KTtcbiAgICAgIHByZXBhcmVNYXRjaChtYXRjaGVzKTtcbiAgICB9LFxuICAgIHN1YnNjcmliZShjYWxsYmFjaykge1xuICAgICAgLy8gQWRkIGEgbmV3IHN1YnNjcmliZXIgYW5kIHJldHVybiB1bnN1YnNjcmliZSBmdW5jdGlvblxuICAgICAgbmV4dElkICs9IDE7XG4gICAgICBjb25zdCBpZCA9IG5leHRJZDtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLXN0eWxlXG4gICAgICBjb25zdCBkaXNwb3NlID0gKCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVycy5kZWxldGUoaWQpO1xuICAgICAgfTtcbiAgICAgIHN1YnNjcmliZXJzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuIGRpc3Bvc2U7XG4gICAgfSxcbiAgICBuYXZpZ2F0ZSh7IHBhdGhuYW1lLCBxdWVyeSwgZmlsdGVyczogbmF2RmlsdGVycywgcmVwbGFjZSB9OiBhbnkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBjdXJyZW50RW50cnk7XG4gICAgICBjb25zdCB0YXJnZXRQYXRobmFtZSA9IHBhdGhuYW1lID8/IGN1cnJlbnQubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICAvLyBEZXRlcm1pbmUgc2NoZW1hIG9mIGRlc3RpbmF0aW9uIChpZiBzYW1lIHBhdGggYW5kIHdlIGhhdmUgcm91dGUgd2UgY2FuIHJldXNlLCBlbHNlIHJlbWF0Y2gpXG4gICAgICBsZXQgZGVzdFNjaGVtYTogYW55O1xuICAgICAgLyoqIENvbGxlY3QgZGVlcGVzdCBxdWVyeSBzY2hlbWEgZnJvbSByb3V0ZSBjaGFpbiAqL1xuICAgICAgZnVuY3Rpb24gY29sbGVjdFNjaGVtYShyb3V0ZXNBcnI6IGFueVtdIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmIChyb3V0ZXNBcnIgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgciBvZiByb3V0ZXNBcnIpIHtcbiAgICAgICAgICBjb25zdCBtYXliZUYgPSAociBhcyB1bmtub3duIGFzIHsgcXVlcnlTY2hlbWE/OiB1bmtub3duIH0pXG4gICAgICAgICAgICAucXVlcnlTY2hlbWE7XG4gICAgICAgICAgaWYgKG1heWJlRiAhPSBudWxsKSBjb2xsZWN0ZWQucHVzaChtYXliZUYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2xsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRlc3RTY2hlbWEgPSBjb2xsZWN0ZWQuYXQoLTEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBBbHdheXMgYXR0ZW1wdCBmdWxsIG1hdGNoIGZvciBkZXN0aW5hdGlvbiB0byBlbnN1cmUgc2NoZW1hIHByZXNlbnQgZXZlbiBpZiBzYW1lIHBhdGhuYW1lXG4gICAgICBjb25zdCBkZXN0Um91dGUgPSBnZXRNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywge1xuICAgICAgICAuLi53aW5kb3cubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lOiB0YXJnZXRQYXRobmFtZSxcbiAgICAgIH0pO1xuICAgICAgY29sbGVjdFNjaGVtYShkZXN0Um91dGU/LnJvdXRlLnJvdXRlcyk7XG4gICAgICAvLyBGYWxsYmFjayB0byBjdXJyZW50bHkgYWN0aXZlIHNjaGVtYSBpZiBkZXN0aW5hdGlvbiBzY2hlbWEgbm90IGZvdW5kIChlLmcuLCByYWNlIGNvbmRpdGlvbnMpXG4gICAgICBkZXN0U2NoZW1hID8/PSBjdXJyZW50LmFjdGl2ZVF1ZXJ5U2NoZW1hO1xuICAgICAgY29uc3QgZWZmZWN0aXZlRmlsdGVycyA9IG5hdkZpbHRlcnMgPz8gY3VycmVudC5maWx0ZXJzO1xuICAgICAgLy8gVHJlYXQgbGVnYWN5IG5hdmlnYXRlKHsgcXVlcnkgfSkgYXMgZmlsdGVycyBpbiB1bmlmaWVkIG1vZGVsIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICBjb25zdCBmaWx0ZXJzSW5wdXQgPVxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzID8/IChxdWVyeSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCk7XG4gICAgICBjb25zdCBzZWFyY2ggPSBidWlsZENvbWJpbmVkU2VhcmNoKHtcbiAgICAgICAgZmlsdGVyczogZmlsdGVyc0lucHV0LFxuICAgICAgICBxdWVyeVNjaGVtYTogZGVzdFNjaGVtYSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbG9jYXRpb25PYmogPSB7IHBhdGhuYW1lOiB0YXJnZXRQYXRobmFtZSwgc2VhcmNoLCBoYXNoOiAnJyB9O1xuICAgICAgaWYgKHJlcGxhY2UgPT09IHRydWUpIHtcbiAgICAgICAgaGlzdG9yeS5zZXQobG9jYXRpb25PYmopO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGlzdG9yeS5wdXNoKGxvY2F0aW9uT2JqKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldFByZXBhcmVkKHBhdGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gY3VycmVudEVudHJ5O1xuICAgICAgICAvLyBGaW5kIGxhc3QgcHJlcGFyZWQgcm91dGUgd2l0aCBtYXRjaGluZyBwYXRoXG4gICAgICAgIGZvciAoY29uc3QgcHIgb2YgZW50cnkucHJlcGFyZWRNYXRjaC5yb3V0ZXMpIHtcbiAgICAgICAgICBpZiAocHIucGF0aCA9PT0gcGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHByLnByZXBhcmVkIGFzIGFueTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0sXG4gICAgLy8gZ2V0VHlwZWRRdWVyeSByZW1vdmVkXG4gIH07XG5cbiAgLy8gUmV0dXJuIGJvdGggdGhlIGNvbnRleHQgb2JqZWN0IGFuZCBhIGNsZWFudXAgZnVuY3Rpb25cbiAgLy8gRGV2dG9vbHMgZXhwb3N1cmUgKGRldmVsb3BtZW50IG9ubHkpXG4gIGlmIChkZXZ0b29sc0dsb2JhbCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgKHdpbmRvdyBhcyB1bmtub3duIGFzIHsgX19QTFVNSUxFX1JPVVRFUl9fPzogYW55IH0pLl9fUExVTUlMRV9ST1VURVJfXyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgZ2V0OiBjb250ZXh0LmdldCxcbiAgICAgICAgICAgIHN1YnNjcmliZTogY29udGV4dC5zdWJzY3JpYmUsXG4gICAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIGlnbm9yZSAqL1xuICAgIH1cbiAgfVxuICAvLyBPcHRpb25hbCBpbi1wYWdlIGRldnRvb2xzIHBhbmVsIChsaWdodHdlaWdodCBvdmVybGF5KVxuICBpZiAoZGV2dG9vbHNQYW5lbCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtcGx1bWlsZS1yb3V0ZXItZGV2dG9vbHMtcGFuZWxdJykgPT0gbnVsbFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGx1bWlsZS1yb3V0ZXItZGV2dG9vbHMtcGFuZWwnLCAnJyk7XG4gICAgICAgIGhvc3Quc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgICAgICBob3N0LnN0eWxlLnpJbmRleCA9ICcyMTQ3NDgzNjQ2JztcbiAgICAgICAgaG9zdC5zdHlsZS5ib3R0b20gPSAnOHB4JztcbiAgICAgICAgaG9zdC5zdHlsZS5yaWdodCA9ICc4cHgnO1xuICAgICAgICBob3N0LnN0eWxlLmZvbnRGYW1pbHkgPVxuICAgICAgICAgICd1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIiwgbW9ub3NwYWNlJztcbiAgICAgICAgaG9zdC5zdHlsZS5mb250U2l6ZSA9ICcxMnB4JztcbiAgICAgICAgaG9zdC5zdHlsZS5saW5lSGVpZ2h0ID0gJzEuMyc7XG4gICAgICAgIGhvc3Quc3R5bGUuY29sb3IgPSAnIzExMSc7XG4gICAgICAgIGhvc3Quc3R5bGUuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7XG4gICAgICAgIGhvc3Quc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgY29uc3Qgc2hhZG93ID0gaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XG4gICAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHBhbmVsLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0byc7XG4gICAgICAgIHBhbmVsLnN0eWxlLm1pbldpZHRoID0gJzI2MHB4JztcbiAgICAgICAgcGFuZWwuc3R5bGUubWF4V2lkdGggPSAnNDIwcHgnO1xuICAgICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSAnNTB2aCc7XG4gICAgICAgIHBhbmVsLnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICBwYW5lbC5zdHlsZS5iYWNrZ3JvdW5kID0gJ3JnYmEoMjU1LDI1NSwyNTUsMC45NSknO1xuICAgICAgICBwYW5lbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNjY2MnO1xuICAgICAgICBwYW5lbC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNnB4JztcbiAgICAgICAgcGFuZWwuc3R5bGUuYm94U2hhZG93ID0gJzAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMTUpJztcbiAgICAgICAgcGFuZWwuc3R5bGUucGFkZGluZyA9ICc2cHggOHB4IDhweCc7XG4gICAgICAgIHBhbmVsLnN0eWxlLmJhY2tkcm9wRmlsdGVyID0gJ2JsdXIoNHB4KSc7XG4gICAgICAgIHBhbmVsLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIHBhbmVsLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAnY29sdW1uJztcbiAgICAgICAgcGFuZWwuc3R5bGUucm93R2FwID0gJzRweCc7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBoZWFkZXIuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgaGVhZGVyLnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJztcbiAgICAgICAgaGVhZGVyLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ3NwYWNlLWJldHdlZW4nO1xuICAgICAgICBoZWFkZXIuc3R5bGUuZ2FwID0gJzhweCc7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9ICdQbHVtaWxlIFJvdXRlcic7XG4gICAgICAgIHRpdGxlLnN0eWxlLmZvbnRXZWlnaHQgPSAnNjAwJztcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBidXR0b25zLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIGJ1dHRvbnMuc3R5bGUuZ2FwID0gJzRweCc7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICAgIGNvbGxhcHNlQnRuLnRleHRDb250ZW50ID0gJ+KIkic7XG4gICAgICAgIGNvbnN0IGNsb3NlQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICAgIGNsb3NlQnRuLnRleHRDb250ZW50ID0gJ8OXJztcbiAgICAgICAgY29uc3QgYnRuczogSFRNTEJ1dHRvbkVsZW1lbnRbXSA9IFtjb2xsYXBzZUJ0biwgY2xvc2VCdG5dO1xuICAgICAgICBmb3IgKGNvbnN0IGIgb2YgYnRucykge1xuICAgICAgICAgIGIuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgICAgIGIuc3R5bGUuYmFja2dyb3VuZCA9ICcjZWVlJztcbiAgICAgICAgICBiLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2NjYyc7XG4gICAgICAgICAgYi5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICAgICAgICBiLnN0eWxlLmZvbnRTaXplID0gJzExcHgnO1xuICAgICAgICAgIGIuc3R5bGUubGluZUhlaWdodCA9ICcxJztcbiAgICAgICAgICBiLnN0eWxlLnBhZGRpbmcgPSAnMnB4IDVweCc7XG4gICAgICAgIH1cbiAgICAgICAgaGVhZGVyLmFwcGVuZENoaWxkKHRpdGxlKTtcbiAgICAgICAgYnV0dG9ucy5hcHBlbmRDaGlsZChjb2xsYXBzZUJ0bik7XG4gICAgICAgIGJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xvc2VCdG4pO1xuICAgICAgICBoZWFkZXIuYXBwZW5kQ2hpbGQoYnV0dG9ucyk7XG4gICAgICAgIGNvbnN0IHBhdGhFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBwYXRoRWwuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICAgICAgICBjb25zdCB2YXJzRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTtcbiAgICAgICAgY29uc3QgcXVlcnlFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpO1xuICAgICAgICAvLyB0eXBlZCBxdWVyeSBlbGVtZW50IHJlbW92ZWRcbiAgICAgICAgY29uc3QgZmlsdGVyc0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7XG4gICAgICAgIGNvbnN0IGZpbHRlckRpYWdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpO1xuICAgICAgICAvLyBUaW1lbGluZSBjb250YWluZXJcbiAgICAgICAgY29uc3QgdGltZWxpbmVXcmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRpbWVsaW5lV3JhcC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICB0aW1lbGluZVdyYXAuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4nO1xuICAgICAgICB0aW1lbGluZVdyYXAuc3R5bGUuZ2FwID0gJzJweCc7XG4gICAgICAgIHRpbWVsaW5lV3JhcC5zdHlsZS5tYXJnaW5Ub3AgPSAnNHB4JztcbiAgICAgICAgY29uc3QgdGltZWxpbmVIZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGltZWxpbmVIZWFkZXIudGV4dENvbnRlbnQgPSAnVGltZWxpbmUgKHF1ZXJ5IGNoYW5nZXMpJztcbiAgICAgICAgdGltZWxpbmVIZWFkZXIuc3R5bGUuZm9udFdlaWdodCA9ICc2MDAnO1xuICAgICAgICB0aW1lbGluZUhlYWRlci5zdHlsZS5mb250U2l6ZSA9ICcxMXB4JztcbiAgICAgICAgY29uc3QgdGltZWxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4tcmV2ZXJzZSc7IC8vIG5ld2VzdCBvbiB0b3AgdmlzdWFsbHkgd2hpbGUgYXBwZW5kaW5nIGF0IGVuZCBmb3IgY2hlYXBlciBvcHNcbiAgICAgICAgdGltZWxpbmUuc3R5bGUubWF4SGVpZ2h0ID0gJzE0MHB4JztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUub3ZlcmZsb3dZID0gJ2F1dG8nO1xuICAgICAgICB0aW1lbGluZS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNlMmUyZTInO1xuICAgICAgICB0aW1lbGluZS5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNHB4JztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuYmFja2dyb3VuZCA9ICcjZmFmYmZjJztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuZm9udEZhbWlseSA9ICdpbmhlcml0JztcbiAgICAgICAgdGltZWxpbmUuc3R5bGUuZm9udFNpemUgPSAnMTFweCc7XG4gICAgICAgIHRpbWVsaW5lV3JhcC5hcHBlbmRDaGlsZCh0aW1lbGluZUhlYWRlcik7XG4gICAgICAgIHRpbWVsaW5lV3JhcC5hcHBlbmRDaGlsZCh0aW1lbGluZSk7XG4gICAgICAgIGNvbnN0IHByZXM6IEhUTUxQcmVFbGVtZW50W10gPSBbXG4gICAgICAgICAgdmFyc0VsLFxuICAgICAgICAgIHF1ZXJ5RWwsXG4gICAgICAgICAgZmlsdGVyc0VsLFxuICAgICAgICAgIGZpbHRlckRpYWdFbCxcbiAgICAgICAgXTtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHByZXMpIHtcbiAgICAgICAgICBwLnN0eWxlLm1hcmdpbiA9ICcwJztcbiAgICAgICAgICBwLnN0eWxlLnBhZGRpbmcgPSAnNHB4JztcbiAgICAgICAgICBwLnN0eWxlLmJhY2tncm91bmQgPSAnI2Y2ZjhmYSc7XG4gICAgICAgICAgcC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNlMmUyZTInO1xuICAgICAgICAgIHAuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzRweCc7XG4gICAgICAgICAgcC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byc7XG4gICAgICAgICAgcC5zdHlsZS5tYXhIZWlnaHQgPSAnMTYwcHgnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNtYWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHNtYWxsLnN0eWxlLmZvbnRTaXplID0gJzEwcHgnO1xuICAgICAgICBzbWFsbC5zdHlsZS5vcGFjaXR5ID0gJzAuNyc7XG4gICAgICAgIHNtYWxsLnRleHRDb250ZW50ID0gYFNob3J0Y3V0OiAke2RldnRvb2xzU2hvcnRjdXR9YDtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQoaGVhZGVyKTtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQocGF0aEVsKTtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQodmFyc0VsKTtcbiAgICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQocXVlcnlFbCk7XG4gICAgICAgIC8vIHR5cGVkRWwgcmVtb3ZlZFxuICAgICAgICBwYW5lbC5hcHBlbmRDaGlsZCh0aW1lbGluZVdyYXApO1xuICAgICAgICBwYW5lbC5hcHBlbmRDaGlsZChmaWx0ZXJzRWwpO1xuICAgICAgICBwYW5lbC5hcHBlbmRDaGlsZChmaWx0ZXJEaWFnRWwpO1xuICAgICAgICBwYW5lbC5hcHBlbmRDaGlsZChzbWFsbCk7XG4gICAgICAgIHNoYWRvdy5hcHBlbmRDaGlsZChwYW5lbCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7XG4gICAgICAgIGxldCBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgY29sbGFwc2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgY29sbGFwc2VkID0gIWNvbGxhcHNlZDtcbiAgICAgICAgICBpZiAoY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBwYW5lbC5zdHlsZS5tYXhIZWlnaHQgPSAnMjRweCc7XG4gICAgICAgICAgICBwYW5lbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgY29sbGFwc2VCdG4udGV4dENvbnRlbnQgPSAnKyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhbmVsLnN0eWxlLm1heEhlaWdodCA9ICc1MHZoJztcbiAgICAgICAgICAgIHBhbmVsLnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgY29sbGFwc2VCdG4udGV4dENvbnRlbnQgPSAn4oiSJztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgdW5zdWI6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY2xvc2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgaG9zdC5yZW1vdmUoKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHVuc3ViID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB1bnN1YigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8qKiBVcGRhdGUgcGFuZWwgY29udGVudCBmcm9tIGN1cnJlbnQgcm91dGUgZW50cnkgKi9cbiAgICAgICAgLy8gS2VlcCBsYXN0IHF1ZXJ5IHNuYXBzaG90IGZvciBkaWZmXG4gICAgICAgIGxldCBsYXN0UXVlcnk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgbGFzdFNlYXJjaDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29tcHV0ZSBkaWZmIGNsYXNzaWZpY2F0aW9uIGJldHdlZW4gdHdvIHF1ZXJ5IG9iamVjdHMuXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBkaWZmUXVlcmllcyhcbiAgICAgICAgICBwcmV2OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXh0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgKToge1xuICAgICAgICAgIGFkZGVkOiBzdHJpbmdbXTtcbiAgICAgICAgICByZW1vdmVkOiBzdHJpbmdbXTtcbiAgICAgICAgICBjaGFuZ2VkOiBzdHJpbmdbXTtcbiAgICAgICAgICB1bmNoYW5nZWQ6IHN0cmluZ1tdO1xuICAgICAgICB9IHtcbiAgICAgICAgICBjb25zdCBhZGRlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICBjb25zdCByZW1vdmVkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgY29uc3QgdW5jaGFuZ2VkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgIGNvbnN0IHByZXZLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhwcmV2ID8/IHt9KSk7XG4gICAgICAgICAgY29uc3QgbmV4dEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG5leHQpKTtcbiAgICAgICAgICBuZXh0S2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXByZXZLZXlzLmhhcyhrKSkge1xuICAgICAgICAgICAgICBhZGRlZC5wdXNoKGspO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcHY6IHVua25vd247XG4gICAgICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIHByZXYgaXMgYSBwbGFpbiByZWNvcmQ7IGRpcmVjdCBpbmRleCAocnVudGltZSBzYWZlKVxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgICAgICAgIHB2ID0gKHByZXYgYXMgYW55KVtrXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG52ID0gbmV4dFtrXTtcbiAgICAgICAgICAgIGxldCBzYW1lID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwdikgJiYgQXJyYXkuaXNBcnJheShudikpIHtcbiAgICAgICAgICAgICAgaWYgKHB2Lmxlbmd0aCA9PT0gKG52IGFzIHVua25vd25bXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2FtZSA9IHB2LmV2ZXJ5KCh2LCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdiA9PT0gKG52IGFzIHVua25vd25bXSlbaV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNhbWUgPSBwdiA9PT0gbnY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2FtZSkge1xuICAgICAgICAgICAgICB1bmNoYW5nZWQucHVzaChrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNoYW5nZWQucHVzaChrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXZLZXlzLmRlbGV0ZShrKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcmV2S2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZW1vdmVkLnB1c2goayk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHsgYWRkZWQsIHJlbW92ZWQsIGNoYW5nZWQsIHVuY2hhbmdlZCB9O1xuICAgICAgICB9XG4gICAgICAgIC8qKiBVcGRhdGUgcGFuZWwgY29udGVudCBhbmQgbWF5YmUgcHVzaCB0aW1lbGluZSBlbnRyeSAqL1xuICAgICAgICBmdW5jdGlvbiByZW5kZXIoKTogdm9pZCB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gY29udGV4dC5nZXQoKTtcbiAgICAgICAgICAgIHBhdGhFbC50ZXh0Q29udGVudCA9IGAke2VudHJ5LmxvY2F0aW9uLnBhdGhuYW1lfSR7ZW50cnkubG9jYXRpb24uc2VhcmNofWA7XG4gICAgICAgICAgICBjb25zdCB2YXJzSnNvbiA9IEpTT04uc3RyaW5naWZ5KGVudHJ5LnJvdXRlPy5wYXJhbXMgPz8ge30sIG51bGwsIDIpO1xuICAgICAgICAgICAgdmFyc0VsLnRleHRDb250ZW50ID0gYHZhcnM6ICR7dmFyc0pzb259YDtcbiAgICAgICAgICAgIGNvbnN0IHJhd0pzb24gPSBKU09OLnN0cmluZ2lmeShlbnRyeS5xdWVyeSwgbnVsbCwgMik7XG4gICAgICAgICAgICBxdWVyeUVsLnRleHRDb250ZW50ID0gYHJhdzogICR7cmF3SnNvbn1gO1xuICAgICAgICAgICAgLy8gdHlwZWQgcXVlcnkgcmVtb3ZlZFxuICAgICAgICAgICAgY29uc3QgZmlsdGVyc0pzb24gPSBKU09OLnN0cmluZ2lmeShlbnRyeS5maWx0ZXJzLCBudWxsLCAyKTtcbiAgICAgICAgICAgIGZpbHRlcnNFbC50ZXh0Q29udGVudCA9IGBmaWx0ZXJzOiR7ZmlsdGVyc0pzb259YDtcbiAgICAgICAgICAgIGNvbnN0IGRpYWcgPSBlbnRyeS5maWx0ZXJEaWFnbm9zdGljcyA/PyBbXTtcbiAgICAgICAgICAgIGZpbHRlckRpYWdFbC50ZXh0Q29udGVudCA9IGBmaWx0ZXJEaWFnbm9zdGljczogJHtkaWFnLmxlbmd0aH1gO1xuICAgICAgICAgICAgLy8gVGltZWxpbmUgbG9nIGlmIHF1ZXJ5IHNlYXJjaCBjaGFuZ2VkXG4gICAgICAgICAgICBpZiAoZW50cnkucmF3U2VhcmNoICE9PSBsYXN0U2VhcmNoKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vd1F1ZXJ5ID0gZW50cnkucXVlcnkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBkaWZmUXVlcmllcyhsYXN0UXVlcnksIG5vd1F1ZXJ5KTtcbiAgICAgICAgICAgICAgY29uc3Qgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgIHJvdy5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgICByb3cuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4nO1xuICAgICAgICAgICAgICByb3cuc3R5bGUuYm9yZGVyQm90dG9tID0gJzFweCBzb2xpZCAjZTllOWU5JztcbiAgICAgICAgICAgICAgcm93LnN0eWxlLnBhZGRpbmcgPSAnM3B4IDRweCc7XG4gICAgICAgICAgICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgaGVhZC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgICBoZWFkLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ3NwYWNlLWJldHdlZW4nO1xuICAgICAgICAgICAgICBjb25zdCB0cyA9IG5ldyBEYXRlKCkudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gICAgICAgICAgICAgIGxldCBzZWFyY2hEaXNwbGF5ID0gJyhlbXB0eSknO1xuICAgICAgICAgICAgICBpZiAoZW50cnkubG9jYXRpb24uc2VhcmNoICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHNlYXJjaERpc3BsYXkgPSBlbnRyeS5sb2NhdGlvbi5zZWFyY2g7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaGVhZC5pbm5lckhUTUwgPSBgPHN0cm9uZz4ke3RzfTwvc3Ryb25nPiA8Y29kZSBzdHlsZT1cImJhY2tncm91bmQ6I2VlZTtwYWRkaW5nOjFweCAzcHg7Ym9yZGVyLXJhZGl1czozcHg7XCI+JHtzZWFyY2hEaXNwbGF5fTwvY29kZT5gO1xuICAgICAgICAgICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgIGJvZHkuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgICAgICAgYm9keS5zdHlsZS5mbGV4V3JhcCA9ICd3cmFwJztcbiAgICAgICAgICAgICAgYm9keS5zdHlsZS5nYXAgPSAnNHB4JztcbiAgICAgICAgICAgICAgLyoqIENyZWF0ZSBhIGNvbG9yZWQgcGlsbCBlbGVtZW50ICovXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIHBpbGwoXG4gICAgICAgICAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBraW5kOiAnYWRkZWQnIHwgJ3JlbW92ZWQnIHwgJ2NoYW5nZWQnIHwgJ3VuY2hhbmdlZCcsXG4gICAgICAgICAgICAgICk6IEhUTUxTcGFuRWxlbWVudCB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gbGFiZWw7XG4gICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5wYWRkaW5nID0gJzFweCA0cHgnO1xuICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYm9yZGVyUmFkaXVzID0gJzEwcHgnO1xuICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuZm9udFNpemUgPSAnMTBweCc7XG4gICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkJztcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkZGVkJzpcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlNmZmZWQnO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJvcmRlckNvbG9yID0gJyMyY2JlNGUnO1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmNvbG9yID0gJyMyMjg2M2EnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlbW92ZWQnOlxuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJhY2tncm91bmQgPSAnI2ZmZWVmMCc7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IgPSAnI2Q3M2E0OSc7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuY29sb3IgPSAnI2NiMjQzMSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSAnY2hhbmdlZCc6XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZCA9ICcjZmZmNWIxJztcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5ib3JkZXJDb2xvciA9ICcjZmZkMzNkJztcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zdHlsZS5jb2xvciA9ICcjNzM1YzBmJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICd1bmNoYW5nZWQnOlxuICAgICAgICAgICAgICAgICAgICBzcGFuLnN0eWxlLmJhY2tncm91bmQgPSAnI2YxZjhmZic7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuYm9yZGVyQ29sb3IgPSAnIzc5YjhmZic7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc3R5bGUuY29sb3IgPSAnIzAzNjZkNic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGV4aGF1c3RpdmVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwYW47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGRpZmYuYWRkZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgLi4uZGlmZi5hZGRlZC5tYXAoKGspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpbGwoYCske2t9YCwgJ2FkZGVkJyk7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkaWZmLmNoYW5nZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgLi4uZGlmZi5jaGFuZ2VkLm1hcCgoaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGlsbChgfiR7a31gLCAnY2hhbmdlZCcpO1xuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZGlmZi5yZW1vdmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBib2R5LmFwcGVuZChcbiAgICAgICAgICAgICAgICAgIC4uLmRpZmYucmVtb3ZlZC5tYXAoKGspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpbGwoYC0ke2t9YCwgJ3JlbW92ZWQnKTtcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgbm9BZGRzID0gZGlmZi5hZGRlZC5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICAgIGNvbnN0IG5vQ2hhbmdlcyA9IGRpZmYuY2hhbmdlZC5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICAgIGNvbnN0IG5vUmVtb3ZhbHMgPSBkaWZmLnJlbW92ZWQubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgICBpZiAobm9BZGRzICYmIG5vQ2hhbmdlcyAmJiBub1JlbW92YWxzKSB7XG4gICAgICAgICAgICAgICAgYm9keS5hcHBlbmQocGlsbCgnbm8tY2hhbmdlJywgJ3VuY2hhbmdlZCcpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQoaGVhZCk7XG4gICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChib2R5KTtcbiAgICAgICAgICAgICAgdGltZWxpbmUuYXBwZW5kQ2hpbGQocm93KTtcbiAgICAgICAgICAgICAgaWYgKHRpbWVsaW5lLmNoaWxkRWxlbWVudENvdW50ID4gNTApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IHRpbWVsaW5lLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICB0aW1lbGluZS5yZW1vdmVDaGlsZChmaXJzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhc3RRdWVyeSA9IG5vd1F1ZXJ5O1xuICAgICAgICAgICAgICBsYXN0U2VhcmNoID0gZW50cnkucmF3U2VhcmNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLyogaWdub3JlICovXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpO1xuICAgICAgICB1bnN1YiA9IGNvbnRleHQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICByZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2KSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGV2LmFsdEtleSkgcGFydHMucHVzaCgnQWx0Jyk7XG4gICAgICAgICAgICBpZiAoZXYuc2hpZnRLZXkpIHBhcnRzLnB1c2goJ1NoaWZ0Jyk7XG4gICAgICAgICAgICBpZiAoZXYuY3RybEtleSkgcGFydHMucHVzaCgnQ3RybCcpO1xuICAgICAgICAgICAgbGV0IGtleVBhcnQgPSBldi5rZXk7XG4gICAgICAgICAgICBpZiAoZXYua2V5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBrZXlQYXJ0ID0gZXYua2V5LnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGtleVBhcnQpO1xuICAgICAgICAgICAgY29uc3QgY29tYm8gPSBwYXJ0cy5qb2luKCcrJyk7XG4gICAgICAgICAgICBpZiAoY29tYm8gPT09IGRldnRvb2xzU2hvcnRjdXQucmVwbGFjZSgvXFxzKy9nLCAnJykpIHtcbiAgICAgICAgICAgICAgaWYgKGhvc3Quc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgaG9zdC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBob3N0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8qIGlnbm9yZSAqL1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBpZ25vcmUgKi9cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgY2xlYW51cCwgY29udGV4dCB9IGFzIENyZWF0ZVJvdXRlclJldHVybjxhbnk+O1xufVxuIl19
|